'use client'; import { useState, useEffect } from 'react'; import Link from 'next/link'; import { Sparkles, Menu, X } from 'lucide-react'; import ThemeToggle from './ThemeToggle'; import SearchBox from './SearchBox'; // Минимум: главная + о проекте. Серии и заметки доступны через карточки на главной и футер. const NAV_LINKS = [ { href: '/', label: 'Главная' }, { href: '/about', label: 'О проекте' }, ]; export default function Header() { const [open, setOpen] = useState(false); const [hidden, setHidden] = useState(false); const [scrolled, setScrolled] = useState(false); useEffect(() => { let lastY = window.scrollY; const onScroll = () => { const y = window.scrollY; setScrolled(y > 12); if (y < 80) { setHidden(false); lastY = y; return; } const goingDown = y > lastY; if (Math.abs(y - lastY) > 8) { setHidden(goingDown); lastY = y; } }; window.addEventListener('scroll', onScroll, { passive: true }); return () => window.removeEventListener('scroll', onScroll); }, []); useEffect(() => { document.body.style.overflow = open ? 'hidden' : ''; return () => { document.body.style.overflow = ''; }; }, [open]); return ( <>
setOpen(false)}>
ZeroPost {/* Desktop nav */} {/* Mobile controls */}
{/* Mobile menu */}
); }