diff --git a/dapp/public/images/bg-image.png b/dapp/public/images/bg-image.png new file mode 100644 index 0000000..1f0f999 Binary files /dev/null and b/dapp/public/images/bg-image.png differ diff --git a/dapp/public/images/trajectifi-logo-text.png b/dapp/public/images/trajectifi-logo-text.png new file mode 100644 index 0000000..378b4b1 Binary files /dev/null and b/dapp/public/images/trajectifi-logo-text.png differ diff --git a/dapp/public/images/trajectifi-logo.png b/dapp/public/images/trajectifi-logo.png new file mode 100644 index 0000000..0411f86 Binary files /dev/null and b/dapp/public/images/trajectifi-logo.png differ diff --git a/dapp/src/app/components/navbar.tsx b/dapp/src/app/components/navbar.tsx new file mode 100644 index 0000000..4182117 --- /dev/null +++ b/dapp/src/app/components/navbar.tsx @@ -0,0 +1,44 @@ +"use client"; + +import { useState } from "react"; +import Link from "next/link"; +import { + Search as SearchIcon, + Bell as BellIcon, + HelpCircle as HelpIcon +} from "lucide-react"; + +export default function Navbar() { + const [searchQuery, setSearchQuery] = useState(""); + + return ( + + ); +} \ No newline at end of file diff --git a/dapp/src/app/components/sidebar.tsx b/dapp/src/app/components/sidebar.tsx new file mode 100644 index 0000000..a6d5c78 --- /dev/null +++ b/dapp/src/app/components/sidebar.tsx @@ -0,0 +1,163 @@ +"use client"; +import Image from "next/image"; +import trajectifylogo from "../../../public/images/trajectifi-logo.png"; +import trajectword from "../../../public/images/trajectifi-logo-text.png"; + +import { useState, useEffect } from "react"; +import Link from "next/link"; +import { + LayoutGrid as AssetsIcon, + CreditCard as LoanIcon, + Search as SearchIcon, +} from "lucide-react"; + +export default function Sidebar() { + const [isCollapsed, setIsCollapsed] = useState(true); // Default to collapsed + const [isHovered, setIsHovered] = useState(false); + + // Auto-collapse on mobile, maintain collapsed state on larger screens + useEffect(() => { + const handleResize = () => { + if (window.innerWidth < 768) { + setIsCollapsed(true); + } + }; + + // Set initial state + handleResize(); + + window.addEventListener("resize", handleResize); + return () => window.removeEventListener("resize", handleResize); + }, []); + + // Toggle sidebar expanded/collapsed state + const toggleSidebar = () => { + setIsCollapsed(!isCollapsed); + }; + + // Determine if sidebar should be expanded + const expanded = !isCollapsed || isHovered; + + return ( + + ); +} + +interface SidebarItemProps { + href: string; + icon: React.ReactNode; + text: string; + expanded: boolean; + active?: boolean; +} + +interface SidebarItemProps { + href: string; + icon: React.ReactNode; + text: string; + expanded: boolean; + active?: boolean; +} + +function SidebarItem({ + href, + icon, + text, + expanded, + active = false, +}: SidebarItemProps) { + return ( + e.stopPropagation()} + > + {expanded ? ( +
+ {nft.collectionName} ({nft.collectionTag}) +
++ {nft.collectionName} ({nft.collectionTag}) +
+Total NFTs Owned
+5
+Total Interest Earned
+4.32 STRK
+In Escrow
+0
+Successful Loans
+0
+No NFTs match your filters
++ To view your assets, please connect your wallet. +
+ + + +filter:
+Cryptopunk VQ (STRK)
++ You can unlist your item at any time. +
+ +| Loan value | +Lender | +Interest | +APR | +Duration | +Repayment | +Action | +
|---|