Add new picture & text modifications with prices
All checks were successful
Deploy NPM app / Deploy NPM (push) Successful in 1m10s

This commit is contained in:
Ichitux
2026-05-30 13:03:38 +02:00
parent 35166529fa
commit d466276e91
5 changed files with 37 additions and 88 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

View File

@@ -111,10 +111,15 @@ const MixedBookingSection = () => {
<div className="px-6 pt-6 pb-4 text-center bg-card"> <div className="px-6 pt-6 pb-4 text-center bg-card">
<p className="text-4xl md:text-5xl font-bold text-primary"> <p className="text-4xl md:text-5xl font-bold text-primary">
{price > 0 ? `${price}` : t("mixedBooking.priceTBD")} {basePrice > 0 ? `${basePrice}` : t("mixedBooking.priceTBD")}
{basePrice > 0 && (
<span className="text-lg font-medium text-muted-foreground ml-1">
{pkg.id === "full" ? t("mixedBooking.perPerson") : t("mixedBooking.perParty")}
</span>
)}
</p> </p>
<p className="text-sm font-medium text-foreground mt-2"> <p className="text-sm font-medium text-foreground mt-2">
{t(`mixedBooking.passTypes.${pkg.id}`)}: {basePrice} {pkg.id === "full" ? t("mixedBooking.perPerson") : t("mixedBooking.perParty")} {t(`mixedBooking.passTypes.${pkg.id}`)} {t("mixedBooking.totalPrice")}: {price > 0 ? `${price}` : t("mixedBooking.priceTBD")}
</p> </p>
{showNonHotelNote && ( {showNonHotelNote && (
<p className="text-xs text-red-600 font-medium mt-2"> <p className="text-xs text-red-600 font-medium mt-2">

View File

@@ -26,6 +26,7 @@ import safira from "@/assets/staff/safira.jpg";
import brazromi from "@/assets/staff/braz_romi.jpg"; import brazromi from "@/assets/staff/braz_romi.jpg";
import emanoel from "@/assets/staff/emanoel.jpg"; import emanoel from "@/assets/staff/emanoel.jpg";
import didipatri from "@/assets/staff/didipatri.jpg"; import didipatri from "@/assets/staff/didipatri.jpg";
import djhique from "@/assets/staff/djhique.jpg";
import gal1 from "@/assets/gallery/gal1.jpg"; import gal1 from "@/assets/gallery/gal1.jpg";
import gal2 from "@/assets/gallery/gal2.jpg"; import gal2 from "@/assets/gallery/gal2.jpg";
@@ -91,158 +92,99 @@ export const ABOUT_ORG = {
export const STAFF = [ export const STAFF = [
{ {
id: "1", id: "1",
name: "[Pablo & Lena]", name: "Pablo & Lena",
role: "Teacher" as const, role: "Teacher" as const,
description: "[Breve biografía del profesor]",
/** Reemplazar con ruta a foto real */ /** Reemplazar con ruta a foto real */
image: pablolena, image: pablolena,
socials: {
instagram: "",
},
}, },
{ {
id: "2", id: "2",
name: "[Ariel & Yasmin]", name: "Ariel & Yasmin",
role: "Teacher" as const, role: "Teacher" as const,
description: "[Breve biografía del profesor]",
image: arielyasmin, image: arielyasmin,
socials: {
instagram: "",
},
}, },
{ {
id: "3", id: "3",
name: "[Hila & Leo]", name: "Hila & Leo",
role: "Teacher" as const, role: "Teacher" as const,
description: "[Breve biografía del profesor]",
image: hilaleo, image: hilaleo,
socials: {
instagram: "",
},
}, },
{ {
id: "4", id: "4",
name: "[Matheus & Lydia]", name: "Matheus & Lydia",
role: "Teacher" as const, role: "Teacher" as const,
description: "[Breve biografía del profesor]",
image: matheuslydia, image: matheuslydia,
socials: {
instagram: "",
},
}, },
{ {
id: "5", id: "5",
name: "[Omer & Adva]", name: "Omer & Adva",
role: "Teacher" as const, role: "Teacher" as const,
description: "[Breve biografía del profesor]",
image: omeradva, image: omeradva,
socials: {
instagram: "",
},
}, },
{ {
id: "6", id: "6",
name: "[DJ Biel]", name: "DJ Biel",
role: "DJ" as const, role: "DJ" as const,
description: "[Breve biografía del DJ]",
image: djbiel, image: djbiel,
socials: {
instagram: "",
soundcloud: "",
},
}, },
{ {
id: "7", id: "7",
name: "[DJ WinX]", name: "DJ WinX",
role: "DJ" as const, role: "DJ" as const,
description: "[Breve biografía del DJ]",
image: djwinx, image: djwinx,
socials: {
instagram: "",
soundcloud: "",
},
}, },
{ {
id: "8", id: "8",
name: "[DJ Klebynho]", name: "DJ Klebynho",
role: "DJ" as const, role: "DJ" as const,
description: "[Breve biografía del DJ]",
image: djklebynho, image: djklebynho,
socials: {
instagram: "",
soundcloud: "",
},
}, },
{ {
id: "9", id: "9",
name: "[Leticia & Alex]", name: "Leticia & Alex",
role: "Teacher" as const, role: "Teacher" as const,
description: "[Breve biografía del profesor]",
image: letialex, image: letialex,
socials: {
instagram: "",
},
}, },
{ {
id: "10", id: "10",
name: "[DJ Cathie]", name: "DJ Cathie",
role: "DJ" as const, role: "DJ" as const,
description: "[Breve biografía del DJ]",
image: djcathie, image: djcathie,
socials: {
instagram: "",
soundcloud: "",
},
}, },
{ {
id: "11", id: "11",
name: "[Milu]", name: "Milu",
role: "Teacher" as const, role: "Teacher" as const,
description: "[Breve biografía del profesor]",
image: milu, image: milu,
socials: {
instagram: "",
},
}, },
{ {
id: "12", id: "12",
name: "[Safira]", name: "Safira",
role: "Teacher" as const, role: "Teacher" as const,
description: "[Breve biografía del profesor]",
image: safira, image: safira,
socials: {
instagram: "",
},
}, },
{ {
id: "13", id: "13",
name: "[Braz & Romina]", name: "Braz & Romina",
role: "Teacher" as const, role: "Teacher" as const,
description: "[Breve biografía del profesor]",
image: brazromi, image: brazromi,
socials: {
instagram: "",
},
}, },
{ {
id: "14", id: "14",
name: "[Emanoel]", name: "Emanoel",
role: "Teacher" as const, role: "Teacher" as const,
description: "[Breve biografía del profesor]",
image: emanoel, image: emanoel,
socials: {
instagram: "",
},
}, },
{ {
id: "15", id: "15",
name: "[Didi & Patricia]", name: "Didi & Patricia",
role: "Teacher" as const, role: "Teacher" as const,
description: "[Breve biografía del profesor]",
image: didipatri, image: didipatri,
socials: {
instagram: "",
}, },
{ id: "16",
name: "DJ Hique",
role: "DJ" as const,
image: djhique,
}, },
]; ];
@@ -349,18 +291,18 @@ export const ROOM_TYPES: { id: RoomType }[] = [
// ---- PRECIOS DINÁMICOS FULL PASS ---- // ---- PRECIOS DINÁMICOS FULL PASS ----
/** /**
* Calcula el precio del Full Pass según la fecha actual. * Calcula el precio del Full Pass según la fecha actual.
* - Hasta 1 de julio: 170€ * - Hasta 1 de junio: 170€
* - 1 de julio - 1 de septiembre: 190€ * - 1 de junio - 1 de septiembre: 190€
* - Después del inicio del evento: 200€ (último precio) * - Después del inicio del evento: 200€ (último precio)
*/ */
export function getFullPassPrice(): { price: number; isLastPrice: boolean; validUntilKey: string | null } { export function getFullPassPrice(): { price: number; isLastPrice: boolean; validUntilKey: string | null } {
const now = new Date(); const now = new Date();
const julyFirst = new Date("2026-07-01T00:00:00"); const juneFirst = new Date("2026-06-01T00:00:00");
const septemberFirst = new Date("2026-09-01T00:00:00"); const septemberFirst = new Date("2026-09-01T00:00:00");
const eventStart = new Date(EVENT_INFO.date); const eventStart = new Date(EVENT_INFO.date);
if (now < julyFirst) { if (now < juneFirst) {
return { price: 170, isLastPrice: false, validUntilKey: "validUntilJuly" }; return { price: 170, isLastPrice: false, validUntilKey: "validUntilJune" };
} else if (now < septemberFirst) { } else if (now < septemberFirst) {
return { price: 190, isLastPrice: false, validUntilKey: "validUntilSeptember" }; return { price: 190, isLastPrice: false, validUntilKey: "validUntilSeptember" };
} else { } else {

View File

@@ -128,6 +128,7 @@
"title": "Room + Pass Bundles", "title": "Room + Pass Bundles",
"subtitle": "Room + Pass bundles for your stay.", "subtitle": "Room + Pass bundles for your stay.",
"priceTBD": "Price TBA", "priceTBD": "Price TBA",
"totalPrice": "Total Price",
"selectRoom": "Choose room type", "selectRoom": "Choose room type",
"popular": "Popular", "popular": "Popular",
"lastPrice": "Last Price", "lastPrice": "Last Price",
@@ -137,7 +138,7 @@
"hotelYes": "Yes", "hotelYes": "Yes",
"hotelNo": "No", "hotelNo": "No",
"nonHotelNote": "+50€ fee for not staying in hotel", "nonHotelNote": "+50€ fee for not staying in hotel",
"validUntilJuly": "From now until 1 July", "validUntilJune": "From now until 1 June",
"validUntilSeptember": "From now until 1 September", "validUntilSeptember": "From now until 1 September",
"roomTypes": { "roomTypes": {
"individual": "Single Room", "individual": "Single Room",

View File

@@ -128,6 +128,7 @@
"title": "Packs de Habitación + Pase", "title": "Packs de Habitación + Pase",
"subtitle": "Combina habitación + pase para tu estancia.", "subtitle": "Combina habitación + pase para tu estancia.",
"priceTBD": "Precio por confirmar", "priceTBD": "Precio por confirmar",
"totalPrice": "Precio Total",
"selectRoom": "Elige tipo de habitación", "selectRoom": "Elige tipo de habitación",
"popular": "Popular", "popular": "Popular",
"lastPrice": "Último Precio", "lastPrice": "Último Precio",
@@ -137,7 +138,7 @@
"hotelYes": "Sí", "hotelYes": "Sí",
"hotelNo": "No", "hotelNo": "No",
"nonHotelNote": "+50€ por no alojarse en hotel", "nonHotelNote": "+50€ por no alojarse en hotel",
"validUntilJuly": "Desde ahora hasta el 1 de julio", "validUntilJune": "Desde ahora hasta el 1 de junio",
"validUntilSeptember": "Desde ahora hasta el 1 de septiembre", "validUntilSeptember": "Desde ahora hasta el 1 de septiembre",
"roomTypes": { "roomTypes": {
"individual": "Habitación Individual", "individual": "Habitación Individual",