GrignaDesign System

Spazi, raggi ed elevazione

Spazi
space-2xs ·
space-xs ·
space-sm ·
space-md ·
space-lg ·
space-xl ·
space-2xl ·
space-3xl ·
Raggi
radius-control
radius-card
radius-overlay
radius-pill
Elevazione
elevation-flat
elevation-raised
elevation-overlay

Spazi

Una scala su base 4px, con otto nomi. Tra un elemento e l'altro si usa sempre uno di questi.

TokenValoreUso tipico
--grigna-space-2xs4pxTra icona e testo piccolo
--grigna-space-xs8pxTra elementi dello stesso gruppo
--grigna-space-sm12pxMargine interno dei campi, tra righe di dati
--grigna-space-md16pxMargine interno delle schede, margine laterale su mobile
--grigna-space-lg24pxTra gruppi diversi
--grigna-space-xl32pxTra sezioni
--grigna-space-2xl48pxSopra i titoli di sezione
--grigna-space-3xl64pxRespiro di pagina

Regola pratica: più due cose sono legate, più stanno vicine. Gli spazi crescono passando da "dentro un elemento" a "tra elementi" a "tra sezioni".

Raggi

TokenValoreUso
--grigna-radius-control8pxBottoni, campi
--grigna-radius-card12pxSchede, pannelli
--grigna-radius-overlay16pxFinestre di dialogo, fogli dal basso
--grigna-radius-pilltondoBadge, filtri, etichette di stato

Gli angoli sono generosi, per un tono amichevole. Un bordo su un solo lato non si arrotonda.

Elevazione

Tre livelli. Più un elemento è "sopra" la pagina, più ombra ha.

TokenUso
--grigna-elevation-flatElementi nel flusso della pagina: nessuna ombra
--grigna-elevation-raisedSchede
--grigna-elevation-overlayMenu, finestre di dialogo, fogli dal basso, hover delle schede cliccabili

Nel tema scuro le ombre si vedono poco: l'elevazione si legge soprattutto da surface-raised, che è più chiara della pagina. Per questo un elemento elevato usa sempre entrambi: superficie e ombra.

Misure

TokenValoreUso
--grigna-size-touch-target44pxArea minima di tocco di ogni elemento interattivo
--grigna-size-text-min16pxDimensione minima del testo corrente
--grigna-size-icon-sm / -md / -lg16 / 20 / 24pxIcone
--grigna-size-focus-ring2pxSpessore dell'anello del focus

Layout

TokenValoreUso
--grigna-size-page-max1200pxLarghezza massima del contenuto della pagina, centrato
--grigna-size-card-min280pxLarghezza minima di una scheda in una griglia

Una griglia di schede che si adatta da sola a telefono e computer:

.pagina { max-width: var(--grigna-size-page-max); margin-inline: auto; padding-inline: var(--grigna-space-md); }
.schede { display: grid; gap: var(--grigna-space-lg);
          grid-template-columns: repeat(auto-fill, minmax(min(100%, var(--grigna-size-card-min)), 1fr)); }

Punto di rottura: 768px. Sotto è telefono, sopra è tablet e computer. Nelle media query il CSS non accetta variabili, quindi è l'unico valore che si scrive a mano: @media (min-width: 768px). Prima di usarlo, chiediti se una griglia che si adatta da sola non basta già.

(Valori scelti il 30/10/2026.)


Per gli agenti

Sempre

  • margin, padding e gap con --grigna-space-*.
  • border-radius con --grigna-radius-*.
  • box-shadow con --grigna-elevation-*, insieme a --grigna-color-surface-raised.
  • Elementi interattivi alti almeno --grigna-size-touch-target.
  • Larghezza della pagina con --grigna-size-page-max, griglie di schede con --grigna-size-card-min.
  • Nelle media query solo il punto di rottura 768px.

Mai

  • Mai valori in px scritti a mano per spazi, raggi e ombre (fanno eccezione i bordi da 1px).
  • Mai valori "a metà" (10px, 14px, 20px di spazio): se servono davvero, si aggiungono al sistema e non si improvvisano.
  • Mai ombre colorate o sfumate fatte a mano.