Design system
The system this site runs on.
Nine token layers, forty-eight components, one contract between design and code. Everything below renders the real component, not a screenshot.
Foundations
- 309
- Design tokens
- 31
- UI primitives
- 9
- Stylesheet layers
- AA
- WCAG 2.2 target
Tokens, not values
Every colour, space and duration resolves through a semantic token. Rebranding is a variable change, not a refactor.
Variants as contract
Each component declares its variants, sizes and states in one table. If it is not in the table, it does not exist.
Accessible by construction
Focus rings, ARIA wiring and reduced-motion handling live in the primitive, so no consumer can forget them.
One source, two surfaces
The Figma library and the code library are generated from the same token file, so they cannot drift apart.
Colour
Components consume semantic roles, never raw palette values. Switching the theme re-resolves every role — try the toggle in the header.
Primary
--primarySecondary
--secondaryAccent
--accentSuccess
--successWarning
--warningDanger
--dangerSurface
--surfaceBackground
--background
Typography
Geist for display, Inter for body, Geist Mono for code. Display sizes are fluid and clamp between a mobile and desktop bound.
- Hero
clamp(44 → 96) / -0.04em - Section
clamp(32 → 64) / -0.035em - Title
clamp(24 → 36) / -0.025em - Lead
clamp(17 → 20) / 1.65 - Body
18 / 1.78 - Small
14 / 1.43
Spacing
An 8pt grid with 4px half-steps. Section rhythm is fluid, clamping from 64px on mobile to 160px on wide screens.
3xs4px2xs8pxxs12pxsm16pxlg24pxxl32px3xl48px5xl64px7xl96px
Forms
Every control is wrapped by UiField, which owns the id, aria-describedby and error announcement — so no form in the codebase can ship an undescribed input.
We never share it.
This field is required.
One email a month.
Feedback
Badges, chips, tooltips, skeletons and toasts. Toasts render into a single aria-live region so nothing is announced twice.
Badges & chips
Toasts
Loading
Overlays
Dialogs and drawers trap focus, close on Esc, lock body scroll and return focus to the trigger. Try it with the keyboard.
Want one of these
We build this for clients too.
Token architecture, Figma library, coded components and the governance model that keeps it alive after we leave.
Or email us directly at hello@uxatom.com