import { For, Show, createMemo, createSignal } from 'solid-js' import Box from '@suid/material/Box' import Button from '@suid/material/Button' import Card from '@suid/material/Card' import CardContent from '@suid/material/CardContent' import Divider from '@suid/material/Divider' import Stack from '@suid/material/Stack' import Switch from '@suid/material/Switch' import TextField from '@suid/material/TextField' import Typography from '@suid/material/Typography' import { useAuth } from '../hooks/useAuth' import { loadGameHistory } from '../services/session' function readInputValue(event: Event): string { return (event.target as HTMLInputElement).value } export default function ProfileRoute() { const { isAuthenticated, signInDemo, signOut } = useAuth() const [name, setName] = createSignal(localStorage.getItem('kf.playerName') ?? '') const [showHints, setShowHints] = createSignal(true) const gameHistory = createMemo(() => loadGameHistory()) const stats = createMemo(() => { const history = gameHistory() const gamesPlayed = history.length const totalScore = history.reduce((acc, item) => acc + item.finalScore, 0) const averageScore = gamesPlayed > 0 ? Math.round((totalScore / gamesPlayed) * 10) / 10 : 0 const bestScore = history.reduce((best, item) => Math.max(best, item.finalScore), 0) return { gamesPlayed, averageScore, bestScore } }) const save = () => { localStorage.setItem('kf.playerName', name().trim()) } return ( Profil Connexion requise pour accéder au profil joueur. } > Statistiques joueur Parties jouées : {stats().gamesPlayed} Score moyen : {stats().averageScore} Meilleur score : {stats().bestScore} Historique des parties 0} fallback={Aucune partie enregistrée.} > {(item) => ( Score {item.finalScore} • Réussite {item.successRate}% • Durée {Math.floor(item.durationSec / 60)}m )} Paramètres setName(readInputValue(e))} fullWidth InputLabelProps={{ style: { color: '#cbd5e1' } }} InputProps={{ style: { color: '#e5e7eb' } }} /> setShowHints((v) => !v)} /> Afficher les indices pendant une partie ) }