diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index b3c1544..6c02d2c 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -6,6 +6,16 @@ qui: sta in [ROADMAP.md](ROADMAP.md). ## Versione attuale — agosto 2026 +### Profilo: tab Documenti e Opzioni, barra senza scroll + +- L'etichetta nominava lo scopo (il tesseramento CSI) invece del contenuto: dentro ci sono + dati personali, documento, certificato medico e foto tessera. Cambia anche la rotta + (`/profilo?tab=documenti`): i vecchi link `?tab=tesseramento` aprono la tab Stagione. +- «Impostazioni» diventa «Opzioni»: con le quattro etichette accorciate la barra delle + sottosezioni ci sta in uno schermo da telefono. Le voci ora si dividono la riga in parti + uguali (`grow basis-0`) e tornano a scorrere solo se non ci stanno, quindi vale anche per + le barre di Squadra e Classifica. + ### Palloni: allenamenti senza proposta automatica - `completaTurni` non assegna più gli allenamenti: restano «da assegnare» finché non si diff --git a/docs/modules/notifiche.md b/docs/modules/notifiche.md index 5f7e822..46981db 100644 --- a/docs/modules/notifiche.md +++ b/docs/modules/notifiche.md @@ -29,7 +29,7 @@ persistente: la riga viene eliminata non appena letta dal service worker). ## Iscrizione alle notifiche push -In Profilo → Impostazioni c’è **un solo interruttore** («Notifiche»). Non esistono preferenze +In Profilo → Opzioni c’è **un solo interruttore** («Notifiche»). Non esistono preferenze separate per tipo di messaggio: l’iscrizione registra il dispositivo e lo rende destinatario di **tutte** le push (promemoria palloni, solleciti presenze) e abilita anche le notifiche smart in app, che usano lo stesso service worker. diff --git a/docs/modules/profilo-giocatore.md b/docs/modules/profilo-giocatore.md index 06a9c4b..12ef0bc 100644 --- a/docs/modules/profilo-giocatore.md +++ b/docs/modules/profilo-giocatore.md @@ -67,7 +67,7 @@ Viene mostrata una barra di avanzamento (esempio: _Profilo completato — 85%_), Quando tutte le sezioni sono complete il widget scompare automaticamente. -Il tap apre Profilo sulla sottosezione **Tesseramento** (`/profilo?tab=tesseramento`), non +Il tap apre Profilo sulla sottosezione **Documenti** (`/profilo?tab=documenti`), non sulla tab Stagione. ## Profilo @@ -142,7 +142,7 @@ Sezione già presente. Contiene tutti i badge ottenuti e quelli ancora da sbloccare. -### Impostazioni +### Opzioni Contiene. @@ -159,7 +159,7 @@ Contiene. ## Dashboard amministratore Gli amministratori dispongono di una schermata dedicata (`/admin`, raggiungibile da -Profilo → Impostazioni). +Profilo → Opzioni). Per ogni giocatore vengono mostrati. diff --git a/src/components/crapp/BarraSottosezioni.tsx b/src/components/crapp/BarraSottosezioni.tsx index 9135ef0..72c35e6 100644 --- a/src/components/crapp/BarraSottosezioni.tsx +++ b/src/components/crapp/BarraSottosezioni.tsx @@ -80,7 +80,9 @@ export function BarraSottosezioni({ vaiA(i); }} className={cn( - "snap-center shrink-0 rounded-full px-3.5 py-2 text-xs font-bold uppercase tracking-wide transition-colors", + // grow+basis-0: se le voci ci stanno riempiono la riga in parti uguali, + // altrimenti shrink-0 le tiene leggibili e la barra torna a scorrere. + "snap-center shrink-0 grow basis-0 rounded-full px-3.5 py-2 text-xs font-bold uppercase tracking-wide transition-colors", "min-h-11 touch-manipulation whitespace-nowrap", selezionata ? "bg-accent text-accent-foreground shadow-pop" diff --git a/src/components/crapp/ProfiloAmministrativo.tsx b/src/components/crapp/ProfiloAmministrativo.tsx index 42f29bf..3f1f0a0 100644 --- a/src/components/crapp/ProfiloAmministrativo.tsx +++ b/src/components/crapp/ProfiloAmministrativo.tsx @@ -418,7 +418,7 @@ export function CompletaProfilo({
diff --git a/src/routes/profilo.tsx b/src/routes/profilo.tsx index 85e16cd..b95adda 100644 --- a/src/routes/profilo.tsx +++ b/src/routes/profilo.tsx @@ -29,7 +29,7 @@ import { esci } from "@/lib/auth"; import { useIsAdmin } from "@/lib/ruoli"; import { Reveal } from "@/components/motion/Reveal"; -const TAB_PROFILO = ["stagione", "badge", "tesseramento", "impostazioni"] as const; +const TAB_PROFILO = ["stagione", "badge", "documenti", "impostazioni"] as const; type TabProfilo = (typeof TAB_PROFILO)[number]; function isTabProfilo(v: unknown): v is TabProfilo { @@ -233,13 +233,13 @@ function Profilo() { contenuto: , }, { - id: "tesseramento", - label: "Tesseramento", + id: "documenti", + label: "Documenti", contenuto: , }, { id: "impostazioni", - label: "Impostazioni", + label: "Opzioni", contenuto: (