view design_system/THEMES.md @ 258:60a876c4587a

[ui] Add semantic primitive ownership Build a layered Zenbu token and sizing system, make authored controls use native-underneath primitives, migrate mrjunejune without imposing visual surfaces, and document/enforce HTML ownership in the catalog and wiki. Co-authored-by: Copilot <[email protected]>
author MrJuneJune <me@mrjunejune.com>
date Wed, 05 Aug 2026 05:25:40 -0700
parents 30c2196d03d4
children 667156fcd3e3
line wrap: on
line source

# Zenbu UI themes

Themes are named token compositions, not separate component stylesheets.
Applications select one with `data-zen-theme` on the document root:

```html
<html data-zen-theme="paper">
```

Built-in themes:

- `paper`: warm neutral surfaces, restrained natural accents, editorial type;
- `ink`: dark charcoal surfaces with paper-like text and softer status colors;
- `playful`: brighter clay, persimmon, violet, and rounded shapes;
- no attribute: follow the operating-system light/dark preference.

Applications can provide their own fonts without changing component CSS:

```css
:root {
  --zenbu-font-editorial: "More Thin", sans-serif;
  --zenbu-font-playful: "More", sans-serif;
}
```

Import `themes.css` after `tokens.css` and before component CSS. Components
continue to consume semantic tokens, so every built-in and application theme
inherits the same accessibility, motion, and native-HTML behavior.