Themes
A theme is a CSS token file. That’s the whole contract.
No theme API, no styled-components layer, no build step. Everything the admin draws reads from a set of CSS custom properties. To restyle it: copy the file, change values, import yours after highseam.css. To follow the visitor’s preference:
admin: { theme: 'light' | 'dark' | 'system' }lodestone, the built-in default
A lode is a seam of ore; a lodestone is the naturally magnetic stone miners navigated by. Dark shell, dark canvas, one vein of ore-bright green. The site you’re reading wears these exact tokens, because the product and its website should be visibly the same object.
/* lodestone — highseam's original theme, and the built-in default.
* A lode is a seam of ore; a lodestone is the naturally magnetic
* stone miners navigated by. Dark shell, dark canvas, one vein of
* ore-bright green. */
[data-hs-theme],
:root {
/* shell */
--color-bg: #0b0c0e;
--color-elevate: #141518;
--color-elevate-2: #1d1f23;
--color-border: #2c2e33;
/* text */
--color-fg: #e8e9eb;
--color-muted: #8e9095;
/* the vein */
--color-primary: #c5f74f;
--color-primary-fg: #101203;
/* signals */
--color-danger: #ef4444;
--color-success: #34d399;
/* the writing surface — its own token so it can diverge from
the shell (set it white for a paper canvas in a dark admin) */
--hs-canvas: var(--color-elevate);
--hs-canvas-fg: var(--color-fg);
/* shape + type */
--radius: 0.5rem;
--font-sans: 'Inter', ui-sans-serif, system-ui, sans-serif;
--font-mono: ui-monospace, 'SF Mono', Menlo, monospace;
}- #0b0c0e
--color-bg
shell background
- #141518
--color-elevate
raised surface
- #1d1f23
--color-elevate-2
raised again
- #2c2e33
--color-border
every hairline
- #e8e9eb
--color-fg
text
- #8e9095
--color-muted
secondary text
- #c5f74f
--color-primary
the vein
- #101203
--color-primary-fg
text on the vein
- #ef4444
--color-danger
destructive
- #34d399
--color-success
confirmations
--hs-canvas
The writing surface is its own token, so it can diverge from the shell: set it to white for a paper canvas inside a dark admin.
canvas: elevate
canvas: paper
Make yours
Copy lodestone.css, change values, import it. The file above is the canonical, documented reference; importing lodestone itself is a no-op, because its values mirror the built-in defaults. That’s deliberate: the reference theme is executable documentation.
// a theme is a CSS token file. import it after highseam.css:
import '../highseam.css';
import 'highseam/themes/lodestone.css'; // the default, explicitly
// yours: copy lodestone.css, change values, import that instead