Design once. Scale with humans and AI.
A shared design language for product teams and AI-assisted design workflows — where visual decisions are defined once, named by meaning, and reused consistently across products and experiences.
One system. Two consumers.
The same design decisions are structured so they can be read and reused by people and by AI. Nothing is described only in pictures: every decision carries a name, an intent and a place in the hierarchy.
{{ c.title }}
How the system is structured
Primitives define what values exist. Semantic tokens define what those values mean. Components apply those meanings to real interface patterns.
Three pages, read in order, cover the whole system.
Designed for humans and AI
Design decisions are explicit, named and machine-readable rather than left to visual interpretation. That is what makes the system usable as context, not just as a reference.
What's inside
Two token layers and the component library. Every item links to its documentation.
Design principles
How to use this system
The system supports both human and AI-assisted product design. It is a source of structured design decisions, not a visual reference library.
Current scope
Current scope focuses on the visual and interaction language required for AI-assisted product design: primitive tokens, semantic tokens and the component library.
Additional system concerns — motion, responsive behaviour, layout grids, stacking order and engineering implementation — can be introduced as the system evolves. They are documented as out of current scope rather than absent decisions.
See what sits outside current scopearrow_forwardNot yet in scope
These categories describe how an interface behaves or how it is built rather than how it looks at rest. The underlying decisions already exist in the build; they are simply not yet named and published as part of the token architecture, so neither a designer nor an AI agent should treat them as system decisions yet.
Primitive Tokens
These are primitive tokens — raw values. Components never reference them directly; they bind to the intent names in Semantic Tokens.
{{ cat.title }}
{{ cat.desc }}
Typography
Three typefaces, each with a fixed job. Never substitute one for another: a claim number set in the UI face stops being scannable, and a paragraph set in the display face stops being readable.
Spacing
A 4px rhythm. Use these steps for gaps and padding rather than eyeballing distances — consistent spacing is what makes a set of screens feel like one product.
Corner Radius
Radius grows with the size of the container. Anything round — avatars, icon buttons, chips, dots — goes fully round rather than taking a large fixed value.
Elevation
Four levels, each a wide and very soft teal-tinted shadow — never neutral grey. The level tells a user how far above the page something sits, and therefore how temporary it is.
Icons
Material Symbols Outlined, weight 300, unfilled. Four sizes cover every use. Icons take their colour from the text beside them — they never introduce a hue of their own.
Semantic Tokens
Semantic tokens give raw primitive values a name, purpose and context that components can consume. Every token below names an intent and points at exactly one primitive token — no new colours, sizes or values are introduced here.
Where this layer sits
Primitive tokens hold raw, context-free values. Semantic tokens give those values an explicit design intent. Components consume the semantic names and nothing else — which is why one semantic token can resolve differently per theme while its intent stays the same.
How to read a semantic token
Every name is Category / Role. The category says what part of a component it dresses; the role says which job it does there. Nothing in the name describes a value.
{{ cat.title }}
{{ cat.desc }}
Semantic Mapping Matrix
This matrix is the canonical reference for tracing how primitive values flow into semantic intent and ultimately into components. Every semantic token, the primitive token behind it, and the components that consume it. Read a row left to right to trace a value into the product; read it right to left to find what a foundation change will move.
How the two tiers are wired
Both tiers live in one shared token file that every screen and component loads. The semantic tier is not prose — each name below is a real variable that resolves to a primitive token at runtime, which is what makes propagation automatic rather than a manual sweep.
What happens when a primitive token changes
A real change, traced through the system — this is the Accent edit made during the token dependency validation, not a hypothetical.
Rules for component authors
Every component page added to the library is written against these rules. They are what keeps the dependency hierarchy true over time.
Components
Reusable UI building blocks identified by auditing My Inventory v2. Nothing here is aspirational — every component was observed in the existing interface. Each row opens its own page.
Patterns
Reusable compositions and interaction structures identified by auditing My Inventory v2. Nothing here is aspirational — every pattern was observed in the existing interface. Each row opens its own page.
{{ doc.title }}
{{ doc.purpose }}
Examples from My Inventory v2
When to use
Components involved
Anatomy
{{ doc.subAnatomy }}
Variants
{{ doc.subVariants }}
{{ doc.intentHeading }}
{{ doc.subIntent }}
States
{{ doc.subStates }}
Decision logic
How to decide whether this is the right component, and which form it should take. Every rule states the reason behind it, so the same reasoning transfers to situations this page does not list.
{{ doc.variantHeading }}
States
Usage
{{ doc.subUsage }}
Semantic tokens used
{{ doc.subTokens }}
Accessibility
{{ doc.subA11y }}
Component contract
{{ doc.subContract }}
Coming Soon
Work is in progress. This section will be available as the design system evolves.