Neutral default
Lumina ships with a quiet warm-neutral palette designed to disappear behind your content. The brand identity lives in the prism mark and the typographic chrome; the colour palette stays out of the way. This is what every new npm create refrakt project sees out of the box, and what the docs site you're reading uses as its chrome (with the niwaki preset layered on for syntax).
The palette walks a deliberately narrow chroma band — warm neutrals from #f6f4ef (light bg) to #1c1a17 (text), with status colours muted enough to read as functional rather than decorative.
Body palette
The surface, text, and primary tokens for light mode.
Light mode
Dark mode inverts to warm-near-black, with text lifted to the same warm off-white the page surface uses in light.
Dark mode
primary is intentionally monochromatic — it shadows text. Buttons, links, and accents render in body-text colour, slightly shifted on hover. The brand identity lives in chrome and the prism mark, not in a coloured accent.
Status palette
Four sentiments at a single saturation/lightness band so no sentiment is more aggressive than another. Light values; dark mode lifts each toward the surface.
Status — light
Info
Warning
Danger
Success
A live look at how the sentiments read against the page surface:
Refrakt sites are statically generated; content updates require a rebuild.
The legacy @refrakt-md/legacy package was retired in v0.14.0.
This command will overwrite existing token values in your config file.
Your refrakt site built successfully — 47 pages emitted in 2.1 seconds.
Syntax palette — the quiet spectrum walk
Four hues that walk teal → violet → rust → ochre — cool, cool, warm, warm. Spectrum-adjacent without shouting. constant covers numeric literals plus boolean/null/Symbol (Shiki paints them all from one slot). Used on every code surface unless a preset (like niwaki) overrides.
Syntax roles — light
Syntax roles — dark
Typography
Inter for body and UI; JetBrains Mono for code. Both loaded from Google Fonts with font-display: swap and preconnect hints.
Lumina default
Opting out
The neutral default is the unconditional starting point — there's no config snippet to "opt in" to it. To override individual tokens, add theme.tokens:
{
"site": {
"theme": {
"package": "@refrakt-md/lumina",
"tokens": {
"color": {
"primary": "#7c3aed"
}
}
}
}
}
To swap to a different colour identity entirely, layer in a preset. See Tideline for the cream-and-navy preset that restores Lumina's pre-v0.14.0 appearance, or Niwaki for Japanese-garden syntax colours.