FIGMA DESIGN SYSTEM
Lattice Design System
A scalable, token-driven design system spanning colour, type, and components, built to demonstrate advanced Figma in practice.
Role
Design system designer
Timeline
3 weeks
Focus
Variables, tokens, component architecture
Tools
Figma, Claude
250+
Variables
4
Variable collections
7
Colour scales
20+
Components
Challenge
As the product grows, inconsistent styling becomes difficult to maintain; values get hard-coded and updating themes turns into a time-consuming manual process.
What I did
Built a token-driven system in Figma, including colour foundations, a typography scale, and a reusable component library organized through a three-tier architecture.
Outcome
A consistent, mode-ready system where one change ripples through the whole library.

A design system isn’t a one-off screen. It’s a product that serves other products, so it has to be built to change without breaking.

01
I wanted to build a design system the way a product team would: not as a page of polished swatches, but as a system designed to scale and adapt over time. That meant moving beyond colour styles and working with Figma variables, aliasing, modes, and reusable components.
With one-off styling, the same raw value can appear across dozens of layers, making a rebrand or new theme a manual search. In Lattice, foundational values are separated from semantic roles, so components depend on what a value means rather than the colour or number it happens to hold today.
02
Lattice uses atomic design as an organizational model for moving from foundations and individual controls to complete pages. It allowed me to evaluate components both in isolation and in the context of larger interface patterns.
The token layer forms part of the atomic foundation. Components and larger patterns draw from the same semantic variables, making consistency part of the system rather than something recreated at every level.
Lvl 1
Atoms
Base styles and individual controls such as colour, type, buttons, and inputs.
Lvl 2
Molecules
Small groups of elements that perform one function, such as a search field.
Lvl 3
Organisms
Distinct interface sections such as navigation, forms, card groups, and grids.
Lvl 4
Templates
Components arranged into a structural layout before real content is introduced.
Lvl 5
Pages
Real content in place, where the system is evaluated in context.
03
Beneath the component library sits a three-tier token architecture built with Figma variable collections rather than disconnected styles. Brand foundations feed aliases, and aliases feed semantic roles. Components then consume the semantic variables as the applied layer of the system.
Tier 1 · Collection
Brand foundations
Raw values such as color/cobalt/500, font families, font weights, and the base spacing scale. These act as the source values for the system rather than being applied directly to components.
Tier 2 · Collection
Aliases
Stable references that bridge brand foundations and semantic roles. This layer allows foundational values to change without renaming the roles used throughout the interface.
Tier 3 · Collection
Semantic tokens
Values named by interface purpose, such as action/primary, text/secondary, surface/default, and feedback/error. This is where intent is separated from appearance.
Layers and components use semantic variables rather than raw foundation values, reducing hard-coded styling and keeping shared changes connected across the library.
04
Seven colour scales were developed in OKLCH to create a more consistent progression in perceived lightness across different hues.

The scales provide the foundational colour values for the system. Components do not select these values directly; they use semantic roles mapped to the foundations through aliases.
Cobalt
#040054
#0C148A
#182FBA
#2C50E0
#5C84F7
#8FAEFA
#C1D2F9
#E6EDFD
Teal
#001C20
#00464E
#007480
#0EA5B5
#63BFCB
#9BD2DA
#C8E3E7
#E7F2F3
Rose
#34000F
#7B0031
#BB3159
#F76588
#FF91A6
#FFB5C1
#FDD4DA
#FCEBED
Neutral
#121627
#282F48
#414A69
#5D6789
#868FAC
#ACB2C5
#D0D3DD
#ECEDF1
Green
#001E06
#00471A
#007430
#16A34A
#63BF77
#9AD2A3
#C8E4CB
#E8F2E9
Amber
#281000
#5E3000
#9A5200
#D97706
#EB9B59
#F0BB93
#F3D8C4
#F8EDE5
Red
#350000
#6B0004
#A5000C
#DC2626
#F46A5F
#FA9E93
#FACAC3
#FDE9E6
05
The typography layer follows the same structured approach as the colour system: two font families, a defined weight scale, and named text styles ranging from heading/h1 to body/sm/link.
Heading
Poppins
Regular 400 · Medium 500 · Semibold 600 · Bold 700
Body
Inter
Regular 400 · Medium 500 · Semibold 600
heading / h1
The quick brown fox
Poppins Semibold
60 / 72
Hero and page titles
heading / h2
The quick brown fox
Poppins Semibold
48 / 58
Section titles
Show the four remaining heading styles Show fewer heading styles
heading / h3
The quick brown fox
Poppins Semibold
40 / 48
Subsection titles
heading / h4
The quick brown fox
Poppins Semibold
32 / 40
Card and panel titles
heading / h5
The quick brown fox
Poppins Semibold
24 / 30
Grouping labels
heading / h6
The quick brown fox
Poppins Semibold
20 / 26
Smallest heading tier
body / md / regular
The quick brown fox
Inter Regular
16 / 24
Default running text
Show the eight remaining body styles Show fewer body styles
body / lg / regular
The quick brown fox
Inter Regular
20 / 32
Lead paragraphs
body / lg / semibold
The quick brown fox
Inter Semibold
20 / 32
Emphasis in lead copy
body / lg / link
The quick brown fox
Inter Regular · Underlined
20 / 32
Links in lead copy
body / md / semibold
The quick brown fox
Inter Semibold
16 / 24
Inline emphasis
body / md / link
The quick brown fox
Inter Regular · Underlined
16 / 24
Links in running text
body / sm / regular
The quick brown fox
Inter Regular
12 / 20
Captions and helper text
body / sm / semibold
The quick brown fox
Inter Semibold
12 / 20
Field labels
body / sm / link
The quick brown fox
Inter Regular · Underlined
12 / 20
Links in fine print
Heading family
Poppins
Regular 400 · Medium 500 · Semibold 600 · Bold 700
Body
Inter
Regular 400 · Medium 500 · Semibold 600
06
More than a single button, Lattice includes buttons, icon buttons, text fields, selects, radio controls, switches, and checkboxes. Each component is built with auto layout, variants, and component properties, then styled through semantic variables.
Variants manage meaningful differences such as visual state or hierarchy, while component properties expose editable labels and optional icons without requiring designers to detach instances. Because the components reference shared semantic roles, system-level changes can flow through the library without manually restyling each component.
This is some text inside of a div block.
This is some text inside of a div block.
This is some text inside of a div block.
This is some text inside of a div block.
07
Change a token once, and it updates everywhere.
Tier 1 · Collection
Centralized updates
Changes to foundation or semantic variables flow through the components that reference them, reducing repetitive edits and inconsistent values.
Tier 2 · Collection
Clearer intent
Names such as action/primary and text/secondary describe purpose rather than appearance, making system decisions easier to understand and maintain.
Tier 3 · Collection
A foundation for growth
New components and future modes can build on the same token relationships and naming rules rather than introducing one-off values.
08
Building Lattice pushed me past surface-level Figma into the mechanics that make a design system maintainable: variable collections, aliasing, semantic naming, modes, and component structure.

The most challenging part was deciding where each decision should live, whether as a foundation value, an alias, a semantic role, or a component-level option. The biggest shift in my thinking was learning to name intent rather than appearance. Once a token describes action/primary instead of “blue,” its underlying value can change without changing how the component is understood.