Building Design Systems
A design system is a theme with documentation. Learn how to go from brand values to a living design system using Vanilla Breeze.
A Design System Is a Theme with Documentation
Every VB theme already defines colors, typography, spacing, shape, shadows, and motion through token overrides. A design system adds the why — brand identity, usage guidelines, voice, and component documentation.
In Vanilla Breeze, themes and design systems are not separate systems. They are the same system at different levels of maturity:
| Level | What You Create | Effort | Output | When |
|---|---|---|---|---|
| Quick Theme | Override a few token seeds (hue, font, radius) | 15 minutes | A CSS file that changes the look | Prototypes, hackathons, personal projects |
| Branded Theme | Full token overrides + light/dark modes + component adjustments | 2–4 hours | A complete visual identity | Product launch, client project, startup MVP |
| Design System | Branded theme + documentation page + voice/tone + usage guidelines | 1–2 days | A living reference for your team | Team of 3+, multi-product, agency handoff |
| Research-Driven DS | All of the above + user personas, empathy maps, journey maps embedded in documentation | 3–5 days | A defensible, user-grounded system | Enterprise products, regulated industries, design-led orgs |
How to Choose Your Level
- Solo developer? — Quick Theme. Override
--hue-primaryand--font-sans. Ship. - Small team, one product? — Branded Theme. Cover light/dark modes and all six token categories.
- Multiple developers or designers? — Design System. Document so others can contribute without breaking consistency.
- Users with specific needs? — Research-Driven DS. Use the Brand-to-Design-System guide to connect UX research to every token choice.
From Brand Values to Design System
The workflow moves from abstract brand values to concrete token overrides to living documentation.
Step 1: Define Your Brand
Before writing any CSS, answer these questions:
- Who are your users? — The UX Planning Pack’s
<user-persona>and<empathy-map>components can help you formalize this. - What personality should the interface convey? — Professional and restrained? Playful and bold? Technical and precise?
- What are your brand colors? — Usually a primary color from your logo, plus 1–2 supporting colors.
- What typefaces represent you? — A heading font for impact, a body font for readability, a monospace font for code.
Step 2: Create a Theme
A VB theme is a CSS file that overrides token seeds. The framework derives all interactive states, surfaces, and responsive behaviors automatically from your seeds.
:root[data-theme~="my-brand"],[data-theme~="my-brand"] { /* Color seeds — the framework derives hover, active, subtle states */ --hue-primary: 220; --hue-accent: 35; /* Typography */ --font-sans: "Inter", system-ui, sans-serif; --font-mono: "JetBrains Mono", monospace; /* Shape */ --radius-m: 8px; --radius-full: 999px; /* Motion */ --duration-normal: 200ms; --ease-default: cubic-bezier(0.25, 0.1, 0.25, 1);}
Start from src/tokens/themes/_theme-template.css for the full list of overridable tokens. See the Themes documentation for details.
Step 3: Document It
Use the Design System Pack components to build a living reference page. These components read your theme’s tokens at runtime, so the documentation always reflects the current state of your design.
<!-- Brand Identity --><brand-mark src="/logo.svg" wordmark="Acme Corp"></brand-mark> <!-- Color System --><color-palette colors=" Primary: var(--color-primary), Accent: var(--color-accent), Success: var(--color-success), Error: var(--color-error)" show-values></color-palette> <!-- Typography --><type-specimen font="var(--font-sans)" label="Body Font"></type-specimen><type-specimen font="var(--font-mono)" label="Code Font"></type-specimen> <!-- Spacing and Shape --><spacing-specimen></spacing-specimen><token-specimen type="radius" label="Border Radius"></token-specimen><token-specimen type="shadow" label="Elevation Scale"></token-specimen> <!-- Component Showcase --><component-sampler label="UI Components"></component-sampler>
See the Meridian Labs example for a complete design system page using all these components.
How Tokens Flow
VB uses a seed-and-derive architecture. You set a few seeds; the framework calculates everything else.
| You Set | The Framework Derives |
|---|---|
--hue-primary: 220 |
--color-primary, --color-primary-hover, --color-primary-subtle, --color-interactive, hover/active backgrounds |
--font-sans: "Inter" |
All body text, nav labels, form controls, button text |
--radius-m: 8px |
Cards, buttons, inputs, dropdowns, modals — anything that uses var(--radius-m) |
--duration-normal: 200ms |
Transitions, view transitions, hover effects, accordion animations |
This means a single hue change propagates to every interactive surface, status color, and hover state automatically. No manual color picking for each component.
Real-World Examples
These examples show the spectrum from quick themes to complete design systems.
Branded Themes (Theme-Level)
The Alpenglow Gear demo shows three real-world brands — McDonald’s, Anthropic, and IBM — each implemented as a VB theme override. Same components, same layout, completely different visual identity.
Full Design System
The Meridian Labs example is a complete design system page for a fictional climate research company. It demonstrates brand identity, color palettes, typography, spacing, shapes, motion, component showcase, and voice/tone guidelines — all built with the Design System Pack components.
Corporate SaaS
The Nuvaris Therapeutics demo and the Luminary SaaS demo show mobile-first branded applications with custom tokens, scroll-driven animations, and frosted glass effects.
Composing Design Systems
VB design systems compose with accessibility layers, color accents, and sizing presets.
Your theme CSS defines the visual identity. On top of it, users can layer:
- Accessibility themes — high contrast, large text, dyslexia-friendly. These compose with any brand theme via space-separated
data-themevalues. - Color accents — OKLCH seed overrides applied via JavaScript. Users can personalize hue without breaking your brand system.
- Sizing presets — compact, default, spacious. Adjust density while keeping your spacing ratios.
- Color modes — light, dark, auto. Your theme should support both; the framework handles the switching.
<!-- Brand + accessibility + accent all compose --><html data-theme="my-brand a11y-large-text" data-mode="dark">
Next Steps
- From Users to Design System — connect UX research (personas, empathy maps, journeys) to design token decisions
- Design System Pack — all the documentation components
- UX Planning Pack — research and planning components
- Themes — how to create and customize themes
- Theme Lab — interactive playground for exploring themes
- Palette Generator — generate color harmonies from a seed
- Font Pairer — discover and pair heading, body, code, and display fonts
- Gradient Builder — create CSS gradients with oklab interpolation
- Meridian Labs Example — complete design system reference page