'use client'; import { ChevronDown, Menu, Search, X } from 'lucide-react'; import Link from 'next/link'; import { usePathname } from 'next/navigation'; import { useEffect, useRef, useState } from 'react'; import { Wordmark } from '@/components/brand/logo'; import { cn } from '@/lib/cn'; import { exploreNav, moreNav, primaryNav, routes } from '@/lib/site'; import { useOpenSearch } from './search-context'; import { ThemeToggle } from './theme'; const EXPLORE_PREFIXES = exploreNav.map((n) => n.href); export function SiteHeader() { const pathname = usePathname(); const openSearch = useOpenSearch(); const [menu, setMenu] = useState(false); const [explore, setExplore] = useState(false); const exploreRef = useRef(null); useEffect(() => { setMenu(false); setExplore(false); }, [pathname]); useEffect(() => { if (!explore) return; const onDoc = (e: MouseEvent) => { if (!exploreRef.current?.contains(e.target as Node)) setExplore(false); }; const onKey = (e: KeyboardEvent) => e.key === 'Escape' && setExplore(false); document.addEventListener('mousedown', onDoc); document.addEventListener('keydown', onKey); return () => { document.removeEventListener('mousedown', onDoc); document.removeEventListener('keydown', onKey); }; }, [explore]); const exploreActive = pathname === '/explore' || EXPLORE_PREFIXES.some((p) => pathname === p || pathname.startsWith(p + '/')); const navCls = (active: boolean) => cn('flex h-9 items-center gap-1 rounded-sm px-2.5 text-[13.5px] transition-colors', active ? 'text-ink font-medium' : 'text-ink-2 hover:text-ink'); return (
{menu && (

Explore

    {exploreNav.map((n) => (
  • {n.label}
  • ))}

Track

    {primaryNav.map((n) => (
  • {n.label}
  • ))}

About

    {moreNav.map((n) => (
  • {n.label}
  • ))}
)}
); }