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">
<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 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>
{showNonHotelNote && (
<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 emanoel from "@/assets/staff/emanoel.jpg";
import didipatri from "@/assets/staff/didipatri.jpg";
import djhique from "@/assets/staff/djhique.jpg";
import gal1 from "@/assets/gallery/gal1.jpg";
import gal2 from "@/assets/gallery/gal2.jpg";
@@ -91,158 +92,99 @@ export const ABOUT_ORG = {
export const STAFF = [
{
id: "1",
name: "[Pablo & Lena]",
name: "Pablo & Lena",
role: "Teacher" as const,
description: "[Breve biografía del profesor]",
/** Reemplazar con ruta a foto real */
image: pablolena,
socials: {
instagram: "",
},
},
{
id: "2",
name: "[Ariel & Yasmin]",
name: "Ariel & Yasmin",
role: "Teacher" as const,
description: "[Breve biografía del profesor]",
image: arielyasmin,
socials: {
instagram: "",
},
},
{
id: "3",
name: "[Hila & Leo]",
name: "Hila & Leo",
role: "Teacher" as const,
description: "[Breve biografía del profesor]",
image: hilaleo,
socials: {
instagram: "",
},
},
{
id: "4",
name: "[Matheus & Lydia]",
name: "Matheus & Lydia",
role: "Teacher" as const,
description: "[Breve biografía del profesor]",
image: matheuslydia,
socials: {
instagram: "",
},
},
{
id: "5",
name: "[Omer & Adva]",
name: "Omer & Adva",
role: "Teacher" as const,
description: "[Breve biografía del profesor]",
image: omeradva,
socials: {
instagram: "",
},
},
{
id: "6",
name: "[DJ Biel]",
name: "DJ Biel",
role: "DJ" as const,
description: "[Breve biografía del DJ]",
image: djbiel,
socials: {
instagram: "",
soundcloud: "",
},
},
{
id: "7",
name: "[DJ WinX]",
name: "DJ WinX",
role: "DJ" as const,
description: "[Breve biografía del DJ]",
image: djwinx,
socials: {
instagram: "",
soundcloud: "",
},
},
{
id: "8",
name: "[DJ Klebynho]",
name: "DJ Klebynho",
role: "DJ" as const,
description: "[Breve biografía del DJ]",
image: djklebynho,
socials: {
instagram: "",
soundcloud: "",
},
},
{
id: "9",
name: "[Leticia & Alex]",
name: "Leticia & Alex",
role: "Teacher" as const,
description: "[Breve biografía del profesor]",
image: letialex,
socials: {
instagram: "",
},
},
{
id: "10",
name: "[DJ Cathie]",
name: "DJ Cathie",
role: "DJ" as const,
description: "[Breve biografía del DJ]",
image: djcathie,
socials: {
instagram: "",
soundcloud: "",
},
},
{
id: "11",
name: "[Milu]",
name: "Milu",
role: "Teacher" as const,
description: "[Breve biografía del profesor]",
image: milu,
socials: {
instagram: "",
},
},
{
id: "12",
name: "[Safira]",
name: "Safira",
role: "Teacher" as const,
description: "[Breve biografía del profesor]",
image: safira,
socials: {
instagram: "",
},
},
{
id: "13",
name: "[Braz & Romina]",
name: "Braz & Romina",
role: "Teacher" as const,
description: "[Breve biografía del profesor]",
image: brazromi,
socials: {
instagram: "",
},
},
{
id: "14",
name: "[Emanoel]",
name: "Emanoel",
role: "Teacher" as const,
description: "[Breve biografía del profesor]",
image: emanoel,
socials: {
instagram: "",
},
},
{
id: "15",
name: "[Didi & Patricia]",
name: "Didi & Patricia",
role: "Teacher" as const,
description: "[Breve biografía del profesor]",
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 ----
/**
* Calcula el precio del Full Pass según la fecha actual.
* - Hasta 1 de julio: 170€
* - 1 de julio - 1 de septiembre: 190€
* - 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-01T00:00:00");
const juneFirst = new Date("2026-06-01T00: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" };
if (now < juneFirst) {
return { price: 170, isLastPrice: false, validUntilKey: "validUntilJune" };
} else if (now < septemberFirst) {
return { price: 190, isLastPrice: false, validUntilKey: "validUntilSeptember" };
} else {

View File

@@ -128,6 +128,7 @@
"title": "Room + Pass Bundles",
"subtitle": "Room + Pass bundles for your stay.",
"priceTBD": "Price TBA",
"totalPrice": "Total Price",
"selectRoom": "Choose room type",
"popular": "Popular",
"lastPrice": "Last Price",
@@ -137,7 +138,7 @@
"hotelYes": "Yes",
"hotelNo": "No",
"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",
"roomTypes": {
"individual": "Single Room",

View File

@@ -128,6 +128,7 @@
"title": "Packs de Habitación + Pase",
"subtitle": "Combina habitación + pase para tu estancia.",
"priceTBD": "Precio por confirmar",
"totalPrice": "Precio Total",
"selectRoom": "Elige tipo de habitación",
"popular": "Popular",
"lastPrice": "Último Precio",
@@ -137,7 +138,7 @@
"hotelYes": "Sí",
"hotelNo": "No",
"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",
"roomTypes": {
"individual": "Habitación Individual",