// ============================================================ // Header — cabecera fija con efecto "glass" al hacer scroll. // RESPONSIVE: en escritorio muestra la navegación a los lados del // escudo. En móvil/tablet (≤980px) esa navegación se oculta y aparece // un botón hamburguesa que despliega un menú a pantalla completa. // ============================================================ function Header() { const scrolled = useScrolled(60); // Estado del menú móvil (abierto / cerrado) const [menuOpen, setMenuOpen] = React.useState(false); const navLeft = [ { label: 'Nosotros', href: 'index.html#nosotros' }, { label: 'Admisiones', href: 'inscripciones.html' }, { label: 'Programas', href: 'index.html#programas' }, ]; const navRight = [ { label: 'Galería', href: 'index.html#galeria' }, { label: 'Directivos', href: 'index.html#directivos' }, { label: 'Contacto', href: 'index.html#contacto' }, ]; // Lista unificada para el menú móvil const navAll = [...navLeft, ...navRight]; // Cuando el menú móvil está abierto bloqueamos el scroll del fondo React.useEffect(() => { document.body.style.overflow = menuOpen ? 'hidden' : ''; return () => { document.body.style.overflow = ''; }; }, [menuOpen]); const headerStyle = { position: 'fixed', top: 0, left: 0, right: 0, zIndex: 100, height: 'var(--header-h)', display: 'grid', gridTemplateColumns: '1fr auto 1fr', alignItems: 'center', padding: '0 40px', transition: 'background 320ms var(--ease-out), backdrop-filter 320ms var(--ease-out), box-shadow 320ms', // Si el menú móvil está abierto forzamos el fondo sólido para legibilidad background: (scrolled || menuOpen) ? 'var(--glass-bg)' : 'transparent', backdropFilter: (scrolled || menuOpen) ? 'var(--glass-blur)' : 'none', WebkitBackdropFilter: (scrolled || menuOpen) ? 'var(--glass-blur)' : 'none', boxShadow: scrolled ? '0 1px 0 rgba(212,160,42,0.18)' : 'none', color: '#fff', }; return (
Colegio Militar General Santander {/* Botón hamburguesa — solo visible en móvil (≤980px vía CSS) */} {/* Menú móvil desplegable */}
); } Object.assign(window, { Header });