Crafting a Unified Design System for PROS Digital Retail

Multi-Brand Design System for Airlines

Design System

Multi-branding

Design Tokens

Figma

Airline Industry

Architected a scalable multi-brand design system serving airline clients, each requiring unique visual identity while maintaining PROS product consistency. The system enables rapid brand customization without code changes, reducing theming effort from 3 weeks to 3 days per airline brand.

Dec 9, 2022

Green Fern
Green Fern
Green Fern
Role

Lead UI/UX Designer (Design System Owner)

Lead UI/UX Designer (Design System Owner)

Lead UI/UX Designer (Design System Owner)

Timeline

2021 - Present (4 years ownership)

2021 - Present (4 years ownership)

Impact

2 airlines live in production (SATA 2023, Cyprus 2025)

2 airlines live in production (SATA 2023, Cyprus 2025)

Tech

Figma Variables & Modes, Design Tokens, React, SCSS, Style Dictionary

Figma Variables & Modes, Design Tokens, React, SCSS, Style Dictionary

The Challenge

2021: Digital Retail was in maintenance mode. The team had been reduced to minimum resources. Azores Airways (SATA) wanted to migrate from the legacy booking system to our new React version, but we had no scalable way to handle airline branding.

I saw an opportunity:

What if we built multi-brand theming from the start, not as an afterthought?

The situation:

  • SATA migration approved as proof of concept

  • Minimal development resources (most team had been let go)

  • Each airline would demand pixel-perfect brand adherence

  • No existing design system for the new React platform

  • If SATA succeeded, more airlines would follow

The risk:

  • Build it wrong, and we'd be stuck with custom CSS per airline forever

  • Build it right, and we'd have a scalable system for future clients

I built the design module on my own, in parallel to the frontend team's work.


The Fundamental Question

Rather than asking "how do we make this component work for Brand X?", I reframed it as:

"What if brand identity was just configuration, not code?"

This shift in thinking led to the token-based multi-brand architecture where:

  • Components are brand-agnostic

  • Visual identity lives in design tokens

  • New brands = new token configuration, not new components

  • One codebase serves all customers

My Approach

1. Token-Based Multi-Brand Architecture

Instead of building separate themes, I designed a token system where brand identity is data, not code:

Core insight: Airlines differ in values (colors, fonts), not structure (components, spacing system)

This meant:

  • Single component library for all brands

  • Brand differences expressed as design token sets

  • Theme switching via token swap, not code changes

  • New airlines require only token configuration


2. Collaborative Brand Abstraction

Worked directly with airline brand teams to identify patterns:

  • Analyzed 5 existing airline brand guidelines

  • Extracted common denominators (typography scales, spacing systems)

  • Identified true differences (brand colors, logo usage, photography styles)

  • Created brand abstraction layer that accommodates variations


3. Figma-First Design Process

Prototyped the entire multi-brand system in Figma before touching code:

  • Built master component library with smart defaults

  • Created brand "modes" for each airline

  • Validated with stakeholders using interactive prototypes

  • Refined token taxonomy based on designer feedback


4. Systematic Token Taxonomy

Designed a three-tier token system that separates brand from structure:

This hierarchy ensures brand changes cascade correctly without breaking components.

The solution

Multi-Brand Token Architecture

Created a sophisticated token system with clear separation of concerns:

{
  "brand": {
    "primary": "#0066CC",    //Airlines primary brand color
    "secondary": "#FF6B35",  //Airlines accent color
    "neutral": "#2D3748"     //Airlines neutral palette
  },
  "semantic": {
    "action": "{brand.primary}",
    "surface": "{brand.neutral}",
    "accent": "{brand.secondary}"
  },
  "component": {
    "button-background": "{semantic.action}",
    "card-surface": "{semantic.surface}"


Figma Variables & Modes Implementation

Built the design system in Figma using Variables and Modes:

9+ Theme Modes:

  • Light and dark variants for each airline

  • High-contrast accessibility modes

  • Preview mode for stakeholder presentations

Variable Collections:

  • Colors: Brand palette, semantic colors, component colors

  • Typography: Scale, weights, line-heights

  • Spacing: 8px base grid with consistent increments

  • Borders: Radii, widths, styles


    Mode Switching: Designers toggle between airline brands instantly to validate cross-brand consistency



Component Design Patterns

Every component built with multi-brand support from the start:

Button example:

  • Structure identical across brands

  • Colors reference semantic tokens

  • Hover/active states use brand-relative calculations

  • Accessibility (contrast ratios) validated per brand


Card example:

  • Layout system brand-agnostic

  • Surface colors map to brand tokens

  • Borders and shadows scale with brand intensity

  • Typography follows brand type scale


Build Pipeline & Tooling

Created automated tooling to maintain brand-code alignment:

Style Dictionary transformation:

// Token transformation pipeline
StyleDictionary.extend({
  source: ['tokens/brands/**/*.json'],
  platforms: {
    scss: {
      transformGroup: 'scss',
      buildPath: 'build/scss/',
      files: [{
        destination: '_variables.scss',
        format: 'scss/variables'
      }]
    }
  }
});

CI/CD validation:

  • Automated contrast ratio checking per brand

  • Visual regression tests across all brand modes

  • Token naming convention enforcement

  • Breaking change detection


Technical Implementation

Architecture Decisions

Why Figma Variables over separate files:

  • Single source of truth for designers

  • Mode switching shows brand impact immediately

  • Variables export to tokens automatically

  • Easier maintenance than managing 9+ separate Figma files

Why three-tier token hierarchy:

  • Brand tier: Makes adding new airlines trivial (just define brand palette)

  • Semantic tier: Provides meaning and context

  • Component tier: Isolates component-specific decisions

Why Style Dictionary:

  • Transforms tokens to multiple formats (SCSS, CSS, JS)

  • Validates token references at build time

  • Platform-agnostic output

  • Supports complex transformations


Brand Implementation Pattern

Adding a new airline brand follows this process:

  1. Receive brand guidelines (colors, typography, logos)

  2. Define brand tokens in Figma Variables

  3. Create mode for the new airline

  4. Validate components across all screens

  5. Export tokens via Figma plugin

  6. Transform to code via Style Dictionary

  7. Deploy - new brand live without code changes

Time: 3 days vs. 3 weeks previously

Example: Button Component
// Brand tokens (airline-specific)
$brand-primary-airline-a: #0066CC;
$brand-primary-airline-b: #E21836;

// Semantic tokens
$action-primary: var(--brand-primary);

// Component tokens
.button {
  background: var(--action-primary);
  color: var(--action-contrast);
  border-radius: var(--radius-medium);
  padding: var(--spacing-2) var(--spacing-4);
  
  &:hover {
    background: var(--action-primary-hover);
  }
}

Same component, different brand token values = unique airline identity.

Design Process

The Workflow: Design to Production:

  1. Receive brand guidelines from client

  2. Configure primitive tokens in Figma (colors, typography, spacing scales)

  3. Validate semantic token mappings

  4. Generate high-fidelity preview in Figma

  5. Export token JSON via custom Figma plugin

  6. Handoff to development team

Time to preview: Hours, not days
Time to production-ready tokens: 1-2 weeks
Developer time saved: They implement once, theme infinitely


My Role: Design Module Ownership

What I own:

  • Complete design module for Digital Retail IBE multi-brand system

  • Token architecture and configuration

  • Figma implementation for all airline themes

  • Design guidelines for frontend implementation

  • All new features and workflow designs

What "ownership" means:

  • Built the initial system independently in 2021

  • Still the sole UI/UX responsible for the product 4 years later

  • Every new feature, workflow, or design decision comes through me

  • Maintain the system in parallel with KIT-Pillar and Data Management work


Cross-Team Coordination: Cyprus Example

Cyprus Airways involved three separate teams:

My work (PROS UX):

  1. Receive brand guidelines from client

  2. Configure primitive tokens in Figma (colors, typography, spacing)

  3. Validate semantic token mappings

  4. Generate high-fidelity preview

  5. Export token JSON via custom Figma plugin

  6. Provide design guidelines to implementation teams

NICE Dev Team:

  • Web platform implementation

  • Digital Retail IBE integration

  • Token consumption in React

  • Following my design system documentation

2e Systems:

  • Mobile app design and development (iOS/Android)

  • Consuming same brand tokens for consistency

  • Design collaboration for mobile-specific patterns


Challenge: Keep three separate teams aligned on brand execution across web and mobile.

Solution: My design module as single source of truth. All teams consume the same token exports and follow the same design guidelines I created.

Result: Consistent brand experience across all touchpoints with minimal coordination overhead.

Impact & Results

Quantitative Impact

Enterprise Success:

  • 2 airlines live in production (SATA 2023, Cyprus 2025)

  • 4 years of sustained system ownership

  • Zero rewrites - original 2021 architecture still powering new implementations


Speed:

  • Cyprus Airways: 6 months contract-to-launch

  • Industry standard for custom builds: 12-18 months

  • 50% time reduction through token-based theming


Quality:

  • 95%+ design-to-code fidelity maintained across all brands

  • Automated visual regression testing catches drift

  • Single design module serves all airline implementations

  • Zero custom CSS per brand


Qualitative Impact

Business:

  • Cyprus: Immediate commercial uplift, operational efficiency

  • SATA: Successful migration from legacy platform

  • Reduced implementation costs enable faster sales cycles

  • Proven ROI: Cyprus closed 3 years after I built the original system


Technical Sustainability:

  • Built once in 2021, still serving new clients in 2025

  • No major refactors required

  • Scales to new brands without code changes

  • Mobile app support added (2e Systems integration)


Key Learnings

Taking initiative pays compound interest:
In 2021, nobody asked me to build a multi-brand system. I saw the opportunity with SATA's migration and built it anyway. 4 years later, that decision is still enabling new client deals.

Ownership means longevity:
Being the sole owner of the design module for 4 years taught me how systems evolve. Every new feature request, every edge case, every client customization - I've seen how the architecture holds up under real-world pressure.

Enterprise sales cycles are slow, and that's okay:
2 live clients in 4 years sounds slow until you understand the complexity. B2C airline booking systems require legal compliance, payment integration, multi-language support, and stakeholder alignment across multiple departments. Quality over quantity.

Build for scale, implement incrementally:
The system was architected to handle unlimited brands. We've shipped 2 so far, but the architecture doesn't need to change for the next one. Building with margin for growth was the right call.

Configuration beats customization:
The best decision in 2021 was making brands pure configuration. No airline has ever required code changes to their theme. All customization happens at the token level.

Solo work has limits:
Building the design module alone gave me complete control, but scaling required collaboration. NICE Dev, 2e Systems, and frontend teams all needed clear guidelines and documentation. Ownership doesn't mean doing everything yourself.

Key Takeaway

Multi-brand design systems are possible when you separate brand (values) from structure (components). Design tokens are the abstraction layer that makes this work at scale. The investment in token architecture pays off when you can onboard new brands in days instead of weeks.
This case study demonstrates multi-brand architecture, token systems, and stakeholder management across complex enterprise requirements.


Check the live implementions:

Cyprus Airways | SATA Azores Airlines

Create a free website with Framer, the website builder loved by startups, designers and agencies.