"use client"; import { useState, useRef, useEffect, type ReactNode } from "react"; interface NavDropdownProps { label: string; icon?: string; children: ReactNode; } export function NavDropdown({ label, icon, children }: NavDropdownProps) { const [open, setOpen] = useState(false); const ref = useRef(null); useEffect(() => { function handleClick(e: MouseEvent) { if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false); } function handleKey(e: KeyboardEvent) { if (e.key === "Escape") setOpen(false); } if (open) { document.addEventListener("mousedown", handleClick); document.addEventListener("keydown", handleKey); } return () => { document.removeEventListener("mousedown", handleClick); document.removeEventListener("keydown", handleKey); }; }, [open]); return (
{open && (
setOpen(false)}> {children}
)}
); }