{"id":89981,"date":"2023-10-23T20:42:51","date_gmt":"2023-10-23T17:42:51","guid":{"rendered":"https:\/\/www.orfium.com\/?p=89981"},"modified":"2023-10-25T16:09:05","modified_gmt":"2023-10-25T13:09:05","slug":"how-we-implemented-design-tokens","status":"publish","type":"post","link":"https:\/\/www.orfium.com\/design\/how-we-implemented-design-tokens\/","title":{"rendered":"How our team adopted Design Tokens (And how your team can do it too)"},"content":{"rendered":"\n<p><em>As of the writing of this article, the<\/em><a href=\"https:\/\/www.w3.org\/community\/design-tokens\/\"><em> W3C Design Tokens Standard<\/em><\/a><em> is still in development. Its goal is to establish a universal framework for using tokens that will be compatible with any tool or platform. This has the potential to be a game-changer and is worth keeping an eye on.<\/em><\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong>If you want to integrate design tokens into your design system<\/strong> but don\u2019t quite know where to begin, you&#8217;re not alone. Adding design tokens to an existing system calls for good organization and consistent use. This already challenging task is not made any easier by the lack of standard naming conventions.<\/p>\n\n\n\n<p>In this article, we&#8217;ll delve into how our team integrated design tokens into our design system, Ictinus. We&#8217;ll discuss the challenges we encountered, the solutions we came up with, and the impact design tokens had on our workflow. Finally, we&#8217;ll share insights gained from our experience.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What are design tokens?<\/strong><\/h2>\n\n\n\n<p><strong>A design token is a piece of data that encapsulates a single design decision.<\/strong><\/p>\n\n\n\n<p>The term \u2018design token\u2019 was first coined by<a href=\"https:\/\/www.jina.me\/\"> Jina Anne<\/a> at Salesforce in 2014. They can represent a wide range of properties and link (&#8216;alias&#8217;) to other tokens, making them scalable by nature.<\/p>\n\n\n\n<p>Sound familiar? It\u2019s similar to how programming variables work: you declare a specific value which is then propagated to many different instances. These values and relationships can be represented in JSON format.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"548\" src=\"https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensFigmaOrfium1-1024x548.png\" alt=\"\" class=\"wp-image-89984\" srcset=\"https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensFigmaOrfium1-1024x548.png 1024w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensFigmaOrfium1-300x161.png 300w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensFigmaOrfium1-768x411.png 768w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensFigmaOrfium1.png 1242w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><sup>Color tokens from<\/sup><a href=\"https:\/\/www.lightningdesignsystem.com\/design-tokens\/\"><sup> Lightning<\/sup><\/a><sup>, the Salesforce design system, encapsulate individual design decisions. In this example, each color token represents a single color code.<\/sup><\/figcaption><\/figure><\/div>\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What are the benefits of design tokens?<\/strong><\/h2>\n\n\n\n<p>In our preliminary research, we analyzed the approach of other Design Systems (e.g. Polaris, Carbon, etc.) and read up on token literature and best practices. Our early findings were enough to convince our team: tokens were worth the time, cost and effort of integration. Our biggest challenges at the time were gaps in communication and insufficient change tracking. Tokens promised to help with these issues as well as do the following:<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">1. <strong>Resolve gaps in communication<\/strong><\/h3>\n\n\n\n<p>Design decisions often got &#8216;lost in translation&#8217; due to inadequate documentation and time pressure. Discrepancies between design and implementation were not just common but <em>expected<\/em>. This translated to much more time and effort spent in QA \u2013 and still, mistakes could slip through.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. <strong>Fix issues with change tracking<\/strong><\/h3>\n\n\n\n<p>This gap in communication had a ripple effect. Changes in design documentation were not always reflected in current implementation. That made it hard to confirm whether a specific section of documentation was updated or not. When should we implement QA?<\/p>\n\n\n\n<p>As a result, we had to freeze our design system to a specific version (V4); a last resort solution that opened a whole new can of worms. Last but not least, our current workflow all but ensured that the team ran at different speeds.<\/p>\n\n\n\n<p>The more we learned about tokens, the more they seemed like a winning bet. They would help us resolve some of our biggest issues, become more efficient and enrich our design language.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3.<strong> <strong>Improve efficiency<\/strong><\/strong><\/h3>\n\n\n\n<p>Before Figma (our tool of choice) introduced variables, there was no way to natively link styles. Design tokens would allow us to mass-update multiple styles by editing a single aliased token. This would simplify maintenance and reduce cognitive load, allowing the team to focus on the bigger picture instead.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. <strong>Extensive customization support<\/strong><\/h3>\n\n\n\n<p>Design tokens can represent a wide range of properties beyond the usual color, typography, and layer effect styles. Tokens also support the following:<\/p>\n\n\n\n<ul>\n<li>Spacing<\/li>\n\n\n\n<li>Sizing<\/li>\n\n\n\n<li>Border radius<\/li>\n\n\n\n<li>Border width<\/li>\n\n\n\n<li>Animation styles<\/li>\n<\/ul>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The challenges of implementing design tokens<\/strong><\/h2>\n\n\n\n<p>It was not all sunshine and rainbows though. As mentioned before, a standardized framework for creating and using design tokens doesn&#8217;t exist just yet. In<a href=\"https:\/\/medium.com\/fast-design\/evolution-of-design-tokens-and-component-styling-part-1-f1491ad1120e\"> this article<\/a>, Brian Heston addresses the most common design token implementation concerns.<\/p>\n\n\n\n<p>Of special note is the mention that there is no common standard for naming and applying tokens. This lack of consistency poses challenges when combining components from different libraries. It also makes it hard to outline and follow a common set of best practices.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What token tiers are, and how we used them (aka layers, groups or sets\u2026)<\/strong><\/h2>\n\n\n\n<p>Before diving into token creation, we first needed to lay down the basics. What would we call different token levels, for example? And how many levels would we need?<\/p>\n\n\n\n<p>Tokens can be organized into different levels of abstraction. Common names for different levels include \u2018levels\u2019, \u2018types\u2019, \u2018tiers\u2019, \u2018layers\u2019, \u2018groups\u2019, and \u2018sets\u2019. These levels help organize tokens based on their purpose, scope, or usage. We ended up going with \u2018tiers\u2019, as it was both the most unique-sounding and descriptive.<\/p>\n\n\n\n<p>Naming settled, we shifted our focus to tier structure. How many tiers should we have? What should each tier contain? How would it relate to other tiers?<\/p>\n\n\n\n<p>In<a href=\"https:\/\/bradfrost.com\/blog\/post\/the-many-faces-of-themeable-design-systems\/\"> the many faces of themeable design systems<\/a>, Brad Frost suggests a three-tiered model that uses a vertical hierarchy.&nbsp;<\/p>\n\n\n\n<p>Tier-1, the lowest tier, contains tokens that encapsulate raw visual design materials.&nbsp;<\/p>\n\n\n\n<p>Tier-2 tokens are contextual, and link Tier-1 tokens to high-level usage.&nbsp;<\/p>\n\n\n\n<p>Finally, Tier-3 tokens are specific to components and link to Tier-2 tokens.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"508\" height=\"491\" src=\"https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium3.jpeg\" alt=\"\" class=\"wp-image-89986\" srcset=\"https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium3.jpeg 508w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium3-300x290.jpeg 300w\" sizes=\"(max-width: 508px) 100vw, 508px\" \/><\/figure><\/div>\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"596\" src=\"https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium4-1024x596.png\" alt=\"\" class=\"wp-image-89989\" srcset=\"https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium4-1024x596.png 1024w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium4-300x175.png 300w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium4-768x447.png 768w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium4.png 1242w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><sup>There are many alternative names for each tier. In this example from<\/sup><a href=\"https:\/\/m3.material.io\/foundations\/design-tokens\/how-to-read-tokens\"><sup> Material Design<\/sup><\/a><sup>, the names used are \u2018ref\u2019 for Tier-1, \u2018sys\u2019 for Tier-2, and \u2018comp\u2019 for Tier-3.<\/sup><\/figcaption><\/figure><\/div>\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>How we named our tiers<\/strong><\/h3>\n\n\n\n<p>We settled on the name \u2018global\u2019 for Tier-1. It would contain every single tokenized value in our design system. \u2018blue.3\u2019, a token containing a single color value with no context, is an example of a \u2018global\u2019 tier.<\/p>\n\n\n\n<p>Tier-2 would draw from \u2018global\u2019 to create contextual tokens. For example, \u2018blue.3\u2019, a global token, may link to the \u2018sem.textColor.active\u2019 semantic token to create a token describing text color for an \u2018active\u2019 state. We named this tier \u2018semantic\u2019 (\u2018sem\u2019 for short).<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><em>You can think of Tier-2, the \u2018semantic\u2019 layer, as one of your theme layers. If you want to be able to switch to dark mode down the line, all you need is identical \u2018semantic\u2019 layers that point to different aliases.<\/em><\/p>\n\n\n\n<div style=\"height:33px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Finally, Tier-3 became \u2018component\u2019 (abbreviated to \u2018comp\u2019). This final tier would link to Tier-2, drawing contextual tokens in component-specific combinations.&nbsp;<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"434\" src=\"https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium5-1024x434.png\" alt=\"\" class=\"wp-image-89991\" srcset=\"https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium5-1024x434.png 1024w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium5-300x127.png 300w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium5-768x326.png 768w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium5.png 1242w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><sup>Example of Ictinus color tokens from all three tiers and the vertical relationship between each tier.&nbsp;<\/sup><br><\/figcaption><\/figure><\/div>\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Token name conventions and semantic attributes<\/strong><\/h3>\n\n\n\n<p>With the tiers in place, it was finally time to think about token name structure. What should we include in a design token name, and in what order?&nbsp;<a href=\"https:\/\/www.youtube.com\/watch?v=ylDed18OVdY\">This well-known, oft-referenced talk by the Asana team on Schema 2021<\/a> served as a great starting point. The whole video is worth a watch, but of special interest is the hierarchical naming convention the Asana team uses to name design tokens.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"596\" src=\"https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium6-1024x596.png\" alt=\"\" class=\"wp-image-89993\" srcset=\"https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium6-1024x596.png 1024w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium6-300x175.png 300w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium6-768x447.png 768w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium6.png 1242w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Semantic attribute structure used to name Asana design tokens. Token names are composed of four different semantic attributes. They are \u2018sentiment\u2019, \u2018usage\u2019, \u2018prominence\u2019, and \u2018interaction\u2019.&nbsp;<\/figcaption><\/figure><\/div>\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Inspired by Asana and mindful of HTML\/CSS standards, we created our own set of naming rules as follows:<\/p>\n\n\n\n<ol>\n<li>A token name is composed of the following semantic attributes: <strong>tier.category.property.state<\/strong>\n<ol>\n<li><strong>Tier<\/strong>: Indicates the tier the token can be found in.\n<ol>\n<li>The \u2018Global&#8217; tier is omitted from the token name for the sake of simplicity.<\/li>\n\n\n\n<li>Tokens found in the \u2018semantic\u2019 tier start with \u2018sem.\u2019<\/li>\n\n\n\n<li>Tokens found in the \u2018component\u2019 layer begin with \u2018comp.\u2019<\/li>\n<\/ol>\n<\/li>\n\n\n\n<li><strong>Category<\/strong>: Chooses a general token category (e.g. \u2018spacing\u2019). When used in a \u2018comp\u2019 token, \u2018category\u2019 displays the component name.<\/li>\n\n\n\n<li><strong>Group<\/strong>: provides context on a given category (e.g. \u2018background\u2019 as a subcategory to \u2018color\u2019).<\/li>\n\n\n\n<li><strong>Property<\/strong>: Contextual value of token. May also be state or variant. May also reference alternative visual variants for non-interactive components.<\/li>\n<\/ol>\n<\/li>\n\n\n\n<li>Semantic attributes are separated by period (.)<\/li>\n\n\n\n<li>Token names that include more than one word are formatted in camelCase.<\/li>\n<\/ol>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"882\" height=\"253\" src=\"https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium7.png\" alt=\"\" class=\"wp-image-89995\" srcset=\"https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium7.png 882w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium7-300x86.png 300w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium7-768x220.png 768w\" sizes=\"(max-width: 882px) 100vw, 882px\" \/><figcaption class=\"wp-element-caption\"><sup>Example of an Ictinus token. In this case a token from the semantic tier.<\/sup><\/figcaption><\/figure><\/div>\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How we use Tokens Studio for Figma (our not so secret weapon)<\/strong><\/h2>\n\n\n\n<p>When we were implementing design tokens, Figma didn&#8217;t offer support for token creation as variables had not been released yet. Even now, variables do not support properties like border width (and, as of the writing of this article, cannot be exported in JSON without a plugin). This meant we would need to use a third-party tool. We chose Tokens Studio, a popular choice that we could easily integrate into our Figma workflow.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"831\" src=\"https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensFigma8-1024x831.png\" alt=\"\" class=\"wp-image-89997\" srcset=\"https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensFigma8-1024x831.png 1024w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensFigma8-300x243.png 300w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensFigma8-768x623.png 768w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensFigma8.png 1242w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em><sup>The Tokens Studio for Figma plugin<\/sup><\/em><\/figcaption><\/figure><\/div>\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Tokens Studio for Figma represents tokens in JSON as a list of objects. You can create and edit tokens either via the user interface provided by the plugin or by directly editing the JSON code.&nbsp;<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1016\" height=\"1024\" src=\"https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium9-1016x1024.png\" alt=\"\" class=\"wp-image-89999\" srcset=\"https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium9-1016x1024.png 1016w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium9-298x300.png 298w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium9-150x150.png 150w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium9-768x774.png 768w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium9.png 1242w\" sizes=\"(max-width: 1016px) 100vw, 1016px\" \/><figcaption class=\"wp-element-caption\"><em><sup>You can access the JSON mode by clicking on the \u2018curly brackets\u2019 icon.<\/sup><\/em><br><\/figcaption><\/figure><\/div>\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>The ability to store the generated tokens as JSON in GitHub branches was a game-changer for our team. It allowed development to review design work as it was being done. Upon approval, typescript code would be auto-generated from said JSON. Finally, small issues were addressed and corrected in a fraction of the usual time. This was a big step towards bridging the aforementioned communication gap.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Importing global tier tokens<\/strong><\/h3>\n\n\n\n<p>Tokens Studio allows you to import existing Figma styles and convert them into tokens; this saved us a <em>lot<\/em> of time. After we imported our preexisting color, typography, and layer effect styles into Tokens Studio, it was time for the good stuff. We created extra categories such as spacing, sizing, and border radius.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1021\" height=\"1024\" src=\"https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium10-1021x1024.png\" alt=\"\" class=\"wp-image-90001\" srcset=\"https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium10-1021x1024.png 1021w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium10-300x300.png 300w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium10-150x150.png 150w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium10-768x770.png 768w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium10.png 1242w\" sizes=\"(max-width: 1021px) 100vw, 1021px\" \/><figcaption class=\"wp-element-caption\"><em><sup>After importing styles and converting them to tokens, you can create tokens for the \u2018global\u2019 tier as needed. Here you can also see the \u2018sizing\u2019 and \u2018spacing\u2019 global tokens available in Ictinus.&nbsp;<\/sup><\/em><br><\/figcaption><\/figure><\/div>\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Semantic tier tokens<\/strong><\/h3>\n\n\n\n<p>It was then time to begin work on the \u2018semantic\u2019 tier tokens. These are tokens with contextual meaning that link to context-less \u2018global\u2019 tokens. Semantic style examples include text color, typography styles, icon sizes, and interaction palettes. These styles are then combined in many different ways to make the final tier, \u2018comp\u2019.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"596\" src=\"https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium11-1024x596.png\" alt=\"\" class=\"wp-image-90003\" srcset=\"https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium11-1024x596.png 1024w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium11-300x175.png 300w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium11-768x447.png 768w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium11.png 1242w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><sup>Semantic typography styles from<\/sup><a href=\"https:\/\/designlab-next.orfium.com\/?path=\/docs\/design-tokens-semantic-typography--page\"><sup> Ictinus<\/sup><\/a><br><\/figcaption><\/figure><\/div>\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Component design tier tokens<\/strong><\/h3>\n\n\n\n<p>The component tier is the final layer (Tier-3). Each token created in this tier links to a \u2018sem\u2019 token. This allows for easy tracking of individual component tokens while still maintaining scalability.<\/p>\n\n\n\n<p>The \u2018category\u2019 semantic attribute for \u2018Component\u2019 tier tokens is always the component name. This level of granularity allows for better control when working with large design systems.<\/p>\n\n\n\n<p>Here\u2019s an example of a \u2018comp\u2019 token:<\/p>\n\n\n\n<p><code>comp.button.compact.iconSize<\/code><\/p>\n\n\n\n<ul>\n<li>\u2018comp\u2019: indicates \u2018component\u2019 token tier<\/li>\n\n\n\n<li>\u2018button\u2019: the component\u2019s name<\/li>\n\n\n\n<li>\u2018compact\u2019: applies to compact button<\/li>\n\n\n\n<li>&#8216;iconSize&#8217;: sets icon size property<\/li>\n<\/ul>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Results and Impact<\/strong><\/h2>\n\n\n\n<p>The adoption and utilization of design tokens significantly enhanced our team&#8217;s workflow. Design tokens helped our team create a common language spoken by all and allowed for a unified mindset. This fostered a better understanding between designers and developers regarding each other&#8217;s constraints. It also led to significant delivery time and quality improvements.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"430\" src=\"https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium12-1024x430.png\" alt=\"\" class=\"wp-image-90005\" srcset=\"https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium12-1024x430.png 1024w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium12-300x126.png 300w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium12-768x323.png 768w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium12.png 1242w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><sup>Left: previous button documentation. Right: updated documentation for the same component.<\/sup><br><\/figcaption><\/figure><\/div>\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Internal design-to-development average time was reduced by roughly <strong>30%<\/strong>. This has a lot to do with the fact that token structure is similar for both designers and front-end developers. As a result, understanding them and applying them correctly became a more intuitive process for both disciplines. This was also a big help towards streamlining communication and reducing excess noise.<\/p>\n\n\n\n<p>It reduced visual discrepancies between design and implementation. As a result, time normally spent on QA was instead used to better develop the components and pad the documentation. This affected onboarding of users and products to the design system, speeding up the process by approximately <strong>65%<\/strong>. This allowed us to create better, more thorough documentation for component behavior and patterns. This led to a sharp decline in bug fix tickets (to the tune of approximately <strong>55%<\/strong>).<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"167\" src=\"https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium13-1024x167.png\" alt=\"\" class=\"wp-image-90007\" srcset=\"https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium13-1024x167.png 1024w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium13-300x49.png 300w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium13-768x125.png 768w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium13.png 1243w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Note that these metrics are still rough approximations; this article will be updated in the future once we have more concrete numbers.<\/figcaption><\/figure><\/div>\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>The team&#8217;s upcoming steps involve introducing the highly-anticipated theming to ORFIUM products. Our previous framework made this a pipe dream, but with tokens, sky\u2019s the limit!<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"533\" src=\"https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium14-1024x533.png\" alt=\"\" class=\"wp-image-90009\" srcset=\"https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium14-1024x533.png 1024w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium14-300x156.png 300w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium14-768x400.png 768w, https:\/\/www.orfium.com\/wp-content\/uploads\/2023\/10\/DesignTokensOrfium14.png 1242w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Takeaways<\/strong><\/h2>\n\n\n\n<p>Here are some practical tips to help your team adopt and use design tokens:<\/p>\n\n\n\n<ol>\n<li>Define a clear tier structure that your team can understand at a glance and use with ease. Each tier should have a distinct name, abbreviation, and purpose.&nbsp;<\/li>\n\n\n\n<li>Create naming conventions for your design tokens as a team. Make sure the naming conventions are easy to remember and use.&nbsp;<\/li>\n\n\n\n<li>Document everything token related. Documentation should be accessible and understandable by both design and development team members.<\/li>\n\n\n\n<li>Simplify token creation and export with third party tools like Tokens Studio for Figma.<\/li>\n<\/ol>\n\n\n\n<p>That\u2019s all for now, folks! We encourage you to share with us your own findings and concerns at <a href=\"https:\/\/twitter.com\/LifeatOrfium\" data-type=\"link\" data-id=\"https:\/\/twitter.com\/LifeatOrfium\">@LifeatOrfium<\/a>.<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><sub>To learn more about design tokens, check out Jina Anne\u2019s 2021 YouTube video or read <a href=\"https:\/\/medium.com\/@amster\/wtf-are-design-tokens-9706d5c99379\">the video summary<\/a> by Amy Lee.<\/sub><\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"References\"><strong>References<\/strong><\/h3>\n\n\n\n<p><a href=\"https:\/\/uxdesign.cc\/naming-design-tokens-9454818ed7cb\">https:\/\/uxdesign.cc\/naming-design-tokens-9454818ed7cb<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/medium.com\/@amster\/wtf-are-design-tokens-9706d5c99379\">https:\/\/medium.com\/@amster\/wtf-are-design-tokens-9706d5c99379<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=q5qIowMyVt8\">WTF are Design Tokens?<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/medium.com\/fast-design\/evolution-of-design-tokens-and-component-styling-part-1-f1491ad1120e\">https:\/\/medium.com\/fast-design\/evolution-of-design-tokens-and-component-styling-part-1-f1491ad1120e<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/bradfrost.com\/blog\/post\/the-many-faces-of-themeable-design-systems\/\">The Many Faces of Themeable Design Systems<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/medium.muz.li\/unlocking-the-power-of-design-tokens-to-create-dark-mode-ui-18c0802b094e\">https:\/\/medium.muz.li\/unlocking-the-power-of-design-tokens-to-create-dark-mode-ui-18c0802b094e<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Discover how our team integrated design tokens into our Figma-based design system Ictinus. We\u2019ll share the challenges, solutions, and insights to help you get started with using design tokens in your own workflow.<\/p>\n","protected":false},"author":23,"featured_media":89989,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_seopress_robots_primary_cat":"none","_seopress_titles_title":"Harness the Power of Design Tokens in Figma | Orfium ","_seopress_titles_desc":"Explore how Orfium integrated design tokens into its existing Figma design system, from challenges to solutions and insights gained. Learn how you can make design tokens work for your own process.","_seopress_robots_index":"","content-type":"","footnotes":""},"categories":[21],"tags":[55,56,25],"acf":[],"_links":{"self":[{"href":"https:\/\/www.orfium.com\/wp-json\/wp\/v2\/posts\/89981"}],"collection":[{"href":"https:\/\/www.orfium.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.orfium.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.orfium.com\/wp-json\/wp\/v2\/users\/23"}],"replies":[{"embeddable":true,"href":"https:\/\/www.orfium.com\/wp-json\/wp\/v2\/comments?post=89981"}],"version-history":[{"count":2,"href":"https:\/\/www.orfium.com\/wp-json\/wp\/v2\/posts\/89981\/revisions"}],"predecessor-version":[{"id":92087,"href":"https:\/\/www.orfium.com\/wp-json\/wp\/v2\/posts\/89981\/revisions\/92087"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.orfium.com\/wp-json\/wp\/v2\/media\/89989"}],"wp:attachment":[{"href":"https:\/\/www.orfium.com\/wp-json\/wp\/v2\/media?parent=89981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.orfium.com\/wp-json\/wp\/v2\/categories?post=89981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.orfium.com\/wp-json\/wp\/v2\/tags?post=89981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}