Home

Scaling ToolTime's design system

Design tokens and scalable theming overview

Context

ToolTime’s design system was built on a static color palette and inconsistent naming across design and code. This made it hard to roll out product-wide visual updates, especially branding changes.

When a white-label partner needed a fully rebranded UI, it exposed the core issue: our system wasn’t built for theming.


My role

Product designer

Time frame

Jun – Dec 2023

Team

  • 1 Product manager
  • 2 Engineers
  • 1 Product designer (me)

Key results

6-figure annual recurring revenue

through a successful white-label launch

Single source of truth

across Figma, web and mobile app

Reduced designer-engineer friction

thanks to a shared, semantic token system

More control over WCAG compliance

component-level tokens let us enforce contrast per context, not just per color

Opportunity

The white-label requirement revealed a critical gap: our design system couldn’t support theming at scale.

I used this as a chance to move to semantic tokens that aligned design and code. This would let us support white-labeling now while building a foundation for future partners and features as well as improving our visual consistency.

Re-architecting the color system

One of the biggest challenges was rethinking how colors were applied. The old system used static palette references: components pointed directly at values like blue-300. That worked for one brand but couldn't scale to two.

I introduced a three-layer token architecture: raw values, palette aliases, and component-level tokens.

Tokenized color system mapping raw colors to semantic tokens
Tokens in action for ToolTime

Why we went with component tokens

Just using global tokens broke for us at the error state. One brand turns the input border red to signal the error. The other keeps the border neutral and uses a light red background on the error text area instead. Same meaning, a different visual strategy: a single color.feedback.error token can't express both.

That's why component tokens like color.background.error-text.enabled and color.foreground.error-text.enabled exist. They let each brand implement the same state differently, without overrides.

Defining tokens at the component level also means contrast is enforceable in context, not just across the palette.

Designers push tokens, engineers pull packages

To close the gap between design and development, I proposed using Figma Tokens (now Tokens Studio) because it integrates with GitHub.

After testing the workflow with an engineer, we confirmed:

  • Tokens sync safely to GitHub
  • Web and React Native app each consume their own npm package
  • Each platform has a dedicated Figma library
  • Designers own the full workflow

Figma launched Variables while we were mid-rollout. We looked at switching, but the GitHub sync and npm pipeline were already working.

Designer-engineer workflow for pushing and pulling tokens

Built tooling so the team would actually use it

Rolling out a new system is only half the job. Adoption is the other half. I built tooling and wrote documentation to make sure the system actually got used.

Figma plugin for theming screens with tokens

Built a Figma plugin

To bridge the gap while tokens were still being implemented. Designers could work with the new system before it was live.

Documentation in Notion on how to use tokens

Wrote documentation

To help designers and engineers understand how to use tokens.

Hands-on with frontend, not just handoff

I worked directly in the codebase with engineers, helping apply tokens to components. With ~300 commits, I'm the top contributor to the design system repository. Bridging design decisions and code was the fastest way to keep the system consistent. It also showed me exactly where the system needed refining in ways Figma alone never would.

Example of tokens applied to components in the codebase

Reflection

I used to think naming tokens would be the hardest part. Turns out, the real challenge was making the system easy enough that everyone actually wanted to use it.

This project taught me that successful design systems aren’t just about structure: they’re about adoption. The best solution wasn’t the most technical one, but the one both designers and engineers could understand, trust and maintain together.

It pushed me to think beyond Figma files and into workflows, habits and team dynamics. That's what made it work.