"use client"; import Image from "next/image"; import Link from "next/link"; import { useRef, useState } from "react"; import HeaderSearch from "@/components/HeaderSearch"; type NavItem = { href: string; label: string; external?: boolean; }; const placeGroups = [ { label: "Hele Norge", items: [{ href: "/sted/norge", label: "Hele Norge" }], }, { label: "Nord-Norge", items: [ { href: "/sted/nord-norge", label: "Nord-Norge" }, { href: "/sted/finnmark", label: "Finnmark" }, { href: "/sted/troms", label: "Troms" }, { href: "/sted/nordland", label: "Nordland" }, ], }, { label: "Midt-Norge", items: [ { href: "/sted/nord-trondelag", label: "Nord-Trøndelag" }, { href: "/sted/sor-trondelag", label: "Sør-Trøndelag" }, { href: "/sted/trondelag", label: "Trøndelag" }, ], }, { label: "Vestlandet", items: [ { href: "/sted/vestlandet", label: "Vestlandet" }, { href: "/sted/more-og-romsdal", label: "Møre og Romsdal" }, { href: "/sted/sogn-og-fjordane", label: "Sogn og Fjordane" }, { href: "/sted/hordaland", label: "Hordaland" }, { href: "/sted/rogaland", label: "Rogaland" }, ], }, { label: "Sørlandet", items: [ { href: "/sted/sorlandet", label: "Sørlandet" }, { href: "/sted/vest-agder", label: "Vest-Agder" }, { href: "/sted/aust-agder", label: "Aust-Agder" }, ], }, { label: "Østlandet", items: [ { href: "/sted/ostlandet", label: "Østlandet" }, { href: "/sted/telemark", label: "Telemark" }, { href: "/sted/vestfold", label: "Vestfold" }, { href: "/sted/ostfold", label: "Østfold" }, { href: "/sted/buskerud", label: "Buskerud" }, { href: "/sted/hedmark", label: "Hedmark" }, { href: "/sted/oppland", label: "Oppland" }, { href: "/sted/oslo-og-akershus", label: "Oslo og Akershus" }, { href: "/sted/akershus", label: "Akershus" }, { href: "/sted/oslo", label: "Oslo" }, ], }, ]; const primaryNavItems: NavItem[] = [ { href: "/medlemskap", label: "Medlemskap" }, { href: "/vtg", label: "VTG" }, { href: "/banebesok", label: "Banebesøk" }, { href: "/meninger", label: "Meninger" }, ]; const resourceNavItems: NavItem[] = [ { href: "/turneringer", label: "Turneringer" }, { href: "/klubbnummer", label: "Klubbnummer" }, { href: "https://golfquiz.no", label: "Golfquiz.no", external: true }, { href: "https://golfbox.golf", label: "Golfbox", external: true }, { href: "/om", label: "FAQ / Om" }, { href: "/kontakt", label: "Kontakt" }, { href: "/personvern-og-cookies", label: "Personvern / Cookies" }, ]; export default function Header() { const [isOpen, setIsOpen] = useState(false); const [isPlacesOpen, setIsPlacesOpen] = useState(false); const [isResourcesOpen, setIsResourcesOpen] = useState(false); const placesCloseTimeoutRef = useRef(null); const clearPlacesCloseTimeout = () => { if (placesCloseTimeoutRef.current !== null) { window.clearTimeout(placesCloseTimeoutRef.current); placesCloseTimeoutRef.current = null; } }; const openPlacesMenu = () => { clearPlacesCloseTimeout(); setIsPlacesOpen(true); }; const schedulePlacesClose = () => { clearPlacesCloseTimeout(); placesCloseTimeoutRef.current = window.setTimeout(() => { setIsPlacesOpen(false); placesCloseTimeoutRef.current = null; }, 120); }; const closeAllMenus = () => { setIsOpen(false); setIsPlacesOpen(false); setIsResourcesOpen(false); }; const mobilePlacesItems = placeGroups.flatMap((group) => group.items); const mobileMenuLinkClass = "text-lg font-extrabold uppercase tracking-[0.08em] text-white"; const mobileMenuSectionHeadingClass = "text-lg font-extrabold uppercase tracking-[0.08em] text-[#8BC34A]"; return (
TeeOff.no
{isOpen && (
{primaryNavItems.map((item) => ( {item.label} ))}

Ressurser

{resourceNavItems.map((item) => item.external ? ( {item.label} ) : ( {item.label} ), )}

Steder

{mobilePlacesItems.map((item) => ( {item.label} ))}

Søk

)}
); }