Jetons
Les noms de chaque valeur Feitio : d'où ils viennent, comment les utiliser en CSS et TypeScript, et la liste complète.
Sur cette page
Quels sont-ils
Chaque valeur Feitio (couleur, espace, type, coin, durée) est un jeton nommé. Personne ne rédige une valeur à la main : vous écrivez le nom, et la valeur provient du thème et du mode.
D'où ils viennent
- La source est un fichier JSON en format ouvert DTCG, dans
tokens/:base.tokens.jsonpour ce qui ne change pas avec le thème, et un fichier par thème et mode danstokens/themes/. bun run buildgénère les variables CSS (css/tokens.css) et les noms TypeScript (js/tokens.ts).bun run checkteste le contraste de chaque paire de couleurs et si chaque couleur convient à un écran ordinaire (sRGB).
Comment les utiliser
CSS
.minha-area {
padding: var(--feitio-space-5) var(--feitio-space-4);
border-radius: var(--feitio-radius);
background: var(--feitio-color-surface-raised);
}TypeScript
js/tokens.ts exporte chaque nom avec sa variable, et le type TokenName : un mauvais nom ne compile pas.
import { tokens, type TokenName } from '@feitio/core/js/tokens.ts';
const gap: TokenName = 'space.4';
element.style.gap = tokens[gap]; // 'var(--feitio-space-4)'Les jetons de base
Tout de même dans chaque thème et mode.
| Token | Valeur | Group |
|---|---|---|
--feitio-font-text | "Alegreya", "Georgia", serif | Type |
--feitio-font-ui | "Alegreya Sans", "Gill Sans", sans-serif | Type |
--feitio-font-weight-regular | 400 | Type |
--feitio-font-weight-medium | 500 | Type |
--feitio-font-weight-bold | 700 | Type |
--feitio-font-weight-heavy | 800 | Type |
--feitio-font-size-small | 1rem | Type |
--feitio-font-size-body | 1.25rem | Type |
--feitio-font-size-h3 | 1.5rem | Type |
--feitio-font-size-h2 | 2rem | Type |
--feitio-font-size-h1 | 2.75rem | Type |
--feitio-font-size-display | 4rem | Type |
--feitio-line-height-text | 1.6 | Line height |
--feitio-line-height-heading | 1.08 | Line height |
--feitio-space-1 | 0.25rem | Space |
--feitio-space-2 | 0.5rem | Space |
--feitio-space-3 | 1rem | Space |
--feitio-space-4 | 1.5rem | Space |
--feitio-space-5 | 2.5rem | Space |
--feitio-space-6 | 4rem | Space |
--feitio-space-7 | 6rem | Space |
--feitio-measure-reading | 46rem | Measure |
--feitio-radius-top-left | 6px | Corners |
--feitio-radius-top-right | 10px | Corners |
--feitio-radius-bottom-right | 6px | Corners |
--feitio-radius-bottom-left | 8px | Corners |
--feitio-border-width | 1px | Stroke |
--feitio-focus-width | 3px | Mise au point |
--feitio-focus-offset | 3px | Mise au point |
--feitio-duration-place | 260ms | Duration |
--feitio-duration-change | 320ms | Duration |
--feitio-easing-place | cubic-bezier(0.2, 0.9, 0.3, 1.25) | Easing |
--feitio-easing-change | cubic-bezier(0.3, 0, 0.2, 1) | Easing |
The color roles
Les valeurs du thème principal, jour et nuit. Une façade remplit les mêmes noms avec d'autres valeurs.
| Token | Jour | Nuit |
|---|---|---|
--feitio-color-surface | oklch(96% 0.018 80) | oklch(22% 0.016 55) |
--feitio-color-surface-raised | oklch(92.5% 0.026 76) | oklch(27.5% 0.02 55) |
--feitio-color-surface-top | oklch(98.5% 0.01 85) | oklch(31% 0.022 55) |
--feitio-color-text | oklch(26% 0.022 55) | oklch(93% 0.022 80) |
--feitio-color-text-soft | oklch(46% 0.025 55) | oklch(76% 0.03 72) |
--feitio-color-accent | oklch(54% 0.165 40) | oklch(54% 0.165 40) |
--feitio-color-accent-strong | oklch(50% 0.16 38) | oklch(77% 0.15 52) |
--feitio-color-on-accent | oklch(97% 0.015 80) | oklch(97% 0.015 80) |
--feitio-color-line | oklch(26% 0.022 55 / 0.15) | oklch(93% 0.022 80 / 0.15) |
--feitio-color-shadow | oklch(26% 0.022 55 / 0.9) | oklch(12% 0.01 55 / 0.95) |
--feitio-color-ok | oklch(45% 0.09 140) | oklch(78% 0.1 140) |
--feitio-color-ok-surface | oklch(91% 0.04 135) | oklch(30% 0.04 140) |
--feitio-color-warn | oklch(50% 0.1 85) | oklch(83% 0.11 88) |
--feitio-color-warn-surface | oklch(92% 0.06 90) | oklch(32% 0.05 85) |
--feitio-color-error | oklch(45% 0.15 15) | oklch(76% 0.12 15) |
--feitio-color-error-surface | oklch(91% 0.04 15) | oklch(31% 0.06 15) |
Règles
- Aucune valeur manuscrite où existe un jeton.
- Un nouveau jeton entre dans le JSON, jamais dans le CSS généré : la construction écrase les modifications manuelles.
- Une nouvelle couleur passe par le test de contraste avant d'entrer.