diff --git a/src/assets/staff/aiysha.jpg b/src/assets/staff/aiysha.jpg new file mode 100644 index 0000000..196b503 Binary files /dev/null and b/src/assets/staff/aiysha.jpg differ diff --git a/src/assets/staff/djgalzo.jpg b/src/assets/staff/djgalzo.jpg new file mode 100644 index 0000000..3a5168d Binary files /dev/null and b/src/assets/staff/djgalzo.jpg differ diff --git a/src/assets/staff/djgg.jpg b/src/assets/staff/djgg.jpg new file mode 100644 index 0000000..b0d732a Binary files /dev/null and b/src/assets/staff/djgg.jpg differ diff --git a/src/components/MixedBookingSection.tsx b/src/components/MixedBookingSection.tsx index 931600d..ebfebd0 100644 --- a/src/components/MixedBookingSection.tsx +++ b/src/components/MixedBookingSection.tsx @@ -254,7 +254,7 @@ const MixedBookingSection = () => {
-

+

WHITE PARTY

diff --git a/src/components/StaffSection.tsx b/src/components/StaffSection.tsx index 4bec610..078728f 100644 --- a/src/components/StaffSection.tsx +++ b/src/components/StaffSection.tsx @@ -4,21 +4,31 @@ import { STAFF } from "@/data/event-data"; import { Instagram, User, ChevronLeft, ChevronRight } from "lucide-react"; import { useTranslation } from "react-i18next"; -/** Colores de badge por rol */ +/** Colores de badge por rol (variantes naranjas) */ const roleBadgeClass: Record = { - Teacher: "bg-primary text-primary-foreground", - DJ: "bg-secondary text-secondary-foreground", + Teacher: "bg-[hsla(20,90%,55%,1)] text-white", + DJ: "bg-[hsla(45,90%,50%,1)] text-white", + Specials: "bg-[hsla(15,85%,55%,1)] text-white", Organizador: "bg-accent text-accent-foreground", }; +/** Variantes naranjas para el filtro activo por tag */ +const filterActiveClass: Record = { + all: "bg-[hsla(37,93%,53%,1)] text-primary-foreground border-[hsla(37,93%,53%,1)] shadow-md", + teachers: "bg-[hsla(20,90%,55%,1)] text-primary-foreground border-[hsla(20,90%,55%,1)] shadow-md", + djs: "bg-[hsla(45,90%,50%,1)] text-primary-foreground border-[hsla(45,90%,50%,1)] shadow-md", + specials: "bg-[hsla(15,85%,55%,1)] text-primary-foreground border-[hsla(15,85%,55%,1)] shadow-md", +}; + const StaffSection = () => { const { t } = useTranslation(); - const [filter, setFilter] = useState<"all" | "teachers" | "djs">("all"); + const [filter, setFilter] = useState<"all" | "teachers" | "djs" | "specials">("all"); const filteredStaff = STAFF.filter((member) => { if (filter === "all") return true; if (filter === "teachers") return member.role === "Teacher"; if (filter === "djs") return member.role === "DJ"; + if (filter === "specials") return member.role === "Specials"; return true; }); // simple ref + helpers for horizontal scroll @@ -90,6 +100,7 @@ const StaffSection = () => { { id: "all", labelKey: "staff.filters.all" }, { id: "teachers", labelKey: "staff.filters.teachers" }, { id: "djs", labelKey: "staff.filters.djs" }, + { id: "specials", labelKey: "staff.filters.specials" }, ] as const ).map(({ id, labelKey }) => (

+

+ {member.name} +

+ {/* Badge de rol */} @@ -154,34 +169,12 @@ const StaffSection = () => { ? "teacher" : member.role === "DJ" ? "dj" - : member.role === "Organizador" - ? "organizer" + : member.role === "Specials" + ? "specials" : undefined; return roleLabelKey ? t(`staff.${roleLabelKey}`) : member.role; })()} - -

- {member.name} -

-

- {member.description?.trim().startsWith("[") && member.description?.trim().endsWith("]") - ? t("staff.placeholder") - : member.description} -

- - {/* Redes sociales */} - {member.socials?.instagram && ( - - - {t("staff.socials.instagram")} - - )}
))} diff --git a/src/data/event-data.ts b/src/data/event-data.ts index 7cfa8b4..cc19990 100644 --- a/src/data/event-data.ts +++ b/src/data/event-data.ts @@ -27,6 +27,9 @@ 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 gal1 from "@/assets/gallery/gal1.jpg"; import gal2 from "@/assets/gallery/gal2.jpg"; @@ -186,6 +189,24 @@ export const STAFF = [ 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, + } ]; // ---- PROGRAMA DEL EVENTO ---- diff --git a/src/locales/en.json b/src/locales/en.json index 45a20ea..9d69410 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -44,11 +44,13 @@ "teacher": "Teacher", "dj": "DJ", "organizer": "Organizer", + "specials": "Special Guests", "placeholder": "[Teacher biography]", "filters": { "all": "All", "teachers": "Teachers", - "djs": "DJs" + "djs": "DJs", + "specials": "Special Guests" }, "socials": { "instagram": "Instagram" @@ -154,9 +156,9 @@ "fullFeatures": "All workshops|All social dances|Live shows|DJ sets", "partyDescription": "Price for each party individually, even pool parties.", "partyFeatures": "Friday party|Saturday party|Sunday farewell party|DJ sets", - "whitepartyDescription": "Closing party in Sala Vivaldi, with an elegant and exclusive atmosphere.", - "whitepartyFeatures": "Dress code: White|Amazing DJ", - "whitepartyNotIncluded": "Not included in Full Pass - Separate payment required", + "whitepartyDescription": "Closing party in Sala Vivaldi, come to end the beach festival with style.", + "whitepartyFeatures": "Dress code: White|Best music", + "whitepartyNotIncluded": "Not included in Full Pass - Paid separately", "whitepartyTime": "21h to 1h", "whitepartyDate": "Monday 7 September", "goToReservations": "Go to reservations", diff --git a/src/locales/es.json b/src/locales/es.json index 4e32466..150b5b8 100644 --- a/src/locales/es.json +++ b/src/locales/es.json @@ -44,11 +44,13 @@ "teacher": "Profesor", "dj": "DJ", "organizer": "Organizador", + "specials": "Artistas Invitados", "placeholder": "[Breve biografía del profesor]", "filters": { "all": "Todos", "teachers": "Profesores", - "djs": "DJs" + "djs": "DJs", + "specials": "Artistas Invitados" }, "socials": { "instagram": "Instagram" @@ -154,9 +156,9 @@ "fullFeatures": "Todos los workshops|Todas las social dances|Shows en vivo|DJ sets", "partyDescription": "Precio individual por cada fiesta, incluso las pool parties.", "partyFeatures": "Fiesta del viernes|Fiesta del sábado|Fiesta despedida del domingo|DJ sets", - "whitepartyDescription": "Fiesta de clausura en la Sala Vivaldi, con un ambiente elegante y exclusivo.", - "whitepartyFeatures": "Código de vestimenta: Blanco|DJ Inigualable", - "whitepartyNotIncluded": "No incluido en Full Pass - Pago separado requerido", + "whitepartyDescription": "Fiesta de clausura en la Sala Vivaldi, ven a terminar el beach festival con estilo.", + "whitepartyFeatures": "Código de vestimenta: Blanco|La mejor música", + "whitepartyNotIncluded": "No incluido en Full Pass - Se paga a parte", "whitepartyTime": "21h a 1h", "whitepartyDate": "Lunes 7 de Septiembre", "goToReservations": "Ir a reservas", diff --git a/vite.config.ts b/vite.config.ts index ba2b946..a9b992f 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -6,7 +6,7 @@ import { componentTagger } from "lovable-tagger"; // https://vitejs.dev/config/ export default defineConfig(({ mode }) => ({ server: { - origin: "http://0.0.0.0:8080", + host: "::", port: 8080, hmr: { overlay: false,