'use client'; import { useState, useEffect } from 'react'; import Image from 'next/image'; import { Navbar as HeroNavbar, NavbarBrand, NavbarContent, NavbarItem, Button, Dropdown, DropdownTrigger, DropdownMenu, DropdownItem } from '@heroui/react'; import ProductMenu from './ProductMenu'; import ResourceMenu from './ResourceMenu'; import { useLanguage } from '@/contexts/LanguageContext'; import { useTheme } from '@/contexts/ThemeContext'; export default function Navbar() { const [scrolled, setScrolled] = useState(false); const { language, setLanguage, t } = useLanguage(); const { theme, toggleTheme } = useTheme(); const [showProductMenu, setShowProductMenu] = useState(false); const [showResourceMenu, setShowResourceMenu] = useState(false); const [animate, setAnimate] = useState(false); useEffect(() => { const handleScroll = () => { setScrolled(window.scrollY > 50); }; window.addEventListener('scroll', handleScroll); return () => window.removeEventListener('scroll', handleScroll); }, []); useEffect(() => { requestAnimationFrame(() => { requestAnimationFrame(() => { setAnimate(true); }); }); }, []); useEffect(() => { const handleClickOutside = (e: MouseEvent) => { const target = e.target as Element; if (showProductMenu && !target.closest('.product-menu-container')) { setShowProductMenu(false); } if (showResourceMenu && !target.closest('.resource-menu-container')) { setShowResourceMenu(false); } }; document.addEventListener('click', handleClickOutside); return () => document.removeEventListener('click', handleClickOutside); }, [showProductMenu, showResourceMenu]); const isDark = theme === 'dark'; return ( <> {/* Logo */}
Logo
{/* Center Menu */} {/* Product */} {/* Community */} {/* Resource */} {/* Right Content */} {/* Launch App Button */}
{/* Theme Toggle */} {/* Language Selector */} setLanguage(key as 'zh' | 'en')} selectedKeys={new Set([language])} classNames={{ list: "py-2" }} itemClasses={{ base: "py-3 flex items-center justify-center" }} > 中文 English
{/* Custom Menus */} setShowProductMenu(false)} language={language} /> setShowResourceMenu(false)} language={language} /> ); }