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..1b50b5f --- /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..132a86c --- /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 ? ( +
+ {icon} + {text} +
+ ) : ( + {icon} + )} + + ); +} \ No newline at end of file diff --git a/dapp/src/app/globals.css b/dapp/src/app/globals.css index 6b717ad..beb98f0 100644 --- a/dapp/src/app/globals.css +++ b/dapp/src/app/globals.css @@ -15,7 +15,12 @@ } body { - color: var(--foreground); - background: var(--background); - font-family: Arial, Helvetica, sans-serif; + color: rgb(var(--foreground-rgb)); + background-color: #b56203; +} + +@layer utilities { + .text-balance { + text-wrap: balance; + } } diff --git a/dapp/src/app/layout.tsx b/dapp/src/app/layout.tsx index f7fa87e..e1a8312 100644 --- a/dapp/src/app/layout.tsx +++ b/dapp/src/app/layout.tsx @@ -1,6 +1,8 @@ import type { Metadata } from "next"; import { Geist, Geist_Mono } from "next/font/google"; import "./globals.css"; +import Navbar from "../app/components/navbar"; +import Sidebar from "../app/components/sidebar"; const geistSans = Geist({ variable: "--font-geist-sans", @@ -25,9 +27,15 @@ export default function RootLayout({ return ( - {children} +
+ +
+ +
{children}
+
+
); diff --git a/dapp/src/app/page.tsx b/dapp/src/app/page.tsx index 205f025..ebb5b55 100644 --- a/dapp/src/app/page.tsx +++ b/dapp/src/app/page.tsx @@ -1,7 +1,37 @@ -const Home = () => { - return ( -
- ); +import Link from "next/link"; +import { ArrowRight } from "lucide-react"; + +export default function Home() { + return ( +
+

My Assets

+ +
+
+
+

Connect Your Wallet

+

+ To view your assets, please connect your wallet. +

+ + + +
+ + {/* Dark overlay */} +
+
+
+
+ ); } - -export default Home; \ No newline at end of file diff --git a/dapp/tailwind.config.ts b/dapp/tailwind.config.ts index 109807b..95de64d 100644 --- a/dapp/tailwind.config.ts +++ b/dapp/tailwind.config.ts @@ -11,6 +11,17 @@ export default { colors: { background: "var(--background)", foreground: "var(--foreground)", + purple: { + 500: "#8855FF", + 600: "#7040E0", + 700: "#5C30C0", + }, + gray: { + 800: "#1A1A2E", + }, + }, + backgroundImage: { + 'page-bg': "url('/images/bg-image.png')", }, }, },