diff --git a/src/assets/staff/didipatri.jpg b/src/assets/staff/didipatri.jpg new file mode 100644 index 0000000..9e16f81 Binary files /dev/null and b/src/assets/staff/didipatri.jpg differ diff --git a/src/components/MixedBookingSection.tsx b/src/components/MixedBookingSection.tsx index bdbfc27..7b8a1a4 100644 --- a/src/components/MixedBookingSection.tsx +++ b/src/components/MixedBookingSection.tsx @@ -114,13 +114,18 @@ const MixedBookingSection = () => { {price > 0 ? `${price}€` : t("mixedBooking.priceTBD")}

- {t(`mixedBooking.passTypes.${pkg.id}`)}: {passPrice}€ {pkg.id === "full" ? t("mixedBooking.perPerson") : t("mixedBooking.perParty")} + {t(`mixedBooking.passTypes.${pkg.id}`)}: {basePrice}€ {pkg.id === "full" ? t("mixedBooking.perPerson") : t("mixedBooking.perParty")}

{showNonHotelNote && (

{t("mixedBooking.nonHotelNote")}

)} + {pkg.id === "full" && fullPassPricing.validUntilKey && ( +

+ {t(`mixedBooking.${fullPassPricing.validUntilKey}`)} +

+ )} {hasHotel && (

{t(`mixedBooking.roomTypes.${selectedRoom}`)}: {roomPrice}€ diff --git a/src/data/event-data.ts b/src/data/event-data.ts index a5c3936..2a98b7b 100644 --- a/src/data/event-data.ts +++ b/src/data/event-data.ts @@ -25,6 +25,7 @@ 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 gal1 from "@/assets/gallery/gal1.jpg"; import gal2 from "@/assets/gallery/gal2.jpg"; @@ -233,6 +234,16 @@ export const STAFF = [ instagram: "", }, }, + { + id: "15", + name: "[Didi & Patricia]", + role: "Teacher" as const, + description: "[Breve biografía del profesor]", + image: didipatri, + socials: { + instagram: "", + }, + }, ]; // ---- PROGRAMA DEL EVENTO ---- @@ -342,19 +353,19 @@ export const ROOM_TYPES: { id: RoomType }[] = [ * - 1 de julio - 1 de septiembre: 190€ * - Después del inicio del evento: 200€ (último precio) */ -export function getFullPassPrice(): { price: number; isLastPrice: boolean } { +export function getFullPassPrice(): { price: number; isLastPrice: boolean; validUntilKey: string | null } { const now = new Date(); const julyFirst = new Date("2026-07-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 }; + return { price: 170, isLastPrice: false, validUntilKey: "validUntilJuly" }; } else if (now < septemberFirst) { - return { price: 190, isLastPrice: false }; + return { price: 190, isLastPrice: false, validUntilKey: "validUntilSeptember" }; } else { // After event starts - return { price: 200, isLastPrice: true }; + return { price: 200, isLastPrice: true, validUntilKey: null }; } } diff --git a/src/locales/en.json b/src/locales/en.json index 07a5abc..d75b302 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -137,6 +137,8 @@ "hotelYes": "Yes", "hotelNo": "No", "nonHotelNote": "+50€ fee for not staying in hotel", + "validUntilJuly": "From now until 1 July", + "validUntilSeptember": "From now until 1 September", "roomTypes": { "individual": "Single Room", "double": "Double Room", diff --git a/src/locales/es.json b/src/locales/es.json index a9f7fcd..4863358 100644 --- a/src/locales/es.json +++ b/src/locales/es.json @@ -137,6 +137,8 @@ "hotelYes": "Sí", "hotelNo": "No", "nonHotelNote": "+50€ por no alojarse en hotel", + "validUntilJuly": "Desde ahora hasta el 1 de julio", + "validUntilSeptember": "Desde ahora hasta el 1 de septiembre", "roomTypes": { "individual": "Habitación Individual", "double": "Habitación Doble",