/* PhotoCarousel — auto-rotating carousel com loading progressivo.
──────────────────────────────────────────────────────────────────────
PERFORMANCE
- Primeira imagem do carrossel: carrega imediatamente (eager, alta prioridade)
- Outras imagens: carregam de forma preguiçosa (lazy), em paralelo
- Cada imagem tem largura/altura declaradas → zero CLS (layout shift)
- Shimmer dourado enquanto a imagem carrega → o usuário vê a interface
pronta antes mesmo das fotos baixarem.
COMO TROCAR FOTOS
1) Salve em `assets/fotos/cidades/` ou `assets/fotos/condominio/`
2) Mantenha o mesmo nome listado em PHOTOS abaixo
OU edite o campo `src` da linha correspondente.
Veja `assets/fotos/README.md` para o passo a passo.
────────────────────────────────────────────────────────────────────── */
function PhotoCarousel({ photos, interval = 5000, compact = false, labelOverride, width, height }) {
const [i, setI] = React.useState(0);
const [paused, setPaused] = React.useState(false);
const [loaded, setLoaded] = React.useState(() => new Set());
React.useEffect(() => {
if (photos.length <= 1 || paused) return;
const t = setInterval(() => setI(p => (p + 1) % photos.length), interval);
return () => clearInterval(t);
}, [photos.length, interval, paused]);
const go = (delta) => setI(p => (p + delta + photos.length) % photos.length);
const markLoaded = (idx) => setLoaded(prev => {
if (prev.has(idx)) return prev;
const next = new Set(prev);
next.add(idx);
return next;
});
return (