"use client"; import { useState, useEffect } from "react"; import Link from "next/link"; import { usePathname } from "next/navigation"; import { LayoutDashboard, Activity, Calendar, Kanban, FolderKanban, FileText, Wrench, Target, Menu, ChevronLeft, ChevronRight, LogOut, } from "lucide-react"; import { useRouter } from "next/navigation"; import { Button } from "@/components/ui/button"; import { Sheet, SheetContent, SheetTrigger, SheetTitle } from "@/components/ui/sheet"; import { cn } from "@/lib/utils"; import { Breadcrumbs } from "./breadcrumbs"; import { QuickSearch } from "./quick-search"; const navItems = [ { name: "Dashboard", href: "/", icon: LayoutDashboard }, { name: "Activity", href: "/activity", icon: Activity }, { name: "Calendar", href: "/calendar", icon: Calendar }, { name: "Tasks", href: "/tasks", icon: Kanban }, { name: "Projects", href: "/projects", icon: FolderKanban }, { name: "Documents", href: "/documents", icon: FileText }, { name: "Tools", href: "/tools", icon: Wrench }, { name: "Mission", href: "/mission", icon: Target }, ]; const MISSION_SHORT = "Build an iOS empire → retire on our terms → travel with Heidi → 53 is just the start"; function LogoutButton({ collapsed }: { collapsed: boolean }) { const router = useRouter(); const [isLoggingOut, setIsLoggingOut] = useState(false); const handleLogout = async () => { setIsLoggingOut(true); try { await fetch("/api/auth/logout", { method: "POST" }); router.push("/login"); } catch { // Force redirect even if API call fails router.push("/login"); } }; return ( ); } function SidebarContent({ pathname, collapsed = false }: { pathname: string; collapsed?: boolean }) { return (
MC
{!collapsed && Mission Control}
{/* Mission Statement - hide when collapsed */} {!collapsed && (

{MISSION_SHORT}

)}
{!collapsed && (

Matt Bruce

TopDogLabs

)}
); } function MobileSidebar({ pathname }: { pathname: string }) { const [open, setOpen] = useState(false); return ( Navigation Menu ); } interface DashboardLayoutProps { children: React.ReactNode; showBreadcrumbs?: boolean; } export function DashboardLayout({ children, showBreadcrumbs = true }: DashboardLayoutProps) { const [collapsed, setCollapsed] = useState(false); const [isMobile, setIsMobile] = useState(false); const pathname = usePathname(); // Check for mobile on mount and resize useEffect(() => { const checkMobile = () => { setIsMobile(window.innerWidth < 1024); // Auto-collapse on smaller screens but not mobile if (window.innerWidth < 1280 && window.innerWidth >= 1024) { setCollapsed(true); } }; checkMobile(); window.addEventListener("resize", checkMobile); return () => window.removeEventListener("resize", checkMobile); }, []); return (
{/* Desktop Sidebar - Collapsible */}
{/* Collapse Toggle Button */}
{/* Top Bar - Mobile header with search */}
Mission Control
{/* Main Content */}
{/* Desktop Search Bar */}
{/* Breadcrumbs */} {showBreadcrumbs && } {/* Page Content */} {children}
); } // Note: Use DashboardLayout for all pages - Sidebar export removed to prevent duplicate menu icons