LEISSON
Systems

Three systems, one pipeline

Orbit is the Leisson Creative design system: one DTCG token file that generates CSS, Tailwind v4, TypeScript and Figma variables. Alongside it two product systems: AgroNutikas Design System V8.1 and AxonDeck Design DNA v2.0.

Orbit v1.0.0

Leisson Creative

102 semantic tokens (DTCG) → CSS, Tailwind v4 @theme, TypeScript, Figma variables. Gates: 28/28 contrast, monochrome, drift, no-raw-hex.

Design System V8.1

AgroNutikas

Estonian-named tokens (rukkilill, mets, talinisu, oht, muld). Canonical export + skill generators (hero, pricing, invoice, VAT return). The token-drift gate measures rendered values, not files.

Design DNA v2.0

AxonDeck

One token file (tokens.css · presets.ts · Colors.xaml) for two renderers: React 19 + WPF. Axon Cyan on Abyss, 15:1 contrast, Sentient UI.

orbit.tokens.json · color.*

Color — Night and Day side by side

color.canvas#000000
#FFFFFF
color.paper#121214
#F0F0FA
color.raised#1A1A1E
#E6E6F0
color.ink#FAFAFA
#000000
color.ink-2rgba(250,250,250,0.70)
rgba(0,0,0,0.72)
color.ink-3rgba(250,250,250,0.55)
rgba(0,0,0,0.55)
color.ink-disabledrgba(250,250,250,0.38)
rgba(0,0,0,0.38)
color.hairlinergba(250,250,250,0.12)
rgba(0,0,0,0.12)
color.hairline-strongrgba(250,250,250,0.28)
rgba(0,0,0,0.24)
color.signal#7CB8FF
#1F5FD1
color.signal-softrgba(124,184,255,0.12)
rgba(31,95,209,0.10)
color.status-ok#81C784
#2E7D32
color.status-warn#FFB74D
#945700
color.status-crit#EF9A9A
#C62828
color.button-fill#FAFAFA
#000000
color.button-fill-ink#000000
#FAFAFA
color.scrimrgba(0,0,0,0.60)
rgba(0,0,0,0.40)

Signal is the only chromatic token: focus ring, active nav, one emphasised number. All other color comes from product screens.

orbit.tokens.json · type.*

The type scale

TokenSizeWeightLine heightTypeface
type.display72px8000.98Barlow Condensed
type.h156px7001Barlow Condensed
type.h244px7001.05Barlow Condensed
type.h328px7001.15Barlow Condensed
type.h420px6001.2Barlow Condensed
type.lede19px4001.5Barlow
type.body16px4001.55Barlow
type.body-sm14px4001.5Barlow
type.button14px7001Barlow
type.label12px4001.4IBM Plex Mono
type.micro12px4001.4IBM Plex Mono
type.data13px4001.5IBM Plex Mono
type.stat40px7001Barlow Condensed

What is Orbit?

Orbit is the design system of Leisson Creative (LEISSON OÜ, Tallinn). It is one token file in DTCG format that generates four outputs: CSS custom properties, Tailwind v4 @theme, TypeScript types and Figma variables. The version is v1.0.0 and there are 102 tokens in total (source: packages/orbit-tokens/orbit.tokens.json, counted at build time). Orbit is not a UI library you install — it is the source of truth the libraries are generated from.

This page is itself rendered from those tokens. When a token changes, this page changes with the next release; there is no manual step in between.

How does a token reach the screen?

The pipeline has five steps and every step is scripted:

  1. Source. orbit.tokens.json — DTCG structure, semantic names (color.canvas, type.h1, motion.spring.default). A raw hex value in a component is not allowed.
  2. Build. packages/orbit-tokens/build.mjs emits all four outputs at once. The script has no npm dependencies, so the build cannot fail because of a registry.
  3. Verify. verify.mjs measures contrast, monochrome compliance, drift and raw hex. It fails before a wrong value can reach a component.
  4. Sync. site/sync-orbit.mjs copies the flattened tokens into the site build. The site keeps no second copy of the values.
  5. Gates. CI runs the token check, the content gates, type checking, the Playwright gates and an axe-core audit before code reaches production.

How do the three systems differ?

SystemWhere it runsToken sourceOutputsRenderers
Orbit v1.0.0leisson.eu, studio workorbit.tokens.json (DTCG)CSS, Tailwind v4, TypeScript, FigmaReact
AgroNutikas DS V8.1agronutikas.ee, app, accountingcanonical CSS exportCSS tokens + skill generatorsReact
AxonDeck DNA v2.0AxonDeck WebUI and desktop apptokens.csstokens.css, presets.ts, Colors.xamlReact 19 and WPF

The AgroNutikas tokens carry Estonian names (rukkilill, mets, talinisu, oht, muld) because a farmer reading a report also reads them. The only purpose of the AxonDeck system is to keep two renderers — React on the web and WPF on the desktop — on a single source of truth.

What are the tokens made of?

GroupTokensExample
primitive17black, white, grey steps
color17color.canvas, color.ink, color.signal
type13type.h1, type.lede, type.micro
space14space.gutter, space.measure
motion11motion.spring.default, motion.ease.out
font, size, breakpoint, radius, elevation, z30font.display, breakpoint.md, z.topbar

That is 102 tokens. Spacing runs in 4 px steps up to 128 px and space.measure is 68ch, which is why no paragraph on this site grows wider than a readable line (source: site/orbit/orbit.flat.json, the same file this page renders from).

Why monochrome and a single signal colour?

Because the studio portfolio contains products whose own brand is yellow, green or cyan. If the site chrome were chromatic it would fight every product screenshot. In Orbit the whole chrome is black and white and color.signal is the only chromatic token: focus ring, active navigation, one emphasised number. Every other colour on the page comes from a product screenshot.

The same rule makes the contrast gate measurable: in the token check 28 pairs out of 28 pass the contrast requirement (source: packages/orbit-tokens/verify.mjs output in CI).

What do the gates actually measure?

GateWhat it measuresWhen it fails
verify:tokenscontrast, monochrome, drift, raw hexa wrong value in tokens or a component
gates.mjshorizontal scroll at 390 px (source: tests/gates.mjs), a11y, visible content, SEO meta, CTA hierarchybroken layout or missing meta
claims.mjsevery number links to a source, ET/EN parity, Estonian typographyan unsourced number or the languages drifting apart
axe-coreaccessibility as a full auditone serious or critical finding
Lighthouseperformance, a11y, best practices, SEObelow the CI threshold

Source: .github/workflows/orbit-gates.yml.

The gates run on every push. A production release happens on a separate branch and only with green gates.

Can Orbit be used outside the studio?

Not as a public package today — Orbit is not published to npm, and v1.0.0 means the first internally stable version, not a public release. If your team wants the same pipeline for your own brand, that is exactly what the studio builds: tokens, gates and components in your repository, owned by you.

Updated 2026-09-12 · Markdown · llms.txt