"use client"; import { useEffect, useState } from "react"; import Logo from "./logo"; import { navLinks } from "@/content/home"; export default function SiteHeader() { const [scrolled, setScrolled] = useState(false); const [hidden, setHidden] = useState(false); const [open, setOpen] = useState(false); useEffect(() => { let lastY = window.scrollY; const onScroll = () => { const y = window.scrollY; setScrolled(y > 24); setHidden(y > 480 && y > lastY + 4); if (y < lastY - 4 || y < 480) setHidden(false); lastY = y; }; onScroll(); window.addEventListener("scroll", onScroll, { passive: true }); return () => window.removeEventListener("scroll", onScroll); }, []); useEffect(() => { document.body.style.overflow = open ? "hidden" : ""; const onKey = (e: KeyboardEvent) => e.key === "Escape" && setOpen(false); window.addEventListener("keydown", onKey); return () => window.removeEventListener("keydown", onKey); }, [open]); const classes = ["site-header", scrolled || open ? "is-scrolled" : "", hidden && !open ? "is-hidden" : ""] .filter(Boolean) .join(" "); return ( <>
Book a Strategy Call →
setOpen(false)} tabIndex={open ? 0 : -1} > Book a Strategy Call →
); }