// ===== RIVAMAR Group — Galería pública (v1.1) ===== const { useState, useEffect } = React; function Lightbox({ item, onClose, onPrev, onNext }) { useEffect(() => { const onKey = (e) => { if (e.key === 'Escape') onClose(); if (e.key === 'ArrowLeft') onPrev(); if (e.key === 'ArrowRight') onNext(); }; window.addEventListener('keydown', onKey); return () => window.removeEventListener('keydown', onKey); }, [onClose, onPrev, onNext]); if (!item) return null; const local = LOCAL_MAP[item.local]; return (
e.stopPropagation()}>

{item.label}

{local.nombre} · {CAT_LABEL[item.cat]}

{item.destacada && }
); } function ExponorBadgeStar() { return ★ Destacada; } function Galeria({ go, initialLocal }) { const [filtro, setFiltro] = useState(initialLocal || 'todos'); const [lbIndex, setLbIndex] = useState(null); const filtered = filtro === 'todos' ? GALERIA : GALERIA.filter((g) => g.local === filtro); // Destacadas primero const ordered = [...filtered].sort((a, b) => (b.destacada ? 1 : 0) - (a.destacada ? 1 : 0)); const pills = [{ id: 'todos', label: 'Todos' }, ...LOCALES.map((l) => ({ id: l.id, label: l.nombre }))]; const pillCls = (active) => `px-4 py-2 rounded-full text-sm font-medium transition-colors min-h-[40px] ${ active ? 'bg-gold text-carbon' : 'bg-iron border border-white/10 text-gray-300 hover:text-gray-50 hover:border-white/30' }`; return (

Galería de experiencias

Platos, ambientes y eventos

Una muestra de la cocina y los espacios de nuestros tres locales. Filtra por local y haz clic en cualquier imagen para ampliarla.

{pills.map((p) => ( ))}
{ordered.map((g) => { const realIndex = GALERIA.indexOf(g); return ( ); })}

¿Te gustaría vivir la experiencia?

go('reservas')}>Reservar una mesa
{lbIndex !== null && ( setLbIndex(null)} onPrev={() => setLbIndex((i) => (i - 1 + GALERIA.length) % GALERIA.length)} onNext={() => setLbIndex((i) => (i + 1) % GALERIA.length)} /> )}
); } Object.assign(window, { Galeria });