Genesys design tokens library
My Role
Co-creation of a design token system in JSON that synced typography, colors, spacing, and other visual styles across Figma, web, and code. Led the token structure definition, guiding set up automation with Style Dictionary, created comprehensive documentation, and established a smooth workflow for designers and developers to collaborate efficiently.Overview
Once the design system was launched, one thing became immediately clear: our designs looked great in Figma, but translating them into code was messy. Colors, typography, and spacing were implemented differently across platforms, which slowed development and caused frequent mismatches.
To solve this, I decided to build a design token library with the invaluable help of a highly enthusiastic frontend developer. Using a structured JSON as the foundation, the idea was simple: define all visual styles once and let automation handle the rest. With Style Dictionary, we generated CSS, SASS, JS, and even Figma variables directly from a single source, ensuring our brand looked consistent everywhere.
The Challenge
Before the tokens library, any design outside the UI components library (which was already integrated with tokens) required developers to manually copy values and translate them into code. Naturally, this introduced small inconsistencies along the way. It was time-consuming, error-prone, and frustrating for everyone involved.
I realized we needed a single source of truth, not just a document, but a living system where any change would ripple across every platform automatically. The challenge was balancing flexibility for designers with reliability for developers, creating a system that worked seamlessly across design tools and codebases.
Process & Collaboration
We built a living documentation site in Storybook, where every design token was neatly organized, previewed, and explained. It included an advanced searchable table allowing developers to filter by format, tier, category, or scheme, and whenever possible, each token previewed its actual appearance.
Development Approach
The first step was defining the structure of our tokens in JSON. I grouped them into categories like color, typography, spacing, and elevation, thinking about both global and component-level scopes. The goal was clarity: anyone on the team should understand and use the tokens without confusion.
Semantics and naming conventions were crucial for usability. We defined three token tiers: global, alias, and component:
- Global: the raw value without semantic meaning:
global-color-palette-ui-error-03. - Alias: global values reused with semantic naming, not tied to a specific component:
alias-color-background-feedback-error-strong. - Component: alias values reused and renamed for a specific component context:
cmp-button-color-background-error-disabled.
Then came automation. Using Style Dictionary, we transformed the JSON source into multiple formats: CSS custom properties, SASS variables, JS constants, and Figma variables. Updates became effortless: changing a single value automatically propagated across platforms, saving time for both designers and developers.
The project was split into two separate libraries:
- theme-generator: the core JSON definitions and scripts for creating a CLI used to generate themes.
- theme-devo: the generated theme implementation for Devo.
Impact & Outcomes
Single source of truth
The impact was immediate: design and development finally spoke the same language. A single change in the token file updated web styles, React components, and Figma variables simultaneously.Cohesion
Beyond efficiency, the library created a stronger sense of cohesion across products. The interface now feels unified.Scalability
Scaling the design systembecame easier than ever as new features and platforms were added.Learnings & Next Steps
Working on this project showed me how powerful it is to treat design as data. By structuring our styles as tokens, we bridged the gap between creative decisions and technical implementation, saving time and reducing errors. I also learned that clear naming and documentation are essential, because a system is only as good as it is understandable.
Next, we're developing an interface where designers can simply input a few values (brand colors, typography, and spacing scales) and automatically generate a new theme. This will make customization faster, more consistent, and scalable, especially for client-specific adaptations.