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,