"use client" import { ChevronRightIcon } from "lucide-react" import Link from "next/link" import { usePathname } from "next/navigation" import { useState } from "react" import { getDashboardNavSectionStorageKey, isDashboardNavItemActive, parseDashboardNavSectionOpenState, } from "@/lib/navigation-active" import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from "@/components/ui/collapsible" import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { SidebarGroup, SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, useSidebar, } from "@/components/ui/sidebar" export function NavMain({ icon, sectionKey, title, items, }: { icon?: React.ReactNode sectionKey: string title: string items: ReadonlyArray<{ title: string url: string icon?: React.ReactNode }> }) { const pathname = usePathname() const { isMobile, state } = useSidebar() const storageKey = getDashboardNavSectionStorageKey(sectionKey) const [open, setOpen] = useState(() => { if (typeof window === "undefined") { return true } return parseDashboardNavSectionOpenState(window.localStorage.getItem(storageKey)) ?? true }) const handleOpenChange = (nextOpen: boolean) => { setOpen(nextOpen) window.localStorage.setItem(storageKey, String(nextOpen)) } if (state === "collapsed" && !isMobile) { return ( } > {icon} {title} {title} {items.map((item) => ( } className="cursor-pointer" > {item.title} ))} ) } return ( } > }> {icon} {title} {items.map((item) => ( } isActive={isDashboardNavItemActive(pathname, item.url)} tooltip={item.title} > {item.title} ))} ) }