diff --git a/app/src/components/LayoutShell.tsx b/app/src/components/LayoutShell.tsx new file mode 100644 index 0000000..76647cf --- /dev/null +++ b/app/src/components/LayoutShell.tsx @@ -0,0 +1,39 @@ +"use client"; +import { SidebarNav } from "./SidebarNav"; +import { WatchlistSidebar } from "./WatchlistSidebar"; +import { SymbolHeader } from "./SymbolHeader"; +import { MobileTabNav } from "./MobileTabNav"; + +/** + * Main layout shell for the redesigned terminal. + * - Desktop (>1024px): Sidebar + Watchlist + Header + Content (3-column) + * - Tablet (768-1024px): Watchlist + Header + Content (2-column, sidebar hidden) + * - Mobile (<768px): Header + Content + TabBar (single column) + */ +export function LayoutShell({ children }: { children: React.ReactNode }) { + return ( +
+ {/* Symbol Header — always visible */} + + + {/* Main Content Area */} +
+ {/* Left Sidebar Navigation — hidden on tablet/mobile */} + + + {/* Watchlist Sidebar — hidden on mobile */} + + + {/* Content */} +
+
+ {children} +
+
+
+ + {/* Mobile Tab Navigation — shown on mobile only */} + +
+ ); +} diff --git a/app/src/components/MobileTabNav.tsx b/app/src/components/MobileTabNav.tsx new file mode 100644 index 0000000..0de6a21 --- /dev/null +++ b/app/src/components/MobileTabNav.tsx @@ -0,0 +1,50 @@ +"use client"; +import Link from "next/link"; +import { usePathname } from "next/navigation"; + +/** + * Mobile tab navigation bar. + * Replaces the sidebar on screens <768px. + * Displays icon + label for each section; active tab highlighted with accent color (#4f8cff). + */ + +interface TabItem { + label: string; + href: string; + icon: string; +} + +const TABS: TabItem[] = [ + { label: "Overview", href: "/", icon: "📊" }, + { label: "Filings", href: "/filings", icon: "📄" }, + { label: "Options", href: "/options-dd", icon: "🔮" }, + { label: "Execution", href: "/execution", icon: "⚡" }, + { label: "Trade Plan", href: "/trade-plan", icon: "📋" }, + { label: "Settings", href: "/settings", icon: "⚙️" }, +]; + +export function MobileTabNav() { + const pathname = usePathname(); + + return ( + + ); +}