/* global React, CrownMark */ const { useState, useEffect, useRef } = React; // ---------- Process Timeline ---------- const phases = [ { n: "01", title: "ESCUCHAR LA CALLE", sub: "Entender", body: "Vamos al barrio. Hablamos con los niños y jóvenes, las juntas vecinales, los entrenadores. La cancha no se diseña desde un escritorio — se diseña escuchando.", img: "assets/sketch-low.jpeg" }, { n: "02", title: "TRAZAR LA JUGADA", sub: "Estrategia", body: "Definimos qué traer: torneo 3x3, clínica, mural, drop de merch. Cada comuna pide algo distinto y armamos un plan a su medida.", img: "assets/sketch-pose.jpeg" }, { n: "03", title: "PRESENTAR EL REINO", sub: "Solución", body: "Cancha lista, DJ en el parlante, banderas en alto. Diseñamos y llevamos la producción completa para que el evento se sienta digno de un Mundial.", img: "assets/court-mockup.jpeg" }, { n: "04", title: "EN LA CANCHA Y ESCENARIO", sub: "En terreno", body: "Activamos alianzas con marcas, equipos y municipios. Conseguimos balones, indumentaria, premios. Todo lo que necesita una jornada épica.", img: "assets/cap-mockup.jpeg" }, { n: "05", title: "CUIDAR EL LEGADO", sub: "Seguimiento", body: "Seguimos a los jugadores, a los proyectos sociales, a las canchas. El streetball no es un evento — es una comunidad.", img: "assets/squad-sunset.jpeg" }]; const ProcessTimeline = () => { const [active, setActive] = useState(0); const hoverSfx = useRef(null); const playHover = () => { try { if (!hoverSfx.current) { hoverSfx.current = new Audio("assets/pelota.mp3"); hoverSfx.current.volume = 0.55; } const a = hoverSfx.current; a.currentTime = 0; a.play().catch(() => {}); } catch (e) {} }; return (
{/* Faint pattern */}
· El Regreso

EL REGRESO.

No ofrecemos solo un show. Creamos experiencias. El proyecto combina deporte, cultura urbana, música, interacción con el público y exhibiciones de alto impacto, adaptables a colegios, universidades, centros deportivos, plazas, eventos y marcas.

La exhibición considera jugadores, DJ/animador, sistema de sonido, dinámicas participativas, concursos, incentivos y la posibilidad de registro audiovisual — generando una experiencia cercana, entretenida y memorable para la comunidad.

{/* Left: phase nav */}
    {/* Track */}
    {phases.map((p, i) => { const on = i === active; const done = i < active; return (
  1. { playHover(); setActive(i); }} onClick={() => setActive(i)}>
    {p.n}
    Fase {p.n} · {p.sub}

    {p.title}

  2. ); })}
{/* Right: active phase detail */}
{phases.map((p, i) =>
{p.title}
{p.n}
Fase {p.n}

{p.title}

{p.body}

)}
{String(active + 1).padStart(2, "0")} / {String(phases.length).padStart(2, "0")}
·
); }; // ---------- Manifest banner ---------- const Manifest = () =>

DEJA LA PANTALLA.
TOMA EL BALÓN.

Aquí nace otra historia...La tuya.

; // ---------- Testimonials marquee ---------- const testimonials = [ { name: "BABYFACE", role: "Jugador · Reyes de la Calle", quote: "Entreno mientras mi competencia duerme." }, { name: "TAZ", role: "Jugador · Leyenda", quote: "Las personas valiosas no son las que brillan más, sino las que iluminan la vida de quienes aman." }, { name: "THE CREATOR", role: "Jugador · Reyes de la Calle", quote: "El básquet no es solo un deporte, es un juego. Y los juegos están para disfrutarlos. A eso le llamamos Streetball." }, { name: "PABLO COP", role: "Coach · Reyes de la Calle", quote: "Si entrenas te superas" }, { name: "Andrés Cárdenas Underesu", role: "Cineasta · Santiago", quote: "Filmar a este movimiento es filmar un pedazo de Chile que nadie más mira." }, { name: "CRISONE", role: "Jugador · Reyes de la Calle", quote: "1% de talento 99% de trabajo" }, { name: "PRIMATE", role: "Jugador · Reyes de la Calle", quote: "Entrega seguridad a tu equipo; que no te vean cansado" }, { name: "ZENDOH", role: "Jugador · Leyenda", quote: "La vida es ahora, comparte lo bueno" }]; const TestimonialCard = ({ t }) =>
"

{t.quote}

{t.name.split(" ").map((n) => n[0]).slice(0, 2).join("")}
{t.name}
{t.role}
; const Testimonials = () => { const row = [...testimonials, ...testimonials]; return (
· Voces del Reino

LO QUE DICE
LA CANCHA.

{row.map((t, i) => )}
{row.slice().reverse().map((t, i) => )}
); }; // ---------- Drop / Tienda ---------- const drops = [ { name: "POLERA FUNDADORES", line: "Oversize · Since 2003", price: "$24.990", img: "assets/polera-fundadores-v2.png" }, { name: "JOCKEY DESDE 2003", line: "Cuero + Algodón", price: "$18.990", img: "assets/cap-mockup.jpeg" }, { name: "SHORTS REINO", line: "Mesh · Drawstring blanco", price: "$22.990", img: "assets/shorts-camo.jpeg" }, { name: "POLERA ZENDOH", line: "Drop 01 · Edición limitada", price: "$26.990", img: "assets/zendoh-tee-v2.png" }]; const Tienda = () =>
· Tienda Oficial

VESTÍ EL REINO.

Ver tienda completa
{drops.map((d) =>
{d.name}
Drop
{d.name}
{d.line}
{d.price}
)}
; // ---------- Contact + Footer ---------- const ContactCTA = ({ onCTA }) =>
· Únete al Reino

¿LISTO PARA
JUGAR?

Si querés llevar Reyes a tu comuna, sumarte como jugador, auspiciar un torneo o cubrir un evento — escríbenos. Te respondemos en menos de 24 horas.

Canal YouTube
; const Footer = () => ; // ---------- Contact form modal ---------- const LeadModal = ({ open, onClose }) => { const [data, setData] = useState({ goal: "torneo", name: "", email: "", comuna: "", message: "" }); const [sent, setSent] = useState(false); useEffect(() => {if (open) {setSent(false);}}, [open]); useEffect(() => { if (!open) return; const onKey = (e) => {if (e.key === "Escape") onClose();}; window.addEventListener("keydown", onKey); return () => window.removeEventListener("keydown", onKey); }, [open, onClose]); if (!open) return null; const goals = [ { v: "torneo", t: "Traer un torneo a mi comuna" }, { v: "jugar", t: "Sumarme como jugador/a" }, { v: "auspicio", t: "Auspicio / Marca" }, { v: "prensa", t: "Prensa / Cobertura" }]; const goalLabel = goals.find((g) => g.v === data.goal)?.t || "Contacto"; const valid = data.name.trim() && data.email.trim() && data.message.trim(); const handleSubmit = (e) => { e.preventDefault(); if (!valid) return; const subject = `[Reyes de la Calle] ${goalLabel} — ${data.name}`; const body = [ `Motivo: ${goalLabel}`, `Nombre: ${data.name}`, `Email: ${data.email}`, data.comuna ? `Comuna: ${data.comuna}` : null, "", "Mensaje:", data.message]. filter(Boolean).join("\n"); const url = `mailto:contacto@reyesdelacalle.cl?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`; window.location.href = url; setSent(true); }; return (
{if (e.target === e.currentTarget) onClose();}} className="fixed inset-0 z-[200] bg-black/85 backdrop-blur-md flex items-center justify-center p-4 overflow-y-auto" style={{ animation: "fadeIn 0.3s ease" }}> {/* Botón X — fijo al viewport, siempre visible */}
{!sent ?
· Únete al Reino

CUÉNTANOS QUÉ NECESITAS.

Te respondemos directo a tu mail en menos de 24 horas.

{goals.map((g) => )}
setData({ ...data, name: e.target.value })} placeholder="Tu nombre" className="w-full bg-transparent border-b-2 border-white/20 focus:border-[#FF6D0D] outline-none py-2 text-white placeholder-white/30" style={{ fontFamily: "Inter, sans-serif" }} />
setData({ ...data, email: e.target.value })} placeholder="tu@email.cl" className="w-full bg-transparent border-b-2 border-white/20 focus:border-[#FF6D0D] outline-none py-2 text-white placeholder-white/30" style={{ fontFamily: "Inter, sans-serif" }} />
setData({ ...data, comuna: e.target.value })} placeholder="La Pintana, Quilicura..." className="w-full bg-transparent border-b-2 border-white/20 focus:border-[#FF6D0D] outline-none py-2 text-white placeholder-white/30" style={{ fontFamily: "Inter, sans-serif" }} />