Design System
Unifying the design language across web, mobile, and desktop for a B2B SaaS product suite
A B2B SaaS company's product suite had grown organically across multiple platforms — mobile, desktop, and web — without a shared design language. Inconsistent UI patterns, duplicated components, and ad-hoc styling were slowing down development and fragmenting the user experience. I was brought in as the sole designer to audit the existing interfaces, define a unified token system, build a scalable component library, and establish documentation practices for cross-functional collaboration.
No single source of truth
Each platform had its own visual language. Buttons looked different across mobile and web, spacing was inconsistent, and there was no single source of truth for design decisions. Engineering was spending extra cycles reconciling design specs, and onboarding new team members meant re-explaining patterns that should have been documented.
Audit & discovery
I started with a comprehensive UI audit across all platforms, cataloging every component variant, color value, and typographic style. This revealed 47 unique button styles, 12 different greys, and no shared spacing scale.
Token architecture
I defined a semantic token system: primitive values (colors, sizes) feeding into semantic tokens (text-primary, surface-elevated, spacing-md) that could flex across themes and platforms.
Color tokens
Primary & neutral scalesTypography
Live scaleSpacing
Scale as a rulerGrid & breakpoints
A responsive grid with predictable columns and gutters kept layouts consistent across web and desktop, while scaling down cleanly for tablet and mobile.
Color system
Colors are presented as primitives (scales) and semantic tokens (usage). Semantic names kept design and engineering aligned as themes evolved.
Color palette
PrimitivesSemantic colors
Status groupsColor tokens
Usage cardsTypography
A strict scale with clear roles (display → caption) kept enterprise interfaces readable at dense data densities.
Type scale
Specs + sample| Style | Specs | Sample |
|---|---|---|
| H1 | 32/40 · 800 · -0.02em | The quick brown fox |
| H2 | 24/32 · 700 · -0.01em | The quick brown fox |
| H3 | 18/26 · 700 · -0.01em | The quick brown fox |
| Body | 14/22 · 500 · 0 | The quick brown fox jumps over the lazy dog. |
| Caption | 12/16 · 600 · 0.12em | The quick brown fox |
Spacing system
Spacing tokens encode rhythm. Each token includes a readable name plus px value, with examples showing real UI application.
Spacing tokens
Name + pxMember list
Applied spacingCorner radius
A small set of radius tokens kept surfaces consistent and recognizable across the product.
Radius scale
TokensElevation & effects
Three elevation levels cover most UI needs—from flat surfaces to floating panels—without inventing new shadows per component.
Elevation
1 · 2 · 3Icon set
A consistent 24px icon grid with unified stroke weights kept UI controls crisp across densities.
Icons
SVG setComponent library
Built a Figma component library from atomic elements up: icons → buttons → form elements → cards → complex patterns like dashboards and data tables. Every component included states, variants, and usage guidelines.
Buttons
Primary · Secondary · GhostInput fields
Default · Focused · Error · DisabledCards & badges
Variants connected by tokensDocumentation & handoff
Created living documentation in Figma with annotation standards, redline specs, and naming conventions aligned with the engineering codebase. Ran onboarding sessions with developers to ensure adoption.
| Property | Value |
|---|---|
| Background | primary-500 |
| Text color | white |
| Font | 14px/20px, Semi-Bold |
| Padding | 12px 24px |
| Border radius | 8px |
| States | default, hover, active, disabled |
Impact across teams & platforms
What I took forward
A design system is a product, not a project. It needs continuous maintenance, stakeholder buy-in, and clear governance to stay alive.
Starting with tokens before components was crucial — it forced alignment on fundamentals before building anything visual.