Understanding the parts of a Design System: tokens, assets, components and patterns

Carlos Yllobre
Prototypr
Published in
6 min readJan 21, 2020

--

Understanding the parts of a Design System: Tokens, Assets, Components and Patterns

Essentially what makes a Design -or any- System is the sum of its parts and the connection between these working towards a defined purpose. This concept is clear but not completed. When it comes to understanding the System as an entity, we need to dig deeper and get to know those pieces and their interactions.
In previous articles, I have talked about applying Systems Thinking and following a useful methodology to build a system. This time, I would like to talk about the Design System itself and its parts.

Tokens

Tokens

Everything starts here. Tokens are the beginning of everything -as fundamental as it sounds- since everything in a Design System is made of tokens. That’s why any small change you apply to one of these could trigger a ripple effect in every area of the system and the product.

The concept of ‘Design Tokens’ was created by the Design System advocate, Jina Anne to refer to those entities that store visual design attributes. Since then, the name has spread across the industry to become the most common way to identify these pieces. But what exactly are tokens?

As defined by the Workday’s Design System team:

Tokens are the smallest pieces of our Design System. Their primary function is to store UI information that allows for building assets, components and patterns at a sustainable scale while securing consistency across our platforms.

Based on this definition, 2 key metrics help us understand and define tokens:

  1. A token is an immutable element that requires a well-defined and justified adoption and/or modification process.
  2. A token is a raw material or tool we use to build more complex elements like assets, components and patterns.

Some examples of Tokens are a color palette, typography, space rules or non-visual elements like motion guidelines.

Assets

Assets

Some designers and developers like to treat assets as more complex tokens, and they are not necessarily wrong since these could be managed in the same way based on their characteristics. However, I prefer to separate assets into their own category for two reasons; 1. to avoid confusion between the two since they might be used similarly but come with different building and intake processes and 2. to keep the concept of tokens as clean and close to its true nature as possible.

The Assets are more complex UI units used in the same way as components but built with a fixed function or purpose. They depend on tokens in the same way as components, but they are built differently.

Some examples of assets could be your icons library, brand assets or illustrations packages.

Components

The components are groups or blocks of tokens and/or other components built together with a specific functional behaviour that also serve a variety of applications.

Components

These are the building blocks and the most recognizable parts of a Design System, used by many product teams and therefore subject to more updates and modifications than other elements.

I highly recommend to organize the components of your Design System by doing 2 things:

1. Information Architecture:

In my previous article about Design System maps, I talked about the importance of counting with a taxonomy map to organize and understand better our systems. The components, like any other part of the design system, are not exempt from this. By creating ‘umbrella’ categories we make sure we cover different sets of components with similar main functionalities separating them from other sets and identifying at the same time, types of components and their variations.

Eg. Use Simple architecture to organize components:

Category: The descriptive high-level bucket.
__ Type of Component: Needed for additional categorization.
____Variation: Prescribed alteration of the component.

2. Defining levels of complexity

It is important to notice that not all the components are the same. They present different characteristics and different levels of complexity. Because of this, we need to be able to define our components and organize them based on their nature and structure.

The levels of complexity we need to define will depend on the size and the type of Design System, but for most of the systems out there I would recommend counting with three levels of complexity to define their components.

Level 1: Standalone components made with tokens only.
Level 2: Components built grouping Level 1 components together with tokens and simple interactions.
Level 3: Components built using other components in addition to logic and interaction metrics. Due to its complexity, some of these are covered under Patterns.

Patterns

Patterns

Patterns are a tricky one to define, and this is due to their complexity and how they are created. Patterns are more related to solutions than to isolated elements in a system, this means that even though they could be created and curated by the Design System team, the norm should be that Patterns are created and fed back into the system by those solving the problems in your organization; the product teams.

Patterns consist of a reusable collection of components that can be defined by their respective interactions when solving a design problem. These need to be adopted and documented as business cases and together build a consistent and robust ecosystem.

Based on this definition we can provide 3 key metrics that help us identify and validate what a pattern is:

1. A pattern is a solution to a common design problem, always linked to a business case.

2. A pattern needs to be reusable and linked to components.
This is not always the case, but it is where the main value is for product teams.

3. A pattern must document and provide guidelines about how the problem was solved by the product team.

Pattern vs complex component

It is common to have certain confusion when talking about complex components and patterns, that’s why I want to shed some light here. Patterns and Components are intrinsically related but they are required to be documented in different ways, simply because they are created and used differently.

A pattern provides us with a specific context about a solution, how that solution was tailored and what set of components and tokens were used to get to that result.

A complex component responds only to its primary function or purpose as a component. It provides documentation about its logic and interaction metrics without any other context than self-definition. Because of this, It can be used in multiple cases and scenarios by giving the product teams the flexibility they need to solve new problems.

Summing up

Every Design System is different since it is built based on the needs of its primary users; the development/design team and the type of product is serving, but there are always things in common worth understanding and defining. This article is not meant to become a reference when it comes to classifying the different pieces covered here, the intention is to make my contribution and help shed some light for a better understanding of systems and their parts.

Thank you for reading! 😊

--

--

Product Design Leader, systems thinker, illustrator, ukulele player, surfer, photographer, avid reader and occasional writer. 🇨🇺🇪🇸🇪🇺 www.carlyllo.com