"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}
))}
)
}