top of page

TSA Design System

Structuring a scalable design system foundation | 2024

MY CONTRIBUTION

As part of the Design System team, I helped shape a scalable cross-platform component library for app and web, in close collaboration with the Design Ops Lead and alongside the broader product design effort.

My contribution included component architecture, mapping and exploration, library structure, documentation, design-development collaboration, client discussions, and supporting designers using the system across product flows, helping keep the system consistent, scalable, accessible, and aligned with real product needs.

SCOPE

Foundations & design tokens, Cross-platform component library, Component architecture & research, Light & dark theming, Accessibility (WCAG), Design documentation, Design–development alignment

SKILS

Design systems, Component architecture, Design tokens, Component auditing, Component anatomy, Variants & states, Figma libraries, Design governance, Design documentation, Design–development collaboration

BACKGROUND

Within a broader telecom self-service product, our goal was to establish a scalable design system architecture that could support the product’s long-term evolution across web and mobile. Rather than starting from scratch, we transformed existing product patterns, brand assets, and technical constraints into a cohesive, reusable system.

The client already had brand guidelines, visual assets, existing UI components, and recurring interaction patterns. We audited and mapped these assets against product flows, user needs, research insights, and engineering constraints to identify reusable foundations, define component architecture, and establish a scalable design system tailored to the product’s real implementation context.

The outcome was a scalable, developer-validated design system with documented foundations, reusable components, accessibility guidelines, and implementation standards. The system established shared design principles and governance that enabled consistent decision-making, predictable component behavior, and seamless collaboration between design and development across web and mobile products.

THE CHALLENGE

The design system had to resolve several layers of complexity at once: product-specific flows, brand expression, component behavior, accessibility requirements, theme modes, and implementation constraints.

Without clear system rules, similar UI elements could easily be interpreted differently by designers and developers, leading to inconsistency, rework, and gaps between design and implementation.
At the same time, the system needed to support both web and mobile experiences while remaining flexible enough to evolve with future product needs.

Finding the right level of abstraction where components were reusable without becoming overly generic, became one of the project’s central challenges.
This meant making clear decisions around:
  • Which patterns should become shared design system components, and which should remain product-specific.

  • How foundations, accessibility, and theming should work consistently across web and mobile.

  • How component anatomy, variants, states, and properties should be structured for consistency and scalability.

  • How documentation, naming conventions, and implementation guidelines keep design and development aligned.

THE PROCESS

From foundations to a scalable library

The process was structured to turn existing system foundations into a practical source of truth for ongoing product design work. We moved through discovery and mapping, foundation architecture, component research, library structuring, and ongoing documentation - creating a Figma library that designers could rely on while staying aligned with development.

Discovery & audit

Foundation architecture

Component research

Component library

Documentation layer

1 / 5

Discovery & audit

We started by auditing the client’s existing product journeys, brand guidelines, visual assets, UI components, and recurring patterns across web and mobile. The goal was to understand how the product was evolving, identify reusable patterns, and establish informed design system decisions.

Group 337 (2).png

​This stage helped us identify:
 

  • Existing components that could be refined or formalized

  • Patterns that appeared in product screens but were not part of the shared library

  • Duplicated or overlapping UI solutions

  • Local design decisions that needed clearer system logic

  • Gaps between design files, product screens, and implementation expectations

2 / 5

Foundation architecture

This stage translated the mapped brand and product language into system foundations including color roles, typography, spacing, radius, effects, grids, and theme behavior that could support real interface work.

The goal was to keep the system consistent, adaptable, and aligned with the brand as the product continued to evolve.

Group 338.png
Group 339.png

​To make sure these foundations worked beyond isolated definitions, we tested and refined them across the following contexts,

reviewing the explorations with the client-side team to keep them aligned with the brand while remaining practical for product design and implementation:​

  • Light and dark mode scenarios

  • Accessibility needs such as contrast and state visibility

  • Component states and interaction feedback

  • Real product screens and usage contexts

The result was a structured foundation library in Figma, where the system’s core building blocks were defined through variables, styles, semantic roles, and theme behavior - creating a clear hierarchy that flows from foundations into components, visual assets, and final product screens.

3 / 5

Component research & exploration

After the foundations were in place, we focused on components that needed deeper exploration before entering the library.

components research (5).png

For these components, we conducted focused research and visual benchmarking across other design systems and product experiences, then explored different ways each component could work within the product’s visual language and interface context.

 

The goal was to understand how each component should express the brand, behave functionally, support variants and states, and sit alongside other components in real layouts. This helped us validate component decisions while keeping the library grounded in the actual product context.

4 / 5

Component library

At this stage, the design system moved from foundation work into a structured component library. Decisions around color, spacing, typography, theme modes, and behavior were carried into the components themselves, so each component reflected the system’s visual and functional logic.

Frame 1 (3).png

As the components took shape, we had to define the right balance between flexibility and fixed structure. Slot-based structures helped keep the component layout consistent, while allowing defined content areas to adapt to different product scenarios. Alongside the component structure, the library was organized into clear component categories, making it easier to find the relevant component and use it consistently across app and web screens.

The result was a library that served as a single source of truth for component usage and product design decisions,

helping designers apply components consistently while giving development a clearer reference for supported behavior, structure, and implementation expectations.

5 / 5

Documentation layer

Documentation was treated as an ongoing layer of the design system, not as a final handoff step.

After the research, exploration, and component decisions, documentation became the place where each component’s usage boundaries were made explicit - when to use it, how it behaves, which variants it supports, and what should remain consistent across different product scenarios.

Group 350.png

For each component, the documentation captured:

  • Usage guidance and boundaries

  • Structure, variations, and behavior

  • Properties and configurable options

  • Accessibility guidance

  • Related components, comparisons, and references

By making these decisions clear, the documentation helped designers use components in a more consistent way,

reducing local interpretation and supporting a more coherent experience for users across app and web.

It also gave development a clearer reference for expected behavior, supported states, and implementation expectations.

COMPONENT DEEP DIVE

Wizard / Progress Indicator

The Wizard / Progress Indicator was used in a key checkout flow, where users move through several order steps before completing the purchase. In this context, the component had to do more than show progress.
It needed to help users understand where they are, what they have already completed, and what still remains, without taking too much attention away from the page content.

The main challenge was making the component scalable within a multi-step checkout flow and across breakpoints. While the desktop version could show the full process as a horizontal stepper, with step names, connectors, and clear state differences, the mobile version needed a more compact structure that still made the user’s progress clear within limited screen width.
To support the decision, we reviewed visual and functional references from product interfaces
and other design systems
Frame 2018778223 (1).png
Rather than evaluating the references only by their visual direction, we tested how well each option could hold up inside real checkout screens, with different resolutions, varying numbers of steps, and content below the component.

We evaluated the options based on:

Visual state distinction

image 12.png

Page layout impact

image 13.png

Current step visibility

image 11.png

Step count scalability

image 14.png

Typography hierarchy

image 16.png

Responsive behavior

image 15.png
The more expressive options were visually interesting, but became less effective when tested against these constraints. Some options created too much height, some made scanning harder, and some risked looking like tabs rather than a progress indicator.
Exploration snapshot
wiz explorartion.png
Following the reference review, we explored multiple Wizard directions across desktop and mobile, testing different ways to express progress, current-step visibility, state distinction, and step density. This helped us compare not only how each direction looked, but how well it could adapt to real product scenarios, different step counts, and changing screen sizes.
Final direction: consistent logic, adaptive layout
The final direction prioritized clarity, scalability, and a consistent process model over visual complexity. The Wizard was designed to help users understand the flow as a clear sequence - what they completed, where they are now, and what remains, while defining consistent states for completed, current, upcoming, and disabled steps.
On desktop, the full step sequence is visible as a horizontal stepper. On mobile, the same process model is preserved through a compact structure that highlights the current step, step count, and access to progress details. This allowed the component to scale across breakpoints and checkout scenarios without forcing one layout into every context.

OUTCOME

A structured system for consistent product experiences

The work resulted in a structured design system for app and web, built on top of existing client assets, product screens, and system materials. It connected foundations, components, documentation, and implementation expectations into a clearer source of truth for product design work.
The system helped support:

Consistent app and web component usage

Connected libraries shaped by brand and system logic

Clearer design-development alignment around component behavior

A scalable base for future product flows

REFLECTION

Making an existing system usable

This project made me look at design system work less as creating a library, and more as organizing an existing product ecosystem. We were working between the client, product design, and development, with brand assets, screens, components, and files that already existed, but were not always aligned.

The work was about turning those materials into clear building blocks for app and web: clarifying what already exists, what should become part of the library, how components should be named, structured, documented, and handed over, and how they could support future product flows.

One of the main takeaways was that a design system can fail in two opposite ways: becoming a “wild west”, where every screen becomes a local decision, or becoming too strict, where designers have to break components to make real scenarios work.
The value was in finding a middle ground - clear enough to support consistency, but practical enough to keep evolving with the product.

© 2026 Uria Graiver. All rights reserved.

bottom of page