import { useState, useRef } from "react"; import { motion, AnimatePresence } from "framer-motion"; import { STAFF } from "@/data/event-data"; import { Instagram, User, ChevronLeft, ChevronRight } from "lucide-react"; import { useTranslation } from "react-i18next"; /** Colores de badge por rol (variantes naranjas) */ const roleBadgeClass: Record = { 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" | "specials">("all"); const scrollerRef = useRef(null); 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; }); const staffCounts = { all: STAFF.length, teachers: STAFF.filter((m) => m.role === "Teacher").length, djs: STAFF.filter((m) => m.role === "DJ").length, specials: STAFF.filter((m) => m.role === "Specials").length, }; const onPrev = () => { const scroller = scrollerRef.current; if (!scroller) return; const card = scroller.querySelector("[data-staff-card]") as HTMLElement | null; const delta = card ? card.offsetWidth + 24 : 320; scroller.scrollBy({ left: -delta, behavior: "smooth" }); }; const onNext = () => { const scroller = scrollerRef.current; if (!scroller) return; const card = scroller.querySelector("[data-staff-card]") as HTMLElement | null; const delta = card ? card.offsetWidth + 24 : 320; scroller.scrollBy({ left: delta, behavior: "smooth" }); }; return (

{t("staff.title")}

{t("staff.description")}

{/* Arrows (desktop) */}
{/* Filters */} {( [ { 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 }) => ( ))} {/* Carousel scroller */}
{/* gradient edges */}
{filteredStaff.map((member) => ( {/* Foto */}
{member.image ? ( {member.name} ) : ( )}

{member.name}

{/* Badge de rol */} {(() => { const roleLabelKey = member.role === "Teacher" ? "teacher" : member.role === "DJ" ? "dj" : member.role === "Specials" ? "specials" : undefined; return roleLabelKey ? t(`staff.${roleLabelKey}`) : member.role; })()}
))}
{/* Arrows (mobile overlay) */}
); }; export default StaffSection;