Tailwind CSS Academy · Lezione

Token primitivi e semantici

Definisca token primitivi come color.blue.500 e token semantici come color.primary, quindi li associ nella configurazione di Tailwind per ottenere temi flessibili.

Lezione 1 di 413 passaggi

Token primitivi e semantici è una lezione Tailwind CSS Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Tailwind CSS Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Tailwind CSS Academy include 4 lezioni in totale.

Cosa sono i token di design?

I token di design sono valori con nome che memorizzano le decisioni visive di un design system: colori, spaziature, dimensioni dei caratteri e altro. Invece di inserire direttamente #3b82f6 in tutto il CSS, gli assegnate un nome e fate riferimento a quel nome ovunque. In questo modo create una singola fonte di verità, facile da aggiornare globalmente. La configurazione di Tailwind è una sede naturale per i token di design, perché genera classi utility a partire da quei valori con nome.

Definizione dei token primitivi

I token primitivi sono valori grezzi e descrittivi a cui non è associato alcun significato semantico. Descrivono che cosa è un valore, non dove viene utilizzato. Tra gli esempi ci sono color.blue.500, spacing.4 o fontSize.lg. La palette di colori predefinita di Tailwind è composta interamente da primitivi: blue-500, red-300 e così via. I primitivi vengono usati per costruire il livello semantico superiore.

// Primitive tokens in tailwind.config.js
module.exports = {
  theme: {
    extend: {
      colors: {
        'blue-brand': '#3b82f6',
        'blue-brand-dark': '#1d4ed8',
        'red-danger': '#ef4444',
        'green-success': '#22c55e'
      }
    }
  }
}

Definizione dei token semantici

I token semantici descrivono lo scopo di un valore, non il suo aspetto grezzo. Invece di blue-500, definireste color.primary. Invece di red-500, definireste color.danger. I token semantici rendono il codebase guidato dall'intento: uno sviluppatore che legge text-primary capisce immediatamente che si tratta del colore principale del brand, indipendentemente da quale sia effettivamente quel colore. Questa astrazione consente di applicare facilmente temi diversi e rinnovare il brand.

// Semantic tokens built on top of primitives
module.exports = {
  theme: {
    extend: {
      colors: {
        primary: '#3b82f6',      // maps to blue-brand primitive
        'primary-hover': '#1d4ed8',
        danger: '#ef4444',       // maps to red-danger primitive
        success: '#22c55e'       // maps to green-success primitive
      }
    }
  }
}

Architettura dei token a due livelli

Un sistema di token robusto utilizza due livelli: i primitivi alla base e i token semantici al livello superiore. Il livello dei primitivi memorizza ogni valore grezzo che potrebbe essere utilizzato nel design. Il livello semantico associa questi primitivi a nomi legati al loro scopo. Quando cambia il colore del brand, è sufficiente aggiornare una volta il primitivo e ogni token semantico che vi fa riferimento eredita automaticamente la modifica. Questa separazione delle responsabilità è fondamentale per creare sistemi di design scalabili.

// Two-layer architecture
const primitives = {
  blue500: '#3b82f6',
  blue700: '#1d4ed8',
  gray900: '#111827'
};

// tailwind.config.js semantic layer
module.exports = {
  theme: {
    extend: {
      colors: {
        primary: primitives.blue500,
        'primary-dark': primitives.blue700,
        'text-base': primitives.gray900
      }
    }
  }
}

Utilizzo dei token semantici nel markup

Dopo aver registrato i token semantici nella configurazione di Tailwind, questi diventano disponibili come classi di utilità in tutte le utility che accettano un colore. È possibile utilizzare bg-primary, text-primary, border-primary e ring-primary: tutte fanno riferimento allo stesso valore semantico. In questo modo, modificando il colore primario nella configurazione, ogni elemento dell'interfaccia che utilizza queste utility semantiche viene aggiornato immediatamente.

<button class="bg-primary hover:bg-primary-dark text-white px-4 py-2 rounded-lg">
  Save Changes
</button>

<span class="text-danger font-medium">Error: field required</span>

<div class="border border-success bg-success/10 p-3 rounded">
  Successfully saved!
</div>

Convenzioni di denominazione dei token

Una buona denominazione dei token segue uno schema coerente che comunica il ruolo e la scala. Una convenzione comune utilizza category.role.modifier; ad esempio color.action.default, color.action.hover e color.action.disabled. Eviti nomi troppo specifici come submit-button-blue: non appena vorrà riutilizzare il token altrove, questi nomi diventeranno limitanti. Scelga nomi che descrivano intento e scala, non l'implementazione visiva.

// Good naming: intent-based
colors: {
  'action-default': '#3b82f6',
  'action-hover': '#1d4ed8',
  'action-disabled': '#93c5fd',
  'surface-base': '#ffffff',
  'surface-raised': '#f8fafc',
  'text-primary': '#111827',
  'text-muted': '#6b7280'
}

// Avoid: too specific or too abstract
// 'btn-blue', 'thing1', 'color7'

Associazione dei primitivi ai token semantici

Il modo più pulito per mantenere l'architettura a due livelli consiste nel definire i primitivi come costanti JavaScript in un file separato e importarli nella configurazione di Tailwind. In questo modo i primitivi rimangono leggibili e riutilizzabili, mentre la configurazione contiene solo le associazioni semantiche. Quando un designer modifica la palette del brand, è sufficiente aggiornare il file dei primitivi: l'associazione semantica rimane invariata.

// tokens/primitives.js
module.exports = {
  blue50: '#eff6ff',
  blue500: '#3b82f6',
  blue700: '#1d4ed8',
  rose500: '#f43f5e',
  gray100: '#f3f4f6',
  gray900: '#111827'
};

// tailwind.config.js
const p = require('./tokens/primitives');
module.exports = {
  theme: {
    extend: {
      colors: {
        primary: p.blue500,
        'primary-hover': p.blue700,
        'primary-light': p.blue50,
        danger: p.rose500
      }
    }
  }
}

Token semantici per spaziatura e tipografia

I token non si limitano ai colori. È possibile definire anche token semantici per la spaziatura e la tipografia. Invece di p-4, un token semantico per la spaziatura chiamato card-padding comunica a cosa serve quello spazio. In Tailwind, questi token vengono aggiunti in theme.extend.spacing e theme.extend.fontSize. In questo modo si garantisce la coerenza dell'interfaccia: ogni card dell'app utilizza la stessa spaziatura p-card, che deve essere modificata una sola volta.

module.exports = {
  theme: {
    extend: {
      spacing: {
        'card': '1.5rem',     // p-card = 24px
        'section': '5rem',    // py-section = 80px
        'nav-height': '4rem'  // h-nav-height
      },
      fontSize: {
        'hero': ['3.5rem', { lineHeight: '1.1' }],
        'body': ['1rem', { lineHeight: '1.6' }]
      }
    }
  }
}

Token per gli stati interattivi

È altrettanto importante definire token per gli stati interattivi. Un pulsante primario richiede token per l'aspetto predefinito, al passaggio del mouse, attivo e disabilitato. Senza token semantici, ogni sviluppatore potrebbe scegliere tonalità leggermente diverse per lo stato hover, creando un'incoerenza visiva. Con token semantici come action-hover e action-disabled, ogni pulsante del sistema reagisce allo stesso modo all'interazione dell'utente.

<button
  class="bg-action-default hover:bg-action-hover active:bg-action-active
         disabled:bg-action-disabled disabled:cursor-not-allowed
         text-white px-5 py-2.5 rounded-lg transition-colors"
>
  Submit
</button>

<!-- tailwind.config.js colors:
  action-default: '#3b82f6'
  action-hover:   '#1d4ed8'
  action-active:  '#1e40af'
  action-disabled:'#93c5fd'
-->

Token tra modalità chiara e scura

I token semantici esprimono il loro massimo potenziale se combinati con la modalità scura. Un token primitivo come blue-500 ha un valore fisso, mentre un token semantico come primary può essere associato a primitivi diversi nella modalità chiara e in quella scura. Utilizzare le variabili CSS come collegamento consente di cambiare modalità a runtime senza rigenerare il CSS. Questa tecnica viene approfondita nel modulo sui temi, ma comprendere che i token semantici la rendono possibile è un'importante intuizione architetturale.

/* global.css */
:root {
  --color-primary: #3b82f6;
  --color-surface: #ffffff;
  --color-text: #111827;
}

.dark {
  --color-primary: #60a5fa;
  --color-surface: #1f2937;
  --color-text: #f9fafb;
}

/* tailwind.config.js */
colors: {
  primary: 'var(--color-primary)',
  surface: 'var(--color-surface)',
  'text-base': 'var(--color-text)'
}

Verifica e manutenzione dei token

Man mano che un sistema di design cresce, le verifiche dei token diventano essenziali. Una verifica controlla se ogni token è effettivamente utilizzato, se alcuni token si sono discostati dallo scopo documentato e se sono emersi nuovi pattern che richiedono un nuovo token. Strumenti come grep o gestori dedicati dei design token possono analizzare la codebase alla ricerca dei token inutilizzati. Rimuoverli mantiene snella la configurazione e riduce il carico cognitivo per i nuovi sviluppatori che entrano nel team.

// Find tokens in config not used in markup
// (pseudocode — run as a build-time lint check)
const definedTokens = Object.keys(theme.colors);
const usedTokens = scanHTMLFiles(srcDir)
  .flatMap(file => extractTailwindClasses(file))
  .map(cls => cls.replace(/^(bg|text|border|ring)-/, ''));

const unusedTokens = definedTokens
  .filter(t => !usedTokens.includes(t));

console.log('Unused tokens:', unusedTokens);

Verifica rapida

Verifichi la Sua comprensione dei concetti di Tailwind CSS Mastery trattati in questa lezione.

Riepilogo della lezione

In questa lezione ha imparato che i token primitivi sono valori grezzi denominati, come color.blue.500, i token semantici associano questi primitivi a nomi basati sull'intento, come color.primary, e l'architettura a due livelli separa ciò che un valore rappresenta dal contesto in cui viene utilizzato. Ora vedremo come le variabili CSS collegano i token di Tailwind al cambio di tema a runtime.

Gratis per iniziare

Impara HTML con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
30
Lezioni
120

Domande Frequenti

La lezione «Token primitivi e semantici» è gratuita?

Sì — il testo completo di «Token primitivi e semantici» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Tailwind CSS Academy, passa a CoddyKit PRO. Il corso Tailwind CSS Academy include 4 lezioni in totale.

Cosa imparerò in «Token primitivi e semantici»?

Definisca token primitivi come color.blue.500 e token semantici come color.primary, quindi li associ nella configurazione di Tailwind per ottenere temi flessibili. Eserciti Tailwind CSS Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Tailwind CSS Academy?

Non è richiesta alcuna esperienza precedente. Tailwind CSS Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Token primitivi e semantici»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Tailwind CSS Academy?

Sì. Ogni lezione Tailwind CSS Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Token primitivi e semantici
  2. Temi basati su variabili CSS
  3. Strategia per temi multi-brand
  4. Documentazione e governance dei token
← Torna a Tailwind CSS Academy