"use client" import { useState } from "react" import { Menu, X, ChevronDown, ChevronRight, Check } from "lucide-react" import { Button } from "@/components/ui/button" import type { MenuItem } from "@/types/menu" interface HamburgerMenuProps { menuItems: MenuItem[] onMenuItemClick?: (item: MenuItem) => void onMenuItemToggle?: (itemId: string) => void transitionDuration?: string } interface MenuItemComponentProps { item: MenuItem onItemClick?: (item: MenuItem) => void onItemToggle?: (itemId: string) => void transitionDuration: string depth?: number } function MenuItemComponent({ item, onItemClick, onItemToggle, transitionDuration, depth = 0 }: MenuItemComponentProps) { if (item.isVisible === false) return null const hasChildren = item.children && item.children.length > 0 const isExpanded = item.isExpanded || false const paddingLeft = depth * 16 + 16 // 16px base + 16px per depth level const handleClick = () => { if (item.disabled) return if (hasChildren) { onItemToggle?.(item.id) } else if (item.onClick) { item.onClick() onItemClick?.(item) } } return (
{hasChildren && (
{item.children?.map((child) => ( ))}
)}
) } export function HamburgerMenu({ menuItems, onMenuItemClick, onMenuItemToggle, transitionDuration = "300ms", }: HamburgerMenuProps) { const [isOpen, setIsOpen] = useState(false) const toggleMenu = () => { setIsOpen(!isOpen) } const handleMenuItemClick = (item: MenuItem) => { onMenuItemClick?.(item) // Close menu after clicking a leaf item (no children) if (!item.children || item.children.length === 0) { setIsOpen(false) } } return ( <> {/* Overlay */} {isOpen &&
setIsOpen(false)} />} {/* Menu Panel */}

Menu

{menuItems.map((item) => ( ))}
) }