Lag ditt eget tema
Alt det visuelle i Kilden styres av design tokens: farger, statusfarger, typografi, form, tetthet, skygger og bevegelse. Komponentene bruker bare klasser som er koblet til tokenene. Et nytt tema gir derfor et nytt uttrykk uten at komponentene må endres.
Vil du se eksempler, kan du velge en av demo-merkevarene Basic, Geeky eller Goofy under «Tema» i menyen til venstre. De finnes bare i dokumentasjonen og publiseres ikke med pakken.
Merkevare og variant
Et tema består av to deler:
| Attributt | Eksempel | Styrer |
|---|---|---|
data-brand | acme | Typografi, form, tetthet, skygger, bevegelse og statusfarger |
data-theme | acme-standard | Dominant-, aksent- og nøytralfargene. Navnet starter med merkevarens id |
En merkevare kan ha flere varianter (Bekk har bekk-ild, bekk-luft, bekk-vann og bekk-jord). Lys og mørk modus kommer automatisk, og styres med data-color-scheme.
<html data-brand="acme" data-theme="acme-standard"></html>Det holder å sette ett av attributtene:
data-brandalene gir merkevarens første variant.data-themealene gir også merkevarens typografi, form og så videre, fordi varianten alltid hører til én merkevare.
Begge kan settes på et element lenger ned i treet, for eksempel for å vise en annen merkevare i en forhåndsvisning.
Alternativ 1: Temabyggeren
Temabyggeren lager et komplett tema som CSS. Velg farger, fonter, radius, tetthet, skygger og bevegelse, og trykk Eksporter. Temabyggeren varsler hvis fargene gir for lav kontrast.
Legg den eksporterte CSS-en etter Kilden, utenfor @layer (eller i et lag som kommer etter kilden.design-tokens):
@import "tailwindcss";
@import "@kilden/designsystem/styles.css";
@import "./acme-fonter.css";
@import "./acme-tema.css"; /* fra temabyggeren */Alternativ 2: Skriv temaet selv
Alle variablene et tema kan sette står i token-kontrakten, @kilden/design-tokens/contract.json:
{
"name": "--radius-md",
"type": "borderRadius",
"dimensions": ["brand"],
"colorScheme": false,
"source": "brand.border-radius.md",
"default": "4px"
}dimensionssier om variabelen hører til merkevaren (brand), varianten (theme) eller størrelsen (size). Et tema setter variablene forbrandogtheme.colorScheme: truebetyr at verdien er ulik i lys og mørk modus. Bruklight-dark(lys, mørk).sourceer tokenet verdien kommer fra. Variabler med samme kilde bør ha samme verdi.defaulter verdien Bekk-temaet bruker.
Alternativ 3: I designsystemet
Temaer som skal ligge i Kilden, lages i Tokens Studio og sjekkes inn i packages/design-tokens/src:
- Lag merkevaresettet
brands/<id>.jsonmed de samme tokenene sombrands/bekk.json. - Lag variantsettet
themes/<id>-<variant>.json, og eventuelle nye primitive farger. - Legg temaene til i gruppene
brandogvarianti Tokens Studio.
Testene sjekker at alle merkevarer har de samme tokenene, at den ferdige CSS-en stemmer med tokenene, og at tekst og kantlinjer har nok kontrast etter WCAG.
Ting å vite
- Fonter: Kilden laster bare Bekks fonter (
@kilden/designsystem/fonts/bekk.css). Andre merkevarer må deklarere sine egne@font-face. Komponentene bruker vektene light, regular og medium. - Størrelse: Tokens som avhenger av både merkevare og
data-size, krever at begge attributtene står på samme element (i praksis<html>). - Tetthet: Tailwinds
p-4,h-10og lignende er multipler av--spacing-unit. Det gjelder også appens egne klasser. - Logo:
Logo-komponenten er Bekk-spesifikk. Bruk din egen logo for andre merkevarer.