Come usare i token di colore semantici

Come usare i token di colore semantici. Un vero stato In review accompagna una mappa editoriale dei ruoli, senza dedurre dal ritaglio i nomi dei token implementati.

Il tuo marchio usa il verde. Il pulsante principale è verde, il messaggio di successo è verde e la navigazione selezionata è verde. Tutto sembra coordinato finché il marchio passa al viola. Anche un upload riuscito dovrebbe diventare viola? E il contorno del focus o l’avviso accanto a un account in scadenza?

I token semantici rendono esplicite queste decisioni. Un primitivo nomina un valore, come green-700. Un token semantico nomina un compito, come action-primary-background o status-success-text. I componenti si riferiscono al compito, così il nuovo marchio cambia i ruoli previsti senza cambiare accidentalmente ogni tonalità simile.

Parti dall’errore da prevenire

Immagina uno spazio con un pulsante «Crea progetto», una conferma «Salvato», un messaggio d’errore e un link laterale selezionato. Il designer originale scelse lo stesso verde scuro per pulsante, conferma e link. Uno sviluppatore memorizzò ragionevolmente il valore una volta e lo riutilizzò. Ora la nuova direzione del marchio richiede un colore primario diverso.

Cambiare la variabile verde condivisa aggiorna tutti e tre. L’implementazione è coerente col codice originale, ma la decisione è sbagliata: la conferma era verde perché comunica successo, non perché rappresenta l’azione principale del marchio. La distinzione era nella testa del designer e non raggiunse le regole riutilizzabili.

Prima di aggiungere token, scrivi la distinzione in parole comuni. «L’azione principale segue il marchio del prodotto. Il feedback di successo mantiene il senso del suo stato. La selezione richiede uno stato attivo chiaro». Queste frasi valgono più di una convenzione di nomi perché dicono quali valori possano cambiare insieme in sicurezza.

Come Atlassian rende visibile il ruolo

Le indicazioni cromatiche Atlassian associano una board Jira a token di selezione, testo e sfondo del pulsante brand. Distinguono ruolo, enfasi e stato. Separano anche selezione e focus: aggiungere il focus non elimina il trattamento selezionato.

Screenshot Jira pubblicato da Atlassian con token per navigazione selezionata, testo discreto e sfondo del pulsante brand.

Un’interfaccia annotata serve più di una palette da sola. Un campione mostra il valore; la board mostra quale parte dell’esperienza debba consumarlo e perché. Puoi verificare se l’etichetta riguardi testo, superficie o icona, anziché dedurre l’uso dalla saturazione apparente.

In un sistema piccolo, prendi questa abitudine prima dell’intero catalogo di nomi. Metti il token proposto accanto a un uso reale, descrivi cosa lo farebbe cambiare e mostra un uso che non deve controllare. Azione brand e operazione riuscita possono partire dallo stesso verde restando decisioni indipendenti. Senza questa distinzione, la mappa conserva una palette anziché la semantica dell’interfaccia.

Rendi concreto il test di dipendenza

Una piccola mappa di alias espone l’errore. Qui successo e azione partono uguali ma con ruoli distinti:

:root {
  --palette-green-700: #236646;
  --palette-purple-700: #6439a8;
  --action-primary-bg: var(--palette-green-700);
  --action-primary-fg: #fff;
  --status-success-text: var(--palette-green-700);
}
[data-brand="purple"] {
  --action-primary-bg: var(--palette-purple-700);
}

Cambiare l’attributo brand dovrebbe modificare i consumatori di --action-primary-bg, non una conferma che usa --status-success-text. Se cambiano entrambi, controlla i riferimenti effettivi dei componenti prima di scegliere un’altra tinta. Se non cambia nessuno, cerca un colore hardcoded o un override più specifico. È un test della dipendenza; i valori illustrativi richiedono ancora verifiche di contrasto nei contesti reali.

Poi verifica primo piano e sfondo insieme. Superficie e testo dell’azione sono una coppia. Cambiare solo il fondo può rendere illeggibile una scritta, soprattutto passando da scuro a chiaro. Documenta il legame perché cambiare uno avvii la verifica dell’altro, senza affidarsi alla memoria.

Verifica la migrazione in tre passaggi:

  1. Valori invariati. Introduci alias e confronta la base visiva. Differenze inattese suggeriscono errori di mappatura.
  2. Un ruolo cambiato temporaneamente. Guarda consumatori attesi ed elementi che devono restare uguali.
  3. Tema approvato ripristinato. Rivedi hover, focus, disabilitato e selezione. Distingui valori grezzi deliberati da migrazione incompleta.
Il nome di un token promette un comportamento al cambiamento.

Due usi possono condividere oggi un valore ma richiedere ruoli diversi. Uniscili solo quando cambiare uno deve intenzionalmente cambiare l'altro.

Valori, ruoli e decisioni del componente

Un piccolo sistema può iniziare con due livelli. Quello dei valori conserva i colori effettivi; quello dei ruoli li associa agli scopi dell’interfaccia. Un terzo livello specifico del componente è utile quando una parte deve evolvere indipendentemente, ma non è obbligatorio per ogni progetto piccolo.

neutral-950 può contenere il neutro più scuro e servire sia text-primary sia border-strong. Le due decisioni restano separate: migliorare il corpo non deve per forza scurire ogni bordo. Valori uguali oggi non provano un nome condiviso per sempre.

L’errore opposto è creare un token unico per ogni elemento visibile. Se tutti i normali paragrafi hanno lo stesso ruolo, un token testuale per ciascuno aggiunge manutenzione senza senso. Chiedi se vorresti mai cambiare intenzionalmente un uso senza l’altro. Se sì, valuta ruoli separati; se no, riusa quello esistente.

Livello Esempio Domanda
Primitivo green-700 Quale valore è disponibile?
Semantico status-success-text Cosa fa il colore?
Componente, se serve toast-success-icon Quale parte richiede controllo indipendente?

I nomi aiutano a scegliere senza aprire ogni componente. Chi cerca il bordo d’errore non dovrebbe indovinare se accent-strong, special-red o brand-secondary significhi pericolo. Meglio un ruolo chiaro di un’abbreviazione furba, soprattutto con un coding agent.

green-700 è associato separatamente ad action-primary-background per Create Project e status-success-text per Changes saved.

Mappa i colori sui ruoli UI

Inizia esaminando una pagina rappresentativa in più stati. Uno screenshot del dashboard standard non mostra azioni disabilitate, validazione, focus da tastiera o menu selezionato. Servono abbastanza stati per scoprire i veri compiti del colore, non ogni possibilità teorica che un’organizzazione grande potrebbe supportare un giorno.

Per lo spazio fittizio, la prima mappa può coprire fondo pagina, superficie rialzata, testo principale e secondario, bordo ordinario, azione principale e suo testo, selezione, focus, successo, avviso ed errore. Alcuni ruoli richiedono una coppia di primo piano e sfondo. Una superficie di successo pallida e il suo testo scuro sono valori diversi con uno scopo comune.

La prima revisione è un esercizio di mappatura. Segna ogni colore visibile e chiedi cosa comunichi. Se un pannello verde chiaro raggruppa soltanto controlli collegati, appartiene a una superficie o raggruppamento. Se annuncia un successo, è feedback. Possono sembrare simili, ma le modifiche future seguono regole diverse.

Tieni la descrizione scritta accanto al nome del token. «Sfondo dell’azione principale: l’azione disponibile più importante in una sezione» è più utile del solo «verde». Se è probabile che sorgano dubbi, aggiungi un controesempio: il token non significa «qualsiasi elemento che vogliamo far notare». Un messaggio di errore importante richiede comunque il trattamento di feedback appropriato.

Prova un cambio di marchio prima di impegnarti

Ecco un esempio volutamente piccolo. Lo spazio parte con azione brand e successo verdi. Più tardi l’azione cambia tonalità di marca. Vuoi che pulsante e navigazione selezionata seguano la nuova direzione, mentre «Salvato» conserva il ruolo riconoscibile di successo.

Per prima cosa, identifica i ruoli interessati dalla decisione sul marchio. Lo sfondo del pulsante e il testo in primo piano devono essere valutati insieme. La selezione può usare una superficie o un indicatore separato, derivato dal marchio. Il logo è una risorsa del marchio, non un normale token per pulsanti: non ricolorarlo attraverso una regola generale dell’interfaccia senza considerare i requisiti specifici della risorsa.

Poi cambia la mappatura dei ruoli in una copia della pagina. Non cercare e sostituire indiscriminatamente ogni occorrenza del vecchio hex. La ricerca dei valori grezzi trova candidati, ma non dice se un’occorrenza sia link, successo o dettaglio illustrato.

Infine, esamina tutti gli elementi che usano i ruoli modificati. L’azione principale può apparire su una pagina bianca, su un pannello chiaro e dentro una finestra di dialogo. Un nuovo colore di riempimento che risalta in un contesto può confondersi con lo sfondo in un altro. La modifica della mappatura è completa soltanto quando gli usi previsti continuano a comunicare l’azione giusta e restano leggibili.

Elemento Comportamento previsto
Crea progetto Verificare coppia sfondo e testo
Voce selezionata nella barra laterale Verificare separatamente lo stile di selezione
Conferma Salvato Conservare successo salvo ridisegno del feedback
Email invalida Conservare errore e spiegazione
Logo Seguire l’asset approvato, non la sostituzione generica

Stati senza un colore per tutto

L’aspetto predefinito è soltanto una parte del comportamento. Hover, premuto, focus, selezionato e disabilitato possono dire cose diverse. La navigazione può restare selezionata mentre riceve focus; un pulsante può avere focus senza pressione. Non ridurre tutte le condizioni a un solo colore «attivo».

Parti dall’informazione che ogni stato deve comunicare. Hover indica la relazione con il puntatore; il focus dice a chi usa la tastiera dove avverrà l’interazione. La selezione identifica una scelta persistente. I trattamenti visivi possono condividere alcuni elementi, ma devono restare distinguibili quando gli stati si presentano insieme. Un bordo, una sottolineatura, un’icona o una forma possono trasmettere parte del messaggio.

Per la sidebar potresti usare uno sfondo di selezione delicato e un contorno di focus chiaro. Il contorno non dovrebbe sparire perché l’elemento è già selezionato. Rivedi direttamente lo stato combinato: campioni isolati non mostrano se i trattamenti interferiscano nel componente reale.

Anche lo stile disabilitato richiede attenzione. Un’azione disabilitata ha bisogno di una spiegazione quando l’utente non può dedurne il motivo. Rendere grigio un pulsante non chiarisce se manca un campo obbligatorio, se manca un permesso o se un’operazione è già in corso. Un token definisce un ruolo visivo, ma non può sostituire la logica dell’interazione o il testo esplicativo.

Mantieni visibili le eccezioni dei componenti. Se una conferma distruttiva richiede un pulsante diverso, documentane lo scopo anziché sostituire silenziosamente il token principale in un solo dialogo. L’eccezione può essere legittima; il problema comincia quando nessuno distingue scelta intenzionale e scorciatoia occasionale.

Colore con significato leggibile

Il colore facilita la scansione, ma il significato deve sopravvivere quando la tinta è difficile da distinguere. Un bordo rosso da solo lascia dedurre l’errore. Etichetta e correzione utile rendono comprensibile lo stato. Allo stesso modo, icona con «Modifiche salvate» comunica più di un punto verde senza etichetta.

La guida W3C all’uso del colore spiega di non affidare al solo colore informazioni o identificazione di un’azione. Applicalo a ogni ruolo nel contesto. Qui i messaggi hanno testo leggibile, gli elementi selezionati un trattamento visibile e i link si identificano oltre una lieve differenza cromatica.

Il contrasto richiede una verifica separata. Una tinta può comunicare il senso giusto ed essere comunque troppo tenue per leggere. Valuta coppie di testo e sfondo invece di chiamare genericamente «accessibile» un campione brand. Testo scuro su successo chiaro è diverso da testo bianco su pulsante saturo.

Per il testo normale, il criterio WCAG sul contrasto minimo richiede generalmente un rapporto di 4.5:1; per il testo che soddisfa i requisiti dimensionali del testo grande, il rapporto è 3:1, con eccezioni definite. La spiegazione W3C ne precisa ambito e dettagli. Misura la coppia effettiva di colori e il suo uso nella pagina: il superamento della verifica per una coppia non certifica un componente, un tema o l’intero sito.

I valori precedenti rendono concreto il punto. La luminanza relativa di verde #236646 e viola #6439a8 dà contrasti di 6.86:1 e 7.80:1 contro il bianco. Contro il nero gli stessi fill danno 3.06:1 e 2.69:1. Entrambi sostengono quindi il testo bianco alla soglia normale, nessuno il nero. Lo stabiliscono i valori specifici della coppia, non il nome semantico. Associa il calcolo alla coppia perché un futuro marchio più chiaro avvii una verifica nuova.

Contrasto dei fill verde e viola: testo bianco 6.86:1 e 7.80:1; nero 3.06:1 e 2.69:1.

Non correggere ogni problema scurendo tutta l’interfaccia. Verifica quale ruolo non funzioni, su quale superficie e in quale stato. Anche il testo secondario deve poter essere letto: chiamare «subtle» un messaggio di aiuto troppo pallido non lo migliora. Al contrario, trasformare tutti i separatori in linee scure e pesanti può cancellare la gerarchia che il sistema doveva creare.

Tema scuro come nuova mappa

Il tema scuro è uno stress test utile perché separa scopo e aspetto. Il testo primario resta tale, ma cambia valore. Una superficie rialzata deve distinguersi dalla pagina. Il successo resta comprensibile anche con valori diversi dalla versione chiara.

Non limitarti a invertire i colori primitivi o a riutilizzare i valori del tema chiaro su una pagina scura. Rivedi le relazioni fra gli elementi. Un’azione brillante che appariva equilibrata sul bianco può dominare una superficie scura; un bordo appena visibile su un pannello chiaro può scomparire. Anche immagini, loghi e grafici possono richiedere decisioni che esulano dalla mappa dei colori semantici.

Usa gli stessi contenuti nelle due anteprime. Altrimenti densità e immagini possono distrarre dalle decisioni cromatiche. Includi errore di modulo, successo, navigazione selezionata, controllo focalizzato e testo secondario. Offrono un confronto più utile di una galleria di bei pulsanti predefiniti.

I nomi dei ruoli devono restare stabili durante il confronto. Se nel tema scuro rinomini text-primary in white-text, stai rimettendo un valore nel nome che doveva descrivere una funzione. Mantieni costante il significato e cambia la mappatura che lo serve.

Moduli impostazioni chiaro e scuro mantengono i ruoli Save Changes e Changes saved con colori di testo, superfici e stati specifici del tema.

Dai all’agent la mappa, non soltanto la palette

Quando chiedi a un agent di affinare una pagina, fornisci le decisioni sui ruoli insieme al riferimento visivo. Uno screenshot mostra i colori attuali, ma non spiega quali debbano restare collegati durante un cambio di marchio o quali combinazioni di stati debbano continuare a funzionare. Una breve tabella di mappatura e un componente rappresentativo rendono molto più facile verificare l’intento.

Nelle anteprime HTML supportate da OpenDesign, puoi esaminare il risultato renderizzato, usare i controlli manuali disponibili per modificare gli stili e aggiungere commenti all’area pertinente per discuterne nella conversazione. Usa queste possibilità per indicare una discrepanza concreta, come un messaggio di esito positivo che usa lo stile dell’azione principale. Il feedback dovrebbe specificare sia il ruolo previsto sia la posizione visibile.

Per esempio, chiedi di aggiornare la mappatura dell’azione principale preservando i ruoli di successo ed errore, quindi di mostrare gli usi dei pulsanti interessati nei diversi stati. Se il progetto segue già convenzioni per i token, fornisci quei file o il relativo contesto di design. Evita di richiedere un sistema di nomi completamente nuovo per una piccola correzione cromatica.

Dopo la correzione visiva, esamina il riferimento del componente nei file generati. Un pulsante può sembrare corretto consumando ancora il token di successo; il prossimo cambio tema rivelerà la stessa dipendenza sbagliata.

Migra prima un componente rappresentativo

Puoi introdurre ruoli semantici senza sostituire l’intero sito in un solo passaggio. Scegli un componente con diversi stati significativi, come il modulo di creazione di un progetto. Elenca i valori attuali, stabilisci il ruolo di ciascuno e associa i ruoli alla palette esistente. Inizialmente, l’aspetto visivo può restare quasi invariato.

Poi cambia la mappatura di un ruolo come prova controllata. Se le azioni principali devono cambiare insieme, verifica che lo facciano i pulsanti previsti. Se i messaggi di stato devono restare indipendenti, verifica che non cambino con il colore dell’azione. Il test riguarda la dipendenza, non l’adeguatezza del colore temporaneo come scelta definitiva per il marchio.

Tieni un elenco degli elementi che usano ancora valori grezzi. In alcuni casi la scelta è intenzionale: un’illustrazione, il logo di un partner o una visualizzazione di dati possono non appartenere allo stesso ruolo dell’interfaccia. Altri casi richiedono ancora la migrazione. Segnala la distinzione, così chi prosegue non scambierà una conversione incompleta per un’eccezione approvata.

Quando il componente rappresentativo si comporta correttamente, estendi la migrazione ai componenti collegati. Esamina la pagina renderizzata dopo ogni gruppo significativo, anziché fidarti di una sostituzione globale. Le regole condivise possono influenzare contesti che non avevi aperto. Una migrazione circoscritta permette di individuarli prima che il confronto dell’intera interfaccia diventi più difficile.

Cosa lascia una revisione utile

La revisione finale dovrebbe lasciare una mappa utilizzabile da altre persone: nomi dei ruoli, scopi previsti, valori correnti per ogni tema supportato e alcuni componenti rappresentativi che ne mostrino il comportamento. Aggiungi note quando un ruolo deve essere associato a un altro, come il testo sullo sfondo di un’azione. Registra le eccezioni significative senza trasformare ogni pixel in una regola separata.

Chiedi a un collega di usare la mappa per scegliere il token per un nuovo messaggio di esito positivo e per una nuova azione principale. Se sceglie correttamente senza indovinare dai campioni di colore, il sistema sta facendo un lavoro utile. Se entrambe le scelte portano ancora a «usa il verde del marchio», chiarisci le descrizioni dei ruoli prima di aggiungere altri token.