Files
lambada-fiesta-live/src/data/event-data.ts
Ichitux 823ca68119
All checks were successful
Deploy NPM app / Deploy NPM (push) Successful in 1m14s
Newer section and modular view
2026-04-14 15:48:44 +02:00

331 lines
9.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* ===========================================
* DATOS DEL EVENTO — ZoukLambadaBCN
* ===========================================
*
* Este archivo centraliza datos "no traducibles" del evento:
* fechas, URLs, embeds, imágenes y arrays estructurados.
*
* El texto visible (títulos, descripciones, labels) vive en:
* `src/locales/*.json` y se consume vía i18n.
*
* NOTA: Las imágenes deben colocarse en src/assets/ e importarse.
*/
import arielyasmin from "@/assets/staff/arielyasmin.jpg";
import hilaleo from "@/assets/staff/hilaleo.jpg";
import matheuslydia from "@/assets/staff/matheuslydia.jpg";
import omeradva from "@/assets/staff/omeradva.jpg";
import pablolena from "@/assets/staff/pablolena.jpg";
import djbiel from "@/assets/staff/djbiel.jpg";
import djwinx from "@/assets/staff/djwinx.jpg";
import djklebynho from "@/assets/staff/djklebynho.jpg";
import letialex from "@/assets/staff/letialex.jpg";
import djcathie from "@/assets/staff/djcathie.jpg";
// ---- INFORMACIÓN GENERAL DEL EVENTO ----
export const EVENT_INFO = {
/** Fecha del evento — formato ISO para el countdown */
date: "2026-09-04T12:00:00",
venue: "[Nombre del Venue]",
venueAddress: "[Dirección del venue, Barcelona]",
/** Google Maps embed URL — reemplazar con la URL real */
mapEmbedUrl: "https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2993.5!2d2.1734!3d41.3851!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x0%3A0x0!2zNDHCsDIzJzA2LjQiTiAywrAxMCcyNC4yIkU!5e0!3m2!1ses!2ses!4v1234567890",
};
// ---- WEBHOOK N8N ----
/**
* CONFIGURACIÓN DEL WEBHOOK:
*
* 1. En n8n, crea un nuevo workflow con un nodo "Webhook"
* 2. Configura el webhook como POST
* 3. Copia la URL generada y pégala aquí abajo
* 4. En n8n, conecta el webhook a tu destino (Google Sheets, Airtable, etc.)
*
* Ejemplo de payload que se envía:
* {
* "name": "Juan García",
* "email": "juan@example.com",
* "seats": "2",
* "country": "España",
* "comment": "Primera vez en el festival"
* }
*/
export const WEBHOOK_URL = "https://n8n.hacecalor.net/webhook/event-reservation";
/**
* CLAVE DE AUTENTICACIÓN:
*
* Si activas "Header Auth" en n8n, asegúrate de que el nombre del header
* sea "X-Webhook-Secret" y que este valor coincida con el que pongas allí.
*/
export const WEBHOOK_SECRET = "oWkS4cAgj0LVgIbnO3cGKTePPLnRAIAa5NTvXahx5z0=";
export const ABOUT_ORG = {
socials: {
instagram: "https://instagram.com/zouklambadabcn",
facebook: "https://facebook.com/zouklambadabcn",
youtube: "https://youtube.com/@zouklambadabcn",
},
};
// ---- STAFF DEL EVENTO ----
/**
* Para añadir un nuevo miembro del staff,
* simplemente agrega un nuevo objeto al array.
*/
export const STAFF = [
{
id: "1",
name: "[Pablo & Lena]",
role: "Instructor" as const,
description: "[Breve biografía del instructor]",
/** Reemplazar con ruta a foto real */
image: pablolena,
socials: {
instagram: "",
},
},
{
id: "2",
name: "[Ariel & Yasmin]",
role: "Instructor" as const,
description: "[Breve biografía del instructor]",
image: arielyasmin,
socials: {
instagram: "",
},
},
{
id: "3",
name: "[Hila & Leo]",
role: "Instructor" as const,
description: "[Breve biografía del instructor]",
image: hilaleo,
socials: {
instagram: "",
},
},
{
id: "4",
name: "[Matheus & Lydia]",
role: "Instructor" as const,
description: "[Breve biografía del instructor]",
image: matheuslydia,
socials: {
instagram: "",
},
},
{
id: "5",
name: "[Omer & Adva]",
role: "Instructor" as const,
description: "[Breve biografía del instructor]",
image: omeradva,
socials: {
instagram: "",
},
},
{
id: "6",
name: "[DJ Biel]",
role: "DJ" as const,
description: "[Breve biografía del DJ]",
image: djbiel,
socials: {
instagram: "",
soundcloud: "",
},
},
{
id: "7",
name: "[DJ WinX]",
role: "DJ" as const,
description: "[Breve biografía del DJ]",
image: djwinx,
socials: {
instagram: "",
soundcloud: "",
},
},
{
id: "8",
name: "[DJ Klebynho]",
role: "DJ" as const,
description: "[Breve biografía del DJ]",
image: djklebynho,
socials: {
instagram: "",
soundcloud: "",
},
},
{
id: "9",
name: "[Leticia & Alex]",
role: "Instructor" as const,
description: "[Breve biografía del instructor]",
image: letialex,
socials: {
instagram: "",
},
},
{
id: "10",
name: "[DJ Cathie]",
role: "DJ" as const,
description: "[Breve biografía del DJ]",
image: djcathie,
socials: {
instagram: "",
soundcloud: "",
},
},
];
// ---- PROGRAMA DEL EVENTO ----
export const SCHEDULE = [
{
day: "Viernes 20 Junio",
events: [
{ time: "18:00 19:30", title: "[Workshop 1]", type: "workshop" as const },
{ time: "19:30 20:00", title: "Pausa", type: "break" as const },
{ time: "20:00 21:30", title: "[Workshop 2]", type: "workshop" as const },
{ time: "22:00 03:00", title: "Social Dance + DJ Set", type: "social" as const },
],
},
{
day: "Sábado 21 Junio",
events: [
{ time: "12:00 13:30", title: "[Workshop 3]", type: "workshop" as const },
{ time: "14:00 15:30", title: "[Workshop 4]", type: "workshop" as const },
{ time: "16:00 17:30", title: "[Workshop 5]", type: "workshop" as const },
{ time: "21:00 22:00", title: "Shows en Vivo", type: "show" as const },
{ time: "22:00 04:00", title: "Social Dance + DJ Sets", type: "social" as const },
],
},
{
day: "Domingo 22 Junio",
events: [
{ time: "12:00 13:30", title: "[Workshop 6]", type: "workshop" as const },
{ time: "14:00 15:30", title: "[Workshop 7]", type: "workshop" as const },
{ time: "17:00 22:00", title: "Farewell Party", type: "social" as const },
],
},
];
// ---- HABITACIONES DE HOTEL ----
/**
* Para añadir habitaciones, agrega objetos al array.
* El botón "Reservar" abre el link en nueva pestaña.
*/
export const HOTEL_ROOMS = [
{
id: "1",
name: "[Habitación Individual]",
price: "[XX€/noche]",
description: "[Descripción breve de la habitación]",
/** Reemplazar con URL de imagen real */
image: "",
link: "https://hotel-example.com/booking",
},
{
id: "2",
name: "[Habitación Doble]",
price: "[XX€/noche]",
description: "[Descripción breve de la habitación]",
image: "",
link: "https://hotel-example.com/booking",
},
{
id: "3",
name: "[Suite]",
price: "[XX€/noche]",
description: "[Descripción breve de la habitación]",
image: "",
link: "https://hotel-example.com/booking",
},
];
// ---- INFORMACIÓN PRÁCTICA ----
export const PRACTICAL_INFO = {
airports: [
{ name: "Aeropuerto de Barcelona-El Prat (BCN)", distance: "~15 km del venue" },
{ name: "Aeropuerto de Girona (GRO)", distance: "~100 km del venue" },
{ name: "Aeropuerto de Reus (REU)", distance: "~110 km del venue" },
],
howToGet: [
{ method: "Metro", details: "[Línea y parada más cercana]" },
{ method: "Bus", details: "[Líneas de bus cercanas]" },
{ method: "Taxi/Uber", details: "Disponible desde cualquier punto de Barcelona" },
],
};
// ---- GALERÍA ----
/**
* Añade URLs o importaciones de imágenes.
* Para importar: import img from "@/assets/gallery/photo1.jpg"
*/
export const GALLERY_IMAGES = [
{ src: "", alt: "[Descripción foto 1]" },
{ src: "", alt: "[Descripción foto 2]" },
{ src: "", alt: "[Descripción foto 3]" },
{ src: "", alt: "[Descripción foto 4]" },
{ src: "", alt: "[Descripción foto 5]" },
{ src: "", alt: "[Descripción foto 6]" },
];
// ---- PAQUETES MIXTOS (Room + Pass) ----
export type RoomType = "individual" | "double" | "suite";
export type PassType = "full" | "party" | "single";
export const ROOM_TYPES: { id: RoomType }[] = [
{ id: "individual" },
{ id: "double" },
{ id: "suite" },
];
export const MIXED_BOOKING_PACKAGES = [
{ id: "full" as PassType, label: "full", roomPrices: { individual: 0, double: 0, suite: 0 } },
{ id: "party" as PassType, label: "party", roomPrices: { individual: 0, double: 0, suite: 0 } },
{ id: "single" as PassType, label: "single", roomPrices: { individual: 0, double: 0, suite: 0 } },
];
// ---- SECCIONES VISIBLES ----
export const SECTIONS = {
about: true,
org: true,
staff: true,
profesores: true,
schedule: true,
booking: false,
mixed_booking: true,
hotel: true,
practical: true,
gallery: true,
};
// ---- NAVEGACIÓN ----
const HREF_TO_SECTION: Record<string, keyof typeof SECTIONS> = {
"#about": "about",
"#staff": "staff",
"#schedule": "schedule",
"#booking": "booking",
"#mixed-booking": "mixed_booking",
"#hotel": "hotel",
"#info": "practical",
"#gallery": "gallery",
};
export const NAV_LINKS = (
[
{ href: "#about" },
{ href: "#staff" },
{ href: "#schedule" },
{ href: "#booking" },
{ href: "#mixed-booking" },
{ href: "#hotel" },
{ href: "#info" },
{ href: "#gallery" },
] as const
).filter((link) => SECTIONS[HREF_TO_SECTION[link.href]]);