// 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 (
);
};
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 }) => (
{label && (
{label}
)}
);
Object.assign(window, { Sym01, Brand, Header, Footer, useReveal, PROJECTS, ArchPlaceholder });