'use client'; import { useRef, useEffect } from 'react'; import { ChevronDown } from 'lucide-react'; import { StaticLink } from '@/components/ui/static-link'; import { AnimatePresence, motion } from 'framer-motion'; interface MegaDropdownItem { id: string; title: string; description: string; href: string; } interface MegaDropdownProps { label: string; items: MegaDropdownItem[]; isOpen: boolean; onToggle: () => void; onOpen: () => void; onClose: () => void; } export function MegaDropdown({ label, items, isOpen, onToggle, onOpen, onClose }: MegaDropdownProps) { const dropdownRef = useRef(null); const timeoutRef = useRef>(undefined); const handleMouseEnter = () => { clearTimeout(timeoutRef.current); onOpen(); }; const handleMouseLeave = () => { timeoutRef.current = setTimeout(onClose, 150); }; useEffect(() => { return () => clearTimeout(timeoutRef.current); }, []); return (
{isOpen && (
{items.map((item) => (
{item.title}
{item.description}
))}
)}
); }