1.2 KiB
1.2 KiB
Theming
The app theme is driven by shared CSS custom properties.
Source Of Truth
- Theme presets live in
frontend/src/theme/themes.ts. - The selected theme is persisted in local storage under
nanobot.theme. - The active theme is applied to
document.documentElementbefore the app renders.
How To Change The App Theme
Edit or add a preset in frontend/src/theme/themes.ts:
labelswatchtokens
The picker in the conversation drawer reads directly from that file, so new presets appear automatically.
Card Theming
Cards inherit the same variables as the app shell.
Prefer these semantic token families:
--theme-card-neutral-*--theme-card-warm-*--theme-card-success-*--card-*--helper-card-*--theme-text*--theme-border*--theme-accent*--theme-status-*
Do not hardcode generic shell colors like #ffffff, #111827, or app-background gradients in new cards.
Runtime Access
Dynamic cards can read theme values through the runtime host:
host.getThemeName()host.getThemeValue("--theme-accent")
For values that should live-update when the theme changes, prefer CSS variables directly:
<div style="color:var(--theme-card-neutral-text)"></div>