'use client' import { useState, useEffect, useCallback } from 'react' import { motion, AnimatePresence } from 'framer-motion' import { Zap, Github, FolderOpen, Menu, X, Layers, FileEdit, Terminal, BookOpen } from 'lucide-react' import Link from 'next/link' const NAV_ITEMS = [ { href: '/directory', label: 'Directory', icon: FolderOpen }, { href: '/batch', label: 'Batch', icon: Layers }, { href: '/generator', label: 'llms.txt', icon: FileEdit }, { href: '/install-generator', label: 'install.md', icon: Terminal }, { href: '/docs/', label: 'Docs', icon: BookOpen }, { href: '/#how-it-works', label: 'How it works' }, { href: '/#features', label: 'Features' }, ] export default function Header() { const [mobileMenuOpen, setMobileMenuOpen] = useState(false) // Close mobile menu on escape key useEffect(() => { const handleEscape = (e: KeyboardEvent) => { if (e.key === 'Escape') setMobileMenuOpen(false) } document.addEventListener('keydown', handleEscape) return () => document.removeEventListener('keydown', handleEscape) }, []) // Close mobile menu when clicking outside const handleOverlayClick = useCallback(() => { setMobileMenuOpen(false) }, []) // Prevent body scroll when menu is open useEffect(() => { if (mobileMenuOpen) { document.body.style.overflow = 'hidden' } else { document.body.style.overflow = '' } return () => { document.body.style.overflow = '' } }, [mobileMenuOpen]) return (
{/* Logo */}
llm.energy {/* Desktop Nav */} {/* Right side - Desktop */}
GitHub Get started
{/* Mobile menu button */}
{/* Mobile menu overlay */} {mobileMenuOpen && ( <> {/* Backdrop */}
) }