Theme Tokens
Complete reference for all CSS custom properties (design tokens) available in @duskmoon-dev/core themes.
Overview
Each theme defines 65+ color tokens plus shape and depth tokens. All color tokens are generated from @duskmoon-dev/design YAML files in OKLCH format.
/* Tokens are CSS custom properties on [data-theme] selectors */
[data-theme="sunshine"] {
--color-primary: oklch(72% 0.17 75);
/* ... */
}
Brand Colors (12 tokens)
| Token |
CSS Variable |
Description |
| Primary |
--color-primary |
Main brand color |
| Primary Content |
--color-primary-content |
Text on primary |
| Primary Container |
--color-primary-container |
Lighter primary for backgrounds |
| On Primary Container |
--color-on-primary-container |
Text on primary container |
| Secondary |
--color-secondary |
Secondary brand color |
| Secondary Content |
--color-secondary-content |
Text on secondary |
| Secondary Container |
--color-secondary-container |
Lighter secondary for backgrounds |
| On Secondary Container |
--color-on-secondary-container |
Text on secondary container |
| Tertiary |
--color-tertiary |
Tertiary accent color |
| Tertiary Content |
--color-tertiary-content |
Text on tertiary |
| Tertiary Container |
--color-tertiary-container |
Lighter tertiary for backgrounds |
| On Tertiary Container |
--color-on-tertiary-container |
Text on tertiary container |
Usage
<div class="bg-primary text-primary-content">Primary surface</div>
<div class="bg-primary-container text-on-primary-container">Container</div>
Surface Colors (10 tokens)
| Token |
CSS Variable |
Description |
| Surface |
--color-surface |
Default background |
| Surface Dim |
--color-surface-dim |
Dimmed background |
| Surface Bright |
--color-surface-bright |
Brighter background |
| Surface Container Lowest |
--color-surface-container-lowest |
Lowest elevation |
| Surface Container Low |
--color-surface-container-low |
Low elevation |
| Surface Container |
--color-surface-container |
Default elevation |
| Surface Container High |
--color-surface-container-high |
High elevation |
| Surface Container Highest |
--color-surface-container-highest |
Highest elevation |
| On Surface |
--color-on-surface |
Text on surface |
| On Surface Variant |
--color-on-surface-variant |
Secondary text on surface |
MD3 Elevation Mapping
Lowest → Low → Default → High → Highest
(0) (1) (2) (3) (4)
Semantic Colors (16 tokens)
| Token |
CSS Variable |
Description |
| Info |
--color-info |
Informational state |
| Info Content |
--color-info-content |
Text on info |
| Info Container |
--color-info-container |
Info background |
| On Info Container |
--color-on-info-container |
Text on info container |
| Success |
--color-success |
Success state |
| Success Content |
--color-success-content |
Text on success |
| Success Container |
--color-success-container |
Success background |
| On Success Container |
--color-on-success-container |
Text on success container |
| Warning |
--color-warning |
Warning state |
| Warning Content |
--color-warning-content |
Text on warning |
| Warning Container |
--color-warning-container |
Warning background |
| On Warning Container |
--color-on-warning-container |
Text on warning container |
| Error |
--color-error |
Error state |
| Error Content |
--color-error-content |
Text on error |
| Error Container |
--color-error-container |
Error background |
| On Error Container |
--color-on-error-container |
Text on error container |
Neutral Colors (10 tokens)
| Token |
CSS Variable |
Description |
| Base 100 |
--color-base-100 |
Lightest neutral |
| Base 200 |
--color-base-200 |
Light neutral |
| Base 300-900 |
--color-base-{N} |
Neutral scale |
| Base Content |
--color-base-content |
Default text color |
Outline Colors (2 tokens)
| Token |
CSS Variable |
Description |
| Outline |
--color-outline |
Default border color |
| Outline Variant |
--color-outline-variant |
Subtle border color |
Accent Colors (2 tokens)
| Token |
CSS Variable |
Description |
| Accent |
--color-accent |
Accent highlight |
| Accent Content |
--color-accent-content |
Text on accent |
Neutral Colors (3 tokens)
| Token |
CSS Variable |
Description |
| Neutral |
--color-neutral |
Neutral base |
| Neutral Content |
--color-neutral-content |
Text on neutral |
| Neutral Variant |
--color-neutral-variant |
Muted neutral |
Inverse Colors (3 tokens)
| Token |
CSS Variable |
Description |
| Inverse Surface |
--color-inverse-surface |
Reversed surface |
| Inverse On Surface |
--color-inverse-on-surface |
Text on inverse surface |
| Inverse Primary |
--color-inverse-primary |
Primary for inverse contexts |
Shadow & Scrim (2 tokens)
| Token |
CSS Variable |
Description |
| Shadow |
--color-shadow |
Shadow color |
| Scrim |
--color-scrim |
Overlay backdrop |
Elevation Shadows (6 tokens)
Theme-aware shadow tokens that use --color-shadow with color-mix() for proper opacity. These adapt automatically when switching themes.
| Token |
CSS Variable |
Description |
| XS |
--shadow-xs |
Subtle elevation (1px) |
| SM |
--shadow-sm |
Low elevation (cards) |
| MD |
--shadow-md |
Medium elevation (dropdowns) |
| LG |
--shadow-lg |
High elevation (modals) |
| XL |
--shadow-xl |
Higher elevation |
| 2XL |
--shadow-2xl |
Maximum elevation |
<div class="shadow-sm">Low elevation card</div>
<div class="shadow-lg">Modal dialog</div>
MD3 Elevation Levels (6 tokens)
Semantic shadow tokens that map Material Design 3 elevation levels to shadow effects. These provide a hierarchy-based API on top of the size-based shadow tokens.
| Level |
CSS Variable |
Maps To |
Description |
| 0 |
--shadow-elevation-0 |
none |
Flat surface |
| 1 |
--shadow-elevation-1 |
--shadow-xs |
Slight lift |
| 2 |
--shadow-elevation-2 |
--shadow-sm |
Card surface |
| 3 |
--shadow-elevation-3 |
--shadow-md |
Dropdown/menu |
| 4 |
--shadow-elevation-4 |
--shadow-lg |
Dialog/modal |
| 5 |
--shadow-elevation-5 |
--shadow-xl |
Top-level overlay |
<!-- Utility classes -->
<div class="elevation-2">Card surface</div>
<div class="elevation-4">Modal dialog</div>
<!-- Tailwind shadow utilities -->
<div class="shadow-elevation-3">Dropdown menu</div>
Spacing Tokens
Generated from @duskmoon-dev/design YAML. Available as CSS custom properties on :root.
| Token |
CSS Variable |
Value |
Description |
| Spacing 0–24 |
--spacing-{N} |
0px–96px |
Layout spacing scale |
Radius Tokens
| Token |
CSS Variable |
Value |
Description |
| None |
--radius-none |
0px |
No rounding |
| XS |
--radius-xs |
4px |
Subtle rounding |
| SM |
--radius-sm |
8px |
Small rounding |
| MD |
--radius-md |
12px |
Medium rounding |
| LG |
--radius-lg |
16px |
Large rounding |
| XL |
--radius-xl |
20px |
Extra large rounding |
| 2XL |
--radius-2xl |
28px |
Maximum rounding |
| Full |
--radius-full |
9999px |
Pill shape |
Elevation Tokens
| Token |
CSS Variable |
Value |
Description |
| Level 0 |
--elevation-level0 |
0px |
No elevation |
| Level 1 |
--elevation-level1 |
1px |
Subtle lift |
| Level 2 |
--elevation-level2 |
3px |
Card elevation |
| Level 3 |
--elevation-level3 |
6px |
Raised elevation |
| Level 4 |
--elevation-level4 |
8px |
Dialog elevation |
| Level 5 |
--elevation-level5 |
12px |
Maximum elevation |
Focus / Hover States
Components use color-mix() to compute focus and hover states at runtime rather than dedicated focus tokens:
/* Hover state — darken by mixing with black */
.btn-primary:hover {
background-color: color-mix(in oklch, var(--color-primary), black 10%);
}
/* Focus ring — semi-transparent currentColor */
.btn:focus-visible {
box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
}
Transparency
.custom-transparent {
background-color: color-mix(in oklch, var(--color-primary) 50%, transparent);
}
Available Themes
| Theme |
Mode |
Primary Hue |
Character |
sunshine |
Light |
Warm orange |
Energetic, warm |
moonlight |
Dark |
Soft blue |
Serene, elegant |
ocean |
Dark |
Deep blue |
Calm, immersive |
forest |
Light |
Rich green |
Natural, grounded |
sunset |
Light |
Warm coral |
Vibrant, expressive |
Custom Themes
Override any token with a [data-theme] selector:
[data-theme="my-theme"] {
color-scheme: light;
--color-primary: oklch(62% 0.22 265);
--color-primary-content: oklch(100% 0 0);
/* ... define all tokens */
}
See Customization for full details.