'use client'; import { useLeaderboard } from '@/lib/hooks/use-leaderboard'; import { cn } from '@/lib/utils'; import { useMemo, useState } from 'react'; import AvatarComponent from './Avatar'; import Select from './Select'; const SCORE_COLORS = ['text-yellow-400', 'text-gray-400', 'text-orange-400']; export default function Leaderboard({ token }: { token: string }) { const { data, isLoading } = useLeaderboard({ token }); const [filter, setFilter] = useState(''); let options = [] as { value: string; title: string }[]; if (data) { options = data .filter((score) => score.groups && score.groups.length > 0) .map((score) => score.groups.map((group) => ({ value: group.name, title: group.name }))) .flat() .filter((group, index, self) => self.findIndex((g) => g.value === group.value) === index) .sort((a, b) => a.title.localeCompare(b.title)); options.unshift({ value: '', title: 'Tous' }); options.push({ value: 'no-group', title: 'Sans groupe' }); } const filteredData = useMemo(() => { if (filter) { if (filter === 'no-group') { return data?.filter((score) => !score.groups || score.groups.length === 0); } return data?.filter((score) => score.groups?.find((group) => group.name === filter)); } return data; }, [data, filter]); return (

Tableau des scores

Suivez la progression des élèves en direct

{(filteredData && (