/* STICKY PORTFOLIO — galería estilo "ui-layout sticky-scroll". 3 columnas: izquierda y derecha hacen scroll normal con varias imágenes, columna central queda sticky con un grupo de 3 imágenes "destacadas". Cada figure tiene caption derivado de window.productData[src] y abre ProductLightbox al hacer click. */ const StickyPortfolio = ({ t, lang, setActiveProduct }) => { // Asignaciones VERIFICADAS visualmente. Los datos (título, cliente, medidas) // se leen desde window.productData en StickyFigure. Sin labels hardcodeados. const left = [ 'assets/cocina-linea.jpeg', // línea cocina industrial 'assets/casetas-fila.jpeg', // gabinete exterior ventilado abierto 'assets/totem-urban.jpeg', // tótems digitales Urban 'assets/cabinet-archivero.jpeg', // archivero metálico 7 cajones 'assets/gabinete-exhibidor-vidrio-inox-01.jpeg', // vitrinas inox + vidrio en producción ]; const center = [ 'assets/counter-7eleven.jpeg', // counter retail 7-Eleven 'assets/casetas-fila-2.jpeg', // cocina con chefs en operación 'assets/gabinetes-fila.jpeg', // lote cabinas inox en producción ]; const right = [ 'assets/puesto-comida.jpeg', // puesto comida rápida marquesina 'assets/cubicles-azul.jpeg', // estación cocina tarja + bain-marie 'assets/cocina-trabajo.jpeg', // cubículos call center 'assets/cocina-mesa.jpeg', // lote archiveros embalados 'assets/totems-pareja.jpeg', // kiosco urbano CDMX MH093 ]; return (
{/* Sticky title screen */}
{/* Sticky 3-col gallery */}
{/* LEFT */}
{left.map((src, i) => )}
{/* CENTER - sticky */}
{center.map((src, i) => )}
{/* RIGHT */}
{right.map((src, i) => )}
{/* Closing CTA */}

{t('+ MUCHO MÁS EN EL PORTAFOLIO COMPLETO', '+ MUCH MORE IN THE FULL PORTFOLIO')}

{t('Pedir portafolio completo por WhatsApp', 'Request full portfolio via WhatsApp')}
{/* Big gradient footer text "AceroLab" — same vibe as ui-layout demo */}

ACEROLAB

); }; const StickyFigure = ({ src, fill = false, lang = 'es', onOpen, t }) => { const data = window.productData?.[src]; const pick = (field) => (typeof field === 'string' ? field : (field && (field[lang] || field.es)) || ''); const category = data ? pick(data.category) : ''; const title = data ? pick(data.title) : ''; const client = data ? pick(data.client) : ''; return (
onOpen?.(src)} role="button" tabIndex={0} onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') onOpen?.(src); }} style={{ margin: 0, width: '100%', height: fill ? '100%' : 'auto', position: 'relative', background: 'var(--bg-2)', overflow: 'hidden', cursor: 'pointer', }} > {title
{(category || '').toUpperCase()}
{title}
{(client || (data && data.measures)) && (
{client}{client && data?.measures ? ' · ' : ''}{data?.measures || ''}
)}
{t ? t('VER FICHA', 'DETAILS') : 'VER FICHA'}
); }; window.StickyPortfolio = StickyPortfolio;