/* Pop-up de entrada — invita a inscribirse y lleva al formulario (#sumate). Aparece apenas se entra, UNA sola vez por sesión (sessionStorage). Cerrable por la X, clic afuera, Esc y "Ahora no". No contiene el formulario: reutiliza el de abajo, así se conserva su analytics (form_view / form_start / submit...). */ const { useState: usePopState, useEffect: usePopEffect, useRef: usePopRef } = React; const POPUP_KEY = "bb_entry_popup_dismissed"; function EntryPopup() { const [open, setOpen] = usePopState(false); const closeRef = usePopRef(null); const reduce = typeof window !== "undefined" && window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches; // Mostrar al entrar, salvo que ya se haya cerrado en esta sesión. usePopEffect(function () { let dismissed = false; try { dismissed = sessionStorage.getItem(POPUP_KEY) === "1"; } catch (e) { /* storage bloqueado → mostrar igual */ } if (dismissed) return; setOpen(true); bbTrack("popup_view", { popup: "entry" }); }, []); const dismiss = function (how) { try { sessionStorage.setItem(POPUP_KEY, "1"); } catch (e) { /* no-op */ } document.body.style.overflow = ""; // liberar el scroll ya (síncrono) para que el salto a #sumate funcione setOpen(false); bbTrack("popup_close", { popup: "entry", method: how }); }; // Mientras está abierto: bloquear scroll de fondo, Esc para cerrar, foco en la X. usePopEffect(function () { if (!open) return; const prev = document.body.style.overflow; document.body.style.overflow = "hidden"; const onKey = function (e) { if (e.key === "Escape") dismiss("esc"); }; document.addEventListener("keydown", onKey); if (closeRef.current) closeRef.current.focus(); return function () { document.body.style.overflow = prev; document.removeEventListener("keydown", onKey); }; }, [open]); if (!open) return null; const goToForm = function (e) { e.preventDefault(); bbTrack("popup_cta_click", { popup: "entry" }); dismiss("cta"); const target = document.getElementById("sumate"); // "instant" (no "auto"): "auto" hereda el scroll-behavior:smooth del . if (target) setTimeout(function () { target.scrollIntoView({ behavior: reduce ? "instant" : "smooth", block: "start" }); }, 30); }; return (
{/* card con anillo degradé de marca */}

Viví Latin Music Week desde adentro

10 días en Miami con acceso real a la industria musical. Dejá tus datos y nuestro equipo te contacta. Cupos limitados.

); } window.EntryPopup = EntryPopup;