// sections2.jsx — Detalles del evento, Mesa de regalos, Hospedaje, Pie. // Exporta: Detalles, Regalos, Hospedaje, Footer. const { T: T2 } = window; // botón con estilo (enlace) function GhostBtn({ href, children, solid = false }) { const [h, setH] = React.useState(false); const base = { display: 'inline-flex', alignItems: 'center', gap: 9, padding: '13px 22px', fontFamily: T2.micro, fontSize: 12, letterSpacing: '.18em', textTransform: 'uppercase', fontWeight: 600, textDecoration: 'none', borderRadius: 2, transition: 'all .3s ease', cursor: 'pointer', border: `1px solid ${T2.ink}`, }; const style = solid ? { ...base, background: h ? T2.deep : T2.ink, color: T2.bg, borderColor: T2.ink } : { ...base, background: h ? T2.ink : 'transparent', color: h ? T2.bg : T2.ink }; return ( setH(true)} onMouseLeave={() => setH(false)}>{children} ); } function Card({ children, style }) { return (
{children}
); } // ————————————————————————————————————————— DETALLES ————— function Detalles() { const E = window.EVENT; return (
Detalles del evento

El gran día

{/* tarjeta del lugar */}
Ceremonia y recepción

{E.venue}

{E.venueZona}
{[['Fecha', E.fechaLarga.replace('Sábado 7', 'Sáb · 7')], ['Ceremonia', E.ceremoniaHora], ['Recepción', E.recepcionHora]].map(([k, v]) => (
{k}
{v}
))}
◰  Google Maps ◇  Abrir en Waze
{/* dress code + niños */}
Código de vestimenta

{E.dress.nivel}

{[['Ellos', E.dress.hombres], ['Ellas', E.dress.mujeres]].map(([t, items]) => (
{t}
    {items.map((it, i) => (
  • {it}
  • ))}
))}
Solo adultos

“{E.ninos}”

); } // ————————————————————————————————————————— MESA DE REGALOS ————— function Regalos() { const G = window.GIFT; const [copied, setCopied] = React.useState(false); const copy = () => { navigator.clipboard?.writeText(G.clabe.replace(/\s/g, '')).then(() => { setCopied(true); setTimeout(() => setCopied(false), 1800); }).catch(() => {}); }; return (
Mesa de regalos

Un detalle con cariño

{G.intro}

{[['Banco', G.banco], ['Titular', G.titular]].map(([k, v]) => (
{k} {v}
))}
CLABE interbancaria
{G.clabe}
{G.nota}
); } // ————————————————————————————————————————— HOSPEDAJE ————— function Hospedaje() { const L = window.LODGING; // Conservar el orden de aparición de cada categoría const orden = []; const grupos = {}; L.forEach((o) => { if (!grupos[o.cat]) { grupos[o.cat] = []; orden.push(o.cat); } grupos[o.cat].push(o); }); let idx = 0; return (
Hospedaje

Dónde quedarte

Opciones que recomendamos en el centro de Oaxaca — todas a menos de 10 minutos caminando de Kaku Secret Gallery.

{orden.map((cat) => (
{cat}
{grupos[cat].map((o) => { const delay = (idx++ % 3) * 80; return (

{o.nombre}

{o.rating.toFixed(1)}
{o.dir} {o.nota && (

{o.nota}

)}
Ver sitio
); })}
))}
); } // ————————————————————————————————————————— PIE ————— function Footer() { return ( ); } Object.assign(window, { Detalles, Regalos, Hospedaje, Footer });