import { useState } from 'react'; import { useMutation, useQueryClient } from '@tanstack/react-query'; import { characterApi } from '../api/endpoints'; import { STAT_LABELS } from '../constants'; const STATS = ['force', 'agilite', 'intelligence', 'chance', 'vitalite'] as const; export function CreateCharacter() { const qc = useQueryClient(); const [name, setName] = useState(''); const [pts, setPts] = useState>({ force:1, agilite:1, intelligence:1, chance:1, vitalite:1 }); const used = Object.values(pts).reduce((a, b) => a + b, 0) - 5; const remaining = 5 - used; const mut = useMutation({ mutationFn: () => characterApi.create(name, pts), onSuccess: () => qc.invalidateQueries({ queryKey: ['character'] }), }); const adjust = (stat: string, delta: number) => { const next = (pts[stat] ?? 1) + delta; if (next < 1 || next > 10) return; if (delta > 0 && remaining <= 0) return; setPts(p => ({ ...p, [stat]: next })); }; return (

Créer ton personnage

{remaining > 0 ? `${remaining} point${remaining > 1 ? 's' : ''} à répartir` : 'Tous les points répartis'}

setName(e.target.value)} maxLength={30} />
{STATS.map(s => (
{STAT_LABELS[s]}
{pts[s]}
))}
{mut.isError &&

{(mut.error as Error).message}

}
); }