Design Tokens
This project turns design tokens into usable formats for our frontends. By using design tokens, we can maintain consistency across all platforms, tools, and products. Currently, we only provide colors for our different themes through design tokens.
How it works
Design Tokens get exported from Figma using the Design Tokens plugin which sends the data through Githubs repository_dispatch event. A Github action listens to that event and saves the data as JSON and lets Style Dictionary transforms the tokens into the desired formats. The GitHub action then continues to create a PR with all the changes.
Getting started
For local development, follow these steps:
- Run
npm i
to install dependencies. - Run
npm run transform-tokens
to transform tokens using Style Dictionary. - The converted tokens will be saved in the
src/generated
directory.
If you only want to use the themes provided by this project then simply import them into your codebase like this:
- Run
npm install -D @nordnet/design-tokens
to install the package. - Import for example the lightTheme
import { lightTheme } from '@nordnet/design-tokens'
.
Formats
This project generates design tokens for each theme in the following formats:
- JS: A JavaScript module that exports an object containing the design tokens.
- JSON: A JSON file containing the design tokens.
- CSS: A CSS file containing CSS variables for the design tokens.
Limitations
GitHub Actions has a payload limit of 50kB, which prevents exporting all design tokens at once. To circumvent this limitation, we export tokens in chunks by creating a new branch for each chunk. When these new branches are merged, tests run in the master branch to verify that all themes have the same token names. Only then do we release a new version.