[FEAT] UI V3 — foundation (v3.css + topnav-v3.js + Inter/Lucide self-host) + dashboard pilota fedele al mockup

Fase 0 della migrazione UI V3 (sidebar V2 → top-nav navy/oro, font Inter, icone Lucide).
- public/css/v3.css: design system portato fedelmente dal mockup index.html
  (token :root, chrome appbar+mega-menu, card/stat/calendario/anag/doc/fab, @media ≤900/≤560),
  + aggiunte minime V3+ per stati loading/empty/error, mobile nav toggle e touch≥44px (AGID/WCAG).
- public/vendor/inter/: Inter self-host (variable woff2 latin+latin-ext) + inter.css + README (NO Google CDN).
- public/vendor/lucide/lucide.min.js: Lucide UMD self-host (NO unpkg CDN).
- public/js/topnav-v3.js: appbar + mega-menu data-driven dalla mappa IA (§6, 9 gruppi),
  aria-current sulla voce attiva, riusa gli helper di common.js (utente/logout/versione/org-switcher,
  branding, impersonate) e i 3 FAB reali (ARIA + bug-reporter + notifiche). window.loadSidebar=loadTopnavV3.
- public/dashboard.html: convertita al V3 fedele al mockup, cablata sui DATI REALI via api.js
  (overview/compliance-score/upcoming-deadlines/recent-activity/organizations-current);
  monitor giornaliero/settimanale alimentati dagli eventi reali; documenti istituzionali = stato vuoto onesto.
- public/js/dashboard.js (nuovo): wiring dati reali + render calendario/scadenze/attività/anagrafica;
  stati loading/empty/error; zero dati finti del mockup.

node --check OK su topnav-v3.js e dashboard.js. Solo UI: nessun PHP/DB/api.js toccato.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
DevEnv nis2-agile
2026-06-27 10:59:08 +02:00
co-authored by Claude Opus 4.8
parent 2a5d90f8bb
commit b0fc190704
9 changed files with 1071 additions and 324 deletions
+31
View File
@@ -0,0 +1,31 @@
# Inter (self-hosted) — NIS2 Agile UI V3
Font **Inter** ospitato localmente. **NON** usare Google Fonts CDN nelle pagine
(motivi: AGID/privacy, CSP, PWA offline). Le pagine includono solo
`/vendor/inter/inter.css`, con fallback `system-ui`.
## File
- `inter-latin.woff2` — subset **latin** (variabile, asse peso 100–900).
- `inter-latin-ext.woff2` — subset **latin-ext** (accentate aggiuntive).
- `inter.css` — `@font-face` che puntano ai due `.woff2` locali.
Inter v20 è un **variable font**: un solo file copre tutti i pesi (400–800 usati
dal design system V3) tramite `font-weight: 100 900`.
## URL di origine (per rigenerare)
CSS sorgente (User-Agent browser → woff2):
```
https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap
```
woff2 estratti dal CSS sopra (subset latin / latin-ext, Inter v20):
```
latin : https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2
latin-ext : https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2
```
> Nota: gli hash nelle URL gstatic possono cambiare a nuove versioni di Inter.
> Se serve rigenerare, riscaricare la CSS con UA browser e ripescare i blocchi
> `/* latin */` e `/* latin-ext */`.