Work Two brands, one component library.
Colors / Action / BG / BG-Strong-*
Active
OnPress
OnHover
Disable
ttbBusiness ONE & TabletToken architecture

Two brands, one component library.

By late 2023 our v2 tokens were too specific and the library kept growing. I led v3: tokens named by intent, with each product as a Figma variable mode.

My role
Design system lead, v3
Part of
ttb design system v3, late 2023 – Dec 2024
Team
2 designers, 3 frontend engineers, a product lead
Products
Business ONE and the tablet platform
Tools
Figma variables, modes and scopes

Impact

26color families, up to 20 steps each
13 × 4semantic groups × categories
52token namespaces

Why v3

v3 gave us one token set that switches the brand's primary color.

It runs Business ONE and the tablet sales app. ttb Touch stays on v2. Read the v2 story.

Values shown are representative; production values are confidential.

Two tiers

Tier 1General color: the fixed palette

Raw values from ttb's brand guidelines, extended in 10% shade and tint steps. 26 families, never changed, only referenced.

Tier 2Alias color: switched by mode

Semantic tokens that reference general colors, organised by intent. Every product uses the same names; only the value per mode differs.

A five-part name

#PartValues
01Group (required)Action, CTA, DataEntry, Navigation…
02Category (required)BG, Border, Icon, Text
03Priority (optional)Primary, Secondary, Tertiary, Quaternary
04Emphasis (optional)Strong (default), Soft
05State (depends)OnPress, OnHover, Disable
Example: Colors / Action / BG / BG-Strong-OnPress

13 groups × 4 categories = 52 namespaces

AccentActionCTADataDisplayDataEntryDataVisualizationErrorInformationNavigationNeutralNotificationSuccessWarning

Each group has BG, Border, Icon and Text namespaces. Brand differences live in the Action and CTA groups, where ONE-APP resolves to orange and B1 to blue; both share the same blue for Accent.

Scopes keep tokens in the right place

SHAPE_FILL

Shape and rectangle backgrounds: all BG fills

FRAME_FILL

Container and page-level surfaces

TEXT_FILL

Text only, so text colors never show up in shape panels

STROKE_COLOR

Border tokens only

The question behind every decision

If five more products join tomorrow, with their own colors, modes and platforms, will this hold without renaming a token?The test I used

With two tiers the answer is yes: general colors stay fixed, alias names stay fixed, and only the values per mode change.

What I learned

Token architecture must be designed for products that don't exist yet.From my notes on the project

Intent-based tokens scale to any number of products. Component-based tokens create debt. If a component exists twice, the token model is wrong.

At Thai Life I took the same idea to theme, light and dark, type and radius, in three months. Read the Thai Life case.

Next caseNine squads, one way to build a screen.