Roosevelt Docs

Dark Mode

Semantic token dark mode strategie

Dark Mode

Dark mode werkt via de semantic token layer — geen aparte stylesheets of component varianten nodig.

Hoe Het Werkt

De CSS custom properties worden overschreven via prefers-color-scheme:

:root {
  --color-brand: #5F2104;
  --color-label-primary: #0A0F1A;
  --color-bg-primary: #ffffff;
}
 
@media (prefers-color-scheme: dark) {
  :root {
    --color-brand: #C4854A;
    --color-label-primary: #ededed;
    --color-bg-primary: #0a0a0a;
  }
}

Components gebruiken altijd tokens, nooit hex waarden — dark mode werkt automatisch.

Token Override Tabel

TokenLightDarkReden
--color-brand#5F2104#C4854ADonker bruin onleesbaar op dark bg
--color-label-primary#0A0F1A#edededTekst moet licht zijn op dark bg
--color-label-secondary#334155#a1a1a1Verminderd contrast voor subtekst
--color-label-tertiary#8d95a3#737373Placeholder, minimaal contrast
--color-bg-primary#ffffff#0a0a0aBasis achtergrond
--color-bg-secondary#F8FAFC#171717Subtle verschil van primary
--color-bg-dark#0A0F1A#000000Diepste achtergrond
--color-outline-default#E2E8F0#2a2a2aBorders subtiel
--color-outline-strong#CBD5E1#404040Borders benadrukt
--color-outline-active#0A0F1A#edededFocus rings, active states

Brand Kleur Fix

Het oorspronkelijke brand bruin (#5F2104) is onleesbaar op donkere achtergronden. In dark mode wordt het vervangen door #C4854A — een warmere, lichtere variant die 4.6:1 contrast behaalt op #0a0a0a (WCAG AA).

Nooit hardcoded kleuren

Gebruik altijd tokens (text-brand, bg-surface-primary) in component code. Hardcoded hex waarden zoals text-[#5F2104] zullen niet switchen in dark mode.

Testen

  1. DevTools → Rendering → Emulate prefers-color-scheme: dark
  2. Controleer alle semantic tokens switchen
  3. Controleer contrast ratios in dark mode
  4. Test met echte OS dark mode toggle

On this page