Design system
Composants partagés de la suite contentos — socle cast. Source unique : packages/ui, copiée dans les projets via bin/ui-sync.
Fonts
Geist Sans pour le texte et les titres, Geist Mono pour le technique.
Couleurs
Tokens OKLch, thème clair/sombre. Bascule le thème en haut à droite.
background
bg-background
foreground
bg-foreground
primary
bg-primary
secondary
bg-secondary
muted
bg-muted
accent
bg-accent
destructive
bg-destructive
card
bg-card
border
bg-border
sidebar
bg-sidebar
Titres
Échelle typographique : Heading (h1–h4), Lead, Text, Muted, Code.
Heading level 1
Heading level 2
Heading level 3
Heading level 4
Lead — une accroche un peu plus grande pour introduire une section.
Text — paragraphe courant. La librairie reste volontairement légère : des atomes composables plutôt qu'un framework.
Muted — annotation discrète, métadonnée, aide contextuelle.
Inline : cn(), bin/ui-sync cast et @contentos/ui.
Boutons
Variantes, tailles, icônes et états du composant Button.
Variantes
Tailles
Avec icône & état
Formulaires
Champs de saisie : Input, Textarea, Label — états par défaut, focus, désactivé.
Select
Menu déroulant (base-ui), compatible formulaire — remplace les <select> natifs.
Valeur : aucune. Compatible <form> via name + defaultValue.
Toaster
Notifications éphémères (sonner), thème-aware. Déclenche via toast() / toast.success(), etc.
Skeleton
Placeholder de chargement : compose des blocs pour esquisser le contenu à venir.
Modale oui/non
ConfirmDialog : confirmation d'action, variante neutre ou destructive.
Aucune action pour l'instant.