// Aiglú — shared web components // Header, Footer, brand symbol, project data. const Sym01 = ({ size = 32, color = 'currentColor' }) => ( ); const Brand = ({ size = 28, color = 'var(--ink)', linkBase = '' }) => ( aiglú ); const Header = ({ active, base = '' }) => { const [open, setOpen] = React.useState(false); React.useEffect(() => { document.body.style.overflow = open ? 'hidden' : ''; return () => { document.body.style.overflow = ''; }; }, [open]); const links = [ { k: 'home', label: 'Inicio', href: base + 'index.html' }, { k: 'proyectos', label: 'Proyectos', href: base + 'index.html#proyectos' }, { k: 'estudio', label: 'Estudio', href: base + 'nosotros.html' }, { k: 'calculadoras', label: 'Calculadoras', href: base + 'calculadoras.html' }, { k: 'pildoras', label: 'Píldoras', href: base + 'pildoras.html' }, { k: 'inversores', label: 'Inversores', href: base + 'inversores.html' }, { k: 'acceso', label: 'Área privada', href: base + 'acceso.html' }, ]; return (
{open && ( <>
setOpen(false)}>
)}
); }; const Footer = ({ base = '' }) => ( ); // Reveal-on-scroll hook function useReveal() { React.useEffect(() => { const els = document.querySelectorAll('.reveal'); const io = new IntersectionObserver((entries) => { entries.forEach((e) => { if (e.isIntersecting) { e.target.classList.add('in'); io.unobserve(e.target); } }); }, { threshold: 0.12, rootMargin: '0px 0px -40px 0px' }); els.forEach((el) => io.observe(el)); return () => io.disconnect(); }, []); } // Project catalog (the data drives both home grid and individual pages) const PROJECTS = [ { slug: 'aiglu-colmenar', name: 'Aiglú Colmenar', location: 'Colmenar Viejo · Madrid', status: 'En comercialización', statusKey: 'live', units: 26, typology: '1, 2 y 3 dormitorios', delivery: 'Q4 2028', cover: 'assets/parcela-01.png', blurb: '26 viviendas con garaje y trastero en el centro de Colmenar Viejo. Promoción residencial con viabilidad estudiada.', page: 'proyectos/aiglu-colmenar.html', }, { slug: 'aiglu-tres-cantos', name: 'Aiglú Tres Cantos', location: 'Tres Cantos · Madrid', status: 'Próximamente', statusKey: 'upcoming', units: 42, typology: '2 y 3 dormitorios', delivery: 'Q2 2030', cover: null, blurb: 'Promoción residencial sostenible junto al parque tecnológico. Detalles en breve.', page: 'proyectos/aiglu-tres-cantos.html', }, { slug: 'aiglu-las-rozas', name: 'Aiglú Las Rozas', location: 'Las Rozas · Madrid', status: 'En estudio', statusKey: 'future', units: 18, typology: 'Unifamiliares pareadas', delivery: 'Por definir', cover: null, blurb: 'Conjunto de viviendas unifamiliares pareadas en parcela arbolada. Anteproyecto en redacción.', page: 'proyectos/aiglu-las-rozas.html', }, ]; // Decorative architectural placeholder (used when no real photo) const ArchPlaceholder = ({ tone = 'var(--cream-warm)', accent = 'var(--ink)', label }) => (
{[60, 130, 200, 270, 340, 410, 480, 550].map(x => ( ))} {label && (
{label}
)}
); Object.assign(window, { Sym01, Brand, Header, Footer, useReveal, PROJECTS, ArchPlaceholder });