/* projects.jsx — Dedicated Projects page */ const ProjectsPage = ({ setPage }) => { const [active, setActive] = React.useState(null); // project id for detail modal/inline const project = active ? PROJECTS.find(p => p.id === active) : null; return (
{/* Hero */}
Proyectos realizados

Obras que respaldan
cada palabra.

Una selección de proyectos desarrollados por Aclimatar en distintos sectores e industrias — desde edificios corporativos hasta centros de cómputos, instituciones sanitarias y propiedad horizontal premium.

+100
obras ejecutadas
35
años de respaldo técnico
5
sectores cubiertos
{/* Filter chips */} {/* Full list */}
{PROJECTS.map((p, i) => ( setActive(p.id)} /> ))}
{/* Detail overlay */} {project && setActive(null)} />}
); }; const ProjectsFilter = () => { const tags = ['Todos', 'Corporativo', 'Sanitario', 'Centro de Cómputos', 'Propiedad Horizontal', 'Industrial']; const [active, setActive] = React.useState('Todos'); return (
{tags.map(t => ( ))}
); }; const ProjectRow = ({ p, index, flip, onOpen }) => { const photoCount = (p.images && p.images.length) || (p.img ? 1 : 0); return (
{photoCount > 1 && (
{photoCount} fotos
)}
{p.tag}

{p.t}

{p.desc}

{extractSpecs(p).map((s, i) => (
{s.l}
{s.v}
))}
); }; /* Pull a few key technical specs from each project's text */ function extractSpecs(p) { const specs = { 'banco-ciudad': [ { l: 'Tipo', v: 'Edificio corporativo' }, { l: 'Tecnología', v: 'Chiller + UTAs + SMMS Toshiba VRF' }, { l: 'Áreas críticas', v: 'Salas de servidores' }, ], 'banco-galicia': [ { l: 'Tipo', v: 'Centro de cómputos' }, { l: 'Equipo principal', v: 'Chiller Carrier AquaForce' }, { l: 'Complejidad', v: 'Operativo de izaje urbano' }, ], 'clinica-bazterrica': [ { l: 'Tipo', v: 'Edificio sanitario' }, { l: 'Sistema', v: 'Enfriamiento central por agua' }, { l: 'Alcance', v: 'Chiller + UTAs + montaje en altura' }, ], 'altos-del-rio': [ { l: 'Tipo', v: 'Propiedad horizontal' }, { l: 'Tecnología', v: 'SMMS Toshiba VRF' }, { l: 'Ubicación equipos', v: 'Terraza' }, ], 'quartier-lacroze': [ { l: 'Tipo', v: 'Propiedad horizontal premium' }, { l: 'Climatización', v: 'Daikin VRV IV · R410A (terraza)' }, { l: 'Agua caliente', v: 'Calderas + circuito primario/secundario' }, { l: 'Intercambio', v: 'Placas de calor · hierro negro / acero inox.' }, { l: 'Extras', v: 'Tanque acumulador, expansión y pileta climatizada' }, ], }; return specs[p.id] || []; } /* Detail overlay — opens a fixed panel with full description + gallery */ const ProjectDetail = ({ p, onClose }) => { const images = p.images && p.images.length ? p.images : (p.img ? [p.img] : []); const [activeIdx, setActiveIdx] = React.useState(0); const hasGallery = images.length > 1; React.useEffect(() => { const onKey = (e) => { if (e.key === 'Escape') onClose(); if (hasGallery) { if (e.key === 'ArrowRight') setActiveIdx(i => (i + 1) % images.length); if (e.key === 'ArrowLeft') setActiveIdx(i => (i - 1 + images.length) % images.length); } }; document.addEventListener('keydown', onKey); document.body.style.overflow = 'hidden'; return () => { document.removeEventListener('keydown', onKey); document.body.style.overflow = ''; }; }, [onClose, hasGallery, images.length]); return (
e.stopPropagation()}> {/* Main image area */}
{hasGallery && ( <>
{activeIdx + 1} / {images.length}
)}
{/* Right side — text + specs + thumbs */}
{p.tag}

{p.t}

{p.desc}

{extractSpecs(p).map((s, i) => (
{s.l}
{s.v}
))}
{hasGallery && (
Galería · {images.length} fotos
{images.map((src, i) => ( ))}
)}
); }; window.ProjectsPage = ProjectsPage;