docs: task cancellati e date dei pagamenti — STATUS, STATE, design system

STATUS.md: perché la pill sta su "Cancellata" e non su "Fatto" (sono entrambi
barrati, e scambiarli significa credere consegnato ciò che non esiste), perché
`due_date` è nullable, e le due verifiche che restano a mano — il riquadro
"Prossimo pagamento" non compare finché nessuna rata ha una scadenza, e due
`paid_at` storici valgono il primo del mese perché li ha scritti il vecchio
selettore a mese.

DESIGN-SYSTEM.md: la quinta forma, la regola della colonna Kanban che si
nasconde solo da vuota, e la spec del box pagamenti.

STATE.md: due decisioni nuove, e resta sotto le 100 righe accorpando le righe
di tabella della stessa settimana.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-22 14:51:51 +02:00
parent fe767899b9
commit 4403b39e63
3 changed files with 108 additions and 17 deletions
+24 -8
View File
@@ -389,16 +389,32 @@ The `/client/[token]` portal was migrated to the same "Quiet Luxury" tokens
`bg-muted`/`text-muted-foreground` (upcoming) — each with a `dark:` variant.
- **Phase cards** (`PhaseCard`): `rounded-xl border-border-light bg-card
shadow-card`, progress bar colored per status (emerald/amber/`bg-border`).
- **Stato dei task** (`TaskStatusIndicator`): le quattro forme si distinguono
- **Stato dei task** (`TaskStatusIndicator`): le cinque forme si distinguono
**senza colore** — `todo` cerchio vuoto `border-border`, `in_progress` cerchio +
punto ambra, `in_review` cerchio + **spunta vuota** violetta, `done` cerchio pieno
+ spunta emerald. La spunta compare a lavoro finito e si riempie a lavoro confermato.
La pill di testo compare **solo** su `in_progress` e `in_review`; `todo` e `done` si
leggono dalla forma e dal titolo barrato. Colori come le altre pill del portale (soft
tint `-50/700` + variante `dark:`), tutti raccolti in `TASK_STATUS_VISUALS` e mai
riscritti nei componenti: le stesse tinte colorano le colonne del Kanban cliente e la
legenda, che si genera da `TASK_STATUSES`. L'icona è `aria-hidden` e lo stato viaggia
in uno `sr-only`, così lo screen reader lo annuncia anche sui due senza pill.
+ spunta emerald, `cancelled` cerchio spento + **X**. La spunta compare a lavoro
finito e si riempie a lavoro confermato; la X è l'unica forma che non è un passo
avanti. La pill di testo compare su `in_progress`, `in_review` e `cancelled`;
`todo` e `done` si leggono dalla forma e dal titolo. **`done` e `cancelled` sono
entrambi barrati**, ed è proprio per questo che `cancelled` porta la pill: la
differenza fra consegnato e tolto dal lavoro è troppo importante per affidarla al
solo disegno dentro il cerchio. Colori come le altre pill del portale (soft tint
`-50/700` + variante `dark:`, tinta `muted` per la cancellata), tutti raccolti in
`TASK_STATUS_VISUALS` e mai riscritti nei componenti: le stesse tinte colorano le
colonne del Kanban cliente e la legenda, che si genera da `TASK_STATUSES`. L'icona
è `aria-hidden` e lo stato viaggia in uno `sr-only`, così lo screen reader lo
annuncia anche su quelli senza pill.
La colonna «Cancellate» del Kanban cliente è l'unica che **si nasconde da vuota**
(le altre quattro si tengono la larghezza) — mai se è piena: nessun task deve
sparire dalla board.
- **Box pagamenti** (`PaymentStatus`): sopra le righe, un riquadro «Prossimo
pagamento» con data lunga e conto alla rovescia in parole («tra 12 giorni»,
«domani», «oggi»); se la scadenza è passata diventa rosso e dice «Pagamento
scaduto — scaduto da N giorni». Ogni riga porta la sua data sotto l'etichetta:
«Scade il…» se aperta, «Pagato il…» se saldata, **nulla** se in gestionale la data
non c'è — il portale non inventa scadenze. Nessun importo per riga (LOCKED #2):
le date non sono cifre. I giorni si contano in `src/lib/payment-dates.ts` sui
giorni civili a Roma, non sugli istanti.
- Sidebar cards (`OffersSection`, `PaymentStatus`, `DocumentsSection`,
`NotesSection`, `TranscriptsSection`) all follow `rounded-xl border-border-light
bg-card shadow-card`.