<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: MidoAhmed</title>
    <description>The latest articles on DEV Community by MidoAhmed (@midoahmed).</description>
    <link>https://dev.to/midoahmed</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F209830%2F44a8fd5a-bd53-4f92-823a-b263e4350fd2.jpeg</url>
      <title>DEV Community: MidoAhmed</title>
      <link>https://dev.to/midoahmed</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/midoahmed"/>
    <language>en</language>
    <item>
      <title>design system: different approaches to create a component library for our design system</title>
      <dc:creator>MidoAhmed</dc:creator>
      <pubDate>Tue, 01 Aug 2023 00:15:38 +0000</pubDate>
      <link>https://dev.to/midoahmed/design-system-different-approaches-to-create-a-component-library-for-our-design-system-19bg</link>
      <guid>https://dev.to/midoahmed/design-system-different-approaches-to-create-a-component-library-for-our-design-system-19bg</guid>
      <description>&lt;p&gt;Three pillars of design systems :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Design Language&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Component Library - Core Components&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Style Guide&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When creating a design system, different development tasks can be challenging and time-consuming. However, some development tasks are commonly considered more tedious like creating a component library, lot of questions arise like :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;what are the different approaches to create a component library?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;1st option&lt;/em&gt; — build everything from scratch — Manual Creation&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This is the most time-consuming option, it offers complete control and customization but can be time-consuming and may require more development effort.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;2nd option&lt;/em&gt; — use an existing UI library —&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This is the fastest option, but it gives you the least control over the final product.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;3rd option&lt;/em&gt; — Hyrid Approach — combine the 1st and 2nd options&lt;/p&gt;

&lt;p&gt;Let's explore the 2nd option:&lt;br&gt;
When it comes to use an existing UI library it's not always easy to customize to fit our design system's needs.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;So what are the different approaches to customize/extend an existing UI library to fit my requirements ?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;find a themeable library (that supports theming) and adapt it to your needs&lt;/strong&gt; -&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;find a library that you can use as a foundation and build on top&lt;/strong&gt; -&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Headless components / Unstyled components&lt;/strong&gt; -&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Find other approaches...&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;the objective is to POC the different approaches and find the best approach that fits our needs considering the following criteria :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Customization&lt;/strong&gt; - how easy is it to customize the components ?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time to market&lt;/strong&gt; - how fast can we deliver the components ?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extensibility&lt;/strong&gt; - how easy is it to extend the components ?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility&lt;/strong&gt; - how accessible are the components ?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maintenance&lt;/strong&gt; - how easy is it to maintain the components ?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks...&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
