Design systems, a short tour
There's no such thing as just a button.
I build design systems the way engineers build libraries: with an API, a changelog and strong opinions about naming. This page walks through how, one idea at a time. Start with the button.
01 Anatomy
Every part has a name.
If a value doesn't come from a token, it's a guess. Here's the same button at twice its size, with where each number comes from. Point at a row or a part of the button.
Shown at 2×
Button / Primary / L
8 values, all from tokens
02 Tokens
Name the job, not the look.
A primitive is a colour. A semantic token is a decision. A component token is a promise. Rebrand by changing a primitive; add dark mode by remapping the semantics. The components never find out. Point at any token to trace it.
03 Theming
Change one token. Everything gets the memo.
Colour, corners and density are three decisions, not three hundred. Even the card's radius follows: it's the inner radius plus the padding, so the corners stay concentric.
Brand colourButter
Density
04 Handoff
Fluent in Figma. Conversational in code.
I studied IT before I studied type, so I design with the build in mind and prototype in the real material. Drag any number in the code, or the card's edge.
05 Adoption
A design system nobody uses is a very expensive Figma file.
So I run it like a product, with users, feedback and a few numbers I actually look at.
- Coverage
- How much of the product is built from the system. Screens and components, measured, not guessed. It's the only honest answer to "is it working?"
- Detaches
- Where teams break a component, and why. A detach is feedback. Three detaches in the same place is a missing variant.
- Requests
- What's missing, straight from the teams. One public queue, a contribution model people can say yes to, and a changelog so nobody is surprised.