Skip to book
Tarva BXD · LumosIndex › Themes › How Lumos Was Made
1920 × 1080 · Landscape
Lumos Index › Themes › How Lumos Was Made the pipeline

Themes · How Lumos Was Made

Brand to token.

The last step is generated — a build script emits the CSS, the Figma variables, the fonts. But a script only resolves decisions already made, and the deciding is the work: judgment earned across twenty-plus years of practice, weighed against the accumulated canon of thousands of works, and pressure-tested by more than two dozen specialist agents working in concert. The pipeline doesn't conjure Lumos — it remembers the thinking, and makes it reproducible.

1Brand decisions

The brand, named.

Three colors and two faces — small on the page, dense behind them. Each is a judgment call, drawn from decades of craft and the whole design canon before it earned its place.

Terracottabrand-500 · --accent
Parchmentlight-500 · --bg-canvas
Obsidianink-500 · --fg-primary
Editor’s Note · Be Vietnam Prodisplay + body faces, self-hosted
baker:from-bxdone composer run → palette.ts
2Palette primitives

Ten ramps, ten steps.

Each brand decision is expanded into a 10-step ramp. 100 primitives plus a five-stop chart series and five status anchors.

brand-50 … brand-900
neutral-50 … neutral-900
success-50 … success-900
warning-50 … warning-900
palette.tsramps · chartSeries · statusAnchors
--chart-1 … --chart-5brand-500, neutral-500, brand-300, …
3Semantic contract

The shared promise.

Lumos binds the same scheme-agnostic contract every theme implements. Components read these names — never raw hex — so a scheme stays swappable.

24SEMANTIC_TOKENS — --bg-canvas, --fg-primary, --accent …
30--intent-* — 6 tones × 5 roles, derived once
5STATUS_ANCHORS — moss · amber · rust · stone · neutral
_contract/semantic-tokens.tsthe public component↔theme contract
_contract/shadcn-bridge.tsshadcn vocabulary → contract, via var()
4Generated output

One script emits all.

build-themes.mjs validates the palette against the contract, then writes deterministic, byte-stable artifacts — code and design from one source.

CSStokens.generated.css — light + dark scopes
JSONlumos-…​.figma.json — Figma variables, 1:1
FONTfonts.self-hosted.css + manifest entry
scripts/build-themes.mjsvalidate → emit (design specifications)
themes-manifest.jsonStorybook + Figma read this
you are here
5Rendered product

This book.

The generated tokens drive @tarva/ui components — and these very slides. What you are reading is Lumos, resolved all the way through.

UI@tarva/ui — 494 components, re-skinned
BXDthis Tarva BXD brand book
APPevery Lumos product surface
lumos.cssthe tokens, on this page
You are herethe output, rendered
Every page is Lumos, resolved.

The generator is the cheap part. What it can't do is decide — and the deciding is where the years went: domain knowledge, the weight of every work that came before, dozens of agents in concert, compressed into a palette and a contract. So the swap stays cheap: change the ramps at stage 2, keep the contract and the components, and build-themes.mjs re-emits everything — new tokens, new Figma variables, new fonts, no component touched. The expensive thinking happened once; the system just remembers it.


Lumos brand book slide: Themes · How Lumos Was Made
Rotate your phone for a larger view. Tap the slide to open it full size and zoom.
8.5 × 11 · Portrait