A token-based design system serving two global retail brands from a single shared component library, built in three months including full Arabic localisation for the GCC market.
We were tasked with delivering web and app experiences for Gap and Athleta in the GCC within three months, including Arabic RTL designs. Each brand had its own global design guidelines, but the majority of components and flows were functionally identical across both.
The challenge was structural: how do you build for two distinct brands without duplicating work, creating inconsistency, or sacrificing fidelity to each brand's identity? Without a system, the team would have been building the same things twice, introducing drift between implementations, and creating a QA nightmare across brands and languages.
Before building anything, we conducted a thorough UI and UX audit of all existing brand apps and platforms. The key finding was both obvious and actionable: most UI components were structurally identical across brands. They just needed different styling variables.
The system was built on a three-layer token architecture: primitive base values defined first, then brand-specific semantic tokens built on top, then components that reference only the semantic layer, never the primitives directly.
This meant switching a component from Gap to Athleta was a single mode change, not a redesign.
Three-layer token architecture: raw token to primitive to semantic, enabling brand switching via mode
Typography token mapping across all four brand and language combinations
The most visible expression of brand difference was the button. Gap uses a sharp rectangular shape with no border radius. Athleta uses a fully rounded pill. The same component needed to output both correctly based on a single mode switch, with no manual overrides required by designers or developers.
One component, two modes: Gap EN and Athleta EN produce entirely different button shapes from the same base
Gap colour tokens
Athleta colour tokens
The same checkout component structure rendered in Gap and Athleta modes
Brand switching in action: applying design system modes across checkout flows
A design system that is not used is just overhead. We invested heavily in documentation that made the system genuinely useful for developers and PMs, not just designers:
The result: developers noted clearer information in handoff, PMs praised the documentation for reducing back-and-forth, and QA errors, particularly around spacing and styling, dropped significantly.
The biggest thing I would add in phase 2 is page-level master components. Right now the system handles atomic components well, but each designer still owns all pages for one brand. A better model would be one designer per page type who designs the universal template then applies brand modes, becoming the team's expert on that touchpoint rather than spreading thin across an entire brand.
I would also extend breakpoints to tablet and investigate dynamic layout adjustments for Arabic versus English. Right now RTL is handled correctly, but the layout opportunities specific to RTL reading patterns have not been fully explored.