"use client"; import { useMemo, useState } from "react"; import { ChevronDown, FileText, FolderKanban, Home, LayoutGrid, Presentation, Search, Settings, Star, } from "lucide-react"; import { useParams, usePathname } from "next/navigation"; import { cn } from "@/lib/utils"; import { Button } from "@/components/ui/button"; import { ScrollArea } from "@/components/ui/scroll-area"; import { Separator } from "@/components/ui/separator"; import { useWorkspaceStore } from "@/lib/stores/workspace-store"; import { SidebarItem } from "./sidebar-item"; const PROJECT_DOTS = [ "hsl(var(--primary))", "hsl(var(--teal))", "hsl(38 92% 50%)", "hsl(199 89% 48%)", ]; function NavSectionLabel({ children, collapsed, }: { children: React.ReactNode; collapsed?: boolean; }) { if (collapsed) return null; return (
{children}
); } export function SidebarNav({ collapsed, onOpenSearch, }: { collapsed: boolean; onOpenSearch?: () => void; }) { const pathname = usePathname(); const params = useParams(); const workspace = useWorkspaceStore((s) => s.currentWorkspace); const slugParam = typeof params?.workspaceSlug === "string" ? params.workspaceSlug : ""; const base = workspace?.slug ? `/${workspace.slug}` : slugParam ? `/${slugParam}` : ""; const [favoritesOpen, setFavoritesOpen] = useState(true); const [projectsOpen, setProjectsOpen] = useState(true); const homeActive = pathname === base || pathname === `${base}/`; const favoriteItems = useMemo( () => [ { label: "Q1 Launch", href: `${base}/favorites/q1` }, { label: "Design system", href: `${base}/favorites/design` }, ], [base], ); const projectItems = useMemo( () => [ { label: "Product roadmap", slug: "product-roadmap" }, { label: "Marketing", slug: "marketing" }, { label: "Engineering", slug: "engineering" }, { label: "Operations", slug: "operations" }, ], [base], ); return ( ); }