"use client"
import {
Sidebar,
SidebarContent,
SidebarHeader,
SidebarMenu,
SidebarMenuButton,
SidebarMenuItem,
SidebarMenuSub,
SidebarMenuSubButton,
SidebarMenuSubItem,
} from "@/components/ui/sidebar"
import { useSubmenuState } from "@/hooks/use-submenu-state"
import { cn } from "@/lib/utils"
import { ChevronDown, ChevronRight } from "lucide-react"
interface MenuItem {
id: string
title: string
items?: MenuItem[]
}
interface CardSidenavProps {
items: MenuItem[]
}
export function FolderTreeMenu({ items }: CardSidenavProps) {
const { openStates, toggleSubmenu } = useSubmenuState()
const renderMenuItem = (item: MenuItem) => {
const hasSubItems = item.items && item.items.length > 0
const isOpen = openStates[item.id]
return (
hasSubItems && toggleSubmenu(item.id)}
className={cn(
"w-full justify-between",
hasSubItems && "font-semibold"
)}
>
{item.title}
{hasSubItems && (
{isOpen ? (
) : (
)}
)}
{hasSubItems && (
{isOpen &&
item.items!.map((subItem) => (
{subItem.title}
))}
)}
)
}
return (
Menu
{items.map(renderMenuItem)}
)
}