@pluralsight/design-tokens
TypeScript icon, indicating that this package has built-in type declarations

0.7.1 • Public • Published

Design Tokens

The foundation package to the Pando ecosystem which creates design tokens for all platforms using style dictionary.

What role does this package play in Pando?

erDiagram
  PANDO ||--o{ DESIGN-TOKENS : contains
  PANDO ||--o{ ICONS : contains
  PANDO ||--o{ HEADLESS-STYLES : contains
  PANDO ||--o{ REACT-UTILS : contains
  DESIGN-TOKENS ||..|{ NORMALIZE-SETUP : contains
  NORMALIZE-SETUP ||..|{ THEMES : contains
  HEADLESS-STYLES ||--|{ DESIGN-TOKENS : uses

Despite this being one of the simplist packages (SCSS & YAML), it plays a foundational role in the entire Pando ecosystem.

Design Tokens General Function

The design-tokens package owns all the themes available from Pando via the tokens/base directory. This folder ultimately runs through our custom Style Dictionary config for both web and mobile to produce our themes and Web Meta.

Normalize Setup within Design Tokens

Additionally, the design-tokens package owns the Fonts & Normalize Setup. This process is separate from tokens and uses SASS to pre-process the entry file.

Themes within Normalize

We also generate our Themes from the Normalize pre-processing which allows us to combine the power of both SASS and Style Dictionary. This allows us to both establish and set a default theme as a fallback via CSS so there is no need for unnecessary Javascript/Typescript logic to do the same.

Quick Start

To get the project up an running, all you need to do is make sure your deps are installed for this workspace.

In the project root (not this workspace), run

pnpm install

This will setup all workspaces in this repo in addition to install all the deps needed to successfully use this workspace.

There is no dev environment

With style-dictionary, you are just creating static Yaml files, so there is no dev server or anything to run while adding tokens. However, we highly recommend you make sure all extensions that are recommended are installed in order to prevent triggering errors in our CI process.

Project Structure

There are two types of tokens to create: private or public.

Base Tokens

These our all of the projects private tokens and single source of truth for each custom theme value (i.e. light, dark, flow-dark, etc.). Everything inside here will get filtered out during the build process. Private tokens are only meant to be used as reference items for public tokens.

Creating public tokens

Public tokens are the semantic tokens we ship to each team/product within Pluralsight. Therefore, it should rarely be updated or added to unless there is a new branding color/theme change.

This is to help keep all of our teams apps as performant as possible since the quantity and usage of tokens can make a negative impact in browsers.

Updating custom themes

If a theme needs to be updated (i.e. light, dark, flow-dark, etc.), all you need to do is edit the value in the tokens/base/<file>.yaml location. However, due to the custom tooling we are using, there are a few rules to consider:

  • DO NOT EDIT ANYTHING IN THE PUBLIC DIRECTORY. These values source all the base tokens and should never be altered.
  • DO NOT CHANGE PROJECT STRUCTURE OR FILE NAMES. We use a strict and complex filtering systems that depends on both of these to be consistent.

Our base directory uses a file system that matches the PS Brand Theme color guide to help keep all of our themes consistent. For all themes, the "accent" correlates to the "default" semantic tokens.

Testing your updates

To test your updates, run the build command for this workspace in the project root (not this workspace).

pnpm --filter @pluralsight/design-tokens build

You should see something like this output:

Copying files...

Source style dictionary files created!

Running `style-dictionary build` to generate build artifacts.

js
✔︎ build/index.js

css
✔︎ build/css/variables.css

scss
✔︎ build/scss/_variables.scss

android
✔︎ build/android/font_dimens.xml
✔︎ build/android/colors.xml

ios
✔︎ build/ios/StyleDictionaryColor.h
✔︎ build/ios/StyleDictionaryColor.m
No properties for StyleDictionarySize.h. File not created.
No properties for StyleDictionarySize.m. File not created.

ios-swift
✔︎ build/ios-swift/StyleDictionary.swift

ios-swift-separate-enums
✔︎ build/ios-swift/StyleDictionaryColor.swift
No properties for StyleDictionarySize.swift. File not created.

Depending on which platform you are testing, just reference the build file created.

Contribution

If you plan on contributing to this project, please take time to read our CONTRIBUTING.md. Pull requests that do not adhere to the requirements in this doc will automatically be flagged and closed.

Package Sidebar

Install

npm i @pluralsight/design-tokens

Weekly Downloads

362

Version

0.7.1

License

Apache 2.0

Unpacked Size

76.3 kB

Total Files

20

Last publish

Collaborators

  • pluralsight