<?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: Jinseok</title>
    <description>The latest articles on DEV Community by Jinseok (@simjinseok).</description>
    <link>https://dev.to/simjinseok</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%2F235286%2Fd106234d-ef09-4572-b18a-14dd523562fa.jpeg</url>
      <title>DEV Community: Jinseok</title>
      <link>https://dev.to/simjinseok</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/simjinseok"/>
    <language>en</language>
    <item>
      <title>Elastic Beanstalk에서 플랫폼과 버전 동시에 업데이트</title>
      <dc:creator>Jinseok</dc:creator>
      <pubDate>Sat, 28 Aug 2021 02:59:43 +0000</pubDate>
      <link>https://dev.to/simjinseok/elastic-beanstalk-10an</link>
      <guid>https://dev.to/simjinseok/elastic-beanstalk-10an</guid>
      <description>&lt;p&gt;엘라스틱 빈즈토크는 이용할 때 아쉬운 점이 있었다. 바로 플랫폼 업데이트나 어플리케이션 버전 업데이트가 동시에 안되는 것이다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;환경 URL 교체&lt;/strong&gt;라는 기능이 있지만 스테이지&lt;sup&gt;stage&lt;/sup&gt;버전과 프로덕션&lt;sup&gt;production&lt;/sup&gt;의 데이터베이스를 다르게 사용하는데, 이 부분을 어떻게 처리해야할지 고민하다 이직하면서 잊혀졌다.&lt;/p&gt;

&lt;p&gt;그래서 플랫폼과 앱 버전을 동시에 업데이트 하는 방법을 설명하면&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;/p&gt;
&lt;h2&gt;
  
  
  1. AWS CLI 설치
&lt;/h2&gt;

&lt;p&gt;⠀&lt;br&gt;
⠀&lt;/p&gt;
&lt;h2&gt;
  
  
  2. 명령어 입력
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;aws elasticbeanstalk update-environment --environment-id [환경 식별자] --version-label [버전명] --solution-stack-name [플랫폼]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;예를들면 다음과 같다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;aws elasticbeanstalk update-environment &lt;span class="nt"&gt;--environment-id&lt;/span&gt; e-abcdefghij &lt;span class="nt"&gt;--version-label&lt;/span&gt; &lt;span class="s2"&gt;"20210828-2"&lt;/span&gt; &lt;span class="nt"&gt;--solution-stack-name&lt;/span&gt; &lt;span class="s2"&gt;"64bit Amazon Linux 2 v3.3.4 running Ruby 2.7"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;⠀&lt;br&gt;
⠀&lt;/p&gt;
&lt;h2&gt;
  
  
  env.yaml
&lt;/h2&gt;

&lt;p&gt;어떤 플랫폼을 사용할지 지정할 수 있다. 루트에 &lt;a href="https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/environment-cfg-manifest.html"&gt;env.yaml&lt;/a&gt;파일을 생성하고 설정할 수 있다.&lt;br&gt;
다음처럼 만들 수 있다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;AWSConfigurationTemplateVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;1.1.0.0&lt;/span&gt;
&lt;span class="na"&gt;SolutionStack&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;64bit Amazon Linux 2 v3.4.2 running Ruby &lt;/span&gt;&lt;span class="m"&gt;3.0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  번외. 애플리케이션 버전 추가하기
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/blogs/devops/creating-deployable-app-archives-for-elastic-beanstalk/"&gt;https://aws.amazon.com/blogs/devops/creating-deployable-app-archives-for-elastic-beanstalk/&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;git archive &lt;span class="nt"&gt;--format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;zip HEAD &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; myapp.zip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>aws</category>
    </item>
    <item>
      <title>Elastic Beanstalk에서 hooks를 이용할 때 권한이 없는 문제</title>
      <dc:creator>Jinseok</dc:creator>
      <pubDate>Sun, 22 Aug 2021 07:25:40 +0000</pubDate>
      <link>https://dev.to/simjinseok/elastic-beanstalk-hooks-1kfb</link>
      <guid>https://dev.to/simjinseok/elastic-beanstalk-hooks-1kfb</guid>
      <description>&lt;p&gt;엘라스틱 빈즈토크의 운영체제가 아마존 리눅스 2&lt;sup&gt;AL2&lt;/sup&gt;로 바뀌면서 사용법도 많이 바뀌었다.&lt;/p&gt;

&lt;p&gt;내 문제는 레일즈에서 webpacker를 사용하면서 yarn을 설치해야하는데, AL2가 되면서 .ebextension 대신 훅&lt;sup&gt;hooks&lt;/sup&gt;을 이용함으로써 발생했다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;.platform/hooks/prebuild/yarn.sh: permission denied 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;⠀&lt;br&gt;
⠀&lt;/p&gt;

&lt;p&gt;정말 말그대로 권한에 문제가 있었다. 파일 권한에...&lt;br&gt;
&lt;a href="https://forums.aws.amazon.com/thread.jspa?threadID=321653&amp;amp;tstart=0"&gt;답변 링크&lt;/a&gt;&lt;br&gt;
⠀&lt;br&gt;
아래 커맨드로 해결했다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;git update-index &lt;span class="nt"&gt;--chmod&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;+x .platform/hooks/prebuild/yarn.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--D3Chr6Rj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ax0j4ihhxatjtec6zkp5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--D3Chr6Rj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ax0j4ihhxatjtec6zkp5.png" alt="스크린샷 2021-08-22 15.57.29" width="800" height="621"&gt;&lt;/a&gt;&lt;br&gt;
커밋을 잊어선 안된다.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LBc6_Bxy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jyawy926u9nsrnw3k2bq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LBc6_Bxy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jyawy926u9nsrnw3k2bq.png" alt="스크린샷 2021-08-22 16.07.03 2" width="800" height="120"&gt;&lt;/a&gt;&lt;br&gt;
644에서 755로 권한이 변경된걸 확인할 수 있다.&lt;/p&gt;

&lt;p&gt;⠀&lt;br&gt;
⠀&lt;/p&gt;

&lt;h3&gt;
  
  
  후기
&lt;/h3&gt;

&lt;p&gt;며칠을 검색해도 못찾았는데, 1년 흐른 후 새로운 프로젝트에서 같은 문제를 접했을 땐 검색 몇번으로 해결했다. 살짝 허무했다.&lt;/p&gt;

</description>
      <category>aws</category>
    </item>
    <item>
      <title>자바스크립트의 다양한 이름들 node.js, ecma, v8</title>
      <dc:creator>Jinseok</dc:creator>
      <pubDate>Mon, 16 Aug 2021 15:25:22 +0000</pubDate>
      <link>https://dev.to/simjinseok/node-js-ecma-v8-b2d</link>
      <guid>https://dev.to/simjinseok/node-js-ecma-v8-b2d</guid>
      <description>&lt;p&gt;분명 자바스크립트 강의를 듣는데 뭔가 다른 단어가 나오면 혼란스럽다. "아니, 나는 자바스크립트를 배우고 싶다구요!"&lt;/p&gt;

&lt;p&gt;더 알고 싶어 자바스크립트를 검색하면 nodejs, ecma2015 같은 단어가 눈에 띈다. 크롬은 v8 엔진이니 뭐시기 하는데, 아니 도대체 이건 뭐란 말인가?&lt;/p&gt;

&lt;p&gt;나는 프로그래밍 언어가 만들어지는 공정을 얘기하고자 한다. 왜 브라우저마다 다른 것이지? 왜 자바스크립트를 그렇게 부르지? 이해하게 될 것이다.&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;/p&gt;

&lt;h2&gt;
  
  
  자바스크립트
&lt;/h2&gt;

&lt;p&gt;먼저 우리가 이해하기 어려운 점이 있다. 자바스크립트는 웹브라우저에서 사용하는 유일한 언어다. 그래서 브라우저만 생각하고 있는데, 누군가는 컴퓨터의 콘솔 창을 키고 무슨 명령어를 입력하는데 자바스크립트라고 한다. 여기서 내가 알던 자바스크립트가 어색해진다.&lt;/p&gt;

&lt;p&gt;우리가 흔히 말하는 자바스크립트는 웹브라우저에서 사용하는 그 언어가 맞다. 클릭했을 때 이벤트 넣고, 스타일 수정하고, 알림 창 띄울 때 '자바스크립트' 코드를 작성한다.&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;/p&gt;

&lt;h3&gt;
  
  
  Vanilla JS
&lt;/h3&gt;

&lt;p&gt;자바스크립트를 부르는 다른 말이다. 2019년 즈음되선 볼 수 없는 단어다.&lt;/p&gt;

&lt;p&gt;이런 단어를 사용할 정도로 순수한 자바스크립트는 보기 힘들었다. 그전까진 대부분 제이쿼리를 이용했는데, 자바스크립트로 만들어진 라이브러리임에도 불구하고 사람들은 자바스크립트는 모르고 제이쿼리는 알았다. 정말로...&lt;/p&gt;

&lt;p&gt;해외도 이러한 현상이 정말 심각했다. ES5 시절에만해도 웹개발에선 디자이너가 중요했지 지금처럼 개발자가 중요하지도 않았고 자바스크립트를 프로그래밍 언어로 보지도 않았다. &lt;/p&gt;

&lt;p&gt;그렇게 프로그래밍에 대한 이해도가 낮은 개발자가 주로 사용하다보니 제이쿼리, 앵귤러JS, 리액트같은 라이브러리를 자바스크립트의 일부로 생각하는 경향이 있었고 결국 커뮤니티에선 바닐라JS라는 단어까지 나온 것이다.&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;/p&gt;

&lt;h2&gt;
  
  
  V8
&lt;/h2&gt;

&lt;p&gt;구글에서 만든 자바스크립트 엔진이다. 엔진은 우리가 작성한 자바스크립트 코드를 실행하는 역할을 담당한다. &lt;/p&gt;

&lt;p&gt;변수를 사용하고, 함수를 만들고, 분기문으로 처리하는 등 코드를 넣으면 엔진은 그 문법에 알맞게 실행한다.&lt;/p&gt;

&lt;p&gt;만약 일반 종이에 자바스크립트 소스를 작성하면 어떻게 될까? 아무 일도 일어나지 않는다. 컴퓨터에 자바스크립트 코드를 작성해도 아무 일도 일어나지 않는다. 바로 엔진에 그 소스 코드를 전달했을 때 엔진은 그 코드를 해석하고 컴퓨터에 명령을 내린다.&lt;/p&gt;

&lt;p&gt;브라우저에선 자바스크립트 파일을 불러오면 브라우저에 내장된 자바스크립트 엔진이 그 코드를 실행한다. 가장 많이 사용하는 구글의 크롬 브라우저가 바로 이 V8 엔진을 이용해 자바스크립트 소스를 실행한다.&lt;/p&gt;

&lt;p&gt;엔진은 보통 C, C++ 언어를 기반으로 제작하고, 마이크로소프트는 차크라(인터넷 익스플로러, 엣지 구버전, 2021년까지 보안패치 진행), 애플의 사파리는 웹킷(JavascriptCore), 파이어폭스는 스파이더몽키라는 엔진을 만들어 사용하고 있다.&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;/p&gt;

&lt;h2&gt;
  
  
  ECMAScript
&lt;/h2&gt;

&lt;p&gt;엔진이라는 존재를 인식했다. 그럼 엔진은 그 코드를 어떻게 해석할까? 이를 스펙이라 부르는데, ECMAScript가 바로 스펙이다. 문법을 정하고 그 문법은 어떻게 작동해야 하는지 상세하게 설명한다.&lt;/p&gt;

&lt;p&gt;스펙이란 단어는 낯설지 않다. 우리가 물건을 구입해도 볼 수 있다. 내용물이 뭐가 들었고, 높이와 넓이는 어떻게 되는지 그리고 어떤 기준을 충족하는지 등등 이 내용을 근거로 실물을 보지 않고도 우리는 어떤 물건인지, 필요한지 판단할 수 있다.&lt;/p&gt;

&lt;p&gt;스펙에 적힌 내용은 이런 것들이 있다. 어떤 개념과 키워드가 있는지, + 연산을 사용하면 어떻게 작동해야 하는지, 배열은 어떤 조건을 충족해야 하는지 등 어떤 걸 구현해야 하는지 문법과 컨셉을 설명하고 있다.&lt;/p&gt;

&lt;p&gt;물론 이것은 그냥 문서이고 엔진 개발자가 자기 마음대로 만들 수도 있다. 실제로 스펙 내용이 부족했던 2000년대에는 브라우저마다 코드를 다르게 작성해야 했고, 그냥 정말로 혼돈의 카오스였다. &lt;/p&gt;

&lt;p&gt;그래서 개발자들은 인터넷 익스플로러를 기준으로 작업했는데, 당시 점유율이 압도적으로 높아 다른 브라우저를 생각하지 않아도 큰 문제 없었다.&lt;/p&gt;

&lt;p&gt;우리가 사용하는 자바스크립트는 ecma라는 단체에서 TC 39라는 팀이 관리하는 스펙을 이용하고 있다.&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;/p&gt;

&lt;h2&gt;
  
  
  node.js
&lt;/h2&gt;

&lt;p&gt;프로그래밍 언어는 컴퓨터에서 명령어 입력해가며 실행한다. 그러나 앞서 말했지만 자바스크립트는 웹 브라우저에서 실행할 수 있는 유일한 프로그래밍 언어이기 때문에 오히려 컴퓨터에서 실행한다는 개념이 어색하다.&lt;/p&gt;

&lt;p&gt;V8 엔진을 기반으로 만들었고, 컴퓨터의 파일을 관리하거나 HTTP 서버를 운영하는 등의 API를 자바스크립트 문법을 이용해 제공한다.&lt;/p&gt;

&lt;p&gt;초기엔 팀이 갈라지고 말이 많았지만, 페이팔, 링크드인, 넷플릭스 같은 거대 IT 기업이 이용하면서 인정을 받게 되었다. 최근엔 웹 프로그래밍 강의로 RoR, Java가 아닌 nodejs가 많이 보인다. 자바스크립트는 쉽게 익힐 수 있는 언어면서 괜찮은 성능을 보여주고 있어서 많은 사랑을 받고 있는 게 아닌가 생각된다.&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;/p&gt;

&lt;h2&gt;
  
  
  Deno
&lt;/h2&gt;

&lt;p&gt;nodejs를 만든 Ryan Dahl이 Go 언어로 넘어간 듯하다가 deno를 만들었다. nodejs에서의 아쉬움을 개선했다. 이것도 컴퓨터에서 돌아가는 자바스크립트다.&lt;/p&gt;

&lt;p&gt;가장 핫한 rust, typescript 언어를 사용했고, ESM을 사용(nodejs는 아직도 esm의 일부만 지원한다)하는게 가장 도드라지는 특징이다.&lt;/p&gt;

&lt;p&gt;초창기인 지금은 지켜볼 뿐이고, 자바스크립트에 익숙하지 않다면 nodejs를 대체하는 존재라는 정도로만 인식하고 있으면 된다.&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;/p&gt;

&lt;h2&gt;
  
  
  Typescript
&lt;/h2&gt;

&lt;p&gt;자바스크립트에 타입 기능을 더한 프로그래밍 언어다. 자바스크립트로 변환하는 도구도 제공한다.&lt;/p&gt;

&lt;p&gt;2018년?까진 리액트에 적용되있는 페이스북에서 만든 flow를 채택하는 라이브러리를 보곤했는데, 사용하는게 조금 혼란스러웠다.&lt;/p&gt;

&lt;p&gt;지금 한창 유행이긴 하지만 제대로 이해하지 않으면 없느니 만도 못하다. 이왕 접한다면 시간 좀 내서 소스코드가 어떻게 변하는지 이해한 후 사용하길 권장한다.&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;/p&gt;

&lt;h2&gt;
  
  
  CoffeeScript
&lt;/h2&gt;

&lt;p&gt;파이썬이 굉장히 사랑받던 10년 전쯤, 간결한 문법으로 인기를 모았던 언어다. 타입스크립트와 역할이 똑같다. 지금은 아무도 안 쓴다고 봐도 무방하고, 배울 필요도 없다.&lt;/p&gt;

&lt;p&gt;약간 트렌드를 읽을 수 있는게, 2010년 전후로는 문법이 간결한게 인기였고, 2020년 전후로는 타입이 인기다.&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;/p&gt;

&lt;h2&gt;
  
  
  jQuery
&lt;/h2&gt;

&lt;p&gt;존 레식&lt;sup&gt;John Resig&lt;/sup&gt; 아재가 제작한 자바스크립트 라이브러리다. 당시 자바스크립트는 혼돈의 카오스였다. 표준이 미약하다보니 브라우저마다 문법이 다른 부분이 많았다. 국내는 IE 독점이지만 해외에선 파이어폭스, 크롬의 비중이 높았다.&lt;/p&gt;

&lt;p&gt;서로 다른 브라우저를 같은 문법으로 코딩할 수 있고, 자바스크립트에 비해 사용이 간단하다보니 자바스크립트는 몰라도 제이쿼리는 배우는 상황이 되었다.&lt;/p&gt;

&lt;p&gt;당시엔 프론트엔드(퍼블리셔라는 직무도 있긴 했지만 디자이너나 개발자가 떠맡았다)만 전문적으로 하는 인력을 배치하는게 기업 운영 입장에선 쉽지않아 제대로된 개발자도 없었다.&lt;/p&gt;

&lt;p&gt;진입장벽이 없다보니 지식이 전혀 없는 사람이 주로 사용했고 사이트 하나에 5개 버전의 제이쿼리가 들어가거나 소스코드가 엉망인 경우가 허다해서 지금은 애물단지로 인식되고있다.&lt;/p&gt;

</description>
      <category>javascript</category>
    </item>
    <item>
      <title>자바스크립트 원시 타입과 객체를 사용할 때 종종 실수하는 것</title>
      <dc:creator>Jinseok</dc:creator>
      <pubDate>Sat, 14 Aug 2021 12:17:47 +0000</pubDate>
      <link>https://dev.to/simjinseok/-2nl</link>
      <guid>https://dev.to/simjinseok/-2nl</guid>
      <description>&lt;p&gt;자바스크립트는 값을 두 가지로 분류한다. 원시 값&lt;sup&gt;primitive value&lt;/sup&gt;과 객체&lt;sup&gt;object&lt;/sup&gt;가 있다.&lt;/p&gt;

&lt;p&gt;함수의 매개변수에서 값을 사용할 때 종종 내가 원하는 값이 나오지 않을 때가 있었는데, 이러한 특성을 몰랐었기 때문이다.&lt;/p&gt;

&lt;p&gt;그리고 한창 리액트&lt;sup&gt;react&lt;/sup&gt;가 유행하던 2017년 즈음엔 상태&lt;sup&gt;state&lt;/sup&gt; 값으로 객체를 사용할 때 값을 변경해도 업데이트가 되지않는게 한창 이슈였는데 같은 맥락이다.&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;/p&gt;
&lt;h2&gt;
  
  
  값을 변경할 수 없는 원시 값
&lt;/h2&gt;

&lt;p&gt;변경할 수 없는걸 흔히 불변&lt;sup&gt;immutable&lt;/sup&gt;이라 부른다. 원시 값은 이 불변이라는 조건을 가지게 된다.&lt;/p&gt;

&lt;p&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="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;fruitToBuy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;graph&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="nx"&gt;fruitToBuy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;apple&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;fruitToBuy&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// apple&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;불변이라 말했지만 fruitToBuy 변수는 &lt;code&gt;graph&lt;/code&gt;에서 &lt;code&gt;apple&lt;/code&gt;로 변했다. &lt;/p&gt;

&lt;p&gt;이는 apple 값을 가진새로운 string 타입의 값을 생성한 후 해당 변수에 할당한 것이다.&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;/p&gt;
&lt;h2&gt;
  
  
  원시 값의 데이터 타입
&lt;/h2&gt;

&lt;p&gt;원시 값에는 다음의 데이터 타입이 존재한다.&lt;br&gt;
&lt;code&gt;undefined&lt;/code&gt;, &lt;code&gt;null&lt;/code&gt;, &lt;code&gt;boolean&lt;/code&gt;, &lt;code&gt;string&lt;/code&gt;, &lt;code&gt;number&lt;/code&gt;, &lt;code&gt;symbol&lt;/code&gt;(ECMAScript 2015), &lt;code&gt;BigInt&lt;/code&gt;(ECMAScript 2020)&lt;/p&gt;

&lt;p&gt;그러나 찝찝한 부분이 있다. 분명 숫자나 문자도 객체처럼 프로퍼티와 메소드를 가진다. 또한 문자열의 경우 배열이 아닌가? 구현이 어떻게 되었든 스펙에서는 원시 값으로 분류하고 있으니 더이상 객체로 생각하지 말자.&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;/p&gt;
&lt;h2&gt;
  
  
  그렇다면 객체는 어떻게 변한다는 말일까?
&lt;/h2&gt;

&lt;p&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;obj&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;jobTitle&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;개발자&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nx"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;greeting&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;안녕&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// { jobTitle: "개발자", greeting: "안녕"}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;흔히 사용하는 방식이다.&lt;/p&gt;

&lt;p&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="nx"&gt;obj&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;jobTitle&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;개발자&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;greeting&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;안녕&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="c1"&gt;// false&lt;/span&gt;

&lt;span class="p"&gt;{}&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt; &lt;span class="c1"&gt;// false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;직관적으로 내용이 같으니 true가 될 것 같지만 아니다. 뭐라고 표현해야 좋을지 모르겠지만 객체는 (우리는 볼 수 없지만)자신이 가진 고유 식별자(C언어의 주소값 같은)를 비교한다.&lt;/p&gt;

&lt;p&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;objCopied&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;obj&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;obj&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;obj&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;objCopied&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;두 변수는 이름은 다르지만 같은 객체를 참조하고 있기 때문에 같다. &lt;/p&gt;

&lt;p&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="nx"&gt;objCopied&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;greeting&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;안녕하세요&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;objCopied&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// { jobTitle: "개발자", greeting: "안녕하세요" }&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// { jobTitle: "개발자", greeting: "안녕하세요" }&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;둘 다 바뀌는게 아니라 같은 객체를 참조한다는 표현이 맞겠다.&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;/p&gt;
&lt;h2&gt;
  
  
  함수 매개변수에서 사용하는 값
&lt;/h2&gt;

&lt;p&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="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;myVarType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;let&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;myFunction&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;myVarType&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;myVarType&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// let&lt;/span&gt;
  &lt;span class="nx"&gt;myVarType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;const&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;myVarType&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;myFunction&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;myVarType&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;myVarType&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// let&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// const&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;매개변수로 원시 값인 문자열을 전달했는데, 뭐.. 문법을 배웠다면 이렇게 쓰기 시작한다.&lt;/p&gt;

&lt;p&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="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;me&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;jobTitle&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;개발자&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;turnOver&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;me&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;me&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;jobTitle&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;디자이너&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;me&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;turnOver&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;me&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;me&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// { jobTitle: "디자이너" }&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;// { jobTitle: "디자이너" }&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;me&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&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="c1"&gt;//function turnOver() {&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;me2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;me&lt;/span&gt;
  &lt;span class="nx"&gt;me2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;jobTitle&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;디자이너&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="c1"&gt;//  return me2&lt;/span&gt;
&lt;span class="c1"&gt;//}&lt;/span&gt;
&lt;span class="c1"&gt;// function을 주석처리한건 혹시나 스코프를 설명해야할지도 몰라서...&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;me&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;me2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;그럼 이전 챕터에서 다루었던 객체의 예제와 모양이 같아졌다. 매개변수도 결국 일반적인 변수선언과 똑같기 때문에 다르게 생각할 필요 없다.&lt;br&gt;
⠀&lt;br&gt;
★ 누군가는 이 현상을 콜 바이 레퍼런스call by reference 혹은 주소 값을 전달한다고 표현하는데 자바스크립트는 포인터 기능이 없다.&lt;br&gt;
⠀&lt;br&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="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;turnOver&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;me&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;newProfile&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;me&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newProfile&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// { jobTitle: "개발자" }&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newProfile&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;me&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// false&lt;/span&gt;
  &lt;span class="nx"&gt;newProfile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;jobTitle&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;디자이너&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;me&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// { jobTitle: "개발자" }&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newProfile&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// { jobTitle: "디자이너" }&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;newProfile&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;⠀&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;/p&gt;
&lt;h2&gt;
  
  
  객체의 프로퍼티에서도 똑같이 적용된다
&lt;/h2&gt;

&lt;p&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;company&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;폭스바겐&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="c1"&gt;// 자바스크립트에선 배열도 객체이기 때문에 이 예제에선 객체라고 칭하겠다.&lt;/span&gt;
  &lt;span class="na"&gt;subsidiary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;벤틀리&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;부가티&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;아우디&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;위와 같은 객체가 있을 때 프로퍼티를 변수에 담아 활용해보았다.&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="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;company&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;
&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;폭스바겐 그룹&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// 폭스바겐 그룹&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;company&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// {name: "폭스바겐", subsidiary: ["벤틀리", "부가티", "아우디"]&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;subsidiary&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;company&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;subsidiary&lt;/span&gt;
&lt;span class="nx"&gt;subsidiary&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;람보르기니&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;subsidiary&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;company&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;subsidiary&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;company&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// {name: "폭스바겐", subsidiary: ["벤틀리", "부가티", "아우디", "람보르기니"]}&lt;/span&gt;

&lt;span class="nx"&gt;company&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;subsidiary&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;포르쉐&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;subsidiary&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// ["벤틀리", "부가티", "아우디", "람보르기니", "포르쉐"]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;변수에서 객체의 프로퍼티로 모양이 바뀌었지만 다르게 생각할 필요가 없다.&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;/p&gt;
&lt;h2&gt;
  
  
  리액트에서 상태를 객체로 사용할 때
&lt;/h2&gt;

&lt;p&gt;리액트가 등장하면서 UI를 구현하기 얼마나 편해졌는지 모른다. 그러다보니 이런 저런 데이터를 활용하기 시작하는데 객체를 사용할 때 문제가 발생한다.&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="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;me&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setMe&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;jobTitle&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;개발자&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt;
      &lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;me&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;jobTitle&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;디자이너&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;me&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// { jobTitle: "디자이너" }&lt;/span&gt;
        &lt;span class="nx"&gt;setMe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;setMe&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="p"&gt;}}&lt;/span&gt;
    &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nx"&gt;직종변경하기&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;현재&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;me&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/button&lt;/span&gt;&lt;span class="err"&gt;&amp;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;버튼에는 &lt;code&gt;직종변경하기 (현재 개발자)&lt;/code&gt;가 표시되어있는데 클릭하면 &lt;code&gt;직종변경하기 (현재 디자이너)&lt;/code&gt;가 될거라 예상하지만 바뀌지 않는다. 분명 객체의 내용은 바뀌었는데 state의 기준에선 이전 값과 현재 값을 비교했을 때 같기 때문이다.&lt;/p&gt;

&lt;p&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="nx"&gt;setMe&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;me&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;사실 이 예제는 적절하진 않다. 다만 redux나 context를 활용할 때 똑같은 원리가 적용되므로 상대적으로 표기하기 간편한 state를 사용했다.&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;/p&gt;
&lt;h2&gt;
  
  
  그런데 null은 object라는데요?
&lt;/h2&gt;

&lt;p&gt;값이 없다는 의미로 null을 사용한다. 유효성 검사를 위해 타입을 확인하는데,&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="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// object&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;타입이 객체로 나온다. 정말 혼란스럽다.&lt;/p&gt;

&lt;p&gt;왜 이렇게 된건지는 &lt;a href="https://2ality.com/2013/10/typeof-null.html"&gt;해당 포스팅&lt;/a&gt;을 참조하면 될 것 같다.&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;/p&gt;

&lt;h2&gt;
  
  
  계기
&lt;/h2&gt;

&lt;p&gt;주니어 시절 정말 답답했다. 객체가 내 생각대로 반환되지 않았기 때문이다. 지금도 종종 실수가 있긴하다. 함수 서너개만 거치면 어디서 문제가 생겼는지, 어떻게 바꿀까 고민하는데 생각보다 많은 시간이 든다. 그래서 왠만하면 원시 값을 사용하곤한다.&lt;/p&gt;

&lt;p&gt;제이쿼리를 이용해 간단한 돔&lt;sup&gt;DOM&lt;/sup&gt; 조작할 땐 몰라도 문제 없었는데, 앱의 모양에 가까워 질수록 이런 기본이 정말 중요했다.&lt;/p&gt;

</description>
      <category>javascript</category>
    </item>
    <item>
      <title>유명한 리액트 컴포넌트 라이브러리 모음</title>
      <dc:creator>Jinseok</dc:creator>
      <pubDate>Sat, 07 Aug 2021 04:02:01 +0000</pubDate>
      <link>https://dev.to/simjinseok/-4f2o</link>
      <guid>https://dev.to/simjinseok/-4f2o</guid>
      <description>&lt;p&gt;웹개발자의 큰 고민 중 하나는 UI다. 디자인이 안되거나 쏟을 시간이 없기 때문이다. 그렇다보니 bootstrap 같은 라이브러리가 인기있는게 아닐까?&lt;/p&gt;

&lt;p&gt;다행히 큰 기업들이 오픈 소스로 자신의 컴포넌트를 공개해놨고 어느 정도 인지도 있는 라이브러리를 기록했다.&lt;/p&gt;

&lt;p&gt;간단한 UI만 구현돼 있는 라이브러리도 있고 드랍다운, 테이블, 모달 등 복잡한 기능을 구현한 라이브러리도 있다.​ 단순히 UI를 구현하는 용도를 넘어 디자인시스템이나 코드구현 방식을 참고하기도 좋다.&lt;br&gt;
※ react-router-dom을 위한 라이브러리다.&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;/p&gt;
&lt;h2&gt;
  
  
  Ant Design
&lt;/h2&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ant-design"&gt;
        ant-design
      &lt;/a&gt; / &lt;a href="https://github.com/ant-design/ant-design"&gt;
        ant-design
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      An enterprise-class UI design language and React UI library
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a href="https://ant.design" rel="nofollow"&gt;
    &lt;img width="200" src="https://camo.githubusercontent.com/363242675617648bfbedd1610f89ac28df0f9e1bac8749d83109fafdf8524fff/68747470733a2f2f67772e616c697061796f626a656374732e636f6d2f7a6f732f726d73706f7274616c2f4b4470677667754d704766716148506a6963524b2e737667"&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;h1&gt;
Ant Design&lt;/h1&gt;
&lt;div&gt;
&lt;p&gt;An enterprise-class UI design language and React UI library.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/ant-design/ant-design/actions?query=workflow%3A%22%E2%9C%85+test%22"&gt;&lt;img src="https://github.com/ant-design/ant-design/workflows/%E2%9C%85%20test/badge.svg" alt="CI status"&gt;&lt;/a&gt; &lt;a href="https://codecov.io/gh/ant-design/ant-design/branch/master" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/02ed42b87f67c0e47135adde3477777e22d5ba8945bcfb950f1c6e5e84aa5f15/68747470733a2f2f696d672e736869656c64732e696f2f636f6465636f762f632f6769746875622f616e742d64657369676e2f616e742d64657369676e2f6d61737465722e7376673f7374796c653d666c61742d737175617265" alt="codecov"&gt;&lt;/a&gt; &lt;a href="http://npmjs.org/package/antd" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/c6968b5bf076df338c58769c51590f2fd8a072a6787292b4c2f557ee9b43cd36/687474703a2f2f696d672e736869656c64732e696f2f6e706d2f762f616e74642e7376673f7374796c653d666c61742d737175617265" alt="NPM version"&gt;&lt;/a&gt; &lt;a href="https://npmjs.org/package/antd" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/93f17366f41828729d0dab42132932b3a65387aa2a3097d4fedaa82a3f4773a9/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f646d2f616e74642e7376673f7374796c653d666c61742d737175617265" alt="NPM downloads"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://bundlephobia.com/package/antd" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/bf08fda4448f4ee3c1fed5b7beb35d989ed36f52b8c852f871c43e13a431a0fa/68747470733a2f2f62616467656e2e6e65742f62756e646c6570686f6269612f6d696e7a69702f616e74643f7374796c653d666c61742d737175617265" alt=""&gt;&lt;/a&gt; &lt;a href="https://unpkg.com/browse/antd/dist/antd.min.js" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/aa44dc75ad02eb9dfd0392f639aa940147b4134d1c5c717f462d5b7c4bfed58e/68747470733a2f2f696d672e626164676573697a652e696f2f68747470733a2f756e706b672e636f6d2f616e74642f646973742f616e74642e6d696e2e6a733f6c6162656c3d616e74642e6d696e2e6a7326636f6d7072657373696f6e3d677a6970267374796c653d666c61742d737175617265" alt=""&gt;&lt;/a&gt; &lt;a href="https://app.fossa.io/projects/git%2Bgithub.com%2Fant-design%2Fant-design?ref=badge_shield" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/fbe7b41bed802871f71dfeb24543de306395fd077f9141a27363d631709ec343/68747470733a2f2f6170702e666f7373612e696f2f6170692f70726f6a656374732f6769742532426769746875622e636f6d253246616e742d64657369676e253246616e742d64657369676e2e7376673f747970653d736869656c64" alt="FOSSA Status"&gt;&lt;/a&gt; &lt;a href="https://app.argos-ci.com/ant-design/ant-design/reference" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/6b533cc7da609cecfd82f128eba151104be9f58bb85862f2c901f6e664b6972a/68747470733a2f2f6172676f732d63692e636f6d2f62616467652e737667" alt="Covered by Argos Visual Testing"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://twitter.com/AntDesignUI" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/0a8e714f90ebc7b970a718c8302da30729b02535c7d032e342457eb816969b87/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f416e7444657369676e55492e7376673f6c6162656c3d416e7425323044657369676e" alt="Follow Twitter"&gt;&lt;/a&gt; &lt;a href="https://github.com/ant-design/ant-design/issues/32498"&gt;&lt;img src="https://camo.githubusercontent.com/ea7c3781d19d2867a2b94de287b01fdac8578d49f87f4e1a5582a1f5d5fd8feb/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f72656e6f766174652d656e61626c65642d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265" alt="Renovate status"&gt;&lt;/a&gt; &lt;a href="https://github.com/actions-cool"&gt;&lt;img src="https://camo.githubusercontent.com/acbdb26a5e3f106a4cda658a90250cfb099b209219e751ef4741a9ead5d43eeb/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7573696e672d616374696f6e732d2d636f6f6c2d626c75653f7374796c653d666c61742d737175617265" alt=""&gt;&lt;/a&gt; &lt;a href="https://github.com/umijs/dumi"&gt;&lt;img src="https://camo.githubusercontent.com/50b3cca60e47603420e119af1abae1a6c6f5145d219a986c48aa54ddd082b71f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f637325323062792d64756d692d626c75653f7374796c653d666c61742d737175617265" alt="dumi"&gt;&lt;/a&gt; &lt;a href="https://github.com/ant-design/ant-design/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22"&gt;&lt;img src="https://camo.githubusercontent.com/6a4fe6ef275d2d53ba79cf465501b03b2195a19b620dc4b7cba724dc1aea24d9/68747470733a2f2f666c61742e62616467656e2e6e65742f6769746875622f6c6162656c2d6973737565732f616e742d64657369676e2f616e742d64657369676e2f68656c7025323077616e7465642f6f70656e" alt="Issues need help"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://ant.design" rel="nofollow"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CIvdkE_R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/507615/209472919-6f7e8561-be8c-4b0b-9976-eb3c692aa20a.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;English | &lt;a href="https://github.com/ant-design/ant-design./README-zh_CN.md"&gt;中文&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
✨ Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;🌈 Enterprise-class UI designed for web applications.&lt;/li&gt;
&lt;li&gt;📦 A set of high-quality React components out of the box.&lt;/li&gt;
&lt;li&gt;🛡 Written in TypeScript with predictable static types.&lt;/li&gt;
&lt;li&gt;⚙️ Whole package of design resources and development tools.&lt;/li&gt;
&lt;li&gt;🌍 Internationalization support for dozens of languages.&lt;/li&gt;
&lt;li&gt;🎨 Powerful theme customization based on CSS-in-JS.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
🖥 Environment Support&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Modern browsers&lt;/li&gt;
&lt;li&gt;Server-side Rendering&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.electronjs.org/" rel="nofollow"&gt;Electron&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href="http://godban.github.io/browsers-support-badges/" rel="nofollow"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4Uis1y32--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png" alt="Edge" width="24px" height="24px"&gt;&lt;/a&gt;&lt;br&gt;Edge&lt;/th&gt;
&lt;th&gt;
&lt;a href="http://godban.github.io/browsers-support-badges/" rel="nofollow"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4PBpzKRy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png" alt="Firefox" width="24px" height="24px"&gt;&lt;/a&gt;&lt;br&gt;Firefox&lt;/th&gt;
&lt;th&gt;
&lt;a href="http://godban.github.io/browsers-support-badges/" rel="nofollow"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MiE_onvl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png" alt="Chrome" width="24px" height="24px"&gt;&lt;/a&gt;&lt;br&gt;Chrome&lt;/th&gt;
&lt;th&gt;
&lt;a href="http://godban.github.io/browsers-support-badges/" rel="nofollow"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ik3llT7B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png" alt="Safari" width="24px" height="24px"&gt;&lt;/a&gt;&lt;br&gt;Safari&lt;/th&gt;
&lt;th&gt;
&lt;a href="http://godban.github.io/browsers-support-badges/" rel="nofollow"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5gPdrB2v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/alrra/browser-logos/master/src/electron/electron_48x48.png" alt="Electron" width="24px" height="24px"&gt;&lt;/a&gt;&lt;br&gt;Electron&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Edge&lt;/td&gt;
&lt;td&gt;last 2 versions&lt;/td&gt;
&lt;td&gt;last 2 versions&lt;/td&gt;
&lt;td&gt;last 2 versions&lt;/td&gt;
&lt;td&gt;last 2 versions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h2&gt;
📦 Install&lt;/h2&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npm install antd&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;yarn add antd&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;pnpm add antd&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
🔨 Usage&lt;/h2&gt;
&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-v"&gt;React&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'react'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-v"&gt;Button&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-v"&gt;DatePicker&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'antd'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-v"&gt;App&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt; &lt;span class="pl-c1"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="pl-kos"&gt;(&lt;/span&gt;
  &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;Button&lt;/span&gt; &lt;span class="pl-c1"&gt;type&lt;/span&gt;&lt;span class="pl-c1"&gt;=&lt;/span&gt;&lt;span class="pl-s"&gt;"primary"&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;PRESS ME&lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-c1"&gt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;Button&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;DatePicker&lt;/span&gt; &lt;span class="pl-c1"&gt;placeholder&lt;/span&gt;&lt;span class="pl-c1"&gt;=&lt;/span&gt;&lt;span class="pl-s"&gt;"select date"&lt;/span&gt; &lt;span class="pl-c1"&gt;/&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-c1"&gt;/&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&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/ant-design/ant-design"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
⠀&lt;br&gt;
⠀
&lt;h2&gt;
  
  
  Base Web UI / Uber
&lt;/h2&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/uber"&gt;
        uber
      &lt;/a&gt; / &lt;a href="https://github.com/uber/baseweb"&gt;
        baseweb
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A React Component library implementing the Base design language
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a href="https://baseweb.design" rel="nofollow"&gt;
    &lt;img width="250px" src="https://camo.githubusercontent.com/019e8c410e256ae0a96641f8e9f275a961b14d30fee9d20c96288aef4433a1de/68747470733a2f2f7265732e636c6f7564696e6172792e636f6d2f6461777238706f626e2f696d6167652f75706c6f61642f76313535363932303630342f626173652d7765622e737667"&gt;
  &lt;/a&gt;
&lt;/p&gt;
&lt;h1&gt;
Base Web React Components&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://buildkite.com/uberopensource/baseui" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/fbe24e6eeb3f8c900dc0a1447a5e443c8783864b9273f7e09fae4ded97bac3b8/68747470733a2f2f62616467652e6275696c646b6974652e636f6d2f39326137353030636439386636313936323163343830313833336438623335386332666437396566633962393866316239382e7376673f6272616e63683d6d6173746572" alt="Build status"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Base&lt;/strong&gt; is a design system comprised of modern, responsive, living components. Base Web is the React implementation of Base.&lt;/p&gt;
&lt;p&gt;
  &lt;a href="https://baseweb.design" rel="nofollow"&gt;
    &lt;img width="500px" src="https://camo.githubusercontent.com/17a0a6ac83dc7ac323d3bb29b822c0fcf648b6889089a104a8d4805e312274ff/68747470733a2f2f692e696d6775722e636f6d2f5561525a6454712e706e67"&gt;
  &lt;/a&gt;
&lt;/p&gt;
&lt;h2&gt;
Usage&lt;/h2&gt;
&lt;p&gt;On npm, you can find Base Web as &lt;code&gt;baseui&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Add &lt;code&gt;baseui&lt;/code&gt; and its peer dependencies to your project:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; using yarn&lt;/span&gt;
yarn add baseui styletron-react styletron-engine-monolithic
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; using npm&lt;/span&gt;
npm install baseui styletron-react styletron-engine-monolithic&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;&lt;span class="pl-v"&gt;Client&lt;/span&gt; &lt;span class="pl-k"&gt;as&lt;/span&gt; &lt;span class="pl-v"&gt;Styletron&lt;/span&gt;&lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'styletron-engine-monolithic'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;&lt;span class="pl-v"&gt;Provider&lt;/span&gt; &lt;span class="pl-k"&gt;as&lt;/span&gt; &lt;span class="pl-v"&gt;StyletronProvider&lt;/span&gt;&lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'styletron-react'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;&lt;span class="pl-v"&gt;LightTheme&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-v"&gt;BaseProvider&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s1"&gt;styled&lt;/span&gt;&lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'baseui'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;&lt;span class="pl-v"&gt;StatefulInput&lt;/span&gt;&lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'baseui/input'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-s1"&gt;engine&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-k"&gt;new&lt;/span&gt; &lt;span class="pl-v"&gt;Styletron&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;

&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-v"&gt;Centered&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-en"&gt;styled&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'div'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;
  &lt;span class="pl-c1"&gt;display&lt;/span&gt;: &lt;span class="pl-s"&gt;'flex'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt;
  &lt;span class="pl-c1"&gt;justifyContent&lt;/span&gt;: &lt;span class="pl-s"&gt;'center'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt;
  &lt;span class="pl-c1"&gt;alignItems&lt;/span&gt;: &lt;span class="pl-s"&gt;'center'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt;
  &lt;span class="pl-c1"&gt;height&lt;/span&gt;: &lt;span class="pl-s"&gt;'100%'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt;
&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;

&lt;span class="pl-k"&gt;export&lt;/span&gt; &lt;span class="pl-k"&gt;default&lt;/span&gt; &lt;span class="pl-k"&gt;function&lt;/span&gt; &lt;span class="pl-v"&gt;Hello&lt;/span&gt; &lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;
  &lt;span class="pl-k"&gt;return&lt;/span&gt; &lt;span class="pl-kos"&gt;(&lt;/span&gt;
    &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;StyletronProvider&lt;/span&gt; &lt;span class="pl-c1"&gt;value&lt;/span&gt;&lt;span class="pl-c1"&gt;=&lt;/span&gt;&lt;span class="pl-kos"&gt;{&lt;/span&gt;&lt;span class="pl-s1"&gt;engine&lt;/span&gt;&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;BaseProvider&lt;/span&gt; &lt;span class="pl-c1"&gt;theme&lt;/span&gt;&lt;/pre&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/uber/baseweb"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
⠀&lt;br&gt;
⠀
&lt;h2&gt;
  
  
  Blueprint / Palantir
&lt;/h2&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/palantir"&gt;
        palantir
      &lt;/a&gt; / &lt;a href="https://github.com/palantir/blueprint"&gt;
        blueprint
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A React-based UI toolkit for the web
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://cloud.githubusercontent.com/assets/464822/20228152/d3f36dc2-a804-11e6-80ff-51ada2d13ea7.png"&gt;&lt;img height="204" src="https://res.cloudinary.com/practicaldev/image/fetch/s--X4I5GsJn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cloud.githubusercontent.com/assets/464822/20228152/d3f36dc2-a804-11e6-80ff-51ada2d13ea7.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
&lt;a href="http://blueprintjs.com/" rel="nofollow"&gt;Blueprint&lt;/a&gt; &lt;a href="https://circleci.com/gh/palantir/workflows/blueprint" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/3fcf7c8eb7653bcd1e8465d06857eafb479cb4f93b92b7794b4a53626b7a76ac/68747470733a2f2f636972636c6563692e636f6d2f67682f70616c616e7469722f626c75657072696e742f747265652f646576656c6f702e7376673f7374796c653d737667" alt="CircleCI"&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;Blueprint is a React-based UI toolkit for the web.&lt;/p&gt;

&lt;p&gt;It is optimized for building complex, data-dense web interfaces for &lt;em&gt;desktop applications&lt;/em&gt; which run in modern browsers
This is not a mobile-first UI toolkit.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://medium.com/@palantir/scaling-product-design-with-blueprint-25492827bb4a" rel="nofollow"&gt;&lt;strong&gt;Read the introductory blog post ▸&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blueprintjs.com/docs" rel="nofollow"&gt;&lt;strong&gt;View the full documentation ▸&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://codesandbox.io/p/sandbox/blueprint-v5-x-sandbox-react-16-wy0ojy" rel="nofollow"&gt;&lt;strong&gt;Try it out on CodeSandbox ▸&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/palantir/blueprint/wiki/Frequently-Asked-Questions"&gt;&lt;strong&gt;Read frequently asked questions (FAQ) on the wiki ▸&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Changelog&lt;/h2&gt;
&lt;p&gt;Blueprint's change log and migration guides for major versions live on the repo's
&lt;a href="https://github.com/palantir/blueprint/wiki/5.x-Changelog"&gt;Github wiki&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
Packages&lt;/h2&gt;
&lt;p&gt;This repository contains multiple projects in the &lt;code&gt;packages/&lt;/code&gt; directory that fall into 3 categories:&lt;/p&gt;
&lt;h3&gt;
Libraries&lt;/h3&gt;
&lt;p&gt;These are the component libraries we publish to NPM.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/@blueprintjs/colors" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/a45ae3cb1813b03f1bb82d408f6cc254efc5cda4a90a34c63faadeaa51cc8e54/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f40626c75657072696e746a732f636f6c6f72732e7376673f6c6162656c3d40626c75657072696e746a732f636f6c6f7273" alt="npm"&gt;&lt;/a&gt; – Design system color variables.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/@blueprintjs/core" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/06754c75673a523c2996083b50d9335c8fcd2d488214c97e369a199355af47aa/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f40626c75657072696e746a732f636f72652e7376673f6c6162656c3d40626c75657072696e746a732f636f7265" alt="npm"&gt;&lt;/a&gt; – Core styles &amp;amp; components.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/@blueprintjs/datetime" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/1e0c08e200346033ac35bd48df514abfb665aa8b8a06f7aabcb61272157a0844/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f40626c75657072696e746a732f6461746574696d652e7376673f6c6162656c3d40626c75657072696e746a732f6461746574696d65" alt="npm"&gt;&lt;/a&gt; – Timezone-aware components for interacting with dates and times.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/@blueprintjs/icons" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/a1f0d5a9047998a9d3a8c135519ee769f77a4075a749d9c05f89eb2e321b283a/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f40626c75657072696e746a732f69636f6e732e7376673f6c6162656c3d40626c75657072696e746a732f69636f6e73" alt="npm"&gt;&lt;/a&gt; – Components for generating and displaying icons.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/@blueprintjs/monaco-editor-theme" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/9327bd07385f369afc0d34ff50b63b277173ed2058ed0af888ebca890a4d890b/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f40626c75657072696e746a732f6d6f6e61636f2d656469746f722d7468656d652e7376673f6c6162656c3d40626c75657072696e746a732f6d6f6e61636f2d656469746f722d7468656d65" alt="npm"&gt;&lt;/a&gt; – Theme for monaco-editor (⚠️ experimental).&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/@blueprintjs/select" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/8670b19f725940e7f580c19e2efe335d1b651221edc02a80781c61be6fb6ff93/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f40626c75657072696e746a732f73656c6563742e7376673f6c6162656c3d40626c75657072696e746a732f73656c656374" alt="npm"&gt;&lt;/a&gt; – Components for selecting items from a list.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/@blueprintjs/table" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/946b13588c4eefa990410f1ce4a3b346389e82150160d0c17aff28f53ea65964/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f40626c75657072696e746a732f7461626c652e7376673f6c6162656c3d40626c75657072696e746a732f7461626c65" alt="npm"&gt;&lt;/a&gt; – Scalable interactive table component.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
Applications&lt;/h3&gt;
&lt;p&gt;These…&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/palantir/blueprint"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
⠀&lt;br&gt;
⠀
&lt;h2&gt;
  
  
  Chakra UI
&lt;/h2&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/chakra-ui"&gt;
        chakra-ui
      &lt;/a&gt; / &lt;a href="https://github.com/chakra-ui/chakra-ui"&gt;
        chakra-ui
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      ⚡️ Simple, Modular &amp;amp; Accessible UI Components for your React Applications
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a href="https://github.com/chakra-ui/chakra-ui"&gt;
    &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1RqhfP26--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/chakra-ui/chakra-ui/main/media/logo-colored%402x.png%3Fraw%3Dtrue" alt="Chakra logo" width="300"&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;h1&gt;
Build Accessible React Apps with Speed ⚡️&lt;/h1&gt;
&lt;br&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/78672ed2169a1b65e9ce9cd46ca48229e979052ce5fee83d771a3bc1be56126f/68747470733a2f2f62616467656e2e6e65742f62756e646c6570686f6269612f6d696e7a69702f406368616b72612d75692f7265616374"&gt;&lt;img alt="Bundle Size" src="https://camo.githubusercontent.com/78672ed2169a1b65e9ce9cd46ca48229e979052ce5fee83d771a3bc1be56126f/68747470733a2f2f62616467656e2e6e65742f62756e646c6570686f6269612f6d696e7a69702f406368616b72612d75692f7265616374"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/e2733675297f1c8a4dd94a02f7f8d46fa4af74a5fe53a900c2333b3e62adee36/68747470733a2f2f62616467656e2e6e65742f6769746875622f636865636b732f6368616b72612d75692f6368616b72612d75692f6d61696e"&gt;&lt;img alt="Github Checks" src="https://camo.githubusercontent.com/e2733675297f1c8a4dd94a02f7f8d46fa4af74a5fe53a900c2333b3e62adee36/68747470733a2f2f62616467656e2e6e65742f6769746875622f636865636b732f6368616b72612d75692f6368616b72612d75692f6d61696e"&gt;&lt;/a&gt;
  &lt;a href="https://github.com/chakra-ui/chakra-ui/blob/main/LICENSE"&gt;
    &lt;img alt="MIT License" src="https://camo.githubusercontent.com/c433945e474fba03429e69da0dbe6a271e1bfba93771abc2fe7994dfee7f6c0d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6368616b72612d75692f6368616b72612d7569"&gt;
  &lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/4961fcbc4cf7b1e7c21fdbd470f57fe5383bc897379b2cc26c7a10f62af1d788/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f646d2f406368616b72612d75692f72656163742e7376673f7374796c653d666c6174"&gt;&lt;img alt="NPM Downloads" src="https://camo.githubusercontent.com/4961fcbc4cf7b1e7c21fdbd470f57fe5383bc897379b2cc26c7a10f62af1d788/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f646d2f406368616b72612d75692f72656163742e7376673f7374796c653d666c6174"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/89bcf0ceebc402bde89c3c8392ed1db196adf57cdf23b3443f5fe71507b024a6/68747470733a2f2f62616467656e2e6e65742f6769746875622f73746172732f6368616b72612d75692f6368616b72612d7569"&gt;&lt;img alt="Github Stars" src="https://camo.githubusercontent.com/89bcf0ceebc402bde89c3c8392ed1db196adf57cdf23b3443f5fe71507b024a6/68747470733a2f2f62616467656e2e6e65742f6769746875622f73746172732f6368616b72612d75692f6368616b72612d7569"&gt;&lt;/a&gt;
  &lt;a href="https://discord.gg/chakra-ui" rel="nofollow"&gt;
    &lt;img alt="Discord" src="https://camo.githubusercontent.com/59d771fbf985cab45db090545302ffb219a9aacc4f2c02a2b5b9dd92489e489f/68747470733a2f2f696d672e736869656c64732e696f2f646973636f72642f3636303836333135343730333639353839332e7376673f6c6162656c3d266c6f676f3d646973636f7264266c6f676f436f6c6f723d66666666666626636f6c6f723d373338394438266c6162656c436f6c6f723d364137454332"&gt;
  &lt;/a&gt;
&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;Chakra UI is a comprehensive library of accessible, reusable, and composable
React components that streamlines the development of modern web applications and
websites. The library offers a diverse range of components that can be easily
combined to build complex user interfaces while adhering to accessibility best
practices.&lt;/p&gt;
&lt;h2&gt;
Table of contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;📋 &lt;a href="https://github.com/chakra-ui/chakra-ui#documentation"&gt;Documentation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🚀 &lt;a href="https://github.com/chakra-ui/chakra-ui#features"&gt;Features&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📦 &lt;a href="https://github.com/chakra-ui/chakra-ui#installation"&gt;Installation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💻 &lt;a href="https://github.com/chakra-ui/chakra-ui#usage"&gt;Usage&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📚 &lt;a href="https://github.com/chakra-ui/chakra-ui#codesandbox-templates"&gt;CodeSandbox Templates&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📖 &lt;a href="https://github.com/chakra-ui/chakra-ui#create-react-app-templates"&gt;&lt;code&gt;create-react-app&lt;/code&gt; Templates&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📝 &lt;a href="https://github.com/chakra-ui/chakra-ui#contributing"&gt;Contributing&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💖 &lt;a href="https://github.com/chakra-ui/chakra-ui#support-chakra-ui"&gt;Support&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🙌 &lt;a href="https://github.com/chakra-ui/chakra-ui#testimonials"&gt;Testimonials&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🏆 &lt;a href="https://github.com/chakra-ui/chakra-ui#awards-and-mentions"&gt;Awards and Mentions&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;✨ &lt;a href="https://github.com/chakra-ui/chakra-ui#contributors"&gt;Contributors&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;⚖️ &lt;a href="https://github.com/chakra-ui/chakra-ui#license"&gt;License&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Documentation&lt;/h2&gt;
&lt;p&gt;It's the &lt;a href="https://chakra-ui.com" rel="nofollow"&gt;https://chakra-ui.com&lt;/a&gt; website for the latest version of Chakra UI. For
older versions head over here&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;v1: &lt;a href="https://v1.chakra-ui.com" rel="nofollow"&gt;https://v1.chakra-ui.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;v0: &lt;a href="https://v0.chakra-ui.com" rel="nofollow"&gt;https://v0.chakra-ui.com&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Ease of Styling: Chakra UI contains a set of layout components like &lt;code&gt;Box&lt;/code&gt; and
&lt;code&gt;Stack&lt;/code&gt; that make it easy to style your components by passing props
&lt;a href="https://chakra-ui.com/style-props" rel="nofollow"&gt;Learn more&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Flexible &amp;amp; composable: Chakra UI components are built on top of a React UI…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/chakra-ui/chakra-ui"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
⠀&lt;br&gt;
⠀
&lt;h2&gt;
  
  
  Carbon / IBM
&lt;/h2&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/carbon-design-system"&gt;
        carbon-design-system
      &lt;/a&gt; / &lt;a href="https://github.com/carbon-design-system/carbon"&gt;
        carbon
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A design system built by IBM
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a href="https://www.carbondesignsystem.com" rel="nofollow"&gt;
    &lt;img alt="Carbon Design System" src="https://res.cloudinary.com/practicaldev/image/fetch/s--CRUMRSLl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/3901764/57545698-ce5f2380-7320-11e9-8682-903df232d7b0.png" width="100%"&gt;
  &lt;/a&gt;
&lt;/p&gt;
&lt;h1&gt;
  Carbon Design System
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;Carbon is an open-source design system built by IBM. With the IBM Design
Language as its foundation, the system consists of working code, design tools
and resources, human interface guidelines, and a vibrant community of
contributors.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;
  &lt;a href="https://github.com/carbon-design-system/carbon/blob/master/LICENSE"&gt;
    &lt;img src="https://camo.githubusercontent.com/9bf08b5718ffcc765664dead73e4212a8268d879d6e8626c3ab535592443ee95/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4170616368652d2d322e302d626c75652e737667" alt="Carbon is released under the Apache-2.0 license"&gt;
  &lt;/a&gt;
  &lt;a href="https://github.com/carbon-design-system/carbon/actions/workflows/ci.yml"&gt;
    &lt;img src="https://github.com/carbon-design-system/carbon/actions/workflows/ci.yml/badge.svg" alt="CI workflow status"&gt;
  &lt;/a&gt;
  &lt;a href="https://lerna.js.org/" rel="nofollow"&gt;
    &lt;img src="https://camo.githubusercontent.com/3bc63f921dd60bac6d91aa900ef570c928b2aa4c2124ed23647e8fe9d2232853/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61696e7461696e6564253230776974682d6c65726e612d6363303066662e737667" alt="Maintained with Lerna"&gt;
  &lt;/a&gt;
  &lt;a href="https://github.com/carbon-design-system/carbon/blob/master/.github/CONTRIBUTING.md"&gt;
    &lt;img src="https://camo.githubusercontent.com/b0ad703a46e8b249ef2a969ab95b2cb361a2866ecb8fe18495a2229f5847102d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5052732d77656c636f6d652d627269676874677265656e2e737667" alt="PRs welcome"&gt;
  &lt;/a&gt;
  &lt;a href="https://bestpractices.coreinfrastructure.org/projects/7034" rel="nofollow"&gt;
    &lt;img src="https://camo.githubusercontent.com/1d1d02811ce268d2462c331bf968ff164bfab777443e787805382a41cce7d783/68747470733a2f2f626573747072616374696365732e636f7265696e6672617374727563747572652e6f72672f70726f6a656374732f373033342f6261646765"&gt;
  &lt;/a&gt;
  &lt;a href="https://discord.gg/J7JEUEkTRX" rel="nofollow"&gt;
    &lt;img src="https://camo.githubusercontent.com/ce0aaf085ffee74ef773f61238927a3848ca7dce7a511d77407e6d1f3de4e5d8/68747470733a2f2f696d672e736869656c64732e696f2f646973636f72642f3638393231323538373137303230313632383f636f6c6f723d353836354632" alt="Chat with us on Discord"&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
Getting started&lt;/h2&gt;
&lt;p&gt;If you're just getting started, check out &lt;a href="https://github.com/carbon-design-system/carbon./packages/react"&gt;&lt;code&gt;@carbon/react&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We also have community-contributed components for the following technologies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/IBM/carbon-components-angular"&gt;Angular&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/IBM/carbon-components-svelte"&gt;Svelte&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/carbon-design-system/carbon-components-vue"&gt;Vue&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/carbon-design-system/carbon-web-components"&gt;Web Components&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you're trying to find something specific, here's a full list of packages that
we support!&lt;/p&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Package name&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/carbon-design-system/carbon./packages/react"&gt;&lt;code&gt;@carbon/react&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;React components and styles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/carbon-design-system/carbon./packages/styles"&gt;&lt;code&gt;@carbon/styles&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Sass styles for components&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/carbon-design-system/carbon./packages/elements"&gt;&lt;code&gt;@carbon/elements&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;IBM Design Language elements like colors, type, iconography, and more&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/carbon-design-system/carbon./packages/colors"&gt;&lt;code&gt;@carbon/colors&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Work with IBM Design Language colors&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/carbon-design-system/carbon./packages/grid"&gt;&lt;code&gt;@carbon/grid&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Build layouts using the new 16 column grid system&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/carbon-design-system/carbon./packages/icons"&gt;&lt;code&gt;@carbon/icons&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Iconography assets. We also offer support in: &lt;a href="https://github.com/carbon-design-system/carbon./packages/icons-react"&gt;React&lt;/a&gt;, &lt;a href="https://github.com/carbon-design-system/carbon-icons-angular"&gt;Angular&lt;/a&gt;, &lt;a href="https://github.com/carbon-design-system/carbon./packages/icons-vue"&gt;Vue&lt;/a&gt;, and &lt;a href="https://github.com/IBM/carbon-icons-svelte"&gt;Svelte&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/carbon-design-system/carbon./packages/pictograms"&gt;&lt;code&gt;@carbon/pictograms&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Pictogram assets. We also offer support in: &lt;a href="https://github.com/carbon-design-system/carbon./packages/pictograms-react"&gt;React&lt;/a&gt; and &lt;a href="https://github.com/IBM/carbon-pictograms-svelte"&gt;Svelte&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/carbon-design-system/carbon./packages/layout"&gt;&lt;code&gt;@carbon/layout&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Layout-based&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/carbon-design-system/carbon"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
⠀&lt;br&gt;
⠀
&lt;h2&gt;
  
  
  ElasticUI / Elastic
&lt;/h2&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/elastic"&gt;
        elastic
      &lt;/a&gt; / &lt;a href="https://github.com/elastic/eui"&gt;
        eui
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Elastic UI Framework 🙌
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://repository-images.githubusercontent.com/107422373/b6180480-a1d7-11eb-8a3c-902086232aa7"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZXY5yK6J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://repository-images.githubusercontent.com/107422373/b6180480-a1d7-11eb-8a3c-902086232aa7" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
Elastic UI Framework&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;The Elastic UI Framework is a collection of React UI components for quickly building user interfaces at Elastic.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Check out our &lt;a href="https://elastic.github.io/eui/" rel="nofollow"&gt;full documentation site&lt;/a&gt; which contains many examples of components in the EUI framework aesthetic, and how to use them in your products. Our FAQ below covers common usage questions — for other general questions regarding EUI, check out the &lt;a href="https://github.com/elastic/eui/discussions"&gt;Discussions tab&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
Frequently Asked Questions&lt;/h2&gt;
&lt;h3&gt;
What is the Elastic UI Framework?&lt;/h3&gt;
&lt;p&gt;The Elastic UI Framework (EUI) is a design library in use at Elastic to build React applications that need to share our branding and aesthetics. It distributes typed UI React components and static assets for use in building web layouts. Alongside the React components, we ship theme &amp;amp; style utilities that can be used independently on their own.&lt;/p&gt;
&lt;p&gt;The primary goal of this library is to provide reusable UI components that can be used throughout…&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/elastic/eui"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
⠀&lt;br&gt;
⠀
&lt;h2&gt;
  
  
  Evergreen / Segment
&lt;/h2&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/segmentio"&gt;
        segmentio
      &lt;/a&gt; / &lt;a href="https://github.com/segmentio/evergreen"&gt;
        evergreen
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🌲 Evergreen React UI Framework by Segment
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div&gt;
    &lt;a href="https://evergreen.segment.com/" rel="nofollow"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--01OBtRAZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/segmentio/evergreen/master/evergreen-github-hero.png" alt="Evergreen, A Design System for the Web. Evergreen is a React UI Framework for building ambitious products on the web. Brought to you by Segment."&gt;
    &lt;/a&gt;
    &lt;br&gt;
    &lt;br&gt;
    &lt;a href="https://github.com/segmentio/evergreen/actions"&gt;
        &lt;img src="https://github.com/segmentio/evergreen/actions/workflows/ci.yml/badge.svg"&gt;
    &lt;/a&gt;
    &lt;br&gt;
    &lt;br&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Works out of the box.&lt;/strong&gt; Evergreen contains a set of polished React components that work out of the box.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Flexible &amp;amp; composable.&lt;/strong&gt; Evergreen components are built on top of a React UI Primitive for endless composability.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Enterprise-grade.&lt;/strong&gt; Evergreen features a UI design language for enterprise-grade web applications.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Documentation &amp;amp; Community&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://evergreen.segment.com/" rel="nofollow"&gt;Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/segmentio/evergreen/discussions"&gt;GitHub Discussions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Evergreen v7 Migration guide&lt;/h2&gt;
&lt;p&gt;Evergreen v7 &lt;a href="https://evergreen.segment.com/introduction/migrations" rel="nofollow"&gt;migration guide&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Install and use components&lt;/h2&gt;
&lt;p&gt;🌲 Evergreen is made up of multiple components and tools which you can import one by one. All you need to do is install the &lt;code&gt;evergreen-ui&lt;/code&gt; package:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;$ yarn add evergreen-ui
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; or&lt;/span&gt;
$ npm install --save evergreen-ui&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;A working version, assuming you are using something like &lt;a href="https://github.com/facebookincubator/create-react-app"&gt;Create React App&lt;/a&gt;, might look like this:&lt;/p&gt;
&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-v"&gt;React&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'react'&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-v"&gt;ReactDOM&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'react-dom'&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-v"&gt;Button&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'evergreen-ui'&lt;/span&gt;
&lt;span class="pl-v"&gt;ReactDOM&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;render&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;Button&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;I am using 🌲 Evergreen!&lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-c1"&gt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;Button&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&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/segmentio/evergreen"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
⠀&lt;br&gt;
⠀
&lt;h2&gt;
  
  
  Fluent / Microsoft
&lt;/h2&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/microsoft"&gt;
        microsoft
      &lt;/a&gt; / &lt;a href="https://github.com/microsoft/fluentui"&gt;
        fluentui
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Fluent UI web represents a collection of utilities, React components, and web components for building web applications.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Fluent UI Web&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://dev.azure.com/uifabric/fabricpublic/_build?definitionId=164" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/e99a841262799f3d6367dd518355c6fbb7f1abb66a48e8a7dce7f71f9e268523/68747470733a2f2f696d672e736869656c64732e696f2f617a7572652d6465766f70732f6275696c642f75696661627269632f6661627269637075626c69632f3136342f6d61737465723f7374796c653d666c61742d737175617265" alt="Build Status"&gt;&lt;/a&gt; &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/4363059ac3366efc4afac8daf9e220256da2be4f216b1968b1ab8ef7ecd6b9ed/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6e7472696275746f72732f6d6963726f736f66742f666c75656e7475693f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/4363059ac3366efc4afac8daf9e220256da2be4f216b1968b1ab8ef7ecd6b9ed/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6e7472696275746f72732f6d6963726f736f66742f666c75656e7475693f7374796c653d666c61742d737175617265" alt="GitHub contributors"&gt;&lt;/a&gt; &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/e67498fb9e585ef583e0cdd8de908b2dbd776e1885992ce342b4ea6e75f3ea97/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c616e6775616765732f746f702f6d6963726f736f66742f666c75656e7475693f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/e67498fb9e585ef583e0cdd8de908b2dbd776e1885992ce342b4ea6e75f3ea97/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c616e6775616765732f746f702f6d6963726f736f66742f666c75656e7475693f7374796c653d666c61742d737175617265" alt="GitHub top language"&gt;&lt;/a&gt; &lt;a href="https://twitter.com/FluentUI?ref_src=twsrc%5Etfw" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/cf5f47a8879497cc0772fd8c05c8bd90a4f415a0dcae807eeb42b6ed6164f02c/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f666c75656e7475693f6c6f676f3d74776974746572267374796c653d666c61742d737175617265" alt="Twitter Follow"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Fluent UI React is shipping its v9 final stable release. Visit the &lt;a href="https://github.com/microsoft/fluentui/wiki/Fluent-UI-React-v9-Release"&gt;Fluent UI React v9 Release page on the wiki&lt;/a&gt; to learn more about the upcoming release schedule.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Fluent UI web represents a collection of utilities, React components, and web components for building web applications.&lt;/p&gt;
&lt;p&gt;This repo is home to 3 separate projects today. Combining Fluent UI React v9 components with Fluent UI React v8 or v0 components is possible and allows gradual migration to Fluent UI v9.&lt;/p&gt;
&lt;p&gt;The following table will help you navigate the 3 projects and understand their differences.&lt;/p&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;React Components (v9)&lt;/th&gt;
&lt;th&gt;React (v8)&lt;/th&gt;
&lt;th&gt;Web Components&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;New, future-proof and forward looking&lt;/td&gt;
&lt;td&gt;Mature&lt;/td&gt;
&lt;td&gt;Web Component implementation of Fluent UI.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Used By&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Microsoft 365&lt;/td&gt;
&lt;td&gt;Office&lt;/td&gt;
&lt;td&gt;Edge&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Read Me&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/microsoft/fluentui/packages/react-components/react-components/README.md"&gt;README.md&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/microsoft/fluentui/packages/react/README.md"&gt;README.md&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/microsoft/fluentui/packages/web-components/README.md"&gt;README.md&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Changelog&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/microsoft/fluentui/packages/react-components/react-components/CHANGELOG.md"&gt;CHANGELOG.md&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/microsoft/fluentui/packages/react/CHANGELOG.md"&gt;CHANGELOG.md&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/microsoft/fluentui/packages/web-components/CHANGELOG.md"&gt;CHANGELOG.md&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Repo&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/microsoft/fluentui/packages/react-components/react-components/CHANGELOG.md"&gt;packages/react-components&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/microsoft/fluentui/packages/react"&gt;./packages/react&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/microsoft/fluentui/packages/web-components"&gt;./packages/web-components&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Quick Start&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://react.fluentui.dev/?path=/docs/concepts-developer-quick-start--page" rel="nofollow"&gt;Quick Start&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://developer.microsoft.com/en-us/fluentui#/get-started/web" rel="nofollow"&gt;Quick Start&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/microsoft/fluentui/tree/master/packages/web-components/README.md"&gt;See README.md&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Docs&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://react.fluentui.dev/" rel="nofollow"&gt;https://react.fluentui.dev/&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://aka.ms/fluentui-react" rel="nofollow"&gt;aka.ms/fluentui-react&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://aka.ms/fluentui-web-components" rel="nofollow"&gt;aka.ms/fluentui-web-components&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;NPM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;@fluentui/react-components&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;@fluentui/react&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/microsoft/fluentui"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
⠀&lt;br&gt;
⠀
&lt;h2&gt;
  
  
  material-ui
&lt;/h2&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/mui"&gt;
        mui
      &lt;/a&gt; / &lt;a href="https://github.com/mui/material-ui"&gt;
        material-ui
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      MUI Core: Ready-to-use foundational React components, free forever. It includes Material UI, which implements Google's Material Design.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a href="https://mui.com/core/" rel="nofollow"&gt;&lt;img width="150" height="133" src="https://camo.githubusercontent.com/306dedb9426f1d93a981d305a0a18164932ece8dca4d5fd820b1d3c36625b218/68747470733a2f2f6d75692e636f6d2f7374617469632f6c6f676f2e737667" alt="MUI Core logo"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h1&gt;
MUI Core&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;MUI Core&lt;/strong&gt; contains foundational React UI component libraries for shipping new features faster:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mui.com/material-ui/" rel="nofollow"&gt;Material UI&lt;/a&gt; is a comprehensive library of components that features our implementation of Google's &lt;a href="https://m2.material.io/design/introduction/" rel="nofollow"&gt;Material Design&lt;/a&gt; system.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mui.com/joy-ui/getting-started/" rel="nofollow"&gt;Joy UI&lt;/a&gt; is a library of beautifully designed React UI components built to spark joy.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mui.com/base-ui/" rel="nofollow"&gt;Base UI&lt;/a&gt; is a library of unstyled React UI components and hooks. With Base UI, you gain complete control over your app's CSS and accessibility features.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mui.com/system/getting-started/" rel="nofollow"&gt;MUI System&lt;/a&gt; is a collection of CSS utilities to help you rapidly lay out custom designs.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;p&gt;&lt;a href="https://github.com/mui/material-ui/blob/HEAD/LICENSE"&gt;&lt;img src="https://camo.githubusercontent.com/83d3746e5881c1867665223424263d8e604df233d0a11aae0813e0414d433943/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667" alt="license"&gt;&lt;/a&gt;
&lt;a href="https://www.npmjs.com/package/@mui/material" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/42fcae97938f747ebdc1cdffbd185192917f204081dde86ad350303f6b0ee2f9/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f406d75692f6d6174657269616c2f6c61746573742e737667" alt="npm latest package"&gt;&lt;/a&gt;
&lt;a href="https://www.npmjs.com/package/@mui/material" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/42e1e679819b5ea55ef02a20404d466979cd2aa3527c8f6f76e1517b2e11e60a/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f406d75692f6d6174657269616c2f6e6578742e737667" alt="npm next package"&gt;&lt;/a&gt;
&lt;a href="https://www.npmjs.com/package/@mui/material" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/e093d6b9abfc584f3b9cd9306e47c8249dce6cbab62b598040603b0ca66b3632/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f646d2f406d75692f6d6174657269616c2e737667" alt="npm downloads"&gt;&lt;/a&gt;
&lt;a href="https://app.circleci.com/pipelines/github/mui/material-ui?branch=master" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/f65f280641ab80fedd641230df9806247e077729284bf571e5d2f35420c61ea8/68747470733a2f2f636972636c6563692e636f6d2f67682f6d75692f6d6174657269616c2d75692f747265652f6d61737465722e7376673f7374796c653d736869656c64" alt="CircleCI"&gt;&lt;/a&gt;
&lt;a href="https://codecov.io/gh/mui/material-ui/branch/master" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/6a36543c2a9a9b15d7061de9164b47d7b02417fdb1847ad50678baa4b0211bdb/68747470733a2f2f696d672e736869656c64732e696f2f636f6465636f762f632f6769746875622f6d75692f6d6174657269616c2d75692f6d61737465722e737667" alt="Coverage Status"&gt;&lt;/a&gt;
&lt;a href="https://twitter.com/MUI_hq" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/a009a69b86e1aa7fa4fc4fda60115a98e55c0c90d8c3f1ef1481e4fb6d87aa36/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f4d55495f68712e7376673f6c6162656c3d666f6c6c6f772b4d5549" alt="Follow on Twitter"&gt;&lt;/a&gt;
&lt;a href="https://github.com/mui/material-ui/issues/27062"&gt;&lt;img src="https://camo.githubusercontent.com/ffd641a530af9382cc32a53a36db969439695336fd995a4f4e14fa06f320e65e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f72656e6f766174652d656e61626c65642d627269676874677265656e2e737667" alt="Renovate status"&gt;&lt;/a&gt;
&lt;a href="https://isitmaintained.com/project/mui/material-ui" title="Average time to resolve an issue" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/193bf3c877aee9672c2d347abb8cd02861a41f66844c850d623f778c47f08d65/68747470733a2f2f697369746d61696e7461696e65642e636f6d2f62616467652f7265736f6c7574696f6e2f6d75692f6d6174657269616c2d75692e737667" alt="Average time to resolve an issue"&gt;&lt;/a&gt;
&lt;a href="https://opencollective.com/mui" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/ebd665acf0c3fe358946274772b01693a95e3b2f45a40663a848432fd2659041/68747470733a2f2f696d672e736869656c64732e696f2f6f70656e636f6c6c6563746976652f616c6c2f6d7569" alt="Open Collective backers and sponsors"&gt;&lt;/a&gt;
&lt;a href="https://bestpractices.coreinfrastructure.org/projects/1320" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/16a31a60ed0a5d7165e1f23ce6d8f5cd5fd07bd1e9f62a3d950c0139e43a40a3/68747470733a2f2f626573747072616374696365732e636f7265696e6672617374727563747572652e6f72672f70726f6a656374732f313332302f6261646765" alt="CII Best Practices"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;h2&gt;
Documentation&lt;/h2&gt;
&lt;h3&gt;
Material UI&lt;/h3&gt;
&lt;p&gt;Visit &lt;a href="https://mui.com/material-ui/" rel="nofollow"&gt;https://mui.com/material-ui/&lt;/a&gt; to view the full documentation.&lt;/p&gt;

  Older versions
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://v4.mui.com/" rel="nofollow"&gt;v4.x&lt;/a&gt;&lt;/strong&gt; (&lt;a href="https://mui.com/material-ui/migration/migration-v4/" rel="nofollow"&gt;Migration from v4 to v5&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://v3.mui.com/" rel="nofollow"&gt;v3.x&lt;/a&gt;&lt;/strong&gt; (&lt;a href="https://mui.com/material-ui/migration/migration-v3/" rel="nofollow"&gt;Migration from v3 to v4&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://v0.mui.com/" rel="nofollow"&gt;v0.x&lt;/a&gt;&lt;/strong&gt; (&lt;a href="https://mui.com/material-ui/migration/migration-v0x/" rel="nofollow"&gt;Migration to v1&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; &lt;code&gt;@next&lt;/code&gt; only points to pre-releases
Use &lt;code&gt;@latest&lt;/code&gt; for the latest stable release.&lt;/p&gt;
&lt;h3&gt;
Joy UI&lt;/h3&gt;
&lt;p&gt;Visit &lt;a href="https://mui.com/joy-ui/getting-started/" rel="nofollow"&gt;https://mui.com/joy-ui/getting-started/&lt;/a&gt; to view the full documentation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Joy UI is…&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/mui/material-ui"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
⠀&lt;br&gt;
⠀
&lt;h2&gt;
  
  
  Garden / Zendesk
&lt;/h2&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/zendeskgarden"&gt;
        zendeskgarden
      &lt;/a&gt; / &lt;a href="https://github.com/zendeskgarden/react-components"&gt;
        react-components
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🌱 garden React components
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Garden React Components &lt;a href="https://circleci.com/gh/zendeskgarden/react-components/tree/main" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/b4acf676c6ed67abd8ad7686313a35eb42f4475123b9c0f05e63bca7006cd1a5/68747470733a2f2f666c61742e62616467656e2e6e65742f636972636c6563692f6769746875622f7a656e6465736b67617264656e2f72656163742d636f6d706f6e656e74732f6d61696e3f6c6162656c3d6275696c64" alt="Build Status"&gt;&lt;/a&gt; &lt;a href="https://coveralls.io/github/zendeskgarden/react-components" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/7e52bc827b1fa35883e821957c976e85e0093a4059240dcf35bdc5114ce9f369/68747470733a2f2f666c61742e62616467656e2e6e65742f636f766572616c6c732f632f6769746875622f7a656e6465736b67617264656e2f72656163742d636f6d706f6e656e74732f6d61696e" alt="Coverage Status"&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;🌱 Garden is the design system by Zendesk&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Garden React provides consistent styling and behavior for Garden components
React components are maintained following a multi-package approach where
components are packaged and published individually, but combined under this
single repository.&lt;/p&gt;
&lt;h2&gt;
Installation&lt;/h2&gt;
&lt;p&gt;See the individual package README for the React component you would like
to install.&lt;/p&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Package&lt;/th&gt;
&lt;th&gt;Version&lt;/th&gt;
&lt;th&gt;Size&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/zendeskgarden/react-componentspackages/accordions"&gt;&lt;code&gt;@zendeskgarden/react-accordions&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.npmjs.com/package/@zendeskgarden/react-accordions" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/138040b5ff946a5b6ea0d11713ded72c6b54af549756f5551453cf4a378b1a68/68747470733a2f2f666c61742e62616467656e2e6e65742f6e706d2f762f407a656e6465736b67617264656e2f72656163742d6163636f7264696f6e73" alt="npm version"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bundlephobia.com/result?p=@zendeskgarden/react-accordions" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/beb90516c0efa1fec4bc4ac3ef36edaba86a6679141013d70c83589fa4958379/68747470733a2f2f666c61742e62616467656e2e6e65742f62756e646c6570686f6269612f6d696e7a69702f407a656e6465736b67617264656e2f72656163742d6163636f7264696f6e73" alt="Bundle Size"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/zendeskgarden/react-componentspackages/avatars"&gt;&lt;code&gt;@zendeskgarden/react-avatars&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.npmjs.com/package/@zendeskgarden/react-avatars" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/0ed918d52113a08768eb34efe87cd61711b7feefc1defa1305977093c8dd3630/68747470733a2f2f666c61742e62616467656e2e6e65742f6e706d2f762f407a656e6465736b67617264656e2f72656163742d61766174617273" alt="npm version"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bundlephobia.com/result?p=@zendeskgarden/react-avatars" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/87accb901950841cc0f3cf06be5f7cf50e7382c43e28430227f3b36125f9f7af/68747470733a2f2f666c61742e62616467656e2e6e65742f62756e646c6570686f6269612f6d696e7a69702f407a656e6465736b67617264656e2f72656163742d61766174617273" alt="Bundle Size"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/zendeskgarden/react-componentspackages/breadcrumbs"&gt;&lt;code&gt;@zendeskgarden/react-breadcrumbs&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.npmjs.com/package/@zendeskgarden/react-breadcrumbs" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/9bf03e789a247297bd5b99aad82563c89aa94d7bf7dfc1c4674d58a5dff35ba3/68747470733a2f2f666c61742e62616467656e2e6e65742f6e706d2f762f407a656e6465736b67617264656e2f72656163742d62726561646372756d6273" alt="npm version"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bundlephobia.com/result?p=@zendeskgarden/react-breadcrumbs" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/006642ac30918565cfe27d005124dcf1371aededbca9d2a6adbf9b0c07730449/68747470733a2f2f666c61742e62616467656e2e6e65742f62756e646c6570686f6269612f6d696e7a69702f407a656e6465736b67617264656e2f72656163742d62726561646372756d6273" alt="Bundle Size"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/zendeskgarden/react-componentspackages/buttons"&gt;&lt;code&gt;@zendeskgarden/react-buttons&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.npmjs.com/package/@zendeskgarden/react-buttons" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/62aa6d8e95cb5be4fe8a60e2e1fada8871e647563c56582c19f627a3825f2053/68747470733a2f2f666c61742e62616467656e2e6e65742f6e706d2f762f407a656e6465736b67617264656e2f72656163742d627574746f6e73" alt="npm version"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bundlephobia.com/result?p=@zendeskgarden/react-buttons" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/590700fb338608719ca903c02a879eea72e6e39b7f2c421ce60a9036818d275c/68747470733a2f2f666c61742e62616467656e2e6e65742f62756e646c6570686f6269612f6d696e7a69702f407a656e6465736b67617264656e2f72656163742d627574746f6e73" alt="Bundle Size"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/zendeskgarden/react-componentspackages/chrome"&gt;&lt;code&gt;@zendeskgarden/react-chrome&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.npmjs.com/package/@zendeskgarden/react-chrome" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/4dddbf9d276b763f4d4b4bd45a49b11cdde78227afb83bfdca64c587e59186d4/68747470733a2f2f666c61742e62616467656e2e6e65742f6e706d2f762f407a656e6465736b67617264656e2f72656163742d6368726f6d65" alt="npm version"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bundlephobia.com/result?p=@zendeskgarden/react-chrome" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/5b1670abe5117b04b42d79b9b1fb4d3a144145ecb2f1fe2e9b32043d63b287cf/68747470733a2f2f666c61742e62616467656e2e6e65742f62756e646c6570686f6269612f6d696e7a69702f407a656e6465736b67617264656e2f72656163742d6368726f6d65" alt="Bundle Size"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/zendeskgarden/react-componentspackages/colorpickers"&gt;&lt;code&gt;@zendeskgarden/react-colorpickers&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.npmjs.com/package/@zendeskgarden/react-colorpickers" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/d66dfff0f83493383b7c4d55dfca8e7a0856fcafbf48b1edf657e73cb676a8a7/68747470733a2f2f666c61742e62616467656e2e6e65742f6e706d2f762f407a656e6465736b67617264656e2f72656163742d636f6c6f727069636b657273" alt="npm version"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bundlephobia.com/result?p=@zendeskgarden/react-colorpickers" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/ef668450d6ccf24378a8ef80d38c6463727ef64bbd7be3b28c822acb8a15e5e3/68747470733a2f2f666c61742e62616467656e2e6e65742f62756e646c6570686f6269612f6d696e7a69702f407a656e6465736b67617264656e2f72656163742d636f6c6f727069636b657273" alt="Bundle Size"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/zendeskgarden/react-componentspackages/datepickers"&gt;&lt;code&gt;@zendeskgarden/react-datepickers&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.npmjs.com/package/@zendeskgarden/react-datepickers" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/1cc4be1107d45fae62523226c6d237215f9bf7b71da0e2092ee4d7000af4fda1/68747470733a2f2f666c61742e62616467656e2e6e65742f6e706d2f762f407a656e6465736b67617264656e2f72656163742d646174657069636b657273" alt="npm version"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bundlephobia.com/result?p=@zendeskgarden/react-datepickers" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/3916550e733e13efc25ae4d7c84ef95291f60832e0d22b26a486d0f47ffe90df/68747470733a2f2f666c61742e62616467656e2e6e65742f62756e646c6570686f6269612f6d696e7a69702f407a656e6465736b67617264656e2f72656163742d646174657069636b657273" alt="Bundle Size"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/zendeskgarden/react-componentspackages/drag-drop"&gt;&lt;code&gt;@zendeskgarden/react-drag-drop&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.npmjs.com/package/@zendeskgarden/react-drag-drop" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/76c0c91663755c4726ee03c046c47a34bc89bdbae0467b626e18834db28017b8/68747470733a2f2f666c61742e62616467656e2e6e65742f6e706d2f762f407a656e6465736b67617264656e2f72656163742d647261672d64726f70" alt="npm version"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bundlephobia.com/result?p=@zendeskgarden/react-drag-drop" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/98709a9de41444a339d31a87f976c1be2db5ab0f06a674a3f3f2887e13582dd4/68747470733a2f2f666c61742e62616467656e2e6e65742f62756e646c6570686f6269612f6d696e7a69702f407a656e6465736b67617264656e2f72656163742d647261672d64726f70" alt="Bundle Size"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/zendeskgarden/react-componentspackages/dropdowns"&gt;&lt;code&gt;@zendeskgarden/react-dropdowns&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.npmjs.com/package/@zendeskgarden/react-dropdowns" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/8ae01d9785f259c4a0f5e49865a424a19cde4dc2ebf9b2ea23af56cd824d86c6/68747470733a2f2f666c61742e62616467656e2e6e65742f6e706d2f762f407a656e6465736b67617264656e2f72656163742d64726f70646f776e73" alt="npm version"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bundlephobia.com/result?p=@zendeskgarden/react-dropdowns" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/b01df23cf63126d36df3ae55981eff2ccfafeb6150bf58eabdc35b39a55339b4/68747470733a2f2f666c61742e62616467656e2e6e65742f62756e646c6570686f6269612f6d696e7a69702f407a656e6465736b67617264656e2f72656163742d64726f70646f776e73" alt="Bundle Size"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/zendeskgarden/react-componentspackages/dropdowns.next"&gt;&lt;code&gt;@zendeskgarden/react-dropdowns.next&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.npmjs.com/package/@zendeskgarden/react-dropdowns.next" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/ec932af0ffc64366d47f2f73bf53bc21d17726ce27df0d425d43583f496139da/68747470733a2f2f666c61742e62616467656e2e6e65742f6e706d2f762f407a656e6465736b67617264656e2f72656163742d64726f70646f776e732e6e657874" alt="npm version"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bundlephobia.com/result?p=@zendeskgarden/react-dropdowns.next" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/d63262cc3d5ebf13b2b36fe31e907138f3efecadd719b2f4b2c1fa479d5094c2/68747470733a2f2f666c61742e62616467656e2e6e65742f62756e646c6570686f6269612f6d696e7a69702f407a656e6465736b67617264656e2f72656163742d64726f70646f776e732e6e657874" alt="Bundle Size"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/zendeskgarden/react-componentspackages/forms"&gt;&lt;code&gt;@zendeskgarden/react-forms&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.npmjs.com/package/@zendeskgarden/react-forms" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/cc81c6465a5d1d875bea83fdcbb238cad5236fc4c41e08c1aef6a3c07c3c4530/68747470733a2f2f666c61742e62616467656e2e6e65742f6e706d2f762f407a656e6465736b67617264656e2f72656163742d666f726d73" alt="npm version"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bundlephobia.com/result?p=@zendeskgarden/react-forms" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/c1cf41ef8893ca18ca9872203e4f21f722f33d682990e3097e406f762970758a/68747470733a2f2f666c61742e62616467656e2e6e65742f62756e646c6570686f6269612f6d696e7a69702f407a656e6465736b67617264656e2f72656163742d666f726d73" alt="Bundle Size"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/zendeskgarden/react-componentspackages/grid"&gt;&lt;code&gt;@zendeskgarden/react-grid&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.npmjs.com/package/@zendeskgarden/react-grid" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/7c0300adf2eb0707002f8cc5704d9b220a02782a3a3f799fa98dc1e7af15aa49/68747470733a2f2f666c61742e62616467656e2e6e65742f6e706d2f762f407a656e6465736b67617264656e2f72656163742d67726964" alt="npm version"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bundlephobia.com/result?p=@zendeskgarden/react-grid" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/ad7813f95a582717583a1394a19009cb1753b37c3ae68b40b5b5e705fdcaa739/68747470733a2f2f666c61742e62616467656e2e6e65742f62756e646c6570686f6269612f6d696e7a69702f407a656e6465736b67617264656e2f72656163742d67726964" alt="Bundle Size"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/zendeskgarden/react-componentspackages/loaders"&gt;&lt;code&gt;@zendeskgarden/react-loaders&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.npmjs.com/package/@zendeskgarden/react-loaders" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/4427eebff5fd00d473273b1d225edab3941caa67989062e57a6750fbd55db4a7/68747470733a2f2f666c61742e62616467656e2e6e65742f6e706d2f762f407a656e6465736b67617264656e2f72656163742d6c6f6164657273" alt="npm version"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bundlephobia.com/result?p=@zendeskgarden/react-loaders" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/380303d8600005920e1558fa70916cb4474f7a66d35f0aa8dd6963bddc9e37df/68747470733a2f2f666c61742e62616467656e2e6e65742f62756e646c6570686f6269612f6d696e7a69702f407a656e6465736b67617264656e2f72656163742d6c6f6164657273" alt="Bundle Size"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/zendeskgarden/react-componentspackages/modals"&gt;&lt;code&gt;@zendeskgarden/react-modals&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.npmjs.com/package/@zendeskgarden/react-modals" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/a871712be998b10d6cfd975e6c7662ec867220fe85dd74e3334b1c8719835566/68747470733a2f2f666c61742e62616467656e2e6e65742f6e706d2f762f407a656e6465736b67617264656e2f72656163742d6d6f64616c73" alt="npm version"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bundlephobia.com/result?p=@zendeskgarden/react-modals" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/30b782e05d0169130a9c7be6249d5c1e20da3f5e3bf150aa3604de891c7f9412/68747470733a2f2f666c61742e62616467656e2e6e65742f62756e646c6570686f6269612f6d696e7a69702f407a656e6465736b67617264656e2f72656163742d6d6f64616c73" alt="Bundle Size"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/zendeskgarden/react-componentspackages/notifications"&gt;&lt;code&gt;@zendeskgarden/react-notifications&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.npmjs.com/package/@zendeskgarden/react-notifications" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/497c6e8468b3ef155d759906ca91bdf3391a82e05934f464f40667a3d3a2f807/68747470733a2f2f666c61742e62616467656e2e6e65742f6e706d2f762f407a656e6465736b67617264656e2f72656163742d6e6f74696669636174696f6e73" alt="npm version"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bundlephobia.com/result?p=@zendeskgarden/react-notifications" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/cb097689eedc5f57e3f1359114f6e968b89b47c90aadb2f4bd6dd1a823d3e3e2/68747470733a2f2f666c61742e62616467656e2e6e65742f62756e646c6570686f6269612f6d696e7a69702f407a656e6465736b67617264656e2f72656163742d6e6f74696669636174696f6e73" alt="Bundle Size"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/zendeskgarden/react-componentspackages/pagination"&gt;&lt;code&gt;@zendeskgarden/react-pagination&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.npmjs.com/package/@zendeskgarden/react-pagination" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/04ef540b449eac64e86a2f9dbc26ca10813d9c18892b82e940cd1c839bb974f0/68747470733a2f2f666c61742e62616467656e2e6e65742f6e706d2f762f407a656e6465736b67617264656e2f72656163742d706167696e6174696f6e" alt="npm version"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bundlephobia.com/result?p=@zendeskgarden/react-pagination" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/ee8345a2f230c95dd357382366d135680f294a4a109db5295a1618ecbda8ac05/68747470733a2f2f666c61742e62616467656e2e6e65742f62756e646c6570686f6269612f6d696e7a69702f407a656e6465736b67617264656e2f72656163742d706167696e6174696f6e" alt="Bundle Size"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/zendeskgarden/react-componentspackages/tabs"&gt;&lt;code&gt;@zendeskgarden/react-tabs&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.npmjs.com/package/@zendeskgarden/react-tabs" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/430e4783dc6edda108c08fd02f56168a6fa92810c7202536e40c5dd9203fb992/68747470733a2f2f666c61742e62616467656e2e6e65742f6e706d2f762f407a656e6465736b67617264656e2f72656163742d74616273" alt="npm version"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bundlephobia.com/result?p=@zendeskgarden/react-tabs" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/540b34f339b9f9c46a948b307d616f119f5808f85855f7c36340eef6e9e1c759/68747470733a2f2f666c61742e62616467656e2e6e65742f62756e646c6570686f6269612f6d696e7a69702f407a656e6465736b67617264656e2f72656163742d74616273" alt="Bundle Size"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/zendeskgarden/react-componentspackages/tables"&gt;&lt;code&gt;@zendeskgarden/react-tables&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.npmjs.com/package/@zendeskgarden/react-tables" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/7bd3c217870dc5197e10454d0613a21a7ba8d5e85e1e892fe54993c422ff9117/68747470733a2f2f666c61742e62616467656e2e6e65742f6e706d2f762f407a656e6465736b67617264656e2f72656163742d7461626c6573" alt="npm version"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bundlephobia.com/result?p=@zendeskgarden/react-tables" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/60a1e0216ac74f272645c5b01d609ece32451639c986322a1e7d6b219c0c0b66/68747470733a2f2f666c61742e62616467656e2e6e65742f62756e646c6570686f6269612f6d696e7a69702f407a656e6465736b67617264656e2f72656163742d7461626c6573" alt="Bundle Size"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/zendeskgarden/react-componentspackages/tags"&gt;&lt;code&gt;@zendeskgarden/react-tags&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.npmjs.com/package/@zendeskgarden/react-tags" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/384a47ab33595b364383d6863361ffa77ce3648db75906225572be20878eabe4/68747470733a2f2f666c61742e62616467656e2e6e65742f6e706d2f762f407a656e6465736b67617264656e2f72656163742d74616773" alt="npm version"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bundlephobia.com/result?p=@zendeskgarden/react-tags" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/e98f109844114e996137ada777f8e938d5e7518f5f4279d67ba74ebf4ba95280/68747470733a2f2f666c61742e62616467656e2e6e65742f62756e646c6570686f6269612f6d696e7a69702f407a656e6465736b67617264656e2f72656163742d74616773" alt="Bundle Size"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/zendeskgarden/react-componentspackages/theming"&gt;&lt;code&gt;@zendeskgarden/react-theming&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.npmjs.com/package/@zendeskgarden/react-theming" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/8f4aee4c783a76b54226ef6c5f0817c39046a52f96df1cbafad130cb6d4f3c7b/68747470733a2f2f666c61742e62616467656e2e6e65742f6e706d2f762f407a656e6465736b67617264656e2f72656163742d7468656d696e67" alt="npm version"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bundlephobia.com/result?p=@zendeskgarden/react-theming" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/c1fad8abcd2590095f1b4711e54dcf9e7d84fa088de7c13ec807f19ac151ab71/68747470733a2f2f666c61742e62616467656e2e6e65742f62756e646c6570686f6269612f6d696e7a69702f407a656e6465736b67617264656e2f72656163742d7468656d696e67" alt="Bundle Size"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/zendeskgarden/react-componentspackages/tooltips"&gt;&lt;code&gt;@zendeskgarden/react-tooltips&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.npmjs.com/package/@zendeskgarden/react-tooltips" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/9bb38d2bb997173814ee7c21f028175c165f764ded767614ea070199d6dff9dc/68747470733a2f2f666c61742e62616467656e2e6e65742f6e706d2f762f407a656e6465736b67617264656e2f72656163742d746f6f6c74697073" alt="npm version"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bundlephobia.com/result?p=@zendeskgarden/react-tooltips" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/bd75684ffed446e41e610d1a6271efce26498593c309369a9fd6d6c9f9189d47/68747470733a2f2f666c61742e62616467656e2e6e65742f62756e646c6570686f6269612f6d696e7a69702f407a656e6465736b67617264656e2f72656163742d746f6f6c74697073" alt="Bundle Size"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/zendeskgarden/react-componentspackages/typography"&gt;&lt;code&gt;@zendeskgarden/react-typography&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.npmjs.com/package/@zendeskgarden/react-typography" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/fa6baf05906ead51094f11b4172efa08599099df9b0f0f1c207e186a3879c300/68747470733a2f2f666c61742e62616467656e2e6e65742f6e706d2f762f407a656e6465736b67617264656e2f72656163742d7479706f677261706879" alt="npm version"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bundlephobia.com/result?p=@zendeskgarden/react-typography" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/e9b952d772c1da6f8810c5719919fcb9d8213e0ee67726a30c7fac3bfa63bb21/68747470733a2f2f666c61742e62616467656e2e6e65742f62756e646c6570686f6269612f6d696e7a69702f407a656e6465736b67617264656e2f72656163742d7479706f677261706879" alt="Bundle Size"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h2&gt;
Usage&lt;/h2&gt;
&lt;p&gt;Garden React packages are ready to use in a
&lt;a href="https://create-react-app.dev/" rel="nofollow"&gt;Create React App&lt;/a&gt; environment or together
with standard Rollup or webpack build configurations.&lt;/p&gt;
&lt;p&gt;Here is a simple example to get you started:&lt;/p&gt;
&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-v"&gt;React&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'react'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-v"&gt;ReactDOM&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'react-dom'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-v"&gt;ThemeProvider&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'@zendeskgarden/react-theming'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-v"&gt;Button&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'@zendeskgarden/react-buttons'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-v"&gt;App&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt; &lt;span class="pl-c1"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="pl-kos"&gt;(&lt;/span&gt;
  &lt;span class="pl-c"&gt;/* Include a ThemeProvider wrapper&lt;/span&gt;&lt;/pre&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/zendeskgarden/react-components"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
⠀&lt;br&gt;
⠀
&lt;h2&gt;
  
  
  Gestalt / Pinterest
&lt;/h2&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/pinterest"&gt;
        pinterest
      &lt;/a&gt; / &lt;a href="https://github.com/pinterest/gestalt"&gt;
        gestalt
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A set of React UI components that supports Pinterest’s design language
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
&lt;a href="https://gestalt.pinterest.systems/" rel="nofollow"&gt;Gestalt&lt;/a&gt; · &lt;a href="https://www.npmjs.com/package/gestalt" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/3db388e444afa9b91af7f4717f529f16e8c59942bd9716190f29844fc55c4d1d/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f67657374616c742e737667" alt="NPM Version"&gt;&lt;/a&gt; &lt;a href="https://github.com/pinterest/gestalt/blob/master/LICENSE"&gt;&lt;img src="https://camo.githubusercontent.com/a3822397e914e0cb0417903df46a1f3dd7aed5b22cb153d4d105b8a9674c9f5c/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f6c2f67657374616c743f7374796c653d666c6174" alt="License"&gt;&lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Gestalt is Pinterest’s design system. Our system includes a React component library with comprehensive guidelines, best practices, tools, and resources to support designers and engineers delivering a high-quality product.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://gestalt.pinterest.systems/" rel="nofollow"&gt;Visit the official Gestalt Documentation&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Installation&lt;/h2&gt;
&lt;p&gt;The package can be installed via npm:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npm i gestalt --save
npm i gestalt-charts --save
npm i gestalt-datepicker --save&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Or via yarn:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;yarn add gestalt
yarn add gestalt-charts
yarn add gestalt-datepicker&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
Usage&lt;/h2&gt;
&lt;p&gt;Gestalt exports each component as ES6 modules and a single, precompiled CSS file:&lt;/p&gt;
&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-v"&gt;Text&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'gestalt'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-s"&gt;'gestalt/dist/gestalt.css'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-s"&gt;'gestalt/dist/gestalt-charts.css'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-s"&gt;'gestalt/dist/gestalt-datepicker.css'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;That syntax is Webpack specific (and will work with Create React App), but you can use Gestalt anywhere that supports ES6 module bundling and global CSS.&lt;/p&gt;
&lt;h2&gt;
Development&lt;/h2&gt;
&lt;p&gt;Gestalt is a &lt;a href="https://yarnpkg.com/lang/en/docs/workspaces/" rel="nofollow"&gt;multi-project monorepo&lt;/a&gt;. The docs and components are all organized as separate packages that share similar tooling.&lt;/p&gt;
&lt;p&gt;Install project dependencies and run…&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/pinterest/gestalt"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
⠀&lt;br&gt;
⠀
&lt;h2&gt;
  
  
  Grommet
&lt;/h2&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/grommet"&gt;
        grommet
      &lt;/a&gt; / &lt;a href="https://github.com/grommet/grommet"&gt;
        grommet
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      a react-based framework that provides accessibility, modularity, responsiveness, and theming in a tidy package
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Grommet: focus on the essential experience&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://github.com/grommet/grommetCONTRIBUTING.md"&gt;&lt;img src="https://camo.githubusercontent.com/2b5715522e1fd1bd38adef765e797b4a03af49f99a94977161bd6b1e8ce99c51/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f707227732d77656c636f6d652d3764346364622e737667" alt="PRs Welcome"&gt;&lt;/a&gt;
&lt;a href="https://slack-invite.grommet.io" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/2efbcb8fa58fd7175ba6f35ee123c0920eb87d0eb086d8e5ba225769dc1ac554/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6a6f696e253230746865253230636f6d6d756e6974792d736c61636b2d6664366666662e737667" alt="slack"&gt;&lt;/a&gt;
&lt;a href="https://twitter.com/grommet_io" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/0e94d8d593ac422066185a8ce6129a8f53b39a131eed4c63ad3c479b2bcb0b24/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f67726f6d6d65745f696f2e7376673f6c6162656c3d666f6c6c6f77253230267374796c653d736f6369616c" alt="follow"&gt;&lt;/a&gt;
&lt;a href="https://medium.com/grommet-io" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/89dd891fd5d6aab0478b541f364cc41fe03ecc52475f24090a1fcb212d4aa35d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f76696577253230626c6f67732532306f6e2d6d656469756d2d3030303030302e737667" alt="blogs"&gt;&lt;/a&gt;
&lt;a href="https://www.npmjs.com/package/grommet" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/91291de4f35a9430e8da8574b0c117fa17e4fdea265bb7884d2daaa86914ac76/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f67726f6d6d65742e7376673f636f6c6f723d666663613538" alt="npm package"&gt;&lt;/a&gt;
&lt;a href="https://www.npmjs.com/package/grommet" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/3c57c8038a750c4e78be858939d9741a3b7cf2c4e06010be4bfd2bc862cccf7f/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f646d2f67726f6d6d65742e7376673f636f6c6f723d336431333864" alt="npm downloads"&gt;&lt;/a&gt;
&lt;a href="https://github.com/prettier/prettier"&gt;&lt;img src="https://camo.githubusercontent.com/f8a260cfd8489a1263e31ebf7f90c94d74b10579b89bd9f1e505ade28d403c6a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7374796c65645f776974682d70726574746965722d6666363962342e737667" alt="styled with prettier"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/a697f37a2942cdce866749d468e955f45fc59bc9c1e8c1f6fdc828636da91c75/68747470733a2f2f76322e67726f6d6d65742e696f2f696d672f7374616b2d6875727261682e737667"&gt;&lt;img height="260" src="https://camo.githubusercontent.com/a697f37a2942cdce866749d468e955f45fc59bc9c1e8c1f6fdc828636da91c75/68747470733a2f2f76322e67726f6d6d65742e696f2f696d672f7374616b2d6875727261682e737667"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Documentation&lt;/h2&gt;
&lt;p&gt;Visit the &lt;a href="https://grommet.io/" rel="nofollow"&gt;Grommet&lt;/a&gt; website for more information.&lt;/p&gt;
&lt;h2&gt;
Support / Contributing&lt;/h2&gt;
&lt;p&gt;Before opening an issue or pull request, please read the &lt;a href="https://github.com/grommet/grommetCONTRIBUTING.md"&gt;Contributing&lt;/a&gt; guide.&lt;/p&gt;
&lt;h2&gt;
Install&lt;/h2&gt;
&lt;p&gt;You can install Grommet using either of the methods given below.&lt;/p&gt;
&lt;p&gt;For npm users:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;  $ npm install grommet styled-components --save&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;For Yarn users:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;  $ yarn add grommet styled-components&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;There are more detailed instructions in the &lt;a href="https://github.com/grommet/grommet-starter-new-app"&gt;Grommet Starter&lt;/a&gt; app tutorial for
new apps. For incorporating Grommet into an existing app, see the &lt;a href="https://github.com/grommet/grommet-starter-existing-app"&gt;Existing App&lt;/a&gt;
version.&lt;/p&gt;
&lt;h2&gt;
Explore&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://storybook.grommet.io" rel="nofollow"&gt;Storybook&lt;/a&gt; examples per component, you can create them locally by running:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;  $ npm run storybook&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;or&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;  $ yarn storybook&lt;/pre&gt;

&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Basic &lt;a href="https://codesandbox.io/s/github/grommet/grommet-sandbox" rel="nofollow"&gt;code-sandbox playgrounds&lt;/a&gt; for each component.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://codesandbox.io/u/grommetux/sandboxes" rel="nofollow"&gt;Templates, patterns, and starters&lt;/a&gt;: feel free to share with us
more pattern ideas on &lt;a href="https://slack-invite.grommet.io" rel="nofollow"&gt;Slack&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;End-to-end project examples from our community in the
&lt;a href="https://slack-invite.grommet.io" rel="nofollow"&gt;#i-made-this Slack channel&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Read more from the Grommet team on &lt;a href="https://medium.com/grommet-io" rel="nofollow"&gt;Medium&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
Stable&lt;/h2&gt;
&lt;p&gt;grommet…&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/grommet/grommet"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
⠀&lt;br&gt;
⠀
&lt;h2&gt;
  
  
  Pluralsight
&lt;/h2&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/pluralsight"&gt;
        pluralsight
      &lt;/a&gt; / &lt;a href="https://github.com/pluralsight/classic-design-system"&gt;
        classic-design-system
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      This library (classic) is officially in maintenance mode only. For the latest library, please see the TVA project (https://pluralsight.github.io/tva/).
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Pluralsight Design System &lt;a href="https://travis-ci.org/pluralsight/design-system" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/a7067d4318b902450e6a83320e6197a86483cb766f44b809571f3692ae054fd6/68747470733a2f2f7472617669732d63692e6f72672f706c7572616c73696768742f64657369676e2d73797374656d2e7376673f6272616e63683d6d6173746572" alt="Build Status"&gt;&lt;/a&gt;
&lt;/h1&gt;
&lt;h2&gt;
Important ⚠️
&lt;/h2&gt;
&lt;h3&gt;
This library (classic) is officially in maintenance mode only.&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;We will only fix bugs and will no longer add new features. For the latest library, please follow the &lt;a href="https://pluralsight.github.io/tva/" rel="nofollow"&gt;TVA project&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
Get involved&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://design-system.pluralsight.com/guides/developmentworkflow" rel="nofollow"&gt;Use it in your app&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://design-system.pluralsight.com/guides/contribute" rel="nofollow"&gt;Find ways to contribute&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://design-system.pluralsight.com/guides/contribute#contribute-code" rel="nofollow"&gt;Prep to commit code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Run locally&lt;/h2&gt;
&lt;p&gt;Install &lt;a href="https://github.com/nvm-sh/nvm"&gt;nvm&lt;/a&gt;&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;nvm install
nvm use
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;yarn config set ignore-engines true

yarn
yarn build
yarn start
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;
Publishing packages&lt;/h2&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;yarn publish:all
&lt;/code&gt;&lt;/pre&gt;&lt;/div&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/pluralsight/classic-design-system"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;&lt;br&gt;
⠀&lt;br&gt;&lt;br&gt;
⠀

&lt;h2&gt;
  
  
  Polaris / Shopify
&lt;/h2&gt;

&lt;p&gt;2018년 라이센스의 변경으로 Shopify와 관련된 앱을 만들 때 사용할 수 있다. 사용은 못해도 참고하기 좋다.&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Shopify"&gt;
        Shopify
      &lt;/a&gt; / &lt;a href="https://github.com/Shopify/polaris"&gt;
        polaris
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Shopify’s design system to help us work together to build a great experience for all of our merchants.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div&gt;
  &lt;a href="https://polaris.shopify.com" rel="nofollow"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IE0FSADK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/Shopify/polaris/raw/main/documentation/readme.png%3Fraw%3Dtrue" alt=""&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;h1&gt;
Polaris&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Build. Contribute. Evolve. Shape the merchant experience for Shopify’s core product, the admin.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://storybook.polaris.shopify.com" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/3baccf1c60781d3d97649a18244fd894aca982281d0d4e86363e647f42c1a19d/68747470733a2f2f736869656c64732e696f2f62616467652f73746f7279626f6f6b2d77686974653f6c6f676f3d73746f7279626f6f6b267374796c653d666c6174" alt="storybook"&gt;&lt;/a&gt; &lt;a href="https://www.npmjs.com/package/@shopify/polaris" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/0d4ee812239422bb8d348cac212df93d310c9d24940c3a8855708d538458f1db/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f4073686f706966792f706f6c617269732e7376673f6c6162656c3d4073686f706966792f706f6c61726973" alt="npm version"&gt;&lt;/a&gt; &lt;a href="https://github.com/Shopify/polaris/actions?query=branch%3Amain"&gt;&lt;img src="https://github.com/shopify/polaris/workflows/CI/badge.svg" alt="CI"&gt;&lt;/a&gt; &lt;a href="https://github.com/Shopify/polaris/blob/main/.github/CONTRIBUTING.md#your-first-pull-request"&gt;&lt;img src="https://camo.githubusercontent.com/b0ad703a46e8b249ef2a969ab95b2cb361a2866ecb8fe18495a2229f5847102d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5052732d77656c636f6d652d627269676874677265656e2e737667" alt="PRs Welcome"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;Owner&lt;/th&gt;
&lt;th&gt;Help&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Active&lt;/td&gt;
&lt;td&gt;@shopify/polaris&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/Shopify/polaris/issues/new"&gt;New issue&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h2&gt;
About this repo&lt;/h2&gt;
&lt;p&gt;The shopify/polaris repository is an &lt;a href="https://www.youtube.com/watch?v=qORYO0atB6g" rel="nofollow"&gt;intergalactic&lt;/a&gt; monorepo made up of NPM packages, VSCode extensions, and websites.&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;polaris/
├── documentation               &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Documentation for working in the monorepo&lt;/span&gt;
├── polaris-for-vscode          &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; VS Code extension for Polaris&lt;/span&gt;
├── polaris-icons               &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Icons for Polaris&lt;/span&gt;
├── polaris-react               &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Components for @shopify/polaris package&lt;/span&gt;
├── polaris-tokens              &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Design tokens for Polaris&lt;/span&gt;
├── polaris.shopify.com         &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Documentation website&lt;/span&gt;
└── stylelint-polaris           &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Rules for custom property usage and mainline coverage&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
Commands&lt;/h2&gt;
&lt;h3&gt;
Install dependencies and build workspaces&lt;/h3&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;yarn &lt;span class="pl-k"&gt;&amp;amp;&amp;amp;&lt;/span&gt; yarn build&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
Run a command&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;One workspace&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Run commands from a selected workspace using &lt;a href="https://turborepo.org/docs/core-concepts/filtering" rel="nofollow"&gt;&lt;code&gt;turbo run &amp;lt;command&amp;gt; --filter=&amp;lt;workspace&amp;gt;...&lt;/code&gt;&lt;/a&gt; flag.&lt;/p&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Runs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;yarn turbo run dev --filter=@shopify/polaris&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Open the react component storybook&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;yarn turbo run dev --filter=polaris.shopify.com&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Open polaris.shopify.com NextJS site&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;All workspaces&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Run commands across all workspaces. This…&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/Shopify/polaris"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
⠀&lt;br&gt;
⠀
&lt;h2&gt;
  
  
  Primer / Github
&lt;/h2&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/primer"&gt;
        primer
      &lt;/a&gt; / &lt;a href="https://github.com/primer/react"&gt;
        react
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      An implementation of GitHub's Primer Design System using React
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/4608155/127241386-f11da52d-00d9-4366-b01c-6f4c1ebcf7f2.png"&gt;&lt;img width="300px" src="https://res.cloudinary.com/practicaldev/image/fetch/s--wPVo6twU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/4608155/127241386-f11da52d-00d9-4366-b01c-6f4c1ebcf7f2.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h1&gt;
Primer React&lt;/h1&gt;
&lt;p&gt;A React implementation of GitHub's Primer Design System&lt;/p&gt;
&lt;p&gt;
  &lt;a href="https://www.npmjs.com/package/@primer/react" rel="nofollow"&gt;
    &lt;img alt="" src="https://camo.githubusercontent.com/dea6ac2e102fb533ff0955616769c9590567e8e0a07893db9ad914c7739db658/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f407072696d65722f72656163742e737667"&gt;
  &lt;/a&gt;
  &lt;a href="https://github.com/primer/react/graphs/contributors"&gt;
    &lt;img src="https://camo.githubusercontent.com/c27c317ecf6162e5e765164b39452409e6e0780c685cf639ad74f25e93b1ab73/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6e7472696275746f72732f7072696d65722f72656163742e737667"&gt;
  &lt;/a&gt;
  &lt;a href="https://github.com/primer/react/commits/main"&gt;
    &lt;img alt="" src="https://camo.githubusercontent.com/a4064e416bfed9818c4b36520d0f5c4b5f5187c113e870a8cb1b2263c0c7f9fd/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f7072696d65722f72656163742e737667"&gt;
  &lt;/a&gt;
  &lt;a href="https://github.com/primer/react/blob/main/LICENSE"&gt;
    &lt;img src="https://camo.githubusercontent.com/10f7ae537a7972539101750618d37858cf1d8aa6f2cad76a48befbbf9d046976/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f7072696d65722f72656163742e737667" alt=""&gt;
  &lt;/a&gt;
&lt;/p&gt;
&lt;h2&gt;
Documentation&lt;/h2&gt;
&lt;p&gt;Our documentation site lives at &lt;a href="https://primer.style/react" rel="nofollow"&gt;primer.style/react&lt;/a&gt;. You'll be able to find detailed documentation on getting started, all of the components, our theme, our principles, and more.&lt;/p&gt;
&lt;h2&gt;
Installation&lt;/h2&gt;
&lt;p&gt;Install &lt;a class="mentioned-user" href="https://dev.to/primer"&gt;@primer&lt;/a&gt;/react in your project with your package manager of choice:&lt;/p&gt;
&lt;div class="highlight highlight-text-shell-session notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c1"&gt;npm install &lt;a class="mentioned-user" href="https://dev.to/primer"&gt;@primer&lt;/a&gt;/react&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-text-shell-session notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c1"&gt;yarn add &lt;a class="mentioned-user" href="https://dev.to/primer"&gt;@primer&lt;/a&gt;/react&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
Roadmap&lt;/h2&gt;
&lt;p&gt;You can track our roadmap progress in the &lt;a href="https://github.com/primer/react/projects/3"&gt;Roadmap Project Board&lt;/a&gt;, see more detail in the &lt;a href="https://github.com/primer/react/discussions?discussions_q=%5BRoadmap%5D"&gt;quarterly planning Discussions&lt;/a&gt;, and find a &lt;a href="https://github.com/primer/react/discussions/997"&gt;list of all the current epic tracking issues&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
Contributing&lt;/h2&gt;
&lt;p&gt;We love collaborating with folks inside and outside of GitHub and welcome contributions!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;👉 See &lt;a href="https://github.com/primer/reactcontributor-docs/CONTRIBUTING.md"&gt;the contributing docs&lt;/a&gt; for more info on code style, testing, coverage, and troubleshooting.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
New Component Proposals&lt;/h2&gt;
&lt;p&gt;We welcome and encourage new component proposals from internal GitHub teams! Our best work comes from collaborating directly with the teams using Primer React Components in their projects…&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/primer/react"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
⠀&lt;br&gt;
⠀
&lt;h2&gt;
  
  
  Rainbow
&lt;/h2&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/nexxtway"&gt;
        nexxtway
      &lt;/a&gt; / &lt;a href="https://github.com/nexxtway/react-rainbow"&gt;
        react-rainbow
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🌈  React Rainbow Components. Build your web application in a snap.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;br&gt;
&lt;p&gt;
  &lt;a href="https://react-rainbow.firebaseapp.com/" rel="nofollow"&gt;&lt;img width="15%" src="https://res.cloudinary.com/practicaldev/image/fetch/s--RD7VKYPh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/nexxtway/react-rainbow/master/assets/images/rainbow-logo.svg%3Fsanitize%3Dtrue" alt="React Rainbow Component logo"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h2&gt;
&lt;a href="https://react-rainbow.firebaseapp.com/" rel="nofollow"&gt;React Rainbow&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;
React Rainbow is a collection of components that will reliably help you build your application in a snap. Give it a hack and let us know what you think
&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;&lt;a href="https://circleci.com/gh/nexxtway/react-rainbow/tree/master" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/735aaf13ac12c01b2aec10df4f70992f75ad412e395e97e4928b275bf8bdc8d9/68747470733a2f2f636972636c6563692e636f6d2f67682f6e657878747761792f72656163742d7261696e626f772f747265652f6d61737465722e7376673f7374796c653d737667" alt="CircleCI"&gt;&lt;/a&gt;
&lt;a href="https://badge.fury.io/js/react-rainbow-components" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/0179bfa7a5081c5f70e4d697fe1d2707fc621774267ad0e15a8b2556aebc9a89/68747470733a2f2f62616467652e667572792e696f2f6a732f72656163742d7261696e626f772d636f6d706f6e656e74732e737667" alt="npm version"&gt;&lt;/a&gt;
&lt;a href="https://bit.dev/nexxtway/react-rainbow?namespaces=__global__" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/440c95f3403da9531410640dbcab5698219213347123295240324f66a47e9b00/68747470733a2f2f696d672e736869656c64732e696f2f6269742f636f6c6c656374696f6e2f746f74616c2d636f6d706f6e656e74732f6e657878747761792f72656163742d7261696e626f773f636f6c6f723d253233366335636537" alt="components"&gt;&lt;/a&gt;
&lt;a href="https://prettier.io/" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/48a41f43affa2e6253d6a48e0ee662ec53ce13c46442ac815e81d36b6e6b434d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636f64655f7374796c652d70726574746965722d6666363962342e737667" alt="Prettier"&gt;&lt;/a&gt;
&lt;a href="https://snyk.io/test/github/nexxtway/react-rainbow" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/eb470bed607de0a4ddf645e00bd8118da274d95eea74e0c0596707522b78155c/68747470733a2f2f736e796b2e696f2f746573742f6769746875622f6e657878747761792f72656163742d7261696e626f772f62616467652e737667" alt="Known Vulnerabilities"&gt;&lt;/a&gt;
&lt;a href="https://coveralls.io/github/nexxtway/react-rainbow?branch=master" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/f4ee98d00776271790d18077e4ccef999d0b7310e06abc54dfcb2c806eb0c5f2/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f6e657878747761792f72656163742d7261696e626f772f62616467652e7376673f6272616e63683d6d6173746572" alt="Coverage Status"&gt;&lt;/a&gt;
&lt;a href="https://opensource.org/licenses/MIT" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/78f47a09877ba9d28da1887a93e5c3bc2efb309c1e910eb21135becd2998238a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667" alt="License: MIT"&gt;&lt;/a&gt;
&lt;a href="https://codeclimate.com/github/nexxtway/react-rainbow/maintainability" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/c72af58b3a1f27bf7044513482cfa87a4032bba11232ddff6e1b744d797f1432/68747470733a2f2f6170692e636f6465636c696d6174652e636f6d2f76312f6261646765732f65373163616633633037666135613062643863632f6d61696e7461696e6162696c697479" alt="Maintainability"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://cla-assistant.io/nexxtway/react-rainbow" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/47f4f53ad980d9e7adcb79537ccaca07cd9b09037caa6f6fe8fab816c392587f/68747470733a2f2f636c612d617373697374616e742e696f2f726561646d652f62616467652f6e657878747761792f72656163742d7261696e626f77" alt="CLA assistant"&gt;&lt;/a&gt;
&lt;a href="https://gitter.im/react-rainbow-components/community?source=orgpage" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/5dbac0213da25c445bd11f168587c11a200ba153ef3014e8408e462e410169b3/68747470733a2f2f6261646765732e6769747465722e696d2f4a6f696e253230436861742e737667" alt="Gitter"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;h3&gt;
✨ Features&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;90+ components built on top of React.&lt;/li&gt;
&lt;li&gt;Interactive Examples.&lt;/li&gt;
&lt;li&gt;First class testing.&lt;/li&gt;
&lt;li&gt;Wdio page objects.&lt;/li&gt;
&lt;li&gt;Redux-Form integration.&lt;/li&gt;
&lt;li&gt;We designed each component with i18n in mind.&lt;/li&gt;
&lt;li&gt;Accessibility is part of our definition of done.&lt;/li&gt;
&lt;li&gt;Components with out-of-the-box Typescript typing.&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
&lt;h3&gt;
🖥 Environment Support&lt;/h3&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href="http://godban.github.io/browsers-support-badges/" rel="nofollow"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4PBpzKRy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png" alt="Firefox" width="24px" height="24px"&gt;&lt;/a&gt;&lt;br&gt;Firefox&lt;/th&gt;
&lt;th&gt;
&lt;a href="http://godban.github.io/browsers-support-badges/" rel="nofollow"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MiE_onvl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png" alt="Chrome" width="24px" height="24px"&gt;&lt;/a&gt;&lt;br&gt;Chrome&lt;/th&gt;
&lt;th&gt;
&lt;a href="http://godban.github.io/browsers-support-badges/" rel="nofollow"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ik3llT7B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png" alt="Safari" width="24px" height="24px"&gt;&lt;/a&gt;&lt;br&gt;Safari&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;last 2 versions&lt;/td&gt;
&lt;td&gt;last 2 versions&lt;/td&gt;
&lt;td&gt;last 2 versions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;br&gt;
&lt;h3&gt;
📦 Installation&lt;/h3&gt;
&lt;p&gt;React Rainbow Components is available as an &lt;a href="https://www.npmjs.com/package/react-rainbow-components" rel="nofollow"&gt;npm package&lt;/a&gt;.&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;$ yarn add react-rainbow-components&lt;/pre&gt;

&lt;/div&gt;
&lt;h5&gt;
or&lt;/h5&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;$ npm install react-rainbow-components --save&lt;/pre&gt;

&lt;/div&gt;
&lt;br&gt;
&lt;h3&gt;
⌨️ Usage&lt;/h3&gt;
&lt;p&gt;Here is a quick example to get you started. &lt;strong&gt;It's all you need&lt;/strong&gt;:&lt;/p&gt;
&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-v"&gt;React&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'react'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-v"&gt;ReactDOM&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'react-dom'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-v"&gt;Button&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'react-rainbow-components'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;function&lt;/span&gt; &lt;span class="pl-v"&gt;App&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;
    &lt;span class="pl-k"&gt;return&lt;/span&gt; &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;Button&lt;/span&gt; &lt;span class="pl-c1"&gt;label&lt;/span&gt;&lt;/pre&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/nexxtway/react-rainbow"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
⠀&lt;br&gt;
⠀
&lt;h2&gt;
  
  
  React95
&lt;/h2&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/react95-io"&gt;
        react95-io
      &lt;/a&gt; / &lt;a href="https://github.com/react95-io/React95"&gt;
        React95
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🌈🕹  Windows 95 style UI component library for React
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
React95&lt;/h1&gt;
&lt;p&gt;
  &lt;a href="https://www.npmjs.com/package/react95" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/c4af5cb5a53fb97f42a817f1b9ba5904ab10b8f9955c4a99eef2ea01f9475833/68747470733a2f2f666c61742e62616467656e2e6e65742f6e706d2f64742f72656163743935" alt="NPM"&gt;&lt;/a&gt;
  &lt;a href="https://github.com/arturbien/React95/actions/workflows/release.yml"&gt;&lt;img src="https://github.com/arturbien/React95/actions/workflows/release.yml/badge.svg" alt="release status"&gt;&lt;/a&gt;
  &lt;a href="https://www.npmjs.com/package/react95" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/2ed241f68dfb8e5897a015ff5764b0d955cafe75e633d1347507d9072b00b686/68747470733a2f2f666c61742e62616467656e2e6e65742f6e706d2f762f72656163743935" alt="React95 version"&gt;&lt;/a&gt;
  &lt;a href="https://www.npmjs.com/package/react95" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/eedbf1c38684600c2609835c45c4a312933e1fe60c83700cc646cdf2b4ced0ed/68747470733a2f2f666c61742e62616467656e2e6e65742f6e706d2f6c6963656e73652f72656163743935" alt="React95 license"&gt;&lt;/a&gt;
  &lt;a href="https://twitter.com/intent/follow?screen_name=react95_io" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/ddda941d8eafe89289bee938c670aeea942d35584be40dd70557aaa9749b61f3/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f726561637439355f696f" alt="React95 license"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h3&gt;
  &lt;a href="https://storybook.react95.io/?path=/story/window--default" rel="nofollow"&gt;Components&lt;/a&gt; -
  &lt;a href="https://coins95.web.app/" rel="nofollow"&gt;Demo app&lt;/a&gt; -
  &lt;a href="https://github.com/react95-io/react95-native"&gt;React Native&lt;/a&gt; -
  &lt;a href="https://join.slack.com/t/react95/shared_invite/enQtOTA1NzEyNjAyNTc4LWYxZjU3NWRiMWJlMGJiMjhkNzE2MDA3ZmZjZDc1YmY0ODdlZjMwZDA1NWJiYWExYmY1NTJmNmE4OWVjNWFhMTE" rel="nofollow"&gt;Slack&lt;/a&gt; -
  &lt;a href="https://www.paypal.me/react95" rel="nofollow"&gt;PayPal donation 💰&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;
  &lt;b&gt;Refreshed&lt;/b&gt; Windows95 UI components for your modern React apps. &lt;br&gt; Built with styled-components 💅&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/28541613/81947711-28b05580-9601-11ea-964a-c3a6de998496.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ya7xUWB8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/28541613/81947711-28b05580-9601-11ea-964a-c3a6de998496.png" alt="hero"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
Support&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.patreon.com/arturbien" rel="nofollow"&gt;Become a backer or sponsor on Patreon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.paypal.me/react95" rel="nofollow"&gt;One-time donation via PayPal&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Getting Started&lt;/h2&gt;
&lt;p&gt;First, install component library and styled-components in your project directory:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; yarn&lt;/span&gt;
$ yarn add react95 styled-components
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; npm&lt;/span&gt;
$ npm install react95 styled-components&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Apply style reset, wrap your app with ThemeProvider with theme of your choice... and you are ready to go! 🚀&lt;/p&gt;
&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-v"&gt;React&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'react'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-s1"&gt;createGlobalStyle&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-v"&gt;ThemeProvider&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'styled-components'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-v"&gt;MenuList&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-v"&gt;MenuListItem&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-v"&gt;Separator&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s1"&gt;styleReset&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'react95'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-c"&gt;// pick a theme of your choice&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-s1"&gt;original&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'react95/dist/themes/original'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-c"&gt;// original Windows95 font (optionally)&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-s1"&gt;ms_sans_serif&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'react95/dist/fonts/ms_sans_serif.woff2'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-s1"&gt;ms_sans_serif_bold&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'react95/dist/fonts/ms_sans_serif_bold.woff2'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;

&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-v"&gt;GlobalStyles&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-en"&gt;createGlobalStyle&lt;/span&gt;&lt;span class="pl-s"&gt;`&lt;/span&gt;
&lt;span class="pl-s"&gt;  &lt;span class="pl-s1"&gt;&lt;span class="pl-kos"&gt;${&lt;/span&gt;&lt;span class="pl-s1"&gt;styleReset&lt;/span&gt;&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="pl-s"&gt;  @font-face {&lt;/span&gt;
&lt;span class="pl-s"&gt;    font-family:&lt;/span&gt;&lt;/pre&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/react95-io/React95"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
⠀&lt;br&gt;
⠀
&lt;h2&gt;
  
  
  Ring UI / Jetbrains
&lt;/h2&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/JetBrains"&gt;
        JetBrains
      &lt;/a&gt; / &lt;a href="https://github.com/JetBrains/ring-ui"&gt;
        ring-ui
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A collection of JetBrains Web UI components
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Ring UI — JetBrains Web UI components&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://jetbrains.github.io/ring-ui" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/415fa9e9d93b881e93e9702cba1239cf74c36edac9077cfdcf0718bfd6ffe8a9/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f73746f7279626f6f6b6a732f6272616e64406d61737465722f62616467652f62616467652d73746f7279626f6f6b2e737667" alt="Storybook"&gt;&lt;/a&gt; &lt;a href="https://teamcity.jetbrains.com/viewType.html?buildTypeId=JetBrainsUi_RingUi_GeminiTests&amp;amp;tab=buildTypeStatusDiv" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/f45842ba43c11481fe38f5bafa521dd0872ac392a6b25e1ef5ee4b1d162c53df/68747470733a2f2f7465616d636974792e6a6574627261696e732e636f6d2f6170702f726573742f6275696c64732f6275696c64547970653a4a6574427261696e7355695f52696e6755695f47656d696e6954657374732f73746174757349636f6e2e737667" alt="Build Status"&gt;&lt;/a&gt; &lt;a href="https://automate.browserstack.com/public-build/elc3S1IvemtCdHBjcHdmQzdRcm9xYWxTakFvSWFqT2lrOGtrTjZRbFVRaz0tLXE0VnpyUjRqSk1Xc2xIQ1NnL1pkbnc9PQ==--f96a555ca0fe3ce50d0770cb975be0f3b6a6cf79" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/e5c7c3bf16871713e466e739919af9767448ae1c629a3f1515ee5de532cf8b4e/68747470733a2f2f6175746f6d6174652e62726f77736572737461636b2e636f6d2f62616467652e7376673f62616467655f6b65793d656c633353314976656d74436448426a6348646d517a6452636d397859577854616b46765357467154326c724f477472546a5a5262465652617a30744c584530566e7079556a5271536b31586332784951314e6e4c31706b626e633950513d3d2d2d66393661353535636130666533636535306430373730636239373562653066336236613663663739" alt="Storybook"&gt;&lt;/a&gt; &lt;a href="https://www.npmjs.com/package/@jetbrains/ring-ui" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/3b5fa2f4698ee34bf060a57183932a2020cb2d57a53c5fab83e591b7d17b86e4/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f406a6574627261696e732f72696e672d75692e737667" alt="NPM version"&gt;&lt;/a&gt; &lt;a href="https://www.npmjs.com/package/@jetbrains/ring-ui" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/82f419e99497e86d1d536fb0242f15dbf758413d7bd4f9b7cdcf208ed4c38d2d/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f64742f406a6574627261696e732f72696e672d75692e737667" alt="NPM downloads"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/50846ec406bb3478f0eb9a94d78bc6f042f4de44c4830385f8e5d462edf01abe/68747470733a2f2f6a622e67672f6261646765732f6f6666696369616c2d666c61742d7371756172652e737667" alt="official JetBrains project"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This collection of UI components aims to provide all the necessary building blocks for web-based products built inside JetBrains, as well as third-party plugins developed for JetBrains' products.&lt;/p&gt;
&lt;h2&gt;
Try now&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Try the &lt;a href="https://codesandbox.io/s/ring-ui-sandbox-wrigs" rel="nofollow"&gt;codesandbox&lt;/a&gt;, based on &lt;code&gt;create-react-app&lt;/code&gt; tooling, to see and try the UI components&lt;/li&gt;
&lt;li&gt;Check out &lt;a href="https://jetbrains.github.io/ring-ui/master/index.html" rel="nofollow"&gt;list of examples&lt;/a&gt; for each component&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Installation&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;npm install @jetbrains/ring-ui&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;
Quick start&lt;/h3&gt;
&lt;p&gt;The easiest way is to import necessary components as ES modules:&lt;/p&gt;
&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;// You need to import RingUI styles once&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-s"&gt;'@jetbrains/ring-ui/dist/style.css'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;

&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-s1"&gt;alertService&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'@jetbrains/ring-ui/dist/alert-service/alert-service'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-v"&gt;Button&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'@jetbrains/ring-ui/dist/button/button'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;

...

&lt;span class="pl-k"&gt;export&lt;/span&gt; &lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-v"&gt;Demo&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt; &lt;span class="pl-c1"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;
  &lt;span class="pl-k"&gt;return&lt;/span&gt; &lt;span class="pl-kos"&gt;(&lt;/span&gt;
    &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;Button&lt;/span&gt; &lt;span class="pl-c1"&gt;onClick&lt;/span&gt;&lt;span class="pl-c1"&gt;=&lt;/span&gt;&lt;span class="pl-kos"&gt;{&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt; &lt;span class="pl-c1"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="pl-s1"&gt;alertService&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;successMessage&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'Hello world'&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;
      Click me
    &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-c1"&gt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;Button&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;The bundle size will depend on the amount of components you imported.&lt;/p&gt;
&lt;h3&gt;
Building Ring&lt;/h3&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/JetBrains/ring-ui"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
⠀&lt;br&gt;
⠀
&lt;h2&gt;
  
  
  Semantic
&lt;/h2&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Semantic-Org"&gt;
        Semantic-Org
      &lt;/a&gt; / &lt;a href="https://github.com/Semantic-Org/Semantic-UI-React"&gt;
        Semantic-UI-React
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      The official Semantic-UI-React integration
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a href="https://react.semantic-ui.com" rel="nofollow"&gt;
    &lt;img height="128" width="128" src="https://res.cloudinary.com/practicaldev/image/fetch/s--F2vjrjHJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/Semantic-Org/Semantic-UI-React/raw/master/docs/public/logo.png"&gt;
  &lt;/a&gt;
&lt;/p&gt;
&lt;h1&gt;
  &lt;a href="https://react.semantic-ui.com/" rel="nofollow"&gt;Semantic UI React&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;
  &lt;a href="https://gitter.im/Semantic-Org/Semantic-UI-React" rel="nofollow"&gt;
    &lt;img alt="Gitter" src="https://camo.githubusercontent.com/589db387b03f0e972c553b5eb2f5afac240e2a91a81881333d0df40e4dcb69f3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6769747465722d6a6f696e5f636861742d3164636537332e7376673f6c6f676f3d64617461253341696d616765253246737667253242786d6c2533426261736536342532435044393462577767646d567963326c76626a30694d5334774969426c626d4e765a476c755a7a3069565652474c546769507a344e436a787a646d636765473173626e4d39496d6830644841364c79393364336375647a4d7562334a6e4c7a49774d44417663335a6e496a3438636d566a644342345053497749694235505349314969426d615778735053496a5a6d5a6d4969423361575230614430694d534967614756705a3268305053493149693825324250484a6c59335167654430694d694967655430694e6949675a6d6c736244306949325a6d5a69496764326c6b64476739496a45694947686c6157646f644430694e794976506a78795a574e3049486739496a516949486b39496a596949475a706247773949694e6d5a6d5969494864705a48526f505349784969426f5a576c6e61485139496a63694c7a3438636d566a644342345053493249694235505349324969426d615778735053496a5a6d5a6d4969423361575230614430694d534967614756705a326830505349304969382532425043397a646d63253242266c6f676f57696474683d38267374796c653d666c61742d737175617265266d61784167653d32353932303030"&gt;
  &lt;/a&gt;
  &lt;a href="https://circleci.com/gh/Semantic-Org/Semantic-UI-React/tree/master" rel="nofollow"&gt;
    &lt;img alt="Circle" src="https://camo.githubusercontent.com/71d2f0d6fe0911067146703e727199707fce0291c18990ce010b55a093624788/68747470733a2f2f696d672e736869656c64732e696f2f636972636c6563692f70726f6a6563742f6769746875622f53656d616e7469632d4f72672f53656d616e7469632d55492d52656163742f6d61737465722e7376673f7374796c653d666c61742d737175617265"&gt;
  &lt;/a&gt;
  &lt;a href="https://codecov.io/gh/Semantic-Org/Semantic-UI-React" rel="nofollow"&gt;
    &lt;img alt="Codecov" src="https://camo.githubusercontent.com/e9ab517025531fcde3ee85df97d9bbae78b747c1acc4927eee17f0baaa1e4564/68747470733a2f2f696d672e736869656c64732e696f2f636f6465636f762f632f6769746875622f53656d616e7469632d4f72672f53656d616e7469632d55492d52656163742f6d61737465722e7376673f7374796c653d666c61742d737175617265"&gt;
  &lt;/a&gt;
  &lt;a href="https://david-dm.org/Semantic-Org/Semantic-UI-React" rel="nofollow"&gt;
    &lt;img alt="David" src="https://camo.githubusercontent.com/01aec0fb9bf1263232b1fd518e09c1415e210cced8edcb90c904733424bd8e18/68747470733a2f2f696d672e736869656c64732e696f2f64617669642f53656d616e7469632d4f72672f53656d616e7469632d55492d52656163742e7376673f7374796c653d666c61742d737175617265"&gt;
  &lt;/a&gt;
  &lt;a href="https://www.npmjs.com/package/semantic-ui-react" rel="nofollow"&gt;
    &lt;img alt="npm" src="https://camo.githubusercontent.com/0b09b421b3a7ebea0549c6c40f9e981d4a4454b8e13ae95fde4829fa0e35326b/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f73656d616e7469632d75692d72656163742e7376673f7374796c653d666c61742d737175617265"&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
Installation &amp;amp; Usage&lt;/h2&gt;

&lt;p&gt;See the &lt;a href="https://react.semantic-ui.com/" rel="nofollow"&gt;&lt;strong&gt;Documentation&lt;/strong&gt;&lt;/a&gt; for an introduction, usage information, and examples.&lt;/p&gt;

&lt;h2&gt;
Built With&lt;/h2&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/Semantic-Org/Semantic-UI-React/raw/master/docs/public/amazon-logo.png"&gt;&lt;img height="50" src="https://res.cloudinary.com/practicaldev/image/fetch/s--9tnyplV6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/Semantic-Org/Semantic-UI-React/raw/master/docs/public/amazon-logo.png"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/Semantic-Org/Semantic-UI-React/raw/master/docs/public/netflix-logo.png"&gt;&lt;img height="50" src="https://res.cloudinary.com/practicaldev/image/fetch/s--taONb20t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/Semantic-Org/Semantic-UI-React/raw/master/docs/public/netflix-logo.png"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/Semantic-Org/Semantic-UI-React/raw/master/docs/public/microsoft-logo.png"&gt;&lt;img height="50" src="https://res.cloudinary.com/practicaldev/image/fetch/s--CL_jQcCt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/Semantic-Org/Semantic-UI-React/raw/master/docs/public/microsoft-logo.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon Publishing — the full-service publisher of Amazon — &lt;a href="https://amazonpublishing.amazon.com" rel="nofollow"&gt;APub.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Netflix's Edge Developer Experience team's numerous &lt;a href="https://github.com/Semantic-Org/Semantic-UI-React/issues/1604"&gt;internal apps&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Netflix's &lt;a href="https://github.com/Netflix/flamescope"&gt;flamescope&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft's &lt;a href="https://products.office.com/en-US/microsoft-teams/group-chat-software" rel="nofollow"&gt;Teams&lt;/a&gt; prototyping&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
Example Projects&lt;/h2&gt;

&lt;p&gt;This is a listing of example projects and guides that will help you integrate Semantic UI React into your new or existing projects.&lt;/p&gt;


  Show projects
&lt;h3&gt;
&lt;a href="https://github.com/wyc/semantic-ui-react-todos"&gt;semantic-ui-react-todos&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;Semantic UI React implementation of &lt;a href="https://github.com/reactjs/redux/tree/master/examples/todos"&gt;react-redux Todo List&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;
FAQ&lt;/h2&gt;


  &lt;b&gt;Can I use custom Icons?&lt;/b&gt;
  Yes.  Just use &lt;code&gt;&amp;lt;Icon className='my-icon' /&amp;gt;&lt;/code&gt; instead of &lt;code&gt;&amp;lt;Icon name='my-icon' /&amp;gt;&lt;/code&gt;.  See &lt;a class="issue-link js-issue-link" href="https://github.com/Semantic-Org/Semantic-UI-React/issues/931#issuecomment-263643210"&gt;#931 (comment)&lt;/a&gt; for detailed info and examples.



  &lt;b&gt;How do I setup CSS?&lt;/b&gt;
&lt;p&gt;There are several options. Refer to our doc on &lt;a href="https://react.semantic-ui.com/usage#css" rel="nofollow"&gt;CSS Usage&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;&lt;br&gt;
  &lt;b&gt;Can I use a custom CSS theme?&lt;/b&gt;&lt;br&gt;
  Yes.  Semantic UI React includes components that render valid Semantic UI HTML, no CSS is included.  This allows you to load any…&lt;/p&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/Semantic-Org/Semantic-UI-React"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


</description>
      <category>javascript</category>
      <category>react</category>
      <category>css</category>
    </item>
    <item>
      <title>2의 보수, 컴퓨터가 음수를 표현하는 방법</title>
      <dc:creator>Jinseok</dc:creator>
      <pubDate>Fri, 30 Jul 2021 01:12:38 +0000</pubDate>
      <link>https://dev.to/simjinseok/2-40e4</link>
      <guid>https://dev.to/simjinseok/2-40e4</guid>
      <description>&lt;p&gt;우리는 숫자 앞에 - 기호를 표시함으로 쉽게 음수를 표현할 수 있다. 하지만 0과 1뿐인 컴퓨터에선 어떻게 표현할 수 있을까?&lt;/p&gt;

&lt;p&gt;음수인지 양수인지 구별하기 위한 부호 비트를 살펴보고 단점을 보완하기 위한 1의 보수와 2의 보수를 살펴봤다.&lt;br&gt;
​&lt;br&gt;
☀︎ (2)는 2진수를 의미함&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;/p&gt;

&lt;h2&gt;
  
  
  부호 비트
&lt;/h2&gt;

&lt;p&gt;sign bit&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;가장 왼쪽의 비트&lt;/strong&gt;&lt;sup&gt;MSB&lt;/sup&gt;를 부호로 사용해 음수를 표현하는 방식이다. 0(2)이면 양수, 1(2)이면 음수임을 뜻한다. 4비트 시스템을 예로 들었을 때 0010(2)은 2이고 1010(2)는 -2이 된다.&lt;/p&gt;

&lt;p&gt;숫자를 표현하기 위한 비트가 하나 줄었다는 단점이 있다. C언어에서 unsigned가 붙은 자료형이 붙지 않은 자료형에 비해 월등히 큰 숫자를 사용할 수 있는 게 그 이유다.&lt;/p&gt;

&lt;p&gt;그런데 다른 문제가 생겼다. 부호를 사용했을 때 0010(2) + 1010(2)의 결과는 무엇일까? 0이 돼야 한다. 하지만 1100(2)으로 -4라는 결괏값이 나온다.&lt;/p&gt;

&lt;p&gt;그럼 0(2)일 땐 더하고 1(2)일 땐 빼면 안 될까? 생각할 수 있다. 그럼 부호 비트가 0(2)일 때와 1(2)일 때 각각 다른 회로를 사용해야 하는데, 단순하게 생각해 보면 덧셈이라는 행위가 2배로 복잡해진다.&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;/p&gt;

&lt;h2&gt;
  
  
  1의 보수
&lt;/h2&gt;

&lt;p&gt;one's complement&lt;/p&gt;

&lt;p&gt;그런데 누군가 기발한 생각을 했다. 각 비트를 뒤집으면(0(2)은 1(2)이 되고 1(2)은 0(2)이 됨) 단순하게 구현할 수 있는 것이다.&lt;/p&gt;

&lt;p&gt;2를 예로 들어보면 0010(2)을 뒤집어 1101(2)로 -2를 표현할 수 있다. 둘을 더하면 1111(2)로 숫자 비트만 뒤집으면 000(2)이 되므로 0이라는 결과를 확인할 수 있다.​&lt;/p&gt;

&lt;p&gt;0은 0인데 부호 비트가 1이니 -0이라는 의미심장한 숫자가 등장하게 된다. 게다가 덧셈이 이상한 경우도 등장한다. 0010(2)와 1110(2)를 더하면 2 + -1이므로 1이라는 결과가 나와야 하는데 0000(2), 즉 0이라는 결과가 나온다. &lt;/p&gt;

&lt;p&gt;이 문제를 해결하기 위해선 MSB에서 올림이 발생했을 때 &lt;strong&gt;가장 오른쪽 비트&lt;/strong&gt;&lt;sup&gt;LSB&lt;/sup&gt;로 전달해 주는 &lt;strong&gt;순환 올림&lt;/strong&gt;&lt;sup&gt;end-around carry&lt;/sup&gt;이 필요하다.​&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;/p&gt;

&lt;h2&gt;
  
  
  2의 보수
&lt;/h2&gt;

&lt;p&gt;two's complement&lt;/p&gt;

&lt;p&gt;이제 음수 표현의 최최최종 버전인 2의 보수가 등장한다. 1의 보수처럼 뒤집되 +1(2)을 해준다. -2를 표현하고 싶다면 0010(2)을 뒤집어 1101(2)로 만들고, 여기서 1(2)을 더하면 1110(2)이 된다.&lt;/p&gt;

&lt;p&gt;계산해보면 -0이라는 숫자가 없어진다. 1의 보수에선 1111(2)은 -0이었지만 2의 보수에선 000(2) + 1(2)과 같은 효과로 001(2), 즉 -1이 된다.​&lt;/p&gt;

&lt;p&gt;그럼으로 음수 숫자를 하나 더 표현할 수 있다. 4비트를 예로 들면 가장 큰 값은 0111(2)인 7이 되고, 가장 작은 값은 1111(2)로 -8이 된다.&lt;/p&gt;

&lt;p&gt;게다가 순환 올림도 필요 없기 때문에 음수를 더했을 때도 문제가 없다(하나하나 직접 계산해보면 그 신기함을 경험할 수 있다).&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;br&gt;
🙌 1, 2의 의미는 무엇일까?&lt;/p&gt;

&lt;p&gt;1비트를 예로 들었을 때, 1(2)을 1의 보수 취한다는 것은 1(2) - 1(2)와 같다. 2의 보수를 취한다는 것은 10(2) - 1(2)으로 비트 단위가 달라지는 걸 확인할 수 있다.&lt;/p&gt;

&lt;p&gt;여기서 1(2)은 1(10)이고 10(2)은 2(10)인데, 이 모양을 본떠 이름을 지었다고 볼 수 있다.&lt;br&gt;
⠀&lt;br&gt;
⠀&lt;/p&gt;

&lt;h3&gt;
  
  
  변환
&lt;/h3&gt;

&lt;p&gt;만약 8비트 시스템에서 부호 있는 정수를 나타낸 11111011(2)라는 숫자를 보게 되면 10진수로 어떻게 표현할 수 있을까? &lt;/p&gt;

&lt;p&gt;100000000(2) - 11111011(2) = 101(2) 여기서 부호 비트가 1이니 결과는 -5가 된다.&lt;/p&gt;

</description>
      <category>computerscience</category>
    </item>
    <item>
      <title>슬라이드 라이브러리 추천 5개 +</title>
      <dc:creator>Jinseok</dc:creator>
      <pubDate>Mon, 05 Jul 2021 11:50:27 +0000</pubDate>
      <link>https://dev.to/simjinseok/5-1k16</link>
      <guid>https://dev.to/simjinseok/5-1k16</guid>
      <description>&lt;p&gt;캐러셀&lt;sup&gt;carousel&lt;/sup&gt;인지 슬라이더&lt;sup&gt;slider&lt;/sup&gt;인지 통일된 이름은 없지만 특히 쇼핑몰의 메인에 꼭 필요한 라이브러리다.&lt;/p&gt;

&lt;p&gt;당시 다니던 회사에서 bxSlider를 개조해 별 문제 없이 사용하고 있었지만 제이쿼리&lt;sup&gt;jQuery&lt;/sup&gt; 의존성이 보기 싫었고 추가 기능이 필요했는데 소스를 어디서부터 건드려야할지 감이 오지 않았다. &lt;/p&gt;

&lt;p&gt;그래서 업데이트가 잘되고 가벼운 라이브러리를 찾아나섰고 십 수개의 라이브러리를 찾고 실험해보며 그 중 가장 괜찮았던 슬라이더를 소개한다.&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Swiper
&lt;/h2&gt;

&lt;p&gt;업데이트가 가장 활발하고 사용자 층도 두터워 보인다. 애니메이션이나 터치 작동도 자연스럽고 옵션도 다양하다.&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/nolimits4web"&gt;
        nolimits4web
      &lt;/a&gt; / &lt;a href="https://github.com/nolimits4web/swiper"&gt;
        swiper
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Most modern mobile touch slider with hardware accelerated transitions
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
초기엔 제이쿼리도 지원했지만 지금은 직접 개발한 dom7이라는 제이쿼리같은 라이브러리를 기본으로 사용한다. 차라리 많은 사이트에서 사용중인 제이쿼리로 만들었다면⋯ 하는 아쉬움이 남는다.&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;br&gt;
&lt;h2&gt;
  
  
  Embla Carousel
&lt;/h2&gt;

&lt;p&gt;상대적으로 최근에 생겼으며, 모던 자바스크립트에 소스 구조도 깔끔하다. 5.9kb의 적은 용량에 안정적이며 빠릿하다. &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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/davidjerleke"&gt;
        davidjerleke
      &lt;/a&gt; / &lt;a href="https://github.com/davidjerleke/embla-carousel"&gt;
        embla-carousel
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      www.embla-carousel.com — A lightweight carousel library with fluid motion and great swipe precision.
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
당시엔 리액트(React)도 지원한 유일한 라이브러리였다. 의존성(dependencies)이 없는 것도 특징이다. &lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;br&gt;
&lt;h2&gt;
  
  
  Flicking
&lt;/h2&gt;

&lt;p&gt;네이버에서 만들고 사용중인 라이브러리.&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/naver"&gt;
        naver
      &lt;/a&gt; / &lt;a href="https://github.com/naver/egjs-flicking"&gt;
        egjs-flicking
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🎠 ♻️ Everyday 30 million people experience. It's reliable, flexible and extendable carousel.
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;br&gt;
&lt;h2&gt;
  
  
  Slick
&lt;/h2&gt;

&lt;p&gt;그냥 유명해서 넣었다. 제이쿼리 시절 유명했던 것 같다.&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/kenwheeler"&gt;
        kenwheeler
      &lt;/a&gt; / &lt;a href="https://github.com/kenwheeler/slick"&gt;
        slick
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      the last carousel you'll ever need
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
유지보수는 이미 2년전부터 종료된 것 같지만 여전히 인기가 많아 놀랍다.&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;br&gt;
&lt;h2&gt;
  
  
  Flickity
&lt;/h2&gt;

&lt;p&gt;정말 심플하다. 상업적인 용도는 라이센스를 구입해야한다.&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/metafizzy"&gt;
        metafizzy
      &lt;/a&gt; / &lt;a href="https://github.com/metafizzy/flickity"&gt;
        flickity
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🍃 Touch, responsive, flickable carousels
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--q3-i-qlJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2bv76i961rn17qo51v9x.png" alt="캐러셀 라이브러리 인기 순위" width="800" height="274"&gt;&lt;br&gt;
npm 대신 CDN으로 긁어오거나 스태틱하게 제공하는 경우가 더 많을 것 같아 통계가 신뢰있다고 말하긴 어렵지만 이거 밖에 없다.&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;br&gt;
&lt;h2&gt;
  
  
  그 외
&lt;/h2&gt;
&lt;h3&gt;
  
  
  splide
&lt;/h3&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Splidejs"&gt;
        Splidejs
      &lt;/a&gt; / &lt;a href="https://github.com/Splidejs/splide"&gt;
        splide
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Splide is a lightweight, flexible and accessible slider/carousel written in TypeScript. No dependencies, no Lighthouse errors.
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
&lt;h3&gt;
  
  
  glidejs
&lt;/h3&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/glidejs"&gt;
        glidejs
      &lt;/a&gt; / &lt;a href="https://github.com/glidejs/glide"&gt;
        glide
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A dependency-free JavaScript ES6 slider and carousel. It’s lightweight, flexible and fast. Designed to slide. No less, no more
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
&lt;h3&gt;
  
  
  tiny-slide
&lt;/h3&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ganlanyuan"&gt;
        ganlanyuan
      &lt;/a&gt; / &lt;a href="https://github.com/ganlanyuan/tiny-slider"&gt;
        tiny-slider
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Vanilla javascript slider for all purposes.
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
&lt;h3&gt;
  
  
  bx-slider
&lt;/h3&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/stevenwanderski"&gt;
        stevenwanderski
      &lt;/a&gt; / &lt;a href="https://github.com/stevenwanderski/bxslider-4"&gt;
        bxslider-4
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Responsive jQuery content slider
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
&lt;h3&gt;
  
  
  siema
&lt;/h3&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--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/pawelgrzybek"&gt;
        pawelgrzybek
      &lt;/a&gt; / &lt;a href="https://github.com/pawelgrzybek/siema"&gt;
        siema
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Siema - Lightweight and simple carousel in pure JavaScript
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


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