<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Backlight on Medium]]></title>
        <description><![CDATA[Stories by Backlight on Medium]]></description>
        <link>https://medium.com/@backlight_dev?source=rss-314fe9cc699d------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/0*sqKELaJpiPgFeEY-.jpg</url>
            <title>Stories by Backlight on Medium</title>
            <link>https://medium.com/@backlight_dev?source=rss-314fe9cc699d------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Fri, 13 Nov 2026 22:31:40 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@backlight_dev/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[5 benefits for designers when syncing their Figma UI library with Storybook code]]></title>
            <link>https://uxplanet.org/5-benefits-for-designers-to-sync-automatically-ui-library-in-figma-from-code-in-storybook-191a878e78a2?source=rss-314fe9cc699d------2</link>
            <guid isPermaLink="false">https://medium.com/p/191a878e78a2</guid>
            <category><![CDATA[figma]]></category>
            <category><![CDATA[storybook]]></category>
            <category><![CDATA[tools-for-design]]></category>
            <category><![CDATA[handoff]]></category>
            <category><![CDATA[components]]></category>
            <dc:creator><![CDATA[Backlight]]></dc:creator>
            <pubDate>Tue, 30 Aug 2022 15:24:09 GMT</pubDate>
            <atom:updated>2022-08-31T09:49:58.572Z</atom:updated>
            <content:encoded><![CDATA[<h4>Discover how designers can improve their workflow with tools to automatically update Figma components from code in Storybook.</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*AuS3qTdcBiW9EGbI.jpg" /></figure><p>Most teams know how hard it is to align developers and designers, code and design. Keeping a Figma library in sync with the codebase is a lot of work. Developers will spend time carefully making a <a href="https://storybook.js.org/">Storybook</a> instance of live components, only for designers to find that what’s online differs from what they have in their design files. The back-and-forth between teams, countless screenshots, and time-consuming library maintenance all keep designers from focusing on designing new features.</p><p>But now it’s possible to get rid of this tedious task. In just a few clicks, design can be seamlessly synced from code, thanks to some new frontend tools.</p><blockquote>For instance, <a href="http://story.to.design/">story.to.design</a> can automatically build and update a Figma UI kit or component library from Storybook. It does all the work for you.</blockquote><p>Let’s discover in this article a few ways your design team can benefit from such a new workflow :</p><h3>Fewer discrepancies between code and design</h3><p>Developers and designers typically work with different sources of truth: one in Figma and one in code. This means developers and designers aren’t always seeing the same components. A change in code is not automatically rendered in Figma for designers, leading to discrepancies and confusion about which component is the latest version.</p><p>Being able to automatically update the UI kit or component library in Figma, anytime code in Storybook is updated, makes collaboration easier and allows teams to be more efficient when developers and designers aren’t wasting time discussing discrepancies between code and design.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*3zGivIDrc44eabNnLPEDiQ.png" /></figure><h3>Design with components that look exactly like production</h3><p>It’s often the case that designers are using components that don’t look exactly like what is coded, and therefore aren’t what the final user sees. Because of the two different sources of truth, one in Storybook and one in Figma, developers may update or change something in the codebase that designers aren’t aware of (unless communication between teams is seamless, which isn’t always the case). Also, because design teams can’t spend hours updating Figma UI kits by hand, components become out-of-date and out-of-sync with the coded version.</p><p>It’s important to design with components that look and work exactly as they would in production. Not only is it better for communication between developers and designers, but it also means designers have the “truest” components that replicate exactly what a user will see and use, improving the quality of their design work.</p><h3>Faster designing and prototyping</h3><p>Let’s face it: creating and maintaining a UI library in Figma is time-consuming. Having to create each component from scratch requires time and dedication that keeps designers from working on new solutions. Being able to automatically generate and maintain your Figma UI library, can free-up designers to focus on more complex design work. Imagine having a full library done in under 2 hours?</p><p>Also, having production-replica components ready-to-go in Figma means designers can be faster and more efficient in designing screens and prototyping solutions. The same components being used by developers are also being used by designers, which means less time wasted checking whether a component is up-to-date or not. Designers can be confident they have the right UI kit, without having to create these components by hand.</p><h3>Easier design system updates across tools</h3><p>Design systems are costly to build and difficult to maintain. And when you factor-in maintenance across different tools and platforms, the cost and time commitment is even higher.</p><p>The possibility to sync an entire Figma UI library to the codebase can save design system teams tons of time and manual work. Designers no longer need to check Storybook in the browser to compare components, as the exact same components are inside their familiar environment. It also means a design system’s source-of-truth is more evenly spread across code and design.</p><h3>Speak the same (component) language as developers</h3><p>Another important benefit of using such a tool is the bridge it creates between designers and developers, especially when it comes to the language used around a design system. By importing your components from Storybook into Figma, you also bring in the same component naming and documentation. This way, when designers and developers discuss and work together on a design system, they have the same references and will be more likely to use the same names for components.</p><p>This brings important collaboration perks to the team like alignment, clearer communication, less confusion, and greater efficiency.</p><blockquote>To give <a href="http://story.to.design/">story.to.design</a> a try, you can i<a href="https://www.figma.com/community/plugin/1075741140914731351">nstall the Figma plugin</a> for free.</blockquote><p><em>Originally published at </em><a href="https://story.to.design/blog/reasons-every-design-team-needs-story-to-design">https://story.to.design/</a> <em>by </em><a href="https://www.linkedin.com/in/ardenagflahavin/"><em>Ardena</em></a><em> on August 29th, 2022.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=191a878e78a2" width="1" height="1" alt=""><hr><p><a href="https://uxplanet.org/5-benefits-for-designers-to-sync-automatically-ui-library-in-figma-from-code-in-storybook-191a878e78a2">5 benefits for designers when syncing their Figma UI library with Storybook code</a> was originally published in <a href="https://uxplanet.org/">UX Planet</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to manage icons in your UI library (part 1)]]></title>
            <link>https://levelup.gitconnected.com/how-to-manage-icons-in-your-ui-library-part-1-49c6f875fb5d?source=rss-314fe9cc699d------2</link>
            <guid isPermaLink="false">https://medium.com/p/49c6f875fb5d</guid>
            <category><![CDATA[design-systems]]></category>
            <category><![CDATA[icons]]></category>
            <category><![CDATA[ui-library]]></category>
            <category><![CDATA[web-components]]></category>
            <dc:creator><![CDATA[Backlight]]></dc:creator>
            <pubDate>Thu, 21 Jul 2022 19:01:53 GMT</pubDate>
            <atom:updated>2022-07-21T19:01:53.414Z</atom:updated>
            <content:encoded><![CDATA[<h4>Build a resilient Web Component with Lit for your icons</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*GiW7JSvKlt1b4WTQ.jpg" /></figure><h3>Introduction</h3><p>For the past few months, I’ve been working on a small UI library called <a href="https://a2000.netlify.app/">A2k</a>.</p><p>I’ve been gradually making changes when I get some time, but haven’t given much consideration to certain aspects of the library’s architecture.</p><p>For something small and scrappy, like a prototype or a proof-of-concept, testing an idea quickly is better than coding it perfectly. For other projects, it’s important to consider how the project’s architecture may positively or negatively impact the project over time.</p><p>Many small projects, like A2k, grow organically. As an organic project grows larger, some unwanted patterns start to emerge. I recognized one such undesirable pattern for how A2k handled icons.</p><p>For each icon added, I would create a file with the web component boilerplate + the contents of the SVG. I would also need to create another file to register the component. This equates to two files and a lot of shared code per icon.</p><p>Here’s the folder structure after adding the first handful of SVG icons to A2k:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/814/0*abPzAnpmAjWBwnRU.png" /></figure><p>Only half a dozen icons and this approach is already becoming unwieldy. Also, there’s already a lack of consistency between the <a href="https://backlight.dev/blog/naming-conventions-for-design-systems">naming conventions</a> (Logo vs Icon anyone?). Thirdly, adding a new icon requires a bunch of boilerplate.</p><p>This approach not only impacts the development experience and the code complexity, but also those consuming A2k. Because each icon is a component, the consumer will need to register all of the icons they intend to use. If an icon is not explicitly imported, it will not render.</p><p>This approach didn’t feel right for A2k. I wanted:</p><ul><li>A simple API, one custom element to rule them all.</li><li>End-users to not have to explicitly register the icons they wanted to use.</li><li>All of our SVG icons served from a single file, which means we only make a single network request.</li><li>Guaranteed constraints across all icons, as individual icons increase the possibility of entropy.</li></ul><p>My approach? Refactor the library so that end-users only need to register a single web component. The icon they’d like to use would be specified as a property on that component.</p><p>I’m also interested in understanding how other libraries and authors have solved this. Most of these libraries have different requirements and constraints, so understanding different perspectives will help us think critically about which choice is the most appropriate for our given situation.</p><p>As a result, I’ll be splitting this article series into two parts.</p><p>Part 1 will follow the refactoring of A2k, covering concepts like:</p><ul><li>Using SVG’s use element</li><li>Using ems for icon sizing</li><li>Using import.meta to import assets</li></ul><p>Part 2 will share alternative icon strategies used by more established component libraries and authors.</p><h3>Part 1: Icon anatomy and refactor</h3><p>I mentioned in the introduction that each component requires the standard web component boilerplate. As I was using Lit to write my web components, every icon component looked like this:</p><pre>import { LitElement, svg } from &#39;lit&#39;;</pre><pre>export class HelpIcon extends LitElement {<br>  render() {<br>    return svg`<br>      &lt;svg<br>	      viewBox=&quot;0 0 24 24&quot;<br>	      fill=&quot;none&quot;<br>    &gt;<br>      {all the child SVG elements}<br>    &lt;/svg&gt;<br>    `;<br>  }<br>}</pre><p>Which renders perfectly fine in the browser:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/124/0*VINrthTsG748Aj_6.png" /></figure><p>It looks good and the code’s straightforward enough. The main problem is that the boilerplate is identical to the other icon components. So let’s begin consolidating our icons into a single component.</p><p>To do that, we’ll need to understand the tools we have at our disposal to achieve this.</p><h3>SVG use</h3><p>To separate our icon web component from our SVG image, we need to reference SVG images that live in an external file. We can achieve this through the use of SVG’s <a href="https://developer.mozilla.org/en-US/docs/Web/SVG/Element/use">use</a> element.</p><p>The use element allows us to reference an SVG image and clone it where the use element is used. It’s an excellent way to reduce duplicate SVG logic if the same image is used in several places.</p><p>For our use case, use is handy as a means of separating concerns. Our icon component is only concerned about rendering, while an external .svg file houses all of our icons.</p><p>Our refactored code looks a little something like this:</p><pre><em>// More on this statement later</em><br>const url = new URL(&#39;../../a2k-icons.svg&#39;, import.meta.url).href;</pre><pre>export class A2kIcon extends LitElement {<br>  <em>// More on these styles later</em><br>  static styles = css`<br>    :host {<br>      display: flex;<br>      align-items: center;<br>      justify-content: center;<br>      font-size: 2em;<br>    }<br>  `;</pre><pre>  @property({ type: String })<br>  icon = &#39;&#39;;</pre><pre>  render() {<br>    if (!this.icon) {<br>      console.warn(<br>        &quot;This icon is a missing a &#39;name&#39;, please specify the &#39;name&#39; of the icon you want to display&quot;<br>      );<br>    }</pre><pre>    return svg`<br>			// More on these styles later<br>      &lt;svg height=&quot;1em&quot; width=&quot;1em&quot;&gt;<br>        &lt;use href=&quot;${url}#${this.icon}&quot;&gt;&lt;/use&gt;<br>      &lt;/svg&gt;<br>    `;<br>  }<br>}</pre><p>You can see that we’re still wrapping our markup with a top-level svg element.</p><p>We’re then using use to clone the SVG image that lives at the href path. The value passed through to href is the combination of the absolute path to the file and a reference to the specific icons id.</p><p>We now need to move over to the a2k-icons.svg where our SVG icons live. This is what the a2k-icons.svg looks like once we’ve migrated over our SVGs:</p><pre>&lt;svg xmlns=&quot;&lt;http://www.w3.org/2000/svg&gt;&quot;&gt;<br>  &lt;symbol id=&quot;help&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot;&gt;<br>    {/*<em>&lt;!-- SVG nodes like &lt;rect /&gt; --&gt;</em>*/}<br>  &lt;/symbol&gt;</pre><pre>  &lt;symbol id=&quot;documents&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot;&gt;<br>    {/*<em>&lt;!-- SVG nodes like &lt;rect /&gt; --&gt;</em>*/}<br>  &lt;/symbol&gt;</pre><pre>  {/*<em>&lt;!-- Other SVG icons --&gt;</em>*/}<br>&lt;/svg&gt;</pre><p>This file has a top-level svg element, but our individual icons are wrapped around in a <a href="https://developer.mozilla.org/en-US/docs/Web/SVG/Element/symbol">symbol</a> element. The symbol element is used to define an element that can be cloned via the use element. Luckily for us, symbol accepts attributes like viewBox, height, width, etc., making it easy for us to move over our images from the web component into the a2k-icons file.</p><p>At this point, our end-user will be able to display the icon providing the icon’s name via a property, like this:</p><p>&lt;a2k-icon icon=&quot;help&quot;&gt;&lt;/a2k-icon&gt;</p><p>We can now migrate all of the SVGs from our other individual icon components to the a2k-icons.svg file. Once we’ve done that we can delete all of our unused components (which is super satisfying). This is what our folder structure looks like now:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/816/0*gY4JCfhZrP8p5Wrf.png" /></figure><p>This approach isn’t without its caveats, by bundling all the SVGs into a single file, we serve all of our SVGs to our end-users via a single network request. For libraries that export 1,000+ icons, this will result in longer loading times and a poorer user experience. As we’ll see in part 2, there are benefits and tradeoffs for different approaches.</p><h3>Wait, Ems? Don’t you mean Rems?!</h3><p>The consensus in the web development world is that we should <em>generally</em> opt to use rem units over em units. And I 100% agree. The rationale is out of the scope of this article but if you’re interested in understanding when to use the most common CSS units, then I cannot recommend Josh Comeau’s wonderful article “<a href="https://www.joshwcomeau.com/css/surprising-truth-about-pixels-and-accessibility/">The Surprising Truth About Pixels and Accessibility</a>”, enough.</p><p>These are the units we’re going to be talking about here:</p><ul><li>em — a relative CSS unit whose value is based on the element’s font size</li><li>rem — a relative CSS unit whose value is based on the root’s font size</li></ul><p>Take the following elements for example:</p><pre>&lt;div style=&quot;font-size: 21px&quot;&gt;<br>  &lt;p style=&quot;font-size: 1rem&quot;&gt;This is rem text&lt;/p&gt;<br>  &lt;p style=&quot;font-size: 1em&quot;&gt;This is em text&lt;/p&gt;<br>&lt;/div&gt;</pre><p>Assuming that the document’s root has a font size of 16px, then our first paragraph will display at 16px, while our second paragraph will display at 21px.</p><p>The above markup will render in the browser like this: So why did I choose to use ems for the icon sizing?</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/298/0*e8sA96gwaXQWaIwW.png" /></figure><p>This was something that I learned from the <a href="https://every-layout.dev/layouts/icon/">Every Layout</a> e-book. Using em can be a particularly handy trick if you plan on accompanying your icons with text. As we saw in the above example, the second paragraph’s font size is relative to the font size inherited from its parent. This is a handy way of ensuring that two closely-tied elements’ grow and shrink in tandem.</p><p>You can see this in action by writing the following component:</p><pre>export class A2kTextIcon extends LitElement {<br>  static styles = css`<br>    :host {<br>      font-size: 24px;<br>    }<br>  `;</pre><pre>  render() {<br>    return html`<br>      &lt;div&gt;<br>        &lt;a2k-icon icon=&quot;help&quot;&gt;&lt;/a2k-icon&gt;<br>        &lt;p&gt;Help&lt;/p&gt;<br>      &lt;/div&gt;<br>    `;<br>  }<br>}</pre><p>All we’re doing is creating a new component that renders our pre-existing icon component but adds some accompanying text. The use of em within the a2k-icon component coupled with the explicit font-size: 24px in the A2kTextIcon&#39;s style property, means that both the paragraph and the icon will scale relative to its parent’s size.</p><p>If you’re not interested in coupling your icon with text, then you can either set the size of the icon explicitly or have the icon take up the entire width of its container. Either is a valid option for certain use cases but beyond the scope of this article.</p><p>If you’d like to learn more about composing resilient icon layouts, the <a href="https://every-layout.dev/">Every Layout</a> book is a wonderful resource. It covers a lot of interesting ground, like vertically aligning your icons, perceptually matching height with text, and using logical properties to apply spacing.</p><h3>import.meta</h3><p>So now that we’ve created the a2k-icons.svg file, it’s important that we can reference it correctly.</p><p>You’ll find that referencing a static file via a relative URL like so…</p><pre>&lt;use href=&quot;../../svg-icons.svg&quot; /&gt;</pre><p>…won’t work.</p><p>This is because paths in web components are relative to the root document, so you’ll need to create an absolute path directly to the static file.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*yHNulkLPZ9UoBrRd.png" /></figure><p>The wonderful folks at Modern Web dive a <a href="https://modern-web.dev/guides/going-buildless/es-modules/#referencing-reusable-assets-with-importmetaurl">little deeper into this behaviour</a>, and they recommend referencing reusable assets with import.meta.url.</p><p>So here’s how we use it in our A2kIcon component:</p><pre>const url = new URL(&#39;../../a2k-icons.svg&#39;, import.meta.url).href;</pre><p>To understand what’s going on here let’s break this statement into three sections:</p><ul><li>import.meta.url</li><li>../../a2k-icons.svg</li><li>new URL(...).href</li></ul><p>Firstly, import.meta.url returns the absolute URL of the current ES module, in this case, A2kIcon.ts.</p><p>If you run a dev server, and log import.meta.url, you’ll see something like this:</p><p><a href="http://localhost:3000/@fs/Users/Repos/andricos-2000/packages/icons/lib/src/A2kIcon.js">http://localhost:3000/@fs/Users/Repos/andricos-2000/packages/icons/lib/src/A2kIcon.js</a></p><p>Secondly, we have ../../a2k-icons.svg which is the relative path of the file we want to access. This path is relative to where A2kIcon lives in the file system.</p><p>Finally, we can use the URL() constructor to generate an absolute path to our target file, the a2k-icons.svg file.</p><p>The first argument we’ll pass to URL() is the relative path of the target file. The second argument is our base URL, which we get from import.meta.url.</p><p>The following expression:</p><pre>const url = new URL(&#39;../../a2k-icons.svg&#39;, import.meta.url).href;</pre><p>…gives us the absolute URL for a2k-icons.svg:</p><p><a href="http://localhost:3000/@fs/Users/Repos/andricos-2000/packages/icons/a2k-icons.svg">http://localhost:3000/@fs/Users/Repos/andricos-2000/packages/icons/a2k-icons.svg</a></p><p>So this works fine when running our site on a local server, but does it work once the package is bundled?</p><p>I can’t speak on behalf of all bundlers, but Vite supports our call to URL() out of the box. It will ensure that the URL points to the correct location even after bundling and asset hashing. Unfortunately, this approach won’t work for components rendered on the server, and won’t work for generating URLs at runtime. To learn more about these limitations, have a look at the <a href="https://vitejs.dev/guide/assets.html#new-url-url-import-meta-url">Vite docs</a>.</p><p>There is a <a href="https://github.com/vitejs/vite/issues/7287">known issue</a> with Vite’s use of import.meta, which will cause headaches for developers consuming your icon library. The way Vite optimizes dependencies causes problems when running the development server, and the component no longer has access to its import.meta.url value. This will break any URLs generated using new URL(). If you come across this problem you’ll need to add the following to your vite.config.js</p><pre>export default {<br>  optimizeDeps: {<br>    exclude: [&#39;@a2000/icons&#39;], <em>// or whatever dependency you&#39;re having trouble with</em><br>  },<br>};</pre><h3>Is this a suitable approach?</h3><p>At the beginning of the article, I shared the rationale for moving to this approach. To recap, they were:</p><ul><li>A simple API for a single component.</li><li>End-users only need to register a single icon.</li><li>All icons are served via a single file.</li><li>Improved DX as we can guarantee the same constraints across all icons.</li></ul><p>We achieved this through the use of some interesting browser concepts like:</p><ul><li>SVG’s use element</li><li>When to use ems over rems</li><li>Building absolute URLs using import.meta</li></ul><p>There are also drawbacks to our approach including:</p><ul><li>End-users will be downloading icons that they don’t use.</li><li>The bundle size can grow large depending on the number of icons in our library. As we’ll discuss in part 2, some libraries have a total icon count of over 1,000.</li><li>End-users can’t use their icon libraries with our icon component.</li></ul><p>Depending on your library, these drawbacks may be trivial, or they could result in a degraded experience for your end-users. So, how do other libraries approach this problem and what are the drawbacks? We’ll cover this in part 2. Stay tuned.</p><p>If you have an icon library that takes a novel approach to manage your different icons, then please leave a comment, or reach out to me on Twitter. I’m building a list of icon libraries to compare for part 2 and would love to learn about any interesting approaches used out in the wild.</p><p><em>Originally published at </em><a href="https://backlight.dev/blog/how-to-manage-icons-in-your-UI-library-part-1"><em>https://backlight.dev</em></a><em> and written by </em><a href="https://twitter.com/AndricoKaroulla">@AndricoKaroulla</a> <em>on July 7th, 2022.</em></p><h3>Level Up Coding</h3><p>Thanks for being a part of our community! Before you go:</p><ul><li>👏 Clap for the story and follow the author 👉</li><li>📰 View more content in the <a href="https://levelup.gitconnected.com/">Level Up Coding publication</a></li><li>🔔 Follow us: <a href="https://twitter.com/gitconnected">Twitter</a> | <a href="https://www.linkedin.com/company/gitconnected">LinkedIn</a> | <a href="https://newsletter.levelup.dev/">Newsletter</a></li><li>🚀👉 <a href="https://jobs.levelup.dev/"><strong>Top jobs for software engineers</strong></a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=49c6f875fb5d" width="1" height="1" alt=""><hr><p><a href="https://levelup.gitconnected.com/how-to-manage-icons-in-your-ui-library-part-1-49c6f875fb5d">How to manage icons in your UI library (part 1)</a> was originally published in <a href="https://levelup.gitconnected.com/">Level Up Coding</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[3 pillars of a successful design system]]></title>
            <link>https://uxplanet.org/3-pillars-of-a-successful-design-system-e2b91bf0ccf2?source=rss-314fe9cc699d------2</link>
            <guid isPermaLink="false">https://medium.com/p/e2b91bf0ccf2</guid>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[design-systems]]></category>
            <category><![CDATA[best-practices]]></category>
            <category><![CDATA[front-end-development]]></category>
            <dc:creator><![CDATA[Backlight]]></dc:creator>
            <pubDate>Wed, 13 Jul 2022 13:29:39 GMT</pubDate>
            <atom:updated>2022-07-13T13:29:39.067Z</atom:updated>
            <content:encoded><![CDATA[<h4>Build your design system with some good tips in mind</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*7kc48P6-SOcDhSGZ.jpg" /></figure><p>No one likes changes, particularly in the tech stack, “if it’s not broken, don’t fix it” most experienced team members will say. What if the new approach doesn’t work? What if it creates new issues? Not surprisingly, the same goes for design systems. Switching from old-school design architecture to a brand new design system can bring tremendous change, not only to your product but also, potentially, to the whole organization.</p><p>However, adopting a design system can lead to tremendous benefits: from laying the groundwork for your product to encouraging strong team collaboration. Design systems force teams to develop guidelines for delivering a product to production and can help you get the most out of your team and product.</p><p>A design system is more than just a collection of components. It also offers design concepts and guidelines for using the components. It provides good documentation with templates and examples of what to do and what not to do. It includes the component library’s surrounding procedures, strategy, and vision. A design system also provides a well-defined governance scheme for who owns or contributes to the design system, as well as a consistent user experience, helping teams to deploy features more quickly, make rebranding changes more efficiently, and freeing up time to deal with complex UX challenges.</p><p>On a broader level, the benefits of having a design system can be categorized as follows:</p><ul><li><strong>Reduced cost</strong>: having everything in one place reduces the amount of work done by multiple teams.</li><li><strong>Boosted confidence</strong>: having clear instructions on developing a given user interface gives the team more confidence.</li><li><strong>Elevated empathy</strong>: when everyone in the team contributes to the core design system, it elevates empathy between the teams.</li><li><strong>Defined principles</strong>: design systems help designers, developers, marketers, and project managers define fundamental design principles.</li><li><strong>Improved productivity</strong>: productivity improves immediately when everything originates from a single source.</li></ul><h3>Build consistent front-end experiences</h3><p>Building a consistent front-end experience requires a well-documented, standardized set of UI blocks that can help team members to understand the basic foundation on which UI is built. It increases output speed and encourages collaboration among members to develop and implement features in time. Furthermore, because conflicts are less likely to arise, companies can ship features faster than they could without a design system.</p><p>Three important factors to keep in mind when using a design system are:</p><ul><li><strong>Make use of open-source</strong>: not all companies can afford to build a design system from scratch. Instead of consistently building components from scratch, make the most of existing patterns or adopt open source libraries. Before building, ask yourself if it’s covering multiple use cases or solely focused on single-use cases? This also reduces time and encourages reusability; a more sustainable way to build a design system.</li></ul><blockquote>Here’s a <a href="https://backlight.dev/mastery/best-open-source-component-libraries-for-your-design-system">curated selection of the most important open source component libraries</a> that you can use as a foundation for your <a href="https://backlight.dev/mastery/what-is-a-design-system">design system</a>. Also, check out <a href="https://backlight.dev/mastery/why-you-should-use-open-source-component-libraries-in-your-design-system">why you should use open-source component libraries in your design system?</a></blockquote><ul><li><strong>Documentation</strong>: a scattered product is always protected by documentation. If sufficient documentation is not available for reference, the reusability of components becomes problematic for a newly onboarded member. Documentation that is well-written can help new members get started. There should be examples and counter-examples provided for each section. Not only is it important to create documentation, but it is also vital to update it on a regular basis.</li><li><strong>Enforcement</strong>: design systems require a set of predefined rules to follow, and teams should adhere to the patterns created. Processes that aren’t necessary should be avoided at all costs because they waste time and slow down the process.</li></ul><h3>Keep quality and maintainability under control</h3><p>A design system not only ensures quality and maintainability but also reduces maintenance costs and streamlines the release process. As the design system evolves, it’s essential to keep an eye out for ways to simplify around us in order to limit the number of designs that aren’t regularly used. Invest in equipment and automated solutions for testing rather than wasting money on non-essential components.</p><ul><li><strong>Release process</strong>: according to a <a href="https://www.figma.com/blog/measuring-the-value-of-design-systems/">study</a> done by Figma’s team, when designers and developers have access to a design system, they finish their goal 34% faster, increasing the pace at which a product is released to the market. Increased speed in the release cycle brings the product up-to-date with the competition. It also provides backward compatibility for teams who choose to roll back. An automated build/release procedure based on CI/CD should be implemented. Additionally, all release information should be sent across different channels to ensure that all teams are informed.</li><li><strong>Feedback loops</strong>: surveys should be undertaken at regular intervals within teams to determine what needs to be improved. With these surveys, we can learn about the requirements and priorities that must be addressed as soon as possible. With this well-maintained system, backlog concerns can be addressed with total attention and resolved within a reasonable time limit.</li></ul><h3>Keep developers and designers in sync</h3><p>Keeping developers and designers in sync is a big challenge. Both of them should be aligned if we want to deliver a good quality product.</p><ul><li><strong>Open to contributions</strong>: establishing contribution rules can be accomplished by keeping everyone on the same page. Companies with well-established collaboration strategies and high maturity across disciplines may find contribution easier. Contribution in the form of fresh ideas, analyzing consumer behavior, and expressing what is necessary is also essential. From a technological standpoint, a streamlined pipeline for processing pull requests and dashboards for bugs and features should be maintained so that everyone can view the backlogs and advanced features. Shipping a product made with a design system is not the responsibility of a sole individual. Consistent and collaborative team efforts can give tremendous results.</li><li><strong>Collaboration</strong>: collaboration is a must. Being on the same page and everyone knowing their goal and vision boosts team productivity. There should be room for opinions, and enough flexibility for teams to make decisions. Different opinions can sometimes create chaos, but they should never be a blocker for a team. Creating a strategic plan and timeline that everyone is aware of and following creates transparency. Furthermore, design systems are developed over time. So, if a team encounters a roadblock during development, they can modify the design system accordingly. This prevents other teams from experiencing similar problems in the future. The majority of the work is managed by standard guidelines, which address functionality and ensure that everyone is working towards a common goal.</li></ul><blockquote>To go further, you could check <a href="https://backlight.dev/">Backlight</a> design system tooling platform, which offers multiple features to help you build your design systems: automated CI, starter-kits to lower the cost of starting a design system (React, Vue, Svelte, Web Components, and more), powerful built-in documentation support, support for Storybook’s component story format, real-time components rendering, real-time collaboration, code and visual reviews, online IDE, git integration, …</blockquote><p><em>Originally published at </em><a href="https://backlight.dev/blog/design-system-documentation-best-practices"><em>https://backlight.dev</em></a><em> by </em><a href="https://twitter.com/soniasinglas">@soniasinglas</a> <em>on June 2nd, 2022. </em><a href="https://backlight.dev/"><em>Backlight</em></a><em> is a collaborative platform to ship design systems on the dev side.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e2b91bf0ccf2" width="1" height="1" alt=""><hr><p><a href="https://uxplanet.org/3-pillars-of-a-successful-design-system-e2b91bf0ccf2">3 pillars of a successful design system</a> was originally published in <a href="https://uxplanet.org/">UX Planet</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[5 Things to avoid when building a design system]]></title>
            <link>https://medium.com/@backlight_dev/5-things-to-avoid-when-building-a-design-system-248f260cf256?source=rss-314fe9cc699d------2</link>
            <guid isPermaLink="false">https://medium.com/p/248f260cf256</guid>
            <category><![CDATA[front-end-development]]></category>
            <category><![CDATA[front-end-tools]]></category>
            <category><![CDATA[advice]]></category>
            <category><![CDATA[collaboration]]></category>
            <category><![CDATA[design-systems]]></category>
            <dc:creator><![CDATA[Backlight]]></dc:creator>
            <pubDate>Tue, 12 Jul 2022 15:08:43 GMT</pubDate>
            <atom:updated>2022-07-12T15:08:43.712Z</atom:updated>
            <content:encoded><![CDATA[<h4>Find out how to build right your design system</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*emmPh2rUdL_Y6Qir.jpg" /></figure><p>Many of you have probably heard about the advantages of a design system by now; they can bring huge benefits in efficiency and quality in product development. However, building a design system can be hard and sometimes involves a lengthy process that can be costly to teams in both time and resources.</p><p>Not clearly defining the value or mission of our design system, ignoring how the components interact within it or avoiding collaboration with developers, can all lead to costly mistakes when developing a design system. Yet, these mistakes can be avoided if we pay attention to a few key points during the creation process.</p><p>In this article, we are going to look at 5 things to avoid when building a design system:</p><h3>🦀 Building from scratch</h3><p>Not all companies can afford to build a design system from scratch because it requires a lot of capital and resources. It is usually preferable, and more cost-efficient, to take advantage of existing solutions rather than beginning from scratch.</p><p>Choosing a ready-made solution on the market that meets your product needs can save tons of resources. Working from an existing system is less exhausting than completely reinventing the wheel. Starter kits, component libraries, and other pre-built features are all included in ready-made solutions, saving you time and allowing you and your team to focus on other aspects of your product.</p><blockquote><em>⭐️ </em><a href="https://backlight.dev/"><em>Backlight</em></a><em> comes with several starter kits to lower the cost of starting a design system. We have starter kits in React, Vue, Svelte, Web Components and more on the way.</em></blockquote><h3>🛳 Building only for the here and now</h3><p>A design system isn’t just a thing of today; it’s an ever-evolving mechanism that lasts a long time. While we’re building it, we should also be considering the future. Anticipating future features or concerns allows for a wider product variety while also ensuring scalability. Plus, a design system’s ability to scale alongside the product could make or break it. To be future-proof, using Web Components is a terrific idea, as they provide control over how to design them, allowing you to simply customize components as needed, build future-proof components, and aid adoption.</p><p><a href="https://backlight.dev/mastery/best-open-source-component-libraries-for-your-design-system">Here’s</a> a curated selection of the most essential open-source component libraries that you may want to use as a foundation for your <a href="https://backlight.dev/mastery/what-is-a-design-system">design system</a>. Also, check out <a href="https://backlight.dev/mastery/why-you-should-use-open-source-component-libraries-in-your-design-system">why you should use open-source component libraries in your design system</a></p><h3>⛳️ Focusing only on the UI of the design system</h3><p>Thinking solely about the UI of the design system is a mistake many teams make. The design system will most likely be consumed by both your product team and end-users, as both are by definition “users” of the design system. As well as UI, the UX of the design system is an important aspect to consider and is what gives users a better experience. Concentrating only on the visual aspect won’t help us make a top-notch product. Focusing on the adoption of the design system can help us to improve its UX. As per a study done by <a href="https://www.dmi.org/page/2015DVIandOTW">Design Management Institute (DMI)</a>, products that place priority on human-centric design get 211% higher ROI than the <a href="https://en.wikipedia.org/wiki/S%26P_500_Index">S&amp;P 500</a>.</p><p>Integrating content design into your design system can also help to improve the overall experience of using it. Websites and apps that focus on content design are often clearer and easier to use. Good content design can also make a website clear and intelligible for SEO purposes, encouraging readers to interact with it. The more visitors that interact with your site, the more search engines like it.</p><blockquote><em>💡 Check out </em><a href="https://backlight.dev/blog/why-your-design-system-needs-content-design"><em>why your design system needs content design</em></a><em>.</em></blockquote><h3>⛓ Building based on gut feelings</h3><p>Many design systems today are so well-documented that they leave little room for guesswork. If you’re unsure of how to build your design system, a quick benchmark of existing ones can be a great place to start. There’s no longer a need to make gut-based decisions or reinvent the wheel. A lot of the work has already been done, and it’s simply a matter of taking inspiration from the best. To help you, here’s a curated list of some of the <a href="https://backlight.dev/mastery/the-best-design-system-documentation-sites">best design system documentation sites</a>.</p><p>Collaboration is also key to building a design system. It is a team effort and few good design systems have been built by a single person. Design and development need to work together to make sure design and code are in-sync and properly documented. Other disciplines might also come into the picture, such as UX writers and product managers. To build a design system that works for the entire front-end team, it’s essential to rely on your colleagues and ask questions that could avoid costly mistakes.</p><blockquote><a href="https://backlight.dev/"><em>Backlight</em></a><em>, an all-in-one design system tool, offers collaborative features such as real-time previews, built-in documentation support, visual feedback, and much more. Backlight also comes with a number of starter kits to help you kick-start your design system journey.</em></blockquote><h3>🧰 Not picking the right tools</h3><p>Building a design system is hard enough as it is. If we add inadequate tooling to the mix, the process only gets harder. Ten years ago, the tools available to build design systems efficiently were few and far between. Today, however, there is a myriad of tools that make life much easier for front-end teams of all sizes.</p><p>Automation is a big one. Wherever it’s possible to automate manual or time-consuming processes, we should. Luckily, there are now plenty of tools that automate for us, from documenting automatically to automated testing.</p><p>Tools that facilitate collaboration and alignment between design and development are also important to invest in. One of the hardest parts about building a design system is the collaboration across disciplines, and tools can help us mitigate the efforts. Tools like <a href="https://backlight.dev/">Backlight</a>, for example, allow any discipline from the team to view, comment, and contribute to the design system, regardless of their technical level. To keep code and design aligned and in sync, we have <a href="https://story.to.design/">story.to.design</a>: a Figma plugin that automatically generates Figma components directly from Storybook code.</p><blockquote><em>⭐️ Take a look at our curated list of the </em><a href="https://backlight.dev/mastery/best-design-system-tools"><em>best tools for building design systems</em></a><em>.</em></blockquote><p><em>Originally published at </em><a href="https://backlight.dev/blog/design-system-documentation-best-practices"><em>https://backlight.dev</em></a><em> by </em><a href="https://twitter.com/soniasinglas">@soniasinglas</a> <em>on June 21th, 2022. </em><a href="https://backlight.dev/"><em>Backlight</em></a><em> is a collaborative platform to ship design systems on the dev side.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=248f260cf256" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Naming conventions for design systems]]></title>
            <link>https://uxplanet.org/naming-conventions-for-design-systems-b9ab17ed328f?source=rss-314fe9cc699d------2</link>
            <guid isPermaLink="false">https://medium.com/p/b9ab17ed328f</guid>
            <category><![CDATA[ux-writing]]></category>
            <category><![CDATA[naming-conventions]]></category>
            <category><![CDATA[design-systems]]></category>
            <category><![CDATA[components]]></category>
            <category><![CDATA[front-end-development]]></category>
            <dc:creator><![CDATA[Backlight]]></dc:creator>
            <pubDate>Fri, 08 Jul 2022 10:06:31 GMT</pubDate>
            <atom:updated>2022-07-08T10:06:31.890Z</atom:updated>
            <content:encoded><![CDATA[<h4>How to use naming to empower your design system</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*eJNxramtiTlxJDFO.jpg" /></figure><p>Finding the right names for things is an art. Speak to most content professionals and they’ll tell you that naming can be hard. Fun, but hard. Some naming exercises require creativity and originality, such as coming up with the name for a new product. However, other naming tasks come down to logic and clarity. <a href="https://backlight.dev/mastery/what-is-a-design-system">Design systems</a> fall into this second category. Naming <a href="https://backlight.dev/mastery/component-library">components</a> is less about originality and more about ease of understanding and standardization.</p><h4>Why should we care about naming in design systems?</h4><ul><li>Get the team to speak the same language: One of the main goals of a design system is to establish a unified design language, so different teams use a single design language when building a given product. However, if we don’t give any thought to how we name things in our design system (design tokens, components, patterns, etc.), we’re missing a huge opportunity to create synergy between designers and developers when they talk about elements in the design system. Imagine developers call a given component one thing and designers another. This not only leads to miscommunication, but can also create huge inefficiencies when it comes to updating a component from design to code, and vice versa.</li><li>Transform abstract ideas into tangible ones: Finding good names for the elements of our design system is an exercise in taking abstract concepts and making them clear and tangible. Let’s take the example of the <em>Accordion</em> component (also referred to sometimes as <em>Collapsible sections</em> or <em>Arrow toggle</em>). This component is essentially a vertical stack of headings that can be interacted with to display further information. This can be quite abstract and hard for some to visualize. Giving it a name like <em>Accordion</em>, which describes what it looks like, allows us to more clearly visualize the component and understand what it is.</li><li>Alignment between code and design: Many front-end teams still struggle with alignment between code and design, and vice versa. Finding common names for elements of our design system should be a joint, collaborative exercise with the goal of using the same names on the code-side (Storybook, etc.) and on the design-side (Figma, etc.). This makes it easier for everyone on the team to “speak the same language” when talking about design systems and eases collaboration.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*i5Zca0oqQ4L9yKCb.jpg" /></figure><h4>Best practices for naming elements in a design system</h4><p>When thinking of names for any part of your design system, keep in mind that they should generally be:</p><ul><li>Logical: Describe the component clearly, using a name that represents it. For example, the name <em>Accordion</em> describes the component visually and even how it works when a user interacts with it.</li><li>Scalable: Find names that allow for possible variations or additions to the component that could come in the future. For example, when categorizing text style sizes, it’s often best to use T-shirt sizing (S, M, L, XL) as there is always the possibility of adding more sizes in the future. Typically the main size will be M, so both smaller and larger sizes can be introduced as needed.</li><li>Simple: Keep names short and basic. 1–2 words is often enough for a component, and if more details are needed this can be done through the use of forward slashes to represent further categorization. Use names that are commonly understood and avoid long or unique names that require someone to look it up or ask what it represents.</li><li>Standardized: The best component names are the ones used over and over again by most people in the industry. <em>Button</em> is a great example. It has become so standardized, it’s very hard to find any other name for this component. If you need help finding the most standardly-used component names, sites like <a href="https://www.uiguideline.com/components">UI Guideline</a> or <a href="https://component.gallery/">Component Gallery</a> are great resources. They gather the most common component names used in the best design systems.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*9PV1OKBxznWKn0Ha.png" /></figure><h4>Some decisions to make when naming</h4><p>States: The different states of a component need names, too. It’s important to follow the same best practices above and find names that are logical and standard, or otherwise clearly defined. The most common names for component states include:</p><ul><li>Enabled: An interactive component/element that the user can usually click on or interact with.</li><li>Hover: A visual cue to show users that they are hovering over the component concerned.</li><li>Focused: Triggered when a user has highlighted an item, using an input method such as a keyboard or voice.</li><li>Pressed: A visual indicator for the user to confirm that the component has just been clicked.</li><li>Disabled: The opposite of the “Enabled” state. It, therefore, indicates that the component is inactive and therefore not clickable.</li><li>Visited: Mainly used on links to indicate which links the user already clicked on.</li><li>Error: Concerns mainly form components to indicate input errors to the user visually.</li><li>Validated: Indicates to the user that what they filled is correct and complete. It is a feedback on an action just completed.</li><li>Read-only: Somewhere between an “enabled” and “disabled” state. User can’t interact with the component, but it’s essential to display the component to indicate it has been properly activated.</li></ul><p>Colors: While it seems counterintuitive, colors should <em>not</em> take the name of the actual color itself (blue, red, green), but one that represents its function. If your product or company were to undergo a full rebranding, for example, it’s likely the colors will change, forcing you to rename every single color token. Plus, using the actual colors as names doesn’t give design system users any indication of when, where, or how to use that particular color. Instead, the most common names for colors include:</p><ul><li>Branding: primary, secondary, tertiary…</li><li>Functional: success, warning, informational…</li><li>Greyscale: grey-000, grey-100…</li></ul><p>Casing: While choosing a casing style really only concerns naming on the code-side, it can still influence the structure of component names and might be reflected somewhere in documentation or in design. There are 4 common casing styles for naming on the code-side:</p><ul><li><em>camelCase</em>: No spaces and each word is capitalized except the first one. Most commonly used for variables and functions in JavaScript.</li><li><em>PascalCase</em>: All words are capitalized including the first one and all spaces are removed. It is commonly used for C# and Java.</li><li><em>kebab-case</em>: Replace the spaces with a hyphen “-” between each word and make sure all words are lowercase. It is commonly used for CSS and HTML5.</li><li><em>snake_case</em>: Very similar to the kebab-case, the only difference being the use of underscores “_” to separate each word. It’s commonly used for database programs such as SQL databases, but also with PHP or Python.</li></ul><p>Breaking down a component’s name: Most components typically have several types, variations, states and even themes. It’s important to clearly organize the name of components to reflect these differences, using a forward slash to break it down:</p><p>[Category] / [Component] / [Type / Variant] / [State] / [Theme]</p><p>E.g.: Actions / Button / Primary / Hover / Dark</p><p>Alignment across all design system tools/programs: More than a decision to make, this is a step to take when tackling naming. Developers and designers typically use different tools to work on a design system. Plus, there is the documentation site. It’s all too common to find components in Storybook called one thing and those same components in Figma called something else. Certain tools, like <a href="https://backlight.dev/">Backlight</a>, keep code, stories, design, and documentation in one place. This makes it much easier to maintain alignment across component naming. However, it’s still a team exercise that requires consensus and alignment on names, making sure they’re consistent across all tools used to build the design system.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*ET7cdse_t23CKbSS.png" /></figure><h4>So, where to begin?</h4><p>If you’re starting a design system from scratch, you have the perfect blank canvas to start naming components following the guidelines above. However, it’s more likely that you already have a design system in place, and that some names are unclear, inconsistent across tools or need a little attention. A great place to start is with a <a href="https://www.figma.com/file/CV0u2EH45OMnW6QWaV0cW5/Component-naming-workshop?node-id=0%3A1">component naming workshop</a> with your design system team. Do an audit of everything you have and see where these naming conventions can be applied.</p><p>Another approach is to benchmark other design systems. Here is a curated a list of some of the <a href="https://backlight.dev/mastery/best-design-system-examples">best design systems</a> to turn to for inspiration. Take 2 or 3 design systems and see how they organize their categories, structure their components’ names, and reference their design tokens.</p><p>Pick a method that works best for your team and design system, and stick to it. Bonus: if you have a UX writer or content designer in your team, ask them for help! It’s yet another example of how <a href="https://backlight.dev/blog/why-your-design-system-needs-content-design">content design practice can benefit your design system</a>.</p><p><em>Originally published at </em><a href="https://backlight.dev/blog/naming-conventions-for-design-systems"><em>https://backlight.dev</em></a><em> by </em><a href="https://www.linkedin.com/in/ardenagflahavin/"><em>Ardena</em></a><em> on June 16th, 2022.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b9ab17ed328f" width="1" height="1" alt=""><hr><p><a href="https://uxplanet.org/naming-conventions-for-design-systems-b9ab17ed328f">Naming conventions for design systems</a> was originally published in <a href="https://uxplanet.org/">UX Planet</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Advocating for your design system]]></title>
            <link>https://uxplanet.org/advocating-for-your-design-system-c5ba067d11c2?source=rss-314fe9cc699d------2</link>
            <guid isPermaLink="false">https://medium.com/p/c5ba067d11c2</guid>
            <category><![CDATA[front-end-development]]></category>
            <category><![CDATA[advocacy]]></category>
            <category><![CDATA[documentation]]></category>
            <category><![CDATA[design-systems]]></category>
            <category><![CDATA[adoption]]></category>
            <dc:creator><![CDATA[Backlight]]></dc:creator>
            <pubDate>Tue, 21 Jun 2022 10:27:41 GMT</pubDate>
            <atom:updated>2022-06-21T11:19:43.073Z</atom:updated>
            <content:encoded><![CDATA[<h4>Some good practices to build the adoption of a design system</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*zvVzZESsa2vIU8e4.jpg" /></figure><p>Building a design system that ensures a coherent user experience is only possible if the entire team is aligned toward the same goal. It has the ability to improve user experience by offering consistency and accessibility, which encourages adoption. Maintaining and scaling design systems takes time and resources. Team members must embrace a design system in order to demonstrate its usefulness. Getting people to contribute to a design system offers them ownership, which leads to wider use. In order to increase usage and obtain feedback for changes, a design system must engage with teams across the organization.</p><p>This is why advocacy is a valuable tool. Advocating for your design system doesn’t mean imposing it on teams, but rather a process of education so it can be adopted easily. It means working together with the teams who will use the design system, and learning valuable insights along the way.</p><p>First and foremost, your design system must be adopted and accepted by your own team. And, without a doubt, we must be the biggest advocates of our design system, since no one else will.</p><p>Let’s look at how to get your <a href="https://backlight.dev/mastery/what-is-a-design-system">design system</a> adopted by your team, advocate for your design system, and how documentation can help.</p><h3>Design system adoption in product teams</h3><p>Adoption of the system relies heavily on shared understanding. It will only be helpful if the individuals working on the product actually adopt the design system.</p><p>Implementing a design system is much more than just translating a design into code for the developers. They must convince other developers who are building the applications to adopt their components in order to generate and distribute components. They must lay the necessary groundwork for a standardized and collaborative component ecosystem. Over time, adding, maintaining, and updating the components to make sure everyone can use them without being blocked drives design system adoption in the product team.</p><p>Adopting some of these best practices will definitely help design, engineering, and product teams alike.</p><h4>Create a living style guide</h4><p>Strong documentation for a design system isn’t just a “nice to have”. A design system lives by it, it is a step-by-step guide for putting your design system into action. An excellent style guide and documentation should be easy to find, automatically updated and relevant to the whole team. It should be the go-to place for everyone looking for information, and everyone should feel confident that they will be able to find answers to their queries there.</p><p>For new developers joining the team, live previews of code or documentation can make things easier. It will help them familiarize themselves with the coding style and teach them best practices. Providing enough documentation links and resources also helps paint a clearer picture for new hires.</p><p>Adoption is the key to a design system’s long-term success, and appropriate documentation encourages it. As adoption develops, your design teams will produce consistent, high-quality work.</p><h4>Reusable component ecosystem</h4><p>A successful design system is, to a large extent, reusable; guided by clear standards, and assembled to build products together. The design system is a set of reusable components shared and used by everyone in the organization.</p><p>Collaboration between designers and developers is one of the most crucial aspects of a reusable component system. For example, we have two teams, A and B. Team A uses React while team B uses VanillaJS. When considering our design system, our focus should be on building components that can accommodate multiple frameworks, and provide flexibility, without restricting developers from using a particular framework. This will ultimately encourage adoption among different teams.</p><p>As a result of the Covid-19 pandemic, many companies are working remotely, increasing the need for strong collaboration. Flexible, adaptable, and reusable components allow cross-functional teams, designers, and engineers to perform their tasks effectively while using their unique skillsets. Reusable components scale the whole design system and avoid unnecessary, repetitive design decisions for the same component. The design system’s users will be able to interact with the application effectively, have a consistent experience and eventually become familiar with the company’s brand.</p><h4>Automation to the rescue</h4><p>Many companies want their designers to create and ship new features to development more quickly than ever. If we analyze the process of building, adopting, and maintaining a design system, we may observe that there are many areas that can be automated for greater optimization. For example, in the middle of a project, it can be difficult to identify redundant sections of code. It increases the frustration when developers with different styles collaborate and try to write in a single manner. This is where a tool like ESLint comes into play. Due to its versatility, it has become a popular component for many projects, saving a lot of time and making designers happy. To learn more about design system best practices with ESLint, check out this <a href="https://backlight.dev/blog/best-practices-w-eslint-part-1">series</a>.</p><h3>How to advocate for your design system</h3><p>You can build the finest design system in the world, but if you do not advocate for it within your organization, it will eventually fail. It is crucial to advocate for your design system from the beginning. That is why, right from the start, we must take the initiatives to advocate our own design system’s adoption. This can be achieved by building a community of advocates that promote system thinking and offer education in the form of talks and workshops.</p><p>These actions should have the same goal: to promote knowledge of the design system’s existence and educate people on how to use it.</p><h4>Share knowledge at design meet-ups and conferences</h4><p>Encourage members of your team to join you at meet-ups, and share your knowledge by attending and participating in seminars at conferences. These seminars provide an excellent chance to network, gain new information and become more comfortable sharing our perspectives. It is incredibly beneficial to one’s personal growth. The world gets to know about our design system and we raise awareness about how we are using it.</p><h4>Create a safe space for honest conversation</h4><p>It is critical to creating a secure atmosphere for people to express their genuine thoughts and ensure that everyone is heard. It is a chance for product designers to speak up about their work and obtain constructive feedback. Encourage people in the meetings to share their creative ideas and issues they face daily and provide clarity on the problems. Spot the team’s common design issues, take necessary steps and offer related resources to tackle them.</p><p>Regular updates hold the team together and provide transparency and clarity on the working status in terms of development.</p><h4>Case studies, user stories, and behind-the-scenes</h4><p>Use case studies to promote your own design system. This can assist in providing a clearer picture of what should and should not be done in order to adopt the greatest design system. It gives a sense of confidence within the team and can help get different perspectives and learnings from the outside world. Encourage the team to study design system articles and books, such as <a href="https://atomicdesign.bradfrost.com/">Brad Frost’s Atomic Design</a>.</p><h4>Encourage contribution to the design system</h4><p>People want to do more than just join; they want to contribute. The contribution comes in multiple forms other than designing and coding, but also through words of mouth, such as hackathons, conferences, blog posts, and meet-ups. This promotes our design system to the rest of the globe and creates an alliance of developer advocates who will represent and sponsor your company’s design system.</p><h3>Documentation — a tool for easy adoption</h3><p>It isn’t a design system if no one adopts it! The design system’s advocates must communicate the benefits of their work to colleagues and ensure their help during the adoption stage. Creating an excellent style guide is one of the best ways to accomplish this. Documentation promotes adoption in several ways. Providing a clear reference for someone who has just started with the design system is one example. It can be treated as a single source to put all the set-up guidelines and resources, eliminating ambiguity or the need to look in multiple places and get confused about which rules to adhere to.</p><p>In addition, documentation should answer any “Why” and “How” questions, which will undoubtedly dispel a developer’s or designer’s uncertainties. Questions such as how to use a specific component, when and where to use it, and which color guidelines to follow. All of these questions should be addressed in the documentation. If all of this is in place, the team will find it much easier to implement the design system.</p><p>We can take some inspiration from the <a href="https://backlight.dev/mastery/the-best-design-system-documentation-sites">best design system documentation sites</a>.</p><p>Because design systems are constantly developing, skilled governance is required to ensure long-term viability. Including a contribution and governance approach in our style guide can be very helpful. And codifying these can allow it to expand organically without breaking, which relieves the design system team of pressure.</p><p>Having documentation doesn’t guarantee a successful design system, but having it can offer numerous advantages for establishing a lasting design legacy.</p><p>To dig deeper, check out this blog post on <a href="https://backlight.dev/blog/design-system-documentation-best-practices">design system documentation best practices</a>, written by <a href="https://twitter.com/divriots">Thais Santos</a>, Design Lead at <a href="https://twitter.com/divriots">DivRiots</a>.</p><h3>Consistent advocacy is the key</h3><p>The main issue of design systems is adoption. To get others to embrace your design system means the need for regular updates, especially as the team evolves. That is to say, if you want a design system to have a long-term impact, you need to consistently advocate for it.</p><p><em>Originally published at </em><a href="https://backlight.dev/blog/design-system-documentation-best-practices"><em>https://backlight.dev</em></a><em> by </em><a href="https://twitter.com/soniasinglas">@soniasinglas</a> <em>on May 24th, 2022. </em><a href="https://backlight.dev/"><em>Backlight</em></a><em> is a collaborative platform to ship design systems on the dev side.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c5ba067d11c2" width="1" height="1" alt=""><hr><p><a href="https://uxplanet.org/advocating-for-your-design-system-c5ba067d11c2">Advocating for your design system</a> was originally published in <a href="https://uxplanet.org/">UX Planet</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[5 Reasons to use web components in your design system]]></title>
            <link>https://levelup.gitconnected.com/5-reasons-to-use-web-components-in-your-design-system-bff59d066cbf?source=rss-314fe9cc699d------2</link>
            <guid isPermaLink="false">https://medium.com/p/bff59d066cbf</guid>
            <category><![CDATA[javascript-frameworks]]></category>
            <category><![CDATA[encapsulation]]></category>
            <category><![CDATA[design-systems]]></category>
            <category><![CDATA[a11y]]></category>
            <category><![CDATA[web-components]]></category>
            <dc:creator><![CDATA[Backlight]]></dc:creator>
            <pubDate>Tue, 14 Jun 2022 11:57:56 GMT</pubDate>
            <atom:updated>2022-06-14T11:57:56.477Z</atom:updated>
            <content:encoded><![CDATA[<p>Discover why web components are a good choice to build a design system</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*l_sx1DJ3bGtuzdYj.jpg" /></figure><p>The big question is: <a href="https://arewebcomponentsathingyet.com/">why are these IT powerhouses focused on web components</a>? Are they really so important? During the last decade, the use of web components has skyrocketed, and they have become one of the most popular new web platform technologies. Web components prove to be quite valuable in a wide range of applications.</p><h3>Why build a design system using web components?</h3><p>Web components are interchangeable between frameworks and libraries because of their compatibility with a variety of tech stacks. They offer cross-platform development and ensure brand consistency. Web components allow us to break up a complex web app into reusable pieces that will reliably look and function the same, regardless of what they share a page with. They offer a consistent approach to interfacing with them via their attributes, and they are mainly focused on doing one thing well. Another advantage of web components is that when built on top of browser APIs/standards rather than frameworks, the JavaScript footprint of the design system is way lighter, which is key for site performance.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Baay2TKvcjSZXbetKJrhFg.png" /></figure><h4>Easy to customize and standardize styles</h4><p>One of the primary characteristics of web components is the ability to create customized pieces that may be adjusted and incorporated into the <a href="https://backlight.dev/mastery/what-is-a-design-system">design system</a>. Any design can be stylized and customized with web components. We can build a customizable UI component library using HTML/CSS/JS to meet brand standards.</p><h4>Supported by modern browsers</h4><p>All evergreen browsers, Chrome, Opera, Safari, Firefox, and Edge, support web component standards. It implies that the APIs Custom Elements, HTML Templates, Shadow DOM and ES Modules are fully functional and provide full support with these browsers. It makes developers’ and designers’ lives easier since they can write on top of customizable HTML tags without worrying about the frameworks and libraries.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*yAQDPiTW57lITDNh.png" /></figure><h4>Framework-independent</h4><p>In big companies, different teams contribute towards various areas of a project. These teams are primarily independent, which means that they build the applications using their own tools and frameworks. However, as a business, you would want to ensure that the user experience is consistent throughout the product, regardless of what each team decides to work with. It is advisable to create a library of web components, independent of any framework. In doing so, these components can be used interchangeably by the teams regardless of the framework they are using.</p><p>However, there are caveats to using web components with some frameworks like React and Angular. The main problem while using React is React’s inability to bind the custom events from web components and its inability to pass rich data due to the lack of property binding into custom elements. The Angular framework, on the other hand, is reliant on its own web component library, which leads to plenty of issues when it comes to importing and configuring packages.</p><h4>Accessibility</h4><p>Web components can be made accessible. For a web component to be interactive, e.g. any UI control, it should be keyboard focusable. <a href="https://www.w3.org/TR/wai-aria-practices/">WAI-ARIA Authoring Practices</a> can help with this. The states of interactive controls include focus, hover, and active. They should all be easily visible and ideally, each has a distinct look.</p><p>The page when controlled by assistive technology helps users interact with web components using a keyboard, mouse, etc.</p><p>Another way to make custom elements more accessible is by using the proper aria attributes; all we have to do is follow the WAI-ARIA definitions. Let’s take a look at an example, an accessible slider component built using a web component:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*FdDSppCSC84OME-9.png" /></figure><p>Accessible slider component built with web component</p><p>It’s not always the case that Shadow DOM will help in achieving accessibility, sometimes it can make things harder.</p><p>ARIA references through properties like aria-describedby and aria-labelledby have a value that represents the id of the element they describe or label. If there is a shadow boundary between the id and the element that references it through aria- , the reference is essentially broken and does not work. To work around that, you could project the element into the Light DOM instead, by using slots for example.</p><p>Another example is &lt;form&gt; and custom input elements. If there is a shadow boundary between the native form and the native input element that the custom element is wrapping, the input will not participate in the form. <a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/attachInternals">Form Participation API</a> is meant to solve this problem but has not been shipped by Firefox and Safari yet. For now, this can be solved in a similar manner as the previous issue, by projecting the native inputs into Light DOM.</p><blockquote><em>💡 Take a look at </em><a href="https://backlight.dev/blog/5-reasons-to-use-web-components-in-your-design-system"><em>all the ways to make a web component</em></a><em>.</em></blockquote><h4>Encapsulation</h4><p>All of the encapsulation of styles is provided by the Shadow DOM. It separates your components from the rest of your document by giving them their own DOM. This means that global styles (excluding CSS custom properties/variables and inherited styles) have no effect on it, and its own styles have no effect on other elements in the parent document. We won’t have to worry about CSS leaks or naming conventions anymore because the HTML and CSS code inside a shadow DOM isn’t visible to the main DOM. Exceptions are:</p><ul><li><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/--*">CSS Custom Properties</a></li><li><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/inheritance#inherited_properties">Inherited styles</a></li><li><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/::part">::part (shadow parts)</a></li></ul><p>Shadow DOM has the opposite purpose of global stylesheets. If we are creating a reusable component that needs to use a global stylesheet like Tailwind or Bootstrap, we can turn Shadow DOM off. Though, with encapsulation, the developer has complete control over the API and which features are made available to its users. With Shadow DOM, developers can also open up DOM nodes to styling from outside by exposing them as <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/::part">shadow parts</a>.</p><h4>Conclusion</h4><p>Web components offer more than the features mentioned above. They are production-ready, as companies like GitHub are using open source web components. You can read more <a href="https://github.blog/2021-05-04-how-we-use-web-components-at-github/">here</a>.</p><p>Writing accessible components from scratch is costly and not all companies can afford to do it. Thanks to web components, we can incorporate existing open source component libraries into our <a href="https://backlight.dev/mastery/what-is-a-design-system">design system</a>, or build our own using a white label-based layer like <a href="https://lion-web.netlify.app/">Lion</a>. Here’s a curated selection of the <a href="https://backlight.dev/mastery/best-open-source-component-libraries-for-your-design-system">most important open source component libraries</a> that you can use as a foundation for your <a href="https://backlight.dev/mastery/what-is-a-design-system">design system</a>. Also, check out <a href="https://backlight.dev/mastery/why-you-should-use-open-source-component-libraries-in-your-design-system">why you should use open source component libraries in your design system</a>.</p><p><em>Originally published at </em><a href="https://backlight.dev/blog/design-system-documentation-best-practices"><em>https://backlight.dev</em></a><em> by </em><a href="https://twitter.com/soniasinglas">@soniasinglas</a> and <a href="https://twitter.com/jorenbroekema">@jorenbroekema</a> <em>on May 19th, 2022. </em><a href="https://backlight.dev/"><em>Backlight</em></a><em> is a collaborative platform to ship design systems on the dev side.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=bff59d066cbf" width="1" height="1" alt=""><hr><p><a href="https://levelup.gitconnected.com/5-reasons-to-use-web-components-in-your-design-system-bff59d066cbf">5 Reasons to use web components in your design system</a> was originally published in <a href="https://levelup.gitconnected.com/">Level Up Coding</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Why you should document Design System animation]]></title>
            <link>https://uxplanet.org/why-you-should-document-design-system-animation-81c2bdd6ba0a?source=rss-314fe9cc699d------2</link>
            <guid isPermaLink="false">https://medium.com/p/81c2bdd6ba0a</guid>
            <category><![CDATA[animation]]></category>
            <category><![CDATA[token-design]]></category>
            <category><![CDATA[design-systems]]></category>
            <category><![CDATA[user-experience]]></category>
            <dc:creator><![CDATA[Backlight]]></dc:creator>
            <pubDate>Wed, 08 Jun 2022 22:14:28 GMT</pubDate>
            <atom:updated>2022-06-08T22:14:28.331Z</atom:updated>
            <content:encoded><![CDATA[<h4>Discover the benefits of building and documenting animation in design systems</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*6OuqxFXo_1aZGlUK.png" /></figure><h3>Animation in Design Systems</h3><p>Have you ever wondered why users dislike static objects? Motion, we believe, always draws the user’s attention. We can detect movement outside the center of our view range when reading a book. However, this means that we are sensitive to motion and are easily distracted by it. Nowadays, animation in <a href="https://backlight.dev/mastery/what-is-a-design-system">design systems</a> has been a hot topic for debate.</p><p>Animation has become the building block for usability among UX and UI designers due to its potential to impress people. Although there are many developers and designers who believe that animation is an unwanted feature that overburdens and complicates the user interface, others believe that it is a vital part of user interaction.</p><p>Let’s look at what motion does in design, what it brings to the table, when and when not to use, and the various aspects of documenting animation.</p><h3>What Motion Does in Design</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/720/0*q5Zaa0kaUwxzDcF5.gif" /></figure><p>In an era with low user attention levels, visuals in the form of animations can successfully seize a user’s interest. Animation offers a convincing experience that no other form of content can match. Animation is a game-changer in delivering a clear picture of a brand’s value, raising user retention, providing feedback, building relationships with the product, and reaching a passive audience.</p><p>We’ve always thought of animations as a filler that doesn’t play a big part, but we’ve never considered its strength. Using motion in UI design goes beyond just adding visual interest.</p><h3>🦄 Brand Expression</h3><p>Colors, logos, and catchy taglines are the first things that come to mind when considering the aspects that define a brand. On the other hand, Motion has the same ability to become a distinguishing feature of a brand and its connected experiences. It is the most powerful medium to build the user’s trust. A well-thought-out explainer animation will assist you in emphasizing why a customer should choose your product or service. Animations must have the depth to drive your audience’s behaviour.</p><h4>💡 Providing Feedback</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/0*MZvTHEBDYltAVhNz.gif" /></figure><p>When used effectively, motion provides essential input at crucial times in a user’s journey. This could include indicating their next steps and conveying whether or not an action was successful. With this feedback, users can work more efficiently, accomplish tasks, and find the information they need. The animation of a navigation menu moving across the page when a hamburger icon is tapped is a typical example. Because our visual systems are sensitive to movement, a brief animation helps ensure that users perceive the feedback.</p><h4>🎖 User’s Retention</h4><p>We are continuously bombarded with new information on the web, which is a fast-paced environment. As attention spans get shorter, the number of distractions grows. At that moment, motion stands out to be a fantastic technique for capturing user attention within interactive experiences.</p><h4>✌ Build Relationships</h4><p>Users can better develop mental maps to understand spatial links between content by using intelligent and consistent motion patterns, allowing them to navigate with ease. Animation can be handy when we have a complex UI as it can help the user to navigate to the content for which they are looking.</p><p>In UI design, motion serves more than just practical purposes. It can also be used to generate those tiny magical moments that thrill consumers and boost their affection for the apps, goods, and services they use most frequently. Animation makes the system more engaging and builds a strong emotional bond with the user.</p><h3>📝 Documenting Animation</h3><p>Documentation is undoubtedly one of the pillars of any <a href="https://backlight.dev/mastery/what-is-a-design-system">design system</a>, but there is no proper way to standardize the animations in terms of how they should be developed, delivered, and maintained further. But adopting some of the best practices will definitely help the design, engineering, and product team. Having animations documented is not separate but crucial for the internal team members to get them on board and follow best practices.</p><p>The initial step towards documentation involves:</p><ul><li>Defining Token: <a href="https://backlight.dev/mastery/design-tokens">Design Tokens</a> are the brand’s foundation, offering consistency and scalability to the whole system. Velocity, Trigger, Easing, Attributes are the key features that need to be documented while defining tokens.</li><li>Building Fundamental Animation: There should be proper guidelines around building basic animations and patterns such as mouse-hover, zoom, parallax, … benefiting both the dev and design teams.</li><li>Designing Brand Definition: well-written documentation is helpful for designers and developers to find out the vision of the brand.</li></ul><blockquote><em>You can take references from the Material Design by Google 🔖</em></blockquote><p>When multiple people collaborate on a working project with different users in mind, it is easy to slip into the trap of outdated information. The aim of defining the fundamentals is to maintain consistency and easier system-wide reach. By defining some basic animation, other team members can get into the mentality that has been established as the project progresses. Everyone agrees on what to use when to use it, and how to use it.</p><h3>Animation: When and When Not to Use</h3><h4>🤔 Is It Required?</h4><p>The animation must serve a purpose. The good use of animation is always appreciated as it not only helps the user to navigate well but also to connect and indulge. Adding motion to your UI solely for the sake of aesthetics can be harmful. It creates confusion and effect on what a developer or designer aims to achieve for their app/website. However, instead of focusing solely on adding animation, we should consider the bigger picture, as it may impact our whole user experience.</p><h4>⚖️ Right Balance</h4><p>The animation must adhere to the key requirements to serve its purpose right. The four fundamental characteristics that can utilize the token hosting involves <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/animation-duration">Duration</a>, <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/animation-delay">Delay</a>, <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/animation-timing-function">Timing function</a> and <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/animation-direction">Direction</a>. The <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/animation">MDN docs</a> are a good resource to learn that. Depending upon the importance of the process, and what the animation is for, the sub-properties should be decided.</p><p>For example: As per <a href="https://valhead.com/2016/05/05/how-fast-should-your-ui-animations-be/">studies</a>, a great UI animation should last between 200 to 500 ms. The duration of animation for the whole screen should be a bit longer as compared to click and hover animation.</p><h4>👩🏻‍💻 Adhere to User Expectations</h4><p>The majority of consumers have a preconceived notion of how things should work based on their previous experiences. They anticipate things to function in a specific way. As already described before, the animation should be simple, and it should become more simpler as users see it more often. It must also serve its purpose, and grab the user’s attention.</p><blockquote>Did you know ? <a href="https://backlight.dev/">Backlight</a>, is an all-in-one design system tool on the code side, offering features such as real-time preview environment, built-in documentation support, visual feedback, and much more. It comes with a number of starter-kits to help you jump into your design journey at no cost 💸 Isn’t it amazing? 😉</blockquote><p><em>Originally published at </em><a href="https://backlight.dev/blog/design-system-documentation-best-practices"><em>https://backlight.dev</em></a><em> by </em><a href="https://twitter.com/soniasinglas">@soniasinglas</a> <em>on May 5th, 2022. </em><a href="https://backlight.dev/"><em>Backlight</em></a><em> is a collaborative platform to ship design systems on the dev side.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=81c2bdd6ba0a" width="1" height="1" alt=""><hr><p><a href="https://uxplanet.org/why-you-should-document-design-system-animation-81c2bdd6ba0a">Why you should document Design System animation</a> was originally published in <a href="https://uxplanet.org/">UX Planet</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Governance in Design System]]></title>
            <link>https://medium.com/@backlight_dev/governance-in-design-system-5d4e5e189eee?source=rss-314fe9cc699d------2</link>
            <guid isPermaLink="false">https://medium.com/p/5d4e5e189eee</guid>
            <category><![CDATA[documentation]]></category>
            <category><![CDATA[team-communication]]></category>
            <category><![CDATA[governance]]></category>
            <category><![CDATA[design-systems]]></category>
            <dc:creator><![CDATA[Backlight]]></dc:creator>
            <pubDate>Thu, 02 Jun 2022 07:38:20 GMT</pubDate>
            <atom:updated>2022-06-02T07:38:20.238Z</atom:updated>
            <content:encoded><![CDATA[<h4>How to build a reliable design system with governance</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*PRtaH3eyU4Bh8UrN.jpg" /></figure><p>Everything in today’s world is constantly evolving, including the design system. But are we absolutely sure that our design system is adaptable enough to handle new changes, reliable enough to face new problems, and scalable enough to accommodate further modifications? Because of all of these questions, the topic of <em>Governing our Design System</em> has gotten a lot of attention. Nevertheless, some people believe that design system governance is a barrier to rapid growth and scalability. However, the majority agrees that it boosts scalability and creativity if executed correctly with consistency.</p><p>This article will take you from the challenges that a design system faces to how design system governance can help you overcome them.</p><h3>Challenges</h3><h4><strong>Poor Communication and Weak Documentation</strong></h4><p>Communication is the glue that holds the <a href="https://backlight.dev/mastery/what-is-a-design-system">design system</a> together; however, effective communication between different departments has become a major issue for the company to address. Before investing our time and efforts into writing a design system, we need to know and understand the organization’s pain points and how can we blend them using the design system. Discuss what their needs and expectations are. It will help avoid roadblocks in the workflow.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/407/0*ovJwLkcjFH4Gy74y.png" /></figure><p>Since communication can lead to the loss of important aspects, document the meeting notes. When communicating and documenting the vision, it’s important to be clear about the organization’s goals. To make your design system serve the needs of multiple product teams, outline the main design principles.</p><blockquote><a href="https://backlight.dev/"><em>Backlight</em></a><em> takes care of your documentation headache by providing support for various documentation frameworks such as </em><a href="https://backlight.dev/mastery/how-to-write-your-design-system-documentation-with-mdx-and-react"><em>MDX</em></a><em>, </em><a href="https://rocket.modern-web.dev/docs/eleventy-plugins/mdjs-unified/"><em>mdjs</em></a><em>, and even </em><a href="https://astro.build/"><em>Astro</em></a><em>.</em></blockquote><h4>Different Individuals, Different Mindsets</h4><p>A design system’s full potential is often hindered by internal disputes. Sometimes, developers or designers often use their own version of tokens and components. This hesitancy can harm the product’s use and consistency and cause unnecessary disputes. Rather than following one’s intuition, follow the vision and standards set by the organization. A well-designed governance plan should be followed to restrict this behavior. It brings value to the product in the longer term.</p><blockquote><em>While </em><a href="https://backlight.dev/"><em>Backlight</em></a><em> is a code-centric tool, designers love using it too. Figma plugin helps designers generate UI kits and maintain libraries when the code changes.</em></blockquote><h4>Scattered Toolkits</h4><p>For a good design system, there should be a single source of truth that everyone can refer to, whether from the design team, engineering team, or the product team. Maintaining a single source is quite challenging. Also, avoid using overly complicated design system components. It should be easy to use each design system component to build more complex blocks. It will allow the system to scale. A design system is more than just coding. It facilitates the communication between cross-product trio: design, engineering, and product management.</p><blockquote><a href="https://backlight.dev/"><em>Backlight</em></a><em> includes several starter kits to help you get started with your design system at a lesser cost.</em></blockquote><h3>Establishing Design System Governance Standards</h3><p>How do you define design system governance standards? How do we know we are on the right track in developing and designing? Designers rely on their own set of principles when it comes to evaluating the quality of design. But as the team expands, it becomes cluttered and difficult to accommodate different people with their own unique approaches and ideas. This is when the design system governance standards come to the rescue.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/576/0*DRCtCZa8ELO7nYJy.png" /></figure><p>A successful design system is reusable to a large extent. Every team faces the same problem — creating components focused on a single-use case. It forces the designers and developers to develop and write new components every time. Build components that are not limited to single-use cases but can be tweaked and extended to work in various situations. Avoid having dependencies. Consider how a new component will work across multiple platforms.</p><p>Another important standard that needs to be counted is accessibility. Having accessibility in design pattern directly accelerate the growth of the product. You can read more about <a href="https://backlight.dev/blog/the-importance-of-accessibility-in-design-systems"><em>the importance of accessibility in design systems</em></a> by <a href="https://twitter.com/th4is_ds">Thais</a>, Design Lead at <a href="https://divriots.com/">DivRiots</a>.</p><p>Also, there is a massive need for people who can provide honest reviews around the product design, and scheduling brain trust meetings can be very helpful. It offers people the freedom to be innovative by removing authority from brain trust meetings. As the design system evolves, we need a well-defined process to manage the contribution workflows. The system should be open, collaborative, and simple to use.</p><h3>Documentation and Communication</h3><p>Documentation and Communication are the two primary pillars of a well-designed system. Having roadmaps, meeting notes, and well-written scripts for the design system’s components and tokens helps accelerate the product growth. They provide a variety of functions for both the team and the stakeholders. They assist a team in planning and prioritizing the product’s subsequent rollouts.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/534/0*BzJDzCkQ5cYDy5Wn.png" /></figure><p>Well-curated roadmaps improve communication and collaboration among teams and departments as they can benefit every product release. It’s a strategic plan in timeline format for team members to visualize each initiative and milestone, thus creating transparency and managing expectations. During meetings, writing critical information can help significantly to get better outcomes. Make sure to have an agenda before scheduling meetings.</p><p>Incorporating the contribution and governance model into your design system, documentation acts as a defence against a scattered product. For a beginner, component design and coding might be a subject of concern. And it can be difficult for someone to use an already built component if there is no proper documentation available to guide. Well-written documentation can help and give a head start to new members. A style guide allows you to tie everything together and develop an understanding of component usage and purpose.</p><h3>Backlight: all-in-one design system solution</h3><p>The purpose of design system governance is to gather all the required parts and build solutions that are consistent across the entire product. Design system teams have a lot on their plate, whether it’s designing and producing assets or writing documentation. It would be difficult to collect, prioritize, and act on comments and new ideas if there was no governance mechanism in place.</p><p><em>Want to speed up your design process?</em> 🤫</p><p><a href="https://backlight.dev/">Backlight</a> empowers front-end teams to build and ship great design systems. A unique, all-in-one design system solution. For developers, loved by designers.</p><p><a href="https://backlight.dev/">Backlight</a> bridges the gap between design and code by establishing a single source of truth, ensuring that designers and engineers always use the same tools.</p><p><a href="https://backlight.dev/">Backlight</a> embraces collaboration across all disciplines. Forget tickets and manual updates. A visually-organized component library, instant sharing, and live documentation mean anyone can contribute to your design system.</p><p><em>Originally published at </em><a href="https://backlight.dev/blog/design-system-documentation-best-practices"><em>https://backlight.dev</em></a><em> by </em><a href="https://twitter.com/soniasinglas">@soniasinglas</a> <em>on May 3rd, 2022. </em><a href="https://backlight.dev/"><em>Backlight</em></a><em> is a collaborative platform to ship design systems on the dev side.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5d4e5e189eee" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Best practices for integrating content design in your design system]]></title>
            <link>https://uxplanet.org/best-practices-for-integrating-content-design-in-your-design-system-908981938053?source=rss-314fe9cc699d------2</link>
            <guid isPermaLink="false">https://medium.com/p/908981938053</guid>
            <category><![CDATA[content-design]]></category>
            <category><![CDATA[ux-writing]]></category>
            <category><![CDATA[design-systems]]></category>
            <category><![CDATA[frontend]]></category>
            <dc:creator><![CDATA[Backlight]]></dc:creator>
            <pubDate>Mon, 30 May 2022 07:50:30 GMT</pubDate>
            <atom:updated>2022-05-30T07:50:30.724Z</atom:updated>
            <content:encoded><![CDATA[<h4>How to enrich your design system with content design</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*zOPND-q8Qj16jBtD.jpg" /></figure><p>Lastlty, I published <a href="https://backlight.dev/blog/why-your-design-system-needs-content-design">why your design system needs content design</a>. It’s now time to follow-up with <em>how</em> to include content design in your design system. While there are <a href="https://backlight.dev/blog/design-system-documentation-best-practices">general best practices for documenting a design system</a>, in this post we’ll focus on those specific to content design documentation. Whether you’re starting from scratch, or already have some guidelines in place, these best practices can help make sure <a href="https://backlight.dev/mastery/content-design">content design</a> is fully integrated in your design system documentation.</p><h4>Document a component’s content and design guidelines together</h4><p>Many companies already have some sort of content guidelines as a part of their brand book or style guide. While it’s tempting to just add a link to these somewhere in your design system and call it a day, this isn’t enough to integrate content design effectively.</p><p>A next step might be to create a specific section for content design, and group all guidelines here. While it’s better than just adding a link, it still creates a division between “content” and everything else. It suggests that content is just a nice-to-have bonus, as opposed to a core element to designing experiences. A separate content design section can be useful for very general guidelines that apply to all writing throughout a product. However, it is not the place to reference guidelines specific to a component or pattern.</p><p>So, what’s the best way? Content design impacts a user’s experience just as much as visual, functional, and technical design. Content guidelines should be incorporated right where users are most likely to see and follow them. They should be embedded within the documentation of a component, in the same way visual design conventions are.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/973/0*2o18C9xX1xepTzpv.png" /></figure><h4>Use realistic copy examples in components</h4><p>It’s tempting to use placeholder copy (such as lorem ipsum), or instructional copy (like “insert label here”) in documentation and component previews. However, this only creates a missed opportunity to really show what good content design looks like. Using realistic copy helps design system users to understand the context in which a component or pattern could be used, as well as indicating proper content formatting (e.g.: length, sentence case, grammar, etc.).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*-X5AMMhz-x0k6hCN.png" /></figure><h4>Guidelines should be specific, focused, and useful</h4><p>Is there a rule that <em>must</em> be followed? Distinguish it from the recommendations. Is there a given format or structure for the copy of a particular component? Clearly outline it. Is there a specific call-to-action to use in a button for a given scenario? Indicate it (ideally in the button’s documentation).</p><p>The more precise and contextualized content guidelines are, the more useful they will be.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*0VaCsARlMOKc1pYj.png" /></figure><h4>Create a clear list of DO’s and DONT’s</h4><p>A UX writer or content designer might find the guideline “<em>Use sentence case</em>” to be enough to follow the rule. But we need to keep in mind that most design system users are not UX writers, and may not know how to follow this guideline. Examples are a MUST! For every guideline, it’s always best to illustrate it with a clear “Do” and “Don’t”. The more “Do” and “Don’t” examples presented, the easier it will be to follow. If we take our example above, the full guideline could look something like this:</p><p><em>Always follow sentence case for all titles, subtitles, and paragraph text.</em></p><p>DON’T ❌ : “Account Log-In” or “Design System Best Practices”</p><p>DO ✅ : “Account log-in” or “Design system best practices”</p><h4>Start small and build progressively</h4><p>Build on your content design guidelines as your team needs them. Not every product requires a design system as complete or advanced as <a href="https://polaris.shopify.com/">Polaris</a>, for example. While tools like <a href="https://backlight.dev/">Backlight</a> can greatly speed up the process and collaboration involved in building a design system, these still require time and resources. Don’t waste them adding guidelines and documentation that nobody will ever use or read. Start with the basic rules and guidelines you see most repeatedly in your product and go from there.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*w8czHIUhX06cBNFm.png" /></figure><h4>Consider inclusivity and accessibility</h4><p><a href="https://backlight.dev/blog/the-importance-of-accessibility-in-design-systems">Accessibility</a> is something that should be embedded from the start when designing and building components. It should be for content, too. If you’re just starting out crafting the content design guidelines in your design system, it’s a great opportunity to consider accessibility and inclusiveness right from the beginning. If you already have existing content guidelines in your design system, start asking yourself how they can account for inclusivity and accessibility. What words should <em>not</em> be used? What words <em>should</em> be used instead? How can the guidelines help create content that’s anti-racist, inclusive of all genders, and anti-ableist, for example? When creating inclusive and accessible content guidelines the most important part of the process is to include, and get feedback from, the very communities you want to serve.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*UYzLg8-ZMkqrbOzs.png" /></figure><h4>Get inspired by existing design systems</h4><p>There’s no need to reinvent the wheel with all the amazing design systems to get inspired from. Here are a few companies who have done a great job at incorporating content design into their design systems:</p><p><a href="https://polaris.shopify.com/"><strong>Shopify’s Polaris</strong></a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*rhoobWkxxKIVKjhD.jpg" /></figure><p>One of the most advanced and complete design systems, and often considered a pioneer in the content design space.</p><p><a href="https://orbit.kiwi/"><strong>Kiwi’s Orbit</strong></a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*zWg5S0dWYs0kjKl4.jpg" /></figure><p>Orbit has some good examples for outlining a component’s content structure.</p><p><a href="https://spectrum.adobe.com/"><strong>Adobe’s Spectrum</strong></a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*1_hL52o0vye4tHCe.jpg" /></figure><p>Adobe uses realistic copy in almost all of their component previews.</p><p><a href="https://atlassian.design/"><strong>Atlassian Design System</strong></a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*yQBEwj5rq0SFO1lN.jpg" /></figure><p>Atlassian has an extensive section on inclusive language, with specific Do’s and Don’ts for writing inclusively.</p><p><a href="https://design-system.service.gov.uk/"><strong>GOV.UK Design System</strong></a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*7FvHy0XHo5bjeVHi.jpg" /></figure><p>One of the most thorough in documenting content guidelines for each component, specifying exact copy to use when required.</p><p>For even more inspiration, check out a list of <a href="https://backlight.dev/mastery/the-best-design-system-documentation-sites">favorite design system documentation sites</a>.</p><h4>What best practices would you add?</h4><p>Integrating content design into your design system isn’t always an easy path. It requires strong collaboration and team effort to do it right. However, following these best practices will hopefully reinforce that content is an integral part of a component or pattern. They will show non UX writers what good content looks like, and help the whole team to avoid errors and inconsistencies.</p><p><em>Originally published at </em><a href="https://backlight.dev/blog/best-practices-for-integrating-content-design-in-your-design-system"><em>https://backlight.dev</em></a><em> by </em><a href="https://www.linkedin.com/in/ardenagflahavin/"><em>Ardena</em></a><em> on April 28, 2022.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=908981938053" width="1" height="1" alt=""><hr><p><a href="https://uxplanet.org/best-practices-for-integrating-content-design-in-your-design-system-908981938053">Best practices for integrating content design in your design system</a> was originally published in <a href="https://uxplanet.org/">UX Planet</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>