<?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[ Icons - 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[ Icons - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sun, 24 May 2026 22:25:14 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/icons/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ How to Create Reusable SVG Icon React Components ]]>
                </title>
                <description>
                    <![CDATA[ By Dillion Megida We use icons when building frontend applications all the time – for indications, pointers, and so on. Here's how to create a reusable React component for icons. When it comes to icons, you can use PNG or SVG images. PNGs come with a... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-create-reusable-icon-react-components-for-colors-and-sizes-customization/</link>
                <guid isPermaLink="false">66d84f0863d2055c664a1a57</guid>
                
                    <category>
                        <![CDATA[ components ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Icons ]]>
                    </category>
                
                    <category>
                        <![CDATA[ React ]]>
                    </category>
                
                    <category>
                        <![CDATA[ SVG ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Tue, 26 Apr 2022 18:22:02 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/04/pexels-chait-goli-2088233.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Dillion Megida</p>
<p>We use icons when building frontend applications all the time – for indications, pointers, and so on. Here's how to create a reusable React component for icons.</p>
<p>When it comes to icons, you can use PNG or SVG images. PNGs come with a fixed color but allow dimension changes (like a regular image). In some cases this alters the image's quality.</p>
<p>SVGs, on the other hand, have better quality regardless of size and the colors are customizable even after downloading.</p>
<p>But you may agree with me that SVGs can be a pain when it comes to customizability.</p>
<p>In this article, I will show you how I currently go about creating customizable SVG icons as React components.</p>
<h2 id="heading-how-to-download-the-icons">How to Download the Icons</h2>
<p>I usually download the icons I use from <a target="_blank" href="https://remixicon.com/">Remixicon</a>. I haven't tried out other icon libraries yet, so the steps in this article may or may not apply if you use a different library.</p>
<p>That being said, I have worked with a client in the past who created custom icons on Figma. I applied the solution shared in this step, and it also worked for most icons. So follow along even if you don't use Remixicon :)</p>
<p>On Remixicon, I select an icon of my choice, select size <strong>18px</strong>, and select <strong>Copy SVG</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/image-154.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>I leave the color as black. If you choose a different color, it may conflict with the specified colors you provide later. So better to leave it black, which is the default color of SVGs.</p>
<h2 id="heading-how-to-create-the-react-component">How to Create the React Component</h2>
<p>Then I paste the SVG into a file, say, <code>home-line.js</code> with the following code:</p>
<pre><code class="lang-js"><span class="hljs-keyword">import</span> React <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">HomeLine</span>(<span class="hljs-params"></span>) </span>{
  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">svg</span> <span class="hljs-attr">xmlns</span>=<span class="hljs-string">"http://www.w3.org/2000/svg"</span> <span class="hljs-attr">viewBox</span>=<span class="hljs-string">"0 0 24 24"</span> <span class="hljs-attr">width</span>=<span class="hljs-string">"18"</span> <span class="hljs-attr">height</span>=<span class="hljs-string">"18"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">path</span> <span class="hljs-attr">fill</span>=<span class="hljs-string">"none"</span> <span class="hljs-attr">d</span>=<span class="hljs-string">"M0 0h24v24H0z"</span>/&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">path</span> <span class="hljs-attr">d</span>=<span class="hljs-string">"M21 20a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V9.49a1 1 0 0 1 .386-.79l8-6.222a1 1 0 0 1 1.228 0l8 6.222a1 1 0 0 1 .386.79V20zm-2-1V9.978l-7-5.444-7 5.444V19h14z"</span>/&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">svg</span>&gt;</span></span>
  )
}
</code></pre>
<p>As it is, it uses the default color and size that comes from Remixicon. I'll add two props to modify this component: <code>size</code> and <code>color</code>.</p>
<p>The <code>svg</code> element has four properties: <code>xmlns</code>, <code>viewBox</code>, <code>width</code> and <code>height</code>. I'll use the <code>size</code> prop to modify the value of <code>width</code> and <code>height</code>. Then I'll add an extra property, <code>fill</code>, which I will use for the <code>color</code> prop. </p>
<p>Here is the updated component:</p>
<pre><code class="lang-js"><span class="hljs-keyword">import</span> React <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">HomeLine</span>(<span class="hljs-params">{
  size = <span class="hljs-number">18</span>, <span class="hljs-regexp">//</span> or any default size of your choice
  color = <span class="hljs-string">"black"</span> <span class="hljs-regexp">//</span> or any color of your choice
}</span>) </span>{
  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">svg</span>
      <span class="hljs-attr">xmlns</span>=<span class="hljs-string">"http://www.w3.org/2000/svg"</span>
      <span class="hljs-attr">viewBox</span>=<span class="hljs-string">"0 0 24 24"</span>
      <span class="hljs-attr">width</span>=<span class="hljs-string">{size}</span> // <span class="hljs-attr">added</span> <span class="hljs-attr">size</span> <span class="hljs-attr">here</span>
      <span class="hljs-attr">height</span>=<span class="hljs-string">{size}</span> // <span class="hljs-attr">added</span> <span class="hljs-attr">size</span> <span class="hljs-attr">here</span>
      <span class="hljs-attr">fill</span>=<span class="hljs-string">{color}</span> // <span class="hljs-attr">added</span> <span class="hljs-attr">color</span> <span class="hljs-attr">here</span>
    &gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">path</span> <span class="hljs-attr">fill</span>=<span class="hljs-string">"none"</span> <span class="hljs-attr">d</span>=<span class="hljs-string">"M0 0h24v24H0z"</span>/&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">path</span> <span class="hljs-attr">d</span>=<span class="hljs-string">"M21 20a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V9.49a1 1 0 0 1 .386-.79l8-6.222a1 1 0 0 1 1.228 0l8 6.222a1 1 0 0 1 .386.79V20zm-2-1V9.978l-7-5.444-7 5.444V19h14z"</span>/&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">svg</span>&gt;</span></span>
  )
}
</code></pre>
<p>I leave the <code>viewBox</code> as it is. And now I can use the component like this:</p>
<pre><code class="lang-js">&lt;HomeLine size={<span class="hljs-number">100</span>} color=<span class="hljs-string">"purple"</span> /&gt;
<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">HomeLine</span> <span class="hljs-attr">size</span>=<span class="hljs-string">{50}</span> <span class="hljs-attr">color</span>=<span class="hljs-string">"red"</span> /&gt;</span></span>
<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">HomeLine</span> <span class="hljs-attr">size</span>=<span class="hljs-string">{30}</span> <span class="hljs-attr">color</span>=<span class="hljs-string">"green"</span> /&gt;</span></span>
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/image-155.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you use a non-square-shaped icon, you will have to specifically provide the <code>width</code> and <code>height</code> prop to change both attributes accordingly.</p>
<h2 id="heading-wrap-up">Wrap Up</h2>
<p>I know that Remixicon does not have every icon you may need, and when you are working with a design system, you may be provided with some custom icons.</p>
<p>But the idea shared here is something you can try with any library you're working with. And if you do, I would love to hear your experience trying this out.</p>
<p>If you liked this article and found it helpful, kindly share :)</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Add Custom Icons to Your Flutter Application ]]>
                </title>
                <description>
                    <![CDATA[ When you want to add some style to your application, you likely look for ways to make your User Interface stand out.  Whether it is using a specific font or a different color palate, you want to make the user feel attracted to your UI.  One way to ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-add-custom-icons-to-your-flutter-application/</link>
                <guid isPermaLink="false">66ba500343a51af2a76f7569</guid>
                
                    <category>
                        <![CDATA[ Flutter ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Icons ]]>
                    </category>
                
                    <category>
                        <![CDATA[ mobile app development ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Tomer ]]>
                </dc:creator>
                <pubDate>Thu, 27 Jan 2022 20:54:03 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/01/harpal-singh-_zKxPsGOGKg-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>When you want to add some style to your application, you likely look for ways to make your User Interface stand out. </p>
<p>Whether it is using a specific font or a different color palate, you want to make the user feel attracted to your UI. </p>
<p>One way to customize is to update your icons. If you are a mobile developer, regardless of the platform you develop for, there is a straightforward process for adding icons to your application. </p>
<p>In Flutter, it’s not that complicated, but there are some things you should be aware of so that you don’t make time-consuming mistakes.</p>
<h2 id="heading-how-to-customize-the-application-launcher-icon">How to Customize the Application Launcher Icon</h2>
<p>Instead of using the generic application icon Flutter provides, you can create your own. To do that, we will need to use a package called <a target="_blank" href="https://pub.dev/packages/flutter_launcher_icons">Flutter Launcher Icons</a>. We’ll go through creating one step by step.</p>
<p>This is how your launcher icon looks by default:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/1_ZmZvjWFbQa-7TVOnln390w.jpeg" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Let’s assume we want this image to be our application launcher icon:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/1_G3Ro06E4rc6F30BC9n-OBw.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>First, add the image you would like to use as that icon inside your project under the assets folder (if you don’t have an assets folder, create one):</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/1_GeYlh_ryVgmJ-133XSEO0w.jpeg" alt="Image" width="600" height="400" loading="lazy">
<em>Our icon’s location inside the project</em></p>
<p>Then add the dependency to your pubspec.yaml file under <strong>dev_dependencies</strong>:</p>
<pre><code class="lang-yaml"><span class="hljs-attr">dev_dependencies:</span>
  <span class="hljs-attr">flutter_launcher_icons:</span> <span class="hljs-string">"^0.9.2"</span>
</code></pre>
<p>Add this configuration inside your pubspec.yaml file:</p>
<pre><code class="lang-yaml"><span class="hljs-attr">flutter_icons:</span>
  <span class="hljs-attr">android:</span> <span class="hljs-string">"launcher_icon"</span>
  <span class="hljs-attr">ios:</span> <span class="hljs-literal">true</span>
  <span class="hljs-attr">image_path:</span> <span class="hljs-string">"assets/doughnut.png"</span>
</code></pre>
<p>The <code>flutter_icons</code> configuration has several keys to alter what is going to be rendered and for which platform.</p>
<ul>
<li>Android/iOS – specify for which platform you want to generate an icon. You can also write the file name instead of true.</li>
<li>image_path – the path to the asset you wish to make into the application launcher icon. For example, <strong>"assets/doughnut.png".</strong></li>
</ul>
<p>There are more configurations available, but we won’t delve into them here. You can find out more by going <a target="_blank" href="https://github.com/fluttercommunity/flutter_launcher_icons/tree/master/example">here</a>.</p>
<p>Now, run <code>flutter pub get</code> in the terminal or click Pub get inside the IDE.</p>
<p>Run the command below in the terminal:</p>
<pre><code class="lang-bash">flutter pub run flutter_launcher_icons:main
</code></pre>
<p>Run your application and you should see that the launcher icon has changed.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/1_PYauSNowIcCEk4dB8FJshA.jpeg" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-how-to-generate-custom-icons-in-flutter">How to Generate Custom Icons in Flutter</h2>
<p>We will be able to generate custom icons through <a target="_blank" href="https://www.fluttericon.com/">FlutterIcon.com</a>. It allows us to either:</p>
<ul>
<li>Upload a SVG that gets converted into an icon</li>
<li>Choose from a huge selection of icons from a different set of icon packages</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/1_cUVrtz2mfcum4hsK44kDNA.jpeg" alt="Image" width="600" height="400" loading="lazy"></p>
<p>☝️ There is a package called <a target="_blank" href="https://pub.dev/packages/fluttericon">FlutterIcon</a> that has all of the icons shown, but due to it’s heavy size, I recommended only choosing the icons that you need and not using it.</p>
<p>Let’s demonstrate how to import custom icons into your application using this website.</p>
<p>Imagine we have the following form in our application:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/qemu-system-x86_64_5wbTMarncT.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You can see that we used icons for each TextFormField. Below is the code for the first TextFormField:</p>
<pre><code class="lang-dart">TextFormField(
  controller: pillNameTextEditingController,
  decoration: <span class="hljs-keyword">const</span> InputDecoration(
      border: OutlineInputBorder(),
      hintText: <span class="hljs-string">'What is the pill\'s name?'</span>,
      prefixIcon: Icon(Icons.title)
  ),
  validator: (value) {
    <span class="hljs-keyword">if</span> (value == <span class="hljs-keyword">null</span> || value.isEmpty) {
      <span class="hljs-keyword">return</span> <span class="hljs-string">'Please enter a pill name'</span>;
    }
    <span class="hljs-keyword">return</span> <span class="hljs-keyword">null</span>;
  }
)
</code></pre>
<p>How about we change the first TextFormField’s icon into something more relevant?</p>
<p>On FlutterIcon.com:</p>
<ul>
<li>Choose the icons that you want to use/upload a SVG file</li>
<li>Give a meaningful name to your icon class (We’ll call our class <strong>CustomIcons</strong>)</li>
<li>Press Download</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/1_pnVmm0MQLyu67JgAnWaX2w.jpeg" alt="Image" width="600" height="400" loading="lazy"></p>
<p>In the .zip folder that you downloaded, there are several files:</p>
<ul>
<li>A fonts folder with a TTF file with the name of the class you chose</li>
<li>A config.json file that's used to remember what icons you chose</li>
<li>A dart class with the name of the class you chose</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/1_bMUGR_xcccd1TgSM109yEQ.jpeg" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Inside your project, import the .ttf file into a folder called fonts under the <strong>root directory</strong>. It should look like this:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/1_63PhBP1BuY4961WpCml9KQ.jpeg" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Place the .dart class inside your lib folder. If you take a look inside the dart file, you will see something similar (you might see more IconData objects if you chose more than one icon to download):</p>
<pre><code class="lang-dart"><span class="hljs-keyword">import</span> <span class="hljs-string">'package:flutter/widgets.dart'</span>;

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">CustomIcons</span> </span>{
  CustomIcons._();

  <span class="hljs-keyword">static</span> <span class="hljs-keyword">const</span> _kFontFam = <span class="hljs-string">'CustomIcons'</span>;
  <span class="hljs-keyword">static</span> <span class="hljs-keyword">const</span> <span class="hljs-built_in">String?</span> _kFontPkg = <span class="hljs-keyword">null</span>;

  <span class="hljs-keyword">static</span> <span class="hljs-keyword">const</span> IconData pill = IconData(<span class="hljs-number">0xea60</span>, fontFamily: _kFontFam, fontPackage: _kFontPkg);
}
</code></pre>
<p>Add the following to your pubspec.yaml file:</p>
<pre><code class="lang-yaml"><span class="hljs-attr">fonts:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-attr">family:</span> <span class="hljs-string">CustomIcons</span>
        <span class="hljs-attr">fonts:</span>
          <span class="hljs-bullet">-</span> <span class="hljs-attr">asset:</span> <span class="hljs-string">fonts/CustomIcons.ttf</span>
</code></pre>
<p>Run <code>flutter pub get</code> in the terminal or click Pub get inside the IDE.</p>
<p>Go to the place where you want to use your custom icons and use it like this:</p>
<pre><code class="lang-dart">n.dart
TextFormField(
  controller: pillNameTextEditingController,
  decoration: <span class="hljs-keyword">const</span> InputDecoration(
      border: OutlineInputBorder(),
      hintText: <span class="hljs-string">'What is the pill\'s name?'</span>,
      prefixIcon: Icon(CustomIcons.pill)
  ),
  validator: (value) {
    <span class="hljs-keyword">if</span> (value == <span class="hljs-keyword">null</span> || value.isEmpty) {
      <span class="hljs-keyword">return</span> <span class="hljs-string">'Please enter a pill name'</span>;
    }
    <span class="hljs-keyword">return</span> <span class="hljs-keyword">null</span>;
  }
)
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/1_G7MmSKn3xVeJJcLkUO0goA.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-troubleshooting-custom-icons-in-flutter">Troubleshooting Custom Icons in Flutter</h2>
<p>If your custom icons are showing up as squares with X’s in them, something is not right. You might also see in the logger the following warnings:</p>
<pre><code>Warning: No fonts specified <span class="hljs-keyword">for</span> font CustomIcons
<span class="hljs-attr">Warning</span>: Missing family name <span class="hljs-keyword">for</span> font.
</code></pre><p>This could be for several reasons:</p>
<ul>
<li>Make sure your pubspec.yaml file is valid. Meaning there are no extra spaces, indention, and so on. You can use <a target="_blank" href="http://yaml-online-parser.appspot.com/">this</a> tool for it.</li>
<li>Make sure that you have correctly referenced your font in your pubspec.yaml file.</li>
<li>Make sure that you have placed your .ttf file inside a <strong>fonts</strong> directory under the root directory of your project (not inside the assets directory).</li>
<li>Uninstall your application and reinstall it on your device.</li>
</ul>
<p>If you’d like to take a look at a real application using both types of icons, you can check it out 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://play.google.com/store/apps/details?id=com.tomerpacific.pill">https://play.google.com/store/apps/details?id=com.tomerpacific.pill</a></div>
<p>And you can see the source code 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://github.com/TomerPacific/Pill">https://github.com/TomerPacific/Pill</a></div>
<p>Thank you for reading!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to use react-icons to install Font Awesome in a React app ]]>
                </title>
                <description>
                    <![CDATA[ By Miracle Ugorji When you're building a React web application, chances are you are going to use icons. Icons are graphical representations of a concept, an idea, a file, a program, an app, a business, and so on.  You can use icons to represent the i... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-use-react-icons/</link>
                <guid isPermaLink="false">66d46040d1ffc3d3eb89de2e</guid>
                
                    <category>
                        <![CDATA[ Icons ]]>
                    </category>
                
                    <category>
                        <![CDATA[ React ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Design ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 20 Sep 2021 19:44:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/09/react---fontawesome-icon-1.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Miracle Ugorji</p>
<p>When you're building a React web application, chances are you are going to use icons. Icons are graphical representations of a concept, an idea, a file, a program, an app, a business, and so on. </p>
<p>You can use icons to represent the identity of a feature. Where you do not want to write out a program's name, an appropriate icon can stand in for the program or an application for easy identification.</p>
<p>There are many different icon libraries out there – so how do you add them to your React app? We'll learn that, along with a lot more, in this article.</p>
<h2 id="heading-in-this-article-you-will-learn">In this article you will learn:</h2>
<ul>
<li>What is the react-icons library?</li>
<li>What are Font Awesome icons?</li>
<li>How to set up the development environment</li>
<li>How to install React icons</li>
<li>How to import React icons</li>
<li>How to use React icons in your apps</li>
<li>How to use more than one icon</li>
<li>How to render multiple icons from different icon libraries</li>
<li>How to display icons inline</li>
<li>How to style Font Awesome icons in a React app</li>
<li>Bonus: All icon library import codes for React icons </li>
<li>Conclusion</li>
</ul>
<h2 id="heading-what-is-react-icons">What is react-icons?</h2>
<p>React-icons is a small library that helps you add icons (from all different icon libraries) to your React apps. It delivers the icons to your app as components so they're easier to work with, and it lets you style them so they're consistent with the overall style of your app.</p>
<p>React-icons uses ES6 features to import the icons into your React app. And it makes it so that only the icons you actually use from each library get imported. </p>
<p>With React-icons, you only need to run one command to use any icons you want from a certain library. You just need to pick the correct import code and your icon is set.</p>
<p>React-icons works with a bunch of different icon libraries like Font Awesome, Material UI, Bootstrap icons, and many others. </p>
<h2 id="heading-what-are-font-awesome-icons">What are Font Awesome icons?</h2>
<p>There are many different icon libraries, but one of the most popular is <a target="_blank" href="https://www.freecodecamp.org/news/how-to-add-font-awesome-icons-to-your-buttons/">Font Awesome</a>. Font Awesome is a library or toolkit of graphics that are created to behave like fonts. </p>
<p>Font Awesome icons are like regular fonts but you get graphics instead of letters. They are scalable vector graphics (SVGs) which means that you can change their colors, resize them, and so on without compromising the quality.</p>
<p>But without react-icons, to use Font Awesome icons in a React web application, you have to go through a long process of installing the different packages using several command lines. </p>
<p>Sometimes you might need to install the pro package too. Then, you have to import them universally or into individual files. All this processes, just to get a few icons on your web page?</p>
<p>This is where react-icons comes in. In this article, I will show how to use react-icons to add Font Awesome icons to your React web app. Let's get started.</p>
<h2 id="heading-how-to-set-up-the-development-environment">How to set up the development environment</h2>
<p>Follow these steps below to set up your development environment. </p>
<blockquote>
<p>Note: If you already have your setup done, there is no need to repeat it. Just skip to the next section.</p>
</blockquote>
<ol>
<li>Head over to <a target="_blank" href="https://nodejs.org/en/">Node.js</a> to download and install it if you don't have it already.</li>
<li>Open your device's terminal.</li>
<li>Type this command: <code>npm i -g create-react-app fonts-app</code>. This will install a React app with all the packages needed for your project.</li>
<li>Next, type <code>cd fonts-app/</code>. <code>fonts-app</code> is the name of your project folder. You can choose any name you want. <code>cd fonts-app</code> takes you to your project folder.</li>
<li>Then run <code>npm start</code> which will start the project on your development server.</li>
<li>From your code editor open the project src folder and find the <code>App.js</code> file.</li>
<li>Remove the original React element rendered there and add your own div or h1 or any element you prefer (just for example purposes).</li>
</ol>
<p>Now you are all set.</p>
<h2 id="heading-how-to-install-react-icons">How to Install React Icons</h2>
<p>To install the <code>react-icons</code> library, do the following:</p>
<ul>
<li>In your project folder, open the terminal of your code editor.</li>
<li>Run the command <code>npm install react-icons</code> to install the library in your project folder. </li>
</ul>
<p>This might take some time depending on the speed of your system. Once it's done, you are set to use your React icons.</p>
<h2 id="heading-how-to-import-icons-with-react-icons">How to Import Icons with React-Icons</h2>
<p>Go to the <a target="_blank" href="https://react-icons.github.io/react-icons/">React-icons</a> page. You will see a number of icon libraries that you can use. Each library of icons has an import code for it. For this tutorial, we will be focusing on the Font Awesome icon library.</p>
<p>Font Awesome's import code is <code>import { IconName } from "react-icons/fa";</code>.</p>
<h4 id="heading-code-example">Code example</h4>
<pre><code class="lang-jsx"><span class="hljs-keyword">import</span> { IconName } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-icons/fa"</span>;
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/FontAwesomePage.png" alt="Image" width="600" height="400" loading="lazy">
<em>Font Awesome icons on React icons page</em></p>
<h2 id="heading-how-to-use-icons-in-your-apps">How to use icons in your apps</h2>
<p>Follow these steps below to use the Font Awesome icons in your app.</p>
<ol>
<li>In <code>App.js</code>, paste the import code at the top of the file after the React import code</li>
<li>Go back to the React icons page and choose any icon from the Font Awesome icons</li>
<li>Click on the icon to copy it</li>
<li>Go back to your import code in the <code>App.js</code> file</li>
<li>Paste and replace the <code>IconName</code> in the curly braces with the copied icon</li>
<li>Render the icon name as a React element.</li>
</ol>
<h6 id="heading-code-example-1">Code example</h6>
<pre><code class="lang-jsx"><span class="hljs-keyword">import</span> React, { Component } <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>;
<span class="hljs-keyword">import</span> { FaHeart } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-icons/fa"</span>;

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Like</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Component</span> </span>{
  render() {
    <span class="hljs-keyword">return</span> <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">FaHeart</span> /&gt;</span></span>  
  }
}

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> Like;
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/HeartIcon.png" alt="Image" width="600" height="400" loading="lazy">
<em>Rendered Font Awesome heart icon</em></p>
<p>Adding the <code>&lt;FaHeart /&gt;</code> icon to the render method displays the icon on your web page. This is possible because we already imported the icon at the top of the file. </p>
<blockquote>
<p>Note: You must match any icon copied to its import code. So you cannot paste a Bootstrap icon in a Font Awesome icon import code. Doing this will not give you the right result.</p>
</blockquote>
<h2 id="heading-how-to-use-more-than-one-icon">How to use more than one icon</h2>
<p>Since you already imported the icon library you want, you will not need to import it a second time. All you have to do is go back to the React icons page. Copy another icon that you want and paste it in the curly braces.</p>
<p>This is how you can use as many icons as you need from the Font Awesome library.</p>
<h6 id="heading-code-example-2">Code example</h6>
<pre><code class="lang-jsx"><span class="hljs-keyword">import</span> React, { Component } <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>;
<span class="hljs-keyword">import</span> { FaHeart, FaRegHeart } <span class="hljs-keyword">from</span> <span class="hljs-string">'react-icons/fa'</span>;

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Like</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Component</span> </span>{
  render() {
    <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">FaHeart</span> /&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">FaRegHeart</span> /&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
    ) 
  }
}

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> Like
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/doubleHeart.png" alt="Image" width="600" height="400" loading="lazy">
<em>Two font awesome heart icons rendered</em></p>
<h2 id="heading-how-to-render-multiple-icons-from-different-icon-libraries">How to render multiple icons from different icon libraries</h2>
<p>There are some subtle differences between different icon libraries. And sometimes you might not be able to find all the icons you need in one library. </p>
<p>In that case, you can use icons from more than one icon library. You only need to import the icon libraries you want. For example, you can import both Bootstrap and Font Awesome. Then you just need to render the icons as before. </p>
<h6 id="heading-code-example-3">Code example</h6>
<pre><code class="lang-jsx"><span class="hljs-keyword">import</span> React, { Component } <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>;
<span class="hljs-keyword">import</span> { FaHeart, FaRegHeart } <span class="hljs-keyword">from</span> <span class="hljs-string">'react-icons/fa'</span>;
<span class="hljs-keyword">import</span> { BsHeartFill, BsHeart } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-icons/bs"</span>;

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Icons</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Component</span> </span>{
  render() {
    <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">FaHeart</span> /&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">FaRegHeart</span> /&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">BsHeartFill</span> /&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">BsHeart</span> /&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
    ) 
  }
}

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> Icons
</code></pre>
<p>The ability to import different icon libraries gives you access to a wide range of icons. You can always find what you need by the time you search through all the icon libraries. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/FourHearts.png" alt="Image" width="600" height="400" loading="lazy">
<em>Rendered hearts from font awesome and bootstrap icon libraries</em></p>
<blockquote>
<p>Note: Only use icons from multiple libraries if it's absolutely necessary, as it may slow down your app.  </p>
</blockquote>
<h2 id="heading-how-to-display-icons-inline">How to display icons inline</h2>
<p>You might have noticed that the icons display in block layout. This is because we placed the icon elements one after the other. If you want them displayed inline, then simply place them side by side. Check out the code example below:</p>
<pre><code><span class="hljs-keyword">import</span> React, { Component } <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>;
<span class="hljs-keyword">import</span> { FaHeart, FaRegHeart } <span class="hljs-keyword">from</span> <span class="hljs-string">'react-icons/fa'</span>;
<span class="hljs-keyword">import</span> { BsHeartFill, BsHeart } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-icons/bs"</span>;

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Like</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Component</span> </span>{
  render() {
    <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">FaHeart</span> /&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-name">FaRegHeart</span> /&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-name">BsHeartFill</span> /&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-name">BsHeart</span> /&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
    ) 
  }
}

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> Like
</code></pre><p><img src="https://www.freecodecamp.org/news/content/images/2021/09/separatedHearts.png" alt="Image" width="600" height="400" loading="lazy">
<em>Four hearts inline</em></p>
<h2 id="heading-how-to-style-font-awesome-icons-in-a-react-app">How to style Font Awesome icons in a React app</h2>
<p>Generally, icons come in a bland color and basic size that you might not like for your page. So you will need to style the icons to your preferences. </p>
<p>React icons are quite easy to style. You can use the following styles to style a React Icon:</p>
<ul>
<li>Inline styles</li>
<li>Resize with HTML heading tags</li>
<li>Object styles</li>
<li>CSS stylesheet </li>
<li>Icon context</li>
</ul>
<h3 id="heading-how-to-use-inline-styles-to-style-icons">How to use inline styles to style icons</h3>
<p>You can style a React icon using inline CSS styles. This means that you'll style the icon from the element's self-closing tag. </p>
<p>Use this method when you have just one or two icons to style. You can also use it when you need icons in different styles. Check out the code example below:</p>
<h6 id="heading-code-example-4">Code example</h6>
<pre><code class="lang-jsx"><span class="hljs-keyword">import</span> React, { Component } <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>;
<span class="hljs-keyword">import</span> { FaHeart, FaRegHeart } <span class="hljs-keyword">from</span> <span class="hljs-string">'react-icons/fa'</span>;

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Like</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Component</span> </span>{
  render() {
    <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">FaHeart</span> <span class="hljs-attr">style</span>=<span class="hljs-string">{{color:</span> '<span class="hljs-attr">red</span>', <span class="hljs-attr">fontSize:</span> '<span class="hljs-attr">50px</span>'}}/&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">FaRegHeart</span> <span class="hljs-attr">style</span>=<span class="hljs-string">{{color:</span> '<span class="hljs-attr">green</span>', <span class="hljs-attr">fontSize:</span> '<span class="hljs-attr">50px</span>'}}/&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
    ) 
  }
}

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> Like
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/twoColoredHearts.png" alt="Image" width="600" height="400" loading="lazy">
<em>colored font awesome hearts</em></p>
<p>From the example above, we are passing color and font size to the style property. The first icon is solid red. The second icon is outlined in green. </p>
<p>Notice that font size is written in camel case. CSS properties with two words are written in camel case as opposed to using <code>-</code>  to separate them in vanilla CSS. This is the convention in React. </p>
<h3 id="heading-how-to-resize-icons-with-html-heading-tags">How to resize icons with HTML heading tags</h3>
<p>You can also use HTML heading tags to make your icons assume the same size as the heading tag used. </p>
<p>To do this, add the icon element in between the heading's opening and closing tags. </p>
<pre><code class="lang-jsx"><span class="hljs-keyword">import</span> React, { Component } <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>;
<span class="hljs-keyword">import</span> { FaHeart, FaRegHeart } <span class="hljs-keyword">from</span> <span class="hljs-string">'react-icons/fa'</span>;

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Like</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Component</span> </span>{
  render() {
    <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">h1</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">FaHeart</span> <span class="hljs-attr">style</span>=<span class="hljs-string">{{color:</span> '<span class="hljs-attr">red</span>'}}/&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span>
       <span class="hljs-tag">&lt;<span class="hljs-name">h6</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">FaRegHeart</span> <span class="hljs-attr">style</span>=<span class="hljs-string">{{color:</span> '<span class="hljs-attr">green</span>'}}/&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">h6</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
    ) 
  }
}

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> Like
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/BigAndSmallHearts.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>In the code above we added the two icon tags between the HTML heading tags respectively.</p>
<h3 id="heading-how-to-style-icons-with-object-styles">How to style icons with object styles</h3>
<p>You can store and use the styles you want for your icons in a variable as object properties. Just declare an object and assign all the styles you want for the icons to it. </p>
<p>Use this method when you have a number of styles to pass to the icons. You can also use this style when targeting a specific icon. Check out the code example below:</p>
<h6 id="heading-code-example-5">Code example</h6>
<pre><code class="lang-jsx"><span class="hljs-keyword">import</span> React, { Component } <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>;
<span class="hljs-keyword">import</span> { FaHeart, FaRegHeart } <span class="hljs-keyword">from</span> <span class="hljs-string">'react-icons/fa'</span>;

<span class="hljs-keyword">const</span> fontStyles = {<span class="hljs-attr">color</span>: <span class="hljs-string">'blue'</span>, <span class="hljs-attr">fontSize</span>: <span class="hljs-string">'80px'</span>};

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Like</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Component</span> </span>{
  render() {
    <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">FaHeart</span> <span class="hljs-attr">style</span>=<span class="hljs-string">{fontStyles}/</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">FaRegHeart</span> <span class="hljs-attr">style</span>=<span class="hljs-string">{fontStyles}/</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
    ) 
  }
}

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> Like
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/BlueHearts.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>In the code example above, we stored the styles we wanted in an object. Then we passed the object as a value to the style property on the icon. </p>
<p>All the icons that have the object styles passed to them assume the same styling. So in the above example, both icons now have same blue color and size of 80px.</p>
<h3 id="heading-how-to-style-icons-with-css-stylesheets">How to style icons with CSS stylesheets</h3>
<p>You can use a CSS stylesheet to style your icons as well. Using a stylesheet is most suitable when you have multiple styles and icons to incorporate into your app.</p>
<p>To use a style sheet, you have to import the style sheet to the file where you have the icons. Pass a class on the icon elements you want. Style the icon elements using the class in the stylesheet. Check out the code examples below:</p>
<h6 id="heading-code-example-6">Code example</h6>
<pre><code class="lang-css">//<span class="hljs-selector-tag">style</span><span class="hljs-selector-class">.css</span> <span class="hljs-selector-tag">file</span>
<span class="hljs-selector-class">.yellow</span>{
<span class="hljs-attribute">font-size</span>: <span class="hljs-number">80px</span>;
<span class="hljs-attribute">color</span>: yellow
}

<span class="hljs-selector-class">.purple</span>{
<span class="hljs-attribute">font-size</span>: <span class="hljs-number">80px</span>;
<span class="hljs-attribute">color</span>: purple
}
</code></pre>
<pre><code class="lang-jsx"><span class="hljs-keyword">import</span> React, { Component } <span class="hljs-keyword">from</span> <span class="hljs-string">'react'</span>;
<span class="hljs-keyword">import</span> { FaHeart, FaRegHeart } <span class="hljs-keyword">from</span> <span class="hljs-string">'react-icons/fa'</span>;
<span class="hljs-keyword">import</span> <span class="hljs-string">"./style.css"</span>;

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Like</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Component</span> </span>{
  render() {
    <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">FaHeart</span> <span class="hljs-attr">className</span>=<span class="hljs-string">'yellow'</span>/&gt;</span>
       <span class="hljs-tag">&lt;<span class="hljs-name">FaRegHeart</span> <span class="hljs-attr">className</span>=<span class="hljs-string">'purple'</span>/&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
    ) 
  }
}

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> Like
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/YellowAndPurpleHearts-1.png" alt="Image" width="600" height="400" loading="lazy">
<em>Yellow and purple icons</em></p>
<p>The code examples are showing a CSS stylesheet with styles on two classes. We imported this stylesheet into our React file. We passed these classes to the styles on the React elements where we want them.</p>
<h3 id="heading-how-to-style-icons-with-icon-context">How to style icons with icon context</h3>
<p>You can also import the React Icon context rather than adding multiple class names on different icons. Give the icon context the values you want. Add your icon elements inside the context as shown below:</p>
<h6 id="heading-code-example-7">Code example</h6>
<pre><code><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> { IconContext } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-icons"</span>;

<span class="hljs-keyword">const</span> Like = <span class="hljs-function">() =&gt;</span> {
  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">IconContext.Provider</span>
      <span class="hljs-attr">value</span>=<span class="hljs-string">{{style:</span> { <span class="hljs-attr">color:</span> '#<span class="hljs-attr">f4a200</span>', <span class="hljs-attr">fontSize:</span> '<span class="hljs-attr">50px</span>' }}}
    &gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">FaHeart</span> /&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">FaRegHeart</span> /&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">IconContext.Provider</span>&gt;</span></span>
  );
}

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> Like;
</code></pre><p><img src="https://www.freecodecamp.org/news/content/images/2021/09/Two-YellowHearts.png" alt="Image" width="600" height="400" loading="lazy">
<em>Two yellow hearts in line</em></p>
<p>In the code example, we imported the React icon context. We then used a stateless function to render the icons in the icon context. </p>
<p>Notice that the icon context has given the icons an inline display by default. If you want the icons to maintain a block display, then add <code>display: 'block'</code> as one of the properties. In other words, you can pass in any styles you want for the fonts in the icon context tag.</p>
<h2 id="heading-all-icon-library-import-codes-for-react-icons">All icon library import codes for React-icons</h2>
<p>In case you want to use icons from other libraries (besides those we've discussed here), here are their import codes so you can get started with them quickly:</p>
<pre><code><span class="hljs-keyword">import</span> { IconName } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-icons/ai"</span>; <span class="hljs-comment">//Ant Design Icons</span>
<span class="hljs-keyword">import</span> { IconName } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-icons/bs"</span>; <span class="hljs-comment">//Bootstrap Icons</span>
<span class="hljs-keyword">import</span> { IconName } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-icons/bi"</span>; <span class="hljs-comment">//Boxicons</span>
<span class="hljs-keyword">import</span> { IconName } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-icons/di"</span>; <span class="hljs-comment">//Devicon Icons</span>
<span class="hljs-keyword">import</span> { IconName } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-icons/fi"</span>; <span class="hljs-comment">//Feather </span>
<span class="hljs-keyword">import</span> { IconName } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-icons/fc"</span>; <span class="hljs-comment">//Flat Color Icons</span>
<span class="hljs-keyword">import</span> { IconName } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-icons/fa"</span>; <span class="hljs-comment">//Font Awesome Icons</span>
<span class="hljs-keyword">import</span> { IconName } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-icons/gi"</span>; <span class="hljs-comment">//Game Icons</span>
<span class="hljs-keyword">import</span> { IconName } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-icons/go"</span>; <span class="hljs-comment">//Github Octicons Icons</span>
<span class="hljs-keyword">import</span> { IconName } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-icons/gr"</span>; <span class="hljs-comment">//Grommet-Icons</span>
<span class="hljs-keyword">import</span> { IconName } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-icons/hi"</span>; <span class="hljs-comment">//HeroIcons</span>
<span class="hljs-keyword">import</span> { IconName } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-icons/im"</span>; <span class="hljs-comment">//IcoMoon Free</span>
<span class="hljs-keyword">import</span> { IconName } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-icons/io"</span>; <span class="hljs-comment">//Ionicon4</span>
<span class="hljs-keyword">import</span> { IconName } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-icons/io5"</span>; <span class="hljs-comment">//Ionicon5</span>
<span class="hljs-keyword">import</span> { IconName } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-icons/md"</span>; <span class="hljs-comment">//Material Design Icons</span>
<span class="hljs-keyword">import</span> { IconName } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-icons/ri"</span>; <span class="hljs-comment">//Remix Icons</span>
<span class="hljs-keyword">import</span> { IconName } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-icons/si"</span>; <span class="hljs-comment">//Simple Icons</span>
<span class="hljs-keyword">import</span> { IconName } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-icons/ti"</span>; <span class="hljs-comment">//Typicons</span>
<span class="hljs-keyword">import</span> { IconName } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-icons/vsc"</span>; <span class="hljs-comment">//VS Code Icons</span>
<span class="hljs-keyword">import</span> { IconName } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-icons/wi"</span>; <span class="hljs-comment">//Weather Icons</span>
<span class="hljs-keyword">import</span> { IconName } <span class="hljs-keyword">from</span> <span class="hljs-string">"react-icons/cg"</span>; <span class="hljs-comment">//css.gg</span>
</code></pre><p>All the icon libraries available on the React-icons page are used same way as discussed in this article.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>React icons are highly optimized, scalable, and easy to use. I hope I have been able to help you learn the basics of using them. You can read the <a target="_blank" href="https://react-icons.github.io/react-icons/">documentation</a> for react-icons to learn more.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Use SVG Icons in React with React Icons and Font Awesome ]]>
                </title>
                <description>
                    <![CDATA[ Icons are a way to visually communicate concepts and meaning without the use of words. This could be for categorization, an action, or even a warning.  How can we add icons using SVG to our React apps to improve our visual communication? What is SVG... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-use-svg-icons-in-react-with-react-icons-and-font-awesome/</link>
                <guid isPermaLink="false">66b8e37a6a98b2a27ee1f34e</guid>
                
                    <category>
                        <![CDATA[ Icons ]]>
                    </category>
                
                    <category>
                        <![CDATA[ React ]]>
                    </category>
                
                    <category>
                        <![CDATA[ SVG ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Colby Fayock ]]>
                </dc:creator>
                <pubDate>Thu, 24 Sep 2020 16:07:39 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/09/react-icons.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Icons are a way to visually communicate concepts and meaning without the use of words. This could be for categorization, an action, or even a warning. </p>
<p>How can we add icons using SVG to our React apps to improve our visual communication?</p>
<ul>
<li><a class="post-section-overview" href="#heading-what-is-svg">What is SVG?</a></li>
<li><a class="post-section-overview" href="#heading-what-makes-svg-great-for-the-web">What makes SVG great for the web?</a></li>
<li><a class="post-section-overview" href="#heading-part-0-creating-a-react-app">Part 0: Creating a React app</a></li>
<li><a class="post-section-overview" href="#heading-part-1-adding-svg-icons-with-react-icons">Part 1: Adding SVG icons with react-icons</a></li>
<li><a class="post-section-overview" href="#heading-part-2-manually-adding-svg-files-to-a-react-component">Part 2: Manually adding SVG files to a React component</a></li>
</ul>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/OtcA2EAlldo" 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-svg">What is SVG?</h2>
<p><a target="_blank" href="https://www.w3.org/Graphics/SVG/">SVG</a> stands for Scalable Vector Graphics. It’s a file format based on a markup language similar to XML that allows developers and designers to create vector-based images using path definitions.</p>
<h2 id="heading-what-makes-svg-great-for-the-web">What makes SVG great for the web?</h2>
<p>SVG was born for the web. It’s an open standard that was created by W3C to provide a better way to add images to the web. If you open an SVG file on your computer, you might be surprised to find that it’s all code!</p>
<p>This plays a part in the small file size. Typically when using SVG, you can take advantage of its smaller size compared to larger image files that might be required to deliver the same high resolution.</p>
<p>Additionally, since we’re defining SVG as paths, they can scale as large or as small as we want. This makes them extra flexible for web usage, especially when making experiences responsive.</p>
<h2 id="heading-what-are-we-going-to-create">What are we going to create?</h2>
<p>We’re first going to walk through using a package called <a target="_blank" href="https://react-icons.github.io/react-icons/">react-icons</a> that will allow us to easily import icons from popular icon sets like <a target="_blank" href="https://fontawesome.com/">Font Awesome</a> right into our app.</p>
<p>We’ll also take a look at how we can manually add SVG files right into our app by copying the code of an SVG file right into a new component.</p>
<h2 id="heading-part-0-creating-a-react-app">Part 0: Creating a React app</h2>
<p>For this walkthrough, you can use any React framework you’d like whether that’s <a target="_blank" href="https://create-react-app.dev/">Create React App</a> or <a target="_blank" href="https://nextjs.org/">Next.js</a>. You can even use an existing project.</p>
<p>Because we don’t need anything special to add our icons, I’m going to use create-react-app.</p>
<p>To get started with create-react-app, you can create a new project using the following command in your terminal:</p>
<pre><code>yarn create react-app [project-name]
# or
npx create-react-app [project-name]
</code></pre><p><em>Note: replace <code>[project-name]</code> with the name you want to use for your project. I’m going to use <code>my-svg-icons</code>.</em></p>
<p>Once you have your new app or your existing app, we should be ready to go!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/new-create-react-app.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>New Create React App</em></p>
<h2 id="heading-part-1-adding-svg-icons-with-react-icons">Part 1: Adding SVG icons with react-icons</h2>
<h3 id="heading-adding-react-icons-to-your-project">Adding react-icons to your project</h3>
<p>To get started with react-icons, we want to install it in our project.</p>
<p>Inside of your project, run the following command:</p>
<pre><code>yarn add react-icons
# or
npm install react-icons --save
</code></pre><p>Once it’s completed, we should be ready to use it in our project.</p>
<h3 id="heading-selecting-icons-for-a-project">Selecting icons for a project</h3>
<p>One of the cool things about react-icons is the extensive library they make available within the single package.</p>
<p>Not only do we have Font Awesome immediately available, we have <a target="_blank" href="https://primer.style/octicons">GitHub’s Octicons</a>, <a target="_blank" href="https://heroicons.com/">Heroicons</a>, <a target="_blank" href="https://google.github.io/material-design-icons/">Material Design Icons</a>, and <a target="_blank" href="https://react-icons.github.io/">a whole bunch more</a>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/react-icons-heroicons.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>react-icons Heroicons</em></p>
<p>When choosing icons, you pretty much have the ability to use any icon you want at any time. That said, I would recommend trying to keep a consistent look and feel with your icons.</p>
<p>If you primarily use Font Awesome for your website, it might look a bit strange and inconsistent if you were to start adding <a target="_blank" href="https://react-icons.github.io/icons?name=fc">Flat Color Icons</a> to the mix. You ultimately want to provide an experience that people will be able to easily identify the patterns that you create.</p>
<h3 id="heading-using-react-icons-in-your-project">Using react-icons in your project</h3>
<p>Once you’ve found the icons you want to use, we can now add them to our project.</p>
<p>react-icons’s website makes it easy for us to look up the name of the icon we want to use to import to our project.</p>
<p>If we wanted to use the Font Awesome rocket icon, we can navigate to Font Awesome in the sidebar, search the page for “rocket” (CMD+F or CTRL+F), and then click the icon which will copy its name to your clipboard.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/font-awesome-rocket.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Font Awesome rocket icon</em></p>
<p>We could also search for “rocket” in the search form at the top left of the page, which shows us the result “rocket” throughout all icon sets.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/react-icons-rocket.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Rocket icons in react-icons</em></p>
<p>Inside of our project, we can now import that icon. Similar to the instructions at the top of the react-icons page, we want to import that specific icon from the <code>react-icons/fa</code>, which refers to the Font Awesome module of react-icons.</p>
<p>Add the following to the top of the file you want to import the icon in. If using a new create-react-app project, you can add it to the top of <code>src/App.js</code>.</p>
<pre><code class="lang-js"><span class="hljs-keyword">import</span> { FaRocket } <span class="hljs-keyword">from</span> <span class="hljs-string">'react-icons/fa'</span>;
</code></pre>
<p>To test this out, let’s replace the React logo with our icon.</p>
<p>Remove the <code>&lt;img</code> component and instead add:</p>
<pre><code class="lang-jsx">&lt;FaRocket /&gt;
</code></pre>
<p>And if we reload the page, we can see our rocket!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/create-react-app-rocket-icon.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Rocket icon in React app</em></p>
<p>Our rocket isn’t spinning like the React logo though, so let’s fix that.</p>
<p>Add the class <code>.App-logo</code> to the <code>FaRocket</code> component:</p>
<pre><code class="lang-jsx">&lt;FaRocket className=<span class="hljs-string">"App-logo"</span> /&gt;
</code></pre>
<p>And the rocket should now be spinning!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/create-react-app-rocket-spin.gif" alt="Image" width="600" height="400" loading="lazy">
<em>Spinning rocket icon in React app</em></p>
<p>But it’s also a little small. If we look inside of <code>src/App.css</code>, we’re setting the height of <code>.App-logo</code> to <code>40vmin</code>. While that’s working, for our icon to fill the space, we need to also provide a width for it to fill.</p>
<p>Add the following to the <code>.App-logo</code> class to add a width:</p>
<pre><code class="lang-css"><span class="hljs-selector-tag">width</span>: 40<span class="hljs-selector-tag">vmin</span>;
</code></pre>
<p>And while it’s probably a little too big now, we’re at a more appropriate size and we have our icon!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/create-react-app-icon-rocket-spin-large.gif" alt="Image" width="600" height="400" loading="lazy">
<em>Increased size of spinning rocket icon in React app</em></p>
<p><a target="_blank" href="https://github.com/colbyfayock/my-svg-icons/commit/036112c3e2ffc5f42a53c68e8025fe70a87e3b13">Follow along with the commit</a>.</p>
<h2 id="heading-part-2-manually-adding-svg-files-to-a-react-component">Part 2: Manually adding SVG files to a React component</h2>
<p>Sometimes you don’t want to add a new library just to get an icon. Sometimes it’s a custom icon that’s not available in a public library.</p>
<p>Luckily with React, we can create a new SVG component pretty easily that allows us to add our custom SVG icons anywhere we want.</p>
<p>First, let’s find an icon.</p>
<p>While all Heroicons are available inside react-icons, let’s use it as an example since it’s easy to find and copy some SVG code.</p>
<p>Go to heroicons.com and search for an icon that you’d like to use for this example. I’m going to use “globe”.</p>
<p>After finding the icon you want, hover over that icon, where you’ll see options to copy that icon as SVG or JSX, and copy it as JSX.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/heroicons-copy-svg.gif" alt="Image" width="600" height="400" loading="lazy">
<em>Copy as JSX in Heroicons</em></p>
<p>With that icon copied, create a new file under <code>src</code> called <code>Globe.js</code>.</p>
<p>Inside of that file, we’re going to create a new component called Globe and paste in our SVG within that component.</p>
<pre><code class="lang-jsx"><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> Globe = <span class="hljs-function">() =&gt;</span> {
  <span class="hljs-keyword">return</span> (
    <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">svg</span> <span class="hljs-attr">xmlns</span>=<span class="hljs-string">"http://www.w3.org/2000/svg"</span> <span class="hljs-attr">fill</span>=<span class="hljs-string">"none"</span> <span class="hljs-attr">viewBox</span>=<span class="hljs-string">"0 0 24 24"</span> <span class="hljs-attr">stroke</span>=<span class="hljs-string">"currentColor"</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">path</span> <span class="hljs-attr">stroke-linecap</span>=<span class="hljs-string">"round"</span> <span class="hljs-attr">stroke-linejoin</span>=<span class="hljs-string">"round"</span> <span class="hljs-attr">stroke-width</span>=<span class="hljs-string">"2"</span> <span class="hljs-attr">d</span>=<span class="hljs-string">"M3.055 11H5a2 2 0 012 2v1a2 2 0 002 2 2 2 0 012 2v2.945M8 3.935V5.5A2.5 2.5 0 0010.5 8h.5a2 2 0 012 2 2 2 0 104 0 2 2 0 012-2h1.064M15 20.488V18a2 2 0 012-2h3.064M21 12a9 9 0 11-18 0 9 9 0 0118 0z"</span> /&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">svg</span>&gt;</span></span>
  )
}

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> Globe;
</code></pre>
<p><em>Note: when copying normal SVG to a React component, it might not work "as is". Sometimes SVG files include CSS classes or element attributes that aren't valid with JSX.</em> </p>
<p><em>If you run into errors, try fixing the attributes and looking at the web console to see the warnings and errors React throws. Because we copied as JSX, we were able to make it work right away.</em></p>
<p>Now, go back to <code>src/App.js</code> and import our new component:</p>
<pre><code class="lang-js"><span class="hljs-keyword">import</span> Globe <span class="hljs-keyword">from</span> <span class="hljs-string">'./Globe'</span>;
</code></pre>
<p>Then we can replace our rocket icon with our new component:</p>
<pre><code class="lang-jsx">&lt;Globe /&gt;
</code></pre>
<p>And if we open up our browser, we can see our globe!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/create-react-app-globe-large.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Large globe icon in REact app</em></p>
<p>Though, it’s a little big.</p>
<p>We want to apply our <code>.App-logo</code> class to our Globe component, so we need to update that component to take a <code>className</code> prop.</p>
<p>Back at <code>src/Globe.js</code>, add a <code>className</code> prop argument:</p>
<pre><code><span class="hljs-keyword">const</span> Globe = <span class="hljs-function">(<span class="hljs-params">{ className }</span>) =&gt;</span> {
</code></pre><p>Then, add a new prop with that <code>className</code> to the <code>&lt;svg</code> component:</p>
<pre><code class="lang-jsx">&lt;svg className={className}
</code></pre>
<p>Now, we can update our Globe component in <code>src/App.js</code> to include that class:</p>
<pre><code class="lang-jsx">&lt;Globe className=<span class="hljs-string">"App-logo"</span> /&gt;
</code></pre>
<p>And if we reload the page, we can see our logo is back at the right size and it’s spinning again!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/create-react-app-globe-icon-spinning.gif" alt="Image" width="600" height="400" loading="lazy">
<em>Spinning, normal size globe icon in React app</em></p>
<p><a target="_blank" href="https://github.com/colbyfayock/my-svg-icons/commit/87b00748fc9b38d80336ddb5f6f823388c2edead">Follow along with the commit</a>.</p>
<h2 id="heading-why-dont-we-include-it-as-an-img-file">Why don’t we include it as an img file?</h2>
<p>While we can include it as an image file just like React does in the default create-react-app code, we get a few benefits from adding our SVG files “inline”.</p>
<p>For one, when adding SVG inline, we can access the different paths with CSS properties. This gives us more flexibility for customizing it dynamically.</p>
<p>It’s also going to provide fewer HTTP requests. The browser will know how to load that SVG, so we don’t need to bother the browser to request that file to include in the page.</p>
<p>That said, it’s still a valid option for adding an SVG file to the page.</p>
<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>
    <li>
      <a href="https://github.com/sponsors/colbyfayock">? Sponsor Me</a>
    </li>
  </ul>
</div>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Organize and Sync SVG Files with Iconset ]]>
                </title>
                <description>
                    <![CDATA[ SVG is an awesome way to bring vector images into a design and development workflow. But collecting and organizing SVG files on your computer can be challenging.  How can Iconset help take away the pain and get us more productive? What is SVG? What ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-organize-and-sync-svg-files-with-iconset/</link>
                <guid isPermaLink="false">66b8e3620a89d796f29a16f5</guid>
                
                    <category>
                        <![CDATA[ Icons ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Productivity ]]>
                    </category>
                
                    <category>
                        <![CDATA[ SVG ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Development ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Colby Fayock ]]>
                </dc:creator>
                <pubDate>Tue, 08 Sep 2020 15:47:35 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/09/iconset.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>SVG is an awesome way to bring vector images into a design and development workflow. But collecting and organizing SVG files on your computer can be challenging. </p>
<p>How can Iconset help take away the pain and get us more productive?</p>
<ul>
<li><a class="post-section-overview" href="#heading-what-is-svg">What is SVG?</a></li>
<li><a class="post-section-overview" href="#heading-what-is-iconset">What is Iconset?</a></li>
<li><a class="post-section-overview" href="#heading-what-are-we-going-to-learn">What are we going to learn?</a></li>
<li><a class="post-section-overview" href="#heading-part-1-getting-started-with-iconset">Part 1: Getting started with Iconset</a></li>
<li><a class="post-section-overview" href="#heading-part-2-adding-icons-to-iconset">Part 2: Adding icons to Iconset</a></li>
<li><a class="post-section-overview" href="#heading-part-3-using-iconset-with-design-software-like-figma">Part 3: Using Iconset with design software like Figma</a></li>
<li><a class="post-section-overview" href="#part-4-using-iconset-in-development-like-react">Part 4: Using Iconset in development like with React</a></li>
<li><a class="post-section-overview" href="#heading-part-5-syncing-iconset-across-multiple-computers-with-dropbox">Part 5: Syncing Iconset across multiple computers with Dropbox</a></li>
</ul>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/KXBf5l4rbL4" 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-svg">What is SVG?</h2>
<p><a target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/SVG">SVG</a> is a nearly 20 year old image file format. And while it’s been around for a while, it has only recently been gaining momentum in the development  community.</p>
<p>SVG is great for a number of reasons. First of all, it’s a vector format, meaning it scales as big or small as you want. </p>
<p>But it’s also flexible in that you can use SVG right in your development project with a typically small file size and infinite scale. You can even <a target="_blank" href="https://frontend.horse/issues/6/#slash">animate it</a>!</p>
<p>But trying to collect and organize a bunch of files can be challenging. What do you name them? Do you have a computer that can easily preview them? What about search?</p>
<h2 id="heading-what-is-iconset">What is Iconset?</h2>
<p><a target="_blank" href="https://iconset.io/">Iconset</a> is a free cross-platform tool that allows you to collect and manage all of your SVG files in one place.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/iconset-font-awesome.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Iconset library</em></p>
<p>Love to quickly move between <a target="_blank" href="https://fontawesome.com/">Font Awesome</a> and <a target="_blank" href="https://heroicons.com/">heroicons</a> but don’t want to keep switching libraries? You can use Iconset to make a quick search and drag it right into your project.</p>
<p>If you’re planning on using it for a <a target="_blank" href="https://reactjs.org/">React</a> project, you can even copy the file as JSX and dump it right into your project!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/iconset-copy-as.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Iconset "Copy As"</em></p>
<h2 id="heading-what-are-we-going-to-learn">What are we going to learn?</h2>
<p>We’re going to walk through a few different scenarios that'll show us how Iconset is useful. </p>
<p>We’re also going to walk through how you can easily manage Iconset between different computers or environments so you can have the same great library anywhere you work.</p>
<h2 id="heading-part-1-getting-started-with-iconset">Part 1: Getting started with Iconset</h2>
<p>To get started, you’ll need to first install Iconset locally. It should be a similar installation process as any other application.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/iconset-no-icons.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Iconset with no icons</em></p>
<p>Once it’s ready and available locally, you should be able to open it up and see a UI with No Icons, which is expected, as it doesn’t come with any icons out of the box.</p>
<h2 id="heading-part-2-adding-icons-to-iconset">Part 2: Adding icons to Iconset</h2>
<p>Adding icons to Iconset is as easy as dragging in, but you have a few options during the process.</p>
<p>To get started, let’s download the free icon set <a target="_blank" href="https://heroicons.com/">heroicons</a>.</p>
<p>Download at: <a target="_blank" href="https://heroicons.com/">https://heroicons.com/</a>.</p>
<p>On the heroicons website, you should see a big Download all button, which will download a zip file including all of the files.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/download-heroicons.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Downloading heroicons</em></p>
<p>If you navigate to the optimized folder, you’ll see that there are two different versions: solid and outline.</p>
<p>Now to get these into Iconset, select each folder individually and drag it right into Iconset.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/iconset-drag-in-icons.gif" alt="Image" width="600" height="400" loading="lazy">
<em>Dragging heroicons into Iconset</em></p>
<p>Once there, you have a few options.</p>
<ul>
<li><strong>Set:</strong> Since this is our first set, you’ll automatically be creating a new one. If you had existing sets, you could import into those sets.</li>
<li><strong>Set Name:</strong> Here we can name the set something that we’ll remember. For this, I recommend naming it “heroicons - Outline”.</li>
<li><strong>Import Options:</strong> these are optional settings, but I typically select the optimize and clean option to make sure any icons are immediately ready to get working with.</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/iconset-heroicons.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Iconset with heroicons set</em></p>
<p>And once you click Import, it will do it’s thing, and you’ll now have your first set of icons in Iconset!</p>
<p>You can go ahead and do the same thing with the solid directory so then we’ll now have our two sets ready to go.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/iconset-heroicons-solid-outline.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Iconset with Outling and Solid sets of heroicons</em></p>
<p>At this point, you can use Iconset to search through your icons and see all of your files currently available in your collection.</p>
<h2 id="heading-part-3-using-iconset-with-design-software-like-figma">Part 3: Using Iconset with design software like Figma</h2>
<p>The great thing about Iconset is how easy it is to use it with design software like <a target="_blank" href="http://figma.com/">Figma</a>.</p>
<p>If I wanted to add an envelope icon to my website so people could contact me, I could search for the mail icon, and simply drag it onto my canvas:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/iconset-drag-icon-into-figma.gif" alt="Image" width="600" height="400" loading="lazy">
<em>Dragging mail icon into Figma</em></p>
<p>I can then treat it like any other vector design element and immediately use it in my project.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/svg-icon-in-figma.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>SVG Mail icon in Figma</em></p>
<h2 id="heading-part-4-using-iconset-in-development-like-with-react">Part 4: Using Iconset in development like with React</h2>
<p>Another cool thing is how easy it is to use in a project like React.</p>
<p>Out of the box, you get a few different ways you can copy the file and use it in development like copying it as JSX.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/nextjs-starter-sass.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Next.js Sass Starter</em></p>
<p>If I feel like my <a target="_blank" href="https://github.com/colbyfayock/next-sass-starter">Next.js Sass Starter</a> could use some icons on the page, I can right-click any icon I want and under Copy As select JSX I can paste it right into my project!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/iconset-copy-icon-as-jsx.gif" alt="Image" width="600" height="400" loading="lazy">
<em>Copying icon from Iconset as JSX</em></p>
<p>And while it will need some styling once you drop it in just like any other image or icon, it’s immediately ready to go.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/svg-icon-nextjs-project.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Using icon JSX in Next.js React app</em></p>
<h2 id="heading-part-5-syncing-iconset-across-multiple-computers-with-dropbox">Part 5: Syncing Iconset across multiple computers with Dropbox</h2>
<p>With Iconset, you have the ability to switch between different libraries. But importantly, you can also set the location of your library.</p>
<p>When Iconset creates your library, it stores everything as files and a database on your computer.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/iconset-location.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Iconset library folder</em></p>
<p>And inside the Iconset UI, we can both Move and Switch the location we use.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/iconset-settings.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Iconset library settings</em></p>
<p>If this is your first time setting up Iconset, you can start by clicking Move and then selecting the location you want to sync it to.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/iconset-move-location.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Moving Iconset library location</em></p>
<p>And once you click Move, it will move it to that directory, like a folder on Dropbox, and sync to the cloud like any other folder and file.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/iconset-sync-to-dropbox.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Syncing Iconset library with Dropbox</em></p>
<p>Alternatively, if you already have a shared Iconset library or if you’re setting this up on a new computer, you can use the Switch option, and select that option right from Dropbox.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/iconset-switch-locations.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Switching Iconset location</em></p>
<p>And once you hit Switch, you’ll now load up your shared library and be ready to get productive.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/09/iconset-full-library.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Iconset with full library</em></p>
<h2 id="heading-what-else-can-you-do">What else can you do?</h2>
<h3 id="heading-publish-and-share-icon-sets">Publish and share icon sets</h3>
<p>Another cool feature is that you can export sets and share them. If you’ve spent a lot of time on a collection and want to share it with others, export it, publish it, and share it with the community!</p>
<h3 id="heading-more-organization">More organization</h3>
<p>Iconset also supports features like Folders and Favorites. This makes it even easier to group and collect the icons however it makes sense to you to keep you productive.</p>
<p>It also supports tagging, making it even easier to search.</p>
<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>
    <li>
      <a href="https://github.com/sponsors/colbyfayock">? Sponsor Me</a>
    </li>
  </ul>
</div>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How I became a better designer and contributed to Open Source with Jolloficons ]]>
                </title>
                <description>
                    <![CDATA[ By Gbolahan Taoheed Fawale Earlier this year, when I was still very much actively involved in the tech community in Owerri, Imo state, Nigeria, my friends and I — mostly developers — discussed building open source projects. We wanted to help ourselve... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/becoming-a-better-designer-and-contributing-to-open-source-with-jolloficons-2c2a47330a1e/</link>
                <guid isPermaLink="false">66c345610bafa8455505c687</guid>
                
                    <category>
                        <![CDATA[ Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ figma ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Icons ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Nigeria ]]>
                    </category>
                
                    <category>
                        <![CDATA[ open source ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 31 Dec 2018 18:10:33 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*Q94juhUAJVJZNBaoizc1NA.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Gbolahan Taoheed Fawale</p>
<p>Earlier this year, when I was still very much actively involved in the tech community in Owerri, Imo state, Nigeria, my friends and I — mostly developers — discussed building open source projects. We wanted to help ourselves better hone our technical skills, while also solving societal problems and bringing some attention to the small but actively growing tech community in the state.</p>
<p>As the only designer amidst other developers, I had two ways to contribute: help mockup interfaces for the projects to be built, or pick up a front-end framework and participate directly code-wise since I already had some experience with frontend design. Our mantra was; ‘<em>there is nothing you can’t learn as long as you are ready or there’s something at stake</em>’ (like a design gig, full time job, or any form of career growth or material compensation.) These guys are still some of the most motivating and hardworking guys I have ever met.</p>
<blockquote>
<p><em>“Surround yourself with good people; surround yourself with positivity and people who are going to challenge you to make you better.”</em>— <strong>Ali Krieger</strong></p>
</blockquote>
<h3 id="heading-the-initial-idea">The initial idea</h3>
<p>An icon pack containing icons that are relative to Nigeria — or Africa as a whole — and can be used in different projects, was the initial idea that came to mind. However, that didn’t see the light of day at that particular period as I got carried away with work and other personal responsibilities.</p>
<p>At some point, I also experienced self paralysis. I kept overthinking types of icons, style and usability in terms of context because some of the icon ideas that came to mind were things I thought wouldn’t fit well in web/mobile app products. This particularly discouraged me a lot so I only kept “dreaming” instead of actually working on the project.</p>
<blockquote>
<p><em>“Go wide, explore and learn new things. Something will surely have a kick for you”</em><br>― <strong>Mustafa Saifuddin</strong></p>
</blockquote>
<p>I thought about my career as a designer. I wanted to be as good as I could at UI/UX as well as as other aspects of design and also be a source of inspiration to others. I believe trying out different things makes one better at their craft. As a F<a target="_blank" href="https://medium.com/figma-africa/">igma Africa</a> Ambassador and design advocate, I also wanted to create, teach and share some of the cool things you can do with Figma besides designing and mocking up interfaces. So I started doing realistic isometric and 3d illustrations with Figma, such as this <a target="_blank" href="https://medium.freecodecamp.org/how-i-designed-a-popular-landmark-building-in-isometric-3d-using-figma-f059fe333459">popular building</a> in Nigeria and <a target="_blank" href="https://medium.freecodecamp.org/creating-realistic-3d-objects-in-figma-carton-box-example-f674c21c3452">this</a>.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*4Ywzmq7Wz6IsOmNfIFRFpg.png" alt="Image" width="800" height="546" loading="lazy">
<em>Jollof Icons Isometric</em></p>
<p>The UI/UX field is quite wide and you simply can’t know it all. Learning continues every day on every new project/product, so I can’t also say I am an expert at it. But at the same time, I felt I should be able to test new waters, experiment and find other aspects of design and skills in technology I could pick up. After all, all these aspects of design and tech are interconnected one way or another.</p>
<h3 id="heading-the-impetus-to-begin">The impetus to begin</h3>
<p>In July this year, I got a new job and subsequently had to move to Lagos, Nigeria the following month — August. Without doubt, Lagos is the biggest tech hub in Nigeria and a sudden change in environment saw me overwhelmed with my “new community,” as I strove to adapt quickly while also trying to be on top of my game. Some of the best talent across Africa and the rest of the world can be found in Lagos. For me, it was a different ball game.</p>
<p>After achieving some level of stability at my new job and environment, I had to think back on some of my goals and projects I had always wanted to work on before the end of the year. Let me also add here that you have to always find time to work on projects on the side as this gives room for growth. This also makes it possible for you to become a better designer/developer and also double up on your interests and excitement to learn and do more.</p>
<p>I had always had these design ideas and concepts in my head — some of which I still haven’t been able to explore. However, I figured the best way to get them out was to design something. That prompted my decision to work on the icon pack.</p>
<p>Thinking I had already gotten more clarity on what I wanted to do, I spent days trying to figure out a style; something different. That was how I found myself in-between creating icons that can be used across different digital products and screens, creating something in the African context or just fleshing out all these design ideas and concepts in my head.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*_sA_oRihHMm26NXpSLCc4Q.png" alt="Image" width="800" height="546" loading="lazy">
<em>Jollof Icons 3d category</em></p>
<p>The first step was to get the domain name <a target="_blank" href="http://jolloficons.com">jolloficons.com</a>, to make myself “committed” to the project. It’s a psychological hack I deployed to make sure I started work on creating the icons.</p>
<p>I saw and loved what <a target="_blank" href="https://twitter.com/ninalimpi">Katerina Limpitsouni</a> and <a target="_blank" href="https://twitter.com/anges244">Aggelos Gesoulis</a> at <a target="_blank" href="https://undraw.co/">Undraw</a> were doing, same as Dave Gandy at <a target="_blank" href="https://fontawesome.com">fontawesome</a> and Vancura at VSCode. But I wanted to do something different, something ‘original’ to Africa. Though I couldn’t figure it out in time.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*3xR9EFz4ZjURYC2owCk4bQ.jpeg" alt="Image" width="510" height="680" loading="lazy">
<em>Octoverse Report 2018</em></p>
<h3 id="heading-the-push-i-needed">The push I needed</h3>
<p>This year at the State of Octoverse Developer Conference in San Francisco, we saw Nigeria rise to the fourth fastest growing country in terms of the proliferation of organisations, repositories and contributions made by Nigerian Developers on Github.</p>
<p>There have also been concerns about us consuming Open source tools more than we produce, but things are now changing faster than we think, thanks to organisations like <a target="_blank" href="https://www.freecodecamp.org/news/becoming-a-better-designer-and-contributing-to-open-source-with-jolloficons-2c2a47330a1e/undefined">Andela</a> and <a target="_blank" href="https://www.freecodecamp.org/news/becoming-a-better-designer-and-contributing-to-open-source-with-jolloficons-2c2a47330a1e/undefined">Ingressive</a> who are nurturing tech talents and supporting the technology ecosystem.</p>
<p>I must equally mention some of our developer advocates, experts and mentors <a target="_blank" href="https://www.freecodecamp.org/news/becoming-a-better-designer-and-contributing-to-open-source-with-jolloficons-2c2a47330a1e/undefined">Aniedi Udo-Obong</a>, <a target="_blank" href="https://www.freecodecamp.org/news/becoming-a-better-designer-and-contributing-to-open-source-with-jolloficons-2c2a47330a1e/undefined">Hanson Johnson</a>, <a target="_blank" href="https://www.freecodecamp.org/news/becoming-a-better-designer-and-contributing-to-open-source-with-jolloficons-2c2a47330a1e/undefined">Prosper Otemuyiwa</a>, <a target="_blank" href="https://www.freecodecamp.org/news/becoming-a-better-designer-and-contributing-to-open-source-with-jolloficons-2c2a47330a1e/undefined">Christian Nwamba</a>, <a target="_blank" href="https://www.freecodecamp.org/news/becoming-a-better-designer-and-contributing-to-open-source-with-jolloficons-2c2a47330a1e/undefined">Ire Aderinokun</a>, <a target="_blank" href="https://www.freecodecamp.org/news/becoming-a-better-designer-and-contributing-to-open-source-with-jolloficons-2c2a47330a1e/undefined">Adewale Abati ♠</a>, <a target="_blank" href="https://www.freecodecamp.org/news/becoming-a-better-designer-and-contributing-to-open-source-with-jolloficons-2c2a47330a1e/undefined">Neo Ighodaro</a>, <a target="_blank" href="https://www.freecodecamp.org/news/becoming-a-better-designer-and-contributing-to-open-source-with-jolloficons-2c2a47330a1e/undefined">Samson Goddy</a>, <a target="_blank" href="https://www.freecodecamp.org/news/becoming-a-better-designer-and-contributing-to-open-source-with-jolloficons-2c2a47330a1e/undefined">Ada Nduka Oyom</a>, <a target="_blank" href="https://www.freecodecamp.org/news/becoming-a-better-designer-and-contributing-to-open-source-with-jolloficons-2c2a47330a1e/undefined">Ridwan Olalere (Didi Kwang)</a> and <a target="_blank" href="https://www.freecodecamp.org/news/becoming-a-better-designer-and-contributing-to-open-source-with-jolloficons-2c2a47330a1e/undefined">Namnso Ukpanah</a> who are also at the forefront of building developer/designer talent and communities (GDG’s , Forloop Africa, Frontstack.io, Laravel Nigeria, Figma Africa etc) across Africa. And this is just to mention a few of the <em>badass</em> talents and organisations supporting the tech ecosystem here in Nigeria.</p>
<p>It’s just a matter of time, as we designers in Nigeria will soon have a lot of content and open source resources to share with the world, because we are already taking the bull by its horns and breaking boundaries.</p>
<p>There was a time the Figma Africa Design Advocate Lead, <a target="_blank" href="https://www.freecodecamp.org/news/becoming-a-better-designer-and-contributing-to-open-source-with-jolloficons-2c2a47330a1e/undefined">Namnso Ukpanah</a> — who is also a friend — was looking for experienced Designers versed in iconography that could share their knowledge with us via an AMA session on our Figma Africa slack channel. I remember it took a while before we could get someone. We soon had Vancura of the VSCode project come on our channel to share his experience and knowledge designing icons for the popular VSCode editor. It was an educative and interesting session.</p>
<blockquote>
<p><em>“Reject the tyranny of being picked. Pick yourself.”</em></p>
<p>― <strong>Seth Godin, <a target="_blank" href="https://www.goodreads.com/work/quotes/15271334">Poke the Box</a></strong></p>
</blockquote>
<p>I usually don’t like missing out on opportunities to share my knowledge and contribute to the tech community. So I was a little disappointed with myself and felt bad, quite honestly, that I had not worked on the Icon project all this while. I felt I would have probably been able to share my own experiences and knowledge with the design community while we waited to get someone more experienced for the AMA session. But since I hadn’t done it, there was no proof of my experience or knowledge designing any icon set. ?</p>
<p>All these fueled my desire to do more, and I soon started working on it. Designing the icons was no easy feat, especially when trying to achieve uniformity and consistency across the icon set.</p>
<h3 id="heading-building-the-icons">Building the icons</h3>
<p>As a big fan of rap music, I used to joke at work with my colleagues that I was going to release a rap album on Christmas day (Lmao! What?!) but somehow I felt so responsible and didn’t want to disappoint. So what did I do? I channeled my energy and resources into making sure I was able to push the first version of the icons on the 25th of December — which was supposed to be the official launch date of my “much anticipated” rap album ?.</p>
<blockquote>
<p><em>“For the things we have to learn before we can do them, we learn by doing them.”</em> ― <strong>Aristotle, <a target="_blank" href="https://www.goodreads.com/work/quotes/2919427">The Nicomachean Ethics</a></strong></p>
</blockquote>
<p>I had also designed a mock up of what the site would look like and shared it with some of my friends who were willing to help with building the site. Just a couple of days into December, I reflected on some of the goals and aspirations I had for the year — I had wanted to get into front-end development — and decided to take the challenge of building the site myself using a front-end framework.</p>
<p>I had already garnered experience doing front-end design so the only challenge was to be able to learn enough to get the site up even if it meant pushing back the Christmas day deadline I had set for myself. I now had to work on building something way simpler compared to what I had initially designed in the mockup.</p>
<p>So I picked up Vue.js and learnt a lot of new things on the go. Since it was an open source project, I thought it would be good to use as many open source resources as possible. I tried hosting with firebase but ran into some issues I couldn’t resolve on time — I was time conscious and eventually ended up using Github pages — which was another learning experience for me.</p>
<h3 id="heading-always-learning">Always learning</h3>
<p>They say the best way to learn is by doing.</p>
<p>Musicians try different styles, sounds and genres.</p>
<p>Developers try out different frameworks, technologies and programming languages.</p>
<p>Artists try different mediums and concepts.</p>
<p>Designers explore different concepts and aspects of design.</p>
<p>This is me trying to be a better designer.</p>
<p>This is me trying to contribute to Open Source.</p>
<p>Huge shoutout to <a target="_blank" href="https://www.freecodecamp.org/news/becoming-a-better-designer-and-contributing-to-open-source-with-jolloficons-2c2a47330a1e/undefined">Solomon Okwa</a> and <a target="_blank" href="https://www.freecodecamp.org/news/becoming-a-better-designer-and-contributing-to-open-source-with-jolloficons-2c2a47330a1e/undefined">Michael Akanji</a> who helped when I ran into some issues with vue.js and github while working on the project.</p>
<p>To everyone who has been a motivation in one way or the other, Thank you. Let’s do more, and let’s give them some sweet jollof ? (this rice isn’t red like our African jollof though) in 2019. ?</p>
<p>Happy Holidays!</p>
<h4 id="heading-updates-planned-for-2019"><strong>Updates planned for 2019</strong></h4>
<ul>
<li>Add more icons</li>
<li>Add Search functionality</li>
<li>Improve on the UI/UX of the site</li>
</ul>
<p>If you have any feedback, icon ideas, suggestions or contributions, please do drop a comment. You can also reach out to me on twitter <a target="_blank" href="https://twitter.com/GbMillz">GbMillz</a></p>
<p>If you like the project or find it interesting, give it some stars on github, link below. Thanks ?</p>
<p>Also visit <a target="_blank" href="https://jolloficons.com">jolloficons.com</a> to keep up to date with new icons for use in your projects.</p>
<p><a target="_blank" href="https://github.com/gbmillz/jolloficons"><strong>gbmillz/jolloficons</strong></a><br><a target="_blank" href="https://github.com/gbmillz/jolloficons">_Open source icons (3d, Abstract, Emojis, Isometric) for your projects. - gbmillz/jolloficons_github.com</a></p>
<p>Want be a part of our community? Join us on the <a target="_blank" href="https://figma-africa.slack.com">Figma Africa</a> Slack Channel</p>
<p>Here are the links to some of the resources that sped up my learning process and helped when building the site.</p>
<ul>
<li><strong>Vue.js</strong></li>
</ul>
<p><a target="_blank" href="https://www.youtube.com/watch?v=z6hQqgvGI4Y&amp;t=2921s">https://www.youtube.com/watch?v=z6hQqgvGI4Y&amp;t=2921s</a></p>
<ul>
<li><p><strong>Github pages</strong></p>
</li>
<li><p><strong>Official Vue.js Documentation</strong></p>
</li>
<li><strong>Stackoverflow</strong></li>
</ul>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
