'use client'; import { useCallback, useEffect, useState } from 'react'; import type { PublicGaleriaFoto } from '@/lib/funnel/public-queries'; type GaleriaTrabajosProps = { fotos: PublicGaleriaFoto[]; nombreEmpresa: string; }; // Galería de trabajos del reformista en su landing pública. Solo se muestra si el reformista ha // subido fotos desde su panel. Formato apaisado y, al pulsar una foto, se amplía en un lightbox // con navegación entre todas las imágenes. export default function GaleriaTrabajos({ fotos, nombreEmpresa }: GaleriaTrabajosProps) { const [idx, setIdx] = useState(null); const cerrar = useCallback(() => setIdx(null), []); const mover = useCallback( (d: number) => setIdx((cur) => (cur === null ? cur : (cur + d + fotos.length) % fotos.length)), [fotos.length], ); useEffect(() => { if (idx === null) return; const onKey = (e: KeyboardEvent) => { if (e.key === 'Escape') cerrar(); else if (e.key === 'ArrowRight') mover(1); else if (e.key === 'ArrowLeft') mover(-1); }; document.addEventListener('keydown', onKey); document.body.style.overflow = 'hidden'; return () => { document.removeEventListener('keydown', onKey); document.body.style.overflow = ''; }; }, [idx, cerrar, mover]); if (fotos.length === 0) return null; const actual = idx !== null ? fotos[idx] : null; return (
Nuestros trabajos

Reformas que ya hemos hecho

Una muestra real del trabajo de {nombreEmpresa}. Toca cualquier imagen para verla en grande.

{fotos.map((f, i) => (
{f.titulo && (
{f.titulo}
)}
))}
{actual && (
{fotos.length > 1 && ( )} {/* eslint-disable-next-line @next/next/no-img-element */} {actual.titulo e.stopPropagation()} className="max-h-[86vh] max-w-[94vw] w-auto rounded-lg shadow-2xl" /> {fotos.length > 1 && ( )} {actual.titulo && (
{actual.titulo}
)}
)}
); }