// ============================================================ // OSCILADOR — Galería (3 variantes) + Reglas + FAQ + CTA + Footer // ============================================================ const GAL_DATA = [ { id: "SLA-001", caption: "Plano general · sala en baja luz" }, { id: "SLA-002", caption: "Close-up jog wheel · CDJ-3000" }, { id: "SLA-003", caption: "Pantalla CDJ-3000" }, { id: "SLA-004", caption: "DJM-A9 · faders y EQ" }, { id: "SLA-005", caption: "Cabina · vista DJ" }, ]; const GAL_SRC = { "SLA-001": "assets/images/sala-001-plano-general-cabina.png", "SLA-002": "assets/images/sala-002-closeup-jog-wheel-cdj.png", "SLA-003": "assets/images/sala-003-pantalla-cdj-track-cargado.png", "SLA-004": "assets/images/sala-004-closeup-mixer-djm-a9.png", "SLA-005": "assets/images/sala-005-setup-top-down-completo.png", }; function GalV1Masonry() { return (
); } function GalV2Scroll() { return (
{GAL_DATA.map((g, i) => ( ))}
← DESLIZAR {GAL_DATA.length} FRAMES
); } function GalV3Stack() { return (
{GAL_DATA.slice(0, 3).map((g, i) => ( ))}
); } function Galeria({ variant }) { if (variant === "scroll") return ; if (variant === "stack") return ; return ; } // ============================================================ // REGLAS DE LA SALA (rider técnico) // ============================================================ function Reglas() { const rules = [ ["R01", "Reserva por hora", "La sala se reserva por bloques de una hora. Llega 15 minutos antes."], ["R02", "USB propio", "Ven con tu música organizada en USB FAT32 o exFAT. Tenemos Rekordbox disponible."], ["R03", "Cancelación", "Avisa con al menos 4 horas de anticipación. Sin reembolso — puedes reprogramar dentro de los 7 días siguientes."], ["R04", "Hasta 2 personas", "1 persona: Bs 100/h. 2 personas participando (B2B, práctica conjunta): Bs 150/h. Si la segunda persona solo acompaña sin tocar, no hay cargo extra."], ["R05", "Audífonos", "Contamos con un set básico de audífonos. Para mejor experiencia, trae los tuyos."], ["R06", "Pago", "Solo QR o transferencia. No aceptamos efectivo; el pago confirma el slot y cierra la reserva."], ]; return (
{rules.map(([num, title, desc], i) => (
{num} {title}

{desc}

))}
); } // ============================================================ // FAQ // ============================================================ function FAQItem({ q, a, defaultOpen = false }) { const [open, setOpen] = React.useState(defaultOpen); return (
setOpen(!open)}>
{q} +
{a}
); } function FAQ() { return (
); } // ============================================================ // CTA FINAL // ============================================================ function CTAFinal() { return (
LISTO PARA PRACTICAR

¿Listo para
practicar?

Elige tu servicio, reserva en el calendario, paga por WhatsApp. QR o transferencia. Cupos limitados.

{ e.preventDefault(); window.dispatchEvent(new Event("openBooking")); }} className="btn btn-signal btn-lg" > Solicitar reserva
CONFIRMACIÓN EN MENOS DE 24H · SIN PAGO POR TARJETA · QR VÍA WHATSAPP
); } // ============================================================ // FOOTER // ============================================================ function Footer() { return ( ); } Object.assign(window, { Galeria, Reglas, FAQ, CTAFinal, Footer });