import { ChevronDown, ChevronRight, Package, ClipboardList } from "lucide-react"; import { useState } from "react"; import { cn } from "./ui/utils"; interface MenuItem { id: string; label: string; icon?: React.ReactNode; children?: MenuItem[]; } interface NavigationSidebarProps { currentPath: string; onNavigate: (path: string) => void; } export default function NavigationSidebar({ currentPath, onNavigate, }: NavigationSidebarProps) { const [expandedItems, setExpandedItems] = useState([ "inventory-management", ]); const menuItems: MenuItem[] = [ { id: "inventory-management", label: "商品與庫存管理", icon: , children: [ { id: "product-management", label: "商品建檔管理", icon: , }, ], }, ]; const toggleExpand = (itemId: string) => { setExpandedItems((prev) => prev.includes(itemId) ? prev.filter((id) => id !== itemId) : [...prev, itemId] ); }; const renderMenuItem = (item: MenuItem, level: number = 0) => { const hasChildren = item.children && item.children.length > 0; const isExpanded = expandedItems.includes(item.id); const isActive = currentPath === item.id; return (
{hasChildren && isExpanded && (
{item.children?.map((child) => renderMenuItem(child, level + 1))}
)}
); }; return ( ); }