'use client' /** * Minimal Navigation Component * * Fixed top navigation with logo and links. * Mobile-friendly with hamburger menu. * Adaptive styling based on scroll position (hero vs content). */ import { useState, useEffect } from 'react' import Link from 'next/link' import Image from 'next/image' import { Menu, X } from 'lucide-react' import type { NavigationContent } from '@/content/schemas/manifesto' interface MinimalNavProps { content: NavigationContent } export function MinimalNav({ content }: MinimalNavProps) { const [isMenuOpen, setIsMenuOpen] = useState(false) const [isScrolled, setIsScrolled] = useState(false) useEffect(() => { const handleScroll = () => { // Check if scrolled past hero section (approximately 100vh) setIsScrolled(window.scrollY > window.innerHeight * 0.8) } window.addEventListener('scroll', handleScroll, { passive: true }) handleScroll() // Initial check return () => { window.removeEventListener('scroll', handleScroll) } }, []) // Close menu when clicking outside or on link useEffect(() => { if (isMenuOpen) { const handleClickOutside = () => setIsMenuOpen(false) document.addEventListener('click', handleClickOutside) return () => document.removeEventListener('click', handleClickOutside) } }, [isMenuOpen]) // Determine nav styling based on scroll position // On hero: dark nav with light text, on content: light nav with dark text const navClasses = isScrolled ? 'bg-white/95 backdrop-blur-sm shadow-sm' : 'bg-slate-900/80 backdrop-blur-sm md:bg-white/80 md:backdrop-blur-sm' const logoClasses = isScrolled ? 'text-teal-600' : 'text-white md:text-teal-600' const linkClasses = isScrolled ? 'text-slate-900 hover:text-slate-700' : 'text-white hover:text-slate-200 md:mix-blend-difference md:text-white md:hover:opacity-80' const menuButtonClasses = isScrolled ? 'text-slate-900 focus-visible:outline-slate-900' : 'text-white focus-visible:outline-white' return ( ) }