Back to Projects
Design System · Cross-team · Figma

Aerospace Design System

Building a unified component library across 3 product teams — 80+ components, 2 design languages unified, shipped in 6 months.

80+
components
3
teams unified
−60%
design debt
01 — Overview

Context & Scope

Three independent product teams — HMI, MRO, and Ground Operations — had each built their own design patterns over years of isolated development. Components were duplicated across codebases, inconsistent in behaviour and visual language, and poorly documented. Every new feature required developers to reinvent already-solved problems, while designers spent hours reconciling conflicting styles.

The mission was clear: unify everything under a single, tokenized, and rigorously documented design system. This meant not just consolidating visual assets, but establishing a shared governance model, contribution workflow, and semantic token architecture that all three teams could adopt and trust as a source of truth.

The central challenge was political as much as technical — three teams with different roadmaps, different tech stacks, and different levels of design maturity. Building the system itself was only half the job. Achieving real adoption required deep collaboration, clear communication, and a phased rollout strategy that minimised disruption to active sprints.

Role
System Designer & Lead
Timeline
6 months
Team
6 persons
Tools
Figma · Storybook
Tokens Studio · Jira
Output
80+ components
Design token library
02 — Research & Audit

Discovery: mapping 3 design languages

Before building anything, we needed to understand exactly what existed. A full component inventory audit across all three codebases revealed the true scale of fragmentation — and built the business case for investment.

1
Component
inventory
2
Visual
language audit
3
Dev
interviews
4
Pain point
mapping
5
Token
strategy
HMI Team Button — 3 variants Alert banner (custom) Data table — v1 Form inputs — 114 types 142 components MRO Team Button — 5 variants Status chip (different) Data table — v2 Navigation sidebar 118 components Ground Ops Team Button — 2 variants Alert modal (custom) Data table — v3 Map overlay controls 80 components
🔍
Discovery audit finding
340+ unique components catalogued across 3 codebases — with no shared naming convention, no shared token layer, and no single source of truth.
📦

Component inventory audit

340+ components catalogued across HMI (142), MRO (118), and Ground Operations (80). Taxonomy built in Figma to identify overlaps, near-duplicates, and gaps.

🎨

Design language comparison

Identified 3 competing visual grammars: different type scales, unrelated spacing systems, and colour palettes with no shared primitive tokens.

💬

Developer interviews

8 frontend engineers interviewed on pain points. Key theme: component fragmentation was creating friction at every handoff, slowing delivery by an estimated 30%.

Key insights from the audit

40% of components were near-duplicates with subtle but consequential differences — different hover states, different focus rings, different error styles for identical input types.

No shared colour tokens — colour inconsistencies found in 12 critical screens, including status indicators used in safety-relevant contexts with diverging meanings across teams.

Developers spent 30% of sprint time recreating components that already existed elsewhere — work that was entirely invisible to product managers because there was no shared inventory.

03 — Stakeholder Map

Understanding the humans behind the system

A design system succeeds or fails through its adoption — and adoption is a people problem. We mapped the three key stakeholder profiles across teams to understand their expectations, concerns, and the conditions for buy-in.

DL
Design Lead — Sophie R.
Senior UX · HMI Team · 6 years at the company
"I spend half my onboarding sessions explaining why our components look different from MRO's. A single source of truth would save me hours every sprint."
Expectations & concerns
  • Wants a system that doesn't constrain creative decisions — flexibility within structure
  • Concerned about migration cost: existing Figma files represent months of work
  • Needs robust documentation so junior designers can self-serve without asking
FL
Frontend Lead — Marc T.
Tech Lead · MRO Team · React / TypeScript stack
"We've built a button component three times across three repos. I want one authoritative implementation that my team can drop in and trust."
Expectations & concerns
  • Needs Storybook integration and TypeScript types — documentation must live alongside code
  • Worried about versioning: breaking changes to shared components can break three products at once
  • Wants a clear contribution process so his team can add components without waiting on the design system team
PM
Product Manager — Léa V.
Product Owner · Ground Operations · Focused on delivery velocity
"I don't care what it looks like internally. I care that my team ships faster and that we stop having the same UI inconsistency bug every quarter."
Expectations & concerns
  • Needs visible ROI: reduced bug count, faster screen creation, fewer handoff loops
  • Concerned about the time investment during migration — doesn't want to pause roadmap features
  • Wants quarterly metrics to justify the ongoing investment to stakeholders
04 — System Architecture

Token hierarchy: primitives to components

The foundation of the system is a three-tier token architecture. Primitive tokens define the raw values; semantic tokens assign meaning; component tokens bind semantic values to specific UI elements. This separation ensures that a single primitive change propagates consistently everywhere.

Primitives
color.amber.500
size.4 = 16px
font.weight.700
radius.md = 8px
Semantic
color.warning
spacing.component
font.label
border.interactive
Component
btn.bg.warning
btn.padding.x
btn.label.size
btn.border.radius

6 token categories defined

Each category has its own primitive-to-semantic mapping, documented in Tokens Studio and synced to the codebase via a CI pipeline.

🎨

Color

62 primitive colours, 28 semantic aliases. Status colours (critical, warning, success, info) defined once and used everywhere — including safety-critical HMI screens.

color.status.critical → #DC2626
🔡

Typography

Single type scale with 8 steps, 3 weights, and responsive fluid sizing. Display, body, label, and code variants — each mapped to semantic roles, not arbitrary px values.

font.heading.xl → 32px/900
📐

Spacing

4px base unit, 10 spacing steps. Semantic aliases for component padding, layout gaps, and section margins ensure spatial consistency without memorising numbers.

spacing.component.md → 16px

Motion

Duration and easing tokens for micro-interactions. Critical for aerospace contexts where unnecessary animation in safety UIs must be suppressed via a motion.reduced override.

motion.duration.fast → 150ms

Elevation

5-level shadow scale with semantic aliases. Ensures z-axis hierarchy (overlays, dropdowns, modals) is consistent across products — critical for layered dashboard UIs.

elevation.overlay → shadow-lg
🔷

Icons

Single icon set (324 icons) replacing 3 competing libraries. Consistent sizing scale, semantic naming, and SVG tokens for colour overrides tied to status tokens.

icon.size.md → 20×20px
05 — Component Library

80+ components — 4 highlight systems

The library is structured around functional clusters rather than atomic categories. Each cluster is documented with usage guidelines, accessibility notes, and Storybook stories that serve as living specifications for developers.

Button System

Unified action language

3 variants (Primary, Secondary, Ghost), 4 sizes, 3 intent states (default, warning, destructive). Replaces 10 divergent button implementations. Supports icon-leading, icon-trailing, and loading states. Fully WCAG AA compliant contrast ratios at all sizes.

Primary
Secondary
Ghost
Form Elements

Input, select, checkbox, radio

22 form components unified into a single system. Consistent focus ring behaviour, error states, and helper text patterns. Critical for MRO maintenance forms where field validation errors have operational consequences. All components keyboard navigable.

Aircraft registration number…
B-XRAY12 Active
Data Tables

Dense, sortable, filterable

Replaces 3 custom table implementations across teams. Shared column configuration API, row selection patterns, inline editing, and status cell variants. Designed for dense aerospace data — up to 14 columns at 1280px without horizontal scrolling.

FLIGHT STATUS ETA
AF4421 On time 14:32
BA2190 Delayed 15:10
Navigation Patterns

Sidebar, topbar, breadcrumbs

6 navigation patterns covering sidebar (collapsed/expanded), top bar, tab navigation, breadcrumbs, and contextual menus. Active state, permission-based item visibility, and responsive collapse behaviour baked in — not left to individual implementations.

Dashboard
Flights
Maintenance
Reports
Documentation standard

Every component ships with: a usage guideline, an anatomy diagram, accessibility notes, do/don't examples, and a Storybook story. Documentation is mandatory — undocumented components are not merged.

Versioning & changelog

Semantic versioning (major.minor.patch). Breaking changes require a 2-sprint deprecation notice with migration guide. A shared changelog Slack channel pings all three product teams on every release.

Contribution model

Any team can propose a new component via a structured RFC (Request for Component) template. The design system team reviews in weekly office hours, preventing bottlenecks while maintaining quality control.

06 — Adoption & Rollout

Phased adoption across 3 teams

A big-bang migration was not an option — it would have disrupted three active roadmaps simultaneously. We designed a phased adoption strategy that allowed each team to migrate at their own pace while immediately benefiting from shared tokens.

Phase 1 — Months 1–3

Foundation layer

Token library published and adopted across all three design files. Designers begin using shared colour, typography, and spacing tokens in new work immediately. No component migration required yet — reducing the activation barrier to near zero. Parallel: first 20 foundational components built and documented in Storybook.

Phase 2 — Months 4–6

Component migration

Teams migrate existing screens to shared components, starting with the highest-traffic surfaces. A dedicated migration sprint (1 week per team) was budgeted into each roadmap. The design system team provided direct support during migration — pairing with developers to resolve edge cases and capturing new component requirements that emerged from real usage.

Before / After metrics

Design consistency score (internal audit)
Before
34%
After
91% (+57pp)
Time to create a new product screen (design)
Before
3 hours
After
45 min (−75%)
Developer handoff errors per sprint
Before
28 errors
After
4 errors (−86%)
Component reuse rate (% of UI built from shared library)
Before
12%
After
78% (+66pp)

Adoption challenges & how we overcame them

Resistance to migration cost

Product managers were reluctant to budget migration sprints. We built a ROI calculator showing projected time saved per sprint post-adoption vs migration cost — making the business case in their language.

"Once I saw the numbers, the 1-week migration sprint was easy to sell to leadership."
— Product Manager, Ground Ops

Token naming disagreements

Three teams had three opinions on naming conventions. We held two structured workshops using a decision matrix and defaulted to the most self-documenting option — solving the political problem with a process.

"The workshop format forced us to agree in the room rather than debate async for weeks."
— Design Lead, HMI Team

Edge cases breaking shared components

The MRO team had complex table states (offline sync, partial-data rows) not covered by the baseline component. We introduced a formal RFC process to elevate edge cases into first-class component variants rather than one-off overrides.

"The RFC process felt like extra work at first — now it's the fastest way to get something into the system."
— Frontend Lead, MRO
07 — Validation

Design review sessions & component refinement

Rather than a single A/B test, validation was continuous — embedded into the normal sprint cadence through structured design review sessions and a rapid iteration loop on component quality.

Validation approach

Bi-weekly cross-team design reviews

Each team's designers attended a shared 45-minute session every two weeks. Screens built with the system were reviewed for consistency. Deviations were catalogued: either fixed (incorrect usage), fed back as component improvements, or escalated to the RFC process for new variants.

24
review sessions over 3 months
Outcome ✓

92% adoption in 6 weeks post-launch

Measured as the percentage of new UI surfaces built using design system components rather than custom solutions. Remaining 8% are documented edge cases awaiting RFC resolution — not defections. The system now handles 100% of new screen creation for all three teams.

92%
adoption rate at week 6
Metric Week 1 Week 4 Week 6
Component adoption rate 34% 71% 92%
Active Figma library detaches 47/week 18/week 4/week
Developer "where is X?" Slack questions 22/week 9/week 2/week
08 — Results & Learnings

Impact & Takeaways

−60%
design debt reduction measured over 6 months
78%
component reuse rate (from 12% baseline)
−86%
developer handoff errors per sprint
92%
adoption rate in 6 weeks post-launch

System design learnings

01
A design system is a product, not a project. It needs a roadmap, a backlog, and ongoing resourcing — not just a launch sprint. The teams that succeeded fastest were the ones that treated the system as a long-term infrastructure investment rather than a one-time deliverable.
02
Tokens before components. Starting with the token layer — before touching a single component — meant that teams could adopt immediately and feel benefit from day one. It also gave us a shared language that made every subsequent conversation about components dramatically easier.
03
Documentation is the product. The most technically complete component library will fail if developers can't find what they need in under 30 seconds. Investing in documentation quality — not just component quality — was the single biggest driver of adoption velocity.
What I would do differently

I would involve one embedded developer from each team from the very first week — not at the review stage. Having engineers co-own the token naming decisions from the start would have prevented several naming conflicts and made the Storybook integration significantly smoother. Designer-only workshops produce design-centric solutions; cross-functional workshops produce ones that actually get built.

Interested in building a design system together?

Get in touch

Next case study

Interface HMI — Embedded systems

View project