From 718ef09dfadae8a2eef5bbad350ce0e42667a405 Mon Sep 17 00:00:00 2001 From: Davide Grilli Date: Sun, 30 Aug 2026 18:15:16 +0200 Subject: [PATCH] =?UTF-8?q?L'amministratore=20pu=C3=B2=20modificare=20i=20?= =?UTF-8?q?dati=20dei=20giocatori?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Attua DD-017. La scheda della dashboard era di sola lettura: ora l'admin apre il giocatore e modifica. - Dati squadra (nome, cognome, numero, ruolo): le docs li assegnavano già agli amministratori, ma non esisteva nessuna schermata per cambiarli. - Dati personali e del documento: compilabili al posto del giocatore, perché un export CSI incompleto rimanda il lavoro in chat. - Scollega account: libera uno slot assegnato per errore, come previsto da DD-016 regola 2. I file restano fuori: l'admin li scarica ma non li carica al posto di altri. Nessuna migration: le policy di M1 e M2 riconoscevano già l'admin. I campi del profilo diventano un componente condiviso (CampiProfilo) tra la schermata del giocatore e la dashboard, con gli upload passati come slot: da admin quelle righe non compaiono. Co-Authored-By: Claude Opus 5 --- .../crapp/ProfiloAmministrativo.tsx | 349 ++++++++++-------- src/lib/giocatori-squadra.ts | 74 ++++ src/routes/admin.tsx | 223 ++++++++--- 3 files changed, 453 insertions(+), 193 deletions(-) diff --git a/src/components/crapp/ProfiloAmministrativo.tsx b/src/components/crapp/ProfiloAmministrativo.tsx index 1c8ad91..ee88faf 100644 --- a/src/components/crapp/ProfiloAmministrativo.tsx +++ b/src/components/crapp/ProfiloAmministrativo.tsx @@ -12,10 +12,18 @@ import { useSalvaProfilo, type SezioneFile, } from "@/lib/profili"; -import { completamento, profiloVuoto, sezioniComplete, type Profilo } from "@/lib/profili-core"; +import { + completamento, + profiloVuoto, + sezioniComplete, + type Profilo, + type Sezione, +} from "@/lib/profili-core"; const TIPI_DOCUMENTO = ["Carta d'identità", "Patente", "Passaporto"]; +const classiInput = "w-full rounded-xl border border-border bg-background px-3 py-2 text-sm"; + function Campo({ label, children }: { label: string; children: React.ReactNode }) { return (