<?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: Leo Kalshteyn</title>
    <description>The latest articles on DEV Community by Leo Kalshteyn (@gorgutzz).</description>
    <link>https://dev.to/gorgutzz</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%2F443220%2Fce9b1019-e99e-4c0b-8cd8-dfd95bfcdf1c.jpg</url>
      <title>DEV Community: Leo Kalshteyn</title>
      <link>https://dev.to/gorgutzz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gorgutzz"/>
    <language>en</language>
    <item>
      <title>Intro to React Helmet</title>
      <dc:creator>Leo Kalshteyn</dc:creator>
      <pubDate>Thu, 28 Jan 2021 01:47:16 +0000</pubDate>
      <link>https://dev.to/gorgutzz/intro-to-react-helmet-dna</link>
      <guid>https://dev.to/gorgutzz/intro-to-react-helmet-dna</guid>
      <description>&lt;p&gt;I came upon a react component called React Helmet that eases the manageability of a document's head section. It is social media friendly in that it combines server-side rendering and React Helmet itself and makes a dynamic duo for creating apps. React Helmet uses HTML tags and is very simple to use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;With npm:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ npm install --save react-helmet&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Features
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Supports all valid head tags: title, base, meta, link, script, noscript, and style tags.&lt;/li&gt;
&lt;li&gt;Supports attributes for body, html and title tags.&lt;/li&gt;
&lt;li&gt;Supports server-side rendering.&lt;/li&gt;
&lt;li&gt;Nested components override duplicate head changes.&lt;/li&gt;
&lt;li&gt;Duplicate head changes are preserved when specified in the same component (support for tags like "apple-touch-icon").&lt;/li&gt;
&lt;li&gt;Callback for tracking DOM changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Example of Use
&lt;/h1&gt;

&lt;p&gt;Import Helmet at the top:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from "react";
import {Helmet} from "react-helmet";

class Application extends React.Component {
  render () {
    return (
        &amp;lt;div className="application"&amp;gt;
            &amp;lt;Helmet&amp;gt;
                &amp;lt;meta charSet="utf-8" /&amp;gt;
                &amp;lt;title&amp;gt;My Title&amp;lt;/title&amp;gt;
                &amp;lt;link rel="canonical" href="http://mysite.com/example" /&amp;gt;
            &amp;lt;/Helmet&amp;gt;
            ...
        &amp;lt;/div&amp;gt;
    );
  }
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nested or latter components will override duplicate changes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;Parent&amp;gt;
    &amp;lt;Helmet&amp;gt;
        &amp;lt;title&amp;gt;My Title&amp;lt;/title&amp;gt;
        &amp;lt;meta name="description" content="Helmet application" /&amp;gt;
    &amp;lt;/Helmet&amp;gt;

    &amp;lt;Child&amp;gt;
        &amp;lt;Helmet&amp;gt;
            &amp;lt;title&amp;gt;Nested Title&amp;lt;/title&amp;gt;
            &amp;lt;meta name="description" content="Nested component" /&amp;gt;
        &amp;lt;/Helmet&amp;gt;
    &amp;lt;/Child&amp;gt;
&amp;lt;/Parent&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;outputs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;Nested Title&amp;lt;/title&amp;gt;
    &amp;lt;meta name="description" content="Nested component"&amp;gt;
&amp;lt;/head&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Read more about React Helmet on &lt;a href="https://github.com/nfl/react-helmet"&gt;Github&lt;/a&gt; for the full documentation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/nfl/react-helmet"&gt;https://github.com/nfl/react-helmet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/coding17/what-is-react-helmet-e62be15ba63b"&gt;https://medium.com/coding17/what-is-react-helmet-e62be15ba63b&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://madewithreact.com/react-helmet/"&gt;https://madewithreact.com/react-helmet/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>react</category>
    </item>
    <item>
      <title>Sass Intro</title>
      <dc:creator>Leo Kalshteyn</dc:creator>
      <pubDate>Wed, 20 Jan 2021 02:28:09 +0000</pubDate>
      <link>https://dev.to/gorgutzz/sass-intro-36f5</link>
      <guid>https://dev.to/gorgutzz/sass-intro-36f5</guid>
      <description>&lt;p&gt;I recently came upon Sass ('Syntactically Awesome Style Sheets') which is CSS preprocessor that enables you to use things like variables, nested rules, and inline imports in addition to regular CSS. It is an organizational tool used for creating style sheets quicker. &lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;With npm:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ npm install -g sass&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Usage
&lt;/h1&gt;

&lt;p&gt;There are two types of Syntax for Sass:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SCSS (Sassy CSS): Uses the .scss file extension and is fully compliant with CSS syntax&lt;/li&gt;
&lt;li&gt;Indented (simply called 'Sass'): Uses .sass file extension and indentation rather than brackets; it is not fully compliant with CSS syntax, but it's quicker to write&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Variables&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For storing things like colors, font stacks, or any CSS value for reuse, Sass uses the $ symbol for declaring variables. For example, you can store a colour value variable at the top, and then use this variable when setting the colour of your elements for quick and easy colour changes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sass&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$font-stack:    Helvetica, sans-serif
$primary-color: #333

body
  font: 100% $font-stack
  color: $primary-color
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;CSS&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;body {
  font: 100% Helvetica, sans-serif;
  color: #333;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Nesting&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sass allows nesting CSS selectors in a way that follows the same visual hierarchy of HTML. Here's an example of some typical navigation styles:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sass&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nav
  ul
    margin: 0
    padding: 0
    list-style: none

  li
    display: inline-block

  a
    display: block
    padding: 6px 12px
    text-decoration: none
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;CSS&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nav ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
nav li {
  display: inline-block;
}
nav a {
  display: block;
  padding: 6px 12px;
  text-decoration: none;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Mixins&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mixins simplify tedious CSS code. Group declarations for reusability and vendor prefixes, for example, are possible with mixins. An example of transform:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sass&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=transform($property)
  -webkit-transform: $property
  -ms-transform: $property
  transform: $property
.box
  +transform(rotate(30deg))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;CSS&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.box {
  -webkit-transform: rotate(30deg);
  -ms-transform: rotate(30deg);
  transform: rotate(30deg);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is just a brief overview of Sass and its features. On the official &lt;a href="https://sass-lang.com/"&gt;site&lt;/a&gt;, you can read more documentation on things like partials and operators.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sass-lang.com/"&gt;https://sass-lang.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.creativebloq.com/web-design/what-is-sass-111517618"&gt;https://www.creativebloq.com/web-design/what-is-sass-111517618&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sass/sass"&gt;https://github.com/sass/sass&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>sass</category>
      <category>css</category>
    </item>
    <item>
      <title>Lodash Intro</title>
      <dc:creator>Leo Kalshteyn</dc:creator>
      <pubDate>Wed, 13 Jan 2021 00:40:02 +0000</pubDate>
      <link>https://dev.to/gorgutzz/lodash-intro-2edh</link>
      <guid>https://dev.to/gorgutzz/lodash-intro-2edh</guid>
      <description>&lt;p&gt;I recently came upon a JS library called Lodash for a small app I am working on which supplies utility functions and readability of objects, arrays, string etc. There are more than 100 functions already added and split into 13 categories which simplify common problems. As hinted by the name, Lodash means, essentially, an underscore&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;With npm:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ npm install lodash&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And then import it at the top of your JavaScript file in which you would like to use it.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;import _ from Lodash&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Usage
&lt;/h1&gt;

&lt;p&gt;Here are some of the functions that Lodash provides:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Map&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Iterating over an array of an object with Lodash looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const data = [
  {
    name: 'Bob',
    age: '25',
  },
  {
    name: 'Will',
    age: '24',
  },
  {
    name: 'Mary',
    age: '26',
  }
];

_.map(data, 'name');
// [ 'Bob', 'Will', 'Mary' ]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;CloneDeep&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This method recursively clones the whole object, so if any property of the resultant object changes, it will not change the original object as the references will also be new.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const users = [
  {
    name: 'Bob', age: '25', profile: { experience: 3 }
  },
  {
    name: 'Will', age: '24', profile: { experience: 2 }
  },
  {
    name: 'Mary', age: '26', profile: { experience: 4 }
  }
];

const usersClone = _.cloneDeep(users);
usersClone[0].age = '27';

usersClone[0].age;
// 27
users[0].age;
// 25
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Intersection&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this example you have two separate arrays with different ingredients in each and want to know which ones come up in both.&lt;/p&gt;

&lt;p&gt;It would look like this in JS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let array1 = ["pizza", "icecream", "salads"];
let array2 = ["burger","hotdog", "pasta"];

let commonResults = [];

for (let i = 0; I &amp;lt; array1.length; i++) [
  if (array2.indexOf(array1[i]) !== -1) {
    let indexPosition = array2.indexOf(array1[i]);
    commonResults.push(array2[indexPosition]);
  }
}

console.log(commonResults);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In lodash you can simply do:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;console.log(_.intersection(array1, array2));
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is just a brief overview of Lodash and some of its utility functions. On the official &lt;a href="https://lodash.com/"&gt;site&lt;/a&gt;, you can read more documentation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://lodash.com/docs/4.17.15"&gt;https://lodash.com/docs/4.17.15&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/techshots/introduction-to-lodash-4d1518eac63a"&gt;https://medium.com/techshots/introduction-to-lodash-4d1518eac63a&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
    </item>
    <item>
      <title>Grommet Intro</title>
      <dc:creator>Leo Kalshteyn</dc:creator>
      <pubDate>Tue, 05 Jan 2021 23:57:53 +0000</pubDate>
      <link>https://dev.to/gorgutzz/grommet-intro-al0</link>
      <guid>https://dev.to/gorgutzz/grommet-intro-al0</guid>
      <description>&lt;p&gt;Grommet is another React component library that centers around modularity and accessibility for building mobile-first apps. One of its defining features is the ability to integrate it with existing projects as well as powerful theming tools for customizing components. Building and designing layouts for different screen displays quickly is quite simple with Grommet as well.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation for New Apps
&lt;/h2&gt;

&lt;p&gt;After creating your app remove these files from the 'src' directory:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;src/App.css&lt;/li&gt;
&lt;li&gt;src/App.test.js&lt;/li&gt;
&lt;li&gt;src/index.css&lt;/li&gt;
&lt;li&gt;src/logo.svg&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Inside src/index.js, remove the import of index.css.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import ReactDOM from 'react-dom';
import './index.css';  //Remove
import App from './App';
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inside src/App.js, remove the logo and the import of app.css&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';
import logo from './logo.svg'; //Remove
import './App.css'; //Remove

function App() {
  return (
    &amp;lt;div className="App"&amp;gt;
      &amp;lt;header className="App-header"&amp;gt;
        &amp;lt;img src={logo} className="App-logo" alt="logo" /&amp;gt;  //Remove
        &amp;lt;p&amp;gt;
          Edit &amp;lt;code&amp;gt;src/App.js&amp;lt;/code&amp;gt; and save to reload.
        &amp;lt;/p&amp;gt;
        &amp;lt;a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        &amp;gt;
          Learn React
        &amp;lt;/a&amp;gt;
      &amp;lt;/header&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}

export default App;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now Install Grommet &lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install grommet grommet-icons styled-components --save&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then add the import of the Grommet component.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;import { Grommet } from 'grommet';&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Usually, you should include Grommet only once as one of your top-level nodes.&lt;/p&gt;

&lt;p&gt;Replace the main div with Grommet.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div className="App"&amp;gt; // Remove
&amp;lt;Grommet plain&amp;gt; // Add
  &amp;lt;header className="App-header"&amp;gt;
    &amp;lt;p&amp;gt;
      Edit &amp;lt;code&amp;gt;src/App.js&amp;lt;/code&amp;gt; and save to reload.
    &amp;lt;/p&amp;gt;
    &amp;lt;a
      className="App-link"
      href="https://reactjs.org"
      target="_blank"
      rel="noopener noreferrer"
    &amp;gt;
      Learn React
    &amp;lt;/a&amp;gt;
  &amp;lt;/header&amp;gt;
&amp;lt;/Grommet&amp;gt; // Add
&amp;lt;/div&amp;gt; // Remove  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you can start customizing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation for Existing Apps
&lt;/h2&gt;

&lt;p&gt;First, install the packages&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install grommet styled-components polished --save&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then add the import of the Grommet component.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;import { Grommet } from 'grommet';&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And now you replace the top-level nodes as in the previous main div example above.&lt;/p&gt;

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

&lt;p&gt;To make use of Grommet's Box, first import it:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;import { Box, Grommet } from 'grommet';&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Create an AppBar component and replace the header tag with it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const AppBar = (props) =&amp;gt; (
  &amp;lt;Box
    tag='header'
    direction='row'
    align='center'
    justify='between'
    background='brand'
    pad={{ left: 'medium', right: 'small', vertical: 'small' }}
    elevation='medium'
    style={{ zIndex: '1' }}
    {...props}
  /&amp;gt;
);

const App = () =&amp;gt; {
  return (
    &amp;lt;Grommet theme={theme}&amp;gt;
      &amp;lt;AppBar&amp;gt;Hello Grommet!&amp;lt;/AppBar&amp;gt;
    &amp;lt;/Grommet&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Changing colors is done in the theme object&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const theme = {
  global: {
+   colors: {
+     brand: '#228BE6',
+   },
    font: {
      family: 'Roboto',
      size: '18px',
      height: '20px',
    },
  },
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Grommet also features the ability to easily declare context-aware colors which automatically adapt to light and dark themes. For example, use a light text color in a dark background, and vice-versa.&lt;/p&gt;

&lt;p&gt;This is just a brief overview of Grommet and some of its features. On the official &lt;a href="https://v2.grommet.io/"&gt;site&lt;/a&gt;, you can read more on visualizations, layouts, controls, and more.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://v2.grommet.io/"&gt;https://v2.grommet.io/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/grommet/grommet-starter-new-app"&gt;https://github.com/grommet/grommet-starter-new-app&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/grommet/grommet-starter-existing-app"&gt;https://github.com/grommet/grommet-starter-existing-app&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>react</category>
    </item>
    <item>
      <title>Intro to Chakra UI</title>
      <dc:creator>Leo Kalshteyn</dc:creator>
      <pubDate>Wed, 30 Dec 2020 02:05:41 +0000</pubDate>
      <link>https://dev.to/gorgutzz/intro-to-chakra-ui-589m</link>
      <guid>https://dev.to/gorgutzz/intro-to-chakra-ui-589m</guid>
      <description>&lt;p&gt;Chakra UI is a modular component library that contains a simple API which gives the ability to make apps without having to worry about building the components themselves. It uses Emotion for styling and customization which allows developers to style inside the components with style props. The components are dark mode compatible as well and use a Box and Stack layout.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;In your terminal:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm i @chakra-ui/react @emotion/react @emotion/styled framer-motion&lt;/code&gt;&lt;/p&gt;

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

&lt;p&gt;You also need to setup ChakraProvider in your app's root:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import * as React from "react"

// 1. import `ChakraProvider` component
import { ChakraProvider } from "@chakra-ui/react"

function App() {
  // 2. Use at the root of your app
  return (
    &amp;lt;ChakraProvider&amp;gt;
      &amp;lt;App /&amp;gt;
    &amp;lt;/ChakraProvider&amp;gt;
  )
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;For Next.js, you need to set this up in pages/_app.js or pages/_app.tsx&lt;/li&gt;
&lt;li&gt;For Gatsby, install the @chakra-ui/gatsby-plugin. It does it automatically for you.&lt;/li&gt;
&lt;li&gt;For Create React App, you need to set this up in index.js or index.tsx&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Theming Example
&lt;/h2&gt;

&lt;p&gt;Chakra UI provides an extendTheme function that deep merges the default theme with your customizations.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// 1. Import the extendTheme function
import { extendTheme } from "@chakra-ui/react"

// 2. Extend the theme to include custom colors, fonts, etc
const colors = {
  brand: {
    900: "#1a365d",
    800: "#153e75",
    700: "#2a69ac",
  },
}

const theme = extendTheme({ colors })

// 3. Pass the `theme` prop to the `ChakraProvider`
function App() {
  return (
    &amp;lt;ChakraProvider theme={theme}&amp;gt;
      &amp;lt;App /&amp;gt;
    &amp;lt;/ChakraProvider&amp;gt;
  )
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Color Mode Example
&lt;/h2&gt;

&lt;p&gt;ChakraProvider automatically uses color mode when used at the root of the app. By default, most of Chakra's component are dark mode compatible. To handle color mode manually in your application, use the useColorMode or useColorModeValue hooks.&lt;/p&gt;

&lt;p&gt;useColorMode:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function Example() {
  const { colorMode, toggleColorMode } = useColorMode()
  return (
    &amp;lt;header&amp;gt;
      &amp;lt;Button onClick={toggleColorMode}&amp;gt;
        Toggle {colorMode === "light" ? "Dark" : "Light"}
      &amp;lt;/Button&amp;gt;
    &amp;lt;/header&amp;gt;
  )
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Global Style Example
&lt;/h2&gt;

&lt;p&gt;By using ChakraProvider at the root of your application, we automatically render a GlobalStyle component. It reads the styles defined in theme.styles.global which can be a style object or a function that returns a style object. Then it processes the styles and passes it to the emotion's global component for handling the global style injection.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// 1. Using a style object
const theme = {
  styles: {
    global: {
      "html, body": {
        fontSize: "sm",
        color: "gray.600",
        lineHeight: "tall",
      },
      a: {
        color: "teal.500",
      },
    },
  },
}
// 2. Using a function
// NB: Chakra gives you access to `colorMode` and `theme` in `props`
const theme = {
  styles: {
    global: (props) =&amp;gt; ({
      "html, body": {
        fontSize: "sm",
        color: props.colorMode === "dark" ? "white" : "gray.600",
        lineHeight: "tall",
      },
      a: {
        color: props.colorMode === "dark" ? "teal.300" : "teal.500",
      },
    }),
  },
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is just a brief overview of Chakra UI and some of its features. On the official &lt;a href="https://chakra-ui.com/docs/getting-started/"&gt;site&lt;/a&gt;, you can read more on color modes, gradients, global styles, and more.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://chakra-ui.com/docs/getting-started"&gt;https://chakra-ui.com/docs/getting-started&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/news/how-to-use-chakra-ui-with-next-js-and-react/"&gt;https://www.freecodecamp.org/news/how-to-use-chakra-ui-with-next-js-and-react/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackshare.io/chakra-ui"&gt;https://stackshare.io/chakra-ui&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>react</category>
    </item>
    <item>
      <title>Intro to Evergreen UI</title>
      <dc:creator>Leo Kalshteyn</dc:creator>
      <pubDate>Tue, 22 Dec 2020 22:14:57 +0000</pubDate>
      <link>https://dev.to/gorgutzz/intro-to-evergreen-ui-fp8</link>
      <guid>https://dev.to/gorgutzz/intro-to-evergreen-ui-fp8</guid>
      <description>&lt;p&gt;Evergreen UI is another React framework that is geared towards web products. It consists of a set of components that work out of the box. Flexible &amp;amp; compostable. Evergreen components are built on top of a React UI Primitive for endless composability. It can also be used for enterprise-grade web apps. Evergreen’s design is light, simple, and intuitive. You can use it to get started building elegant user interfaces pretty quickly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;In your terminal:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install --save evergreen-ui&lt;/code&gt;&lt;/p&gt;

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

&lt;p&gt;Example of an Evergreen UI button&lt;/p&gt;

&lt;p&gt;Import the button in the app:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react'
import ReactDOM from 'react-dom'
import { Button } from 'evergreen-ui'
ReactDOM.render(
  &amp;lt;Button&amp;gt;I am using 🌲 Evergreen!&amp;lt;/Button&amp;gt;,
  document.getElementById('root')
)

export default App;  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Theming Examples
&lt;/h2&gt;

&lt;p&gt;Wrapping in the ThemeProvider component is required for styling and in order to use the ThemeProvider component, the user must pass it a value prop that is a Theme object. &lt;/p&gt;

&lt;p&gt;Here is an example of the ThemeProvider overriding the default styles:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const newTheme = {
  ...defaultTheme,
  spinnerColor: 'hotpink'
}

const ThemedApp = () =&amp;gt; (
  &amp;lt;ThemeProvider value={newTheme}&amp;gt;
    &amp;lt;Spinner /&amp;gt;
  &amp;lt;/ThemeProvider&amp;gt;
)

render(&amp;lt;ThemedApp /&amp;gt;)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An example of nested theming where it is possible to theme certain parts of the app differently by nesting the ThemeProvider components.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const parentTheme = {
  ...defaultTheme,
  spinnerColor: 'hotpink'
}

const childTheme = {
  ...defaultTheme,
  spinnerColor: 'blue'
}

const ThemedParent = ({ children }) =&amp;gt; (
  &amp;lt;ThemeProvider value={parentTheme}&amp;gt;
    &amp;lt;Spinner /&amp;gt;
    { children }
  &amp;lt;/ThemeProvider&amp;gt;
)

const ThemedChild = () =&amp;gt; (
  &amp;lt;ThemeProvider value={childTheme}&amp;gt;
    &amp;lt;Spinner /&amp;gt;
  &amp;lt;/ThemeProvider&amp;gt;
)

render(
  &amp;lt;ThemedParent&amp;gt;
    &amp;lt;ThemedChild /&amp;gt;
  &amp;lt;/ThemedParent&amp;gt;
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;withTheme allows you to easily pass the theme object down to your components.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const theme = {
  ...defaultTheme,
  myNewButtonStyles: {
    color: 'white',
    backgroundColor: 'hotpink',
    height: 30,
    borderRadius: '5px',
  }
}

const ThemedApp = ({ children }) =&amp;gt; (
  &amp;lt;ThemeProvider value={theme}&amp;gt;
    { children }
  &amp;lt;/ThemeProvider&amp;gt;
)

const MyNewButton = ({ theme }) =&amp;gt; (
  &amp;lt;button style={theme.myNewButtonStyles}&amp;gt;
    Custom styled button
  &amp;lt;/button&amp;gt;
)

const MyNewThemedButton = withTheme(MyNewButton)

render(
  &amp;lt;ThemedApp&amp;gt;
    &amp;lt;MyNewThemedButton /&amp;gt;
  &amp;lt;/ThemedApp&amp;gt;
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is just a brief overview of Evergreen UI and its theming features. On the official &lt;a href="https://evergreen.segment.com/"&gt;site&lt;/a&gt;, you can read more on how to customize components layouts, typography, colors, icons and more.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://evergreen.segment.com/"&gt;https://evergreen.segment.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/segmentio/evergreen"&gt;https://github.com/segmentio/evergreen&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>react</category>
      <category>evergreen</category>
    </item>
    <item>
      <title>Intro to Fluent UI React</title>
      <dc:creator>Leo Kalshteyn</dc:creator>
      <pubDate>Wed, 16 Dec 2020 01:05:27 +0000</pubDate>
      <link>https://dev.to/gorgutzz/intro-to-fluent-ui-react-3p8a</link>
      <guid>https://dev.to/gorgutzz/intro-to-fluent-ui-react-3p8a</guid>
      <description>&lt;p&gt;I recently read about another interesting UI library called Fluent UI created by Microsoft which offers compatibility with Desktop, Android, and iOS devices. It is essential for apps wit Microsoft Office-like features and UI, having components with behaviors and graphics that resemble it. It fits with Microsoft products and sites like Office, OneNote, Azure DevOps etc.&lt;/p&gt;

&lt;p&gt;Fluent UI also comes in two flavors; Fluent UI React and Fabric Core. According to Microsoft, for open-source react front-end framework applications, we can use fluent UI react to build user experience for various Microosft products. Fluent UI core is for non-react applications. It is a collection of CSS classes and Saas mixins, by using which we can access to colors, animations, fonts, icons and grid.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;In your terminal:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install @fluentui/react&lt;/code&gt;&lt;/p&gt;

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

&lt;p&gt;Example of a Fluent UI button&lt;/p&gt;

&lt;p&gt;Import the Primary button in the app:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';  
import './App.css';  
import { PrimaryButton } from '@fluentui/react';  

function App() {  
  return (  
    &amp;lt;div className="App"&amp;gt;  
      &amp;lt;div className="App-header"&amp;gt;  
        &amp;lt;PrimaryButton&amp;gt;Button&amp;lt;/PrimaryButton&amp;gt;  
      &amp;lt;/div&amp;gt;  
    &amp;lt;/div&amp;gt;  
  );  
}   

export default App;  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Fabric UI React
&lt;/h2&gt;

&lt;p&gt;It is also possible to use Fluent UI with the Fabric Core which provides some react controls like: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Input Controls: Button, ComboBox, Checkbox, Dropdown, ChoiceGroip, Label, SearchBox, TextField, SpinButton, Rating, Toggle, Slider etc.&lt;/li&gt;
&lt;li&gt;Galleries &amp;amp; Pickers: Calendar, PeoplePicker, ColorPicker, Pickers, DatePicker, etc.&lt;/li&gt;
&lt;li&gt;Items &amp;amp; Lists: ActivityItem, DetailsList, Persona, DocumentCard, Hover Card, Basic List, etc.&lt;/li&gt;
&lt;li&gt;Commands, Menus &amp;amp; Navs: Breadcrumb, CommandBar, ContextualMenu, Nav, etc.&lt;/li&gt;
&lt;li&gt;Notification &amp;amp; Engagement: MessageBar, TeachingBubble, Coachmark&lt;/li&gt;
&lt;li&gt;Progress: ProgressIndicator, Shimmer, Spinner&lt;/li&gt;
&lt;li&gt;Surfaces: Callout, Dialog, Modal, Tooltip, ScrollablePane, Panel etc.&lt;/li&gt;
&lt;li&gt;Utilities: Icon, Stack, Text, Selection, Separator, Keytips, Image, MarqueeSelection, etc.&lt;/li&gt;
&lt;li&gt;Experimental: Card&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example of a Fabric UI Button&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Import the button in your app:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Import { DefaultButton, PrimaryButton} from 'office-ui-fabric-react';&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And add the buttons &lt;code&gt;&amp;lt;DefaultButton text="Standard" onClick={clickhere} /&amp;gt;&lt;/code&gt; and  &lt;code&gt;&amp;lt;PrimaryButton text="Primary" onClick={clickhere} /&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Example of how it would look like in default React page:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';
import logo from './logo.svg';
import './App.css';
import { DefaultButton, PrimaryButton } from 'office-ui-fabric-react';

function App() {
    return (
        &amp;lt;div className="App"&amp;gt;
      &amp;lt;header className="App-header"&amp;gt;
        &amp;lt;img src={logo} className="App-logo" alt="logo" /&amp;gt;
        &amp;lt;p&amp;gt;
          Edit &amp;lt;code&amp;gt;src/App.js&amp;lt;/code&amp;gt; and save to reload.
        &amp;lt;/p&amp;gt;
        &amp;lt;a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        &amp;gt;
          Learn React
        &amp;lt;/a&amp;gt;
        &amp;lt;DefaultButton text="Standard" onClick={clickhere} /&amp;gt;
        &amp;lt;br/&amp;gt;
      &amp;lt;PrimaryButton text="Primary" onClick={clickhere} /&amp;gt;
      &amp;lt;/header&amp;gt;

    &amp;lt;/div&amp;gt;
  );   
}

function clickhere() {
    alert('Click Here')
}

export default App;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is just a brief overview of Fluent UI and its features. On the official &lt;a href="https://developer.microsoft.com/en-us/fluentui#/"&gt;site&lt;/a&gt;, you can read more on it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.microsoft.com/en-us/fluentui#/"&gt;https://developer.microsoft.com/en-us/fluentui#/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.spguides.com/fluent-ui/#Fluent_UI_8211_Fabric_UI_React_Example"&gt;https://www.spguides.com/fluent-ui/#Fluent_UI_8211_Fabric_UI_React_Example&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blogs.ibs.com/2020/06/30/the-pros-and-cons-of-fluent-ui-react/"&gt;https://blogs.ibs.com/2020/06/30/the-pros-and-cons-of-fluent-ui-react/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>react</category>
      <category>fluent</category>
    </item>
    <item>
      <title>Rebass Intro</title>
      <dc:creator>Leo Kalshteyn</dc:creator>
      <pubDate>Tue, 08 Dec 2020 23:05:21 +0000</pubDate>
      <link>https://dev.to/gorgutzz/rebass-intro-5084</link>
      <guid>https://dev.to/gorgutzz/rebass-intro-5084</guid>
      <description>&lt;p&gt;I recently read about an interesting UI library called Rebass for creating set of customizable UI elements which are based on the Styled System library. It gives the ability for React components to render to the canvas rather than the DOM. containing eight foundational components which styled-system, they allow the extension of custom UI components into your app with the ThemeProvider. This also reduces to need to write custom CSS in apps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Install the core Rebass library:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm i rebass&lt;/code&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;ThemeProvider&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Rebass components are stylistically unopinionated and do not include a theme by default You can add a theme to your application with a ThemeProvider component and by providing a theme in context. This example uses the Emotion ThemeProvider with the Rebass preset theme.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm i @rebass/preset emotion-theming&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then wrap with the ThemeProvider component:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react'
import { ThemeProvider } from 'emotion-theming'
import theme from '@rebass/preset'
export default props =&amp;gt;
  &amp;lt;ThemeProvider theme={theme}&amp;gt;
    {props.children}
  &amp;lt;/ThemeProvider&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Theming&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can use the default Rebass theme or completely customize the look and feel with a custom theme. Rebass follows the Theme Specification, so any theme built for use with Theme UI or Styled System will work out-of-the-box.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react'
import { ThemeProvider } from 'emotion-theming'
const theme = {
  fontSizes: [
    12, 14, 16, 24, 32, 48, 64
  ],
  colors: {
    primary: '#07c',
    gray: '#f6f6ff',
  },
  buttons: {
    primary: {
      color: 'white',
      bg: 'primary',
    },
    outline: {
      color: 'primary',
      bg: 'transparent',
      boxShadow: 'inset 0 0 0 2px'
    },
  },
}
export default props =&amp;gt;
  &amp;lt;ThemeProvider theme={theme}&amp;gt;
    {props.children}
  &amp;lt;/ThemeProvider&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Card Composite Component&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here is an example of a card box component&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  &amp;lt;Box width={256}&amp;gt;
    &amp;lt;Card
      sx={{
        p: 1,
        borderRadius: 2,
        boxShadow: '0 0 16px rgba(0, 0, 0, .25)',
      }}&amp;gt;
      &amp;lt;Image src={props.image} /&amp;gt;
      &amp;lt;Box px={2}&amp;gt;
        &amp;lt;Heading as='h3'&amp;gt;
          Card Demo
        &amp;lt;/Heading&amp;gt;
        &amp;lt;Text fontSize={0}&amp;gt;
          You can edit this code
        &amp;lt;/Text&amp;gt;
      &amp;lt;/Box&amp;gt;
    &amp;lt;/Card&amp;gt;
  &amp;lt;/Box&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is just a brief dive into Rebass. On the official &lt;a href="https://rebassjs.org/"&gt;site&lt;/a&gt;, you can look at how to customize props, images, buttons etc. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://rebassjs.org/"&gt;https://rebassjs.org/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/rebassjs/rebass"&gt;https://github.com/rebassjs/rebass&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>react</category>
      <category>rebass</category>
    </item>
    <item>
      <title>Semantic UI React Intro</title>
      <dc:creator>Leo Kalshteyn</dc:creator>
      <pubDate>Wed, 02 Dec 2020 00:22:01 +0000</pubDate>
      <link>https://dev.to/gorgutzz/semantic-ui-react-intro-4oc1</link>
      <guid>https://dev.to/gorgutzz/semantic-ui-react-intro-4oc1</guid>
      <description>&lt;p&gt;A similar front-end development framework to bootstrap, Semantic UI is an open-source framework that uses CSS and jQuery to build great user interfaces. It features pre-built components for creating responsive layouts with user-friendly HTML, JavaScript, and simplified debugging. Besides React it integrates with a number of other frameworks like Angular, Meteor, Ember among others, and organizes UI layers with the app logic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As shown on the official &lt;a href="https://react.semantic-ui.com/usage/"&gt;site&lt;/a&gt; there are two ways to install Semantic UI. &lt;/p&gt;

&lt;p&gt;Option 1: With Package Manager:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install semantic-ui-react semantic-ui-css&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then import the minified CSS file in your app's entry file:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;import 'semantic-ui-css/semantic.min.css'&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Option 2: CDN (no bundler)&lt;/p&gt;

&lt;p&gt;Add the link and script tag to the head of your index.html file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;link
  async
  rel="stylesheet"
  href="//cdn.jsdelivr.net/npm/semantic-ui@${props.versions.sui}/dist/semantic.min.css"
/&amp;gt;
&amp;lt;script
  async
  src="//cdn.jsdelivr.net/npm/semantic-ui@${props.versions.sui}/dist/semantic.min.js"
&amp;gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Examples of Features
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Buttons&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are a wide variety of button types that you can see on the official documentation. Some examples below:&lt;/p&gt;

&lt;p&gt;Standard Button:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react'
import { Button } from 'semantic-ui-react'

const ButtonExampleButton = () =&amp;gt; &amp;lt;Button&amp;gt;Click Here&amp;lt;/Button&amp;gt;

export default ButtonExampleButton
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Animated Button:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react'
import { Button, Icon } from 'semantic-ui-react'

const ButtonExampleAnimated = () =&amp;gt; (
  &amp;lt;div&amp;gt;
    &amp;lt;Button animated&amp;gt;
      &amp;lt;Button.Content visible&amp;gt;Next&amp;lt;/Button.Content&amp;gt;
      &amp;lt;Button.Content hidden&amp;gt;
        &amp;lt;Icon name='arrow right' /&amp;gt;
      &amp;lt;/Button.Content&amp;gt;
    &amp;lt;/Button&amp;gt;
    &amp;lt;Button animated='vertical'&amp;gt;
      &amp;lt;Button.Content hidden&amp;gt;Shop&amp;lt;/Button.Content&amp;gt;
      &amp;lt;Button.Content visible&amp;gt;
        &amp;lt;Icon name='shop' /&amp;gt;
      &amp;lt;/Button.Content&amp;gt;
    &amp;lt;/Button&amp;gt;
    &amp;lt;Button animated='fade'&amp;gt;
      &amp;lt;Button.Content visible&amp;gt;Sign-up for a Pro account&amp;lt;/Button.Content&amp;gt;
      &amp;lt;Button.Content hidden&amp;gt;$12.99 a month&amp;lt;/Button.Content&amp;gt;
    &amp;lt;/Button&amp;gt;
  &amp;lt;/div&amp;gt;
)

export default ButtonExampleAnimated
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Themes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Another feature of Semantic UI is custom themes. Semantic UI React does not have its own styling system and fully relies on the theming of Semantic UI.&lt;/p&gt;

&lt;p&gt;First you would need to remove existing references for semantic-ui &amp;amp; semantic-ui-css package or styles included from CDN to avoid styles duplication.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm uninstall semantic-ui semantic-ui-css&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then install the required dependencies of for example @craco/craco:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install @craco/craco @semantic-ui-react/craco-less semantic-ui-less --save-dev&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;After that, update your 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;{
  "scripts": {
    "start": "craco start",
    "build": "craco build",
    "test": "craco test",
    "eject": "craco eject"
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And create craco.config.js&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;module.exports = {
  plugins: [{ plugin: require('@semantic-ui-react/craco-less') }],
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There is a tool CLI tool that will copy necessary files with the skeleton of your customization.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npx @semantic-ui-react/bootstrap&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Edit the &lt;code&gt;semantic-ui/theme.config&lt;/code&gt; with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/*******************************
            Folders
*******************************/

@themesFolder : 'themes';
@siteFolder  : '../../src/semantic-ui/site';

@import (multiple) "~semantic-ui-less/theme.less";
@fontPath : '../../../themes/@{theme}/assets/fonts';
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally, import the &lt;code&gt;semantic.less&lt;/code&gt; file in &lt;code&gt;index.js&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;import 'semantic-ui-less/semantic.less'&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now it is possible to add color or background for example by editing the &lt;code&gt;src/semantic-ui/site/globals/site.variables&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@primaryColor: #002f4e;
@pageBackground: #eff0f1;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is just a brief intro to Semantic UI React and what you can do with it. On the official site, you can look at how to utilize it to make cards, lists, modals among other things.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://react.semantic-ui.com/usage"&gt;https://react.semantic-ui.com/usage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactgo.com/semantic-ui-react/"&gt;https://reactgo.com/semantic-ui-react/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.robinwieruch.de/react-semantic-ui-tutorial"&gt;https://www.robinwieruch.de/react-semantic-ui-tutorial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>react</category>
      <category>semanticui</category>
    </item>
    <item>
      <title>Blueprint UI Intro</title>
      <dc:creator>Leo Kalshteyn</dc:creator>
      <pubDate>Wed, 25 Nov 2020 01:28:46 +0000</pubDate>
      <link>https://dev.to/gorgutzz/blueprint-ui-intro-2ge9</link>
      <guid>https://dev.to/gorgutzz/blueprint-ui-intro-2ge9</guid>
      <description>&lt;p&gt;Blueprint is another React UI toolkit that is optimized for building complex, data-dense web interfaces for desktop applications. Part of its aim is to keep things flexible by being reusable and focuses on composition, allowing Blueprint components to be composed to create higher-level structures. It also has a distinguishable content and color perception, allowing contrast and colors, including those that are accessible to colorblind users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Run in your react app:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install @blueprintjs/core&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Blueprint must be installed with react and react-dom since its additional packages have peer dependencies to these packages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To import React components in your app:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { Button, Intent, Spinner } from "@blueprintjs/core";

// using JSX:
const mySpinner = &amp;lt;Spinner intent={Intent.PRIMARY} /&amp;gt;;

// use React.createElement if you're not using JSX.
const myButton = React.createElement(Button, { intent: Intent.SUCCESS }, "button content");
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You need to also include the main CSS file from each Blueprint package. Additionally, the resources/ directory contains supporting media such as fonts and images.&lt;/p&gt;

&lt;p&gt;Example using node packaging in CSS file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@import "~normalize.css";
@import "~@blueprintjs/core/lib/css/blueprint.css";
@import "~@blueprintjs/icons/lib/css/blueprint-icons.css";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example of a card component:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';
import "@blueprintjs/core/lib/css/blueprint.css"
import { Button, Card, Classes } from "@blueprintjs/core";


const Blueprint = () =&amp;gt; (
&amp;lt;Card style={{width: 300}} className={Classes.CARD}&amp;gt;
    &amp;lt;h3&amp;gt;Blueprint card&amp;lt;/h3&amp;gt;
    &amp;lt;p&amp;gt;Text&amp;lt;/p&amp;gt;
    &amp;lt;Button intent="primary" text="Read more" className={Classes.BUTTON} /&amp;gt;
&amp;lt;/Card&amp;gt;
  );

export default Blueprint;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is just a glimpse of the Blueprint UI and what you can do with it. It is optimized for data-dense interfaces and while you cannot use its full potential for web apps, it is still a good component library for React apps overall.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blueprintjs.com/docs/#blueprint/getting-started"&gt;https://blueprintjs.com/docs/#blueprint/getting-started&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/palantir/scaling-product-design-with-blueprint-25492827bb4a"&gt;https://medium.com/palantir/scaling-product-design-with-blueprint-25492827bb4a&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/palantir/blueprint"&gt;https://github.com/palantir/blueprint&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>react</category>
      <category>blueprintui</category>
    </item>
    <item>
      <title>React-Select Intro</title>
      <dc:creator>Leo Kalshteyn</dc:creator>
      <pubDate>Wed, 18 Nov 2020 01:19:28 +0000</pubDate>
      <link>https://dev.to/gorgutzz/react-select-intro-3fkf</link>
      <guid>https://dev.to/gorgutzz/react-select-intro-3fkf</guid>
      <description>&lt;p&gt;I have read about a simple React library which offers flexibility and easy to use input control for your apps, with features like multi-select,  autocomplete, and async.&lt;/p&gt;

&lt;p&gt;A flexible and beautiful Select Input control for ReactJS with multi-select, autocomplete, async and creatable support.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Some Features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flexible approach to data, with customizable functions&lt;/li&gt;
&lt;li&gt;Extensible styling API with emotion&lt;/li&gt;
&lt;li&gt;Component Injection API for complete control over the UI behavior&lt;/li&gt;
&lt;li&gt;Controllable state props and modular architecture&lt;/li&gt;
&lt;li&gt;Long-requested features like option groups, portal support, animation, and more&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install react-select&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';
import Select from 'react-select';

const options = [
  { value: 'blues', label: 'Blues' },
  { value: 'rock', label: 'Rock' },
  { value: 'jazz', label: 'Jazz' },
  { value: 'orchestra' label: 'Orchestra' } 
];

class App extends React.Component {
  render(){
    return (
      &amp;lt;Select options = {options} /&amp;gt;
    );
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the above example, import the react-select package in App.js&lt;br&gt;
This gives access to the react-select ( ) and also extends the React.Component class. The options and values are passed in as props.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Props&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;state = {
  selectedOption: null,
}
handleChange = (selectedOption) =&amp;gt; {
  this.setState({ selectedOption });
  console.log(`Option selected:`, selectedOption);
}
render(){
  const { selectedOption } = this.state;
}

return (
  &amp;lt;S
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here is an example of how some props are used to customize the functionalities of the select component.&lt;/p&gt;

&lt;p&gt;The state manager prop onChange gets the information about the current select item. For example, if you select rock as an option in the console, you'll get something like Option selected: {value:"rock", label: "Rock"} which is useful for manipulating the data gotten from our select component. Other props seen are the options and autoFocus props. The options prop is used to pass in select options to the select component, which in this case are the music genres. The autoFocus prop which has a data type of boolean is used to add autoFocus to the select component on page load.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here is a list of some common props:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;autoFocus - focus the control when it mounts&lt;/li&gt;
&lt;li&gt;className - apply a className to the control&lt;/li&gt;
&lt;li&gt;classNamePrefix - apply classNames to inner elements with the given prefix&lt;/li&gt;
&lt;li&gt;isDisabled - disable the control&lt;/li&gt;
&lt;li&gt;isMulti - allows the user to select multiple values&lt;/li&gt;
&lt;li&gt;isSearchable - allows the user to search for matching options&lt;/li&gt;
&lt;li&gt;name - generate an HTML input with this name, containing the current value&lt;/li&gt;
&lt;li&gt;onChange - subscribe to change events&lt;/li&gt;
&lt;li&gt;options - specify the options the user can select from&lt;/li&gt;
&lt;li&gt;placeholder - change the text displayed when no option is selected&lt;/li&gt;
&lt;li&gt;value - control the current value&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check out the props &lt;a href="https://react-select.com/props"&gt;documentation&lt;/a&gt; for more.&lt;/p&gt;

&lt;p&gt;There are other features such as async, animated components, and custom components that you can see in the documentation on the official site. It really is a handy tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://react-select.com/home/"&gt;https://react-select.com/home/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/codingtown/react-select-852e90d549df"&gt;https://medium.com/codingtown/react-select-852e90d549df&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/react-select"&gt;https://www.npmjs.com/package/react-select&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>react</category>
    </item>
    <item>
      <title>Intro to Apollo Client</title>
      <dc:creator>Leo Kalshteyn</dc:creator>
      <pubDate>Wed, 11 Nov 2020 01:04:16 +0000</pubDate>
      <link>https://dev.to/gorgutzz/intro-to-apollo-j08</link>
      <guid>https://dev.to/gorgutzz/intro-to-apollo-j08</guid>
      <description>&lt;p&gt;I came upon something called Apollo while building a simple ecommerce react app. For the backend product data, I decided to use graphql to easily fetch and modify data. And that's when I discovered this Apollo library which combines both React integration and GraphQL. It makes working with React and GraphQL a lot easier by giving lots of custom React hooks and features that enables the writing of GraphQL operations and executing them with JavaScript code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Some Features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Declarative data fetching: Write a query and receive data without manually tracking loading states.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Excellent developer experience: Enjoy helpful tooling for TypeScript, Chrome DevTools, and VS Code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Designed for modern React: Take advantage of the latest React features, such as hooks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Incrementally adoptable: Drop Apollo into any JavaScript app seamlessly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Universally compatible: Use any build setup and any GraphQL API.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install @apollo/client graphql&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;@apollo/client: This package contains the main Apollo client with all essential features.&lt;/li&gt;
&lt;li&gt;graphql: This package provides logic for parsing GraphQL queries.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You connect Apollo Client to React with the ApolloProvider component. The ApolloProvider is similar to React's Context.Provider. It wraps your React app and places the client on the context, which enables you to access it from anywhere in your component tree.&lt;/p&gt;

&lt;p&gt;In your app's index.js,  wrap the React app with an ApolloProvider. It is advisable to put ApolloProvider above any component that might need to access GraphQL data. For example, it could be outside of your root route component if you're using React Router.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';
import { render } from 'react-dom';

import { ApolloProvider } from '@apollo/client';

function App() {
  return (
    &amp;lt;ApolloProvider client={client}&amp;gt;
      &amp;lt;div&amp;gt;
        &amp;lt;h2&amp;gt;My first Apollo app 🚀&amp;lt;/h2&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/ApolloProvider&amp;gt;
  );
}

render(&amp;lt;App /&amp;gt;, document.getElementById('root'));
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Requesting Data with useQuery&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After hooking up ApolloProvider, you use the useQuery hook for passing the GraphQL query. useQuery is a React hook that uses the Hooks API to share GraphQL data with your UI. When your component renders and the useQuery hook runs, a result object is returned that contains loading, error, and data properties:&lt;/p&gt;

&lt;p&gt;Apollo Client tracks error and loading state for you, which are reflected in the loading and error properties.&lt;br&gt;
When the result of your query comes back, it's attached to the data property.&lt;/p&gt;

&lt;p&gt;Example of useQuery being used with an ExchangeRates component in index.js:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { useQuery, gql } from '@apollo/client';

const EXCHANGE_RATES = gql`
  query GetExchangeRates {
    rates(currency: "USD") {
      currency
      rate
    }
  }
`;

function ExchangeRates() {
  const { loading, error, data } = useQuery(EXCHANGE_RATES);

  if (loading) return &amp;lt;p&amp;gt;Loading...&amp;lt;/p&amp;gt;;
  if (error) return &amp;lt;p&amp;gt;Error :(&amp;lt;/p&amp;gt;;

  return data.rates.map(({ currency, rate }) =&amp;gt; (
    &amp;lt;div key={currency}&amp;gt;
      &amp;lt;p&amp;gt;
        {currency}: {rate}
      &amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;
  ));
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There are more things the Apollo Client can do like fetch queries with arguments and configuring.  As well as updating data with mutations and Apollo cache. Check out the references for more in-depth information and tutorials.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.apollographql.com/docs/react/"&gt;https://www.apollographql.com/docs/react/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/news/react-apollo-client-2020-tutorial/"&gt;https://www.freecodecamp.org/news/react-apollo-client-2020-tutorial/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>apollo</category>
      <category>react</category>
      <category>graphql</category>
    </item>
  </channel>
</rss>
