Design Systems — Consistency at Scale
What you'll learn
- What a design system is and why big products need one
- Design tokens and reusable components
- How design systems connect design and code
- You'll define design tokens with CSS variables
A LEGO kit for your product 🧱
Imagine a big product with 50 screens designed by 5 people. Without coordination you'd get 12 slightly different blues, 8 button styles, and inconsistent spacing everywhere — it looks unprofessional and confuses users. A design system solves this: it's a single, shared library of reusable components and rules that everyone builds from — a LEGO kit for your product where every piece fits.
A design system has two layers:
1. Design tokens — the smallest decisions, named and stored in one place: the exact brand colors, the font sizes, the spacing scale, the border radii. Instead of "this blue is #2563EB" scattered across 50 files, you define color-primary once. Change it in one place and the whole product updates. (You've seen this idea everywhere now — CSS variables, Tailwind's scale, Figma components: define once, reuse.)
2. Components — reusable, pre-designed elements built from those tokens: the Button, the Card, the Input, the Modal — each with defined states (hover, disabled, error). A designer grabs the standard Button instead of drawing a new one; a developer uses the coded Button component. Same button, everywhere, forever consistent.
Why it's powerful:
- Consistency — every screen feels like one coherent product, because it's built from the same parts.
- Speed — assembling from ready components is far faster than designing each screen from scratch.
- Collaboration — designers and developers share one language. A "Primary Button" means the exact same thing in Figma and in code.
- Easy updates — rebrand? Change the tokens, and thousands of screens update at once.
Famous examples: Google's Material Design, IBM's Carbon, Shopify's Polaris. This very IMBEGNAL site has an informal one — consistent emerald accents, the same card style, one spacing rhythm.
The big idea unifying the whole track: define once, reuse everywhere. It's the same principle as functions, React components, Tailwind utilities, and Figma components — a design system applies it to your entire product's visual language. Master this, and you can build interfaces that are consistent, fast to produce, and easy to maintain — exactly what companies pay senior designers and frontend engineers to do.
Build design tokens with CSS variables. In :root, define three tokens, then the two buttons below will use them. Define:
--color-primaryset to any green (e.g.#10b981)--radiusset to at least8px
Both .btn buttons already reference var(--color-primary) and var(--radius) — define the tokens so they take effect. (Change one token → both buttons update: that's the power.)
Component states: the part beginners skip 🧩
A beginner designs one version of a button: the happy, default look. A real design system designs the button's entire life cycle — every state it can be in:
- Default — the normal resting look.
- Hover — a subtle change (darker shade, slight lift) when a mouse pointer is over it, telling sighted mouse users "this is clickable."
- Focus — the visible ring/outline when reached by keyboard (you met this in the accessibility lesson) — non-negotiable for a real system.
- Active/pressed — a brief visual change the instant it's clicked, giving immediate feedback that the click registered.
- Disabled — greyed out and un-clickable, with a lower-emphasis look, so people don't waste time clicking something inactive.
- Loading — a spinner or pulsing state while waiting on a server response, so a click doesn't feel ignored.
Design systems like Material Design and Polaris document all of these for every component, not just the button. Skipping states is exactly how you get an app where a disabled button looks clickable, or a click gives no feedback and people click it five times, or keyboard users can't tell what's focused. A component isn't "done" until its states are, too — this is the difference between a design system that merely looks good in a static mockup and one that survives real, messy use.
Try it yourself: audit a real app's system 🔍
Open any well-built app you use daily (Gmail, a banking app, this very site) and go hunting for its design system, piece by piece:
- Find 3 buttons that look different (a primary action, a secondary/outline button, a destructive "delete" button in red). Notice how each communicates its importance through color alone — that's tokens at work.
- Click and hold a button — do you see an active/pressed state? Tab to it with your keyboard — is there a visible focus ring?
- Find the spacing rhythm. Look at the padding around cards or list items — does it feel like the same handful of measurements repeating (8px, 16px, 24px), or does it feel random? Consistent spacing is a token, even if you never see the number.
- Try to break consistency: can you find one screen where a button or heading looks slightly off from the rest? Big products occasionally have these gaps too — spotting them is exactly the skill this lesson teaches.
This 10-minute audit habit — done on apps you admire — trains your eye to see the invisible system holding a good interface together, faster than any tutorial.
Real-world case study: Google's Material Design 🔍
In the early 2010s, Google's products famously looked inconsistent — Gmail, Android, and Search each had their own visual language, built by different teams making independent decisions. In 2014, Google introduced Material Design: a single, comprehensive design system with shared components, a spacing/elevation model, motion rules, and color guidelines, applied across virtually all of Google's products and offered publicly for any developer to use.
The impact was twofold. Internally, it let far-flung teams building Android, Gmail, Docs, and dozens of other products all "speak the same visual language" without needing to invent their own button or card from scratch — exactly the speed and consistency benefit from this lesson, at the scale of one of the largest companies on Earth. Externally, Material Design became one of the most widely adopted open design systems in the industry, used by countless third-party apps that wanted a professional, cohesive look without building a system from zero.
Material Design also keeps evolving (it has gone through several major revisions since), which illustrates another benefit of tokens: because the whole system was built on named, shared values rather than one-off decisions, Google could evolve its entire visual identity in stages across every product, instead of manually re-skinning each app one at a time.
Question 1 of 5
What is a design token?
Question 2 of 5
Why do large products need a design system?
Question 3 of 5
What single principle unifies functions, React components, and design systems?
Question 4 of 5
Why must a component's disabled and focus states be designed, not just its default look?
Question 5 of 5
What made Google's Material Design so impactful?
Summary
- A design system is a shared library of reusable components + tokens
- Design tokens (color, spacing, radius) are defined once and reused
- Benefits: consistency, speed, collaboration, easy rebranding
- A component isn't done until all its states (hover, focus, disabled, loading) are designed too
- Material Design shows how one shared system can unify products at massive scale
- You built real design tokens with CSS variables
Next: Accessibility — making sure your beautiful, consistent designs work for everyone.
Practice
Reading is not learning until you run something. Pick one.