Skip to content

feat(home): redesign della homepage (card, pilastri interattivi, indice) - #13

Merged
marcofarina merged 8 commits into
mainfrom
feat/home-redesign
Jul 12, 2026
Merged

feat(home): redesign della homepage (card, pilastri interattivi, indice)#13
marcofarina merged 8 commits into
mainfrom
feat/home-redesign

Conversation

@marcofarina

Copy link
Copy Markdown
Owner

Riepilogo

Redesign della homepage. Il branch raccoglie più rifiniture; l'ultimo intervento è la riprogettazione della sezione Indice.

Sezione Indice (ultimo commit)

Reimplementa ChapterIndex seguendo il template Claude Design "Indice - Redesign v2":

  • Segmented control a 4 volumi con indicatore scorrevole animato, kicker VOL. 0N, icona e nome.
  • Header con il nome del volume attivo in corsivo; lista capitoli compatta con numero, titolo, conteggio in lezioni e freccia in hover.
  • Footer "volume in stesura · nuovi capitoli in arrivo" su tutti e 4 i volumi.
  • Icone duotone Font Awesome e accenti per volume identici alle VolumeCard a inizio pagina (blu/rosa/ambra/verde, varianti light/dark).
  • Template hardcoded dark adattato ai token --at-* del sito, motion/radius dai token di sistema, guardia prefers-reduced-motion.

Altri interventi del branch

  • Icone duotone FA per le 4 card dei volumi.
  • Pilastri interattivi nella sezione "imparare facendo".
  • Icone-tab duotone animate + rifiniture blocco "molto altro".
  • Fix sullo spotlight delle card (uscita senza salti/«appeso»).

Verifiche

  • npm run typecheck ✓ · npm run lint ✓ · npm run build ✓ (gate link verde)
  • Resa visiva confermata in dark e light; switch volume, indicatore e footer draft funzionanti.

Note

Le righe dell'indice non sono link (TOC in gran parte pianificata, non ancora scritta — collegarla romperebbe la build con onBrokenLinks: 'throw'). Si cablano quando i capitoli esisteranno.

🤖 Generated with Claude Code

marcofarina and others added 8 commits June 27, 2026 15:00
Sostituisce gli SVG line-style inline delle VolumeCard con le icone
Font Awesome Pro 7.1.0 in stile duotone (primario currentColor +
secondario opacity .4), una per accent del volume:

- Vol 1 Programmatore → brackets-curly
- Vol 2 Artefice → compass-drafting
- Vol 3 Archivista → database
- Vol 4 Apprendista → book-open-cover

Il colore continua a derivare da --vol-icon-color, quindi nessuna
modifica al CSS delle card.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YbpGP9DBqBWuJKczky3Pxi
…endo"

I box 2 e 3 erano placeholder "Prossimamente" benché i componenti
fossero già in produzione: ora mostrano la cosa reale, e si aggiunge
una tab per SQL.

- Tab 2 "Database dal vivo": SQLRunner sul dataset archivista/biblioteca,
  query con JOIN + GROUP BY eseguita al mount (runOnMount).
- Tab 3 "Algoritmi animati": <Algorithm name="bubble-sort"> reale al
  posto del pannello statico.
- Tab 4 "Cerca, non sfogliare": campo che apre la modale Pagefind reale
  via CustomEvent 'pdb:open-search' (nuovo listener in SearchBar),
  al posto dell'input finto disabilitato.
- Griglia tab 3 → 4 colonne (2 su tablet, 1 su mobile); sottotitolo
  non più legato a "tre cose".
- Nuovo blocco "E molto altro ancora…": tre peculiarità descrittive
  (percorsi adattivi, spiegamelo facile, esercizi↔teoria) con icone
  duotone FA dedicate. Scelta condivisa per non moltiplicare le tab.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YbpGP9DBqBWuJKczky3Pxi
- Le 4 icone delle tab passano a Font Awesome duotone, coerenti con le
  card-volumi: circle-play, table-cells, chart-simple, magnifying-glass.
  chart-simple (barre) sostituisce il grafo-nodi, che non evocava gli
  algoritmi.
- All'hover sulla card ogni icona si anima a tema (pulse / nudge /
  «riordino» delle barre / scan della lente), con guardia reduced-motion.
- SearchDuotone è riusata anche nel campo di ricerca (resa neutra/muted).
- Testi blocco «E molto altro ancora»: indirizzi → «Informatica, Liceo
  Scienze Applicate o ITS»; «Spiegamelo facile» riformulato (l'IA non è
  nel sito: si copia un prompt o lo si manda al proprio LLM); riferimenti
  a «lezione» invece di «capitolo».

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YbpGP9DBqBWuJKczky3Pxi
Il glow è il pseudo-elemento ::before che segue il cursore via
--at-mx/--at-my. La regola .cardActive::before { opacity: 1 } lo teneva
sempre acceso e la posizione non veniva mai resettata: uscendo dalla tab
attiva il glow restava fermo all'ultimo punto del mouse.

Ora lo spotlight è legato solo a :hover (la card attiva resta distinta da
bordo accent + ombra interna) e onMouseLeave azzera --at-mx/--at-my per
evitare il riapparire all'angolo al rientro.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YbpGP9DBqBWuJKczky3Pxi
Il reset di --at-mx/--at-my su onMouseLeave riportava il gradient al
default (centro) mentre l'opacità stava ancora calando (transition 0.3s):
si vedeva il glow «saltare» al centro prima di spegnersi. Rimosso il
reset: la posizione resta congelata all'ultimo punto del cursore e il
glow semplicemente sfuma lì.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YbpGP9DBqBWuJKczky3Pxi
Reimplementa la sezione Indice della homepage seguendo il template
Claude Design "Indice - Redesign v2": segmented control a 4 volumi con
indicatore scorrevole, header con nome del volume attivo, lista capitoli
compatta e footer "volume in stesura".

- Icone duotone Font Awesome e accenti per volume identici alle
  VolumeCard a inizio pagina (blu/rosa/ambra/verde, varianti light/dark)
- Conteggio per riga in lezioni anziché sezioni
- Tutti e 4 i volumi marcati come "in stesura"
- Template hardcoded dark adattato ai token --at-* del sito (light/dark),
  motion/radius dai token di sistema, guardia prefers-reduced-motion

Bump minor: 0.9.0 -> 0.10.0

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YbpGP9DBqBWuJKczky3Pxi
Indicatore del segmented control (ChapterIndex):
- riposiziona l'indicator al reflow da caricamento font asincrono via
  ResizeObserver su segRef (prima restava sbagliato per tutta la sessione:
  il listener resize non scattava al cambio dimensione dei pulsanti).
- non rimonta più il listener a ogni cambio tab: deps [] + activeRef, così
  la rimonta non emette una notifica che sovrascriveva l'animazione di slide.
- moveIndicator memoizzata con useCallback (tutte ref stabili): rimossi i due
  eslint-disable exhaustive-deps, deps corrette su entrambi gli effect.
- activeRef aggiornata nel layout effect, non più durante il render
  (react-hooks/refs).

Cleanup:
- icone duotone dei volumi (FA Pro 7.1.0) estratte in
  src/components/VolumeIcons come sorgente unica con prop `size`: erano
  duplicate identiche tra index.tsx (22px) e ChapterIndex (20px).
- evento 'pdb:open-search' centralizzato in src/lib/events.ts (OPEN_SEARCH_EVENT)
  e condiviso tra BentoFeatures (dispatch) e SearchBar (listener): una rinomina
  ora rompe in compilazione invece di rendere il click un no-op silenzioso.

Bump a 0.11.0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YbpGP9DBqBWuJKczky3Pxi


ChapterIndex:
- roving tabindex corretto: con le frecce il focus segue il tab attivo
  (prima restava su un bottone con tabIndex -1 e il Tab si perdeva).
- le righe dei capitoli già pubblicati tornano link (intro dei 4 volumi +
  le 5 lezioni dell'Artefice); freccia e hover solo su quelle, le voci
  pianificate restano statiche senza affordance da click.
- commento sul dato VOLUMES: TOC pianificata, conteggi lezioni di progetto.

BentoFeatures:
- varianti pastello dark per le icone-tab (#0891b2/#7c3aed/#a21caf) e per
  gli accenti del blocco «molto altro», ora in classi CSS per-accent invece
  che inline style (stesso schema light/dark degli accent dei volumi).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P4vrKns6NFfnFXGqjZTb8B
@marcofarina
marcofarina merged commit c78b568 into main Jul 12, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant