// ============================================================ // Page components: Agenda, Patrocinadores, Prensa // ============================================================ const { useState: useStateP, useEffect: useEffectP, useRef: useRefP } = React; // ---------- Shared PageHero ---------- function PageHero({ eyebrow, title, italic, sub, meta }) { const innerRef = useRefP(null); useEffectP(() => { let raf = 0; raf = requestAnimationFrame(() => { if (innerRef.current) innerRef.current.classList.add("is-loaded"); }); return () => cancelAnimationFrame(raf); }, []); const renderMaskedWords = (text) => ( text.split(" ").map((word, i) => ( {i > 0 ? " " : null} {word} )) ); return ( {eyebrow} {renderMaskedWords(title)}{" "} {renderMaskedWords(italic)} {sub && {sub}} {meta && ( {meta.map((m, i) => ( {m.label} {m.val} ))} )} ); } // ---------- Agenda ---------- function AgendaPage() { const [track, setTrack] = useStateP("todo"); const sessions = [ { time: "08:30", end: "09:00", type: "registro", title: "Registro y café de bienvenida", speaker: "—", room: "Hall principal", track: "todo" }, { time: "09:00", end: "09:30", type: "apertura", title: "Apertura oficial del Foro Valor Emprendedor 2026", speaker: "Comité organizador", room: "Auditorio", track: "todo" }, { time: "09:30", end: "10:30", type: "keynote", title: "El emprendedor del futuro: visión y resiliencia", speaker: "Marcos Urarte", role: "Consultor estratégico internacional", room: "Auditorio", track: "inspiracion" }, { time: "10:30", end: "11:15", type: "keynote", title: "Cómo escalar un negocio en tiempos de incertidumbre", speaker: "Víctor Küppers", role: "Conferenciante y autor", room: "Auditorio", track: "negocio" }, { time: "11:15", end: "11:45", type: "break", title: "Networking coffee break", speaker: "—", room: "Zona expo", track: "todo" }, { time: "11:45", end: "12:45", type: "panel", title: "Galicia emprende: mesa redonda con founders locales", speaker: "4 fundadores gallegos", role: "Panel moderado", room: "Auditorio", track: "negocio" }, { time: "12:45", end: "13:30", type: "keynote", title: "Marca personal y ventas: cómo vender sin vender", speaker: "Isra Bravo", role: "Copywriter y formador", room: "Auditorio", track: "marketing" }, { time: "13:30", end: "15:00", type: "break", title: "Comida networking", speaker: "—", room: "Terraza Mar de Vigo", track: "todo" }, { time: "15:00", end: "16:00", type: "keynote", title: "De cero a referente: construir una empresa con propósito", speaker: "Pau García-Milà", role: "Emprendedor tecnológico", room: "Auditorio", track: "inspiracion" }, { time: "16:00", end: "16:45", type: "workshop", title: "Workshop: Finanzas claras para founders", speaker: "Gregorio Hernández", role: "Profesor de finanzas UNED", room: "Sala Atlántico", track: "negocio" }, { time: "16:00", end: "16:45", type: "workshop", title: "Workshop: Growth marketing con IA", speaker: "Ronny Bendavid", role: "Growth advisor", room: "Sala Rías Baixas", track: "marketing" }, { time: "16:45", end: "17:15", type: "break", title: "Break + zona inversores", speaker: "—", room: "Zona expo", track: "todo" }, { time: "17:15", end: "18:15", type: "keynote", title: "Liderazgo humano: equipos que crean futuro", speaker: "Silvia Leal", role: "Experta en transformación", room: "Auditorio", track: "inspiracion" }, { time: "18:15", end: "19:00", type: "panel", title: "Inversión en Galicia: fondos que apuestan por el norte", speaker: "Panel de inversores", role: "Moderado por José Luis Casal", room: "Auditorio", track: "negocio" }, { time: "19:00", end: "19:45", type: "keynote", title: "Cierre magistral: el valor de emprender hoy", speaker: "Luis Galindo", role: "Conferenciante y coach", room: "Auditorio", track: "inspiracion" }, { time: "19:45", end: "20:30", type: "cierre", title: "Cierre + cóctel de clausura", speaker: "—", room: "Terraza", track: "todo" }, ]; const filtered = track === "todo" ? sessions : sessions.filter(s => s.track === track || s.track === "todo"); const tracks = [ { k: "todo", l: "Todo el programa" }, { k: "inspiracion", l: "Inspiración" }, { k: "negocio", l: "Negocio" }, { k: "marketing", l: "Marketing & Ventas" }, ]; const typeLabel = { registro: "Registro", apertura: "Apertura", keynote: "Ponencia", panel: "Mesa redonda", workshop: "Workshop", break: "Break", cierre: "Cierre" }; return ( {tracks.map(t => ( setTrack(t.k)} data-cursor="Filtrar"> {t.l} ))} {filtered.map((s, i) => ( {s.time} {s.end} {typeLabel[s.type]} {s.title} {s.role && {s.role}} {s.speaker} {s.room} ))} // El programa puede sufrir modificaciones. Se notificará a los asistentes por email. ); } // ---------- Patrocinadores ---------- function PatrociniosPage() { const tiers = [ { name: "Platinum", price: "Desde 15.000€", color: "#7ce565", highlights: [ "Logotipo destacado en escenario principal", "2 entradas VIP al evento", "Zona promocional premium", "Presencia en todas las comunicaciones", "Branding en acreditaciones de asistentes", "Mención en apertura y cierre del foro", "Vídeo corporativo en pantalla principal", "Material en welcome pack", ], plazas: "2 plazas" }, { name: "Oro", price: "Desde 8.000€", color: "#00b27b", highlights: [ "Logotipo en escenario", "4 entradas PREMIUM al evento", "Zona promocional estándar", "Presencia en web y redes", "Mención en una sesión", "Material en welcome pack", ], plazas: "4 plazas" }, { name: "Silver", price: "Desde 3.500€", color: "#0ee2a6", highlights: [ "Logotipo en pantalla entre sesiones", "5 entradas básicas al evento", "Mesa expositora en zona networking", "Presencia en web", "Material en welcome pack", ], plazas: "8 plazas" }, { name: "Colaborador", price: "Desde 1.000€", color: "#d6d669", highlights: [ "Logotipo en web de patrocinadores", "2 entradas básicas al evento", "Material en welcome pack", ], plazas: "Ilimitadas" }, ]; const current = [ { name: "Xunta de Galicia", tier: "Institucional" }, { name: "Ayto. de Vigo", tier: "Institucional" }, { name: "Abanca", tier: "Platinum" }, { name: "Zona Franca", tier: "Platinum" }, { name: "Gadisa", tier: "Gold" }, { name: "Stellantis Vigo", tier: "Gold" }, { name: "Inditex", tier: "Gold" }, { name: "R Cable", tier: "Silver" }, { name: "Congalsa", tier: "Silver" }, { name: "CZFV", tier: "Silver" }, { name: "AJE Galicia", tier: "Colaborador" }, { name: "Confederación Empresarios", tier: "Colaborador" }, ]; return ( Modalidades de patrocinio Cuatro formatos para formar parte del foro. {tiers.map((t, i) => ( {t.name} {t.plazas} {t.price} {t.highlights.map((h, j) => ( {h} ))} Solicitar dossier ))} Ya confirmados · Edición 2026 Nos acompañan grandes marcas. {current.map((c, i) => ( // logo {c.name} {c.name} {c.tier} ))} Tu marca, ¿la siguiente? Solicitar dossier completo {CONTACT_EMAIL} ); } // ---------- Prensa ---------- function PrensaPage() { const [form, setForm] = useStateP({ nombre: "", medio: "", email: "", telefono: "", acreditaciones: "1", motivacion: "" }); const [sent, setSent] = useStateP(false); const [sending, setSending] = useStateP(false); const [sendError, setSendError] = useStateP(""); const update = (k, v) => setForm({ ...form, [k]: v }); const emailValid = /\S+@\S+\.\S+/.test(form.email); const canSend = form.nombre && form.medio && emailValid && form.motivacion.length > 4; const submit = async (e) => { e.preventDefault(); if (!canSend) return; setSending(true); setSendError(""); try { await submitInboxForm({ formType: "acreditacion-prensa", nombre: form.nombre, medio: form.medio, email: form.email, telefono: form.telefono, acreditaciones: form.acreditaciones, motivacion: form.motivacion, origen: window.location.href, }); setSent(true); } catch (error) { setSendError(error.message || "No se pudo enviar la acreditación."); } finally { setSending(false); } }; const downloads = [ { name: "Logotipo color (PNG)", sub: "3 MB PNG 3000px", href: "assets/logo-color.png" }, { name: "Logotipo blanco (PNG)", sub: "1.5 MB PNG 3000px", href: "assets/logo-blanco.png" }, { name: "Logotipo negro (PNG)", sub: "1.5 MB PNG 3000px", href: "assets/logo-negro.png" }, { name: "Manual de marca (PDF)", sub: "Próximamente", href: "#" }, { name: "Paleta de colores (ASE)", sub: "Próximamente", href: "#" }, { name: "Dossier de prensa 2026", sub: "Próximamente", href: "#" }, ]; const palette = [ { hex: "#7ce565", name: "Lima", role: "Principal" }, { hex: "#00b27b", name: "Medio", role: "Principal" }, { hex: "#072b1f", name: "Oscuro", role: "Principal" }, { hex: "#0ee2a6", name: "Menta", role: "Secundario" }, { hex: "#d6f2e8", name: "Suave", role: "Secundario" }, { hex: "#d6d669", name: "Oliva", role: "Secundario" }, { hex: "#f9f4e5", name: "Crema", role: "Secundario" }, ]; return ( Acreditación de prensa Solicita tu acreditación por correo. Rellena el formulario con los datos del medio. Revisamos cada solicitud en las 48 h siguientes y te enviamos la confirmación junto con el kit de prensa completo. Contacto prensa {CONTACT_EMAIL} {CONTACT_PHONE_DISPLAY} Plazo Hasta 19 sept 2026 {!sent ? ( Nombre y apellidos update("nombre", e.target.value)} placeholder="Ana Rodríguez" /> Medio update("medio", e.target.value)} placeholder="La Voz de Galicia" /> Email profesional update("email", e.target.value)} placeholder="ana@medio.com" /> Teléfono update("telefono", e.target.value)} placeholder="+34 611 941 368" /> Acreditaciones solicitadas update("acreditaciones", e.target.value)}> 1 periodista 2 personas 3 personas (reportaje + cámara) 4 o más ¿Qué tipo de cobertura tienes previsto? update("motivacion", e.target.value)} placeholder="Reportaje, entrevistas, emisión en directo…" /> Acepto la política de privacidad y el tratamiento de mis datos para gestionar la acreditación. Solicitar acreditación {sendError ? {sendError} : null} ) : ( ¡Solicitud recibida! Hemos registrado tu solicitud de prensa y la organización ya la tiene para revisarla. Escribir por email Abrir WhatsApp )} Descargas Logotipos y materiales de marca. {downloads.map((d, i) => ( {d.name} {d.sub} ))} Identidad visual Paleta de colores oficial. {palette.map((p, i) => ( {p.name} {p.hex} {p.role} ))} ); } Object.assign(window, { PageHero, AgendaPage, PatrociniosPage, PrensaPage });
{sub}
{s.role}
{sendError}
Hemos registrado tu solicitud de prensa y la organización ya la tiene para revisarla.