import { For, Show, type Component } from 'solid-js' import CircularProgress from '@suid/material/CircularProgress' import Table from '@suid/material/Table' import TableBody from '@suid/material/TableBody' import TableCell from '@suid/material/TableCell' import TableHead from '@suid/material/TableHead' import TableRow from '@suid/material/TableRow' import Typography from '@suid/material/Typography' import type { LeaderboardRow } from '../types' function formatDuration(durationSec: number): string { const minutes = Math.floor(durationSec / 60) return `${minutes}m` } export type LeaderboardTableProps = { rows: LeaderboardRow[] loading?: boolean emptyMessage?: string maxRows?: number ariaLabel?: string } const LeaderboardTable: Component = (props) => { const maxRows = (): number => Math.max(1, props.maxRows ?? 10) return ( }> 0} fallback={ {props.emptyMessage ?? 'Aucun score pour le moment.'} } > Rang Joueur Score Questions Taux de réussite Durée {(row, idx) => ( #{idx() + 1} {row.player} {row.score} {row.questions} {row.successRate}% {formatDuration(row.durationSec)} )}
) } export default LeaderboardTable