Grundlagen & Tokens

Das Design-Token-System, das jede Komponente antreibt — Oberflächen, Farben, Abstände, Typografie und die mehrachsige Theme-Engine.

Design-Tokens

Alle Werte (Farben, Größen, Radien, Schatten, Abstände) sind CSS-Custom-Properties, die in tokens.css definiert sind. Komponenten verwenden niemals hartcodierte Werte — sie referenzieren immer einen Token. Überschreibe einen beliebigen Token, um WebBlocks UI an deine Marke anzupassen.

Regel: Verwende Tokens auch in deinen eigenen Komponenten. Codiere niemals eine Farbe, Größe oder einen Radius hart, die sich bei einem Theme-Wechsel ändern könnte.

Oberflächen & Text

TokenStandard (hell)Verwendung
--wb-bg#f4f6fbSeitenhintergrund
--wb-surface#ffffffKarten, Panels, Modals
--wb-surface-2#edf1f7Dezente Hintergründe, Tabellenzeilen
--wb-surface-3#e2e8f2Hover-Zustände, Trennlinien
--wb-text#18212fPrimärer Text
--wb-muted#5a6a84Sekundärer Text, Labels, Platzhalter
--wb-border#d6e0eeAlle Rahmen und Trennlinien

Semantische Farben

TokenVariantenVerwendung
--wb-success-dark · -softErfolgs-Alerts, Badges, Icons
--wb-warning-dark · -softWarn-Alerts, Vorsichtszustände
--wb-danger-dark · -softFehlerzustände, destruktive Aktionen
--wb-info-dark · -softInformations-Alerts, Hinweise

Abstands-Skala (4px Basis)

TokenWertTokenWert
--wb-s14px--wb-s832px
--wb-s28px--wb-s1040px
--wb-s312px--wb-s1248px
--wb-s416px--wb-s1664px
--wb-s520px--wb-s2080px
--wb-s624px

Rahmenradius

TokenWert
--wb-r-sm5px
--wb-r-md9px
--wb-r-lg14px
--wb-r-xl20px
--wb-r-full9999px (Pill/Kreis)

Typografie

TokenBeschreibung
--wb-fontBody-Schriftart (Inter, system-ui-Fallbacks)
--wb-font-headingÜberschriften-Schriftart (standardmäßig wie Body)
--wb-font-monoMonospace-Stack (Cascadia Code, Menlo, Consolas)
--wb-font-size-xs/sm/md/lg/xl0,75 / 0,875 / 1 / 1,125 / 1,25 rem

Schatten

TokenVerwendung
--wb-shadow-smDezente Erhebung (Karten, Eingaben)
--wb-shadow-mdDropdowns, Popovers
--wb-shadow-lgModals, Drawer
--wb-shadow-xlCommand-Palette, erhöhte Overlays

Z-Index-Skala

TokenWertVerwendung
--wb-z-dropdown100Dropdowns, Popovers, Tooltips
--wb-z-modal200Modals, Drawer, Bestätigungsdialoge
--wb-z-toast300Toast-Benachrichtigungen

Tokens überschreiben

Überschreibe einen beliebigen Token in deinem eigenen CSS über :root oder einen eingeschränkten Selektor:

/* Globale Überschreibung */
:root {
  --wb-font: 'Geist', sans-serif;
  --wb-r-md: 12px;
}

/* Eingeschränkte Überschreibung — wirkt nur auf einen Bereich */
.my-hero {
  --wb-accent: #8b5cf6;
}

Akzentfarben

Setze data-accent auf dem <html>-Element, um die gesamte Benutzeroberfläche auf ein anderes Farbschema umzustellen. Jeder Akzent definiert 12 Tokens.

ocean
forest
sunset
royal
mint
amber
rose
slate-fire

Klicke auf ein Farbmuster, um den Akzent auf dieser Seite zu testen.

Akzent-Token-Set (12 Tokens pro Akzent)

TokenVerwendung
--wb-accentPrimärer Akzent — Button-Hintergründe, aktive Zustände
--wb-accent-hoverHover-Zustand für akzentfarbige Elemente
--wb-accent-activeAktiver / gedrückter Zustand
--wb-accent-softGetönter Hintergrund (Badges, Chips)
--wb-accent-softerSehr heller Farbton (Seitenabschnitte, Callouts)
--wb-accent-borderAkzentgetönter Rahmen
--wb-accent-textAkzenttext auf hellem Hintergrund
--wb-accent-onTextfarbe auf Akzenthintergrund (immer weiß oder nahezu weiß)
--wb-accent-ringFokus-Ring-Farbe
--wb-accent-ring-rgbRGB-Werte für rgba()-Fokus-Ring mit Transparenz
--wb-accent-selectionTextselektion-Hintergrund
--wb-accent-glow-rgbRGB-Werte für Glüheffekte
Abwärtskompatibilität: --wb-primary, --wb-primary-dark und --wb-primary-soft sind Aliasse, die auf ihre --wb-accent*-Entsprechungen zeigen. Verwende im neuen Code immer --wb-accent*.

Dunkelmodus

Der Dunkelmodus wird über das Attribut data-mode auf <html> gesteuert. Drei Werte werden unterstützt.

WertVerhalten
lightImmer heller Modus
darkImmer dunkler Modus
autoFolgt der prefers-color-scheme-Systemeinstellung

Wie der Dunkelmodus funktioniert

Der Dunkelmodus überschreibt Oberflächen-, Text- und Rahmen-Tokens über einen [data-mode="dark"]-Selektor in dark.css. Alle Komponentenstile erben die neuen Werte automatisch — separate Dunkelmodus-Klassen-Varianten werden nicht benötigt.

<!-- Statisch -->
<html data-mode="dark">

<!-- Vom Benutzer umgeschaltet -->
<button data-wb-mode-cycle>Modus umschalten</button>

<!-- Programmgesteuert setzen -->
<script>WBTheme.setMode('dark');</script>
localStorage-Persistenz: WBTheme speichert die Moduswahl des Benutzers in localStorage unter dem Schlüssel wb-mode und stellt sie beim nächsten Seitenaufruf wieder her. Setze das initiale data-mode in HTML, um ein Aufblitzen des falschen Modus zu vermeiden.

Presets

Presets sind benannte Bündel, die mehrere Achsen auf einmal setzen — Radius, Schatten, Dichte, Schriftart und Rahmen. Verwende sie als Ausgangspunkte für einen konsistenten Look; einzelne Achsen können Preset-Werte weiterhin überschreiben.

PresetRadiusSchattenDichteSchriftRahmen
modernstandardstandardstandardmodernsubtle
minimalsharpflatcompactsystemsubtle
roundedsoftsoftcomfortablemodernnone
boldsharpstandardstandardmodernbold
editorialsharpflatcomfortableeditorialmedium
<!-- "rounded"-Preset anwenden, nur Akzent überschreiben -->
<html data-preset="rounded" data-accent="rose">

<!-- "minimal" anwenden, Radius auf soft überschreiben -->
<html data-preset="minimal" data-radius="soft">

Presets werden in der CSS-Kaskade vor einzelnen Achsen-Attributen angewendet, sodass individuelle Achsen immer gewinnen.

Theme-Achsen

Neben Dunkelmodus und Akzent erlauben fünf weitere Achsen, die visuelle Persönlichkeit der Benutzeroberfläche anzupassen.

Radius — data-radius

WertEffekt
sharpReduziert alle Rahmenradien — strukturierter, Enterprise-Look
softErhöht alle Rahmenradien — freundlich, verbraucherorientiert

Dichte — data-density

WertEffekt
compactReduziert Padding bei Buttons, Eingaben, Tabellenzeilen — mehr Inhalt pro Bildschirm
comfortableErhöht Padding — mehr Luft, besser für Touch

Schatten — data-shadow

WertEffekt
flatEntfernt Schatten — rahmenbasierte Tiefe, sauber und minimal
softErhöht Schattenunschärfe und -deckkraft — stärker erhöht, Premium-Gefühl

Schrift — data-font

WertSchrift-Stack
systemNative OS-Schriftart — keine Webschrift geladen
modernInter (CDN) — klar, gut lesbar
editorialPlayfair Display (CDN) + Inter — redaktionell, verlegerisch

Rahmen — data-border

WertEffekt
noneEntfernt Rahmen — Oberflächen nur durch Schatten definiert
subtleHelle Rahmen (Standard)
mediumMittelschwere Rahmen
boldSchwere Rahmen — starke visuelle Struktur
dashedGestrichelte Rahmen — markant, technisches Gefühl

Alle Achsen kombinieren

<!-- Maximale Anpassung ohne eine einzige Zeile benutzerdefiniertes CSS -->
<html
  data-mode="dark"
  data-accent="royal"
  data-preset="rounded"
  data-density="comfortable"
  data-font="modern"
>

Eigene Token-Überschreibungen

Für markenspezifische Anpassungen, die über die integrierten Achsen hinausgehen, überschreibe Tokens direkt in deinem eigenen CSS.

/* ── Marken-Schriftart ───────────────────────────────── */
:root {
  --wb-font:         'DM Sans', sans-serif;
  --wb-font-heading: 'DM Serif Display', serif;
}

/* ── Eigener Akzent (außerhalb der 8 integrierten) ───── */
:root {
  --wb-accent:           #0f766e;
  --wb-accent-hover:     #0d6e66;
  --wb-accent-active:    #0b605a;
  --wb-accent-soft:      #ccfbf1;
  --wb-accent-softer:    #f0fdf4;
  --wb-accent-border:    #5eead4;
  --wb-accent-text:      #0d6e66;
  --wb-accent-on:        #ffffff;
  --wb-accent-ring:      rgb(15 118 110);
  --wb-accent-ring-rgb:  15 118 110;
  --wb-accent-selection: #ccfbf1;
  --wb-accent-glow-rgb:  15 118 110;
}

/* ── Engerer Abstand für ein dichtes Datengitter ─────── */
.my-data-table {
  --wb-s3: 0.5rem;
  --wb-s4: 0.75rem;
}