"use client"; import Link from "next/link"; import { useEffect, useState } from "react"; import { CATEGORIES, slugifyCategory } from "./categories"; import { useSession } from "next-auth/react"; const MERCH_ICONS = [ "/icons/merchicon1.png", "/icons/merchicon2.png", "/icons/merchicon3.png", "/icons/merchicon4.png", ]; type HeaderProps = { forceScrolled?: boolean; }; export default function Header({ forceScrolled = false }: HeaderProps) { const [interior, exterior, lighting, audio, tools, suspension, performance, drivetrain] = CATEGORIES; const left = [interior, tools, exterior, drivetrain]; const right = [lighting, suspension, audio, performance]; const [merchIndex, setMerchIndex] = useState(0); const [isScrolled, setIsScrolled] = useState(forceScrolled); const { data: session, status } = useSession(); const authLabel = status === "authenticated" ? session!.user.name || session!.user.email || "Account" : "Sign In / Sign Up"; useEffect(() => { const t = setInterval( () => setMerchIndex((i) => (i + 1) % MERCH_ICONS.length), 3000 ); return () => clearInterval(t); }, []); useEffect(() => { if (forceScrolled) { setIsScrolled(true); return; } const onScroll = () => setIsScrolled(window.scrollY > 120); onScroll(); window.addEventListener("scroll", onScroll, { passive: true }); return () => window.removeEventListener("scroll", onScroll); }, [forceScrolled]); useEffect(() => { document.body.classList.toggle("so-header-scrolled", isScrolled); return () => document.body.classList.remove("so-header-scrolled"); }, [isScrolled]); return (
{MERCH_ICONS.map((src, i) => ( ))}
Shifted Offroad
); }