/ theming
Theming
Kumiki Atelier ships a semantic CSS-variable theme system. Pick one of the four bundled presets — or override the variables to brand it yourself.
Try a preset
Four bundled themes. Toggle one below and watch this page (and every Atelier component) flip live.
Install
pnpm add @kumiki/atelierThen import the stylesheet.
// app.css
@import '@kumiki/atelier/themes/shu.css';For runtime switching (let your users pick), use the bundled `all.css` instead:
// app.css — bundle every theme; flip at runtime
@import '@kumiki/atelier/themes/all.css';Switching themes
Drive the `data-kumiki-theme` attribute on `<html>`. Independent of the `data-theme` light/dark toggle.
<!-- Static: pick at render time -->
<html data-kumiki-theme="matcha">// Runtime: toggle the attribute
document.documentElement.dataset.kumikiTheme = 'matcha';Overriding variables
If none of the presets fit, override the variables directly. Root scope changes everything; nested scope changes one subtree.
/* Override a single token at any scope. */
:root {
--kumiki-color-accent: oklch(0.6 0.18 220);
}
.my-card {
--kumiki-color-accent: oklch(0.62 0.13 145);
}Key tokens
See `@kumiki/atelier/themes/shu.css` for the complete list.
Accent
--kumiki-color-accent- Primary accent
--kumiki-color-accent-hover- Hover
--kumiki-color-accent-active- Pressed / active
--kumiki-color-accent-soft- Soft tinted background
--kumiki-color-accent-fg- Foreground on accent
Surfaces & ink
--kumiki-color-bg- Page background
--kumiki-color-surface- Card / surface
--kumiki-color-surface-raised- Raised surface
--kumiki-color-fg- Primary text
--kumiki-color-fg-muted- Muted text
--kumiki-color-fg-quiet- Quiet text
--kumiki-color-line- Lines & borders
--kumiki-color-line-strong- Strong borders
Status
--kumiki-color-success- Success
--kumiki-color-warning- Warning
--kumiki-color-danger- Danger
--kumiki-color-info- Info
Shape & motion
--kumiki-radius-sm/md/lg- Corner radii
--kumiki-shadow-sm/md/lg- Elevation
--kumiki-dur-fast/mid/slow- Motion durations
--kumiki-ease-out- Default easing
Interaction with dark mode
`data-theme="dark"` controls light / dark; `data-kumiki-theme` controls the accent palette. The two axes are orthogonal — every combination resolves cleanly.