"use client"; import { useEffect, useState } from "react"; import Image from "next/image"; import { Link, usePathname } from "@/i18n/routing"; import { vipnagorgialla } from "@/components/Vipnagorgialla"; // Icons import { MdClose, MdMenu } from "react-icons/md"; import LanguageSwitcher from "./LanguageSwitcher"; // Shadcn UI import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; interface NavItem { href: | "/" | "/ajakava" | "/haldus" | "/kodukord" | "/messiala" | "/piletid" | "/striim" | "/turniirid"; label: string; } interface HeaderProps { navItems: NavItem[]; } const Header = ({ navItems }: HeaderProps) => { const pathname = usePathname(); const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false); // Header navigation should include all options except homepage and hidden items const hiddenNavHrefs: NavItem["href"][] = ["/messiala", "/ajakava"]; const mainNavItems = navItems.filter( (item) => item.href !== "/" && !hiddenNavHrefs.includes(item.href), ); const dropdownNavItems = mainNavItems; const navIconByHref: Partial> = { "/messiala": "weekend", "/ajakava": "event_note", "/piletid": "local_activity", "/turniirid": "rewarded_ads", "/kodukord": "gavel", }; useEffect(() => { const largeScreenQuery = window.matchMedia("(min-width: 1280px)"); const handleScaleOrViewportChange = (event: MediaQueryListEvent) => { if (event.matches) { setIsMobileMenuOpen(false); } }; if (largeScreenQuery.matches) { setIsMobileMenuOpen(false); } largeScreenQuery.addEventListener("change", handleScaleOrViewportChange); return () => { largeScreenQuery.removeEventListener( "change", handleScaleOrViewportChange, ); }; }, []); useEffect(() => { setIsMobileMenuOpen(false); }, [pathname]); return (
{/* Logo */} TipiLAN {/* Right side - Navigation + controls */}
{/* Desktop Navigation */} {/* Mobile menu button */} {dropdownNavItems.map((item, index) => { const isActive = pathname === item.href; const hasBottomBorder = index !== dropdownNavItems.length - 1; return ( {isActive ? ( {item.label} {navIconByHref[item.href] ? ( {navIconByHref[item.href]} ) : null} ) : ( {item.label} {navIconByHref[item.href] ? ( {navIconByHref[item.href]} ) : null} )} ); })}
); }; export default Header;