/* 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.
35
años de respaldo técnico
{/* 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 => (
setActive(t)}>
{t}
))}
);
};
const ProjectRow = ({ p, index, flip, onOpen }) => {
const photoCount = (p.images && p.images.length) || (p.img ? 1 : 0);
return (
{p.tag}
{p.t}
{p.desc}
{extractSpecs(p).map((s, i) => (
))}
Ver detalles del proyecto
);
};
/* 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 && (
<>
setActiveIdx(i => (i - 1 + images.length) % images.length)}
aria-label="Anterior">
setActiveIdx(i => (i + 1) % images.length)}
aria-label="Siguiente">
{activeIdx + 1} / {images.length}
>
)}
{/* Right side — text + specs + thumbs */}
{p.tag}
{p.t}
{p.desc}
{extractSpecs(p).map((s, i) => (
))}
{hasGallery && (
Galería · {images.length} fotos
{images.map((src, i) => (
setActiveIdx(i)}
aria-label={"Foto " + (i + 1)}>
))}
)}
Solicitar proyecto similar
Volver
);
};
window.ProjectsPage = ProjectsPage;