Jetons Sémantiques

Le package Tailwind v4 utilise des variables CSS sémantiques (jetons de conception) pour toutes les couleurs. Ces jetons découplent les styles des composants des valeurs de couleur spécifiques, ce qui facilite la création de thèmes. La convention de nommage des jetons suit le même modèle que celui utilisé par shadcn/ui.

Système de Jetons

Au lieu de couleurs codées en dur comme bg-sky-500, les composants Tailwind v4 utilisent des utilitaires sémantiques comme bg-primary, text-foreground, et border-border. Ceux-ci correspondent à des variables CSS que vous définissez dans votre projet.

bg-primary → var(--color-primary)
text-foreground → var(--color-foreground)
border-border → var(--color-border)

Jetons Requis

Définissez ces jetons dans votre CSS en utilisant la directive @theme de Tailwind v4 :

@theme {
--color-background: oklch(1 0 0);
--color-foreground: oklch(0.145 0.004 285.823);
--color-popover: oklch(1 0 0);
--color-popover-foreground: oklch(0.145 0.004 285.823);
--color-primary: oklch(0.205 0.006 285.885);
--color-primary-foreground: oklch(0.985 0.001 285.823);
--color-muted-foreground: oklch(0.556 0.01 285.823);
--color-accent: oklch(0.96 0.003 285.823);
--color-accent-foreground: oklch(0.205 0.006 285.885);
--color-destructive: oklch(0.577 0.245 27.325);
--color-border: oklch(0.922 0.004 285.823);
--color-input: oklch(0.922 0.004 285.823);
--color-ring: oklch(0.87 0.006 285.823);
}

Référence des Jetons

JetonUtilisé PourExemples d’Utilitaires
--color-backgroundArrière-plan de la page/applicationbg-background
--color-foregroundCouleur de texte par défauttext-foreground
--color-popoverArrière-plan de la popupbg-popover
--color-popover-foregroundTexte de la popuptext-popover-foreground
--color-primaryJour sélectionné, bouton de confirmation, extrémités de la plagebg-primary, text-primary
--color-primary-foregroundTexte sur les arrière-plans primairestext-primary-foreground
--color-muted-foregroundTexte atténué (placeholders, jours de la semaine, boutons de navigation)text-muted-foreground
--color-accentArrière-plans au survol pour les jours et les boutonsbg-accent
--color-accent-foregroundTexte sur les arrière-plans d’accentuationtext-accent-foreground
--color-destructiveTexte du bouton effacer/dangertext-destructive
--color-borderBordures générales (pied de page, préréglages, popup)border-border
--color-inputBordure de l’entrée/déclencheurborder-input
--color-ringCouleur de l’anneau de focusring-ring

Comment les Jetons s’Appliquent aux Composants

Voici comment les jetons sont appliqués à travers le sélecteur :

Déclencheur

  • Arrière-plan : bg-background
  • Bordure : border-input
  • Texte : hérité de text-foreground sur la racine
  • Placeholder : text-muted-foreground
  • Anneau de focus : ring-ring
  • Arrière-plan : bg-popover
  • Texte : text-popover-foreground
  • Bordure : border-border

Jours du Calendrier

  • Survol par défaut : bg-accent / text-accent-foreground
  • Sélectionné : bg-primary / text-primary-foreground
  • Aujourd’hui : text-primary
  • Dans la plage : bg-primary/10
  • Début/fin de la plage : bg-primary / text-primary-foreground
  • Désactivé : text-muted-foreground avec opacité réduite

Pied de page

  • Bordure : border-border
  • Bouton Annuler : border-input, survol bg-accent
  • Bouton Confirmer : bg-primary / text-primary-foreground
  • Bouton Effacer : text-destructive

Personnalisation des Jetons

Changer la Couleur Primaire

Modifiez --color-primary et --color-primary-foreground pour personnaliser l’apparence du sélecteur :

@theme {
/* Primaire violet */
--color-primary: oklch(0.55 0.25 300);
--color-primary-foreground: oklch(0.98 0.01 300);
}

Thème de Couleurs Chaudes

@theme {
--color-background: oklch(0.99 0.005 80);
--color-foreground: oklch(0.2 0.02 60);
--color-popover: oklch(0.99 0.005 80);
--color-popover-foreground: oklch(0.2 0.02 60);
--color-primary: oklch(0.6 0.2 40);
--color-primary-foreground: oklch(0.98 0.005 80);
--color-accent: oklch(0.95 0.02 80);
--color-accent-foreground: oklch(0.2 0.02 60);
--color-border: oklch(0.9 0.01 80);
--color-input: oklch(0.9 0.01 80);
--color-ring: oklch(0.85 0.02 80);
}

Jetons pour le Mode Sombre

Pour le mode sombre, surchargez les jetons sous un sélecteur .dark ou une requête média @media (prefers-color-scheme: dark) :

@theme {
--color-background: oklch(1 0 0);
--color-foreground: oklch(0.145 0.004 285.823);
/* ... valeurs du mode clair */
}
.dark {
--color-background: oklch(0.145 0.004 285.823);
--color-foreground: oklch(0.985 0.001 285.823);
--color-popover: oklch(0.145 0.004 285.823);
--color-popover-foreground: oklch(0.985 0.001 285.823);
--color-primary: oklch(0.985 0.001 285.823);
--color-primary-foreground: oklch(0.205 0.006 285.885);
--color-muted-foreground: oklch(0.556 0.01 285.823);
--color-accent: oklch(0.269 0.006 285.885);
--color-accent-foreground: oklch(0.985 0.001 285.823);
--color-destructive: oklch(0.577 0.245 27.325);
--color-border: oklch(0.269 0.006 285.885);
--color-input: oklch(0.269 0.006 285.885);
--color-ring: oklch(0.369 0.006 285.885);
}

Consultez Mode Sombre pour plus de détails.

Projets shadcn/ui Existants

Si votre projet a déjà des jetons shadcn/ui définis, le sélecteur les utilisera automatiquement sans configuration supplémentaire. Les noms des jetons sont intentionnellement compatibles. Consultez Registre shadcn pour en savoir plus.