GET STARTED FEATURE
Theme the site
Re-theme the entire UI by generating a skin and pointing the theme at it, without touching a component. Light and dark come from the same token contract.
A hex seed + algorithm (deterministic), or prose like "calm forest, soft corners" via an optional LLM.
skin.json
The reviewable source of truth — algorithm, seed, knobs. skins:refine edits knobs; never hand-edit the artifact.
tokens.css
skins:rebuild re-emits the full token contract (light + dark) from the source. This is what the site loads.
Theme the site
Theming a Semitexa site is not a refactor — it is choosing which token values load. Because every primitive and component only ever speaks --ui-* tokens, re-theming touches zero components.
bin/semitexa skins:generate balanced "#2f5e52" --name=moss --writeHow it applies
The theme system selects a skin for a (tenant, domain, locale) context and loads its tokens.css last, so it wins the cascade. Light and dark are two value sets of one contract, toggled by data-skin-mode. Pick the algorithm that fits the brand (balanced, glass, brutalist) and tune with knobs; generate or refine iteratively.
This very showcase is the proof: the same templates render moss here and terracotta on framework.semitexa.test — one tokens.css swapped for another, no per-site override.
When identity lives in tokens, theming is data, not code: re-skin by swapping a file, support multi-tenant by a lookup, and never touch a component. Next: ship an interactive component.
How it works
Generate a skin (skins:generate <algorithm> "<hex>" --name=<slug> --write), then the theme system selects it for a (tenant, domain, locale) context and loads its tokens.css last. Light and dark are two value sets of one contract, toggled by data-skin-mode. This showcase is the proof: the same templates render moss here and terracotta on framework.semitexa.test — one tokens.css swapped for another.
Why it matters
When identity lives in tokens, theming is data, not code: re-skin by swapping a file, support multi-tenant by a lookup, and never touch a component. The maintenance tax of a hand-themed UI disappears.