<?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" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Design Tools - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Browse thousands of programming tutorials written by experts. Learn Web Development, Data Science, DevOps, Security, and get developer career advice. ]]>
        </description>
        <link>https://www.freecodecamp.org/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Design Tools - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Tue, 23 Jun 2026 21:16:10 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/design-tools/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ What is Figma? A Design Crash Course ]]>
                </title>
                <description>
                    <![CDATA[ Figma is a powerful design tool that helps you to create anything: websites, applications, logos, and much more. By learning to use Figma, you'll take your first steps into User Interface Design and and User Experience Design. These skills are essent... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/figma-crash-course/</link>
                <guid isPermaLink="false">66be016a2c7c89a851b37647</guid>
                
                    <category>
                        <![CDATA[ Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Design Tools ]]>
                    </category>
                
                    <category>
                        <![CDATA[ figma ]]>
                    </category>
                
                    <category>
                        <![CDATA[ User Interface ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Design ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Adrian Twarog ]]>
                </dc:creator>
                <pubDate>Mon, 21 Jun 2021 17:52:21 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/06/figma-crash-course-freecodecamp.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Figma is a powerful design tool that helps you to create anything: websites, applications, logos, and much more.</p>
<p>By learning to use Figma, you'll take your first steps into User Interface Design and and User Experience Design. These skills are essential for building a great portfolio for yourself and potentially for your own company.</p>
<p>In this Figma Crash Course, I will use a real project website from Frontend Mentor which we will recreate in Figma. Learning by building a project is a great way to solidify your knowledge, so I recommend downloading the assets and following along.</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/lg7w3Ntfqy0" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>
<p> </p>
<p>I'll break this crash course into a bunch of parts as we explore different features of Figma including:</p>
<ul>
<li><p>Account setup</p>
</li>
<li><p>Design file</p>
</li>
<li><p>Design assets</p>
</li>
<li><p>How to get started – the basics</p>
</li>
<li><p>Frames</p>
</li>
<li><p>Grid columns and rows</p>
</li>
<li><p>Shapes</p>
</li>
<li><p>Import images</p>
</li>
<li><p>Labelling and grouping</p>
</li>
<li><p>Text</p>
</li>
<li><p>Navigation bar</p>
</li>
<li><p>Button design</p>
</li>
<li><p>Header title and scaling</p>
</li>
<li><p>Additional text settings</p>
</li>
<li><p>Hero section and Figma layers</p>
</li>
<li><p>Groups and sections</p>
</li>
<li><p>Fonts and Figma colors</p>
</li>
<li><p>Text line height and spacing</p>
</li>
<li><p>Alignment and snapping</p>
</li>
<li><p>Masking with shapes and images</p>
</li>
<li><p>Copying groups and sections</p>
</li>
<li><p>Updating sections</p>
</li>
<li><p>Color picker and copying sections continued</p>
</li>
<li><p>Color selecting and picking correct hue</p>
</li>
<li><p>Testimonial section</p>
</li>
<li><p>Autolayout</p>
</li>
<li><p>Autolayout options</p>
</li>
<li><p>Autolayout alignment</p>
</li>
<li><p>Autolayout content</p>
</li>
<li><p>Gallery images</p>
</li>
<li><p>Resizing images</p>
</li>
<li><p>Footer</p>
</li>
<li><p>SVG color and overlay edits</p>
</li>
<li><p>Auto layout menu footer</p>
</li>
<li><p>Layers toolbar, hide and lock</p>
</li>
<li><p>Prototype viewer</p>
</li>
<li><p>Frames and pages</p>
</li>
<li><p>Prototype interactions</p>
</li>
<li><p>Prototype interaction navigation to page</p>
</li>
<li><p>Share test and preview prototypes</p>
</li>
<li><p>Export pages</p>
</li>
<li><p>Export groups or sections</p>
</li>
</ul>
<p>In this article, I'll give you a brief overview of some of the main parts of the course so you can get started designing in Figma.</p>
<h2 id="heading-introduction">Introduction</h2>
<p>Let's begin by creating an account on the Figma Website. You can do this here: <a target="_blank" href="https://figma.com">Figma.com</a>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/06/figma1.gif" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Just sign up with a new account (email or Google sign in) – it's completely free</p>
<p>Next we need to get the design assets to use for this project, which we'll grab from Frontend Mentor. You can download them here:</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.frontendmentor.io/solutions/sunnyside-agency-landing-page-mVy7o6ijV">https://www.frontendmentor.io/solutions/sunnyside-agency-landing-page-mVy7o6ijV</a></div>
<p> </p>
<p>We are going to build our first draft page. Take a look at the default design layout we will be working with below. Select the + sign, or on the right hand side create a new design page.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/06/figma2.gif" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-how-to-make-a-frame-in-figma">How to Make a Frame in Figma</h2>
<p>First we will create a frame. This is the same as a page, and it's where our design will live. You can size a frame however you want depending on your requirements.</p>
<p>This example will be a website, so we will select the Desktop Frame – but you can also create mobile application frames, or even custom frames.</p>
<ul>
<li><p>Select the Frame tool from the top menu</p>
</li>
<li><p>Select the Frame size on the right panel</p>
</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/06/figma3.gif" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-how-to-add-grids-and-columns-in-figma">How to Add Grids and Columns in Figma</h2>
<p>Before we start with the design, you will want to add grids that help you keep the alignment of content for your page consistent.</p>
<p>You can add grids to a frame and customise them. For example, I often prefer 12 grids as this is the default for website development.</p>
<ul>
<li><p>Select the frame you wish to grid</p>
</li>
<li><p>Select Layout Grid on the right panel</p>
</li>
<li><p>Select Columns and 12 units</p>
</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/06/figma4.gif" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-how-to-use-shapes-in-figma">How to Use Shapes in Figma</h2>
<p>Use the shapes and elements in Figma to create squares, circles, lines, and more. These are the fundamentals for creating a design on a page.</p>
<p>I'll start with a simple rectangle which we will use to create our hero navigation section for the top part of this home page.</p>
<ul>
<li><p>Select Square Shape tool</p>
</li>
<li><p>Create a square</p>
</li>
<li><p>Begin to shape and size it</p>
</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/06/figma5.gif" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-how-to-add-images-in-figma">How to Add Images in Figma</h2>
<p>You can add images from an online source or locally to your page. Images are an important part of designing a website, especially for the hero section.</p>
<p>Let's add a logo as our first image which we will add to the top left of the screen.</p>
<ul>
<li><p>Drag and drop an image from you local computer</p>
</li>
<li><p>Import an image from the shapes image upload option</p>
</li>
<li><p>Resize and place the image on the design</p>
</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/06/figma6.gif" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-how-to-add-text-to-a-design-in-figma">How to Add Text to a Design in Figma</h2>
<p>To add text to a design, select the text tool and place it on the page. The font will default to Roboto, but you can change the font family, size, and color at any stage.</p>
<p>In this example we will use right panel to change the color and size of the font, and later the font family as well.</p>
<ul>
<li><p>Select the Text tool</p>
</li>
<li><p>Add "About" text as the start of the navigation</p>
</li>
<li><p>Ensure the size and color are 24 and white</p>
</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/06/figma7.gif" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-how-to-label-elements-and-create-groups-in-figma">How to Label Elements and Create Groups in Figma</h2>
<p>Working with lots of layers in Figma can get confusing, so label all your elements as soon as you create them. Even better is to group different sections and shapes with labels such as "Hero Background" or "Navbar".</p>
<ul>
<li><p>Select your element/s and right click to group or press Ctrl + G</p>
</li>
<li><p>Name your group</p>
</li>
<li><p>Places groups inside groups for each section of your page to improve readability once your page gets large</p>
</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/06/figma8.gif" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Figma is simple to start using, but there's a lot to learn to use it to its full potential. With the basics of shapes, images, and text, you can easily get started prototyping a website, designing a mobile application, and much more.</p>
<p>If you want to take a deeper dive into these basics, I would recommend watching and following along the <a target="_blank" href="https://youtu.be/lg7w3Ntfqy0">whole video crash course</a> which looks at each aspect in more depth.</p>
<p>You can view the full results of the design below:</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.figma.com/file/9kw3Z8n5t5l3BHAvyZy39X/Figma-Crash-Course-2021?node-id=0%3A1">https://www.figma.com/file/9kw3Z8n5t5l3BHAvyZy39X/Figma-Crash-Course-2021?node-id=0%3A1</a></div>
<p> </p>
<p>This whole process is part of what I am trying to teach on my own channel and also part of a course/book I am writing on design called <strong>Enhance UI</strong>. The goal is to <strong>help developers understand the fundamentals of design</strong>. Check out my Enhance UI Book below:</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.enhanceui.com">https://www.enhanceui.com</a></div>
<p> </p>
<p>I hope you enjoyed this article. If you don't know who I am, I'm Adrian from Australia. I have a tiny channel on Twitter and YouTube, so if you want to know more about me or enjoy my content, check them out sometime. 😉</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/08/freeCodeCamp.jpg" alt="Image" width="600" height="400" loading="lazy"></p>
<ul>
<li><p><strong>You</strong>T<strong>ube:</strong> <a target="_blank" href="https://youtube.com/adriantwarog?sub_confirmation=1">https://youtube.com/adriantwarog</a></p>
</li>
<li><p><strong>Twitter:</strong> <a target="_blank" href="https://twitter.com/adrian_twarog">https://twitter.com/adrian_twarog</a></p>
</li>
</ul>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ What is Storybook and How Can I Use It to Create a Component Library in React? ]]>
                </title>
                <description>
                    <![CDATA[ Frameworks like React, Vue, and Angular all help developers create modular systems using components, but that doesn't usually include a good way to see them all from a higher point of view.  So how can we use Storybook to build libraries and design s... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/what-is-storybook-and-how-can-i-use-it-to-create-a-component-libary-in-react/</link>
                <guid isPermaLink="false">66b8e39c68c5b9f37d1d1af1</guid>
                
                    <category>
                        <![CDATA[ components ]]>
                    </category>
                
                    <category>
                        <![CDATA[ create-react-app ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Design Tools ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Developer Tools ]]>
                    </category>
                
                    <category>
                        <![CDATA[ framework ]]>
                    </category>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Libraries ]]>
                    </category>
                
                    <category>
                        <![CDATA[ React ]]>
                    </category>
                
                    <category>
                        <![CDATA[ React ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Storybook ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tools ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Colby Fayock ]]>
                </dc:creator>
                <pubDate>Tue, 09 Jun 2020 14:45:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/06/storybook.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Frameworks like React, Vue, and Angular all help developers create modular systems using components, but that doesn't usually include a good way to see them all from a higher point of view. </p>
<p>So how can we use Storybook to build libraries and design systems that self-document as we build them?</p>
<ul>
<li><a class="post-section-overview" href="#heading-what-is-storybook">What is Storybook?</a></li>
<li><a class="post-section-overview" href="#heading-what-are-we-going-to-build">What are we going to build?</a></li>
<li><a class="post-section-overview" href="#heading-step-0-bootstrapping-an-app">Step 0: Bootstrapping an app</a></li>
<li><a class="post-section-overview" href="#heading-step-1-installing-storybook">Step 1: Installing Storybook</a></li>
<li><a class="post-section-overview" href="#heading-step-2-creating-a-new-button">Step 2: Creating a new button</a></li>
<li><a class="post-section-overview" href="#heading-step-3-using-our-new-button-component">Step 3: Using our new Button component</a></li>
<li><a class="post-section-overview" href="#heading-repeat-creating-a-new-header-component">Repeat: Creating a new Header component</a></li>
<li><a class="post-section-overview" href="#heading-more-storybook-features">More Storybook features</a></li>
</ul>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/VApXDsYO5Gg" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>
<h2 id="heading-what-is-storybook">What is Storybook?</h2>
<p><a target="_blank" href="https://storybook.js.org/">Storybook</a> is a JavaScript tool that allows developers to create organized UI systems making both the building process and documentation more efficient and easier to use.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/loneley-planet-storybook-example.jpg" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://lonelyplanet.github.io/backpack-ui/?path=/story/cards--card-basic">Lonely Planet's Backpack UI</a></em></p>
<p>Once you build out a component, Storybook lets you create a "story" file where you can then import your component and create various use case examples in an iFramed sandbox using that component.</p>
<p>This provides an organized and focused environment to build new components and work on existing ones.</p>
<h2 id="heading-what-are-we-going-to-build">What are we going to build?</h2>
<p>We're going to bootstrap a new <a target="_blank" href="https://reactjs.org/">React JS</a> app using <a target="_blank" href="https://reactjs.org/docs/create-a-new-react-app.html">Create React App</a>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/storybook-component-example.jpg" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Inside that app, we're going to install Storybook and create a few new components that will help us learn how to create new components that we can work on in a story and then use it in a React app.</p>
<h2 id="heading-step-0-bootstrapping-an-app">Step 0: Bootstrapping an app</h2>
<p>To get started, we're going to start from scratch with <a target="_blank" href="https://reactjs.org/docs/create-a-new-react-app.html">Create React App</a>. This will help us focus on getting productive in Storybook rather than walking through integrating it into a current app.</p>
<p>That said, if you're already working with an app created using Create React App that's not ejected, you should be able to still follow on with Part 1 and beyond just the same!</p>
<p>So let's get started by navigating to where we want to create our new app and run the Create React App command:</p>
<pre><code class="lang-shell">npx create-react-app my-storybook
</code></pre>
<p><em>Note: feel free to replace <code>my-storybook</code> with the directory name of your choice.</em></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/create-new-react-app.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Bootstrapping with Create React App</em></p>
<p>Once that's finished running, you can navigate to the directory:</p>
<pre><code class="lang-shell">cd my-storybook
</code></pre>
<p>And we're ready to go!</p>
<h2 id="heading-step-1-installing-storybook">Step 1: Installing Storybook</h2>
<p>Storybook luckily makes it really easy to get started with a standard installation of React. Particularly with Create React App, Storybook automatically detects that we're using an app created using CRA and installs the dependencies and scaffolds everything for us.</p>
<h3 id="heading-initializing-storybook">Initializing Storybook</h3>
<p>To get started installing Storybook, run:</p>
<pre><code class="lang-shell">npx -p @storybook/cli sb init
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/initializing-storybook.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Initializing Storybook in a React app</em></p>
<p>If you aren't using Create React App or it didn't work, you can check out their <a target="_blank" href="https://storybook.js.org/docs/guides/guide-react/">available guides in their docs</a>.</p>
<p>After that's finished, all of our Storybook dependencies should be installed.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/storybook-finished-installing.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Finished installing Storybook</em></p>
<h3 id="heading-starting-up-storybook">Starting up Storybook</h3>
<p>So now we're ready to get moving! Finally, run:</p>
<pre><code class="lang-shell">yarn storybook
# or
npm run storybook
</code></pre>
<p>And once everything finishes loading, Storybook will open a new tab in your browser and you should now see a welcome message inside of your new Storybook dashboard!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/storybook-welcome-page.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Storybook welcome page</em></p>
<p><a target="_blank" href="https://github.com/colbyfayock/my-storybook/commit/3e994096384e31cb540150c9f14f41758ef3a746">Follow along with the commit!</a></p>
<h2 id="heading-step-2-creating-a-new-button">Step 2: Creating a new button</h2>
<p>If you took a second to poke around the dashboard, you might have noticed that it comes pre-loaded with a Button that's available as a demo.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/storybook-demo-button.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Storybook demo button</em></p>
<p>You should also notice if you click the button, you actually see an action print out inside of the Actions tab at the bottom. This shows the event that's captured from the button click.</p>
<p>It's simple, but this is great to get a nice feel about what to expect in storybook. The only issue is, this is meant purely for demonstration purposes, so let's build our own button to replace it.</p>
<h3 id="heading-creating-a-new-button-component">Creating a new Button component</h3>
<p>To get started, let's first create a few directories:</p>
<ul>
<li>Under <code>src</code>, create a new folder called <code>components</code></li>
<li>Under <code>components</code>, create a new folder called <code>Button</code></li>
</ul>
<p>Once you create those folders, create a new file called <code>index.js</code> inside of your <code>src/components/Button</code> folder and inside add:</p>
<pre><code class="lang-js"><span class="hljs-comment">// Inside src/components/Button/index.js</span>

<span class="hljs-keyword">export</span> { <span class="hljs-keyword">default</span> } <span class="hljs-keyword">from</span> <span class="hljs-string">'./Button'</span>;
</code></pre>
<p>This will import the next file we created called <code>Button.js</code> which will allow us to more easily import our files with <code>src/components/Button</code> instead of <code>/src/components/Button/Button</code>.</p>
<p>Next, let's create <code>Button.js</code> right next to our <code>index.js</code> file with the following content:</p>
<pre><code class="lang-js"><span class="hljs-comment">// Inside src/components/Button/Button.js</span>

<span class="hljs-keyword">import</span> React <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>;

<span class="hljs-keyword">const</span> Button = <span class="hljs-function">(<span class="hljs-params">{ children, ...rest }</span>) =&gt;</span> {
  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">className</span>=<span class="hljs-string">"button"</span> {<span class="hljs-attr">...rest</span>}&gt;</span>
      { children }
    <span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span></span>
  )
}

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> Button;
</code></pre>
<p>Here, we're creating a new component called Button that adds a class of <code>button</code> to the element and passes through the <code>children</code>. We're a additionally <a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment">destructuring</a> the rest of the props into the <code>rest</code> variable and <a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax">spreading</a> that value into the <code>&lt;button&gt;</code> element.</p>
<p>If you've followed along, your files should now look like this:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/button-reaect-component.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Button component in React</em></p>
<h3 id="heading-using-our-new-button-component">Using our new Button component</h3>
<p>So now that we have our Button component, let's use it!</p>
<p>Open up the file <code>src/stories/1-Button.stories.js</code> and replace the line that's importing <code>Button</code> with:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/updating-button-storybook-story.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Updating the Button Storybook story</em></p>
<p>And once you hit save, you can open back up your browser tab with your Storybook dashboard, and you can now see a button that looks mostly similar, but it uses the browser's default styles for the <code>&lt;button&gt;</code> element. You'll even notice that if you click it, the event will still be logged under the Actions tab.</p>
<h3 id="heading-styling-our-button-component">Styling our Button component</h3>
<p>Finally, we probably don't want to use the browser default styles, so let's make it look nice.</p>
<p>In our <code>src/components/Button</code> directory, add a new file <code>Button.css</code> and add the following content:</p>
<pre><code class="lang-css"><span class="hljs-comment">/* Inside src/components/Button/Button.css */</span>

<span class="hljs-selector-class">.button</span> {
  <span class="hljs-attribute">color</span>: white;
  <span class="hljs-attribute">font-weight</span>: bold;
  <span class="hljs-attribute">background-color</span>: blueviolet;
  <span class="hljs-attribute">border</span>: none;
  <span class="hljs-attribute">padding</span>: .<span class="hljs-number">8em</span> <span class="hljs-number">1em</span>;
  <span class="hljs-attribute">border-radius</span>: .<span class="hljs-number">2rem</span>;
}
</code></pre>
<p>This applies a few styles to our <code>.button</code> class like adding a background color and changing the font color to white.</p>
<p>But if you open Storybook, you'll notice it didn't do anything. To use it, we need to import it into our component.</p>
<p>Inside <code>src/components/Button/Button.js</code> add the following at the top under the React import:</p>
<pre><code class="lang-js"><span class="hljs-keyword">import</span> <span class="hljs-string">'./Button.css'</span>;
</code></pre>
<p>And once you save that and open up your browser, you should now see our new button with our updated styles!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/new-button-storybook.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>New Button in Storybook</em></p>
<p><a target="_blank" href="https://github.com/colbyfayock/my-storybook/commit/e71e0e9e666adee0455b0b69118053c2f551ab68">Follow along with the commit!</a></p>
<h2 id="heading-step-3-using-our-new-button-component">Step 3: Using our new Button component</h2>
<p>The ultimate goal of our component is to use it right? So let's add it to our app.</p>
<h3 id="heading-switching-over-to-the-react-app">Switching over to the React app</h3>
<p>First we'll need to either start our React app in a new terminal tab or kill the Storybook process and start the React process there. To start the React app using Create React App, run:</p>
<pre><code class="lang-shell">yarn start
# or
npm run start
</code></pre>
<p>Once that loads, we should have our standard Create React App if you're following along with me:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/new-create-react-app.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>New Create React App</em></p>
<h3 id="heading-importing-and-using-the-new-button">Importing and using the new button</h3>
<p>Next, inside of <code>src/App.js</code>, let's import our new Button at the top of the page:</p>
<pre><code class="lang-js"><span class="hljs-keyword">import</span> Button <span class="hljs-keyword">from</span> <span class="hljs-string">'./components/Button'</span>;
</code></pre>
<p>With Button imported, we can use it. Here, we can simply add it anywhere we want in the page. I'm going to replace the Learn React link with:</p>
<pre><code class="lang-jsx">&lt;p&gt;
  <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">Button</span>&gt;</span>Hello, Storybook!<span class="hljs-tag">&lt;/<span class="hljs-name">Button</span>&gt;</span></span>
&lt;/p&gt;
</code></pre>
<p>And if we save and reload the page, we should now see our Button on the page!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/create-react-app-with-new-button.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>New Button in Create React App</em></p>
<p><a target="_blank" href="https://github.com/colbyfayock/my-storybook/commit/e6071aae5be281101d486c4cc7664bf6cacb4028">Follow along with the commit</a></p>
<h2 id="heading-repeat-creating-a-new-header-component">Repeat: Creating a new Header component</h2>
<p>The great thing about Storybook and React (or any of the supported frameworks) is that this process scales to as many components as you want.</p>
<p>So let's build another component!</p>
<h3 id="heading-creating-our-header-component">Creating our Header component</h3>
<p>Similar to our Button, let's start off by creating the set of directories and files that give us our component.</p>
<p>Since we already did this once, I'm going to provide the code without walking through what's going on.</p>
<p>Let's start off by spinning back up our Storybook server with:</p>
<pre><code>yarn storybook
# or 
npm run storybook
</code></pre><p>Create a <code>Header</code> directory inside the <code>src/components</code> directory.</p>
<p>Create an <code>index.js</code> file inside of <code>src/components/Header</code> with the following content:</p>
<pre><code class="lang-js"><span class="hljs-comment">// In src/components/Header/index.js</span>

<span class="hljs-keyword">export</span> { <span class="hljs-keyword">default</span> } <span class="hljs-keyword">from</span> <span class="hljs-string">'./Header'</span>;
</code></pre>
<p>Create a <code>Header.js</code> file inside of <code>src/components/Header</code> with the following content:</p>
<pre><code class="lang-jsx"><span class="hljs-comment">// In src/components/Header/Header.js</span>

<span class="hljs-keyword">import</span> React <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>;
<span class="hljs-keyword">import</span> <span class="hljs-string">'./Header.css'</span>;

<span class="hljs-keyword">const</span> Header = <span class="hljs-function">(<span class="hljs-params">{ children }</span>) =&gt;</span> {
  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">h2</span> <span class="hljs-attr">className</span>=<span class="hljs-string">"header"</span>&gt;</span>
      { children }
    <span class="hljs-tag">&lt;/<span class="hljs-name">h2</span>&gt;</span></span>
  )
}

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> Header;
</code></pre>
<p>Create a <code>Header.css</code> file inside of <code>src/components/Header</code> with the following content:</p>
<pre><code class="lang-css"><span class="hljs-comment">/* In src/components/Header/Header.css */</span>

<span class="hljs-selector-class">.header</span> {
  <span class="hljs-attribute">font-family</span>: sans-serif;
  <span class="hljs-attribute">font-size</span>: <span class="hljs-number">2.5em</span>;
  <span class="hljs-attribute">color</span>: blueviolet;
  <span class="hljs-attribute">border-bottom</span>: solid <span class="hljs-number">5px</span> aqua;
  <span class="hljs-attribute">padding-bottom</span>: .<span class="hljs-number">2em</span>;
  <span class="hljs-attribute">box-shadow</span>: <span class="hljs-number">0</span> <span class="hljs-number">5px</span> <span class="hljs-number">0</span> blueviolet;
}
</code></pre>
<p>Now if you notice, if you try to open up Storybook, again, nothing will happen. This time we need to create a new story file.</p>
<h3 id="heading-creating-a-new-story-file">Creating a new Story file</h3>
<p>Inside <code>src/stories</code>, add a new file called <code>2-Header.stories.js</code>:</p>
<pre><code class="lang-jsx"><span class="hljs-comment">// Inside src/stories/2-Header.stories.js</span>

<span class="hljs-keyword">import</span> React <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>;

<span class="hljs-keyword">import</span> Header <span class="hljs-keyword">from</span> <span class="hljs-string">'../components/Header'</span>;

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> {
  <span class="hljs-attr">title</span>: <span class="hljs-string">'Header'</span>,
  <span class="hljs-attr">component</span>: Header,
};

<span class="hljs-keyword">export</span> <span class="hljs-keyword">const</span> Text = <span class="hljs-function">() =&gt;</span> <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">Header</span>&gt;</span>Hello Header<span class="hljs-tag">&lt;/<span class="hljs-name">Header</span>&gt;</span></span>;
</code></pre>
<p>Here's a breakdown of our story file:</p>
<ul>
<li>First, we import our component – this is pretty standard any time we want to use it</li>
<li>The first thing we export is a <code>default</code> object. With Storybook, it expects the default export to be the configuration of our story, so here we provide it with a title and we pass in the component that we're using for this story</li>
<li>The second and last thing we export is the <code>Text</code> constant. With Storybook, any non-default export will be considered a variation that will get nested under the title that you provide in the default export</li>
</ul>
<p>And if you save this file and open up your Storybook dashboard in the browser, you should now see the new header!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/new-header-storybook-story.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>New Header component in Storybook</em></p>
<h3 id="heading-using-the-header-component">Using the Header component</h3>
<p>Using our component is just the same as our Button component, so inside of <code>src/App.js</code>, let's add our Header.</p>
<p>After starting your React server, first import our new Header:</p>
<pre><code class="lang-js"><span class="hljs-comment">// In src/App.js</span>

<span class="hljs-keyword">import</span> Header <span class="hljs-keyword">from</span> <span class="hljs-string">'./components/Header'</span>;
</code></pre>
<p>Then add it to the top of the page:</p>
<pre><code class="lang-jsx"><span class="hljs-comment">// In src/App.js</span>

&lt;Header&gt;My App&lt;/Header&gt;
</code></pre>
<p>And if you open the page, we'll see our new Header!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/create-react-app-with-header-and-button.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Create React App with new Header and Button components</em></p>
<p><a target="_blank" href="https://github.com/colbyfayock/my-storybook/commit/e1c59eccaf5f4146a2fe039dca8874609d615194">Follow along with the commit!</a></p>
<h2 id="heading-adding-more-components">Adding more components</h2>
<p>As you've noticed with our second Repeat step – adding a new component is pretty much the same process for any type of component we want to add. Once we have it in our library, we can develop it in a focused environment and then import it to our app to use.</p>
<p>You can now use this to manage your library of components and better maintain an entire system for your project!</p>
<h2 id="heading-more-storybook-features">More Storybook features</h2>
<p>Storybook doesn't stop with just adding components, it provides the ability to configure <a target="_blank" href="https://storybook.js.org/addons/">Addons</a> that enhance the core capabilities opening up a lot of possibilities.</p>
<p>Here are some of my favorites...</p>
<h3 id="heading-story-source">Story Source</h3>
<p>When building a component system, the hope is that people can easily use these components. But if you don't have documentation, someone would have to open up the file or try to find another use example.</p>
<p>Instead, <a target="_blank" href="https://github.com/storybookjs/storybook/tree/master/addons/storysource">Story Source</a> shows the code source of the story file you created allowing someone browsing your Storybook dashboard to get an example right along with the component output!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/storybook-source-demo.gif" alt="Image" width="600" height="400" loading="lazy">
<em>Storybook Story Source demo</em></p>
<h3 id="heading-storyshots">Storyshots</h3>
<p>If you're a fan of automated testing, you might have heard of using <a target="_blank" href="https://jestjs.io/">Jest</a> or another tool for adding snapshot testing to your app.</p>
<p><a target="_blank" href="https://github.com/storybookjs/storybook/tree/master/addons/storyshots/storyshots-core">StoryShots</a> is a way to easily add Jest snapshot testing to your component system. It creates snapshots based off of the stories you create so you can make sure that your components aren't fundamentally changing (or breaking) during development.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/06/storybook-snapshot-example.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Snapshot example with StoryShots</em></p>
<h2 id="heading-whats-your-favorite-part-of-storybook">What's your favorite part of Storybook?</h2>
<p><a target="_blank" href="https://twitter.com/colbyfayock">Share with me on Twitter!</a></p>
<h2 id="heading-continue-the-conversation">Continue the conversation!</h2>
<div class="embed-wrapper">
        <blockquote class="twitter-tweet">
          <a href="https://twitter.com/colbyfayock/status/1270392710260719616"></a>
        </blockquote>
        <script defer="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div>
<div id="colbyfayock-author-card">
  <p>
    <a href="https://twitter.com/colbyfayock">
      <img src="https://res.cloudinary.com/fay/image/upload/w_2000,h_400,c_fill,q_auto,f_auto/w_1020,c_fit,co_rgb:007079,g_north_west,x_635,y_70,l_text:Source%20Sans%20Pro_64_line_spacing_-10_bold:Colby%20Fayock/w_1020,c_fit,co_rgb:383f43,g_west,x_635,y_6,l_text:Source%20Sans%20Pro_44_line_spacing_0_normal:Follow%20me%20for%20more%20JavaScript%252c%20UX%252c%20and%20other%20interesting%20things!/w_1020,c_fit,co_rgb:007079,g_south_west,x_635,y_70,l_text:Source%20Sans%20Pro_40_line_spacing_-10_semibold:colbyfayock.com/w_300,c_fit,co_rgb:7c848a,g_north_west,x_1725,y_68,l_text:Source%20Sans%20Pro_40_line_spacing_-10_normal:colbyfayock/w_300,c_fit,co_rgb:7c848a,g_north_west,x_1725,y_145,l_text:Source%20Sans%20Pro_40_line_spacing_-10_normal:colbyfayock/w_300,c_fit,co_rgb:7c848a,g_north_west,x_1725,y_222,l_text:Source%20Sans%20Pro_40_line_spacing_-10_normal:colbyfayock/w_300,c_fit,co_rgb:7c848a,g_north_west,x_1725,y_295,l_text:Source%20Sans%20Pro_40_line_spacing_-10_normal:colbyfayock/v1/social-footer-card" alt="Follow me for more Javascript, UX, and other interesting things!" width="2000" height="400" loading="lazy">
    </a>
  </p>
  <ul>
    <li>
      <a href="https://twitter.com/colbyfayock">? Follow Me On Twitter</a>
    </li>
    <li>
      <a href="https://youtube.com/colbyfayock">?️ Subscribe To My Youtube</a>
    </li>
    <li>
      <a href="https://www.colbyfayock.com/newsletter/">✉️ Sign Up For My Newsletter</a>
    </li>
  </ul>
</div>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Adobe XD vs Sketch vs Figma vs InVision - How to Pick the Best Design Software ]]>
                </title>
                <description>
                    <![CDATA[ Comparing Adobe XD vs Sketch vs Figma vs InVision studio is a very common topic among designers who are looking for the best design software. Sketch has long been the application of choice for UX and UI designers. But in the last four years, we have ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/adobe-xd-vs-sketch-vs-figma-vs-invision/</link>
                <guid isPermaLink="false">66c375a2e912451bdfbe18cf</guid>
                
                    <category>
                        <![CDATA[ Design Process ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Design Tools ]]>
                    </category>
                
                    <category>
                        <![CDATA[ designer ]]>
                    </category>
                
                    <category>
                        <![CDATA[ graphic design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Product Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ software design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ UI Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Applications ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ website development, ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Alexandru Paduraru ]]>
                </dc:creator>
                <pubDate>Wed, 05 Feb 2020 08:21:51 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/02/Adobe-xd-vs-Sketch-1024x576.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Comparing <strong>Adobe XD vs Sketch vs Figma vs InVision studio</strong> is a very common topic among designers who are looking for the best design software.</p>
<p>Sketch has long been the application of choice for UX and UI designers. But in the last four years, we have seen many new contenders for Sketch’s crown. Three of them that have made the biggest strides are Figma, Adobe XD, and InVision Studio.</p>
<p>These four tools have many pros in common but there are some differences too. For example, the first comparison, Adobe XD vs Sketch, makes sense especially since both have a similar interface which is user-friendly and has a minimalistic style.</p>
<p>In this article, I analyze how the most used design apps compete and what their unique features are using my experience acquired while working at <a target="_blank" href="https://www.creative-tim.com/?ref=freecodecamp">Creative Tim</a>.</p>
<p><img src="https://creativetimblog.com/blog/wp-content/uploads/2020/01/adobe-xd.png" alt="adobe xd" width="600" height="400" loading="lazy"></p>
<h3 id="heading-adobe-xdhttpswwwadobecomproductsxddetailshtml"><a target="_blank" href="https://www.adobe.com/products/xd/details.html"><strong>Adobe XD</strong></a></h3>
<p>Adobe XD was developed and published by Adobe Inc. XD, released on 18 October 2017. It is a vector-based user experience design tool for web apps, mobile apps, and voice apps available for macOS and Windows. There are versions for iOS and Android as well that help you preview the result of your work directly on mobile devices.</p>
<p>XD also support website wireframing and creating simple interactive click-through prototypes. With the character and layout tools of Adobe XD, Elements can be easily created and individual objects can be exported.</p>
<p>The interface is kept relatively simple, with a toolbar that is aligned at the side, as well as the large artboard area.</p>
<p>Comparing Adobe XD vs Sketch makes sense especially because of this similar interface which is user-friendly and has a minimalistic style.</p>
<p><img src="https://creativetimblog.com/blog/wp-content/uploads/2020/01/sketch.png" alt="sketch" width="600" height="400" loading="lazy"></p>
<h3 id="heading-sketchhttpswwwsketchcom"><a target="_blank" href="https://www.sketch.com/"><strong>Sketch</strong></a></h3>
<p>Sketch is a <a target="_blank" href="https://en.wikipedia.org/wiki/Vector_graphics_editor">vector graphics editor</a>, developed by the <a target="_blank" href="https://en.wikipedia.org/wiki/Netherlands">Dutch</a> company Bohemian Coding. Sketch was first released on 7 September 2010 for <a target="_blank" href="https://en.wikipedia.org/wiki/MacOS">macOS</a>. It won an <a target="_blank" href="https://en.wikipedia.org/wiki/Apple_Design_Awards">Apple Design Award</a> in 2012.</p>
<p>A key difference between Sketch and other vector graphics editors is that Sketch does not include print design features. Sketch is only available on macOS. This problem is partially solved by third party and handoff tools.</p>
<p>When Sketch first came out it completely disrupted the interface design space, but Adobe XD and Figma have recently come forward as new challengers. They offer unique functionality like prototyping and live collaboration.</p>
<p>I’ve recently been researching these tools for my side project, <a target="_blank" href="http://uxtools.co/">uxtools.co</a>, and wanted to share what I believe the be the most noteworthy decision points. Also, from my point of view, <a target="_blank" href="https://ahrefs.com/keywords-explorer/google/us/overview?keyword=learning%20to%20sketch">learning to sketch</a> is very useful and it does not take to much to become a Pro.</p>
<p><img src="https://creativetimblog.com/blog/wp-content/uploads/2020/01/figma.png" alt="figma" width="600" height="400" loading="lazy"></p>
<h3 id="heading-figmahttpswwwfigmacom"><a target="_blank" href="https://www.figma.com/"><strong>Figma</strong></a></h3>
<p>Figma came to the stage in 2016 <a target="_blank" href="https://techcrunch.com/2015/12/03/figma-vs-goliath/">with initial funding of $14M</a>.</p>
<p>With its seamless user interface and sleek feature palette, the tool quickly became a notorious competitor to similar solutions in the field.</p>
<p>Designers from brands like Twitter, Microsoft, GitHub, and Dropbox swear by Figma as the ultimate UI design tool.</p>
<p><img src="https://creativetimblog.com/blog/wp-content/uploads/2020/01/invision.png" alt="InVision Studio" width="600" height="400" loading="lazy"></p>
<h3 id="heading-invision-studiohttpswwwinvisionappcomstudio"><a target="_blank" href="https://www.invisionapp.com/studio"><strong>InVision Studio</strong></a></h3>
<p>InVision Studio is a new piece of software, released in 2019, that allows designers to build more advanced animation and micro-interactions. Studio also integrated with InVision’s link to Sketch via its Craft plugin.</p>
<p><strong>InVision Studio has got a nice dark UI by default</strong>, that helps developers focus on the work to be done in the evening. However, with macOS Mojave, every app can look like this quite easily. When they created it, they were inspired by another design tool - I am thinking about the Sketch app.</p>
<h2 id="heading-apps-comparison"><strong>Apps Comparison</strong></h2>
<h3 id="heading-1-pricing"><strong>1. Pricing</strong></h3>
<p>Budget can be a big deal when you’re working with your own resources. Some of these licenses have educational and promotional pricing (often 50% off), so don’t miss that part. For example, Figma will get you there for free as long as you're not working on a team.</p>
<ul>
<li><p><strong>Figma</strong>: Free for individuals! You can have 3 projects for free, or you can upgrade to unlimited projects and team functionality for $12/month (billed annually).</p>
</li>
<li><p><strong>Sketch</strong>: $99 per license that gets you the Mac App for life and access to the next production versions of the app.</p>
</li>
<li><p><strong>Adobe XD</strong>: It offers free and paid plans, depending on an individual's or team's needs. Paid plans start at $9.99/month.</p>
</li>
<li><p><strong>InVision Studio:</strong> Free right now.</p>
</li>
</ul>
<h3 id="heading-2-platform"><strong>2. Platform</strong></h3>
<p>Though Sketch has been immensely popular, it forces designers to only use Mac, which alienates developers from accessing design files.</p>
<ul>
<li><p><strong>Figma</strong>: Browser! Figma recently released a <a target="_blank" href="http://figma.com/downloads">Mac app</a> and <a target="_blank" href="https://www.figma.com/downloads">Windows app</a> (not offline-capable, though).</p>
</li>
<li><p><strong>Sketch</strong>: Mac only.</p>
</li>
<li><p><strong>Adobe XD</strong>: Mac and Windows. Subject to the same limitations as the CC suite.</p>
</li>
<li><p><strong>InVision Studio:</strong> Mac and Windows.</p>
</li>
</ul>
<h3 id="heading-3-live-collaboration"><strong>3. Live Collaboration</strong></h3>
<p>Nobody likes to send at the end of the day “version 3.0”, “version3.0.final”, “version3.0.final.final”. Live Collaboration can help us, especially live comments.</p>
<p>I imagine these were the same concerns that surrounded the release of the highly innovative Google Docs suite. Google Docs, however, turned the Microsoft Suite on its head with live collaboration, and now Figma is seeking to do the same thing with UI design.</p>
<ul>
<li><p><strong>Figma</strong>: Yes! Not to mention being browser-based, it allows Windows and even Linux users to have a very polished design tool.</p>
</li>
<li><p><strong>Sketch</strong>: Not natively, but a plugin, <a target="_blank" href="http://picnic.design/">Picnic</a>, is looking to change that. Also, they have <a target="_blank" href="https://www.sketch.com/teams/">Sketch for Teams</a>.</p>
</li>
<li><p><strong>Adobe XD</strong>: It offers real-time Coediting, launched at Adobe MAX 2019.</p>
</li>
<li><p><strong>InVision Studio:</strong> Not currently possible, but can generate share links.</p>
</li>
</ul>
<p><img src="https://i.imgur.com/Sy3UzVS.png" alt="Live Collaboration" width="2864" height="1594" loading="lazy"></p>
<p><em>Image: Figma -</em> <a target="_blank" href="https://www.creative-tim.com/product/argon-design-system-pro?ref=freecodecamp"><em>Argon Design System Pro</em></a></p>
<h3 id="heading-4-handoff"><strong>4. Handoff</strong></h3>
<p>Recently a few apps have been developed specifically to deliver specs (sizing, spacing, color) to developers, but design tools are starting to integrate this functionality natively.</p>
<ul>
<li><p><strong>Figma</strong>: Because of live collaboration, developers can easily jump in (regardless of OS) and access the designs. Figma now neatly prints the handoff code for CSS, iOS, or Android in the right panel.</p>
</li>
<li><p><strong>Sketch</strong>: They've recently launched their own native developer handoff feature — Cloud Inspector. There’s even an entirely free alternative called Sketch measure that works just as well.</p>
</li>
<li><p><strong>Adobe XD</strong>: It offers design specs that allow a designer to create a shared link that contains measurements, assets, and automatically-generated CSS code snippets.</p>
</li>
<li><p><strong>InVision Studio:</strong> They have “Inspect Now”.</p>
</li>
</ul>
<p><img src="https://i.imgur.com/5zY7ixi.png" alt="Handoff" width="2870" height="1494" loading="lazy"></p>
<p><em>Image: Figma -</em> <a target="_blank" href="https://www.creative-tim.com/product/argon-design-system-pro?ref=freecodecamp"><em>Argon Design System Pro</em></a></p>
<h3 id="heading-5-offline"><strong>5. Offline</strong></h3>
<p>This is so important. Some online apps can protect your information when Wifi goes down, but you need full access to open, use, and save from the app offline.</p>
<ul>
<li><p><strong>Figma</strong>: No, in an AMA they stated they don't have any current plans to add it.</p>
</li>
<li><p><strong>Sketch</strong>: Sure.</p>
</li>
<li><p><strong>Adobe XD</strong>: Yep.</p>
</li>
<li><p><strong>InVision Studio:</strong> Yes.</p>
</li>
</ul>
<p><img src="https://i.imgur.com/PY9NsKh.png" alt="Offline" width="2866" height="1596" loading="lazy"></p>
<p><em>Image: AdobeXD -</em> <a target="_blank" href="https://www.creative-tim.com/product/argon-dashboard?ref=freecodecamp"><em>Argon Dashboard Free</em></a></p>
<h3 id="heading-6-prototyping"><strong>6. Prototyping</strong></h3>
<p>There are literally dozens of these apps nowadays, but they might become extinct as Adobe XD brings prototyping directly to the design tool. Keep your eye on these.</p>
<ul>
<li><p><strong>Figma</strong>: Yes! It's very basic but feels like Adobe XD without the transitions. Also, there's a nice <a target="_blank" href="https://medium.com/figma-design/introducing-figmas-integration-with-framer-c69a747aeee2">Framer</a> integration.</p>
</li>
<li><p><strong>Sketch</strong>: Yes!</p>
</li>
<li><p><strong>Adobe XD</strong>: Yes, native prototyping within the app. Adobe XD also supports voice prototyping and keyboard/gamepad support.</p>
</li>
<li><p><strong>InVision Studio:</strong> Yes, you can create prototypes and animations.</p>
</li>
</ul>
<p><img src="https://i.imgur.com/5QZ8Rt1.png" alt="Prototyping" width="2812" height="1522" loading="lazy"></p>
<p><em>Image: InVision Studio -</em> <a target="_blank" href="https://www.creative-tim.com/product/argon-react-native?ref=freecodecamp"><em>Argon React Native</em></a></p>
<h3 id="heading-7-symbols"><strong>7. Symbols</strong></h3>
<p>Symbols can make your work easier. These have completely changed the design process. Forget building and duplicating list items over and over, let symbols do the work for you.</p>
<ul>
<li><p><strong>Figma</strong>: Good to go. Symbols now have states, constraints, and overrides.</p>
</li>
<li><p><strong>Sketch</strong>: The symbol functionality in Sketch is very impressive, and continues to improve. Symbols can be updated across entire documents and can resize responsively (that means less work for you when changing screen sizes).</p>
</li>
<li><p><strong>Adobe XD</strong>: It offers components that can be used throughout a document as well as linked across documents. It also allows designers to create variations of a component for different interactions, known as component states.</p>
</li>
<li><p><strong>InVision Studio:</strong> they have components that are a close approximation to the symbol conventions found in other applications. Components in their final form will honor a broad, scalable hierarchy that allows designers to quickly build-up, mix, and match components intelligently across their designs.</p>
</li>
</ul>
<p><img src="https://i.imgur.com/9lfwDD5.png" alt="Symbols" width="2874" height="1600" loading="lazy"></p>
<p><em>Image: Sketch -</em> <a target="_blank" href="https://www.creative-tim.com/product/material-kit-pro?ref=freecodecamp"><em>Material Kit Pro</em></a></p>
<h2 id="heading-conclusion"><strong>Conclusion</strong></h2>
<p>Sketch has a big disadvantage here because it is only available for Mac users. And as such, it lets tools like Figma and Adobe XD innovate beyond the basic necessities.</p>
<p>Also, in terms of design tools, Adobe XD provides a robust set of responsive while the Sketch doesn’t have this feature built-in (but it has many plugins). If your tool does something better than the other, it is often enough of a reason to switch over. The browser-based approach that Figma has taken is also something to behold.</p>
<p>When talking about Adobe XD vs Sketch, the first one’s future is looking very bright and will win over many Sketch users. InVision’s change of focus may ensure its survival but one thing is for certain - Adobe XD is here to stay. The Adobe powerhouse is strong, and smaller companies like InVision and Sketch will have to work hard to stay relevant in the future.</p>
<p>People usually prefer to design and work in just one place. If you’re a part of a team, then Figma is undoubtedly for you.</p>
<p><img src="https://i.imgur.com/YaMctAr.png" alt="conclusions" width="2522" height="1932" loading="lazy"></p>
<p><strong>After all of that: first is Figma, second is Sketch, third is Adobe XD and fourth is InVision Studio.</strong></p>
<p>Overall, when talking about the best design software, these four tools are extremely well-suited for modern designer needs.</p>
<p>Try all four out to see which one is better for your use cases. I hope this comparison - Adobe XD vs Sketch vs Figma vs InVision - helped you decide which design tool is better for you.</p>
<p>Resources:</p>
<p><a target="_blank" href="https://www.figma.com/figma-vs-sketch/">https://www.figma.com/figma-vs-sketch/</a></p>
<p><a target="_blank" href="https://uxtools.co/blog/sketch-vs-adobe-xd-vs-figma/">https://uxtools.co/blog/sketch-vs-adobe-xd-vs-figma/</a></p>
<p><a target="_blank" href="https://www.codeinwp.com/blog/figma-vs-sketch-vs-adobe-xd/">https://www.codeinwp.com/blog/figma-vs-sketch-vs-adobe-xd/</a></p>
<p><a target="_blank" href="https://support.invisionapp.com/hc/en-us/sections/360004450191-Studio">https://support.invisionapp.com/hc/en-us/sections/360004450191-Studio</a></p>
<p><a target="_blank" href="https://helpx.adobe.com/ro/xd/help/components.html">https://helpx.adobe.com/ro/xd/help/components.html</a></p>
<p><a target="_blank" href="https://www.sketch.com/docs/">https://www.sketch.com/docs/</a></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Figma’s reimagined Team Library ]]>
                </title>
                <description>
                    <![CDATA[ By Zach Grosser A new, more powerful interface for sharing Components across your organization The Team Library in Figma is a set of shared Components across all files in a Team. Components in the Team Library are accessible across any file — existin... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/figmas-reimagined-team-library-fa027053c303/</link>
                <guid isPermaLink="false">66d46171bd438296f45cd3ce</guid>
                
                    <category>
                        <![CDATA[ Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Design Tools ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Productivity ]]>
                    </category>
                
                    <category>
                        <![CDATA[ startup ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Tue, 19 Sep 2017 15:07:46 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*E_PZbYUNCYEk5zw6pM5_Zw.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Zach Grosser</p>
<h4 id="heading-a-new-more-powerful-interface-for-sharing-components-across-your-organization">A new, more powerful interface for sharing Components across your organization</h4>
<p>The Team Library in <a target="_blank" href="https://www.figma.com">Figma</a> is a set of shared Components across all files in a Team. Components in the Team Library are accessible across any file — existing and new — in any Team project. If a new file is created in our Team, before it has any content in it, it automatically has access to hundreds of existing Components we’ve published to our Team Library. Not only that, but when the master version of a Component is edited, Figma allows those changes to flow throughout <em>every</em> file that contains an Instance of that Component. And the best part is that it’s not a forced update, instead, a notification appears in each of those files, allowing the change(s) to the Instance of that Component to be viewed and accepted.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/ZEejfpeLF5YQrRxvmRapJ9iyCSVvrl4oTzqb" alt="Image" width="561" height="414" loading="lazy">
<em>New UI available at base of left-hand panel.</em></p>
<p>Today, a major update to the Team Library was released. The left-hand panel in Figma, formerly just the Layers List, has a new interface at the bottom. By default that panel allows you to see all your layers and objects in the file, just as you could before, and now has two new dedicated spaces: File Components and Team Library, which can be toggled at the bottom of the panel or with keyboard shortcuts: alt + 1 for Layers List, alt + 2 for File Components, and alt + 3 for Team Library (although, Chrome OS hijacks that keyboard shortcut currently).</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/YlK-BT489DdnhCqrelzc0--iGftiJiPOIlsN" alt="Image" width="800" height="946" loading="lazy">
<em>Team Library view in the left-hand panel of the Figma desktop app.</em></p>
<p>As a design system scales, maintaining consistency can become more challenging. At Square, we use Team Libraries to organize commonly shared assets between the Communications and Social teams. Assets like unified color palettes and icon sets created by the Marketing team, corporate logos, and devices <a target="_blank" href="http://facebook.design">by Facebook</a> are all used frequently. After using several asset management solutions, having a unified, updating version of assets directly accessible inside the design application is incredibly powerful. So many issues related to building out design and asset library systems have been removed.</p>
<p>But don’t feel limited to just icon assets. In Figma’s <a target="_blank" href="https://www.figma.com/features">own words</a>, you can “create design systems with linked UI components the whole team can use.” A Component is any object or group of objects that you intend to use in multiple places, but want to reserve the ability to change properties across all versions of them (similar to Symbols in other applications). You could create complex screen layouts or webpages with hundreds of objects in a Frame and turn it into a Component to be shared across your team.</p>
<h3 id="heading-using-components">Using Components</h3>
<p>Components can be a singular line or shape, or an extremely complex set of objects in a Frame, and everywhere in-between. Components are elements that can be re-used throughout a design file or Team. Take a simple button for example. I want all the buttons in my design to be the same basic design: rounded corners, red background, text size and style, etc. So I create my first button with all the properties set how I like them.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/7gRwotBHXVVy99hXqJ5LbTpsUi-B5uxgltpm" alt="Image" width="737" height="257" loading="lazy">
<em>The icon that resembles four squares in a diamond shape appears in the Figma menu bar when an object, group, or Frame is selected.</em></p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/0td1-8QwDWysqYKc5ErZs9m-CRnWYjZoZu3d" alt="Image" width="800" height="800" loading="lazy">
<em>The right-click menu on an object, group, or Frame exposes the Component options as well.</em></p>
<p>Then I make a Component out of my first button. You can select any object then click the Component button at the top of the Figma interface, use macOS keyboard shortcut: option + command + K, or right-click the object and select “Create Component.”</p>
<p>To create more buttons, I duplicate the new button Component or drag a new copy out of the File Components list in the left-hand panel. These new buttons are called Instances, and they all reference and retain the properties of the Component they were created from, as known as the Master Component. If I adjust the color or typeface in the Master Component button, all the Instances in my file will update to match, instantly.</p>
<p>I used Components in an <a target="_blank" href="https://medium.com/swlh/presentation-template-for-figma-2b97fdefdacd">open-source presentation template</a>, setting up the slide titles as a Component and Instances of that Component. Now, when I need to customize a new presentation with a different typeface and color palette, it takes seconds.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/msLsvZOREAADb1CcK7SQmLcaiGGvxKp1Xk0w" alt="Image" width="800" height="450" loading="lazy">
<em>Using Components and Instances, a group of text boxes across multiple Frames can have their properties adjusted at the same time.</em></p>
<p>Anyone with access to the file can make changes to the Components too. Sharing a file with a copy editor, for example, allows them to update the text in a Master Component and have their copy changes flow through all the Instances.</p>
<p>Using Components within a file already felt like magic to me, and has always been a huge time saver as a file grows with more Frames and Instances. But the real magic lies in using Components across multiple files, thanks to the Team Library.</p>
<p>If I take a button Component, and publish it to the Team Library, then anyone on my team can access it and use it within their files, and any new files created in the Team have access to it as well. That means designers can immediately start building; using foundational Components from our design system.</p>
<p>As time goes on, the button properties may need to be adjusted. Returning to the Master Component of that button, by right-clicking an Instance of it or the Component itself in the Team Library panel, and adjusting it’s color, for example, notifies every file containing an Instance that there is an update available. A blue notification dot appears on the File Components list icon at the base of the left-hand panel. A “Publish changes” button at the top of the Component List leads to a modal to confirm the changes. Once changes are published to the Team Library, any file that uses an Instance of that Component will receive a notification in the bottom right corner to review the update(s). Clicking “Review” allows you to see what was changed, by who, and when. Once accepted, the Instance(s) in your file will update immediately to conform to the master Component. And you can choose not to accept those changes and your file’s Instances will remain unchanged.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/G2Rwcgw25E1UmUVxL98nE33OmmPbjyQWfBMx" alt="Image" width="611" height="174" loading="lazy">
<em>In-file notification when one or more Instance in your file has it’s master Component updated.</em></p>
<h3 id="heading-selecting-and-publishing-file-components-to-team-library">Selecting and publishing File Components to Team Library</h3>
<ol>
<li>Select object, group, or frame</li>
<li>Click the Component button at the top of the Figma interface, use macOS keyboard shortcut: option + command + K, or right-click object and select “Create Component”</li>
<li>Switch to the Component tab by selecting the toggle at the base of the Layer List, or use macOS keyboard shortcut: alt + 2</li>
<li>Right-click Components to add them to the Team Library, or use “Publish file to library” below your Component list to push <strong>all</strong> Components in this file to the Team Library</li>
<li>Switch to the Team Library tab by selecting the toggle at the base of the panel, or use macOS keyboard shortcut: alt + 3</li>
</ol>
<p>Now you can search or navigate to any Component that has been published in your Team, by any contributor.</p>
<p>To place an Instance of a Component into your file: Drag from the Team Library panel into any file. That Instance continues to be attached to the Master Component from whichever file in your Team it originates (And it could be from another member of your team), unless you right-click and select “Detach Instance” (macOS keyboard shortcut: option + command + B)</p>
<p>You can also add a description to your Components, visible in the Team Library to add additional context for your team. Select to the Master Component and add a description in the right-hand panel. The descriptions appear on hover in the Component List and in the Team Library.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/SMX4rX2ioWXzw-vwnqrVd97Fet37yYjoSM-m" alt="Image" width="229" height="198" loading="lazy">
<em>Add a description to your Components in the right-hand Figma panel.</em></p>
<p>Read <em>even more</em> about Components here:</p>
<p><a target="_blank" href="https://blog.figma.com/components-in-figma-e7e80fcf6fd2"><strong>Components in Figma</strong></a><br><a target="_blank" href="https://blog.figma.com/components-in-figma-e7e80fcf6fd2">_Today we are excited to release Components in Figma. By bringing concepts like composition, inheritance and unlimited…_blog.figma.com</a></p>
<h3 id="heading-pro-tip">Pro tip</h3>
<p>You can set the background of a Component tile in the Component List and Team Library by setting a Frame behind the component and changing its color. This is really handy with lighter Components, like white or grey icons.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/i2t5AHEi4z62connnOj7Yq5-jJ5NkTMr3ZHG" alt="Image" width="800" height="482" loading="lazy">
<em>Creating a Frame behind a Component and changing the fill color will change the color of the Component tile in the File Component list and Team Library panel.</em></p>
<p>Huge thanks to the team at Figma! Who keep building incredible features like this, and have the <a target="_blank" href="http://releases.figma.com">fastest release cycle</a> I’ve ever seen.</p>
<p><strong><em>There are already 464 Components in Square’s Team Library!</em></strong></p>
<p><em>Disclaimer: You may have found this post through advertising on Twitter or Facebook. Figma didn’t sponsor the writing of this post, and are advertising with my permission as they also thought it was helpful for other designers.</em></p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
