Files
lambada-fiesta-live/src/data/event-data.ts
T
Antoni Nuñez Romeu 1d63506722
CI/CD Deploy / test (push) Successful in 1m7s
CI/CD Deploy / build-push (push) Successful in 1m36s
CI/CD Deploy / deploy (push) Successful in 24s
Event finished
2026-09-09 08:00:49 +02:00

541 lines
15 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";
import milu from "@/assets/staff/milu.jpg";
import safira from "@/assets/staff/safira.jpg";
import brazromi from "@/assets/staff/braz_romi.jpg";
import emanoel from "@/assets/staff/emanoel.jpg";
import didipatri from "@/assets/staff/didipatri.jpg";
import djhique from "@/assets/staff/djhique.jpg";
import djgg from "@/assets/staff/djgg.jpg";
import djgalzo from "@/assets/staff/djgalzo.jpg";
import aiysha from "@/assets/staff/aiysha.jpg";
import djgui from "@/assets/staff/djgui.jpg";
import rdelano from "@/assets/staff/rdelano.jpg";
import zuluvane from "@/assets/staff/zuluvanesa.jpg";
import patriciac from "@/assets/staff/patriciac.jpg";
import wellington from "@/assets/staff/wellington.jpg";
import xavilau from "@/assets/staff/xavilau.jpg";
import pamela from "@/assets/staff/pamela.jpg";
import papagaio from "@/assets/staff/papagaio.jpg";
import jade from "@/assets/staff/jade.jpg";
import juninho from "@/assets/staff/juninho.jpg";
import rafael from "@/assets/staff/rafael.jpg";
import rodrigo from "@/assets/staff/rodrigo.jpg";
import jessica from "@/assets/staff/jessica.jpg";
import cibele from "@/assets/staff/cibele.jpg";
import giovanni from "@/assets/staff/giovanni.jpg";
import gal1 from "@/assets/gallery/gal1.jpg";
import gal2 from "@/assets/gallery/gal2.jpg";
import gal3 from "@/assets/gallery/gal3.jpg";
import gal4 from "@/assets/gallery/gal4.jpg";
import gal5 from "@/assets/gallery/gal5.jpg";
import gal6 from "@/assets/gallery/gal6.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: "Hotel Don Angel",
venueAddress: "Carrer del Pla de la Torre, 14, 08398 Santa Susanna, Barcelona, Spain",
/** Google Maps embed URL — reemplazar con la URL real */
mapEmbedUrl: "https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2982.0132199519758!2d2.718142676474322!3d41.63384568067116!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x12bb3e942c5ac469%3A0x9153afdd8d15d0c1!2sHotel%20Don%20Angel!5e0!3m2!1ses!2sus!4v1777971058774!5m2!1ses!2sus",
};
// ---- 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: "Teacher" as const,
/** Reemplazar con ruta a foto real */
image: pablolena,
},
{
id: "2",
name: "Ariel & Yasmin",
role: "Teacher" as const,
image: arielyasmin,
},
{
id: "3",
name: "Hila & Leo",
role: "Teacher" as const,
image: hilaleo,
},
{
id: "4",
name: "Matheus & Lydia",
role: "Teacher" as const,
image: matheuslydia,
},
{
id: "5",
name: "Omer & Adva",
role: "Teacher" as const,
image: omeradva,
},
{
id: "6",
name: "DJ Biel",
role: "DJ" as const,
image: djbiel,
},
{
id: "7",
name: "DJ WinX",
role: "DJ" as const,
image: djwinx,
},
{
id: "8",
name: "DJ Rafael",
role: "DJ" as const,
image: rafael,
},
{
id: "9",
name: "Leticia & Alex",
role: "Teacher" as const,
image: letialex,
},
{
id: "10",
name: "Jade Rodrigues",
role: "Teacher" as const,
image: jade,
},
{
id: "11",
name: "Milu",
role: "Teacher" as const,
image: milu,
},
{
id: "12",
name: "Safira",
role: "Teacher" as const,
image: safira,
},
{
id: "13",
name: "Braz & Romina",
role: "Teacher" as const,
image: brazromi,
},
{
id: "14",
name: "Emanoel",
role: "Teacher" as const,
image: emanoel,
},
{
id: "15",
name: "Didi & Patricia",
role: "Teacher" as const,
image: didipatri,
},
{ id: "16",
name: "DJ Hique",
role: "DJ" as const,
image: djhique,
},
{
id: "17",
name: "DJ GG",
role: "DJ" as const,
image: djgg,
},
{
id: "18",
name: "DJ Galzo",
role: "DJ" as const,
image: djgalzo,
},
{
id: "19",
name: "Aiysha",
role: "Specials" as const,
image: aiysha,
},
{
id: "20",
name: "DJ Gui",
role: "DJ" as const,
image: djgui,
},
{
id: "21",
name: "Rodrigo Delano",
role: "Teacher" as const,
image: rdelano,
},
{
id: "22",
name: "Zulu & Vanesa",
role: "Specials" as const,
image: zuluvane,
},
{
id: "23",
name: "Patricia Cruz",
role: "Specials" as const,
image: patriciac,
},
{
id: "24",
name: "Wellington",
role: "Specials" as const,
image: wellington,
},
{
id: "25",
name: "Xavi & Laura",
role: "Teacher" as const,
image: xavilau,
},
{
id: "26",
name: "Pamela",
role: "Specials" as const,
image: pamela,
},
{
id: "27",
name: "Papagaio",
role: "Specials" as const,
image: papagaio,
},
{
id: "28",
name: "Juninho",
role: "Specials" as const,
image: juninho,
},
{
id: "29",
name: "Rodrigo",
role: "Specials" as const,
image: rodrigo,
},
{
id: "30",
name: "Jéssica Serrano",
role: "Specials" as const,
image: jessica,
},
{
id: "31",
name: "Cibele",
role: "Specials" as const,
image: cibele,
},
{
id: "32",
name: "Giovanni",
role: "Specials" as const,
image: giovanni,
}
];
// ---- PROGRAMA DEL EVENTO ----
export const SCHEDULE = [
{
day: "Viernes 4 de Septiembre",
events: [
{ time: "16:00 – 17:00", title: "Check-in / Registro", type: "checkin" as const },
{ time: "17:00 – 18:00", title: "Followers & Style by Jade & Milu", type: "workshop" as const },
{ time: "18:00 – 19:00", title: "La Ciencia de los Giros / The Science of Spins by Rodrigo Delano", type: "workshop" as const },
{ time: "19:30 – 21:30", title: "Cena / Dinner", type: "break" as const },
{
time: "23:00 – 03:00",
title: "Social Dance + DJs",
type: "social" as const,
details: ["Teacher's Presentation", "Special guest: Aiysha Singer", "Competition: 2 Full Pass for MARAU FESTIVAL & social dance"],
},
],
},
{
day: "Sábado 5 de Septiembre",
events: [
{ time: "08:00 – 10:00", title: "Desayuno / Breakfast", type: "break" as const },
{ time: "11:00 – 12:00", title: "", type: "workshop" as const, parallel: [
{ time: "11:00 – 12:00", title: "Matheus & Lydia", type: "workshop" as const },
{ time: "11:00 – 12:00", title: "Leticia & Alex", type: "workshop" as const },
]},
{ time: "12:00 – 13:00", title: "[Workshop 4]", type: "workshop" as const, parallel: [
{ time: "12:00 – 13:00", title: "Emanoel & Safira", type: "workshop" as const },
{ time: "12:00 – 13:00", title: "Ariel & Yasmin", type: "workshop" as const },
]
},
{ time: "13:00 – 15:00", title: "Comida / Lunch", type: "break" as const },
{ time: "15:00 – 16:00", title: "[Workshop 5]", type: "workshop" as const, parallel: [
{ time: "15:00 – 16:00", title: "Xavi & Laura", type: "workshop" as const },
{ time: "15:00 – 16:00", title: "Omer & Adva", type: "workshop" as const },
]
},
{ time: "16:00 – 17:00", title: "[Workshop 6]", type: "workshop" as const, parallel: [
{ time: "16:00 – 17:00", title: "Leo & Hila", type: "workshop" as const },
{ time: "16:00 – 17:00", title: "Pablo & Lena", type: "workshop" as const },
]
},
{ time: "17:00 – 18:00", title: "[Workshop 7]", type: "workshop" as const, parallel: [
{ time: "17:00 – 18:00", title: "Braz & Romina", type: "workshop" as const },
{ time: "17:00 – 18:00", title: "Didi & Patricia", type: "workshop" as const },
]
},
{ time: "19:30 – 21:30", title: "Cena / Dinner", type: "break" as const },
{
time: "23:00 – 05:00",
title: "Social Dance + DJs",
type: "social" as const,
details: ["Showtime 1h & social dance"],
},
],
},
{
day: "Domingo 6 de Septiembre",
events: [
{ time: "08:00 – 10:00", title: "Desayuno / Breakfast", type: "break" as const },
{ time: "11:30 – 12:30", title: "International Barcelona Flash Mob 2026. Choreo by: Lautaro & Ari. Teacher: Romina Hidalgo", type: "workshop" as const },
{ time: "12:00 – 14:00", title: "Pool Party", type: "social" as const },
{ time: "13:00 – 15:00", title: "Comida / Lunch", type: "break" as const },
{ time: "16:00 – 20:00", title: "Pool Party", type: "social" as const },
{ time: "19:30 – 21:30", title: "Cena / Dinner", type: "break" as const },
{
time: "23:00 – 05:00",
title: "Social Dance + DJs",
type: "social" as const,
details: ["Competition, 2 Full Pass for CARNALAMBA FESTIVAL by Hila Singer & social dance"],
},
],
},
];
// ---- 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: [
{
nameKey: "info.airportBCNName",
distanceKey: "info.airportBCNDistance",
},
],
howToGet: [
{
method: "Bus",
detailsKey: "info.bus603Details",
link: "https://share.google/gZWgcLkbz4JbNLJ0O",
linkLabelKey: "info.viewInfo",
},
],
};
// ---- INFORMACIÓN EXTRA FESTIVAL ----
export const RECEPTION_INFO = {
openDay: "Viernes",
openTime: "15:00h",
location: "Zouklambada Beach",
};
export const EXTRA_NOTES = {
noFullPassEntryFee: 25,
noFullPassEntryFeeCurrency: "€",
looseClassReserveLocation: "Recepción",
looseClassPrice: 25,
looseClassCurrency: "€",
poolPartyIncludedWith: "Alojamiento en Hotel Don Ángel",
showsNightTime: "01:00h",
fullBoardPeriod: "De la cena del viernes a la comida del lunes",
};
// ---- GALERÍA ----
/**
* Añade URLs o importaciones de imágenes.
* Para importar: import img from "@/assets/gallery/photo1.jpg"
*/
export const GALLERY_IMAGES = [
{ src: gal1, alt: "[Descripción foto 1]" },
{ src: gal2, alt: "[Descripción foto 2]" },
{ src: gal3, alt: "[Descripción foto 3]" },
{ src: gal4, alt: "[Descripción foto 4]" },
{ src: gal5, alt: "[Descripción foto 5]" },
{ src: gal6, alt: "[Descripción foto 6]" },
];
// ---- PAQUETES MIXTOS (Room + Pass) ----
export type RoomType = "individual" | "double" | "suite";
export type PassType = "full" | "party" | "whiteparty";
export const ROOM_TYPES: { id: RoomType }[] = [
{ id: "individual" },
{ id: "double" },
{ id: "suite" },
];
// ---- PRECIOS DINÁMICOS FULL PASS ----
/**
* Calcula el precio del Full Pass según la fecha actual.
* - Hasta 1 de junio: 170€
* - 1 de junio - 1 de septiembre: 190€
* - Después del inicio del evento: 200€ (último precio)
*/
export function getFullPassPrice(): { price: number; isLastPrice: boolean; validUntilKey: string | null } {
const now = new Date();
const julyFirst = new Date("2026-07-15T00:00:00");
const septemberFirst = new Date("2026-09-01T00:00:00");
const eventStart = new Date(EVENT_INFO.date);
if (now < julyFirst) {
return { price: 170, isLastPrice: false, validUntilKey: "validUntilJuly" };
} else if (now < septemberFirst) {
return { price: 190, isLastPrice: false, validUntilKey: "validUntilSeptember" };
} else {
// After event starts
return { price: 200, isLastPrice: true, validUntilKey: null };
}
}
export const MIXED_BOOKING_PACKAGES = [
{ id: "full" as PassType, label: "full", roomPrices: { individual: 100, double: 150, suite: 213 } },
{ id: "party" as PassType, label: "party", roomPrices: { individual: 100, double: 150, suite: 213 } },
{ id: "whiteparty" as PassType, label: "whiteparty", roomPrices: { individual: 0, double: 0, suite: 0 } },
];
// ---- SECCIONES VISIBLES ----
export const SECTIONS = {
about: true,
org: true,
staff: true,
profesores: true,
schedule: false,
booking: false,
mixed_booking: false,
hotel: false,
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]]);