'use client'; import { useRef, useEffect } from 'react'; import { ChevronDown, Lock, Sparkles } from 'lucide-react'; import { StaticLink } from '@/components/ui/static-link'; import { AnimatePresence, motion } from 'framer-motion'; import type { MegaDropdownGroup } from '@/lib/site-config'; interface MegaDropdownProps { label: string; groups: MegaDropdownGroup[]; isOpen: boolean; isActive?: boolean; onToggle: () => void; onOpen: () => void; onClose: () => void; } export function MegaDropdown({ label, groups, isOpen, isActive, onToggle, onOpen, onClose }: MegaDropdownProps) { const dropdownRef = useRef(null); const timeoutRef = useRef>(undefined); const handleMouseEnter = () => { clearTimeout(timeoutRef.current); onOpen(); }; const handleMouseLeave = () => { timeoutRef.current = setTimeout(onClose, 300); }; useEffect(() => { return () => clearTimeout(timeoutRef.current); }, []); return (
{isOpen && (
{groups.map((group, groupIndex) => (
0 ? 'mt-6 pt-6 border-t border-border-primary' : ''}>

{group.title}

{group.description && ( {group.description} )} {group.highlight && ( )}
4 ? 'grid-cols-3' : 'grid-cols-2'}`}> {group.items.map((item) => { const isPlaceholder = item.href === '#'; const content = (
{item.title}
{item.badge && ( {item.badge === '敬请期待' && } {item.badge} )}
{item.description}
); if (isPlaceholder) { return (
{content}
); } return ( {content} ); })}
))}
查看全部{label}
)}
); }