<?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>Forem: Josh Kuttler</title>
    <description>The latest articles on Forem by Josh Kuttler (@joshk2).</description>
    <link>https://forem.com/joshk2</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%2F223146%2F33dfb171-cefd-4b5d-bbc9-4df274224991.jpeg</url>
      <title>Forem: Josh Kuttler</title>
      <link>https://forem.com/joshk2</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/joshk2"/>
    <language>en</language>
    <item>
      <title>How to Publish React Native Components for Reuse</title>
      <dc:creator>Josh Kuttler</dc:creator>
      <pubDate>Sun, 07 Jun 2020 11:59:47 +0000</pubDate>
      <link>https://forem.com/joshk2/how-to-publish-react-native-components-for-reuse-5g54</link>
      <guid>https://forem.com/joshk2/how-to-publish-react-native-components-for-reuse-5g54</guid>
      <description>&lt;p&gt;Publishing and reusing React Native components across applications with Bit.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2560%2F1%2AonuKAwAHdvT3zHQkdJodlg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2560%2F1%2AonuKAwAHdvT3zHQkdJodlg.jpeg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;React Native components, just like ReactJS, are built for reuse.&lt;/p&gt;

&lt;p&gt;Reusing React native components across applications speeds up your development, makes it easier to maintain your codebase, and makes sure that your users will enjoy a consistent experience at every touchpoint.&lt;/p&gt;

&lt;p&gt;However, publishing many components for reuse can also be a challenge that requires a lot of work, documentation, and teamwork. This work can be streamlined, simplified, and scaled using new tools built for this purpose.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/teambit/bit" rel="noopener noreferrer"&gt;Bit&lt;/a&gt; is an open-source tool that helps you develop, publish and manage components across many applications. It is completed by the &lt;a href="https://bit.dev" rel="noopener noreferrer"&gt;bit.dev platform&lt;/a&gt;, where all your components are organized, documented, and become available to reuse. It streamlines the process of publishing and documenting JS components.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2ANj2EzGOskF51B5AKuR-szw.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2ANj2EzGOskF51B5AKuR-szw.gif" alt="Example: Exploring React components published on [Bit](https://bit.dev)"&gt;&lt;/a&gt;&lt;em&gt;Example: Exploring React components published on &lt;a href="https://bit.dev" rel="noopener noreferrer"&gt;Bit&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In this post, I’ll show how to use &lt;a href="https://bit.dev" rel="noopener noreferrer"&gt;Bit&lt;/a&gt; to &lt;em&gt;independently&lt;/em&gt; version, publish, and document React Native components from, essentially, any React Native app.&lt;/p&gt;

&lt;p&gt;My published components will then be available on a public collection on &lt;a href="https://bit.dev" rel="noopener noreferrer"&gt;Bit.dev&lt;/a&gt;, where others can read their docs, try them in a live playground, and install them using NPM, Yarn, or Bit. This collection can be gradually expanded to create a fully functional reusable system of components.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AUQXdMRP4ygpd6QAC9A_j9g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AUQXdMRP4ygpd6QAC9A_j9g.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3932%2F1%2AnzH8a6ZOtuhA0GDGU2vSsQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3932%2F1%2AnzH8a6ZOtuhA0GDGU2vSsQ.png" alt="The [“My Store” app](https://github.com/JoshK2/mystore) and its [published components](https://bit.dev/joshk/mystore-app-components)"&gt;&lt;/a&gt;&lt;em&gt;The &lt;a href="https://github.com/JoshK2/mystore" rel="noopener noreferrer"&gt;“My Store” app&lt;/a&gt; and its &lt;a href="https://bit.dev/joshk/mystore-app-components" rel="noopener noreferrer"&gt;published components&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Building a React Native Store App: “My Store”
&lt;/h2&gt;

&lt;p&gt;Demo project on GitHub:&lt;br&gt;
&lt;a href="https://github.com/JoshK2/mystore" rel="noopener noreferrer"&gt;JoshK2/mystore&lt;br&gt;
A simple products list store build with React Native components and then shared them to a collection on bit.dev.&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx react-native init mystore
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Any store needs some way to present its products. To make that happen, I’ll create 3 components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Product: Shows the image, title, description and price.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Button: Adds the product to the shopping cart.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Products list: Receive a list of products and displays them vertically.&lt;/p&gt;

&lt;p&gt;src&lt;br&gt;
└── components&lt;br&gt;
    ├── button.js&lt;br&gt;
    ├── product.js&lt;br&gt;
    └── products-list.js&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, the “Button” component:&lt;/p&gt;

&lt;p&gt;I’ve used prop-types for all my components. That will serve two purposes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;As with any other use of prop-types, my components will be safer to use.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Bit will use my prop-types definitions to create documentation for each component. That would also be the case with TypeScipt and JSDocs (alternatively, you can add an .md file to your component).&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AMihz5IQf81PGgMjuscsm0w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AMihz5IQf81PGgMjuscsm0w.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Publishing the “My Store” Components to Bit
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Install Bit globally.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install bit-bin --global
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Initialize a new “Bit Workspace” (in the project’s root directory).
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bit init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Track all components under the components directory (similar to git add ). While doing this, Bit will automatically define each unit as a “component” with all its relevant files, dependencies etc. This is very useful when you seek to develop and publish many components in the same repository.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bit add src/components/*
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Configure my tracked components to use the &lt;a href="https://bit.dev/bit/envs/compilers/react-native" rel="noopener noreferrer"&gt;React Native compiler&lt;/a&gt; available in Bit’s &lt;a href="https://bit.dev/bit/envs" rel="noopener noreferrer"&gt;“ENVs” collection&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Wit hBit, we configure a compiler to decouple the soon-to-be-published components from the app’s build setup. This way, we make sure they’ll work in other future environments.&lt;/p&gt;

&lt;p&gt;That’s done by importing the compiler as I would with any other published component and adding the -c flag to set it as a compiler (this will be added to Bit’s configurations in package.json )&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bit import bit.envs/compilers/react-native -c
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Bit lets you version each component independently, which is &lt;a href="https://blog.bitsrc.io/versioning-independent-ui-components-why-and-how-7ea60d8be5f2" rel="noopener noreferrer"&gt;great for reuse at a slightly larger scale&lt;/a&gt;. Tag all components to record all changes and lock versions. The -a flag marks all tracked components. We could also specify the new version number but, here, I’ve left that to Bit.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bit tag -a
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now if you run bit status, you’ll see that each component got its own version. Remember that Bit tracks every component’s dependencies as well as changes to its code, so from now on when you make a change, Bit will help you tag and bump the version of all components impacted by the change.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Publish all tracked components.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For this, I’ll first head over to &lt;a href="https://bit.dev" rel="noopener noreferrer"&gt;Bit.dev&lt;/a&gt;, open a free account, and create a new component collection. I’ll name this collection “mystore-app-components”. Once done, I’ll continue to publish them to my new collection.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bit export joshk.mystore-app-components
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;My components are now published on Bit! 🎉&lt;br&gt;
&lt;a href="https://bit.dev/joshk/mystore-app-components" rel="noopener noreferrer"&gt;mystore-app-components by joshk · Bit&lt;br&gt;
A demo store components build with React Native - 3 Javascript components. Examples: product , products-list , button&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3654%2F1%2A5wA3uXU7pFW_fty-lVZ8Ig.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3654%2F1%2A5wA3uXU7pFW_fty-lVZ8Ig.png" alt="[https://bit.dev/joshk/mystore-app-components](https://bit.dev/joshk/mystore-app-components)"&gt;&lt;/a&gt;&lt;em&gt;&lt;a href="https://bit.dev/joshk/mystore-app-components" rel="noopener noreferrer"&gt;https://bit.dev/joshk/mystore-app-components&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;All my components are now reusable, and I can share them between the different applications that I or my team are building.&lt;/p&gt;

&lt;p&gt;You can browse through the component pages, see each component rendered in Bit’splayground (using an example code I’ve written).&lt;/p&gt;

&lt;p&gt;You can choose to either &lt;strong&gt;install&lt;/strong&gt; components like any other package using NPM/Yarn or to “clone” components into your project using bit import .&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Imported&lt;/strong&gt; or “cloned” components (&lt;code&gt;bit import&lt;/code&gt;) can be modified in any codebase using them and pushed back with a bumped version. That makes collaboration possible even across repositories.&lt;/p&gt;

&lt;p&gt;Happy coding and sharing!&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>react</category>
      <category>reuse</category>
      <category>sharing</category>
    </item>
    <item>
      <title>A new version of React Native compiler for Bit</title>
      <dc:creator>Josh Kuttler</dc:creator>
      <pubDate>Thu, 23 Jan 2020 17:00:46 +0000</pubDate>
      <link>https://forem.com/joshk2/a-new-version-of-react-native-compiler-for-bit-23f3</link>
      <guid>https://forem.com/joshk2/a-new-version-of-react-native-compiler-for-bit-23f3</guid>
      <description>&lt;p&gt;I just published a new version of React Native compiler for Bit&lt;br&gt;
and I would appreciate some feedback.&lt;/p&gt;

&lt;p&gt;You can write in the comments section, links to React Native components you exported.&lt;/p&gt;

&lt;p&gt;To Install and use the compiler:&lt;br&gt;
&lt;a href="https://bit.dev/bit/envs/compilers/react-native"&gt;https://bit.dev/bit/envs/compilers/react-native&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Stars to the repository will be welcome 😉💫 &lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/teambit"&gt;
        teambit
      &lt;/a&gt; / &lt;a href="https://github.com/teambit/envs"&gt;
        envs
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Component development environments for the Bit community
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Envs - Development environments for components&lt;/h1&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/teambit/envs/workflows/Test%20and%20Export/badge.svg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fUMmOCdA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/teambit/envs/workflows/Test%2520and%2520Export/badge.svg" alt="Test and Export"&gt;&lt;/a&gt;
&lt;a href="https://bit.dev/bit/envs" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/e40b03ea3a1bab71c549df885ad7cfd8881bc811/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f64796e616d69632f6a736f6e2e7376673f636f6c6f723d366533393931266c6162656c3d636f6d706f6e656e74732671756572793d7061796c6f61642e746f74616c436f6d706f6e656e74732675726c3d68747470732533412532462532466170692e6269742e64657625324673636f7065253246626974253246656e7673" alt="components"&gt;&lt;/a&gt;
&lt;a href="https://opensource.org/licenses/Apache-2.0" rel="nofollow"&gt;&lt;img alt="apache" src="https://camo.githubusercontent.com/8051e9938a1ab39cf002818dfceb6b6092f34d68/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d417061636865253230322e302d626c75652e737667"&gt;&lt;/a&gt;
&lt;a href="https://github.com/prettier/prettier"&gt;&lt;img src="https://camo.githubusercontent.com/15a7396a278f63f68567b89fdf1135c1e07255c9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7374796c65645f776974682d70726574746965722d6666363962342e737667" alt="styled with prettier"&gt;&lt;/a&gt;
&lt;a href="https://join.slack.com/t/bit-dev-community/shared_invite/enQtNzM2NzQ3MTQzMTg3LWI2YmFmZjQwMTkxNmFmNTVkYzU2MGI2YjgwMmJlZDdkNWVhOGIzZDFlYjg4MGRmOTM4ODAxNTIxMTMwNWVhMzg" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/d781eeb1200791e328356f1c4f6787478f2c1137/68747470733a2f2f62616467656e2e6e6f772e73682f62616467652f636861742f6f6e253230536c61636b2f6379616e" alt="Slack"&gt;&lt;/a&gt;
&lt;a href="https://www.reddit.com/r/bit_dev/" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/4832f5013235394cb2c1851e98820305f734c11d/68747470733a2f2f62616467656e2e6e6f772e73682f62616467652f636861742f6f6e2532305265646469742f6f72616e6765" alt="reddit"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A curated list of &lt;strong&gt;Extensions&lt;/strong&gt; maintained by Bit's &lt;a href="https://github.com/orgs/teambit/people"&gt;maintainers&lt;/a&gt; to use as dev tools for components. These extensions implement best practices for distributing components and setting them up to be reused across projects.&lt;/p&gt;
&lt;p&gt;
  &lt;a href="https://bit.dev/bit/envs" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/35cdb2d43533c50aec55ddc10006af5729095845/68747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f6269742d646f63732f53637265656e25323053686f74253230323031392d30362d30362532306174253230312e32362e3332253230504d2e706e67"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
Quick links&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://bit.dev/bit/envs" rel="nofollow"&gt;Browse Envs&lt;/a&gt; • &lt;a href="https://docs.bit.dev/docs/building-components.html" rel="nofollow"&gt;Implementing Envs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://bit.dev/bit/envs" rel="nofollow"&gt;Compiler/Tester collection&lt;/a&gt; • &lt;a href="https://docs.bit.dev/docs/building-components.html" rel="nofollow"&gt;Docs&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
Usage&lt;/h2&gt;

&lt;h3&gt;
Which compiler to use?&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Flavor&lt;/th&gt;
&lt;th&gt;Env&lt;/th&gt;
&lt;th&gt;Import Command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;React JS&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bit.dev/bit/envs/compilers/react" rel="nofollow"&gt;react&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;bit import bit.envs/compilers/react -c&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;React TS&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bit.dev/bit/envs/compilers/react-typescript" rel="nofollow"&gt;react-typescript&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;bit import bit.envs/compilers/react-typescript -c&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;React Native JS&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bit.dev/bit/envs/compilers/react-native" rel="nofollow"&gt;react-native&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;bit import bit.envs/compilers/react-native -c&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vue&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bit.dev/bit/envs/bundlers/vue" rel="nofollow"&gt;vue&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;bit import bit.envs/bundlers/vue -c&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Angular&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bit.dev/bit/envs/compilers/angular" rel="nofollow"&gt;angular&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;bit import bit.envs/compilers/angular -c&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Typescript Vanilla&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bit.dev/bit/envs/compilers/typescript" rel="nofollow"&gt;typescript&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;bit import bit.envs/compilers/typescript -c&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Javascript Vanilla&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bit.dev/bit/envs/compilers/babel" rel="nofollow"&gt;babel&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;bit import bit.envs/compilers/babel -c&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stencil&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bit.dev/bit/envs/compilers/stencil" rel="nofollow"&gt;stencil&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;bit import bit.envs/compilers/stencil -c&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
Which tester to use?&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Flavor&lt;/th&gt;
&lt;th&gt;Env&lt;/th&gt;
&lt;th&gt;Import Command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mocha&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bit.dev/bit/envs/testers/mocha" rel="nofollow"&gt;mocha&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;bit import bit.envs/testers/mocha -t&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
What is Bit?&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Bit makes it easy to share and manage components between projects and apps at any scale&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It lets you…&lt;/p&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/teambit/envs"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


</description>
      <category>reactnative</category>
    </item>
    <item>
      <title>How to comma-separate your number in JavaScript</title>
      <dc:creator>Josh Kuttler</dc:creator>
      <pubDate>Thu, 19 Dec 2019 10:56:15 +0000</pubDate>
      <link>https://forem.com/joshk2/how-to-comma-separate-your-number-in-javascript-38oo</link>
      <guid>https://forem.com/joshk2/how-to-comma-separate-your-number-in-javascript-38oo</guid>
      <description>&lt;p&gt;I created a simple function that does the trick with a regex expression. &lt;/p&gt;

&lt;p&gt;The function receives either a string or a number and returns the formatted number with correct commas:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;formatNumber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;number&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;number&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;number&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;number&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;(\d)(?=(\d\d\d)&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;(?!\d))&lt;/span&gt;&lt;span class="sr"&gt;/g&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;$1,&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I wrote this function in &lt;a href="https://bit.dev/joshk/jotils/format-number" rel="noopener noreferrer"&gt;TypeScript and added tests&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I've exported it to &lt;a href="https://bit.dev/" rel="noopener noreferrer"&gt;bit.dev&lt;/a&gt; with a live demo and docs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fjengffh1yxj9l86ehmql.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fjengffh1yxj9l86ehmql.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
Also, it can be easily consumed with NPM/Yarn/Bit. &lt;br&gt;
&lt;a href="https://bit.dev/joshk/jotils/format-number" rel="noopener noreferrer"&gt;https://bit.dev/joshk/jotils/format-number&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have a better way to write this function, please write a comment.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>functional</category>
    </item>
    <item>
      <title>Build a Tic Tac Toe App with TypeScript, React and Mocha</title>
      <dc:creator>Josh Kuttler</dc:creator>
      <pubDate>Tue, 10 Sep 2019 21:16:08 +0000</pubDate>
      <link>https://forem.com/joshk2/build-a-tic-tac-toe-app-with-typescript-react-and-mocha-2n1</link>
      <guid>https://forem.com/joshk2/build-a-tic-tac-toe-app-with-typescript-react-and-mocha-2n1</guid>
      <description>&lt;p&gt;Learn how to compose a tic-tac-toe app with React and TypeScript components.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mrmJRbSC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3200/1%2A9C55x7B7mv86eILwKfmBJA.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mrmJRbSC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3200/1%2A9C55x7B7mv86eILwKfmBJA.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A simple Tic-Tac-Toe game built with modularity in mind and &lt;a href="https://bit.dev/joshk/tic-tac-toe-game"&gt;shared on Bit&lt;/a&gt;. After sharing, my game’s components can be tweaked and tested on Bit’s live PlayGround. &lt;a href="https://bit.dev/joshk/tic-tac-toe-game"&gt;Go to my components collection&lt;/a&gt; on Bit to test or consume the entire game or just some of its components, using NPM, Yarn or Bit.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/JoshK2"&gt;
        JoshK2
      &lt;/a&gt; / &lt;a href="https://github.com/JoshK2/tic-tac-toe-game-using-bit"&gt;
        tic-tac-toe-game-using-bit
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Simple Tic Tac Toe game built with react-typescript components
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Modular Tic Tac Toe Game built with TypeScript and tested with Mocha &lt;a href="https://bit.dev/joshk/tic-tac-toe-game" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/636ff1ef61c54296aa30f819398d01556b23c824/68747470733a2f2f696d672e736869656c64732e696f2f6269742f636f6c6c656374696f6e2f746f74616c2d636f6d706f6e656e74732f6a6f73686b2f7469632d7461632d746f652d67616d652e737667" alt="components"&gt;&lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;A simple Tic Tac Toe game build with TypeScript components and test with Mocha tester then shared them to &lt;a href="https://bit.dev/joshk/tic-tac-toe-game" rel="nofollow"&gt;bit&lt;/a&gt; for testing in the live PlayGround and see the result of tests runnig in bit.&lt;br&gt;
Allow users to consume the entire game or just a part of the game components using NPM and Yarn or using bit to consume and modify the component directly inside the project.&lt;/p&gt;
&lt;p&gt;The game has multiple options to modify the game rules, like the dynamic dimension of the table, and the number of matching value to win the game.&lt;/p&gt;
&lt;p&gt;Try the game in live PlayGround in the project &lt;a href="https://bit.dev/joshk/tic-tac-toe-game" rel="nofollow"&gt;collection&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;a href="https://bit.dev/joshk/tic-tac-toe-game" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/198f6f39efd81093833f99f0a4f0aaae081622ff/68747470733a2f2f692e696d6167657375702e636f2f696d61676573322f353234653062353563363765623561653861306361313561373664353464663939333061353063392e6a7067"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
Tutorial&lt;/h2&gt;
&lt;p&gt;See the full tutorial- build your own modular application with React TypeScript components.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://blog.bitsrc.io/build-a-tic-tac-toe-game-with-typescript-react-and-mocha-ce6f1e74c996" rel="nofollow"&gt;Build a Tic Tac Toe App with TypeScript, React and Mocha&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;
Import and use the entire game component in&lt;/h2&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/JoshK2/tic-tac-toe-game-using-bit"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;When building a game like Tic-Tac-Toe “with modularity in mind”, it's hard to think of a reason for the UI components to be reused ever again, so I kept my focus primarily on the game’s utility functions.&lt;/p&gt;

&lt;p&gt;I chose TypeScript as my coding language of choice — compiled by &lt;a href="https://bit.dev/bit/envs/compilers/react-typescript"&gt;Bit’s TypeScript compiler&lt;/a&gt; and used Mocha for testing.&lt;/p&gt;

&lt;p&gt;To install components from my project, first configure &lt;a href="https://bit.dev"&gt;bit.dev&lt;/a&gt; as a scoped registry (copy and paste to your terminal) — this is done only once! later uses of bit do not require you to configure again.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm config set '@bit:registry' [https://node.bit.dev](https://node.bit.dev)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;and then install the component using Yarn or NPM:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm i [@bit/joshk](http://twitter.com/bit/joshk).tic-tac-toe-game.game
yarn add [@bit/joshk](http://twitter.com/bit/joshk).tic-tac-toe-game.game
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;
  
  
  Game Component
&lt;/h2&gt;

&lt;p&gt;The ‘game’ component is my app’s main component — composed using one component from ‘Board’ and two components from ‘&lt;a href="https://bit.dev/primefaces/primereact"&gt;Prime React&lt;/a&gt;’.&lt;/p&gt;

&lt;p&gt;I used the &lt;a href="https://bit.dev/primefaces/primereact/button"&gt;button&lt;/a&gt; and the &lt;a href="https://bit.dev/primefaces/primereact/inputtext"&gt;input-text&lt;/a&gt; for the configuration screen — test and see the code &lt;a href="https://bit.dev/joshk/tic-tac-toe-game/game/~code#Game/Game.tsx"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Install PrimeReact components in your project:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn add @bit/primefaces.primereact.inputtext
yarn add @bit/primefaces.primereact.button
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;After setting the parameters, you can click ‘Play’ and… Play!&lt;/p&gt;
&lt;h2&gt;
  
  
  Board Component
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://bit.dev/joshk/tic-tac-toe-game/board"&gt;board&lt;/a&gt; component creates a dynamic table by props, manage player turn and check for the winner. Test and see the code &lt;a href="https://bit.dev/joshk/tic-tac-toe-game/board/~code#Board/Board.tsx"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--k3NYlxR6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3200/1%2A8WrsQcJZFho4LUIXEO51_w.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k3NYlxR6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3200/1%2A8WrsQcJZFho4LUIXEO51_w.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Square Component
&lt;/h2&gt;

&lt;p&gt;The square component is a simple cell that receives value with optional color and sends an event to the board component when the value changes. Test and see the code &lt;a href="https://bit.dev/joshk/tic-tac-toe-game/square/~code#Square.tsx"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uVcVltOe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3200/1%2AgZzWS8eCMyEUbdWYauEegA.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uVcVltOe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3200/1%2AgZzWS8eCMyEUbdWYauEegA.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Empty cell function
&lt;/h2&gt;

&lt;p&gt;‘Empty cell function’ Is a helper &lt;a href="https://bit.dev/joshk/tic-tac-toe-game/utils/have-empty-cell"&gt;function&lt;/a&gt; to &lt;a href="https://bit.dev/joshk/tic-tac-toe-game/utils/winner-calc"&gt;winner-calc function&lt;/a&gt; that checks if there are any empty cells in the game’s table.&lt;/p&gt;

&lt;p&gt;Bit lets you see the docs for the component and the results of the tests:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_auka6eK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3200/1%2AWu-MLh7hczWOLELoZrw70A.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_auka6eK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3200/1%2AWu-MLh7hczWOLELoZrw70A.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The code of the function:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



&lt;h2&gt;
  
  
  Winner Calculation
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://bit.dev/joshk/tic-tac-toe-game/utils/winner-calc"&gt;Winner calculation&lt;/a&gt; is a function that checks for the winner in horizontal, vertical and diagonal cases.&lt;/p&gt;

&lt;p&gt;Bit let you see the docs for the component and the results of the tests:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SIv3Qd6N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3200/1%2A45TDA5x-BCzqAqNdHUJprw.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SIv3Qd6N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3200/1%2A45TDA5x-BCzqAqNdHUJprw.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The code for the function:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;The project is available in my &lt;a href="https://bit.dev/joshk/tic-tac-toe-game"&gt;bit collection&lt;/a&gt; and in my GitHub repository:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/JoshK2"&gt;
        JoshK2
      &lt;/a&gt; / &lt;a href="https://github.com/JoshK2/tic-tac-toe-game-using-bit"&gt;
        tic-tac-toe-game-using-bit
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Simple Tic Tac Toe game built with react-typescript components
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Modular Tic Tac Toe Game built with TypeScript and tested with Mocha &lt;a href="https://bit.dev/joshk/tic-tac-toe-game" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/636ff1ef61c54296aa30f819398d01556b23c824/68747470733a2f2f696d672e736869656c64732e696f2f6269742f636f6c6c656374696f6e2f746f74616c2d636f6d706f6e656e74732f6a6f73686b2f7469632d7461632d746f652d67616d652e737667" alt="components"&gt;&lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;A simple Tic Tac Toe game build with TypeScript components and test with Mocha tester then shared them to &lt;a href="https://bit.dev/joshk/tic-tac-toe-game" rel="nofollow"&gt;bit&lt;/a&gt; for testing in the live PlayGround and see the result of tests runnig in bit.&lt;br&gt;
Allow users to consume the entire game or just a part of the game components using NPM and Yarn or using bit to consume and modify the component directly inside the project.&lt;/p&gt;
&lt;p&gt;The game has multiple options to modify the game rules, like the dynamic dimension of the table, and the number of matching value to win the game.&lt;/p&gt;
&lt;p&gt;Try the game in live PlayGround in the project &lt;a href="https://bit.dev/joshk/tic-tac-toe-game" rel="nofollow"&gt;collection&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;a href="https://bit.dev/joshk/tic-tac-toe-game" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/198f6f39efd81093833f99f0a4f0aaae081622ff/68747470733a2f2f692e696d6167657375702e636f2f696d61676573322f353234653062353563363765623561653861306361313561373664353464663939333061353063392e6a7067"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
Tutorial&lt;/h2&gt;

&lt;p&gt;See the full tutorial- build your own modular application with React TypeScript components.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://blog.bitsrc.io/build-a-tic-tac-toe-game-with-typescript-react-and-mocha-ce6f1e74c996" rel="nofollow"&gt;Build a Tic Tac Toe App with TypeScript, React and Mocha&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;


&lt;h2&gt;
&lt;br&gt;
Import and use the entire game component in&lt;/h2&gt;…&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/JoshK2/tic-tac-toe-game-using-bit"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;Feel free to comment below and follow me on &lt;a href="https://twitter.com/JoshKuttler"&gt;Twitter&lt;/a&gt; 😃&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>webdev</category>
      <category>typescript</category>
    </item>
    <item>
      <title>How to Build a Super-Modular Todo App with React and Bit Components</title>
      <dc:creator>Josh Kuttler</dc:creator>
      <pubDate>Thu, 05 Sep 2019 16:37:54 +0000</pubDate>
      <link>https://forem.com/joshk2/how-to-build-a-super-modular-todo-app-with-react-and-bit-components-18j9</link>
      <guid>https://forem.com/joshk2/how-to-build-a-super-modular-todo-app-with-react-and-bit-components-18j9</guid>
      <description>&lt;p&gt;How to compose a highly modular React application with reusable components from 5 different libraries.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2594%2F1%2A4XJPGFQtX3EmP0ZZBG1w7Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2594%2F1%2A4XJPGFQtX3EmP0ZZBG1w7Q.png" alt="The final todo app composition with Bit"&gt;&lt;/a&gt;&lt;em&gt;The final todo app composition with Bit&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Modular programming has been around since the 60s, and the term itself was set at 1968 by &lt;a href="https://en.wikipedia.org/wiki/Larry_Constantine" rel="noopener noreferrer"&gt;Larry Constantine&lt;/a&gt; and extended ever since.&lt;/p&gt;

&lt;p&gt;Today, in the technological world of component-based libraries like &lt;a href="https://github.com/facebook/react" rel="noopener noreferrer"&gt;React&lt;/a&gt; and with tools like &lt;a href="https://github.com/teambit/bit" rel="noopener noreferrer"&gt;Bit&lt;/a&gt;, application modularity can be taken to a whole new level.&lt;/p&gt;

&lt;p&gt;We will compose a simple React Todo application using reusable components from 5 popular libraries like &lt;a href="https://bit.dev/mui-org/material-ui" rel="noopener noreferrer"&gt;Material-UI&lt;/a&gt;, &lt;a href="https://bit.dev/grommet/grommet" rel="noopener noreferrer"&gt;Grommet&lt;/a&gt; and &lt;a href="https://bit.dev/semantic-org/semantic-ui-react" rel="noopener noreferrer"&gt;Semantic-UI&lt;/a&gt;. Thanks to Bit, we can quickly isolate and compose these components into an app.&lt;/p&gt;

&lt;p&gt;When done, not only we will compose a highly-modular app from reusable components, but we will have a collection of components we can reuse to build more apps. The entire app is shared as a reusable component, which can be extended and composed with other components to build larger apps.&lt;/p&gt;

&lt;p&gt;This is very exciting, as it’s a live implementation of full-blown modular application composition with a Lego-like experience.&lt;/p&gt;

&lt;p&gt;This is the result of the todo list app:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2036%2F1%2AcAylrEutkQWspFHEuR8ewg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2036%2F1%2AcAylrEutkQWspFHEuR8ewg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And here’s the app’s GitHub repo:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/JoshK2" rel="noopener noreferrer"&gt;
        JoshK2
      &lt;/a&gt; / &lt;a href="https://github.com/JoshK2/basic-todo-app-using-bit" rel="noopener noreferrer"&gt;
        basic-todo-app-using-bit
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A highly-modular React todo application composed of reusable components from 5 different collections. Full-blown software modularity.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Highly-modular React Todo application built of reusable Bit components &lt;a href="https://bit.dev/joshk/basic-todo-app" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b9e28057edd717025788341d2ca37f0e9456993a0364c29ceecdc1459ef168c7/68747470733a2f2f696d672e736869656c64732e696f2f6269742f636f6c6c656374696f6e2f746f74616c2d636f6d706f6e656e74732f6a6f73686b2f62617369632d746f646f2d6170702e737667" alt="components"&gt;&lt;/a&gt;
&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;A basic React todo aplication composed of &lt;a href="https://bit.dev" rel="nofollow noopener noreferrer"&gt;bit&lt;/a&gt; componnets shared from 5 different popular React UI libraries inlcuding &lt;a href="https://github.com/grommet/grommet" rel="noopener noreferrer"&gt;Grommet&lt;/a&gt;, &lt;a href="https://github.com/Semantic-Org/Semantic-UI-React" rel="noopener noreferrer"&gt;Semantic-UI React&lt;/a&gt;, &lt;a href="https://github.com/primefaces/primereact" rel="noopener noreferrer"&gt;Primereact&lt;/a&gt; and &lt;a href="https://github.com/lodash/lodash" rel="noopener noreferrer"&gt;Lodash&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;All the reusable components used to build this app are &lt;a href="https://bit.dev/joshk/basic-todo-app" rel="nofollow noopener noreferrer"&gt;availabe in this collection&lt;/a&gt;
The final todo application is also &lt;a href="https://bit.dev/joshk/basic-todo-app/todo-app" rel="nofollow noopener noreferrer"&gt;available as a reusbale bit component&lt;/a&gt;, which can be extended and composed with other components to build larger applications.&lt;/p&gt;
&lt;p&gt;
  &lt;a href="https://bit.dev/joshk/basic-todo-app" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/3579ce11721b546410cfba451dc9ea86c5ab391093dceaf5184769cdad78293e/68747470733a2f2f692e696d6167657375702e636f2f696d61676573322f663262356363396139313866613538656432313036353730656435623464626232303834366237662e706e67"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Motivation&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Demonstrating software modularity in the age of components with React and Bit.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Tutorial&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;See the full tutorial- build your own modular application with reusable components.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://blog.bitsrc.io/build-a-super-modular-todo-app-with-react-and-bit-components-aa06bbac4084" rel="nofollow noopener noreferrer"&gt;Build a Super Modular Todo App with React and Bit Components&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Wich components I used?&lt;/h2&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Semantic UI React&lt;/h3&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://bit.dev/semantic-org/semantic-ui-react/list" rel="nofollow noopener noreferrer"&gt;semantic-ui-react list component&lt;/a&gt;&lt;br&gt;
&lt;a href="https://bit.dev/semantic-org/semantic-ui-react/icon" rel="nofollow noopener noreferrer"&gt;semantic-ui-react icon component&lt;/a&gt;&lt;br&gt;
&lt;a href="https://bit.dev/semantic-org/semantic-ui-react/internal/style-links" rel="nofollow noopener noreferrer"&gt;semantic-ui-react css link component&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;PrimeReact&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a href="https://bit.dev/primefaces/primereact/inputtextarea" rel="nofollow noopener noreferrer"&gt;primereact inputtextarea component&lt;/a&gt;&lt;br&gt;
&lt;a href="https://bit.dev/primefaces/primereact/button" rel="nofollow noopener noreferrer"&gt;primereact button component&lt;/a&gt;&lt;br&gt;
&lt;a href="https://bit.dev/primefaces/primereact/internal/stylelinks" rel="nofollow noopener noreferrer"&gt;primereact css link component&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Grommet&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a href="https://bit.dev/grommet/grommet/button" rel="nofollow noopener noreferrer"&gt;grommet button component&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;grommet-icons&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a href="https://bit.dev/grommet/grommet-icons/add" rel="nofollow noopener noreferrer"&gt;grommet-icons add&lt;/a&gt;…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/JoshK2/basic-todo-app-using-bit" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  3 Components
&lt;/h2&gt;

&lt;p&gt;For creating the app I decided to divide the App’s code into 3 components:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://bit.dev/joshk/basic-todo-app/todo-item" rel="noopener noreferrer"&gt;TodoItem component&lt;/a&gt;, text with remove option.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://bit.dev/joshk/basic-todo-app/add-item" rel="noopener noreferrer"&gt;AddItem component&lt;/a&gt;, input text area with add button and remove all button.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://bit.dev/joshk/basic-todo-app/todo-app" rel="noopener noreferrer"&gt;TodoApp component&lt;/a&gt;, this is the main code of the app that includes the TodoItem and the AddItem, so there will be a List with simple code to manage all the components options like remove, remove all and add.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Components 1+2 are modularly composed of components isolated and shared from different libraries- using &lt;a href="https://github.com/teambit/bit" rel="noopener noreferrer"&gt;Bit&lt;/a&gt; which helps us isolate, share and manage reusable components to build modular applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  TodoItem
&lt;/h2&gt;

&lt;p&gt;This component receives a simple text and id for removing the right todo item from the main list as props, and uses a &lt;a href="https://bit.dev/semantic-org/semantic-ui-react/icon?example=5c920bc8c634f0001a931747" rel="noopener noreferrer"&gt;remove icon&lt;/a&gt; from the &lt;a href="https://bit.dev/semantic-org/semantic-ui-react" rel="noopener noreferrer"&gt;semantic-ui-react&lt;/a&gt; component collection.&lt;/p&gt;

&lt;p&gt;To install the component, firsy configure &lt;a href="https://bit.dev" rel="noopener noreferrer"&gt;bit.dev&lt;/a&gt; as a scoped registry (one time action) and then install the component using Yarn:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm config set '@bit:registry' [https://node.bit.dev](https://node.bit.dev)

yarn add @bit/semantic-org.semantic-ui-react.icon
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;This is the code of the component, after adding some helping-code to show the remove icon and send remove as an event to the main component when remove is clicked.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



&lt;p&gt;Here’s the final TodoItem component with live editing and playground in &lt;a href="https://bit.dev/joshk/basic-todo-app/todo-item" rel="noopener noreferrer"&gt;Bit&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  AddItem
&lt;/h2&gt;

&lt;p&gt;This component shows an input text area with auto resize and two buttons, one to add an item to the list, and the second to remove all items from the list. The remove all button work with props to show or hide this button.&lt;/p&gt;

&lt;p&gt;So for this, I use input text area and button from &lt;a href="https://bit.dev/primefaces/primereact" rel="noopener noreferrer"&gt;primereact&lt;/a&gt;, a button from &lt;a href="https://bit.dev/grommet/grommet" rel="noopener noreferrer"&gt;grommet&lt;/a&gt;, and icon from &lt;a href="https://bit.dev/grommet/grommet-icons" rel="noopener noreferrer"&gt;grommet-icons&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Install it:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn add @bit/primefaces.primereact.inputtextarea
yarn add @bit/primefaces.primereact.button
yarn add @bit/primefaces.primereact.internal.stylelinks
yarn add @bit/grommet.grommet.button
yarn add @bit/grommet.grommet-icons.add
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;This is the code of the component after adding some helping code to use the Add button and the Remove All button.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



&lt;p&gt;AddItem component with live editing and playground in &lt;a href="https://bit.dev/joshk/basic-todo-app/add-item" rel="noopener noreferrer"&gt;Bit&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  TodoApp
&lt;/h2&gt;

&lt;p&gt;This component is the main component that uses the TodoItem and the AddItem components. The component has a list of item and allow to send an initial list as a prop, and receives all the event from the other components to manage the list. Like the add item, the remove item and the remove all item.&lt;/p&gt;

&lt;p&gt;So I use List component from semantic-ui-react, and a unique id function from &lt;a href="https://bit.dev/lodash/lodash" rel="noopener noreferrer"&gt;lodash&lt;/a&gt; to avoid key error in map function.&lt;/p&gt;

&lt;p&gt;Install it:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn add @bit/semantic-org.semantic-ui-react.list
yarn add @bit/semantic-org.semantic-ui-react.internal.style-links
yarn add @bit/lodash.lodash.unique-id
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;This is the main code of the app, it receives and manages all the events that come from AddItem and TodoItem components.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



&lt;p&gt;Then all that’s left is to &lt;a href="https://bit.dev" rel="noopener noreferrer"&gt;export the components with Bit&lt;/a&gt;- and the final TodoApp is now a modular and reusable component, check out the live &lt;a href="https://bit.dev/joshk/basic-todo-app/todo-app" rel="noopener noreferrer"&gt;demo&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;All the reusable components we built are available in this &lt;a href="https://bit.dev/joshk/basic-todo-app" rel="noopener noreferrer"&gt;collection&lt;/a&gt;, including the final todo app&lt;/p&gt;

&lt;p&gt;Check the GitHub repo to see all the project’s code:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/JoshK2" rel="noopener noreferrer"&gt;
        JoshK2
      &lt;/a&gt; / &lt;a href="https://github.com/JoshK2/basic-todo-app-using-bit" rel="noopener noreferrer"&gt;
        basic-todo-app-using-bit
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A highly-modular React todo application composed of reusable components from 5 different collections. Full-blown software modularity.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Highly-modular React Todo application built of reusable Bit components &lt;a href="https://bit.dev/joshk/basic-todo-app" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b9e28057edd717025788341d2ca37f0e9456993a0364c29ceecdc1459ef168c7/68747470733a2f2f696d672e736869656c64732e696f2f6269742f636f6c6c656374696f6e2f746f74616c2d636f6d706f6e656e74732f6a6f73686b2f62617369632d746f646f2d6170702e737667" alt="components"&gt;&lt;/a&gt;
&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;A basic React todo aplication composed of &lt;a href="https://bit.dev" rel="nofollow noopener noreferrer"&gt;bit&lt;/a&gt; componnets shared from 5 different popular React UI libraries inlcuding &lt;a href="https://github.com/grommet/grommet" rel="noopener noreferrer"&gt;Grommet&lt;/a&gt;, &lt;a href="https://github.com/Semantic-Org/Semantic-UI-React" rel="noopener noreferrer"&gt;Semantic-UI React&lt;/a&gt;, &lt;a href="https://github.com/primefaces/primereact" rel="noopener noreferrer"&gt;Primereact&lt;/a&gt; and &lt;a href="https://github.com/lodash/lodash" rel="noopener noreferrer"&gt;Lodash&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;All the reusable components used to build this app are &lt;a href="https://bit.dev/joshk/basic-todo-app" rel="nofollow noopener noreferrer"&gt;availabe in this collection&lt;/a&gt;
The final todo application is also &lt;a href="https://bit.dev/joshk/basic-todo-app/todo-app" rel="nofollow noopener noreferrer"&gt;available as a reusbale bit component&lt;/a&gt;, which can be extended and composed with other components to build larger applications.&lt;/p&gt;
&lt;p&gt;
  &lt;a href="https://bit.dev/joshk/basic-todo-app" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/3579ce11721b546410cfba451dc9ea86c5ab391093dceaf5184769cdad78293e/68747470733a2f2f692e696d6167657375702e636f2f696d61676573322f663262356363396139313866613538656432313036353730656435623464626232303834366237662e706e67"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Motivation&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Demonstrating software modularity in the age of components with React and Bit.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Tutorial&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;See the full tutorial- build your own modular application with reusable components.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://blog.bitsrc.io/build-a-super-modular-todo-app-with-react-and-bit-components-aa06bbac4084" rel="nofollow noopener noreferrer"&gt;Build a Super Modular Todo App with React and Bit Components&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Wich components I used?&lt;/h2&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Semantic UI React&lt;/h3&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://bit.dev/semantic-org/semantic-ui-react/list" rel="nofollow noopener noreferrer"&gt;semantic-ui-react list component&lt;/a&gt;&lt;br&gt;
&lt;a href="https://bit.dev/semantic-org/semantic-ui-react/icon" rel="nofollow noopener noreferrer"&gt;semantic-ui-react icon component&lt;/a&gt;&lt;br&gt;
&lt;a href="https://bit.dev/semantic-org/semantic-ui-react/internal/style-links" rel="nofollow noopener noreferrer"&gt;semantic-ui-react css link component&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;PrimeReact&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a href="https://bit.dev/primefaces/primereact/inputtextarea" rel="nofollow noopener noreferrer"&gt;primereact inputtextarea component&lt;/a&gt;&lt;br&gt;
&lt;a href="https://bit.dev/primefaces/primereact/button" rel="nofollow noopener noreferrer"&gt;primereact button component&lt;/a&gt;&lt;br&gt;
&lt;a href="https://bit.dev/primefaces/primereact/internal/stylelinks" rel="nofollow noopener noreferrer"&gt;primereact css link component&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Grommet&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a href="https://bit.dev/grommet/grommet/button" rel="nofollow noopener noreferrer"&gt;grommet button component&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;grommet-icons&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a href="https://bit.dev/grommet/grommet-icons/add" rel="nofollow noopener noreferrer"&gt;grommet-icons add&lt;/a&gt;…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/JoshK2/basic-todo-app-using-bit" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this post, we’ve seen a very real example of modular software composition with reusable React components and Bit.&lt;/p&gt;

&lt;p&gt;When we base our software design on modularity of &lt;a href="https://addyosmani.com/first/" rel="noopener noreferrer"&gt;smaller focused components&lt;/a&gt;, we build a better application which is easier to develop, maintain, test and extend. Today, building modular apps becomes more practical- and more fun- than ever before in history.&lt;/p&gt;

&lt;p&gt;The same can be done not only with React and not only with frontEnd components. In my next posts, I’ll play with a modular composition for a verity of different technologies and architectures. Thanks for reading and feel free to ask anything! Cheers 🚀&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How I Created My Own React Spinners Library</title>
      <dc:creator>Josh Kuttler</dc:creator>
      <pubDate>Tue, 03 Sep 2019 16:00:02 +0000</pubDate>
      <link>https://forem.com/joshk2/how-i-created-my-own-react-spinners-library-4ckn</link>
      <guid>https://forem.com/joshk2/how-i-created-my-own-react-spinners-library-4ckn</guid>
      <description>&lt;p&gt;I’ve created an application that uses Airtable as a database. I’ve used a spinner to take the place of a dull blank page which would otherwise be presented to the user in the time that it takes for the requested data to arrive and for the page to get rendered accordingly.&lt;/p&gt;

&lt;p&gt;I could have used an existing react spinners library, but instead, I decided to use this chance to learn how to build my own spinners and my own React component library. So, in this post, I’ll show you my library, and an example of how to use a spinner.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://bit.dev/joshk/react-spinners-css" rel="noopener noreferrer"&gt;React Spinners Library&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;So, without further ado, here’s my react spinners library (&lt;a href="https://github.com/JoshK2/react-spinners-css" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, &lt;a href="https://bit.dev/joshk/react-spinners-css" rel="noopener noreferrer"&gt;Bit&lt;/a&gt;). It’s based on loading.io CSS loaders. I’ve added the option to send color and size as props of the component so that it’s easier to customize the spinners. I’ve exported the spinners (twelve in total) to &lt;a href="https://bit.dev/joshk/react-spinners-css" rel="noopener noreferrer"&gt;bit.dev&lt;/a&gt; so you may easily view and tweak them in Bit’s live playground, and install them as packages with NPM or Yarn (or get their source code using Bit import).&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/JoshK2" rel="noopener noreferrer"&gt;
        JoshK2
      &lt;/a&gt; / &lt;a href="https://github.com/JoshK2/react-spinners-css" rel="noopener noreferrer"&gt;
        react-spinners-css
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Amazing collection of React spinners components with pure css
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;React Spinners CSS Loaders (&lt;a href="https://github.com/JoshK2/vue-spinners-css" rel="noopener noreferrer"&gt;Vue&lt;/a&gt;, &lt;a href="https://github.com/JoshK2/ng-spinners" rel="noopener noreferrer"&gt;Angular&lt;/a&gt;)&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://circleci.com/gh/JoshK2/react-spinners-css" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/aaf0a3520cfe55b363c580a2e971e391290d459f8d31430fd8c40739f1287cd7/68747470733a2f2f636972636c6563692e636f6d2f67682f4a6f73684b322f72656163742d7370696e6e6572732d6373732e7376673f7374796c653d737667" alt="CircleCI"&gt;&lt;/a&gt;
&lt;a href="https://bit.dev/joshk/react-spinners-css" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/84969a0404185b702c6b2bab4e7b66d614aede82fa9fd135cb66098c31e4d693/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f64796e616d69632f6a736f6e2e7376673f636f6c6f723d366533393931266c6162656c3d626974253230636f6d706f6e656e74732671756572793d7061796c6f61642e746f74616c436f6d706f6e656e74732675726c3d68747470732533412532462532466170692e6269742e64657625324673636f70652532466a6f73686b25324672656163742d7370696e6e6572732d637373" alt="bit components"&gt;&lt;/a&gt;
&lt;a href="https://www.npmjs.com/package/react-spinners-css" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/c5ddf8e256fa7829461fc220c458d2755da2979067550198ffc8669167468091/68747470733a2f2f62616467652e667572792e696f2f6a732f72656163742d7370696e6e6572732d6373732e737667" alt="npm version"&gt;&lt;/a&gt;
&lt;a href="https://github.com/JoshK2/react-spinners-css/stargazers" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/3848b4bd5a3a71c1e16c1b01e720ed227de20c3967d6e04f835b009dce39b437/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6a6f73686b322f72656163742d7370696e6e6572732d637373" alt="GitHub stars"&gt;&lt;/a&gt;
&lt;a href="https://github.com/prettier/prettier" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/754faf8c130f602a98f87fd2912a8d4b9bcf8ab623fa9ac3352853015968cdb9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636f64655f7374796c652d70726574746965722d6666363962342e737667" alt="code style: prettier"&gt;&lt;/a&gt;
&lt;a href="https://raw.githubusercontent.com/JoshK2/react-spinners-css/master/LICENSE" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/6581c31c16c1b13ddc2efb92e2ad69a93ddc4a92fd871ff15d401c4c6c9155a4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667" alt="GitHub license"&gt;&lt;/a&gt;
&lt;a href="https://twitter.com/JoshKuttler" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b8319945fa5316a192d854b62475bdf7faa026f9a632f199551ae06e06ca2763/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f6a6f73686b7574746c6572" alt="Twitter Follow"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;a href="https://bit.dev/joshk/react-spinners-css" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/4e472843e9d3a6a1ad4cccf43870d87c721049bf5f5d63751a90f4ad07f973cc/68747470733a2f2f692e696d6167657375702e636f2f696d61676573322f316436376261616666306261393834393739323334643935323731303939383433323939646461312e676966"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Amazing collection of React spinners components with pure css.&lt;br&gt;
The React spinners are based on loading.io and from all over the web.&lt;br&gt;
If you want to add your own spinner, please follow the &lt;a href="https://github.com/JoshK2/react-spinners-cssCONTRIBUTING.md" rel="noopener noreferrer"&gt;contributing guidelines&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;💅No extra CSS imports&lt;/li&gt;
&lt;li&gt;✂️Zero dependencies&lt;/li&gt;
&lt;li&gt;📦Spinners can be installing separately&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;&lt;a href="https://bit.dev/joshk/react-spinners-css" rel="nofollow noopener noreferrer"&gt;Live Demo&lt;/a&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Browse components and explore their props with &lt;a href="https://bit.dev/joshk/react-spinners-css" rel="nofollow noopener noreferrer"&gt;Bit&lt;/a&gt;.&lt;br&gt;
Install specific react spinner component with npm, yarn or bit without having to install the whole project.&lt;br&gt;
&lt;a href="https://bit.dev/joshk/react-spinners-css" rel="nofollow noopener noreferrer"&gt;Install components and live demo&lt;/a&gt;&lt;br&gt;
&lt;a href="https://bit.dev/joshk/react-spinners-css" rel="nofollow noopener noreferrer"&gt;&lt;img width="200" height="39" src="https://camo.githubusercontent.com/0399627eae28bed6509e8a61ca2ad0ab543e6102a27ac51e25550073665acf09/68747470733a2f2f692e696d6167657375702e636f2f696d61676573322f346136346630303839353163643636653536643466316530313431613237646635383461316539342e706e67"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🚀 List of Spinners - PropTypes and Default Props&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Each component accepts a &lt;code&gt;color&lt;/code&gt; prop, and few accepts also &lt;code&gt;size&lt;/code&gt; prop.&lt;br&gt;
The default &lt;code&gt;color&lt;/code&gt; prop is &lt;code&gt;#7f58af&lt;/code&gt;.&lt;br&gt;
Component that accepts &lt;code&gt;size&lt;/code&gt; prop have a default size in pixel.&lt;/p&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Spinner&lt;/th&gt;
&lt;th&gt;color: string&lt;/th&gt;
&lt;th&gt;size: number&lt;/th&gt;
&lt;th&gt;className: string&lt;/th&gt;
&lt;th&gt;style: object&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;Circle/&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#7f58af&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;64&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;""&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;Default/&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#7f58af&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;80&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;""&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;Ellipsis/&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#7f58af&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;80&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/JoshK2/react-spinners-css" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;For example, this is the circle loader and the component can receive color and size props:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;and the code import a very simple CSS code, exactly the same from loading.io CSS loader:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h2&gt;
  
  
  How to use Loader animation in your React.js application?
&lt;/h2&gt;

&lt;p&gt;So, you have a component that sends a request and stores the received data in an array inside your state object. The obvious thing to do is check if the array is empty and if so, display the spinner.&lt;/p&gt;

&lt;p&gt;For this example, I used a &lt;a href="https://bit.dev/joshk/react-spinners-css/facebook" rel="noopener noreferrer"&gt;Facebook spinner&lt;/a&gt; with a very simple page that waiting 5 seconds until to show a list of cars.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;It’s very simple to use and allows you to show a nice animation loader until the data is loaded.&lt;/p&gt;

&lt;p&gt;Also, you can use a custom color in any spinner, just send a color inside the color property, like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Facebook&lt;/span&gt; &lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;red&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Facebook&lt;/span&gt; &lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#cecece&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Or be crazy and use a random color with my &lt;a href="https://bit.dev/joshk/jotils/get-random-color" rel="noopener noreferrer"&gt;random color generator component&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Facebook&lt;/span&gt; &lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;getRandomColor&lt;/span&gt;&lt;span class="p"&gt;()}&lt;/span&gt; &lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;You can see the result with random color in this live demo &lt;a href="https://bit.dev/joshk/react-spinners-css/facebook?example=5d6bc96a93fdc2001a39ab1d" rel="noopener noreferrer"&gt;facebook react spinner&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you want to see more react spinners examples, check out my react spinners components collection in &lt;a href="https://bit.dev/joshk/react-spinners-css" rel="noopener noreferrer"&gt;bit.dev&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For any issue or missing features, please open an issue on &lt;a href="https://github.com/JoshK2/react-spinners-css" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; and I’ll do my best.&lt;/p&gt;

&lt;p&gt;And of course, if you like it, star it!&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/JoshK2" rel="noopener noreferrer"&gt;
        JoshK2
      &lt;/a&gt; / &lt;a href="https://github.com/JoshK2/react-spinners-css" rel="noopener noreferrer"&gt;
        react-spinners-css
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Amazing collection of React spinners components with pure css
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;React Spinners CSS Loaders (&lt;a href="https://github.com/JoshK2/vue-spinners-css" rel="noopener noreferrer"&gt;Vue&lt;/a&gt;, &lt;a href="https://github.com/JoshK2/ng-spinners" rel="noopener noreferrer"&gt;Angular&lt;/a&gt;)&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href="https://circleci.com/gh/JoshK2/react-spinners-css" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/aaf0a3520cfe55b363c580a2e971e391290d459f8d31430fd8c40739f1287cd7/68747470733a2f2f636972636c6563692e636f6d2f67682f4a6f73684b322f72656163742d7370696e6e6572732d6373732e7376673f7374796c653d737667" alt="CircleCI"&gt;&lt;/a&gt;
&lt;a href="https://bit.dev/joshk/react-spinners-css" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/84969a0404185b702c6b2bab4e7b66d614aede82fa9fd135cb66098c31e4d693/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f64796e616d69632f6a736f6e2e7376673f636f6c6f723d366533393931266c6162656c3d626974253230636f6d706f6e656e74732671756572793d7061796c6f61642e746f74616c436f6d706f6e656e74732675726c3d68747470732533412532462532466170692e6269742e64657625324673636f70652532466a6f73686b25324672656163742d7370696e6e6572732d637373" alt="bit components"&gt;&lt;/a&gt;
&lt;a href="https://www.npmjs.com/package/react-spinners-css" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/c5ddf8e256fa7829461fc220c458d2755da2979067550198ffc8669167468091/68747470733a2f2f62616467652e667572792e696f2f6a732f72656163742d7370696e6e6572732d6373732e737667" alt="npm version"&gt;&lt;/a&gt;
&lt;a href="https://github.com/JoshK2/react-spinners-css/stargazers" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/3848b4bd5a3a71c1e16c1b01e720ed227de20c3967d6e04f835b009dce39b437/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6a6f73686b322f72656163742d7370696e6e6572732d637373" alt="GitHub stars"&gt;&lt;/a&gt;
&lt;a href="https://github.com/prettier/prettier" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/754faf8c130f602a98f87fd2912a8d4b9bcf8ab623fa9ac3352853015968cdb9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636f64655f7374796c652d70726574746965722d6666363962342e737667" alt="code style: prettier"&gt;&lt;/a&gt;
&lt;a href="https://raw.githubusercontent.com/JoshK2/react-spinners-css/master/LICENSE" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/6581c31c16c1b13ddc2efb92e2ad69a93ddc4a92fd871ff15d401c4c6c9155a4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667" alt="GitHub license"&gt;&lt;/a&gt;
&lt;a href="https://twitter.com/JoshKuttler" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b8319945fa5316a192d854b62475bdf7faa026f9a632f199551ae06e06ca2763/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f6a6f73686b7574746c6572" alt="Twitter Follow"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;a href="https://bit.dev/joshk/react-spinners-css" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/4e472843e9d3a6a1ad4cccf43870d87c721049bf5f5d63751a90f4ad07f973cc/68747470733a2f2f692e696d6167657375702e636f2f696d61676573322f316436376261616666306261393834393739323334643935323731303939383433323939646461312e676966"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Amazing collection of React spinners components with pure css.&lt;br&gt;
The React spinners are based on loading.io and from all over the web.&lt;br&gt;
If you want to add your own spinner, please follow the &lt;a href="https://github.com/JoshK2/react-spinners-cssCONTRIBUTING.md" rel="noopener noreferrer"&gt;contributing guidelines&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;💅No extra CSS imports&lt;/li&gt;
&lt;li&gt;✂️Zero dependencies&lt;/li&gt;
&lt;li&gt;📦Spinners can be installing separately&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;&lt;a href="https://bit.dev/joshk/react-spinners-css" rel="nofollow noopener noreferrer"&gt;Live Demo&lt;/a&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Browse components and explore their props with &lt;a href="https://bit.dev/joshk/react-spinners-css" rel="nofollow noopener noreferrer"&gt;Bit&lt;/a&gt;.&lt;br&gt;
Install specific react spinner component with npm, yarn or bit without having to install the whole project.&lt;br&gt;
&lt;a href="https://bit.dev/joshk/react-spinners-css" rel="nofollow noopener noreferrer"&gt;Install components and live demo&lt;/a&gt;&lt;br&gt;
&lt;a href="https://bit.dev/joshk/react-spinners-css" rel="nofollow noopener noreferrer"&gt;&lt;img width="200" height="39" src="https://camo.githubusercontent.com/0399627eae28bed6509e8a61ca2ad0ab543e6102a27ac51e25550073665acf09/68747470733a2f2f692e696d6167657375702e636f2f696d61676573322f346136346630303839353163643636653536643466316530313431613237646635383461316539342e706e67"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🚀 List of Spinners - PropTypes and Default Props&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Each component accepts a &lt;code&gt;color&lt;/code&gt; prop, and few accepts also &lt;code&gt;size&lt;/code&gt; prop.&lt;br&gt;
The default &lt;code&gt;color&lt;/code&gt; prop is &lt;code&gt;#7f58af&lt;/code&gt;.&lt;br&gt;
Component that accepts &lt;code&gt;size&lt;/code&gt; prop have a default size in pixel.&lt;/p&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Spinner&lt;/th&gt;
&lt;th&gt;color: string&lt;/th&gt;
&lt;th&gt;size: number&lt;/th&gt;
&lt;th&gt;className: string&lt;/th&gt;
&lt;th&gt;style: object&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;Circle/&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#7f58af&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;64&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;""&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;Default/&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#7f58af&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;80&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;""&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;Ellipsis/&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#7f58af&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;80&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/JoshK2/react-spinners-css" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;And follow me on &lt;a href="https://twitter.com/JoshKuttler" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; to get features updates.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
