From fd706543127ddbe6678e9bfbbe1287dad34f2df5 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Sat, 3 Oct 2020 00:24:10 -0400 Subject: [PATCH 01/46] Header: update breakpoints to new specs --- src/assets/billiard-ball-spec.svg | 30 +- src/assets/billiard-ball.svg | 42 +- src/assets/calculator-spec.svg | 433 +++++----- src/assets/calculator.svg | 1008 ++++++++++------------- src/assets/command-key-spec.svg | 28 +- src/assets/command-key.svg | 22 +- src/assets/cutting-mat-spec.svg | 46 +- src/assets/cutting-mat.svg | 42 +- src/assets/footer-mobile.svg | 34 + src/assets/marker-green.svg | 37 +- src/assets/marker-purple.svg | 35 +- src/assets/paperclips-footer.svg | 12 + src/assets/paperclips-header-mobile.svg | 12 + src/assets/paperclips-header.svg | 16 + src/assets/post-it.svg | 7 + src/assets/receipt-spec.svg | 135 ++- src/assets/receipt.svg | 93 +-- src/assets/tablet-spec.svg | 86 +- src/assets/tablet.svg | 55 +- src/assets/warning-spec.svg | 30 +- src/assets/warning.svg | 22 +- src/components/App/App.css | 1 - src/components/Header/Header.css | 266 +++--- src/components/Header/Header.tsx | 119 ++- 24 files changed, 1286 insertions(+), 1325 deletions(-) create mode 100644 src/assets/footer-mobile.svg create mode 100644 src/assets/paperclips-footer.svg create mode 100644 src/assets/paperclips-header-mobile.svg create mode 100644 src/assets/paperclips-header.svg create mode 100644 src/assets/post-it.svg diff --git a/src/assets/billiard-ball-spec.svg b/src/assets/billiard-ball-spec.svg index fb8cfdd..4d38f5e 100644 --- a/src/assets/billiard-ball-spec.svg +++ b/src/assets/billiard-ball-spec.svg @@ -1,18 +1,14 @@ - - - billiard-ball-spec - - - - - - - - - - - - - + + + + + + - \ No newline at end of file + + + + + + + diff --git a/src/assets/billiard-ball.svg b/src/assets/billiard-ball.svg index 609c8e8..90995db 100644 --- a/src/assets/billiard-ball.svg +++ b/src/assets/billiard-ball.svg @@ -1,25 +1,19 @@ - - - billiard-ball - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - \ No newline at end of file + + diff --git a/src/assets/calculator-spec.svg b/src/assets/calculator-spec.svg index 8d04bde..2cc2bcf 100644 --- a/src/assets/calculator-spec.svg +++ b/src/assets/calculator-spec.svg @@ -1,223 +1,212 @@ - - - calculator-spec - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/calculator.svg b/src/assets/calculator.svg index b439d48..c584c32 100644 --- a/src/assets/calculator.svg +++ b/src/assets/calculator.svg @@ -1,553 +1,457 @@ - - - calculator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/command-key-spec.svg b/src/assets/command-key-spec.svg index 3cd16fc..5946deb 100644 --- a/src/assets/command-key-spec.svg +++ b/src/assets/command-key-spec.svg @@ -1,18 +1,12 @@ - - - command-key-spec - - - - - - - - - - - - - + + + + + + + + + - \ No newline at end of file + + diff --git a/src/assets/command-key.svg b/src/assets/command-key.svg index 0d53716..ccad301 100644 --- a/src/assets/command-key.svg +++ b/src/assets/command-key.svg @@ -1,14 +1,8 @@ - - - command-key - - - - - - - - - - - \ No newline at end of file + + + + + + + + diff --git a/src/assets/cutting-mat-spec.svg b/src/assets/cutting-mat-spec.svg index 63ce2fe..43a3741 100644 --- a/src/assets/cutting-mat-spec.svg +++ b/src/assets/cutting-mat-spec.svg @@ -1,27 +1,21 @@ - - - cutting-mat-spec - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - \ No newline at end of file + + + + + + + + diff --git a/src/assets/cutting-mat.svg b/src/assets/cutting-mat.svg index f2fec9a..f7bf4cf 100644 --- a/src/assets/cutting-mat.svg +++ b/src/assets/cutting-mat.svg @@ -1,24 +1,20 @@ - - - cutting-mat - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - \ No newline at end of file + + + diff --git a/src/assets/footer-mobile.svg b/src/assets/footer-mobile.svg new file mode 100644 index 0000000..f04f994 --- /dev/null +++ b/src/assets/footer-mobile.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/marker-green.svg b/src/assets/marker-green.svg index 3bf1ad6..719b1af 100644 --- a/src/assets/marker-green.svg +++ b/src/assets/marker-green.svg @@ -1,22 +1,17 @@ - - - marker-green - - - - - - - - - - - - - - - - - + + + + + + + + + - \ No newline at end of file + + + + + + + diff --git a/src/assets/marker-purple.svg b/src/assets/marker-purple.svg index 8ac9479..1d795e2 100644 --- a/src/assets/marker-purple.svg +++ b/src/assets/marker-purple.svg @@ -1,22 +1,15 @@ - - - marker-purple - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - \ No newline at end of file + + diff --git a/src/assets/paperclips-footer.svg b/src/assets/paperclips-footer.svg new file mode 100644 index 0000000..6b6db87 --- /dev/null +++ b/src/assets/paperclips-footer.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/assets/paperclips-header-mobile.svg b/src/assets/paperclips-header-mobile.svg new file mode 100644 index 0000000..49bbde0 --- /dev/null +++ b/src/assets/paperclips-header-mobile.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/assets/paperclips-header.svg b/src/assets/paperclips-header.svg new file mode 100644 index 0000000..71e64dd --- /dev/null +++ b/src/assets/paperclips-header.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/post-it.svg b/src/assets/post-it.svg new file mode 100644 index 0000000..e5e1598 --- /dev/null +++ b/src/assets/post-it.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/receipt-spec.svg b/src/assets/receipt-spec.svg index 6bc85c1..0fa3da8 100644 --- a/src/assets/receipt-spec.svg +++ b/src/assets/receipt-spec.svg @@ -1,72 +1,67 @@ - - - receipt-spec - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - \ No newline at end of file + + + diff --git a/src/assets/receipt.svg b/src/assets/receipt.svg index 3e5888a..2420186 100644 --- a/src/assets/receipt.svg +++ b/src/assets/receipt.svg @@ -1,51 +1,44 @@ - - - receipt - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - \ No newline at end of file + + + + diff --git a/src/assets/tablet-spec.svg b/src/assets/tablet-spec.svg index 8adfa18..ee6b5c9 100644 --- a/src/assets/tablet-spec.svg +++ b/src/assets/tablet-spec.svg @@ -1,53 +1,35 @@ - - - tablet-spec - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/tablet.svg b/src/assets/tablet.svg index 9d72593..fbcfc13 100644 --- a/src/assets/tablet.svg +++ b/src/assets/tablet.svg @@ -1,36 +1,21 @@ - - - tablet - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - \ No newline at end of file + + + + diff --git a/src/assets/warning-spec.svg b/src/assets/warning-spec.svg index 896015a..002f936 100644 --- a/src/assets/warning-spec.svg +++ b/src/assets/warning-spec.svg @@ -1,19 +1,13 @@ - - - warning-spec - - - - - - - - - - - - - - + + + + + + + + + + - \ No newline at end of file + + diff --git a/src/assets/warning.svg b/src/assets/warning.svg index a27a787..cc0d86b 100644 --- a/src/assets/warning.svg +++ b/src/assets/warning.svg @@ -1,14 +1,8 @@ - - - warning - - - - - - - - - - - \ No newline at end of file + + + + + + + + diff --git a/src/components/App/App.css b/src/components/App/App.css index c5d49cb..c677734 100644 --- a/src/components/App/App.css +++ b/src/components/App/App.css @@ -44,7 +44,6 @@ button { button.main-button { height: 64px; - margin: 16px 24px 0 0; padding: 0 48px 0 40px; background-color: white; border-radius: 8px; diff --git a/src/components/Header/Header.css b/src/components/Header/Header.css index 4e20dbe..ad589c5 100644 --- a/src/components/Header/Header.css +++ b/src/components/Header/Header.css @@ -1,33 +1,81 @@ header { width: 100%; - height: 1434px; background-color: #ffd171; overflow: hidden; } -header img { - user-select: none; +.header-contents { + position: relative; + width: 100%; + height: 100%; + max-width: 1366px; + min-width: 360px; + margin: auto; +} + +.illustrations-top { + position: relative; +} + +.illustrations-bottom { + position: relative; +} + +.intro { + margin: 0 8%; + max-width: 666px; +} + +.intro h2 { + font-size: 40px; + line-height: 52px; + margin: 0 0 32px; +} + +.inspectable { + cursor: cell; +} + +.xray { + opacity: 1; + transition: opacity 200ms ease; +} + +.xray:hover { + opacity: 0; +} + +.button-container { + display: flex; + flex-wrap: wrap; + gap: 24px; } .links { display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: flex-start; - /* gap: 56px; */ - /* column-gap: 56px; */ - margin: 48px 0 32px; + flex-flow: column wrap; + align-content: flex-start; + align-items: flex-start; + justify-content: center; + column-gap: 72px; + margin: 56px 0 64px; + max-height: 144px; } -a.nav-link:not(:last-child) { - margin-right: 56px; +.links > div { + margin: 0 0 24px 0; + display: flex; + align-items: center; +} + +.links svg { + margin-right: 12px; } a.nav-link { text-decoration: none; position: relative; color: black; - margin-bottom: 16px; } a.nav-link:after { @@ -44,153 +92,155 @@ a.nav-link:hover:after { width: 100%; } -.inspectable { - cursor: cell; +#paperclips-three { + display: none; } -.xray { - opacity: 1; - transition: opacity 200ms ease; -} - -.xray:hover { - opacity: 0; -} - -.image-container { - position: relative; - width: 100%; - height: 100%; - margin: auto; -} - -.button-container { - display: flex; - flex-wrap: wrap; -} - -#cutting-mat { - position: absolute; - /* transform: translate(120px, 824px); */ -} - -#receipt { - position: absolute; - transform: translate(-138px, 190px); -} - -#calculator { - position: absolute; - transform: translate(800px, 112px); -} - -/* Illustrations remain at same layout up to 1024px */ -@media screen and (max-width: 1023px) { - .intro { - margin: 0 10%; - position: absolute; - transform: translate(0, 382px); - } - - .intro h2 { - font-size: 40px; - line-height: 52px; - margin-bottom: 32px; +@media screen and (max-width: 1239px) { + .illustrations-top { + height: 382px; } #marker-purple { position: absolute; - top: 0; - left: 0; - transform: translate(40px, -158px); + left: 28px; + top: -158px; } #billiard-ball { position: absolute; - top: 0; - left: 0; - transform: translate(130px, -98px); + left: 132px; + top: -98px; } #paperclips { position: absolute; - transform: translate(176px, 152px); + left: 110px; + top: 152px; } #warning { position: absolute; - top: 0; - left: 0; - transform: translate(398px, -116px); + left: 394px; + top: -304px; } #tablet { position: absolute; - transform: translate(672px, -900px); + left: 672px; + top: -900px; + } +} + +@media screen and (min-width: 720px) and (max-width: 1239px) { + .intro { + margin: 0 auto; + } + + .illustrations-bottom { + height: 612px; + } + + #cutting-mat { + position: absolute; + left: 96px; + } + + #receipt { + position: absolute; + left: -36px; + top: 190px; } #calculator { position: absolute; - transform: translate(534px, 240px); + left: 632px; + top: 170px; } } -@media screen and (min-width: 760px) and (max-width: 1023px) { - .intro h2 { - font-size: 40px; - line-height: 52px; - margin-bottom: 32px; - } -} - -@media screen and (min-width: 1024px) { - .image-container { - width: 1366px; - } - +@media screen and (min-width: 1240px) { .intro { - margin: 0; - width: 660px; - position: absolute; - transform: translate(144px, 386px); + margin: 0 auto 0 140px; } - .intro h2 { - font-size: 40px; - line-height: 50px; - margin-bottom: 32px; + .illustrations-top { + height: 386px; + } + + .illustrations-bottom { + height: 606px; } #marker-purple { position: absolute; - transform: translate(144px, -158px); - } - - #tablet { - position: absolute; - transform: translate(578px, -900px); + left: 144px; + top: -158px; } #billiard-ball { position: absolute; - transform: translate(918px, 360px); + left: 900px; + top: 400px; + } + + #paperclips { + display: none; + } + + #paperclips-three { + display: initial; + position: absolute; + left: 724px; + top: 694px; } #warning { position: absolute; - transform: translate(1184px, 424px); + left: 1170px; + top: 400px; } - #paperclips { + #tablet { position: absolute; - transform: translate(982px, 621px); + left: 578px; + top: -900px; + } + + #cutting-mat { + position: absolute; + left: 120px; + } + + #receipt { + position: absolute; + left: -16px; + top: 190px; + } + + #calculator { + position: absolute; + left: 924px; + top: 114px; } } -@media screen and (max-width: 759px) { +@media screen and (max-width: 719px) { .intro h2 { font-size: 28px; - line-height: 38px; - margin-bottom: 32px; + line-height: 40px; + } + + .illustrations-top { + height: 352px; + } + + .illustrations-bottom { + display: none; + } + + .links { + display: block; + max-height: initial; } } diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx index 091c685..0a8aacf 100644 --- a/src/components/Header/Header.tsx +++ b/src/components/Header/Header.tsx @@ -1,9 +1,14 @@ import React from "react"; -import { ArrowCircleUpRight, ArrowCircleDown } from "phosphor-react"; +import { + ArrowCircleUpRight, + ArrowCircleDown, + ArrowElbowDownRight, +} from "phosphor-react"; import "./Header.css"; import markerPurple from "../../assets/marker-purple.svg"; -import paperclips from "../../assets/paperclips.svg"; +import paperclips from "../../assets/paperclips-header-mobile.svg"; +import paperclipsThree from "../../assets/paperclips-header.svg"; import tablet from "../../assets/tablet.svg"; import tabletSpec from "../../assets/tablet-spec.svg"; import billiardBall from "../../assets/billiard-ball.svg"; @@ -34,9 +39,24 @@ const handleScrollToIcons = () => const Header: React.FC = () => { return (
-
- - +
+
+ + + + + + + + + + +

Phosphor is a flexible icon family for interfaces, presentations —  @@ -48,36 +68,67 @@ const Header: React.FC = () => { See the docs -

+
+
= () => { alt="" />
- - - - - - -
); From 77cdbb4774355399272fafa1f6657e6355b8d81b Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Sun, 4 Oct 2020 00:59:35 -0400 Subject: [PATCH 02/46] Header+Footer: further implement new spec --- src/components/App/App.css | 52 +++++ src/components/Footer/Footer.css | 272 +++++++++++---------------- src/components/Footer/Footer.tsx | 197 +++++++++++-------- src/components/Header/Header.css | 47 ----- src/components/IconGrid/IconGrid.css | 4 +- src/lib/icons.ts | 13 +- 6 files changed, 293 insertions(+), 292 deletions(-) diff --git a/src/components/App/App.css b/src/components/App/App.css index c677734..b80c244 100644 --- a/src/components/App/App.css +++ b/src/components/App/App.css @@ -59,6 +59,7 @@ button.main-button { transition: all 0.2s ease; cursor: pointer; user-select: none; + margin: 0 24px 24px 0; } button.main-button:active { @@ -71,10 +72,20 @@ button.main-button:focus { outline: none; } +/* button.main-button:not(:last-child) { + margin: 0 24px 24px 0; +} */ + button.main-button svg { margin-right: 12px; } +.button-container { + display: flex; + flex-wrap: wrap; + /* gap: 24px; */ +} + a.main-link { text-decoration: none; position: relative; @@ -94,3 +105,44 @@ a.main-link:after { a.main-link:hover:after { width: 0%; } + +.links { + display: flex; + flex-flow: column wrap; + align-content: flex-start; + align-items: flex-start; + justify-content: center; + column-gap: 72px; + margin: 32px 0 64px; + max-height: 144px; +} + +.links > div { + margin: 0 0 24px 0; + display: flex; + align-items: center; +} + +.links svg { + margin-right: 12px; +} + +a.nav-link { + text-decoration: none; + position: relative; + color: black; +} + +a.nav-link:after { + content: ""; + position: absolute; + bottom: -2px; + left: 0; + width: 0%; + border-bottom: 1px solid black; + transition: 0.2s; +} + +a.nav-link:hover:after { + width: 100%; +} diff --git a/src/components/Footer/Footer.css b/src/components/Footer/Footer.css index cfb1fec..36ed79f 100644 --- a/src/components/Footer/Footer.css +++ b/src/components/Footer/Footer.css @@ -1,14 +1,5 @@ footer { - width: 100%; - position: relative; background-color: #925bff; - overflow: hidden; -} - -.container { - width: 100%; - max-width: 1280px; - margin: auto; } #back-to-top-button { @@ -18,189 +9,146 @@ footer { border-radius: 50%; } -.outro-content { - /* pointer-events: none; */ - z-index: 2; +#back-to-top-button img { + pointer-events: none; } -@media screen and (max-width: 759px) { - .outro h2 { - font-size: 28px; - line-height: 38px; - margin-bottom: 32px; +.container { + position: relative; + width: 100%; + max-width: 1240px; + margin: auto; +} + +.outro { + position: relative; + max-width: 666px; + margin: 0 8% 0; + padding-top: 72px; + /* overflow: hidden; */ +} + +.outro p { + font-size: 28px; + line-height: 40px; + margin: 0 0 32px; +} + +footer .links { + margin: 56px 0 48px; +} + +.fine-print { + position: relative; + margin: 72px 0 0; + padding-bottom: 32px; + overflow: hidden; +} + +.fine-print p { + font-size: 16px; + line-height: 24px; +} + +.illustrations-footer { + display: none; + user-select: none; + pointer-events: none; +} + +@media screen and (max-width: 719px) { + #back-to-top-button { + position: sticky; + top: calc(100% - 64px); + float: right; + display: flex; + align-items: center; + justify-content: center; + width: 48px; + height: 48px; + padding: 0; + margin: 16px; + z-index: 1; } - .fine-print { - margin: 80px 0 0; - font-size: 16px; - line-height: 24px; + #back-to-top-button img { + width: 24px; + height: 24px; + } + + footer .links { + margin: 0 0 64px; + } + + #command { + display: none; } #marker-green { - position: absolute; - top: 0; - left: 0; - transform: translate(324px, 610px); + display: none; } - - #phone { - position: absolute; - top: 0; - left: 0; - transform: translate(-140px, 570px); + + .illustrations-footer { + max-width: 100%; + height: 440px; + display: flex; + justify-content: center; + overflow: hidden; } } -@media screen and (min-width: 760px) and (max-width: 1023px) { - .outro h2 { - font-size: 40px; - line-height: 50px; - margin-bottom: 32px; - } - - .fine-print { - margin: 80px 0 0; - font-size: 20px; - line-height: 30px; - } - - #marker-green { - position: absolute; - top: 0; - left: 0; - transform: translate(544px, 500px); - } - - #phone { - position: absolute; - top: 0; - left: 0; - transform: translate(80px, 480px); - } -} - -@media screen and (max-width: 1023px) { +@media screen and (min-width: 720px) { .outro { - position: relative; - margin: 292px 10% 292px; + margin: 0 auto; } - #back-to-top { + .fine-print { + margin-top: 96px; + padding-bottom: 96px; + } + + #back-to-top-button { position: absolute; - top: 0; - left: 0; - transform: translate(-48px, -196px); + left: 70px; + top: -56px; + } + + #marker-green { + position: absolute; + left: 678px; + top: -218px; } #command { position: absolute; - top: 0; - left: 0; - transform: translate(640px, -228px); + right: -16px; + top: 144px; } } - - -@media screen and (min-width: 1024px) and (max-width: 1279px) { - footer { - height: 920px; - } - +@media screen and (min-width: 1239px) { .outro { - position: relative; - width: 666px; - margin: 160px auto 324px; + margin-left: 462px; } - .outro h2 { - font-size: 40px; - line-height: 50px; - margin-bottom: 32px; - } - - .fine-print { - margin: 96px 0 0; - font-size: 20px; - line-height: 30px; - } - - #back-to-top { + #back-to-top-button { position: absolute; - top: 0; - left: 0; - transform: translate(-212px, 0); - } - - #marker-green { - position: absolute; - top: 0; - left: 0; - transform: translate(384px, 512px); - } - - #phone { - position: absolute; - top: 0; - left: 0; - transform: translate(-80px, 476px); + left: 190px; + top: 276px; } #command { position: absolute; - top: 0; - left: 0; - transform: translate(706px, 360px); + left: 732px; + top: 512px; } -} -@media screen and (min-width: 1280px) { - .outro { - width: 660px; - position: relative; - margin: 160px 0 120px 468px; + .illustrations-footer { + display: initial; + position: absolute; + left: -240px; + top: 656px; + height: 584px; + overflow: hidden; } - - .outro h2 { - font-size: 40px; - line-height: 50px; - margin-bottom: 32px; - } - - .fine-print { - margin: 96px 0 0; - font-size: 20px; - line-height: 30px; - } - - #back-to-top { - position: absolute; - top: 0; - left: 0; - transform: translate(-320px, -12px); - } - - #marker-green { - position: absolute; - top: 0; - left: 0; - /* x and y-translate is wrong in spec? */ - transform: translate(-208px, 270px); - } - - #phone { - position: absolute; - top: 0; - left: 0; - /* y-translate is wrong in spec? */ - transform: translate(-684px, 236px); - } - - #command { - position: absolute; - top: 0; - left: 0; - /* y-translate is wrong in spec? */ - transform: translate(744px, 352px); - } -} +} \ No newline at end of file diff --git a/src/components/Footer/Footer.tsx b/src/components/Footer/Footer.tsx index 1574349..e954303 100644 --- a/src/components/Footer/Footer.tsx +++ b/src/components/Footer/Footer.tsx @@ -1,62 +1,116 @@ -import React, { useState } from "react"; -import { motion } from "framer-motion"; -import { Heart } from "phosphor-react"; +import React from "react"; +import { ArrowElbowDownRight, Coffee, Heart } from "phosphor-react"; import uArrowUpLeft from "../../assets/u-arrow-up-left.svg"; import markerGreen from "../../assets/marker-green.svg"; -import phone from "../../assets/phone.svg"; -import phoneSpec from "../../assets/phone-spec.svg"; +import postIt from "../../assets/footer-mobile.svg"; import commandKey from "../../assets/command-key.svg"; import commandKeySpec from "../../assets/command-key-spec.svg"; import "./Footer.css"; type FooterProps = {}; -const variants = { - hidden: { opacity: 0, transition: { duration: 0.2 } }, - visible: { opacity: 1, transition: { duration: 0.2 } }, -}; - const Footer: React.FC = () => { - const [phoneHovered, setPhoneHovered] = useState(false); - return (
+
- {phoneHovered && ( - - )} - setPhoneHovered(true)} - onHoverEnd={() => setPhoneHovered(false)} - src={phone} + + -
-

- Phosphor is free and open source, licensed under{" "} +
+
+ - GNU GPL-3.0 + Download all - . If you enjoy these icons, please support us with a donation. -

+
+ + + + + +
+

+ We designed the icon library we always wanted to use. Easy to pick + up and plug in. Truly consistent in style and scale. Flexible to + multiple sizes and weights. Reserved enough to be multi-purpose, but + a little quirky, too. +

+

+ We're thankful for the open-source tools we've benefited from and + this is our small contribution towards a collaborative digital + community. +

+

+ Phosphor is licensed under{" "} + + GNU GPL-3.0 + + , free to use without attribution. If you enjoy these icons, please + support us with a donation. +

+
-

- Copyright © 2020 Phosphor Icons -
- Designed by{" "} + +

+
+

+ Copyright © 2020 Phosphor Icons. Phosphor Icons is designed by{" "} Helena Zhang {" "} - + built by{" "} + and built by{" "} - Tobias Fried + Toby Fried {" "} - 👩🏻‍💻👨‍💻🐈 + 🙇🏻‍♀️👨‍💻🐈 -
- Contact us at{" "} + . Contact us at{" "} hello@phosphoricons.com -

-

- See also:{" "} + . Check out our sister project:{" "} Phosphor for Android -

-

- Type set in{" "} + . Type set in{" "} Manrope - + {" "} + by Mikhail Sharanda.

+
-
- -
- - - +
+
+
diff --git a/src/components/Header/Header.css b/src/components/Header/Header.css index ad589c5..489f51c 100644 --- a/src/components/Header/Header.css +++ b/src/components/Header/Header.css @@ -45,53 +45,6 @@ header { opacity: 0; } -.button-container { - display: flex; - flex-wrap: wrap; - gap: 24px; -} - -.links { - display: flex; - flex-flow: column wrap; - align-content: flex-start; - align-items: flex-start; - justify-content: center; - column-gap: 72px; - margin: 56px 0 64px; - max-height: 144px; -} - -.links > div { - margin: 0 0 24px 0; - display: flex; - align-items: center; -} - -.links svg { - margin-right: 12px; -} - -a.nav-link { - text-decoration: none; - position: relative; - color: black; -} - -a.nav-link:after { - content: ""; - position: absolute; - bottom: -2px; - left: 0; - width: 0%; - border-bottom: 1px solid black; - transition: 0.2s; -} - -a.nav-link:hover:after { - width: 100%; -} - #paperclips-three { display: none; } diff --git a/src/components/IconGrid/IconGrid.css b/src/components/IconGrid/IconGrid.css index c431e22..077b34c 100644 --- a/src/components/IconGrid/IconGrid.css +++ b/src/components/IconGrid/IconGrid.css @@ -1,5 +1,5 @@ .grid-container { - padding: 0px 16px 4px; + padding: 32px 16px; min-height: 80vh; } @@ -171,5 +171,5 @@ .beacon { position: relative; - top: -64px; + top: -96px; } diff --git a/src/lib/icons.ts b/src/lib/icons.ts index 1b8b065..89c8077 100644 --- a/src/lib/icons.ts +++ b/src/lib/icons.ts @@ -2629,7 +2629,7 @@ export const icons: ReadonlyArray = [ Icon: Icon.GlobeHemisphereEast, }, { - name: "globe-hemispehere-west", + name: "globe-hemisphere-west", categories: [IconCategory.MAP], tags: [ "world", @@ -4077,7 +4077,16 @@ export const icons: ReadonlyArray = [ IconCategory.DEVELOPMENT, IconCategory.OTHER, ], - tags: ["packages", "bundles", "library", "libraries", "shipping"], + tags: [ + "packages", + "delivery", + "mail", + "postal service", + "bundles", + "library", + "libraries", + "shipping", + ], Icon: Icon.Package, }, { From 2870f20ddfb8461f51e4c07be72b7100293be2e0 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Sun, 4 Oct 2020 00:59:35 -0400 Subject: [PATCH 03/46] Header+Footer: further implement new spec --- src/components/App/App.css | 52 ++++++ src/components/Footer/Footer.css | 268 +++++++++++---------------- src/components/Footer/Footer.tsx | 197 ++++++++++++-------- src/components/Header/Header.css | 47 ----- src/components/IconGrid/IconGrid.css | 4 +- src/lib/icons.ts | 13 +- 6 files changed, 291 insertions(+), 290 deletions(-) diff --git a/src/components/App/App.css b/src/components/App/App.css index c677734..b80c244 100644 --- a/src/components/App/App.css +++ b/src/components/App/App.css @@ -59,6 +59,7 @@ button.main-button { transition: all 0.2s ease; cursor: pointer; user-select: none; + margin: 0 24px 24px 0; } button.main-button:active { @@ -71,10 +72,20 @@ button.main-button:focus { outline: none; } +/* button.main-button:not(:last-child) { + margin: 0 24px 24px 0; +} */ + button.main-button svg { margin-right: 12px; } +.button-container { + display: flex; + flex-wrap: wrap; + /* gap: 24px; */ +} + a.main-link { text-decoration: none; position: relative; @@ -94,3 +105,44 @@ a.main-link:after { a.main-link:hover:after { width: 0%; } + +.links { + display: flex; + flex-flow: column wrap; + align-content: flex-start; + align-items: flex-start; + justify-content: center; + column-gap: 72px; + margin: 32px 0 64px; + max-height: 144px; +} + +.links > div { + margin: 0 0 24px 0; + display: flex; + align-items: center; +} + +.links svg { + margin-right: 12px; +} + +a.nav-link { + text-decoration: none; + position: relative; + color: black; +} + +a.nav-link:after { + content: ""; + position: absolute; + bottom: -2px; + left: 0; + width: 0%; + border-bottom: 1px solid black; + transition: 0.2s; +} + +a.nav-link:hover:after { + width: 100%; +} diff --git a/src/components/Footer/Footer.css b/src/components/Footer/Footer.css index cfb1fec..2eb2e0a 100644 --- a/src/components/Footer/Footer.css +++ b/src/components/Footer/Footer.css @@ -1,14 +1,5 @@ footer { - width: 100%; - position: relative; background-color: #925bff; - overflow: hidden; -} - -.container { - width: 100%; - max-width: 1280px; - margin: auto; } #back-to-top-button { @@ -18,189 +9,146 @@ footer { border-radius: 50%; } -.outro-content { - /* pointer-events: none; */ - z-index: 2; +#back-to-top-button img { + pointer-events: none; } -@media screen and (max-width: 759px) { - .outro h2 { - font-size: 28px; - line-height: 38px; - margin-bottom: 32px; +.container { + position: relative; + width: 100%; + max-width: 1240px; + margin: auto; +} + +.outro { + position: relative; + max-width: 666px; + margin: 0 8% 0; + padding-top: 72px; + /* overflow: hidden; */ +} + +.outro p { + font-size: 28px; + line-height: 40px; + margin: 0 0 32px; +} + +footer .links { + margin: 56px 0 48px; +} + +.fine-print { + position: relative; + margin: 72px 0 0; + padding-bottom: 32px; + overflow: hidden; +} + +.fine-print p { + font-size: 16px; + line-height: 24px; +} + +.illustrations-footer { + display: none; + user-select: none; + pointer-events: none; +} + +@media screen and (max-width: 719px) { + #back-to-top-button { + position: sticky; + top: calc(100% - 64px); + float: right; + display: flex; + align-items: center; + justify-content: center; + width: 48px; + height: 48px; + padding: 0; + margin: 16px; + z-index: 1; } - .fine-print { - margin: 80px 0 0; - font-size: 16px; - line-height: 24px; + #back-to-top-button img { + width: 24px; + height: 24px; + } + + footer .links { + margin: 0 0 64px; + } + + #command { + display: none; } #marker-green { - position: absolute; - top: 0; - left: 0; - transform: translate(324px, 610px); + display: none; } - - #phone { - position: absolute; - top: 0; - left: 0; - transform: translate(-140px, 570px); + + .illustrations-footer { + max-width: 100%; + height: 440px; + display: flex; + justify-content: center; + overflow: hidden; } } -@media screen and (min-width: 760px) and (max-width: 1023px) { - .outro h2 { - font-size: 40px; - line-height: 50px; - margin-bottom: 32px; - } - - .fine-print { - margin: 80px 0 0; - font-size: 20px; - line-height: 30px; - } - - #marker-green { - position: absolute; - top: 0; - left: 0; - transform: translate(544px, 500px); - } - - #phone { - position: absolute; - top: 0; - left: 0; - transform: translate(80px, 480px); - } -} - -@media screen and (max-width: 1023px) { +@media screen and (min-width: 720px) { .outro { - position: relative; - margin: 292px 10% 292px; + margin: 0 auto; } - #back-to-top { + .fine-print { + margin-top: 96px; + padding-bottom: 96px; + } + + #back-to-top-button { position: absolute; - top: 0; - left: 0; - transform: translate(-48px, -196px); + left: 70px; + top: -56px; + } + + #marker-green { + position: absolute; + left: 678px; + top: -218px; } #command { position: absolute; - top: 0; - left: 0; - transform: translate(640px, -228px); + right: -16px; + top: 144px; } } - - -@media screen and (min-width: 1024px) and (max-width: 1279px) { - footer { - height: 920px; - } - +@media screen and (min-width: 1239px) { .outro { - position: relative; - width: 666px; - margin: 160px auto 324px; + margin-left: 462px; } - .outro h2 { - font-size: 40px; - line-height: 50px; - margin-bottom: 32px; - } - - .fine-print { - margin: 96px 0 0; - font-size: 20px; - line-height: 30px; - } - - #back-to-top { + #back-to-top-button { position: absolute; - top: 0; - left: 0; - transform: translate(-212px, 0); - } - - #marker-green { - position: absolute; - top: 0; - left: 0; - transform: translate(384px, 512px); - } - - #phone { - position: absolute; - top: 0; - left: 0; - transform: translate(-80px, 476px); + left: 190px; + top: 276px; } #command { position: absolute; - top: 0; - left: 0; - transform: translate(706px, 360px); + left: 732px; + top: 512px; } -} -@media screen and (min-width: 1280px) { - .outro { - width: 660px; - position: relative; - margin: 160px 0 120px 468px; - } - - .outro h2 { - font-size: 40px; - line-height: 50px; - margin-bottom: 32px; - } - - .fine-print { - margin: 96px 0 0; - font-size: 20px; - line-height: 30px; - } - - #back-to-top { + .illustrations-footer { + display: initial; position: absolute; - top: 0; - left: 0; - transform: translate(-320px, -12px); - } - - #marker-green { - position: absolute; - top: 0; - left: 0; - /* x and y-translate is wrong in spec? */ - transform: translate(-208px, 270px); - } - - #phone { - position: absolute; - top: 0; - left: 0; - /* y-translate is wrong in spec? */ - transform: translate(-684px, 236px); - } - - #command { - position: absolute; - top: 0; - left: 0; - /* y-translate is wrong in spec? */ - transform: translate(744px, 352px); + left: -240px; + top: 656px; + height: 584px; + overflow: hidden; } } diff --git a/src/components/Footer/Footer.tsx b/src/components/Footer/Footer.tsx index 1574349..e954303 100644 --- a/src/components/Footer/Footer.tsx +++ b/src/components/Footer/Footer.tsx @@ -1,62 +1,116 @@ -import React, { useState } from "react"; -import { motion } from "framer-motion"; -import { Heart } from "phosphor-react"; +import React from "react"; +import { ArrowElbowDownRight, Coffee, Heart } from "phosphor-react"; import uArrowUpLeft from "../../assets/u-arrow-up-left.svg"; import markerGreen from "../../assets/marker-green.svg"; -import phone from "../../assets/phone.svg"; -import phoneSpec from "../../assets/phone-spec.svg"; +import postIt from "../../assets/footer-mobile.svg"; import commandKey from "../../assets/command-key.svg"; import commandKeySpec from "../../assets/command-key-spec.svg"; import "./Footer.css"; type FooterProps = {}; -const variants = { - hidden: { opacity: 0, transition: { duration: 0.2 } }, - visible: { opacity: 1, transition: { duration: 0.2 } }, -}; - const Footer: React.FC = () => { - const [phoneHovered, setPhoneHovered] = useState(false); - return (
+
- {phoneHovered && ( - - )} - setPhoneHovered(true)} - onHoverEnd={() => setPhoneHovered(false)} - src={phone} + + -
-

- Phosphor is free and open source, licensed under{" "} +
+
+ - GNU GPL-3.0 + Download all - . If you enjoy these icons, please support us with a donation. -

+
+ + + + + +
+

+ We designed the icon library we always wanted to use. Easy to pick + up and plug in. Truly consistent in style and scale. Flexible to + multiple sizes and weights. Reserved enough to be multi-purpose, but + a little quirky, too. +

+

+ We're thankful for the open-source tools we've benefited from and + this is our small contribution towards a collaborative digital + community. +

+

+ Phosphor is licensed under{" "} + + GNU GPL-3.0 + + , free to use without attribution. If you enjoy these icons, please + support us with a donation. +

+
-

- Copyright © 2020 Phosphor Icons -
- Designed by{" "} + +

+
+

+ Copyright © 2020 Phosphor Icons. Phosphor Icons is designed by{" "} Helena Zhang {" "} - + built by{" "} + and built by{" "} - Tobias Fried + Toby Fried {" "} - 👩🏻‍💻👨‍💻🐈 + 🙇🏻‍♀️👨‍💻🐈 -
- Contact us at{" "} + . Contact us at{" "} hello@phosphoricons.com -

-

- See also:{" "} + . Check out our sister project:{" "} Phosphor for Android -

-

- Type set in{" "} + . Type set in{" "} Manrope - + {" "} + by Mikhail Sharanda.

+
-
- -
- - - +
+
+
diff --git a/src/components/Header/Header.css b/src/components/Header/Header.css index ad589c5..489f51c 100644 --- a/src/components/Header/Header.css +++ b/src/components/Header/Header.css @@ -45,53 +45,6 @@ header { opacity: 0; } -.button-container { - display: flex; - flex-wrap: wrap; - gap: 24px; -} - -.links { - display: flex; - flex-flow: column wrap; - align-content: flex-start; - align-items: flex-start; - justify-content: center; - column-gap: 72px; - margin: 56px 0 64px; - max-height: 144px; -} - -.links > div { - margin: 0 0 24px 0; - display: flex; - align-items: center; -} - -.links svg { - margin-right: 12px; -} - -a.nav-link { - text-decoration: none; - position: relative; - color: black; -} - -a.nav-link:after { - content: ""; - position: absolute; - bottom: -2px; - left: 0; - width: 0%; - border-bottom: 1px solid black; - transition: 0.2s; -} - -a.nav-link:hover:after { - width: 100%; -} - #paperclips-three { display: none; } diff --git a/src/components/IconGrid/IconGrid.css b/src/components/IconGrid/IconGrid.css index c431e22..077b34c 100644 --- a/src/components/IconGrid/IconGrid.css +++ b/src/components/IconGrid/IconGrid.css @@ -1,5 +1,5 @@ .grid-container { - padding: 0px 16px 4px; + padding: 32px 16px; min-height: 80vh; } @@ -171,5 +171,5 @@ .beacon { position: relative; - top: -64px; + top: -96px; } diff --git a/src/lib/icons.ts b/src/lib/icons.ts index 1b8b065..89c8077 100644 --- a/src/lib/icons.ts +++ b/src/lib/icons.ts @@ -2629,7 +2629,7 @@ export const icons: ReadonlyArray = [ Icon: Icon.GlobeHemisphereEast, }, { - name: "globe-hemispehere-west", + name: "globe-hemisphere-west", categories: [IconCategory.MAP], tags: [ "world", @@ -4077,7 +4077,16 @@ export const icons: ReadonlyArray = [ IconCategory.DEVELOPMENT, IconCategory.OTHER, ], - tags: ["packages", "bundles", "library", "libraries", "shipping"], + tags: [ + "packages", + "delivery", + "mail", + "postal service", + "bundles", + "library", + "libraries", + "shipping", + ], Icon: Icon.Package, }, { From bc8c00df3dea224c147a6512efbe72b8d2de5ed0 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Sun, 4 Oct 2020 16:13:00 -0400 Subject: [PATCH 04/46] IconGrid: stop icon preview from bounding on panel open --- src/components/IconGrid/IconGrid.css | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/components/IconGrid/IconGrid.css b/src/components/IconGrid/IconGrid.css index 077b34c..4a85880 100644 --- a/src/components/IconGrid/IconGrid.css +++ b/src/components/IconGrid/IconGrid.css @@ -66,17 +66,16 @@ } .icon-preview { - height: 396px; width: 30%; display: flex; text-align: center; flex-direction: column; align-items: center; - justify-content: center; + margin-top: 72px; } .icon-preview p { - margin: 12px 0 0; + margin: 0; font-size: 12px; line-height: 16px; } From daa545d8aeeb4ea8ea9744eedf09f203f15df9fb Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Sun, 4 Oct 2020 16:53:39 -0400 Subject: [PATCH 05/46] Header: replace warning-spec asset with correcly sized version --- src/assets/warning-spec.svg | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/assets/warning-spec.svg b/src/assets/warning-spec.svg index 002f936..96d5063 100644 --- a/src/assets/warning-spec.svg +++ b/src/assets/warning-spec.svg @@ -1,13 +1,13 @@ - - - - - - - - - + + + + + + + + + From bee9f1cbc0ee4cecb1cb5bf71b8806dc9c2f51d3 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Sun, 4 Oct 2020 18:49:30 -0400 Subject: [PATCH 06/46] Footer: update license copy --- src/components/Footer/Footer.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/Footer/Footer.tsx b/src/components/Footer/Footer.tsx index e954303..838bdf2 100644 --- a/src/components/Footer/Footer.tsx +++ b/src/components/Footer/Footer.tsx @@ -103,9 +103,9 @@ const Footer: React.FC = () => { Phosphor is licensed under{" "} - GNU GPL-3.0 + MIT , free to use without attribution. If you enjoy these icons, please support us with a donation. From 50b603b525a501995fb622b2ad5e0aa96652c94f Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Sun, 4 Oct 2020 23:15:51 -0400 Subject: [PATCH 07/46] InfoPanel: massive overhaul to support mobile size and PNG download This patch reworks the mobile breakpoint to allow whitespace wrapping of code snippets and does away with horizontal scroll. Overall, the usability and intuitiveness is much better, though readability of the code itself takes a hit. In addition, we added the ability to download an icon as a PNG thanks to the svg2png-converter library. PNGs adopt the current preview weight and color, and are sized at 256x256. --- package.json | 1 + src/components/App/App.css | 1 + src/components/IconGrid/IconGrid.css | 14 +-- src/components/IconGrid/InfoPanel.tsx | 145 +++++++++++++++++--------- 4 files changed, 106 insertions(+), 55 deletions(-) diff --git a/package.json b/package.json index 04bac2a..d074738 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "react-scripts": "3.4.1", "react-use": "^15.3.2", "recoil": "^0.0.10", + "svg2png-converter": "^1.0.0", "tinycolor2": "^1.4.1" }, "scripts": { diff --git a/src/components/App/App.css b/src/components/App/App.css index b80c244..2bb4400 100644 --- a/src/components/App/App.css +++ b/src/components/App/App.css @@ -28,6 +28,7 @@ pre { background-color: white; border-radius: 6px; border: 1px solid #e1d4d7; + white-space: pre-wrap; } input { diff --git a/src/components/IconGrid/IconGrid.css b/src/components/IconGrid/IconGrid.css index 4a85880..26c51aa 100644 --- a/src/components/IconGrid/IconGrid.css +++ b/src/components/IconGrid/IconGrid.css @@ -48,11 +48,9 @@ display: flex; width: 100%; height: 0px; - margin: 0px; + margin: 0 4px; border-radius: 16px; background-color: rgba(163, 159, 171, 0.1); - overflow-y: hidden; - overflow-x: auto; } @media screen and (max-width: 1023px) { @@ -90,8 +88,8 @@ } .snippet pre { - /* white-space: nowrap; */ - /* overflow: hidden; */ + display: flex; + align-items: center; text-overflow: ellipsis; color: black; user-select: all; @@ -111,12 +109,15 @@ } } +.snippet span { + flex: 1; +} + .snippet button { background-color: transparent; margin: 0; padding: 0; height: 24px; - float: right; cursor: pointer; } @@ -126,6 +127,7 @@ .button-row { display: flex; + flex-wrap: wrap; } .button-row button { diff --git a/src/components/IconGrid/InfoPanel.tsx b/src/components/IconGrid/InfoPanel.tsx index c56de80..7fb4e4a 100644 --- a/src/components/IconGrid/InfoPanel.tsx +++ b/src/components/IconGrid/InfoPanel.tsx @@ -1,6 +1,7 @@ import React, { useRef } from "react"; import { useRecoilValue, useSetRecoilState } from "recoil"; import { motion } from "framer-motion"; +import { Svg2Png } from "svg2png-converter"; import { saveAs } from "file-saver"; import { Icon, Copy, X, CheckCircle, Download } from "phosphor-react"; @@ -12,21 +13,32 @@ import { } from "../../state/atoms"; import useTransientState from "../../hooks/useTransientState"; -const infoVariants = { +const panelVariants = { open: { opacity: 1, - height: 496, - margin: 4, + height: "100%", + marginTop: 4, + marginBottom: 4, // transition: { stiffness: 600, damping: 32, duration: 0.2 }, }, collapsed: { opacity: 0, height: 0, - margin: 0, + marginTop: 0, + marginBottom: 0, // transition: { stiffness: 600, damping: 32, duration: 0.2 }, }, }; +const contentVariants = { + open: { opacity: 1, transition: { duration: 0.2 } }, + collapsed: { opacity: 0, transition: { duration: 0.1 } }, +}; + +const buttonColor = "#35313D"; +const successColor = "#1FA647"; +const disabledColor = "#B7B7B7"; + interface InfoPanelProps { index: number; spans: number; @@ -44,6 +56,12 @@ const InfoPanel: React.FC = (props) => { const [copied, setCopied] = useTransientState(false, 2000); const ref = useRef(null); + const buttonBarStyle = { color: isDark ? "white" : buttonColor }; + const snippetButtonStyle = + weight === "duotone" + ? { color: disabledColor, "user-select": "none" } + : { color: buttonColor }; + const snippets = { html: weight === "duotone" @@ -69,6 +87,14 @@ const InfoPanel: React.FC = (props) => { data && void navigator.clipboard?.writeText(data); }; + const handleCopySVG = ( + event: React.MouseEvent + ) => { + event.currentTarget.blur(); + setCopied("svg"); + ref.current && void navigator.clipboard?.writeText(ref.current.outerHTML); + }; + const handleDownloadSVG = ( event: React.MouseEvent ) => { @@ -78,12 +104,16 @@ const InfoPanel: React.FC = (props) => { saveAs(blob, `${name}${weight === "regular" ? "" : `-${weight}`}.svg`); }; - const handleCopySVG = ( + const handleDownloadPNG = async ( event: React.MouseEvent ) => { event.currentTarget.blur(); - setCopied("svg"); - ref.current && void navigator.clipboard?.writeText(ref.current.outerHTML); + if (!ref.current?.outerHTML) return; + Svg2Png.save( + ref.current, + `${name}${weight === "regular" ? "" : `-${weight}`}.png`, + { scaleX: 1.334, scaleY: 1.334 } + ); }; return ( @@ -91,31 +121,41 @@ const InfoPanel: React.FC = (props) => { className="info-box" animate="open" exit="collapsed" - variants={infoVariants} + variants={panelVariants} style={{ order: index + (spans - (index % spans)), color: isDark ? "white" : "black", }} > -
-
- -

{name}

-
-
-
+ + +

{name}

+
+
React
-            {snippets.react}
+            {snippets.react}
             
           
@@ -123,71 +163,78 @@ const InfoPanel: React.FC = (props) => {
Vue
-            {snippets.vue}
+            {snippets.vue}
             
           
HTML/CSS -
-            {snippets.html}
+          
+            {snippets.html}
             
           
- + -
-
- setOpen(false)} - onKeyDown={(e) => { - e.key === "Enter" && setOpen(false); - }} - /> +
+ + setOpen(false)} + onKeyDown={(e) => { + e.key === "Enter" && setOpen(false); + }} + /> + ); }; From c3948f4f78f7b39659e25f24a6185a36f19fa618 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Mon, 5 Oct 2020 02:13:28 -0400 Subject: [PATCH 08/46] Remove now-unused gh-pages dependency --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index d074738..a206f1b 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,6 @@ "@types/react-list": "^0.8.5", "@types/react-virtualized": "^9.21.10", "@types/tinycolor2": "^1.4.2", - "gh-pages": "^3.1.0", "typescript": "^3.9.6" } } From 4a857eb6fa4606e26c86d8ef485c85420a654687 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Mon, 5 Oct 2020 02:14:03 -0400 Subject: [PATCH 09/46] DetailsPanel: rename InfoPanel -> DetailsPanel --- src/components/IconGrid/{InfoPanel.tsx => DetailsPanel.tsx} | 4 ++-- src/components/IconGrid/IconGridItem.tsx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) rename src/components/IconGrid/{InfoPanel.tsx => DetailsPanel.tsx} (98%) diff --git a/src/components/IconGrid/InfoPanel.tsx b/src/components/IconGrid/DetailsPanel.tsx similarity index 98% rename from src/components/IconGrid/InfoPanel.tsx rename to src/components/IconGrid/DetailsPanel.tsx index 7fb4e4a..4123995 100644 --- a/src/components/IconGrid/InfoPanel.tsx +++ b/src/components/IconGrid/DetailsPanel.tsx @@ -47,7 +47,7 @@ interface InfoPanelProps { Icon: Icon; } -const InfoPanel: React.FC = (props) => { +const DetailsPanel: React.FC = (props) => { const { index, spans, isDark, name, Icon } = props; const weight = useRecoilValue(iconWeightAtom); const size = useRecoilValue(iconSizeAtom); @@ -239,4 +239,4 @@ const InfoPanel: React.FC = (props) => { ); }; -export default InfoPanel; +export default DetailsPanel; diff --git a/src/components/IconGrid/IconGridItem.tsx b/src/components/IconGrid/IconGridItem.tsx index 3c9e100..b515ad0 100644 --- a/src/components/IconGrid/IconGridItem.tsx +++ b/src/components/IconGrid/IconGridItem.tsx @@ -9,7 +9,7 @@ import { motion, AnimatePresence } from "framer-motion"; import { IconProps, Icon } from "phosphor-react"; import { iconPreviewOpenAtom } from "../../state/atoms"; -import InfoPanel from "./InfoPanel"; +import DetailsPanel from "./DetailsPanel"; interface IconGridItemProps extends IconProps { index: number; @@ -87,7 +87,7 @@ const IconGridItem: React.FC = (props) => {

{name}

- {isOpen && } + {isOpen && } ); From 4a46bede07416652a363446f53f1099a986689a4 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Mon, 5 Oct 2020 02:15:01 -0400 Subject: [PATCH 10/46] Footer: back-to-top should float above toolbar --- src/components/App/App.css | 1 - src/components/Footer/Footer.css | 13 ++++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/components/App/App.css b/src/components/App/App.css index 2bb4400..5d1ffde 100644 --- a/src/components/App/App.css +++ b/src/components/App/App.css @@ -65,7 +65,6 @@ button.main-button { button.main-button:active { transform: translate(4px, 4px); - /* background-color: #DDDDDD; */ box-shadow: 0 0 0 0 black; } diff --git a/src/components/Footer/Footer.css b/src/components/Footer/Footer.css index 2eb2e0a..e2d8fa2 100644 --- a/src/components/Footer/Footer.css +++ b/src/components/Footer/Footer.css @@ -7,6 +7,7 @@ footer { height: 140px; margin: 0; border-radius: 50%; + z-index: 2; } #back-to-top-button img { @@ -25,7 +26,6 @@ footer { max-width: 666px; margin: 0 8% 0; padding-top: 72px; - /* overflow: hidden; */ } .outro p { @@ -68,7 +68,6 @@ footer .links { height: 48px; padding: 0; margin: 16px; - z-index: 1; } #back-to-top-button img { @@ -121,7 +120,7 @@ footer .links { #command { position: absolute; - right: -16px; + right: -48px; top: 144px; } } @@ -137,11 +136,11 @@ footer .links { top: 276px; } - #command { + /* #command { position: absolute; - left: 732px; - top: 512px; - } + left: 532px; + top: 150px; + } */ .illustrations-footer { display: initial; From 3a97005b72efd46acd86aa9c6c86bc8a270090b0 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Mon, 5 Oct 2020 02:32:50 -0400 Subject: [PATCH 11/46] App: make images unselectable and undraggable --- src/components/App/App.css | 9 +++++++++ src/components/ColorInput/ColorInput.css | 2 ++ src/components/Footer/Footer.css | 8 +++----- src/components/IconGrid/IconGrid.css | 2 ++ 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/components/App/App.css b/src/components/App/App.css index 5d1ffde..42bedec 100644 --- a/src/components/App/App.css +++ b/src/components/App/App.css @@ -14,6 +14,13 @@ h2 { font-weight: 400; } +img { + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + -webkit-user-drag: none; +} + pre, code { font-family: "IBM Plex Mono", "Courier New", monospace; @@ -60,6 +67,8 @@ button.main-button { transition: all 0.2s ease; cursor: pointer; user-select: none; + -moz-user-select: none; + -webkit-user-select: none; margin: 0 24px 24px 0; } diff --git a/src/components/ColorInput/ColorInput.css b/src/components/ColorInput/ColorInput.css index d519989..6c570a0 100644 --- a/src/components/ColorInput/ColorInput.css +++ b/src/components/ColorInput/ColorInput.css @@ -17,6 +17,8 @@ -ms-transform: translate(-50%, -50%); transform: translate(-50%, -50%); user-select: none; + -moz-user-select: none; + -webkit-user-select: none; pointer-events: none; } diff --git a/src/components/Footer/Footer.css b/src/components/Footer/Footer.css index e2d8fa2..8754ccc 100644 --- a/src/components/Footer/Footer.css +++ b/src/components/Footer/Footer.css @@ -10,10 +10,6 @@ footer { z-index: 2; } -#back-to-top-button img { - pointer-events: none; -} - .container { position: relative; width: 100%; @@ -53,6 +49,8 @@ footer .links { .illustrations-footer { display: none; user-select: none; + -moz-user-select: none; + -webkit-user-select: none; pointer-events: none; } @@ -120,7 +118,7 @@ footer .links { #command { position: absolute; - right: -48px; + right: -18px; top: 144px; } } diff --git a/src/components/IconGrid/IconGrid.css b/src/components/IconGrid/IconGrid.css index 26c51aa..6114ce6 100644 --- a/src/components/IconGrid/IconGrid.css +++ b/src/components/IconGrid/IconGrid.css @@ -22,6 +22,8 @@ margin: 4px; border-radius: 16px; user-select: none; + -moz-user-select: none; + -webkit-user-select: none; cursor: pointer; } From e03487d3485122e39e233e01f5693622dd58fcf7 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Mon, 5 Oct 2020 23:18:01 -0400 Subject: [PATCH 12/46] meta: update to recoil@0.0.13 for mega perf gains --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a206f1b..9f504c3 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "react-dropdown-select": "^4.4.2", "react-scripts": "3.4.1", "react-use": "^15.3.2", - "recoil": "^0.0.10", + "recoil": "^0.0.13", "svg2png-converter": "^1.0.0", "tinycolor2": "^1.4.1" }, From a73af0573e6b7cdc173db7b0592f899c527d58da Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Wed, 7 Oct 2020 15:39:43 -0400 Subject: [PATCH 13/46] icons: add Arrows category --- src/lib/icons.ts | 315 ++++++++++++++++++++++++----------------------- src/lib/index.ts | 33 ++--- 2 files changed, 178 insertions(+), 170 deletions(-) diff --git a/src/lib/icons.ts b/src/lib/icons.ts index 89c8077..89f3b2a 100644 --- a/src/lib/icons.ts +++ b/src/lib/icons.ts @@ -18,6 +18,7 @@ export const icons: ReadonlyArray = [ "flying", "planes", "transit", + "transportation", "traveling", ], Icon: Icon.Airplane, @@ -43,7 +44,7 @@ export const icons: ReadonlyArray = [ IconCategory.DEVICE, IconCategory.SYSTEM, ], - tags: ["android", "google", "mobile", "phone", "cellular", "cellphone"], + tags: ["google", "mobile", "phone", "cellular", "cellphone"], Icon: Icon.Android, }, { @@ -96,225 +97,224 @@ export const icons: ReadonlyArray = [ }, { name: "arrow-up", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowUp, }, { name: "arrow-down", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowDown, }, { name: "arrow-left", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowLeft, }, { name: "arrow-right", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowRight, }, { name: "arrow-up-left", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowUpLeft, }, { name: "arrow-up-right", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowUpRight, }, { name: "arrow-down-left", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowDownLeft, }, { name: "arrow-down-right", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowDownRight, }, { name: "arrow-circle-up", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowCircleUp, }, { name: "arrow-circle-down", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowCircleDown, }, { name: "arrow-circle-left", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowCircleLeft, }, { name: "arrow-circle-right", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowCircleRight, }, { name: "arrow-circle-up-left", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowCircleUpLeft, }, { name: "arrow-circle-up-right", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowCircleUpRight, }, { name: "arrow-circle-down-left", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowCircleDownLeft, }, { name: "arrow-circle-down-right", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowCircleDownRight, }, { name: "arrow-square-up", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowSquareUp, }, { name: "arrow-square-down", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowSquareDown, }, { name: "arrow-square-left", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowSquareLeft, }, { name: "arrow-square-right", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowSquareRight, }, { name: "arrow-square-up-left", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowSquareUpLeft, }, { name: "arrow-square-up-right", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowSquareUpRight, }, { name: "arrow-square-down-left", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowSquareDownLeft, }, { name: "arrow-square-down-right", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowSquareDownRight, }, { name: "arrow-arc-left", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowArcLeft, }, { name: "arrow-arc-right", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowArcRight, }, { name: "arrow-bend-left-up", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowBendLeftUp, }, { name: "arrow-bend-right-up", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowBendRightUp, }, { name: "arrow-bend-left-down", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowBendLeftDown, }, { name: "arrow-bend-right-down", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowBendRightDown, }, { name: "arrow-bend-up-left", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowBendUpLeft, }, { name: "arrow-bend-down-left", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowBendDownLeft, }, { name: "arrow-bend-up-right", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowBendUpRight, }, { name: "arrow-bend-down-right", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowBendDownRight, }, { name: "arrow-bend-double-left", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowBendDoubleUpLeft, }, { name: "arrow-bend-double-right", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowBendDoubleUpRight, }, { name: "arrow-clockwise", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: [ - "arrows", "directional", "pointer", "pointing", @@ -326,9 +326,8 @@ export const icons: ReadonlyArray = [ }, { name: "arrow-counter-clockwise", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: [ - "arrows", "directional", "pointer", "pointing", @@ -340,118 +339,117 @@ export const icons: ReadonlyArray = [ }, { name: "arrow-elbow-left", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowElbowLeft, }, { name: "arrow-elbow-right", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowElbowRight, }, { name: "arrow-elbow-left-up", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowElbowLeftUp, }, { name: "arrow-elbow-right-up", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowElbowRightUp, }, { name: "arrow-elbow-left-down", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowElbowLeftDown, }, { name: "arrow-elbow-right-down", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowElbowRightDown, }, { name: "arrow-elbow-up-left", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowElbowUpLeft, }, { name: "arrow-elbow-down-left", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowElbowDownLeft, }, { name: "arrow-elbow-up-right", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowElbowUpRight, }, { name: "arrow-elbow-down-right", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowElbowDownRight, }, { name: "arrow-line-up", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowLineUp, }, { name: "arrow-line-down", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowLineDown, }, { name: "arrow-line-left", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowLineLeft, }, { name: "arrow-line-right", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowLineRight, }, { name: "arrow-line-up-left", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowLineUpLeft, }, { name: "arrow-line-up-right", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowLineUpRight, }, { name: "arrow-line-down-left", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowLineDownLeft, }, { name: "arrow-line-down-right", - categories: [IconCategory.OTHER], - tags: ["arrows", "directional", "pointer", "pointing", "arrowhead"], + categories: [IconCategory.ARROWS], + tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowLineDownRight, }, { name: "arrow-u-left-up", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: [ - "arrows", "directional", "pointer", "pointing", @@ -463,9 +461,8 @@ export const icons: ReadonlyArray = [ }, { name: "arrow-u-right-up", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: [ - "arrows", "directional", "pointer", "pointing", @@ -477,9 +474,8 @@ export const icons: ReadonlyArray = [ }, { name: "arrow-u-left-down", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: [ - "arrows", "directional", "pointer", "pointing", @@ -492,9 +488,8 @@ export const icons: ReadonlyArray = [ }, { name: "arrow-u-right-down", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: [ - "arrows", "directional", "pointer", "pointing", @@ -507,9 +502,8 @@ export const icons: ReadonlyArray = [ }, { name: "arrow-u-up-left", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: [ - "arrows", "directional", "pointer", "pointing", @@ -522,9 +516,8 @@ export const icons: ReadonlyArray = [ }, { name: "arrow-u-down-left", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: [ - "arrows", "directional", "pointer", "pointing", @@ -537,9 +530,8 @@ export const icons: ReadonlyArray = [ }, { name: "arrow-u-up-right", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: [ - "arrows", "directional", "pointer", "pointing", @@ -551,9 +543,8 @@ export const icons: ReadonlyArray = [ }, { name: "arrow-u-down-right", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: [ - "arrows", "directional", "pointer", "pointing", @@ -565,7 +556,7 @@ export const icons: ReadonlyArray = [ }, { name: "arrows-clockwise", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: [ "directional", "pointer", @@ -580,7 +571,7 @@ export const icons: ReadonlyArray = [ }, { name: "arrows-counter-clockwise", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: [ "directional", "pointer", @@ -593,19 +584,19 @@ export const icons: ReadonlyArray = [ }, { name: "arrows-down-up", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowsDownUp, }, { name: "arrows-left-right", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: ["directional", "pointer", "pointing", "arrowhead"], Icon: Icon.ArrowsLeftRight, }, { name: "arrows-in", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: [ "directional", "pointer", @@ -618,7 +609,7 @@ export const icons: ReadonlyArray = [ }, { name: "arrows-in-cardinal", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: [ "directional", "pointer", @@ -632,7 +623,7 @@ export const icons: ReadonlyArray = [ }, { name: "arrows-in-simple", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: [ "directional", "pointer", @@ -646,7 +637,7 @@ export const icons: ReadonlyArray = [ }, { name: "arrows-out", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: [ "directional", "pointer", @@ -660,7 +651,7 @@ export const icons: ReadonlyArray = [ }, { name: "arrows-out-cardinal", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: [ "directional", "pointer", @@ -675,7 +666,7 @@ export const icons: ReadonlyArray = [ }, { name: "arrows-out-simple", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: [ "directional", "pointer", @@ -747,7 +738,7 @@ export const icons: ReadonlyArray = [ { name: "barbell", categories: [IconCategory.HEALTH], - tags: ["weights", "dumbbells", "strength training", "workout", "exercise"], + tags: ["weights", "dumbbells", "strength training", "workout", "exercises"], Icon: Icon.Barbell, }, { @@ -888,7 +879,15 @@ export const icons: ReadonlyArray = [ { name: "bicycle", categories: [IconCategory.HEALTH, IconCategory.MAP, IconCategory.OTHER], - tags: ["bikers", "bicycling", "cyclists"], + tags: [ + "bikers", + "bicycling", + "cyclists", + "transit", + "transportation", + "commuter", + "exercises", + ], Icon: Icon.Bicycle, }, { @@ -1044,6 +1043,7 @@ export const icons: ReadonlyArray = [ tags: [ "vehicles", "public transit", + "transportation", "commuter", "traveling", "places", @@ -1084,13 +1084,14 @@ export const icons: ReadonlyArray = [ { name: "car", categories: [IconCategory.MAP, IconCategory.OTHER], - tags: ["cars", "vehicles", "transit", "traveling"], + + tags: ["cars", "vehicles", "transit", "transportation", "traveling"], Icon: Icon.Car, }, { name: "car-simple", categories: [IconCategory.MAP, IconCategory.OTHER], - tags: ["cars", "vehicles", "transit", "traveling"], + tags: ["cars", "vehicles", "transit", "transportation", "traveling"], Icon: Icon.CarSimple, }, { @@ -1314,13 +1315,13 @@ export const icons: ReadonlyArray = [ { name: "chart-line", categories: [IconCategory.BUSINESS, IconCategory.FINANCE], - tags: ["graphs", "graphing", "charts", "circle", "analyze", "analysis"], + tags: ["graphs", "graphing", "charts", "analyze", "analysis"], Icon: Icon.ChartLine, }, { name: "chart-line-up", categories: [IconCategory.BUSINESS, IconCategory.FINANCE], - tags: ["graphs", "graphing", "charts", "circle", "analyze", "analysis"], + tags: ["graphs", "graphing", "charts", "analyze", "analysis"], Icon: Icon.ChartLineUp, }, { @@ -1626,7 +1627,7 @@ export const icons: ReadonlyArray = [ }, { name: "coffee", - categories: [IconCategory.OTHER], + categories: [IconCategory.BUSINESS, IconCategory.OTHER], tags: [ "tea", "java", @@ -2707,13 +2708,13 @@ export const icons: ReadonlyArray = [ { name: "hand", categories: [IconCategory.SYSTEM, IconCategory.USERS, IconCategory.OTHER], - tags: ["pointers", "cursors", "palm", "stop", "wait", "hamsa"], + tags: ["pointers", "cursors", "emoji", "palm", "stop", "wait", "hamsa"], Icon: Icon.Hand, }, { name: "hand-pointing", categories: [IconCategory.SYSTEM, IconCategory.USERS, IconCategory.OTHER], - tags: ["pointers", "cursors", "fingers", "clicks", "mouse"], + tags: ["pointers", "cursors", "emoji", "fingers", "clicks", "mouse"], Icon: Icon.HandPointing, }, { @@ -3058,6 +3059,7 @@ export const icons: ReadonlyArray = [ "wrangler", "off-road", "transit", + "transportation", "traveling", ], Icon: Icon.Jeep, @@ -4194,7 +4196,9 @@ export const icons: ReadonlyArray = [ "man", "body", "transit", + "transportation", "travel", + "commuter", ], Icon: Icon.Pedestrian, }, @@ -4693,20 +4697,20 @@ export const icons: ReadonlyArray = [ }, { name: "shuffle", - categories: [IconCategory.MEDIA, IconCategory.SYSTEM], - tags: ["music", "audio", "randomize", "arrows", "crossed"], + categories: [IconCategory.MEDIA, IconCategory.SYSTEM, IconCategory.ARROWS], + tags: ["music", "audio", "randomize", "crossed"], Icon: Icon.Shuffle, }, { name: "shuffle-angular", - categories: [IconCategory.MEDIA, IconCategory.SYSTEM], - tags: ["music", "audio", "randomize", "arrows", "crossed"], + categories: [IconCategory.MEDIA, IconCategory.SYSTEM, IconCategory.ARROWS], + tags: ["music", "audio", "randomize", "crossed"], Icon: Icon.ShuffleAngular, }, { name: "shuffle-simple", - categories: [IconCategory.MEDIA, IconCategory.SYSTEM], - tags: ["music", "audio", "randomize", "arrows", "crossed"], + categories: [IconCategory.MEDIA, IconCategory.SYSTEM, IconCategory.ARROWS], + tags: ["music", "audio", "randomize", "crossed"], Icon: Icon.ShuffleSimple, }, { @@ -5180,6 +5184,7 @@ export const icons: ReadonlyArray = [ "subway", "light rail", "public transit", + "transportation", "commuter", "traveling", "places", @@ -5195,6 +5200,7 @@ export const icons: ReadonlyArray = [ "subway", "railroad", "public transit", + "transportation", "commuter", "freight", "shipping", @@ -5212,6 +5218,7 @@ export const icons: ReadonlyArray = [ "subway", "light rail", "public transit", + "transportation", "commuter", "traveling", "places", diff --git a/src/lib/index.ts b/src/lib/index.ts index 31821bb..aa973b2 100644 --- a/src/lib/index.ts +++ b/src/lib/index.ts @@ -10,22 +10,23 @@ export enum IconStyle { } export enum IconCategory { - BRAND = "Brands", - BUSINESS = "Businesses", - COMMUNICATION = "Communications", - DESIGN = "Design", - DEVELOPMENT = "Development", - DEVICE = "Devices", - DOCUMENT = "Documents", - EDITOR = "Editors", - FINANCE = "Finances", - HEALTH = "Health & Medical", - MAP = "Maps", - MEDIA = "Media", - SYSTEM = "System", - USERS = "Users", - WEATHER = "Weather", - OTHER = "Other", + ARROWS = "arrows", + BRAND = "brands", + BUSINESS = "business", + COMMUNICATION = "communications", + DESIGN = "design", + DEVELOPMENT = "development", + DEVICE = "devices", + DOCUMENT = "documents", + EDITOR = "editor", + FINANCE = "finances", + HEALTH = "health & medical", + MAP = "maps", + MEDIA = "media", + SYSTEM = "system", + USERS = "users", + WEATHER = "weather", + OTHER = "other", } export interface IconEntry { From 3b0ef72c402423e3790cd078ee814a89d6d556f1 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Wed, 7 Oct 2020 15:40:27 -0400 Subject: [PATCH 14/46] meta: support es6 syntax for Set compatibility --- tsconfig.json | 1 + 1 file changed, 1 insertion(+) diff --git a/tsconfig.json b/tsconfig.json index 1b4e6cd..cf0f8ac 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,6 +2,7 @@ "compilerOptions": { "target": "es5", "lib": [ + "es6", "dom", "dom.iterable", "esnext" From 757f12d2f36d59e2cac7e067a58b00f90481c86d Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Wed, 7 Oct 2020 15:43:00 -0400 Subject: [PATCH 15/46] Notice: rename Warn -> Notice and add composability The Notice component can now act as a general indicator component, exposing four types: "wait", "help", "warn", or "none". These types display different icons and make this a much more reusable element. We also render children passed to us, making this even more extendable. In future, we may wish to extract all message props altogether as children instead. --- src/components/App/App.css | 1 - src/components/App/App.tsx | 10 +++++++--- .../{Warn/Warn.tsx => Notice/Notice.tsx} | 20 ++++++++++++++----- 3 files changed, 22 insertions(+), 9 deletions(-) rename src/components/{Warn/Warn.tsx => Notice/Notice.tsx} (55%) diff --git a/src/components/App/App.css b/src/components/App/App.css index 42bedec..b1cc0a6 100644 --- a/src/components/App/App.css +++ b/src/components/App/App.css @@ -25,7 +25,6 @@ pre, code { font-family: "IBM Plex Mono", "Courier New", monospace; font-size: 14px; - color: "black"; } pre { diff --git a/src/components/App/App.tsx b/src/components/App/App.tsx index 03455db..1dec31c 100644 --- a/src/components/App/App.tsx +++ b/src/components/App/App.tsx @@ -6,7 +6,11 @@ import Toolbar from "../Toolbar/Toolbar"; import IconGrid from "../IconGrid/IconGrid"; import Footer from "../Footer/Footer"; import ErrorBoundary from "../ErrorBoundary/ErrorBoundary"; -import Warn from "../Warn/Warn"; +import Notice from "../Notice/Notice"; + +const errorFallback = ; +// const waitingFallback = ; +const waitingFallback = ; const App: React.FC = () => { return ( @@ -14,8 +18,8 @@ const App: React.FC = () => {
- }> - Loading...
}> + + diff --git a/src/components/Warn/Warn.tsx b/src/components/Notice/Notice.tsx similarity index 55% rename from src/components/Warn/Warn.tsx rename to src/components/Notice/Notice.tsx index 8b213de..a89d20f 100644 --- a/src/components/Warn/Warn.tsx +++ b/src/components/Notice/Notice.tsx @@ -4,13 +4,14 @@ import { useRecoilValue } from "recoil"; import { isDarkThemeSelector } from "../../state/selectors"; import { searchQueryAtom } from "../../state/atoms"; -import { SmileyXEyes } from "phosphor-react"; +import { HourglassMedium, Question, SmileyXEyes } from "phosphor-react"; -interface WarnProps { +interface NoticeProps { message?: string; + type?: "wait" | "help" | "warn" | "none"; } -const Warn: React.FC = ({ message }) => { +const Notice: React.FC = ({ message, type = "warn", children }) => { const isDark = useRecoilValue(isDarkThemeSelector); const query = useRecoilValue(searchQueryAtom); @@ -22,15 +23,24 @@ const Warn: React.FC = ({ message }) => { animate={{ opacity: 1 }} transition={{ duration: 0.5 }} > - + {type === "wait" && ( + + )} + {type === "help" && ( + + )} + {type === "warn" && ( + + )} {message ?? (

No results for "{query}"

)} + {children} ); }; -export default Warn; +export default Notice; From c5ce2c21cb350c1bdf55fecc4dd8914f79ce6644 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Wed, 7 Oct 2020 15:47:56 -0400 Subject: [PATCH 16/46] TagCloud: add component and implement tag-search feature This component renders a cloud of tags with the string tags passed to it, with each tag constituting a button that triggers search on click. The cloud is also responsive to the color theme of the grid. --- src/components/IconGrid/TagCloud.css | 32 +++++++++++++++++++++++ src/components/IconGrid/TagCloud.tsx | 38 ++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 src/components/IconGrid/TagCloud.css create mode 100644 src/components/IconGrid/TagCloud.tsx diff --git a/src/components/IconGrid/TagCloud.css b/src/components/IconGrid/TagCloud.css new file mode 100644 index 0000000..1ee8f94 --- /dev/null +++ b/src/components/IconGrid/TagCloud.css @@ -0,0 +1,32 @@ +.tag-cloud { + display: flex; + flex-wrap: wrap; + justify-content: center; + padding: 24px; +} + +button.tag-button { + margin: 4px; + border-radius: 4px; + background-color: rgba(194, 186, 196, 0.25); + outline: none; + cursor: pointer; + transition: background-color 200ms ease, box-shadow 200ms ease; +} + +button.tag-button:hover { + background-color: rgba(194, 186, 196, 0.7); +} + +button.tag-button:focus { + box-shadow: 0 0 0 1px rgba(194, 186, 196, 0.7); +} + +.tag-button code { + padding: 4px; + font-size: 12px; +} + +.dark { + color: white; +} \ No newline at end of file diff --git a/src/components/IconGrid/TagCloud.tsx b/src/components/IconGrid/TagCloud.tsx new file mode 100644 index 0000000..5d376b4 --- /dev/null +++ b/src/components/IconGrid/TagCloud.tsx @@ -0,0 +1,38 @@ +import React, { useCallback } from "react"; +import { useSetRecoilState } from "recoil"; + +import { searchQueryAtom } from "../../state/atoms"; +import "./TagCloud.css"; + +interface TagCloudProps { + name: string; + tags: string[]; + isDark: boolean; +} + +const TagCloud: React.FC = ({ name, tags, isDark }) => { + const setQuery = useSetRecoilState(searchQueryAtom); + const handleTagClick = useCallback( + (tag: string) => { + setQuery(tag); + document.getElementById("search-input")?.focus(); + }, + [setQuery] + ); + + return ( +
+ {tags.map((tag) => ( + + ))} +
+ ); +}; + +export default TagCloud; From 2750c84431f04e010234fdc2594403fe6bfe93fe Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Wed, 7 Oct 2020 15:55:41 -0400 Subject: [PATCH 17/46] IconGrid: refactor props to accept a whole IconEntry --- src/components/IconGrid/DetailsPanel.tsx | 18 +++++++++++------- src/components/IconGrid/IconGrid.tsx | 2 +- src/components/IconGrid/IconGridItem.tsx | 10 +++++----- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/components/IconGrid/DetailsPanel.tsx b/src/components/IconGrid/DetailsPanel.tsx index 4123995..d86abf6 100644 --- a/src/components/IconGrid/DetailsPanel.tsx +++ b/src/components/IconGrid/DetailsPanel.tsx @@ -3,7 +3,7 @@ import { useRecoilValue, useSetRecoilState } from "recoil"; import { motion } from "framer-motion"; import { Svg2Png } from "svg2png-converter"; import { saveAs } from "file-saver"; -import { Icon, Copy, X, CheckCircle, Download } from "phosphor-react"; +import { Copy, X, CheckCircle, Download } from "phosphor-react"; import { iconWeightAtom, @@ -12,6 +12,8 @@ import { iconPreviewOpenAtom, } from "../../state/atoms"; import useTransientState from "../../hooks/useTransientState"; +import TagCloud from "./TagCloud"; +import { IconEntry } from "../../lib"; const panelVariants = { open: { @@ -43,12 +45,12 @@ interface InfoPanelProps { index: number; spans: number; isDark: boolean; - name: string; - Icon: Icon; + entry: IconEntry; } const DetailsPanel: React.FC = (props) => { - const { index, spans, isDark, name, Icon } = props; + const { index, spans, isDark, entry } = props; + const { name, Icon, categories, tags } = entry; const weight = useRecoilValue(iconWeightAtom); const size = useRecoilValue(iconSizeAtom); const color = useRecoilValue(iconColorAtom); @@ -56,10 +58,12 @@ const DetailsPanel: React.FC = (props) => { const [copied, setCopied] = useTransientState(false, 2000); const ref = useRef(null); - const buttonBarStyle = { color: isDark ? "white" : buttonColor }; - const snippetButtonStyle = + const buttonBarStyle: React.CSSProperties = { + color: isDark ? "white" : buttonColor, + }; + const snippetButtonStyle: React.CSSProperties = weight === "duotone" - ? { color: disabledColor, "user-select": "none" } + ? { color: disabledColor, userSelect: "none" } : { color: buttonColor }; const snippets = { diff --git a/src/components/IconGrid/IconGrid.tsx b/src/components/IconGrid/IconGrid.tsx index 2d7b88c..a8d3664 100644 --- a/src/components/IconGrid/IconGrid.tsx +++ b/src/components/IconGrid/IconGrid.tsx @@ -52,7 +52,7 @@ const IconGrid: React.FC = () => { index={index} spans={spans} isDark={isDark} - {...iconEntry} + entry={iconEntry} originOffset={originOffset} /> ))} diff --git a/src/components/IconGrid/IconGridItem.tsx b/src/components/IconGrid/IconGridItem.tsx index b515ad0..ecd2ee4 100644 --- a/src/components/IconGrid/IconGridItem.tsx +++ b/src/components/IconGrid/IconGridItem.tsx @@ -6,17 +6,16 @@ import React, { } from "react"; import { useRecoilState } from "recoil"; import { motion, AnimatePresence } from "framer-motion"; -import { IconProps, Icon } from "phosphor-react"; import { iconPreviewOpenAtom } from "../../state/atoms"; import DetailsPanel from "./DetailsPanel"; +import { IconEntry } from "../../lib"; -interface IconGridItemProps extends IconProps { +interface IconGridItemProps { index: number; spans: number; isDark: boolean; - name: string; - Icon: Icon; + entry: IconEntry; originOffset: MutableRefObject<{ top: number; left: number }>; } @@ -33,7 +32,8 @@ const itemVariants = { }; const IconGridItem: React.FC = (props) => { - const { index, originOffset, name, Icon } = props; + const { index, originOffset, entry } = props; + const { name, Icon } = entry; const [open, setOpen] = useRecoilState(iconPreviewOpenAtom); const isOpen = open === name; const delayRef = useRef(0); From f57577c37414db8fee8f36e41df6492b9a5a6ed9 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Wed, 7 Oct 2020 15:56:26 -0400 Subject: [PATCH 18/46] SearchInput: update input value when query changes In cases where the searchQueryAtom is changed directly, either via clicking a tag-button or from some future use-case, the input value is updated as well. --- src/components/SearchInput/SearchInput.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/components/SearchInput/SearchInput.tsx b/src/components/SearchInput/SearchInput.tsx index 739fde0..53ad292 100644 --- a/src/components/SearchInput/SearchInput.tsx +++ b/src/components/SearchInput/SearchInput.tsx @@ -1,4 +1,4 @@ -import React, { useState } from "react"; +import React, { useState, useEffect } from "react"; import { useRecoilState } from "recoil"; import { useDebounce } from "react-use"; import { MagnifyingGlass, X, HourglassHigh } from "phosphor-react"; @@ -11,7 +11,8 @@ type SearchInputProps = {}; const SearchInput: React.FC = () => { const [value, setValue] = useState(""); const [query, setQuery] = useRecoilState(searchQueryAtom); - void query; + + useEffect(() => void (value !== query && setValue(query)), [query]); const [isReady] = useDebounce( () => { From 2487b47c6532b4aec28167f218f3b27c65e06ef2 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Wed, 7 Oct 2020 16:00:27 -0400 Subject: [PATCH 19/46] IconGrid: add TagCloud on empty search --- src/components/IconGrid/IconGrid.css | 5 +++-- src/components/IconGrid/IconGrid.tsx | 13 +++++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/components/IconGrid/IconGrid.css b/src/components/IconGrid/IconGrid.css index 6114ce6..ea8c096 100644 --- a/src/components/IconGrid/IconGrid.css +++ b/src/components/IconGrid/IconGrid.css @@ -25,11 +25,11 @@ -moz-user-select: none; -webkit-user-select: none; cursor: pointer; + /* transition: background-color 100ms ease; */ } .grid-item:hover { - background-color: rgba(163, 159, 171, 0.1); - transition: background-color 0.2s; + background-color: rgba(163, 159, 171, 0.1); } .grid-item:focus { @@ -170,6 +170,7 @@ overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + margin-bottom: 0; } .beacon { diff --git a/src/components/IconGrid/IconGrid.tsx b/src/components/IconGrid/IconGrid.tsx index a8d3664..33dd668 100644 --- a/src/components/IconGrid/IconGrid.tsx +++ b/src/components/IconGrid/IconGrid.tsx @@ -10,9 +10,12 @@ import { } from "../../state/selectors"; import useGridSpans from "../../hooks/useGridSpans"; import IconGridItem from "./IconGridItem"; -import Warn from "../Warn/Warn"; +import TagCloud from "./TagCloud"; +import Notice from "../Notice/Notice"; import "./IconGrid.css"; +const defaultSearchTags = ["communication", "design", "editor", "emoji", "maps", "media", "weather"]; + type IconGridProps = {}; const IconGrid: React.FC = () => { @@ -31,7 +34,13 @@ const IconGrid: React.FC = () => { controls.start("visible"); }, [controls, filteredQueryResults]); - if (!filteredQueryResults.length) return ; + if (!filteredQueryResults.length) + return ( + + Try searching a category or keyword: + + + ); return ( From 255730a11db7f103f28e2b6aa5cf644cfae3295d Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Wed, 7 Oct 2020 16:01:21 -0400 Subject: [PATCH 20/46] DetailsPanel: add TagCloud for selected icon --- src/components/IconGrid/DetailsPanel.tsx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/components/IconGrid/DetailsPanel.tsx b/src/components/IconGrid/DetailsPanel.tsx index d86abf6..d39c7d3 100644 --- a/src/components/IconGrid/DetailsPanel.tsx +++ b/src/components/IconGrid/DetailsPanel.tsx @@ -140,6 +140,13 @@ const DetailsPanel: React.FC = (props) => { >

{name}

+ ([...categories, ...name.split("-"), ...tags]) + )} + isDark={isDark} + /> Date: Wed, 7 Oct 2020 16:02:11 -0400 Subject: [PATCH 21/46] Footer: update copy and remove command img for now --- src/components/Footer/Footer.tsx | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/components/Footer/Footer.tsx b/src/components/Footer/Footer.tsx index 838bdf2..d45b9df 100644 --- a/src/components/Footer/Footer.tsx +++ b/src/components/Footer/Footer.tsx @@ -4,8 +4,8 @@ import { ArrowElbowDownRight, Coffee, Heart } from "phosphor-react"; import uArrowUpLeft from "../../assets/u-arrow-up-left.svg"; import markerGreen from "../../assets/marker-green.svg"; import postIt from "../../assets/footer-mobile.svg"; -import commandKey from "../../assets/command-key.svg"; -import commandKeySpec from "../../assets/command-key-spec.svg"; +// import commandKey from "../../assets/command-key.svg"; +// import commandKeySpec from "../../assets/command-key-spec.svg"; import "./Footer.css"; type FooterProps = {}; @@ -27,13 +27,13 @@ const Footer: React.FC = () => {
- + {/* + /> */}
@@ -100,15 +100,14 @@ const Footer: React.FC = () => { community.

- Phosphor is licensed under{" "} + Phosphor is free and open-source, licensed under{" "} MIT - , free to use without attribution. If you enjoy these icons, please - support us with a donation. + . If you enjoy these icons, please support us with a donation.

- Copyright © 2020 Phosphor Icons. Phosphor Icons is designed by{" "} + Phosphor Icons is designed by{" "} Helena Zhang {" "} From c7c3600466a885e63c0f47d32075449b15b20c6d Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Fri, 9 Oct 2020 11:28:00 -0400 Subject: [PATCH 22/46] icons: move carets to Arrows category --- src/lib/icons.ts | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/lib/icons.ts b/src/lib/icons.ts index 89f3b2a..b49a034 100644 --- a/src/lib/icons.ts +++ b/src/lib/icons.ts @@ -1096,98 +1096,98 @@ export const icons: ReadonlyArray = [ }, { name: "caret-up", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: ["chevron", "directional", "pointer", "pointing", "arrowhead"], Icon: Icon.CaretUp, }, { name: "caret-down", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: ["chevron", "directional", "pointer", "pointing", "arrowhead"], Icon: Icon.CaretDown, }, { name: "caret-left", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: ["chevron", "directional", "pointer", "pointing", "arrowhead"], Icon: Icon.CaretLeft, }, { name: "caret-right", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: ["chevron", "directional", "pointer", "pointing", "arrowhead"], Icon: Icon.CaretRight, }, { name: "caret-double-up", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: ["chevron", "directional", "pointer", "pointing", "arrowhead"], Icon: Icon.CaretDoubleUp, }, { name: "caret-double-down", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: ["chevron", "directional", "pointer", "pointing", "arrowhead"], Icon: Icon.CaretDoubleDown, }, { name: "caret-double-left", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: ["chevron", "directional", "pointer", "pointing", "arrowhead"], Icon: Icon.CaretDoubleLeft, }, { name: "caret-double-right", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: ["chevron", "directional", "pointer", "pointing", "arrowhead"], Icon: Icon.CaretDoubleRight, }, { name: "caret-circle-up", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: ["chevron", "directional", "pointer", "pointing", "arrowhead"], Icon: Icon.CaretCircleUp, }, { name: "caret-circle-down", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: ["chevron", "directional", "pointer", "pointing", "arrowhead"], Icon: Icon.CaretCircleDown, }, { name: "caret-circle-left", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: ["chevron", "directional", "pointer", "pointing", "arrowhead"], Icon: Icon.CaretCircleLeft, }, { name: "caret-circle-right", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: ["chevron", "directional", "pointer", "pointing", "arrowhead"], Icon: Icon.CaretCircleRight, }, { name: "caret-circle-double-up", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: ["chevron", "directional", "pointer", "pointing", "arrowhead"], Icon: Icon.CaretCircleDoubleUp, }, { name: "caret-circle-double-down", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: ["chevron", "directional", "pointer", "pointing", "arrowhead"], Icon: Icon.CaretCircleDoubleDown, }, { name: "caret-circle-double-left", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: ["chevron", "directional", "pointer", "pointing", "arrowhead"], Icon: Icon.CaretCircleDoubleLeft, }, { name: "caret-circle-double-right", - categories: [IconCategory.OTHER], + categories: [IconCategory.ARROWS], tags: ["chevron", "directional", "pointer", "pointing", "arrowhead"], Icon: Icon.CaretCircleDoubleRight, }, @@ -3198,7 +3198,7 @@ export const icons: ReadonlyArray = [ }, { name: "list", - categories: [IconCategory.SYSTEM, IconCategory.OTHER], + categories: [IconCategory.SYSTEM, IconCategory.EDITOR], tags: [ "hamburger menu", "overflow menu", @@ -3214,25 +3214,25 @@ export const icons: ReadonlyArray = [ }, { name: "list-bullets", - categories: [IconCategory.SYSTEM, IconCategory.OTHER], + categories: [IconCategory.SYSTEM, IconCategory.EDITOR], tags: ["ul", "unordered list", "bulleted list", "checklist"], Icon: Icon.ListBullets, }, { name: "list-dashes", - categories: [IconCategory.SYSTEM, IconCategory.OTHER], + categories: [IconCategory.SYSTEM, IconCategory.EDITOR], tags: ["ul", "unordered list", "dashed list", "checklist"], Icon: Icon.ListDashes, }, { name: "list-numbers", - categories: [IconCategory.SYSTEM, IconCategory.OTHER], + categories: [IconCategory.SYSTEM, IconCategory.EDITOR], tags: ["ol", "ordered list", "numbered list", "checklist"], Icon: Icon.ListNumbers, }, { name: "list-plus", - categories: [IconCategory.SYSTEM, IconCategory.OTHER], + categories: [IconCategory.SYSTEM, IconCategory.EDITOR], tags: ["ul", "ol", "unordered list", "ordered list", "checklist", "add"], Icon: Icon.ListPlus, }, From 87f5aacf7d1ed56de4e068263936bc2dccf4dab8 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Fri, 9 Oct 2020 11:28:34 -0400 Subject: [PATCH 23/46] EmptyState: match padding to IconGrid --- src/components/IconGrid/IconGrid.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/IconGrid/IconGrid.css b/src/components/IconGrid/IconGrid.css index ea8c096..179b074 100644 --- a/src/components/IconGrid/IconGrid.css +++ b/src/components/IconGrid/IconGrid.css @@ -29,7 +29,7 @@ } .grid-item:hover { - background-color: rgba(163, 159, 171, 0.1); + background-color: rgba(163, 159, 171, 0.1); } .grid-item:focus { @@ -159,7 +159,7 @@ flex-direction: column; align-items: center; justify-content: center; - padding: 0 16px 4px; + padding: 32px 16px; min-height: 80vh; max-width: 1120px; margin: auto; From ed3011a02028717033cfdf064c2dd7cbb7d495c6 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Fri, 9 Oct 2020 22:54:41 -0400 Subject: [PATCH 24/46] SearchInput: suppress paranoid exhaustive-deps --- src/components/SearchInput/SearchInput.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/SearchInput/SearchInput.tsx b/src/components/SearchInput/SearchInput.tsx index 53ad292..b55a7ff 100644 --- a/src/components/SearchInput/SearchInput.tsx +++ b/src/components/SearchInput/SearchInput.tsx @@ -12,6 +12,7 @@ const SearchInput: React.FC = () => { const [value, setValue] = useState(""); const [query, setQuery] = useRecoilState(searchQueryAtom); + // eslint-disable-next-line react-hooks/exhaustive-deps useEffect(() => void (value !== query && setValue(query)), [query]); const [isReady] = useDebounce( From 5acea5eafd6776c9cd0b594acd41d223ac10bc47 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Fri, 9 Oct 2020 22:55:08 -0400 Subject: [PATCH 25/46] App: make links column gaps Safari-friendly --- src/components/App/App.css | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/components/App/App.css b/src/components/App/App.css index b1cc0a6..ee9fbec 100644 --- a/src/components/App/App.css +++ b/src/components/App/App.css @@ -120,13 +120,14 @@ a.main-link:hover:after { align-content: flex-start; align-items: flex-start; justify-content: center; - column-gap: 72px; + /* column-gap: 72px; */ + /* -webkit-column-gap: 72px; */ margin: 32px 0 64px; max-height: 144px; } .links > div { - margin: 0 0 24px 0; + margin: 0 72px 24px 0; display: flex; align-items: center; } From 5f6c5eb4ad549d2653ceda70d1bf8b3eb7e3c479 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Fri, 9 Oct 2020 22:55:25 -0400 Subject: [PATCH 26/46] Header+Footer: add Patreon links --- src/components/Footer/Footer.tsx | 2 +- src/components/Header/Header.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/Footer/Footer.tsx b/src/components/Footer/Footer.tsx index d45b9df..9464665 100644 --- a/src/components/Footer/Footer.tsx +++ b/src/components/Footer/Footer.tsx @@ -73,7 +73,7 @@ const Footer: React.FC = () => { Donate on PayPal {" / "} - + Patreon diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx index 0a8aacf..3ffd89a 100644 --- a/src/components/Header/Header.tsx +++ b/src/components/Header/Header.tsx @@ -112,7 +112,7 @@ const Header: React.FC = () => { Donate on PayPal {" / "} - + Patreon From e2d61564c02d849c320161ee32c7b53d1bc54ba8 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Fri, 9 Oct 2020 22:55:45 -0400 Subject: [PATCH 27/46] IgonGrid: update default search tag suggestions --- src/components/IconGrid/IconGrid.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/IconGrid/IconGrid.tsx b/src/components/IconGrid/IconGrid.tsx index 33dd668..803329c 100644 --- a/src/components/IconGrid/IconGrid.tsx +++ b/src/components/IconGrid/IconGrid.tsx @@ -14,7 +14,7 @@ import TagCloud from "./TagCloud"; import Notice from "../Notice/Notice"; import "./IconGrid.css"; -const defaultSearchTags = ["communication", "design", "editor", "emoji", "maps", "media", "weather"]; +const defaultSearchTags = ["communication", "editor", "emoji", "maps", "weather"]; type IconGridProps = {}; From b4032d80e8e1c5c70b036a7f4aadf97f581b5055 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Fri, 9 Oct 2020 23:23:30 -0400 Subject: [PATCH 28/46] icons: suffix brand icons with 'logo' --- src/lib/icons.ts | 56 +++++++++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/src/lib/icons.ts b/src/lib/icons.ts index b49a034..d9c787e 100644 --- a/src/lib/icons.ts +++ b/src/lib/icons.ts @@ -36,7 +36,7 @@ export const icons: ReadonlyArray = [ Icon: Icon.Alarm, }, { - name: "android", + name: "android-logo", categories: [ IconCategory.BRAND, IconCategory.COMMUNICATION, @@ -44,7 +44,7 @@ export const icons: ReadonlyArray = [ IconCategory.DEVICE, IconCategory.SYSTEM, ], - tags: ["google", "mobile", "phone", "cellular", "cellphone"], + tags: ["logos", "google", "mobile", "phone", "cellular", "cellphone"], Icon: Icon.Android, }, { @@ -2024,9 +2024,9 @@ export const icons: ReadonlyArray = [ Icon: Icon.DownloadSimple, }, { - name: "dribbble", + name: "dribbble-logo", categories: [IconCategory.BRAND, IconCategory.HEALTH], - tags: ["round", "basketball", "sports", "design"], + tags: ["logos", "round", "basketball", "sports", "design"], Icon: Icon.Dribbble, }, { @@ -2098,9 +2098,9 @@ export const icons: ReadonlyArray = [ Icon: Icon.EyeClosed, }, { - name: "facebook", + name: "facebook-logo", categories: [IconCategory.BRAND, IconCategory.COMMUNICATION], - tags: ["social media"], + tags: ["logos", "social media"], Icon: Icon.Facebook, }, { @@ -2138,9 +2138,10 @@ export const icons: ReadonlyArray = [ Icon: Icon.FastForward, }, { - name: "figma", + name: "figma-logo", categories: [IconCategory.BRAND, IconCategory.DESIGN], tags: [ + "logos", "drawing", "art", "illustration", @@ -2315,7 +2316,7 @@ export const icons: ReadonlyArray = [ Icon: Icon.FolderOpen, }, { - name: "folder-dip", + name: "folder-notch", categories: [ IconCategory.DOCUMENT, IconCategory.EDITOR, @@ -2325,7 +2326,7 @@ export const icons: ReadonlyArray = [ Icon: Icon.FolderDip, }, { - name: "folder-dip-plus", + name: "folder-notch-plus", categories: [ IconCategory.DOCUMENT, IconCategory.EDITOR, @@ -2344,7 +2345,7 @@ export const icons: ReadonlyArray = [ Icon: Icon.FolderDipPlus, }, { - name: "folder-dip-minus", + name: "folder-notch-minus", categories: [ IconCategory.DOCUMENT, IconCategory.EDITOR, @@ -2354,7 +2355,7 @@ export const icons: ReadonlyArray = [ Icon: Icon.FolderDipMinus, }, { - name: "folder-dip-open", + name: "folder-notch-open", categories: [ IconCategory.DOCUMENT, IconCategory.EDITOR, @@ -2427,9 +2428,9 @@ export const icons: ReadonlyArray = [ Icon: Icon.ForkKnife, }, { - name: "framer", + name: "framer-logo", categories: [IconCategory.BRAND, IconCategory.DESIGN], - tags: ["interface", "ui", "motion", "prototype", "prototyping"], + tags: ["logos", "interface", "ui", "motion", "prototype", "prototyping"], Icon: Icon.Framer, }, { @@ -2668,15 +2669,16 @@ export const icons: ReadonlyArray = [ Icon: Icon.GlobeStand, }, { - name: "google", + name: "google-logo", categories: [IconCategory.BRAND], - tags: ["search engine", "phone", "mobile", "android"], + tags: ["logos", "search engine", "phone", "mobile", "android"], Icon: Icon.Google, }, { - name: "google-play", + name: "google-play-logo", categories: [IconCategory.BRAND, IconCategory.SYSTEM, IconCategory.MEDIA], tags: [ + "logos", "games", "apps", "applications", @@ -3029,9 +3031,9 @@ export const icons: ReadonlyArray = [ Icon: Icon.Info, }, { - name: "instagram", + name: "instagram-logo", categories: [IconCategory.BRAND, IconCategory.COMMUNICATION], - tags: ["social media", "photography", "camera"], + tags: ["logos", "social media", "photography", "camera"], Icon: Icon.Instagram, }, { @@ -3191,9 +3193,9 @@ export const icons: ReadonlyArray = [ Icon: Icon.LinkSimpleHorizontalBreak, }, { - name: "linkedin", + name: "linkedin-logo", categories: [IconCategory.BRAND, IconCategory.COMMUNICATION], - tags: ["jobs", "employment", "social media"], + tags: ["logos", "jobs", "employment", "social media"], Icon: Icon.Linkedin, }, { @@ -3451,9 +3453,9 @@ export const icons: ReadonlyArray = [ Icon: Icon.Medal, }, { - name: "medium", + name: "medium-logo", categories: [IconCategory.BRAND], - tags: ["reading", "writing", "news", "social media"], + tags: ["logos", "reading", "writing", "news", "social media"], Icon: Icon.Medium, }, { @@ -4726,7 +4728,7 @@ export const icons: ReadonlyArray = [ Icon: Icon.SignOut, }, { - name: "sketch", + name: "sketch-logo", categories: [IconCategory.DESIGN, IconCategory.OTHER], tags: [ "drawing", @@ -5301,9 +5303,9 @@ export const icons: ReadonlyArray = [ Icon: Icon.Truck, }, { - name: "twitter", + name: "twitter-logo", categories: [IconCategory.BRAND, IconCategory.COMMUNICATION], - tags: ["social media", "tweets", "birds"], + tags: ["logos", "social media", "tweets", "birds"], Icon: Icon.Twitter, }, { @@ -5593,13 +5595,13 @@ export const icons: ReadonlyArray = [ Icon: Icon.XSquare, }, { - name: "youtube", + name: "youtube-logo", categories: [ IconCategory.BRAND, IconCategory.COMMUNICATION, IconCategory.MEDIA, ], - tags: ["google", "videos", "movies", "social media"], + tags: ["logos", "google", "videos", "movies", "social media"], Icon: Icon.Youtube, }, ]; From 4df6058a84a1bdaefb17b95efb31a7962f1328b8 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Sat, 10 Oct 2020 01:14:22 -0400 Subject: [PATCH 29/46] icons: fix up some categories --- src/lib/icons.ts | 56 ++++++++---------------------------------------- 1 file changed, 9 insertions(+), 47 deletions(-) diff --git a/src/lib/icons.ts b/src/lib/icons.ts index d9c787e..75bec54 100644 --- a/src/lib/icons.ts +++ b/src/lib/icons.ts @@ -2800,7 +2800,6 @@ export const icons: ReadonlyArray = [ name: "heart", categories: [ IconCategory.COMMUNICATION, - IconCategory.DESIGN, IconCategory.HEALTH, IconCategory.OTHER, ], @@ -2824,7 +2823,6 @@ export const icons: ReadonlyArray = [ name: "heart-straight", categories: [ IconCategory.COMMUNICATION, - IconCategory.DESIGN, IconCategory.HEALTH, IconCategory.OTHER, ], @@ -4795,41 +4793,25 @@ export const icons: ReadonlyArray = [ }, { name: "smiley", - categories: [ - IconCategory.COMMUNICATION, - IconCategory.DESIGN, - IconCategory.OTHER, - ], + categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], tags: ["face", "smiley", "emoji", "happy", "grinning", "smiling"], Icon: Icon.Smiley, }, { name: "smiley-blank", - categories: [ - IconCategory.COMMUNICATION, - IconCategory.DESIGN, - IconCategory.OTHER, - ], + categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], tags: ["face", "smiley", "emoji", "unimpressed", "no face"], Icon: Icon.SmileyBlank, }, { name: "smiley-meh", - categories: [ - IconCategory.COMMUNICATION, - IconCategory.DESIGN, - IconCategory.OTHER, - ], + categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], tags: ["face", "smiley", "emoji", "unimpressed", "neutral"], Icon: Icon.SmileyMeh, }, { name: "smiley-nervous", - categories: [ - IconCategory.COMMUNICATION, - IconCategory.DESIGN, - IconCategory.OTHER, - ], + categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], tags: [ "face", "smiley", @@ -4845,31 +4827,19 @@ export const icons: ReadonlyArray = [ }, { name: "smiley-sad", - categories: [ - IconCategory.COMMUNICATION, - IconCategory.DESIGN, - IconCategory.OTHER, - ], + categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], tags: ["face", "smiley", "emoji", "unhappy", "frowning"], Icon: Icon.SmileySad, }, { name: "smiley-sticker", - categories: [ - IconCategory.COMMUNICATION, - IconCategory.DESIGN, - IconCategory.OTHER, - ], + categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], tags: ["face", "smiley", "emoji", "happy", "grinning", "smiling"], Icon: Icon.SmileySticker, }, { name: "smiley-x-eyes", - categories: [ - IconCategory.COMMUNICATION, - IconCategory.DESIGN, - IconCategory.OTHER, - ], + categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], tags: ["face", "smiley", "emoji", "dead", "killed", "unconscious"], Icon: Icon.SmileyXEyes, }, @@ -5142,21 +5112,13 @@ export const icons: ReadonlyArray = [ }, { name: "thumbs-up", - categories: [ - IconCategory.COMMUNICATION, - IconCategory.DESIGN, - IconCategory.OTHER, - ], + categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], tags: ["like", "love", "favorited", "favorites", "emoji"], Icon: Icon.ThumbsUp, }, { name: "thumbs-down", - categories: [ - IconCategory.COMMUNICATION, - IconCategory.DESIGN, - IconCategory.OTHER, - ], + categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], tags: ["dislike", "hate", "emoji"], Icon: Icon.ThumbsDown, }, From 496c14c8c65db401cfac34b28e34382d414fc69c Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Sat, 10 Oct 2020 01:15:35 -0400 Subject: [PATCH 30/46] meta: replace Google Analytics with react-ga --- package.json | 1 + public/index.html | 15 --------------- src/index.tsx | 6 +++++- 3 files changed, 6 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index 9f504c3..07ffb1e 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "react": "^17.0.0-rc.0", "react-dom": "^17.0.0-rc.0", "react-dropdown-select": "^4.4.2", + "react-ga": "^3.1.2", "react-scripts": "3.4.1", "react-use": "^15.3.2", "recoil": "^0.0.13", diff --git a/public/index.html b/public/index.html index c4fb387..20316b4 100644 --- a/public/index.html +++ b/public/index.html @@ -12,21 +12,6 @@ /> - - - - From 9a4d545dc5d3f416716cd9f9e3f4aeeaab9c6181 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Sat, 10 Oct 2020 01:16:35 -0400 Subject: [PATCH 31/46] SeachInput: log GA events on searches & tags --- src/components/SearchInput/SearchInput.tsx | 23 +++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/components/SearchInput/SearchInput.tsx b/src/components/SearchInput/SearchInput.tsx index b55a7ff..d6d15d5 100644 --- a/src/components/SearchInput/SearchInput.tsx +++ b/src/components/SearchInput/SearchInput.tsx @@ -2,6 +2,7 @@ import React, { useState, useEffect } from "react"; import { useRecoilState } from "recoil"; import { useDebounce } from "react-use"; import { MagnifyingGlass, X, HourglassHigh } from "phosphor-react"; +import ReactGA from "react-ga"; import { searchQueryAtom } from "../../state/atoms"; import "./SearchInput.css"; @@ -12,16 +13,24 @@ const SearchInput: React.FC = () => { const [value, setValue] = useState(""); const [query, setQuery] = useRecoilState(searchQueryAtom); - // eslint-disable-next-line react-hooks/exhaustive-deps - useEffect(() => void (value !== query && setValue(query)), [query]); + /* eslint-disable react-hooks/exhaustive-deps */ + useEffect(() => { + if (value !== query) { + setValue(query); + ReactGA.event({ category: "Search", action: "Tag", label: query }); + } + }, [query]); + /* eslint-enable react-hooks/exhaustive-deps */ const [isReady] = useDebounce( () => { - setQuery(value); - value && - void document - .getElementById("beacon") - ?.scrollIntoView({ block: "start", behavior: "smooth" }); + if (value !== query) { + setQuery(value); + !!value && ReactGA.event({ category: "Search", action: "Query", label: value }); + } + !!value && void document + .getElementById("beacon") + ?.scrollIntoView({ block: "start", behavior: "smooth" }); }, 250, [value] From 079633d8f62113e1aaab79ed1a925025e436dfcb Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Sat, 10 Oct 2020 01:17:02 -0400 Subject: [PATCH 32/46] DetailsPanel: log GA events on icon details viewed --- src/components/IconGrid/DetailsPanel.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/components/IconGrid/DetailsPanel.tsx b/src/components/IconGrid/DetailsPanel.tsx index d39c7d3..3f9738a 100644 --- a/src/components/IconGrid/DetailsPanel.tsx +++ b/src/components/IconGrid/DetailsPanel.tsx @@ -1,9 +1,10 @@ -import React, { useRef } from "react"; +import React, { useRef, useEffect } from "react"; import { useRecoilValue, useSetRecoilState } from "recoil"; import { motion } from "framer-motion"; import { Svg2Png } from "svg2png-converter"; import { saveAs } from "file-saver"; import { Copy, X, CheckCircle, Download } from "phosphor-react"; +import ReactGA from "react-ga"; import { iconWeightAtom, @@ -58,6 +59,11 @@ const DetailsPanel: React.FC = (props) => { const [copied, setCopied] = useTransientState(false, 2000); const ref = useRef(null); + useEffect( + () => ReactGA.event({ category: "Grid", action: "Details", label: name }), + [name] + ); + const buttonBarStyle: React.CSSProperties = { color: isDark ? "white" : buttonColor, }; From ae9e71886bb4643552c93151fb63202b0fabe39b Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Sat, 10 Oct 2020 01:17:23 -0400 Subject: [PATCH 33/46] Header+Footer: log GA events on download(s) --- src/components/Footer/Footer.tsx | 30 ++++++++++++++++++++++-------- src/components/Header/Header.tsx | 30 ++++++++++++++++++++++-------- 2 files changed, 44 insertions(+), 16 deletions(-) diff --git a/src/components/Footer/Footer.tsx b/src/components/Footer/Footer.tsx index 9464665..05a466c 100644 --- a/src/components/Footer/Footer.tsx +++ b/src/components/Footer/Footer.tsx @@ -1,5 +1,6 @@ import React from "react"; import { ArrowElbowDownRight, Coffee, Heart } from "phosphor-react"; +import { OutboundLink } from "react-ga"; import uArrowUpLeft from "../../assets/u-arrow-up-left.svg"; import markerGreen from "../../assets/marker-green.svg"; @@ -37,25 +38,35 @@ const Footer: React.FC = () => {

@@ -73,7 +84,10 @@ const Footer: React.FC = () => { Donate on PayPal {" / "} - + Patreon diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx index 3ffd89a..feb17c3 100644 --- a/src/components/Header/Header.tsx +++ b/src/components/Header/Header.tsx @@ -4,6 +4,7 @@ import { ArrowCircleDown, ArrowElbowDownRight, } from "phosphor-react"; +import { OutboundLink } from "react-ga"; import "./Header.css"; import markerPurple from "../../assets/marker-purple.svg"; @@ -76,25 +77,35 @@ const Header: React.FC = () => {
@@ -112,7 +123,10 @@ const Header: React.FC = () => { Donate on PayPal {" / "} - + Patreon From 012916881842c083a03d983b8df50668ed2cf863 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Sat, 10 Oct 2020 15:27:33 -0400 Subject: [PATCH 34/46] README: add phosphor-figma link --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 040afde..5f369c1 100644 --- a/README.md +++ b/README.md @@ -98,6 +98,7 @@ Download our [asset kit](https://www.phosphoricons.com/assets/phosphor-icons.zip - [phosphor-react](https://github.com/phosphor-icons/phosphor-react) ▲ Phosphor icon component library for React - [phosphor-vue](https://github.com/phosphor-icons/phosphor-vue) ▲ Phosphor icon component library for Vue - [phosphor-icons](https://github.com/phosphor-icons/phosphor-icons) ▲ Phosphor icons for Vanilla JS +- [phosphor-figma](https://github.com/phosphor-icons/phosphor-figma) ▲ Phosphor icons Figma plugin ## License From 413aa24d3b52e58076604e9bd99b34da85042b4a Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Sat, 10 Oct 2020 15:54:58 -0400 Subject: [PATCH 35/46] icons: update to phosphor-react@0.6.0 and tag --- package.json | 2 +- src/lib/icons.ts | 91 +++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 75 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index 07ffb1e..f11e0f2 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "file-saver": "^2.0.2", "framer-motion": "^2.1.0", "fuse.js": "^6.4.1", - "phosphor-react": "^0.5.0", + "phosphor-react": "^0.6.0", "react": "^17.0.0-rc.0", "react-dom": "^17.0.0-rc.0", "react-dropdown-select": "^4.4.2", diff --git a/src/lib/icons.ts b/src/lib/icons.ts index 75bec54..305e7c9 100644 --- a/src/lib/icons.ts +++ b/src/lib/icons.ts @@ -45,7 +45,7 @@ export const icons: ReadonlyArray = [ IconCategory.SYSTEM, ], tags: ["logos", "google", "mobile", "phone", "cellular", "cellphone"], - Icon: Icon.Android, + Icon: Icon.AndroidLogo, }, { name: "aperture", @@ -1734,6 +1734,27 @@ export const icons: ReadonlyArray = [ tags: ["pointer", "arrowhead", "mouse", "click"], Icon: Icon.Cursor, }, + { + name: "database", + categories: [ + IconCategory.DEVICE, + IconCategory.DEVELOPMENT, + IconCategory.SYSTEM, + ], + tags: [ + "saved", + "saving", + "archived", + "archiving", + "archival", + "hard disk", + "storage", + "hdd", + "servers", + "databases", + ], + Icon: Icon.Database, + }, { name: "device-mobile", categories: [IconCategory.DEVICE], @@ -2027,7 +2048,25 @@ export const icons: ReadonlyArray = [ name: "dribbble-logo", categories: [IconCategory.BRAND, IconCategory.HEALTH], tags: ["logos", "round", "basketball", "sports", "design"], - Icon: Icon.Dribbble, + Icon: Icon.DribbbleLogo, + }, + { + name: "drop", + categories: [IconCategory.WEATHER, IconCategory.OTHER], + tags: ["droplet", "raindrop", "raining", "meteorology", "water"], + Icon: Icon.Drop, + }, + { + name: "eject", + categories: [IconCategory.MEDIA, IconCategory.SYSTEM], + tags: ["disconnect"], + Icon: Icon.Eject, + }, + { + name: "eraser", + categories: [IconCategory.DESIGN, IconCategory.EDITOR], + tags: ["write", "writing", "editing", "undo", "deleted"], + Icon: Icon.Eraser, }, { name: "envelope", @@ -2101,7 +2140,7 @@ export const icons: ReadonlyArray = [ name: "facebook-logo", categories: [IconCategory.BRAND, IconCategory.COMMUNICATION], tags: ["logos", "social media"], - Icon: Icon.Facebook, + Icon: Icon.FacebookLogo, }, { name: "faders", @@ -2150,7 +2189,7 @@ export const icons: ReadonlyArray = [ "prototype", "prototyping", ], - Icon: Icon.Figma, + Icon: Icon.FigmaLogo, }, { name: "file", @@ -2236,6 +2275,12 @@ export const icons: ReadonlyArray = [ ], Icon: Icon.FingerprintSimple, }, + { + name: "fire", + categories: [IconCategory.OTHER], + tags: ["flame", "burning", "match", "lighter"], + Icon: Icon.Fire, + }, { name: "flag", categories: [IconCategory.OTHER], @@ -2323,7 +2368,7 @@ export const icons: ReadonlyArray = [ IconCategory.SYSTEM, ], tags: ["directory", "directories", "files", "folders"], - Icon: Icon.FolderDip, + Icon: Icon.FolderNotch, }, { name: "folder-notch-plus", @@ -2342,7 +2387,7 @@ export const icons: ReadonlyArray = [ "new", "create", ], - Icon: Icon.FolderDipPlus, + Icon: Icon.FolderNotchPlus, }, { name: "folder-notch-minus", @@ -2352,7 +2397,7 @@ export const icons: ReadonlyArray = [ IconCategory.SYSTEM, ], tags: ["directory", "directories", "files", "delete", "write", "remove"], - Icon: Icon.FolderDipMinus, + Icon: Icon.FolderNotchMinus, }, { name: "folder-notch-open", @@ -2362,7 +2407,7 @@ export const icons: ReadonlyArray = [ IconCategory.SYSTEM, ], tags: ["directory", "directories", "files", "folders", "load"], - Icon: Icon.FolderDipOpen, + Icon: Icon.FolderNotchOpen, }, { name: "folder-simple", @@ -2431,7 +2476,7 @@ export const icons: ReadonlyArray = [ name: "framer-logo", categories: [IconCategory.BRAND, IconCategory.DESIGN], tags: ["logos", "interface", "ui", "motion", "prototype", "prototyping"], - Icon: Icon.Framer, + Icon: Icon.FramerLogo, }, { name: "funnel", @@ -2493,6 +2538,12 @@ export const icons: ReadonlyArray = [ tags: ["gifs", ".gif", "giphy"], Icon: Icon.Gif, }, + { + name: "gift", + categories: [IconCategory.OTHER], + tags: ["presents", "holidays", "birthdays"], + Icon: Icon.Gift, + }, { name: "git-branch", categories: [IconCategory.DEVELOPMENT], @@ -2672,7 +2723,7 @@ export const icons: ReadonlyArray = [ name: "google-logo", categories: [IconCategory.BRAND], tags: ["logos", "search engine", "phone", "mobile", "android"], - Icon: Icon.Google, + Icon: Icon.GoogleLogo, }, { name: "google-play-logo", @@ -2688,7 +2739,7 @@ export const icons: ReadonlyArray = [ "mobile", "android", ], - Icon: Icon.GooglePlay, + Icon: Icon.GooglePlayLogo, }, { name: "grid-four", @@ -3032,7 +3083,7 @@ export const icons: ReadonlyArray = [ name: "instagram-logo", categories: [IconCategory.BRAND, IconCategory.COMMUNICATION], tags: ["logos", "social media", "photography", "camera"], - Icon: Icon.Instagram, + Icon: Icon.InstagramLogo, }, { name: "intersect", @@ -3194,7 +3245,7 @@ export const icons: ReadonlyArray = [ name: "linkedin-logo", categories: [IconCategory.BRAND, IconCategory.COMMUNICATION], tags: ["logos", "jobs", "employment", "social media"], - Icon: Icon.Linkedin, + Icon: Icon.LinkedinLogo, }, { name: "list", @@ -3454,7 +3505,7 @@ export const icons: ReadonlyArray = [ name: "medium-logo", categories: [IconCategory.BRAND], tags: ["logos", "reading", "writing", "news", "social media"], - Icon: Icon.Medium, + Icon: Icon.MediumLogo, }, { name: "megaphone", @@ -4307,6 +4358,12 @@ export const icons: ReadonlyArray = [ tags: ["calls", "missed", "errors", "telephone", "landline"], Icon: Icon.PhoneX, }, + { + name: "phosphor-logo", + categories: [IconCategory.BRAND], + tags: ["logos"], + Icon: Icon.PhosphorLogo, + }, { name: "play", categories: [IconCategory.MEDIA, IconCategory.SYSTEM], @@ -4739,7 +4796,7 @@ export const icons: ReadonlyArray = [ "gemstone", "diamond", ], - Icon: Icon.Sketch, + Icon: Icon.SketchLogo, }, { name: "skip-back", @@ -5268,7 +5325,7 @@ export const icons: ReadonlyArray = [ name: "twitter-logo", categories: [IconCategory.BRAND, IconCategory.COMMUNICATION], tags: ["logos", "social media", "tweets", "birds"], - Icon: Icon.Twitter, + Icon: Icon.TwitterLogo, }, { name: "upload", @@ -5564,7 +5621,7 @@ export const icons: ReadonlyArray = [ IconCategory.MEDIA, ], tags: ["logos", "google", "videos", "movies", "social media"], - Icon: Icon.Youtube, + Icon: Icon.YoutubeLogo, }, ]; From 1a2c3ef1de5f5a95af0552a9bee4157b95ec0e04 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Sat, 10 Oct 2020 16:03:26 -0400 Subject: [PATCH 36/46] Links: extract external navigation links component The Header and Footer shared some duplicated code related to external links. We moved the markup and CSS into a separate Links component to DRY it up. We currently apply a 'line-through' style to the Figma links, since they are not yet implemented. This is a visual treatment only an needs fixed before production release! --- src/components/App/App.css | 42 ----------------- src/components/Footer/Footer.tsx | 74 ++--------------------------- src/components/Header/Header.tsx | 78 ++----------------------------- src/components/Links/Links.css | 41 ++++++++++++++++ src/components/Links/Links.tsx | 80 ++++++++++++++++++++++++++++++++ 5 files changed, 128 insertions(+), 187 deletions(-) create mode 100644 src/components/Links/Links.css create mode 100644 src/components/Links/Links.tsx diff --git a/src/components/App/App.css b/src/components/App/App.css index ee9fbec..ca2ab6d 100644 --- a/src/components/App/App.css +++ b/src/components/App/App.css @@ -113,45 +113,3 @@ a.main-link:after { a.main-link:hover:after { width: 0%; } - -.links { - display: flex; - flex-flow: column wrap; - align-content: flex-start; - align-items: flex-start; - justify-content: center; - /* column-gap: 72px; */ - /* -webkit-column-gap: 72px; */ - margin: 32px 0 64px; - max-height: 144px; -} - -.links > div { - margin: 0 72px 24px 0; - display: flex; - align-items: center; -} - -.links svg { - margin-right: 12px; -} - -a.nav-link { - text-decoration: none; - position: relative; - color: black; -} - -a.nav-link:after { - content: ""; - position: absolute; - bottom: -2px; - left: 0; - width: 0%; - border-bottom: 1px solid black; - transition: 0.2s; -} - -a.nav-link:hover:after { - width: 100%; -} diff --git a/src/components/Footer/Footer.tsx b/src/components/Footer/Footer.tsx index 05a466c..86d5998 100644 --- a/src/components/Footer/Footer.tsx +++ b/src/components/Footer/Footer.tsx @@ -1,12 +1,10 @@ import React from "react"; -import { ArrowElbowDownRight, Coffee, Heart } from "phosphor-react"; -import { OutboundLink } from "react-ga"; +import { Coffee, Heart } from "phosphor-react"; import uArrowUpLeft from "../../assets/u-arrow-up-left.svg"; import markerGreen from "../../assets/marker-green.svg"; import postIt from "../../assets/footer-mobile.svg"; -// import commandKey from "../../assets/command-key.svg"; -// import commandKeySpec from "../../assets/command-key-spec.svg"; +import Links from "../Links/Links"; import "./Footer.css"; type FooterProps = {}; @@ -35,73 +33,7 @@ const Footer: React.FC = () => { src={commandKey} alt="" /> */} -
-
- - - Download all - -
-
- - - Figma library - -
-
- - - Figma plugin - -
- - - -
+

We designed the icon library we always wanted to use. Easy to pick up and plug in. Truly consistent in style and scale. Flexible to diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx index feb17c3..1adb7a4 100644 --- a/src/components/Header/Header.tsx +++ b/src/components/Header/Header.tsx @@ -1,12 +1,6 @@ import React from "react"; -import { - ArrowCircleUpRight, - ArrowCircleDown, - ArrowElbowDownRight, -} from "phosphor-react"; -import { OutboundLink } from "react-ga"; +import { ArrowCircleUpRight, ArrowCircleDown } from "phosphor-react"; -import "./Header.css"; import markerPurple from "../../assets/marker-purple.svg"; import paperclips from "../../assets/paperclips-header-mobile.svg"; import paperclipsThree from "../../assets/paperclips-header.svg"; @@ -22,6 +16,8 @@ import receipt from "../../assets/receipt.svg"; import receiptSpec from "../../assets/receipt-spec.svg"; import calculator from "../../assets/calculator.svg"; import calculatorSpec from "../../assets/calculator-spec.svg"; +import Links from "../Links/Links"; +import "./Header.css"; type HeaderProps = {}; @@ -74,73 +70,7 @@ const Header: React.FC = () => { Explore icons

-
-
- - - Download all - -
-
- - - Figma library - -
-
- - - Figma plugin - -
- - - -
+
diff --git a/src/components/Links/Links.css b/src/components/Links/Links.css new file mode 100644 index 0000000..fd241ef --- /dev/null +++ b/src/components/Links/Links.css @@ -0,0 +1,41 @@ +.links { + display: flex; + flex-flow: column wrap; + align-content: flex-start; + align-items: flex-start; + justify-content: center; + /* column-gap: 72px; */ + /* -webkit-column-gap: 72px; */ + margin: 32px 0 64px; + max-height: 144px; +} + +.links > div { + margin: 0 72px 24px 0; + display: flex; + align-items: center; +} + +.links svg { + margin-right: 12px; +} + +a.nav-link { + text-decoration: none; + position: relative; + color: black; +} + +a.nav-link:after { + content: ""; + position: absolute; + bottom: -2px; + left: 0; + width: 0%; + border-bottom: 1px solid black; + transition: 0.2s; +} + +a.nav-link:hover:after { + width: 100%; +} \ No newline at end of file diff --git a/src/components/Links/Links.tsx b/src/components/Links/Links.tsx new file mode 100644 index 0000000..ea998a1 --- /dev/null +++ b/src/components/Links/Links.tsx @@ -0,0 +1,80 @@ +import React from "react"; +import { OutboundLink } from "react-ga"; +import { ArrowElbowDownRight } from "phosphor-react"; + +import "./Links.css"; + +interface LinksProps {} + +const Links: React.FC = () => { + return ( +
+
+ + + Download all + +
+
+ + + Figma library + +
+
+ + + Figma plugin + +
+ + + +
+ ); +}; + +export default Links; From c5807adf213e96eeb97cf42e9f16473ae14f2c3e Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Sat, 10 Oct 2020 16:18:11 -0400 Subject: [PATCH 37/46] Links: add Figma plugin link --- src/components/Links/Links.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Links/Links.tsx b/src/components/Links/Links.tsx index ea998a1..378a1b4 100644 --- a/src/components/Links/Links.tsx +++ b/src/components/Links/Links.tsx @@ -36,7 +36,7 @@ const Links: React.FC = () => { From 571a67d793b9a0a7728be6791c2e215e84dc6a88 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Sat, 10 Oct 2020 16:18:30 -0400 Subject: [PATCH 38/46] meta: fix license --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f11e0f2..1367cb9 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "phosphor-web", "version": "0.5.0", - "license": "GPL-3.0", + "license": "MIT", "homepage": "https://phosphoricons.com", "author": { "name": "Tobias Fried", From 1876e38aa9d56d9424049c5e0424b851d2a30c2a Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Sat, 10 Oct 2020 18:05:21 -0400 Subject: [PATCH 39/46] SearchInput: skip state updates after unmount --- src/components/SearchInput/SearchInput.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/SearchInput/SearchInput.tsx b/src/components/SearchInput/SearchInput.tsx index d6d15d5..f407d25 100644 --- a/src/components/SearchInput/SearchInput.tsx +++ b/src/components/SearchInput/SearchInput.tsx @@ -15,10 +15,12 @@ const SearchInput: React.FC = () => { /* eslint-disable react-hooks/exhaustive-deps */ useEffect(() => { + let isMounted = true; if (value !== query) { - setValue(query); + isMounted && setValue(query); ReactGA.event({ category: "Search", action: "Tag", label: query }); } + return () => void (isMounted = false); }, [query]); /* eslint-enable react-hooks/exhaustive-deps */ From 80f1b5f6481afc6960765664a0acdcae1e42a6a7 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Sat, 10 Oct 2020 18:14:45 -0400 Subject: [PATCH 40/46] meta: bump to v0.6.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1367cb9..72408f3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "phosphor-web", - "version": "0.5.0", + "version": "0.6.0", "license": "MIT", "homepage": "https://phosphoricons.com", "author": { From 13122accc260981593b9433686a323105e6b8ee9 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Sat, 10 Oct 2020 21:10:43 -0400 Subject: [PATCH 41/46] icons: rework icon categories and tags --- src/lib/icons.ts | 962 ++++++++++++++++++++++------------------------- src/lib/index.ts | 15 +- 2 files changed, 456 insertions(+), 521 deletions(-) diff --git a/src/lib/icons.ts b/src/lib/icons.ts index 305e7c9..a704cfb 100644 --- a/src/lib/icons.ts +++ b/src/lib/icons.ts @@ -4,13 +4,13 @@ import { IconEntry, IconCategory } from "."; export const icons: ReadonlyArray = [ { name: "activity", - categories: [IconCategory.DEVICE, IconCategory.HEALTH], - tags: ["heartbeat", "ecg", "ekg", "vitals", "monitor"], + categories: [IconCategory.HEALTH], + tags: ["heartbeat", "medical", "ecg", "ekg", "vitals", "monitor"], Icon: Icon.Activity, }, { name: "airplane", - categories: [IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.MAP, IconCategory.OBJECTS], tags: [ "vehicles", "airports", @@ -39,9 +39,8 @@ export const icons: ReadonlyArray = [ name: "android-logo", categories: [ IconCategory.BRAND, - IconCategory.COMMUNICATION, IconCategory.DEVELOPMENT, - IconCategory.DEVICE, + IconCategory.SYSTEM, ], tags: ["logos", "google", "mobile", "phone", "cellular", "cellphone"], @@ -49,13 +48,13 @@ export const icons: ReadonlyArray = [ }, { name: "aperture", - categories: [IconCategory.DEVICE, IconCategory.MEDIA], + categories: [IconCategory.DESIGN, IconCategory.MEDIA], tags: ["photography", "cameras", "pictures", "lens"], Icon: Icon.Aperture, }, { name: "archive", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.OFFICE, IconCategory.SYSTEM], tags: [ "saved", "saving", @@ -69,7 +68,7 @@ export const icons: ReadonlyArray = [ }, { name: "archive-box", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.OFFICE, IconCategory.SYSTEM], tags: [ "saved", "saving", @@ -83,7 +82,7 @@ export const icons: ReadonlyArray = [ }, { name: "archive-tray", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.OFFICE, IconCategory.SYSTEM], tags: [ "saved", "saving", @@ -680,7 +679,7 @@ export const icons: ReadonlyArray = [ }, { name: "article", - categories: [IconCategory.MEDIA, IconCategory.OTHER], + categories: [IconCategory.MEDIA, IconCategory.OBJECTS], tags: [ "reading", "writing", @@ -693,13 +692,13 @@ export const icons: ReadonlyArray = [ }, { name: "asterisk", - categories: [IconCategory.OTHER], + categories: [IconCategory.COMMUNICATION], tags: ["star", "wildcard", "bullet point", "6"], Icon: Icon.Asterisk, }, { name: "at", - categories: [IconCategory.OTHER], + categories: [IconCategory.COMMUNICATION], tags: ["@", "address", "email", "at symbol", "commercial at", "arobase"], Icon: Icon.At, }, @@ -711,19 +710,19 @@ export const icons: ReadonlyArray = [ }, { name: "bag", - categories: [IconCategory.BUSINESS, IconCategory.OTHER], + categories: [IconCategory.COMMERCE, IconCategory.OBJECTS], tags: ["suitcases", "valises", "baggage", "folders", "portfolios"], Icon: Icon.Bag, }, { name: "bandaids", categories: [IconCategory.HEALTH], - tags: ["bandages", "first aid", "injury"], + tags: ["bandages", "medical", "first aid", "injury"], Icon: Icon.Bandaids, }, { name: "bank", - categories: [IconCategory.BUSINESS, IconCategory.FINANCE], + categories: [IconCategory.FINANCE], tags: [ "banking", "checking", @@ -738,73 +737,87 @@ export const icons: ReadonlyArray = [ { name: "barbell", categories: [IconCategory.HEALTH], - tags: ["weights", "dumbbells", "strength training", "workout", "exercises"], + tags: [ + "weights", + "dumbbells", + "strength training", + "workout", + "exercises", + "fitness", + ], Icon: Icon.Barbell, }, { name: "barcode", - categories: [IconCategory.BUSINESS], + categories: [IconCategory.COMMERCE, IconCategory.SYSTEM], tags: ["upc", "qr", "products", "shopping", "scanner"], Icon: Icon.Barcode, }, { name: "battery-charging", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: ["charged", "charger", "charging", "power"], Icon: Icon.BatteryCharging, }, { name: "battery-charging-vertical", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: ["charged", "charger", "charging", "power"], Icon: Icon.BatteryChargingVertical, }, { name: "battery-full", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: ["charged", "charger", "charging", "power", "filled"], Icon: Icon.BatteryFull, }, { name: "battery-high", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: ["charged", "charger", "charging", "power"], Icon: Icon.BatteryHigh, }, { name: "battery-medium", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: ["charged", "charger", "charging", "power"], Icon: Icon.BatteryMedium, }, { name: "battery-low", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: ["charged", "charger", "charging", "power"], Icon: Icon.BatteryLow, }, { name: "battery-empty", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: ["charged", "charger", "charging", "power", "dead"], Icon: Icon.BatteryEmpty, }, { name: "battery-warning", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: ["charged", "charger", "charging", "power", "empty", "critical"], Icon: Icon.BatteryWarning, }, { name: "battery-warning-vertical", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: ["charged", "charger", "charging", "power", "empty", "critical"], Icon: Icon.BatteryWarningVertical, }, { name: "bed", - categories: [IconCategory.HEALTH, IconCategory.MAP, IconCategory.OTHER], - tags: ["hotels", "accommodations", "sleeping", "places", "locations"], + categories: [IconCategory.HEALTH, IconCategory.MAP, IconCategory.OBJECTS], + tags: [ + "hotels", + "accommodations", + "sleeping", + "places", + "locations", + "medical", + ], Icon: Icon.Bed, }, { @@ -878,7 +891,7 @@ export const icons: ReadonlyArray = [ }, { name: "bicycle", - categories: [IconCategory.HEALTH, IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.HEALTH, IconCategory.MAP, IconCategory.OBJECTS], tags: [ "bikers", "bicycling", @@ -887,24 +900,25 @@ export const icons: ReadonlyArray = [ "transportation", "commuter", "exercises", + "fitness", ], Icon: Icon.Bicycle, }, { name: "bluetooth", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: ["wireless", "connection", "connected", "connectivity"], Icon: Icon.Bluetooth, }, { name: "bluetooth-connected", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: ["wireless", "connection", "connected", "connectivity"], Icon: Icon.BluetoothConnected, }, { name: "bluetooth-slash", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: [ "wireless", "connection", @@ -916,19 +930,19 @@ export const icons: ReadonlyArray = [ }, { name: "bluetooth-x", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: ["wireless", "connection", "connectivity", "disconnected", "errors"], Icon: Icon.BluetoothX, }, { name: "book", - categories: [IconCategory.DOCUMENT, IconCategory.OTHER], + categories: [IconCategory.OFFICE, IconCategory.MEDIA, IconCategory.OBJECTS], tags: ["reading", "reader", "novel", "story", "library"], Icon: Icon.Book, }, { name: "book-bookmark", - categories: [IconCategory.DOCUMENT, IconCategory.OTHER], + categories: [IconCategory.OFFICE, IconCategory.MEDIA, IconCategory.OBJECTS], tags: [ "reading", "reader", @@ -942,13 +956,13 @@ export const icons: ReadonlyArray = [ }, { name: "book-open", - categories: [IconCategory.DOCUMENT, IconCategory.OTHER], + categories: [IconCategory.OFFICE, IconCategory.MEDIA, IconCategory.OBJECTS], tags: ["reading", "reader", "novel", "story", "library"], Icon: Icon.BookOpen, }, { name: "bookmark", - categories: [IconCategory.DOCUMENT, IconCategory.OTHER], + categories: [IconCategory.OFFICE, IconCategory.MEDIA, IconCategory.OBJECTS], tags: [ "reading", "reader", @@ -963,7 +977,7 @@ export const icons: ReadonlyArray = [ }, { name: "bookmark-simple", - categories: [IconCategory.DOCUMENT, IconCategory.OTHER], + categories: [IconCategory.OFFICE, IconCategory.MEDIA, IconCategory.OBJECTS], tags: [ "reading", "reader", @@ -978,7 +992,7 @@ export const icons: ReadonlyArray = [ }, { name: "bookmarks", - categories: [IconCategory.DOCUMENT, IconCategory.OTHER], + categories: [IconCategory.OFFICE, IconCategory.OBJECTS], tags: [ "reading", "reader", @@ -993,13 +1007,13 @@ export const icons: ReadonlyArray = [ }, { name: "briefcase", - categories: [IconCategory.BUSINESS, IconCategory.OTHER], + categories: [IconCategory.OFFICE, IconCategory.OBJECTS], tags: ["suitcases", "valises", "baggage", "folders", "portfolios"], Icon: Icon.Briefcase, }, { name: "briefcase-simple", - categories: [IconCategory.BUSINESS, IconCategory.OTHER], + categories: [IconCategory.OFFICE, IconCategory.OBJECTS], tags: ["suitcases", "valises", "baggage", "folders", "portfolios"], Icon: Icon.BriefcaseSimple, }, @@ -1007,8 +1021,8 @@ export const icons: ReadonlyArray = [ name: "broadcast", categories: [ IconCategory.COMMUNICATION, + IconCategory.MEDIA, IconCategory.SYSTEM, - IconCategory.OTHER, ], tags: ["radio", "hotspot", "wifi", "emit"], Icon: Icon.Broadcast, @@ -1033,13 +1047,13 @@ export const icons: ReadonlyArray = [ }, { name: "buildings", - categories: [IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.COMMERCE, IconCategory.MAP], tags: ["places", "locations"], Icon: Icon.Buildings, }, { name: "bus", - categories: [IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.MAP, IconCategory.OBJECTS], tags: [ "vehicles", "public transit", @@ -1053,44 +1067,44 @@ export const icons: ReadonlyArray = [ }, { name: "calendar", - categories: [IconCategory.BUSINESS, IconCategory.SYSTEM], + categories: [IconCategory.OFFICE, IconCategory.SYSTEM], tags: ["dates", "times", "events", "schedule", "31"], Icon: Icon.Calendar, }, { name: "calendar-blank", - categories: [IconCategory.BUSINESS, IconCategory.SYSTEM], + categories: [IconCategory.OFFICE, IconCategory.SYSTEM], tags: ["dates", "times", "events", "schedule", "none"], Icon: Icon.CalendarBlank, }, { name: "calendar-x", - categories: [IconCategory.BUSINESS, IconCategory.SYSTEM], + categories: [IconCategory.OFFICE, IconCategory.SYSTEM], tags: ["dates", "times", "events", "schedule", "closed", "cancelled"], Icon: Icon.CalendarX, }, { name: "camera", - categories: [IconCategory.DEVICE, IconCategory.MEDIA, IconCategory.SYSTEM], + categories: [IconCategory.MEDIA, IconCategory.SYSTEM], tags: ["photography", "pictures", "lens"], Icon: Icon.Camera, }, { name: "camera-slash", - categories: [IconCategory.DEVICE, IconCategory.MEDIA, IconCategory.SYSTEM], + categories: [IconCategory.MEDIA, IconCategory.SYSTEM], tags: ["photography", "pictures", "lens", "disabled"], Icon: Icon.CameraSlash, }, { name: "car", - categories: [IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.MAP, IconCategory.OBJECTS], tags: ["cars", "vehicles", "transit", "transportation", "traveling"], Icon: Icon.Car, }, { name: "car-simple", - categories: [IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.MAP, IconCategory.OBJECTS], tags: ["cars", "vehicles", "transit", "transportation", "traveling"], Icon: Icon.CarSimple, }, @@ -1302,37 +1316,37 @@ export const icons: ReadonlyArray = [ }, { name: "chart-bar", - categories: [IconCategory.BUSINESS, IconCategory.FINANCE], + categories: [IconCategory.FINANCE], tags: ["graphs", "graphing", "charts", "histogram", "analyze", "analysis"], Icon: Icon.ChartBar, }, { name: "chart-bar-horizontal", - categories: [IconCategory.BUSINESS, IconCategory.FINANCE], + categories: [IconCategory.FINANCE], tags: ["graphs", "graphing", "charts", "histogram", "analyze", "analysis"], Icon: Icon.ChartBarHorizontal, }, { name: "chart-line", - categories: [IconCategory.BUSINESS, IconCategory.FINANCE], + categories: [IconCategory.FINANCE], tags: ["graphs", "graphing", "charts", "analyze", "analysis"], Icon: Icon.ChartLine, }, { name: "chart-line-up", - categories: [IconCategory.BUSINESS, IconCategory.FINANCE], + categories: [IconCategory.FINANCE], tags: ["graphs", "graphing", "charts", "analyze", "analysis"], Icon: Icon.ChartLineUp, }, { name: "chart-pie", - categories: [IconCategory.BUSINESS, IconCategory.FINANCE], + categories: [IconCategory.FINANCE], tags: ["graphs", "graphing", "charts", "circle", "analyze", "analysis"], Icon: Icon.ChartPie, }, { name: "chart-pie-slice", - categories: [IconCategory.BUSINESS, IconCategory.FINANCE], + categories: [IconCategory.FINANCE], tags: ["graphs", "graphing", "charts", "circle", "analyze", "analysis"], Icon: Icon.ChartPieSlice, }, @@ -1432,81 +1446,73 @@ export const icons: ReadonlyArray = [ }, { name: "check", - categories: [IconCategory.BUSINESS, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: ["todo", "to-do", "list", "checkbox", "round"], Icon: Icon.Check, }, { name: "check-circle", - categories: [IconCategory.BUSINESS, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: ["todo", "to-do", "list", "checkbox", "round"], Icon: Icon.CheckCircle, }, { name: "check-square", - categories: [IconCategory.BUSINESS, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: ["todo", "to-do", "list", "checkbox", "rectangle"], Icon: Icon.CheckSquare, }, { name: "check-square-offset", - categories: [IconCategory.BUSINESS, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: ["todo", "to-do", "list", "checkbox", "rectangle"], Icon: Icon.CheckSquareOffset, }, { name: "circle", - categories: [IconCategory.OTHER], + categories: [IconCategory.DESIGN], tags: ["round", "shapes", "polygons"], Icon: Icon.Circle, }, { name: "circle-half", - categories: [IconCategory.DESIGN, IconCategory.EDITOR, IconCategory.OTHER], + categories: [IconCategory.DESIGN, IconCategory.EDITOR], tags: ["round", "shapes", "contrast", "brightness"], Icon: Icon.CircleHalf, }, { name: "circle-half-tilt", - categories: [IconCategory.DESIGN, IconCategory.EDITOR, IconCategory.OTHER], + categories: [IconCategory.DESIGN, IconCategory.EDITOR], tags: ["round", "shapes", "contrast", "brightness"], Icon: Icon.CircleHalfTilt, }, { name: "circles-three", - categories: [IconCategory.OTHER], + categories: [IconCategory.DESIGN], tags: ["round", "shapes", "polygons", "3"], Icon: Icon.CirclesThree, }, { name: "circles-three-plus", - categories: [IconCategory.OTHER], + categories: [IconCategory.DESIGN], tags: ["round", "shapes", "polygons", "3"], Icon: Icon.CirclesThreePlus, }, { name: "circles-four", - categories: [IconCategory.OTHER], + categories: [IconCategory.DESIGN], tags: ["round", "shapes", "polygons", "4"], Icon: Icon.CirclesFour, }, { name: "clipboard", - categories: [ - IconCategory.DOCUMENT, - IconCategory.EDITOR, - IconCategory.SYSTEM, - ], + categories: [IconCategory.OFFICE, IconCategory.EDITOR, IconCategory.SYSTEM], tags: ["copy", "copied", "checklist"], Icon: Icon.Clipboard, }, { name: "clipboard-text", - categories: [ - IconCategory.DOCUMENT, - IconCategory.EDITOR, - IconCategory.SYSTEM, - ], + categories: [IconCategory.OFFICE, IconCategory.EDITOR, IconCategory.SYSTEM], tags: ["copy", "copied", "checklist"], Icon: Icon.ClipboardText, }, @@ -1550,11 +1556,7 @@ export const icons: ReadonlyArray = [ }, { name: "cloud", - categories: [ - IconCategory.BUSINESS, - IconCategory.SYSTEM, - IconCategory.WEATHER, - ], + categories: [IconCategory.SYSTEM, IconCategory.WEATHER], tags: [ "serverless", "backup", @@ -1567,25 +1569,25 @@ export const icons: ReadonlyArray = [ }, { name: "cloud-arrow-down", - categories: [IconCategory.BUSINESS, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: ["serverless", "backup", "storage", "download"], Icon: Icon.CloudArrowDown, }, { name: "cloud-arrow-up", - categories: [IconCategory.BUSINESS, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: ["serverless", "backup", "storage", "upload"], Icon: Icon.CloudArrowUp, }, { name: "cloud-check", - categories: [IconCategory.BUSINESS, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: ["serverless", "backup", "storage", "sync", "synchronized"], Icon: Icon.CloudCheck, }, { name: "cloud-slash", - categories: [IconCategory.BUSINESS, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: ["serverless", "backup", "storage", "sync", "disabled"], Icon: Icon.CloudSlash, }, @@ -1609,7 +1611,7 @@ export const icons: ReadonlyArray = [ }, { name: "club", - categories: [IconCategory.OTHER], + categories: [IconCategory.GAMES], tags: ["clubs", "suits", "cards", "gambling", "casino", "games", "gaming"], Icon: Icon.Club, }, @@ -1627,7 +1629,7 @@ export const icons: ReadonlyArray = [ }, { name: "coffee", - categories: [IconCategory.BUSINESS, IconCategory.OTHER], + categories: [IconCategory.COMMERCE, IconCategory.OBJECTS], tags: [ "tea", "java", @@ -1662,7 +1664,7 @@ export const icons: ReadonlyArray = [ }, { name: "compass", - categories: [IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.MAP, IconCategory.OBJECTS], tags: ["navigation", "directions", "maps", "safari", "apple"], Icon: Icon.Compass, }, @@ -1692,7 +1694,7 @@ export const icons: ReadonlyArray = [ }, { name: "credit-card", - categories: [IconCategory.BUSINESS, IconCategory.FINANCE], + categories: [IconCategory.COMMERCE, IconCategory.FINANCE], tags: [ "debit", "visa", @@ -1706,7 +1708,7 @@ export const icons: ReadonlyArray = [ }, { name: "crop", - categories: [IconCategory.DESIGN, IconCategory.EDITOR, IconCategory.MEDIA], + categories: [IconCategory.DESIGN, IconCategory.EDITOR], tags: ["photography", "clip", "screenshots"], Icon: Icon.Crop, }, @@ -1724,7 +1726,7 @@ export const icons: ReadonlyArray = [ }, { name: "cube", - categories: [IconCategory.DESIGN, IconCategory.OTHER], + categories: [IconCategory.DESIGN, IconCategory.GAMES, IconCategory.OBJECTS], tags: ["square", "box", "3d", "volume", "blocks"], Icon: Icon.Cube, }, @@ -1736,11 +1738,7 @@ export const icons: ReadonlyArray = [ }, { name: "database", - categories: [ - IconCategory.DEVICE, - IconCategory.DEVELOPMENT, - IconCategory.SYSTEM, - ], + categories: [IconCategory.DEVELOPMENT, IconCategory.SYSTEM], tags: [ "saved", "saving", @@ -1757,43 +1755,43 @@ export const icons: ReadonlyArray = [ }, { name: "device-mobile", - categories: [IconCategory.DEVICE], + categories: [IconCategory.OBJECTS], tags: ["cellphone", "cellular"], Icon: Icon.DeviceMobile, }, { name: "device-mobile-camera", - categories: [IconCategory.DEVICE], + categories: [IconCategory.OBJECTS], tags: ["cellphone", "cellular"], Icon: Icon.DeviceMobileCamera, }, { name: "device-mobile-speaker", - categories: [IconCategory.DEVICE], + categories: [IconCategory.OBJECTS], tags: ["cellphone", "cellular"], Icon: Icon.DeviceMobileSpeaker, }, { name: "device-tablet", - categories: [IconCategory.DEVICE], + categories: [IconCategory.OBJECTS], tags: ["cellphone", "cellular", "ipad", "phablet"], Icon: Icon.DeviceTablet, }, { name: "device-tablet-camera", - categories: [IconCategory.DEVICE], + categories: [IconCategory.OBJECTS], tags: ["cellphone", "cellular", "ipad", "phablet"], Icon: Icon.DeviceTabletCamera, }, { name: "device-tablet-speaker", - categories: [IconCategory.DEVICE], + categories: [IconCategory.OBJECTS], tags: ["cellphone", "cellular", "ipad", "phablet"], Icon: Icon.DeviceTabletSpeaker, }, { name: "diamond", - categories: [IconCategory.OTHER], + categories: [IconCategory.DESIGN, IconCategory.GAMES], tags: [ "rectangle", "shapes", @@ -1816,7 +1814,7 @@ export const icons: ReadonlyArray = [ // }, { name: "dice-one", - categories: [IconCategory.OTHER], + categories: [IconCategory.GAMES, IconCategory.OBJECTS], tags: [ "die", "rolling", @@ -1831,7 +1829,7 @@ export const icons: ReadonlyArray = [ }, { name: "dice-two", - categories: [IconCategory.OTHER], + categories: [IconCategory.GAMES, IconCategory.OBJECTS], tags: [ "die", "rolling", @@ -1846,7 +1844,7 @@ export const icons: ReadonlyArray = [ }, { name: "dice-three", - categories: [IconCategory.OTHER], + categories: [IconCategory.GAMES, IconCategory.OBJECTS], tags: [ "die", "rolling", @@ -1861,7 +1859,7 @@ export const icons: ReadonlyArray = [ }, { name: "dice-four", - categories: [IconCategory.OTHER], + categories: [IconCategory.GAMES, IconCategory.OBJECTS], tags: [ "die", "rolling", @@ -1876,7 +1874,7 @@ export const icons: ReadonlyArray = [ }, { name: "dice-five", - categories: [IconCategory.OTHER], + categories: [IconCategory.GAMES, IconCategory.OBJECTS], tags: [ "die", "rolling", @@ -1891,7 +1889,7 @@ export const icons: ReadonlyArray = [ }, { name: "dice-six", - categories: [IconCategory.OTHER], + categories: [IconCategory.GAMES, IconCategory.OBJECTS], tags: [ "die", "rolling", @@ -1906,11 +1904,7 @@ export const icons: ReadonlyArray = [ }, { name: "divide", - categories: [ - IconCategory.DEVELOPMENT, - IconCategory.FINANCE, - IconCategory.OTHER, - ], + categories: [IconCategory.DEVELOPMENT, IconCategory.FINANCE], tags: [ "division", "divisor", @@ -1924,13 +1918,13 @@ export const icons: ReadonlyArray = [ }, { name: "dots-nine", - categories: [IconCategory.OTHER], + categories: [IconCategory.DESIGN], tags: ["round", "circles", "shapes", "polygons", "9"], Icon: Icon.DotsNine, }, { name: "dots-three", - categories: [IconCategory.OTHER], + categories: [IconCategory.SYSTEM], tags: [ "round", "circles", @@ -1944,7 +1938,7 @@ export const icons: ReadonlyArray = [ }, { name: "dots-three-vertical", - categories: [IconCategory.OTHER], + categories: [IconCategory.SYSTEM], tags: [ "round", "circles", @@ -1958,7 +1952,7 @@ export const icons: ReadonlyArray = [ }, { name: "dots-three-outline", - categories: [IconCategory.OTHER], + categories: [IconCategory.SYSTEM], tags: [ "round", "circles", @@ -1972,7 +1966,7 @@ export const icons: ReadonlyArray = [ }, { name: "dots-three-outline-vertical", - categories: [IconCategory.OTHER], + categories: [IconCategory.SYSTEM], tags: [ "round", "circles", @@ -1986,7 +1980,7 @@ export const icons: ReadonlyArray = [ }, { name: "dots-three-circle", - categories: [IconCategory.OTHER], + categories: [IconCategory.SYSTEM], tags: [ "round", "circles", @@ -2000,7 +1994,7 @@ export const icons: ReadonlyArray = [ }, { name: "dots-three-circle-vertical", - categories: [IconCategory.OTHER], + categories: [IconCategory.SYSTEM], tags: [ "round", "circles", @@ -2014,7 +2008,7 @@ export const icons: ReadonlyArray = [ }, { name: "download", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: [ "saved", "saving", @@ -2030,7 +2024,7 @@ export const icons: ReadonlyArray = [ }, { name: "download-simple", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: [ "saved", "saving", @@ -2046,19 +2040,19 @@ export const icons: ReadonlyArray = [ }, { name: "dribbble-logo", - categories: [IconCategory.BRAND, IconCategory.HEALTH], + categories: [IconCategory.BRAND, IconCategory.DESIGN], tags: ["logos", "round", "basketball", "sports", "design"], Icon: Icon.DribbbleLogo, }, { name: "drop", - categories: [IconCategory.WEATHER, IconCategory.OTHER], + categories: [IconCategory.NATURE, IconCategory.WEATHER], tags: ["droplet", "raindrop", "raining", "meteorology", "water"], Icon: Icon.Drop, }, { name: "eject", - categories: [IconCategory.MEDIA, IconCategory.SYSTEM], + categories: [IconCategory.MEDIA], tags: ["disconnect"], Icon: Icon.Eject, }, @@ -2094,11 +2088,7 @@ export const icons: ReadonlyArray = [ }, { name: "equals", - categories: [ - IconCategory.DEVELOPMENT, - IconCategory.FINANCE, - IconCategory.OTHER, - ], + categories: [IconCategory.DEVELOPMENT, IconCategory.FINANCE], tags: [ "equality", "equivalent", @@ -2111,13 +2101,13 @@ export const icons: ReadonlyArray = [ }, { name: "eye", - categories: [IconCategory.DESIGN, IconCategory.EDITOR, IconCategory.OTHER], + categories: [IconCategory.DESIGN, IconCategory.EDITOR], tags: ["visible", "hidden", "show", "hide", "visibility"], Icon: Icon.Eye, }, { name: "eye-slash", - categories: [IconCategory.DESIGN, IconCategory.EDITOR, IconCategory.OTHER], + categories: [IconCategory.DESIGN, IconCategory.EDITOR], tags: [ "visible", "hidden", @@ -2132,7 +2122,7 @@ export const icons: ReadonlyArray = [ }, { name: "eye-closed", - categories: [IconCategory.DESIGN, IconCategory.EDITOR, IconCategory.OTHER], + categories: [IconCategory.DESIGN, IconCategory.EDITOR], tags: ["visible", "hidden", "show", "hide", "visibility", "invisible"], Icon: Icon.EyeClosed, }, @@ -2172,7 +2162,7 @@ export const icons: ReadonlyArray = [ }, { name: "fast-forward", - categories: [IconCategory.MEDIA, IconCategory.SYSTEM], + categories: [IconCategory.MEDIA], tags: ["audio", "music", "seek", "scrub", "scan", "ahead", "skip"], Icon: Icon.FastForward, }, @@ -2193,13 +2183,13 @@ export const icons: ReadonlyArray = [ }, { name: "file", - categories: [IconCategory.DOCUMENT, IconCategory.EDITOR], + categories: [IconCategory.OFFICE, IconCategory.EDITOR], tags: ["documents", "files", "save", "write"], Icon: Icon.File, }, { name: "file-arrow-down", - categories: [IconCategory.DOCUMENT, IconCategory.EDITOR], + categories: [IconCategory.OFFICE, IconCategory.EDITOR], tags: [ "documents", "files", @@ -2215,37 +2205,37 @@ export const icons: ReadonlyArray = [ }, { name: "file-plus", - categories: [IconCategory.DOCUMENT, IconCategory.EDITOR], + categories: [IconCategory.OFFICE, IconCategory.EDITOR], tags: ["documents", "files", "save", "write", "add", "new", "create"], Icon: Icon.FilePlus, }, { name: "file-minus", - categories: [IconCategory.DOCUMENT, IconCategory.EDITOR], + categories: [IconCategory.OFFICE, IconCategory.EDITOR], tags: ["documents", "files", "delete", "write", "remove"], Icon: Icon.FileMinus, }, { name: "file-search", - categories: [IconCategory.DOCUMENT, IconCategory.EDITOR], + categories: [IconCategory.OFFICE, IconCategory.EDITOR], tags: ["documents", "files", "find", "locate", "missing"], Icon: Icon.FileSearch, }, { name: "file-text", - categories: [IconCategory.DOCUMENT, IconCategory.EDITOR], + categories: [IconCategory.OFFICE, IconCategory.EDITOR], tags: ["documents", "files", "save", "write"], Icon: Icon.FileText, }, { name: "file-x", - categories: [IconCategory.DOCUMENT, IconCategory.EDITOR], + categories: [IconCategory.OFFICE, IconCategory.EDITOR], tags: ["documents", "files", "cancelled", "deleted", "removed", "errors"], Icon: Icon.FileX, }, { name: "fingerprint", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: [ "security", "secured", @@ -2261,7 +2251,7 @@ export const icons: ReadonlyArray = [ }, { name: "fingerprint-simple", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: [ "security", "secured", @@ -2277,29 +2267,25 @@ export const icons: ReadonlyArray = [ }, { name: "fire", - categories: [IconCategory.OTHER], + categories: [IconCategory.NATURE, IconCategory.WEATHER], tags: ["flame", "burning", "match", "lighter"], Icon: Icon.Fire, }, { name: "flag", - categories: [IconCategory.OTHER], + categories: [IconCategory.OBJECTS, IconCategory.SYSTEM], tags: ["country", "countries", "finished", "completed", "flags"], Icon: Icon.Flag, }, { name: "flashlight", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM, IconCategory.OTHER], + categories: [IconCategory.SYSTEM, IconCategory.OBJECTS], tags: ["torch", "find", "search", "locate"], Icon: Icon.Flashlight, }, { name: "floppy-disk", - categories: [ - IconCategory.DOCUMENT, - IconCategory.EDITOR, - IconCategory.SYSTEM, - ], + categories: [IconCategory.OFFICE, IconCategory.EDITOR, IconCategory.SYSTEM], tags: [ "directory", "directories", @@ -2313,21 +2299,13 @@ export const icons: ReadonlyArray = [ }, { name: "folder", - categories: [ - IconCategory.DOCUMENT, - IconCategory.EDITOR, - IconCategory.SYSTEM, - ], + categories: [IconCategory.OFFICE, IconCategory.EDITOR, IconCategory.SYSTEM], tags: ["directory", "directories", "files", "folders"], Icon: Icon.Folder, }, { name: "folder-plus", - categories: [ - IconCategory.DOCUMENT, - IconCategory.EDITOR, - IconCategory.SYSTEM, - ], + categories: [IconCategory.OFFICE, IconCategory.EDITOR, IconCategory.SYSTEM], tags: [ "directory", "directories", @@ -2342,41 +2320,25 @@ export const icons: ReadonlyArray = [ }, { name: "folder-minus", - categories: [ - IconCategory.DOCUMENT, - IconCategory.EDITOR, - IconCategory.SYSTEM, - ], + categories: [IconCategory.OFFICE, IconCategory.EDITOR, IconCategory.SYSTEM], tags: ["directory", "directories", "files", "delete", "write", "remove"], Icon: Icon.FolderMinus, }, { name: "folder-open", - categories: [ - IconCategory.DOCUMENT, - IconCategory.EDITOR, - IconCategory.SYSTEM, - ], + categories: [IconCategory.OFFICE, IconCategory.EDITOR, IconCategory.SYSTEM], tags: ["directory", "directories", "files", "folders", "load"], Icon: Icon.FolderOpen, }, { name: "folder-notch", - categories: [ - IconCategory.DOCUMENT, - IconCategory.EDITOR, - IconCategory.SYSTEM, - ], + categories: [IconCategory.OFFICE, IconCategory.EDITOR, IconCategory.SYSTEM], tags: ["directory", "directories", "files", "folders"], Icon: Icon.FolderNotch, }, { name: "folder-notch-plus", - categories: [ - IconCategory.DOCUMENT, - IconCategory.EDITOR, - IconCategory.SYSTEM, - ], + categories: [IconCategory.OFFICE, IconCategory.EDITOR, IconCategory.SYSTEM], tags: [ "directory", "directories", @@ -2391,41 +2353,25 @@ export const icons: ReadonlyArray = [ }, { name: "folder-notch-minus", - categories: [ - IconCategory.DOCUMENT, - IconCategory.EDITOR, - IconCategory.SYSTEM, - ], + categories: [IconCategory.OFFICE, IconCategory.EDITOR, IconCategory.SYSTEM], tags: ["directory", "directories", "files", "delete", "write", "remove"], Icon: Icon.FolderNotchMinus, }, { name: "folder-notch-open", - categories: [ - IconCategory.DOCUMENT, - IconCategory.EDITOR, - IconCategory.SYSTEM, - ], + categories: [IconCategory.OFFICE, IconCategory.EDITOR, IconCategory.SYSTEM], tags: ["directory", "directories", "files", "folders", "load"], Icon: Icon.FolderNotchOpen, }, { name: "folder-simple", - categories: [ - IconCategory.DOCUMENT, - IconCategory.EDITOR, - IconCategory.SYSTEM, - ], + categories: [IconCategory.OFFICE, IconCategory.EDITOR, IconCategory.SYSTEM], tags: ["directory", "directories", "files", "folders"], Icon: Icon.FolderSimple, }, { name: "folder-simple-plus", - categories: [ - IconCategory.DOCUMENT, - IconCategory.EDITOR, - IconCategory.SYSTEM, - ], + categories: [IconCategory.OFFICE, IconCategory.EDITOR, IconCategory.SYSTEM], tags: [ "directory", "directories", @@ -2440,21 +2386,13 @@ export const icons: ReadonlyArray = [ }, { name: "folder-simple-minus", - categories: [ - IconCategory.DOCUMENT, - IconCategory.EDITOR, - IconCategory.SYSTEM, - ], + categories: [IconCategory.OFFICE, IconCategory.EDITOR, IconCategory.SYSTEM], tags: ["directory", "directories", "files", "delete", "write", "remove"], Icon: Icon.FolderSimpleMinus, }, { name: "folders", - categories: [ - IconCategory.DOCUMENT, - IconCategory.EDITOR, - IconCategory.SYSTEM, - ], + categories: [IconCategory.OFFICE, IconCategory.EDITOR, IconCategory.SYSTEM], tags: [ "directory", "directories", @@ -2468,7 +2406,7 @@ export const icons: ReadonlyArray = [ }, { name: "fork-knife", - categories: [IconCategory.BUSINESS, IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.COMMERCE, IconCategory.MAP, IconCategory.OBJECTS], tags: ["food", "meal", "eating", "restaurants", "dining", "utensils"], Icon: Icon.ForkKnife, }, @@ -2480,19 +2418,19 @@ export const icons: ReadonlyArray = [ }, { name: "funnel", - categories: [IconCategory.EDITOR, IconCategory.OTHER], + categories: [IconCategory.EDITOR, IconCategory.OBJECTS], tags: ["filters", "refine", "sorting"], Icon: Icon.Funnel, }, { name: "funnel-simple", - categories: [IconCategory.EDITOR, IconCategory.OTHER], + categories: [IconCategory.EDITOR, IconCategory.OBJECTS], tags: ["filters", "refine", "sorting"], Icon: Icon.FunnelSimple, }, { name: "game-controller", - categories: [IconCategory.DEVICE, IconCategory.MEDIA, IconCategory.OTHER], + categories: [IconCategory.GAMES, IconCategory.MEDIA, IconCategory.OBJECTS], tags: [ "gaming", "video games", @@ -2504,7 +2442,7 @@ export const icons: ReadonlyArray = [ }, { name: "gear", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: [ "8", "settings", @@ -2519,7 +2457,7 @@ export const icons: ReadonlyArray = [ }, { name: "gear-six", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: [ "6", "settings", @@ -2540,7 +2478,7 @@ export const icons: ReadonlyArray = [ }, { name: "gift", - categories: [IconCategory.OTHER], + categories: [IconCategory.COMMERCE, IconCategory.OBJECTS], tags: ["presents", "holidays", "birthdays"], Icon: Icon.Gift, }, @@ -2743,7 +2681,7 @@ export const icons: ReadonlyArray = [ }, { name: "grid-four", - categories: [IconCategory.SYSTEM], + categories: [IconCategory.DESIGN, IconCategory.SYSTEM], tags: [ "4", "apps", @@ -2760,25 +2698,25 @@ export const icons: ReadonlyArray = [ }, { name: "hand", - categories: [IconCategory.SYSTEM, IconCategory.USERS, IconCategory.OTHER], + categories: [IconCategory.SYSTEM, IconCategory.PEOPLE], tags: ["pointers", "cursors", "emoji", "palm", "stop", "wait", "hamsa"], Icon: Icon.Hand, }, { name: "hand-pointing", - categories: [IconCategory.SYSTEM, IconCategory.USERS, IconCategory.OTHER], + categories: [IconCategory.SYSTEM, IconCategory.PEOPLE], tags: ["pointers", "cursors", "emoji", "fingers", "clicks", "mouse"], Icon: Icon.HandPointing, }, { name: "handbag", - categories: [IconCategory.BUSINESS, IconCategory.OTHER], + categories: [IconCategory.COMMERCE, IconCategory.OBJECTS], tags: ["suitcases", "valises", "baggage", "purses"], Icon: Icon.Handbag, }, { name: "hard-drive", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: [ "saved", "saving", @@ -2795,7 +2733,7 @@ export const icons: ReadonlyArray = [ }, { name: "hard-drives", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: [ "saved", "saving", @@ -2812,7 +2750,7 @@ export const icons: ReadonlyArray = [ }, { name: "hash", - categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], + categories: [IconCategory.COMMUNICATION], tags: [ "hashtag", "octothorpe", @@ -2825,7 +2763,7 @@ export const icons: ReadonlyArray = [ }, { name: "hash-straight", - categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], + categories: [IconCategory.COMMUNICATION], tags: [ "hashtag", "octothorpe", @@ -2838,12 +2776,7 @@ export const icons: ReadonlyArray = [ }, { name: "headphones", - categories: [ - IconCategory.DEVICE, - IconCategory.MEDIA, - IconCategory.SYSTEM, - IconCategory.OTHER, - ], + categories: [IconCategory.MEDIA, IconCategory.OBJECTS], tags: ["music", "audio", "listening"], Icon: Icon.Headphones, }, @@ -2851,8 +2784,8 @@ export const icons: ReadonlyArray = [ name: "heart", categories: [ IconCategory.COMMUNICATION, + IconCategory.GAMES, IconCategory.HEALTH, - IconCategory.OTHER, ], tags: [ "wellness", @@ -2874,8 +2807,8 @@ export const icons: ReadonlyArray = [ name: "heart-straight", categories: [ IconCategory.COMMUNICATION, + IconCategory.GAMES, IconCategory.HEALTH, - IconCategory.OTHER, ], tags: [ "wellness", @@ -2895,25 +2828,25 @@ export const icons: ReadonlyArray = [ }, { name: "heartbeat", - categories: [IconCategory.HEALTH, IconCategory.SYSTEM, IconCategory.OTHER], + categories: [IconCategory.HEALTH, IconCategory.SYSTEM], tags: ["wellness", "healthy", "ecg", "ekg", "vitals", "monitor"], Icon: Icon.Heartbeat, }, { name: "hexagon", - categories: [IconCategory.OTHER], + categories: [IconCategory.DESIGN], tags: ["6", "shapes", "polygons"], Icon: Icon.Hexagon, }, { name: "horse", - categories: [IconCategory.HEALTH, IconCategory.OTHER], + categories: [IconCategory.GAMES, IconCategory.HEALTH, IconCategory.NATURE], tags: ["animals", "equestrian", "chess", "knight", "games", "sports"], Icon: Icon.Horse, }, { name: "hourglass", - categories: [IconCategory.SYSTEM, IconCategory.OTHER], + categories: [IconCategory.SYSTEM, IconCategory.OBJECTS], tags: [ "times", "timer", @@ -2927,7 +2860,7 @@ export const icons: ReadonlyArray = [ }, { name: "hourglass-high", - categories: [IconCategory.SYSTEM, IconCategory.OTHER], + categories: [IconCategory.SYSTEM, IconCategory.OBJECTS], tags: [ "times", "timer", @@ -2941,7 +2874,7 @@ export const icons: ReadonlyArray = [ }, { name: "hourglass-medium", - categories: [IconCategory.SYSTEM, IconCategory.OTHER], + categories: [IconCategory.SYSTEM, IconCategory.OBJECTS], tags: [ "times", "timer", @@ -2955,7 +2888,7 @@ export const icons: ReadonlyArray = [ }, { name: "hourglass-low", - categories: [IconCategory.SYSTEM, IconCategory.OTHER], + categories: [IconCategory.SYSTEM, IconCategory.OBJECTS], tags: [ "times", "timer", @@ -2969,7 +2902,7 @@ export const icons: ReadonlyArray = [ }, { name: "hourglass-simple", - categories: [IconCategory.SYSTEM, IconCategory.OTHER], + categories: [IconCategory.SYSTEM, IconCategory.OBJECTS], tags: [ "times", "timer", @@ -2983,7 +2916,7 @@ export const icons: ReadonlyArray = [ }, { name: "hourglass-simple-high", - categories: [IconCategory.SYSTEM, IconCategory.OTHER], + categories: [IconCategory.SYSTEM, IconCategory.OBJECTS], tags: [ "times", "timer", @@ -2997,7 +2930,7 @@ export const icons: ReadonlyArray = [ }, { name: "hourglass-simple-medium", - categories: [IconCategory.SYSTEM, IconCategory.OTHER], + categories: [IconCategory.SYSTEM, IconCategory.OBJECTS], tags: [ "times", "timer", @@ -3011,7 +2944,7 @@ export const icons: ReadonlyArray = [ }, { name: "hourglass-simple-low", - categories: [IconCategory.SYSTEM, IconCategory.OTHER], + categories: [IconCategory.SYSTEM, IconCategory.OBJECTS], tags: [ "times", "timer", @@ -3025,31 +2958,31 @@ export const icons: ReadonlyArray = [ }, { name: "house", - categories: [IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.MAP, IconCategory.SYSTEM], tags: ["homes", "buildings", "places", "locations"], Icon: Icon.House, }, { name: "house-line", - categories: [IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.MAP, IconCategory.SYSTEM], tags: ["homes", "buildings", "places", "locations"], Icon: Icon.HouseLine, }, { name: "house-simple", - categories: [IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.MAP, IconCategory.SYSTEM], tags: ["homes", "buildings", "places", "locations"], Icon: Icon.HouseSimple, }, { name: "identification-card", - categories: [IconCategory.USERS], - tags: ["license", "credentials", "nametag", "verification"], + categories: [IconCategory.PEOPLE], + tags: ["license", "credentials", "nametag", "user", "verification"], Icon: Icon.IdentificationCard, }, { name: "image", - categories: [IconCategory.DOCUMENT, IconCategory.MEDIA], + categories: [IconCategory.MEDIA], tags: [ "pictures", "photographs", @@ -3062,7 +2995,7 @@ export const icons: ReadonlyArray = [ }, { name: "image-square", - categories: [IconCategory.DOCUMENT, IconCategory.MEDIA], + categories: [IconCategory.MEDIA], tags: [ "pictures", "photographs", @@ -3101,7 +3034,7 @@ export const icons: ReadonlyArray = [ }, { name: "jeep", - categories: [IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.MAP, IconCategory.OBJECTS], tags: [ "vehicles", "suv", @@ -3117,7 +3050,7 @@ export const icons: ReadonlyArray = [ }, { name: "key", - categories: [IconCategory.OTHER], + categories: [IconCategory.OBJECTS, IconCategory.SYSTEM], /// !! tags: [ "padlock", "security", @@ -3133,29 +3066,25 @@ export const icons: ReadonlyArray = [ }, { name: "keyboard", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: ["typing", "type", "keys", "input"], Icon: Icon.Keyboard, }, { name: "leaf", - categories: [IconCategory.OTHER], + categories: [IconCategory.NATURE], tags: ["trees", "branches", "leaves", "nodes", "green", "environmental"], Icon: Icon.Leaf, }, { name: "lightbulb", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM, IconCategory.OTHER], + categories: [IconCategory.SYSTEM, IconCategory.OBJECTS], tags: ["flashlight", "bulbs", "lighting", "led", "energy"], Icon: Icon.Lightbulb, }, { name: "lightning", - categories: [ - IconCategory.WEATHER, - IconCategory.SYSTEM, - IconCategory.DEVICE, - ], + categories: [IconCategory.WEATHER, IconCategory.SYSTEM], tags: [ "meteorology", "stormy", @@ -3170,7 +3099,7 @@ export const icons: ReadonlyArray = [ }, { name: "lightning-slash", - categories: [IconCategory.SYSTEM, IconCategory.DEVICE], + categories: [IconCategory.SYSTEM], tags: [ "thunderbolt", "charged", @@ -3183,13 +3112,13 @@ export const icons: ReadonlyArray = [ }, { name: "link", - categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], + categories: [IconCategory.COMMUNICATION, IconCategory.OBJECTS], tags: ["anchor", "hyperlink", "hypertext", "chains", "chained"], Icon: Icon.Link, }, { name: "link-break", - categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], + categories: [IconCategory.COMMUNICATION, IconCategory.OBJECTS], tags: [ "anchor", "hyperlink", @@ -3203,13 +3132,13 @@ export const icons: ReadonlyArray = [ }, { name: "link-simple", - categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], + categories: [IconCategory.COMMUNICATION, IconCategory.OBJECTS], tags: ["anchor", "hyperlink", "hypertext", "chains", "chained"], Icon: Icon.LinkSimple, }, { name: "link-simple-break", - categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], + categories: [IconCategory.COMMUNICATION, IconCategory.OBJECTS], tags: [ "anchor", "hyperlink", @@ -3223,13 +3152,13 @@ export const icons: ReadonlyArray = [ }, { name: "link-simple-horizontal", - categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], + categories: [IconCategory.COMMUNICATION, IconCategory.OBJECTS], tags: ["anchor", "hyperlink", "hypertext", "chains", "chained"], Icon: Icon.LinkSimpleHorizontal, }, { name: "link-simple-horizontal-break", - categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], + categories: [IconCategory.COMMUNICATION, IconCategory.OBJECTS], tags: [ "anchor", "hyperlink", @@ -3265,31 +3194,31 @@ export const icons: ReadonlyArray = [ }, { name: "list-bullets", - categories: [IconCategory.SYSTEM, IconCategory.EDITOR], + categories: [IconCategory.EDITOR], tags: ["ul", "unordered list", "bulleted list", "checklist"], Icon: Icon.ListBullets, }, { name: "list-dashes", - categories: [IconCategory.SYSTEM, IconCategory.EDITOR], + categories: [IconCategory.EDITOR], tags: ["ul", "unordered list", "dashed list", "checklist"], Icon: Icon.ListDashes, }, { name: "list-numbers", - categories: [IconCategory.SYSTEM, IconCategory.EDITOR], + categories: [IconCategory.EDITOR], tags: ["ol", "ordered list", "numbered list", "checklist"], Icon: Icon.ListNumbers, }, { name: "list-plus", - categories: [IconCategory.SYSTEM, IconCategory.EDITOR], + categories: [IconCategory.EDITOR], tags: ["ul", "ol", "unordered list", "ordered list", "checklist", "add"], Icon: Icon.ListPlus, }, { name: "lock", - categories: [IconCategory.OTHER], + categories: [IconCategory.OBJECTS, IconCategory.SYSTEM], tags: [ "padlock", "security", @@ -3305,7 +3234,7 @@ export const icons: ReadonlyArray = [ }, { name: "lock-open", - categories: [IconCategory.OTHER], + categories: [IconCategory.OBJECTS, IconCategory.SYSTEM], tags: [ "padlock", "security", @@ -3321,7 +3250,7 @@ export const icons: ReadonlyArray = [ }, { name: "lock-key", - categories: [IconCategory.OTHER], + categories: [IconCategory.OBJECTS, IconCategory.SYSTEM], tags: [ "padlock", "security", @@ -3337,7 +3266,7 @@ export const icons: ReadonlyArray = [ }, { name: "lock-key-open", - categories: [IconCategory.OTHER], + categories: [IconCategory.OBJECTS, IconCategory.SYSTEM], tags: [ "padlock", "security", @@ -3353,7 +3282,7 @@ export const icons: ReadonlyArray = [ }, { name: "lock-laminated", - categories: [IconCategory.OTHER], + categories: [IconCategory.OBJECTS, IconCategory.SYSTEM], tags: [ "padlock", "security", @@ -3369,7 +3298,7 @@ export const icons: ReadonlyArray = [ }, { name: "lock-laminated-open", - categories: [IconCategory.OTHER], + categories: [IconCategory.OBJECTS, IconCategory.SYSTEM], tags: [ "padlock", "security", @@ -3385,7 +3314,7 @@ export const icons: ReadonlyArray = [ }, { name: "lock-simple", - categories: [IconCategory.OTHER], + categories: [IconCategory.OBJECTS, IconCategory.SYSTEM], tags: [ "padlock", "security", @@ -3401,7 +3330,7 @@ export const icons: ReadonlyArray = [ }, { name: "lock-simple-open", - categories: [IconCategory.OTHER], + categories: [IconCategory.OBJECTS, IconCategory.SYSTEM], tags: [ "padlock", "security", @@ -3453,7 +3382,7 @@ export const icons: ReadonlyArray = [ }, { name: "martini", - categories: [IconCategory.BUSINESS, IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.COMMERCE, IconCategory.MAP, IconCategory.OBJECTS], tags: [ "drinks", "beverages", @@ -3469,11 +3398,7 @@ export const icons: ReadonlyArray = [ }, { name: "math-operations", - categories: [ - IconCategory.DEVELOPMENT, - IconCategory.FINANCE, - IconCategory.OTHER, - ], + categories: [IconCategory.DEVELOPMENT, IconCategory.FINANCE], tags: [ "addition", "sum", @@ -3497,7 +3422,7 @@ export const icons: ReadonlyArray = [ }, { name: "medal", - categories: [IconCategory.OTHER], + categories: [IconCategory.OBJECTS], tags: ["ribbons", "winning", "victory", "awards"], Icon: Icon.Medal, }, @@ -3509,11 +3434,7 @@ export const icons: ReadonlyArray = [ }, { name: "megaphone", - categories: [ - IconCategory.COMMUNICATION, - IconCategory.DEVICE, - IconCategory.OTHER, - ], + categories: [IconCategory.COMMUNICATION, IconCategory.OBJECTS], tags: ["bullhorn", "announcements", "loudspeaker", "broadcast"], Icon: Icon.Megaphone, }, @@ -3521,7 +3442,7 @@ export const icons: ReadonlyArray = [ name: "microphone", categories: [ IconCategory.COMMUNICATION, - IconCategory.DEVICE, + IconCategory.MEDIA, IconCategory.SYSTEM, ], @@ -3532,7 +3453,7 @@ export const icons: ReadonlyArray = [ name: "microphone-slash", categories: [ IconCategory.COMMUNICATION, - IconCategory.DEVICE, + IconCategory.MEDIA, IconCategory.SYSTEM, ], @@ -3552,7 +3473,7 @@ export const icons: ReadonlyArray = [ categories: [ IconCategory.DEVELOPMENT, IconCategory.FINANCE, - IconCategory.OTHER, + IconCategory.SYSTEM, ], tags: [ "subtraction", @@ -3568,7 +3489,7 @@ export const icons: ReadonlyArray = [ categories: [ IconCategory.DEVELOPMENT, IconCategory.FINANCE, - IconCategory.OTHER, + IconCategory.SYSTEM, ], tags: [ "subtraction", @@ -3582,13 +3503,17 @@ export const icons: ReadonlyArray = [ }, { name: "monitor", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: ["screen", "television", "tv", "displays"], Icon: Icon.Monitor, }, { name: "moon", - categories: [IconCategory.OTHER, IconCategory.WEATHER, IconCategory.SYSTEM], + categories: [ + IconCategory.NATURE, + IconCategory.SYSTEM, + IconCategory.WEATHER, + ], tags: [ "night", "evening", @@ -3602,79 +3527,79 @@ export const icons: ReadonlyArray = [ }, { name: "mouse", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: ["clicks", "input"], Icon: Icon.Mouse, }, { name: "music-note", - categories: [IconCategory.MEDIA, IconCategory.SYSTEM], + categories: [IconCategory.MEDIA], tags: ["songs", "audio", "playlist", "albums"], Icon: Icon.MusicNote, }, { name: "music-notes", - categories: [IconCategory.MEDIA, IconCategory.SYSTEM], + categories: [IconCategory.MEDIA], tags: ["songs", "audio", "playlist", "albums"], Icon: Icon.MusicNotes, }, { name: "music-note-simple", - categories: [IconCategory.MEDIA, IconCategory.SYSTEM], + categories: [IconCategory.MEDIA], tags: ["songs", "audio", "playlist", "albums"], Icon: Icon.MusicNoteSimple, }, { name: "music-notes-simple", - categories: [IconCategory.MEDIA, IconCategory.SYSTEM], + categories: [IconCategory.MEDIA], tags: ["songs", "audio", "playlist", "albums"], Icon: Icon.MusicNotesSimple, }, { name: "navigation-arrow", - categories: [IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.MAP], tags: ["location", "directions", "compass", "gps"], Icon: Icon.NavigationArrow, }, { name: "newspaper", - categories: [IconCategory.MEDIA, IconCategory.OTHER], + categories: [IconCategory.MEDIA, IconCategory.OBJECTS], tags: ["reading", "writing", "journals", "periodicals"], Icon: Icon.Newspaper, }, { name: "newspaper-clipping", - categories: [IconCategory.MEDIA, IconCategory.OTHER], + categories: [IconCategory.MEDIA, IconCategory.OBJECTS], tags: ["reading", "writing", "journals", "periodicals"], Icon: Icon.NewspaperClipping, }, { name: "note", - categories: [IconCategory.DOCUMENT, IconCategory.EDITOR], + categories: [IconCategory.OFFICE, IconCategory.EDITOR], tags: ["notes", "note-taking", "memorandum", "post-it", "reminders"], Icon: Icon.Note, }, { name: "note-blank", - categories: [IconCategory.DOCUMENT, IconCategory.EDITOR], + categories: [IconCategory.OFFICE, IconCategory.EDITOR], tags: ["notes", "note-taking", "memorandum", "post-it", "reminders"], Icon: Icon.NoteBlank, }, { name: "note-pencil", - categories: [IconCategory.DOCUMENT, IconCategory.EDITOR], + categories: [IconCategory.OFFICE, IconCategory.EDITOR], tags: ["notes", "note-taking", "memorandum", "post-it", "reminders"], Icon: Icon.NotePencil, }, { name: "notebook", - categories: [IconCategory.DOCUMENT, IconCategory.EDITOR], + categories: [IconCategory.OFFICE, IconCategory.EDITOR], tags: ["notes", "note-taking", "memorandum", "journal", "diary", "logs"], Icon: Icon.Notebook, }, { name: "number-zero", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "0", "numbers", @@ -3689,7 +3614,7 @@ export const icons: ReadonlyArray = [ { name: "number-one", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "1", "numbers", @@ -3704,7 +3629,7 @@ export const icons: ReadonlyArray = [ { name: "number-two", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "2", "numbers", @@ -3719,7 +3644,7 @@ export const icons: ReadonlyArray = [ { name: "number-three", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "3", "numbers", @@ -3734,7 +3659,7 @@ export const icons: ReadonlyArray = [ { name: "number-four", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "4", "numbers", @@ -3749,7 +3674,7 @@ export const icons: ReadonlyArray = [ { name: "number-five", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "5", "numbers", @@ -3764,7 +3689,7 @@ export const icons: ReadonlyArray = [ { name: "number-six", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "6", "numbers", @@ -3779,7 +3704,7 @@ export const icons: ReadonlyArray = [ { name: "number-seven", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "7", "numbers", @@ -3794,7 +3719,7 @@ export const icons: ReadonlyArray = [ { name: "number-eight", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "8", "numbers", @@ -3809,7 +3734,7 @@ export const icons: ReadonlyArray = [ { name: "number-nine", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "9", "numbers", @@ -3823,7 +3748,7 @@ export const icons: ReadonlyArray = [ }, { name: "number-circle-zero", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "0", "round", @@ -3838,7 +3763,7 @@ export const icons: ReadonlyArray = [ }, { name: "number-circle-one", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "1", "round", @@ -3853,7 +3778,7 @@ export const icons: ReadonlyArray = [ }, { name: "number-circle-two", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "2", "round", @@ -3868,7 +3793,7 @@ export const icons: ReadonlyArray = [ }, { name: "number-circle-three", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "3", "round", @@ -3883,7 +3808,7 @@ export const icons: ReadonlyArray = [ }, { name: "number-circle-four", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "4", "round", @@ -3898,7 +3823,7 @@ export const icons: ReadonlyArray = [ }, { name: "number-circle-five", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "5", "round", @@ -3913,7 +3838,7 @@ export const icons: ReadonlyArray = [ }, { name: "number-circle-six", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "6", "round", @@ -3928,7 +3853,7 @@ export const icons: ReadonlyArray = [ }, { name: "number-circle-seven", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "7", "round", @@ -3943,7 +3868,7 @@ export const icons: ReadonlyArray = [ }, { name: "number-circle-eight", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "8", "round", @@ -3958,7 +3883,7 @@ export const icons: ReadonlyArray = [ }, { name: "number-circle-nine", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "9", "round", @@ -3973,7 +3898,7 @@ export const icons: ReadonlyArray = [ }, { name: "number-square-zero", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "0", "numbers", @@ -3987,7 +3912,7 @@ export const icons: ReadonlyArray = [ }, { name: "number-square-one", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "1", "numbers", @@ -4001,7 +3926,7 @@ export const icons: ReadonlyArray = [ }, { name: "number-square-two", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "2", "numbers", @@ -4015,7 +3940,7 @@ export const icons: ReadonlyArray = [ }, { name: "number-square-three", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "3", "numbers", @@ -4029,7 +3954,7 @@ export const icons: ReadonlyArray = [ }, { name: "number-square-four", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "4", "numbers", @@ -4043,7 +3968,7 @@ export const icons: ReadonlyArray = [ }, { name: "number-square-five", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "5", "numbers", @@ -4057,7 +3982,7 @@ export const icons: ReadonlyArray = [ }, { name: "number-square-six", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "6", "numbers", @@ -4071,7 +3996,7 @@ export const icons: ReadonlyArray = [ }, { name: "number-square-seven", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "7", "numbers", @@ -4085,7 +4010,7 @@ export const icons: ReadonlyArray = [ }, { name: "number-square-eight", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "8", "numbers", @@ -4099,7 +4024,7 @@ export const icons: ReadonlyArray = [ }, { name: "number-square-nine", - categories: [IconCategory.FINANCE, IconCategory.OTHER], + categories: [IconCategory.FINANCE], tags: [ "9", "numbers", @@ -4113,23 +4038,19 @@ export const icons: ReadonlyArray = [ }, { name: "nut", - categories: [IconCategory.OTHER], + categories: [IconCategory.OBJECTS, IconCategory.SYSTEM], tags: ["bolts", "screws", "machinery", "tools", "hexagon"], Icon: Icon.Nut, }, { name: "octagon", - categories: [IconCategory.OTHER], + categories: [IconCategory.DESIGN], tags: ["8", "shapes", "polygons"], Icon: Icon.Octagon, }, { name: "package", - categories: [ - IconCategory.BUSINESS, - IconCategory.DEVELOPMENT, - IconCategory.OTHER, - ], + categories: [IconCategory.DEVELOPMENT, IconCategory.OBJECTS], tags: [ "packages", "delivery", @@ -4144,13 +4065,21 @@ export const icons: ReadonlyArray = [ }, { name: "paint-bucket", - categories: [IconCategory.DESIGN, IconCategory.EDITOR, IconCategory.OTHER], + categories: [ + IconCategory.DESIGN, + IconCategory.EDITOR, + IconCategory.OBJECTS, + ], tags: ["paintbucket", "fill"], Icon: Icon.PaintBucket, }, { name: "paper-plane", - categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], + categories: [ + IconCategory.COMMUNICATION, + IconCategory.MAP, + IconCategory.OBJECTS, + ], tags: [ "mail", "email", @@ -4165,7 +4094,11 @@ export const icons: ReadonlyArray = [ }, { name: "paper-plane-right", - categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], + categories: [ + IconCategory.COMMUNICATION, + IconCategory.MAP, + IconCategory.OBJECTS, + ], tags: [ "mail", "email", @@ -4180,7 +4113,11 @@ export const icons: ReadonlyArray = [ }, { name: "paper-plane-tilt", - categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], + categories: [ + IconCategory.COMMUNICATION, + IconCategory.MAP, + IconCategory.OBJECTS, + ], tags: [ "mail", "email", @@ -4198,7 +4135,8 @@ export const icons: ReadonlyArray = [ categories: [ IconCategory.COMMUNICATION, IconCategory.EDITOR, - IconCategory.OTHER, + IconCategory.OFFICE, + IconCategory.OBJECTS, ], tags: ["attachments", "mail", "email", "office"], Icon: Icon.Paperclip, @@ -4219,28 +4157,27 @@ export const icons: ReadonlyArray = [ }, { name: "pause", - categories: [IconCategory.MEDIA, IconCategory.SYSTEM], + categories: [IconCategory.MEDIA], tags: ["music", "audio", "resume", "start", "stop"], Icon: Icon.Pause, }, { name: "pause-circle", - categories: [IconCategory.MEDIA, IconCategory.SYSTEM], + categories: [IconCategory.MEDIA], tags: ["music", "audio", "resume", "start", "stop", "round"], Icon: Icon.PauseCircle, }, { name: "peace", - categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], + categories: [IconCategory.COMMUNICATION], tags: ["love", "hippies", "peace sign", "symbols"], Icon: Icon.Peace, }, { name: "pedestrian", - categories: [IconCategory.MAP, IconCategory.USERS, IconCategory.OTHER], + categories: [IconCategory.MAP, IconCategory.PEOPLE], tags: [ "person", - "people", "walking", "human", "woman", @@ -4250,18 +4187,19 @@ export const icons: ReadonlyArray = [ "transportation", "travel", "commuter", + "user", ], Icon: Icon.Pedestrian, }, { name: "pen", - categories: [IconCategory.DESIGN, IconCategory.EDITOR], + categories: [IconCategory.DESIGN, IconCategory.EDITOR, IconCategory.OFFICE], tags: ["ink", "write", "writing", "editing", "sign", "signature"], Icon: Icon.Pen, }, { name: "pen-nib", - categories: [IconCategory.DESIGN, IconCategory.EDITOR], + categories: [IconCategory.DESIGN, IconCategory.EDITOR, IconCategory.OFFICE], tags: [ "ink", "write", @@ -4276,35 +4214,31 @@ export const icons: ReadonlyArray = [ }, { name: "pencil", - categories: [IconCategory.DESIGN, IconCategory.EDITOR], + categories: [IconCategory.DESIGN, IconCategory.EDITOR, IconCategory.OFFICE], tags: ["write", "writing", "editing", "sign", "signature"], Icon: Icon.Pencil, }, { name: "pencil-circle", - categories: [IconCategory.DESIGN, IconCategory.EDITOR], + categories: [IconCategory.DESIGN, IconCategory.EDITOR, IconCategory.OFFICE], tags: ["write", "writing", "editing", "sign", "signature"], Icon: Icon.PencilCircle, }, { name: "pencil-line", - categories: [IconCategory.DESIGN, IconCategory.EDITOR], + categories: [IconCategory.DESIGN, IconCategory.EDITOR, IconCategory.OFFICE], tags: ["write", "writing", "editing", "sign", "signature"], Icon: Icon.PencilLine, }, { name: "pencil-simple", - categories: [IconCategory.DESIGN, IconCategory.EDITOR], + categories: [IconCategory.DESIGN, IconCategory.EDITOR, IconCategory.OFFICE], tags: ["write", "writing", "editing", "sign", "signature"], Icon: Icon.PencilSimple, }, { name: "percent", - categories: [ - IconCategory.DEVELOPMENT, - IconCategory.FINANCE, - IconCategory.OTHER, - ], + categories: [IconCategory.DEVELOPMENT, IconCategory.FINANCE], tags: [ "percentage", "percentile", @@ -4318,43 +4252,43 @@ export const icons: ReadonlyArray = [ }, { name: "phone", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.COMMUNICATION, IconCategory.SYSTEM], tags: ["calls", "telephone", "landline"], Icon: Icon.Phone, }, { name: "phone-call", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.COMMUNICATION, IconCategory.SYSTEM], tags: ["calls", "calling", "ringing", "telephone", "landline"], Icon: Icon.PhoneCall, }, { name: "phone-disconnect", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.COMMUNICATION, IconCategory.SYSTEM], tags: ["calls", "hang up", "disconnected", "telephone", "landline"], Icon: Icon.PhoneDisconnect, }, { name: "phone-incoming", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.COMMUNICATION, IconCategory.SYSTEM], tags: ["calls", "calling", "telephone", "landline"], Icon: Icon.PhoneIncoming, }, { name: "phone-outgoing", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.COMMUNICATION, IconCategory.SYSTEM], tags: ["calls", "calling", "telephone", "landline"], Icon: Icon.PhoneOutgoing, }, { name: "phone-slash", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.COMMUNICATION, IconCategory.SYSTEM], tags: ["calls", "disabled", "disconnected", "telephone", "landline"], Icon: Icon.PhoneSlash, }, { name: "phone-x", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.COMMUNICATION, IconCategory.SYSTEM], tags: ["calls", "missed", "errors", "telephone", "landline"], Icon: Icon.PhoneX, }, @@ -4366,13 +4300,13 @@ export const icons: ReadonlyArray = [ }, { name: "play", - categories: [IconCategory.MEDIA, IconCategory.SYSTEM], + categories: [IconCategory.MEDIA], tags: ["music", "audio", "resume", "start"], Icon: Icon.Play, }, { name: "play-circle", - categories: [IconCategory.MEDIA, IconCategory.SYSTEM], + categories: [IconCategory.MEDIA], tags: ["music", "audio", "resume", "start", "round"], Icon: Icon.PlayCircle, }, @@ -4381,7 +4315,7 @@ export const icons: ReadonlyArray = [ categories: [ IconCategory.DEVELOPMENT, IconCategory.FINANCE, - IconCategory.OTHER, + IconCategory.SYSTEM, ], tags: ["addition", "sum", "mathematics", "arithmetic", "calculator"], Icon: Icon.Plus, @@ -4391,7 +4325,7 @@ export const icons: ReadonlyArray = [ categories: [ IconCategory.DEVELOPMENT, IconCategory.FINANCE, - IconCategory.OTHER, + IconCategory.SYSTEM, ], tags: [ "addition", @@ -4405,11 +4339,7 @@ export const icons: ReadonlyArray = [ }, { name: "plus-minus", - categories: [ - IconCategory.DEVELOPMENT, - IconCategory.FINANCE, - IconCategory.OTHER, - ], + categories: [IconCategory.DEVELOPMENT, IconCategory.FINANCE], tags: [ "plus or minus", "plus/minus", @@ -4426,7 +4356,7 @@ export const icons: ReadonlyArray = [ }, { name: "power", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: [ "charged", "charger", @@ -4441,17 +4371,13 @@ export const icons: ReadonlyArray = [ }, { name: "printer", - categories: [ - IconCategory.DEVICE, - IconCategory.EDITOR, - IconCategory.DOCUMENT, - ], + categories: [IconCategory.EDITOR, IconCategory.OFFICE], tags: ["printing"], Icon: Icon.Printer, }, { name: "prohibit", - categories: [IconCategory.MAP, IconCategory.SYSTEM, IconCategory.OTHER], + categories: [IconCategory.MAP, IconCategory.SYSTEM], tags: [ "forbidden", "prohibited", @@ -4464,7 +4390,7 @@ export const icons: ReadonlyArray = [ }, { name: "prohibit-inset", - categories: [IconCategory.MAP, IconCategory.SYSTEM, IconCategory.OTHER], + categories: [IconCategory.MAP, IconCategory.SYSTEM], tags: [ "forbidden", "prohibited", @@ -4477,19 +4403,19 @@ export const icons: ReadonlyArray = [ }, { name: "push-pin", - categories: [IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.OFFICE, IconCategory.MAP, IconCategory.OBJECTS], tags: ["favorites", "favorited", "pushpin"], Icon: Icon.PushPin, }, { name: "push-pin-slash", - categories: [IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.OFFICE, IconCategory.MAP, IconCategory.OBJECTS], tags: ["favorites", "favorited", "pushpin", "disabled"], Icon: Icon.PushPinSlash, }, { name: "qr-code", - categories: [IconCategory.BUSINESS], + categories: [IconCategory.SYSTEM], tags: ["upc", "barcode", "products", "shopping", "scanner"], Icon: Icon.QrCode, }, @@ -4501,11 +4427,7 @@ export const icons: ReadonlyArray = [ }, { name: "radical", - categories: [ - IconCategory.DEVELOPMENT, - IconCategory.FINANCE, - IconCategory.OTHER, - ], + categories: [IconCategory.DEVELOPMENT, IconCategory.FINANCE], tags: [ "radix", "radicand", @@ -4519,43 +4441,43 @@ export const icons: ReadonlyArray = [ }, { name: "receipt", - categories: [IconCategory.BUSINESS, IconCategory.FINANCE], + categories: [IconCategory.COMMERCE, IconCategory.FINANCE], tags: ["purchased", "clipping", "expenses"], Icon: Icon.Receipt, }, { name: "record", - categories: [IconCategory.MEDIA, IconCategory.SYSTEM], + categories: [IconCategory.MEDIA], tags: ["music", "audio", "recording", "recorder", "voice memo"], Icon: Icon.Record, }, { name: "rectangle", - categories: [IconCategory.OTHER], + categories: [IconCategory.DESIGN], tags: ["4", "shapes", "polygons", "box"], Icon: Icon.Rectangle, }, { name: "rectangles-two", - categories: [IconCategory.OTHER], + categories: [IconCategory.DESIGN], tags: ["2", "shapes", "polygons", "box", "stack", "list", "cards"], Icon: Icon.RectanglesTwo, }, { name: "repeat", - categories: [IconCategory.MEDIA, IconCategory.SYSTEM], + categories: [IconCategory.MEDIA], tags: ["music", "audio", "recycle"], Icon: Icon.Repeat, }, { name: "repeat-once", - categories: [IconCategory.MEDIA, IconCategory.SYSTEM], + categories: [IconCategory.MEDIA], tags: ["music", "audio", "recycle"], Icon: Icon.RepeatOnce, }, { name: "rewind", - categories: [IconCategory.MEDIA, IconCategory.SYSTEM], + categories: [IconCategory.MEDIA], tags: [ "music", "audio", @@ -4571,39 +4493,44 @@ export const icons: ReadonlyArray = [ }, { name: "rocket", - categories: [IconCategory.DEVELOPMENT, IconCategory.OTHER], + categories: [ + IconCategory.DEVELOPMENT, + IconCategory.MAP, + IconCategory.OBJECTS, + ], tags: ["spaceship", "launch", "deployment", "rocketship"], Icon: Icon.Rocket, }, { name: "rocket-launch", - categories: [IconCategory.DEVELOPMENT, IconCategory.OTHER], + categories: [ + IconCategory.DEVELOPMENT, + IconCategory.MAP, + IconCategory.OBJECTS, + ], tags: ["spaceship", "flying", "blastoff", "deployment", "rocketship"], Icon: Icon.RocketLaunch, }, { name: "rss", - categories: [ - IconCategory.COMMUNICATION, - IconCategory.SYSTEM, - IconCategory.OTHER, - ], + categories: [IconCategory.COMMUNICATION], tags: ["radio", "broadcast", "web feed", "news", "aggregator"], Icon: Icon.Rss, }, { name: "rss-simple", - categories: [ - IconCategory.COMMUNICATION, - IconCategory.SYSTEM, - IconCategory.OTHER, - ], + categories: [IconCategory.COMMUNICATION], tags: ["radio", "broadcast", "web feed", "news", "aggregator"], Icon: Icon.RssSimple, }, { name: "scissors", - categories: [IconCategory.EDITOR, IconCategory.SYSTEM], + categories: [ + IconCategory.DESIGN, + IconCategory.EDITOR, + IconCategory.OFFICE, + IconCategory.SYSTEM, + ], tags: ["cut", "snip", "clipboard"], Icon: Icon.Scissors, }, @@ -4627,7 +4554,7 @@ export const icons: ReadonlyArray = [ }, { name: "shield", - categories: [IconCategory.SYSTEM, IconCategory.OTHER], + categories: [IconCategory.SYSTEM, IconCategory.OBJECTS], tags: [ "security", "secured", @@ -4644,7 +4571,7 @@ export const icons: ReadonlyArray = [ }, { name: "shield-check", - categories: [IconCategory.SYSTEM, IconCategory.OTHER], + categories: [IconCategory.SYSTEM, IconCategory.OBJECTS], tags: [ "security", "secured", @@ -4661,7 +4588,7 @@ export const icons: ReadonlyArray = [ }, { name: "shield-chevron", - categories: [IconCategory.SYSTEM, IconCategory.OTHER], + categories: [IconCategory.SYSTEM, IconCategory.OBJECTS], tags: [ "security", "secured", @@ -4678,7 +4605,7 @@ export const icons: ReadonlyArray = [ }, { name: "shield-slash", - categories: [IconCategory.SYSTEM, IconCategory.OTHER], + categories: [IconCategory.SYSTEM, IconCategory.OBJECTS], tags: [ "security", "unsecured", @@ -4696,7 +4623,7 @@ export const icons: ReadonlyArray = [ }, { name: "shield-warning", - categories: [IconCategory.SYSTEM, IconCategory.OTHER], + categories: [IconCategory.SYSTEM, IconCategory.OBJECTS], tags: [ "security", "unsecured", @@ -4714,19 +4641,19 @@ export const icons: ReadonlyArray = [ }, { name: "shopping-bag", - categories: [IconCategory.BUSINESS, IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.COMMERCE, IconCategory.MAP, IconCategory.OBJECTS], tags: ["ecommerce", "market", "buying", "checkout", "places", "locations"], Icon: Icon.ShoppingBag, }, { name: "shopping-bag-open", - categories: [IconCategory.BUSINESS, IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.COMMERCE, IconCategory.MAP, IconCategory.OBJECTS], tags: ["ecommerce", "market", "buying", "checkout", "places", "locations"], Icon: Icon.ShoppingBagOpen, }, { name: "shopping-cart", - categories: [IconCategory.BUSINESS, IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.COMMERCE, IconCategory.MAP, IconCategory.OBJECTS], tags: [ "ecommerce", "market", @@ -4740,7 +4667,7 @@ export const icons: ReadonlyArray = [ }, { name: "shopping-cart-simple", - categories: [IconCategory.BUSINESS, IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.COMMERCE, IconCategory.MAP, IconCategory.OBJECTS], tags: [ "ecommerce", "market", @@ -4754,19 +4681,19 @@ export const icons: ReadonlyArray = [ }, { name: "shuffle", - categories: [IconCategory.MEDIA, IconCategory.SYSTEM, IconCategory.ARROWS], + categories: [IconCategory.MEDIA, IconCategory.ARROWS], tags: ["music", "audio", "randomize", "crossed"], Icon: Icon.Shuffle, }, { name: "shuffle-angular", - categories: [IconCategory.MEDIA, IconCategory.SYSTEM, IconCategory.ARROWS], + categories: [IconCategory.MEDIA, IconCategory.ARROWS], tags: ["music", "audio", "randomize", "crossed"], Icon: Icon.ShuffleAngular, }, { name: "shuffle-simple", - categories: [IconCategory.MEDIA, IconCategory.SYSTEM, IconCategory.ARROWS], + categories: [IconCategory.MEDIA, IconCategory.ARROWS], tags: ["music", "audio", "randomize", "crossed"], Icon: Icon.ShuffleSimple, }, @@ -4784,7 +4711,7 @@ export const icons: ReadonlyArray = [ }, { name: "sketch-logo", - categories: [IconCategory.DESIGN, IconCategory.OTHER], + categories: [IconCategory.DESIGN], tags: [ "drawing", "art", @@ -4800,7 +4727,7 @@ export const icons: ReadonlyArray = [ }, { name: "skip-back", - categories: [IconCategory.MEDIA, IconCategory.SYSTEM], + categories: [IconCategory.MEDIA], tags: [ "music", "audio", @@ -4816,7 +4743,7 @@ export const icons: ReadonlyArray = [ }, { name: "skip-forward", - categories: [IconCategory.MEDIA, IconCategory.SYSTEM], + categories: [IconCategory.MEDIA], tags: ["music", "audio", "seek", "scrub", "scan", "ahead", "next"], Icon: Icon.SkipForward, }, @@ -4850,25 +4777,25 @@ export const icons: ReadonlyArray = [ }, { name: "smiley", - categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], + categories: [IconCategory.COMMUNICATION, IconCategory.PEOPLE], tags: ["face", "smiley", "emoji", "happy", "grinning", "smiling"], Icon: Icon.Smiley, }, { name: "smiley-blank", - categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], + categories: [IconCategory.COMMUNICATION, IconCategory.PEOPLE], tags: ["face", "smiley", "emoji", "unimpressed", "no face"], Icon: Icon.SmileyBlank, }, { name: "smiley-meh", - categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], + categories: [IconCategory.COMMUNICATION, IconCategory.PEOPLE], tags: ["face", "smiley", "emoji", "unimpressed", "neutral"], Icon: Icon.SmileyMeh, }, { name: "smiley-nervous", - categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], + categories: [IconCategory.COMMUNICATION, IconCategory.PEOPLE], tags: [ "face", "smiley", @@ -4884,19 +4811,19 @@ export const icons: ReadonlyArray = [ }, { name: "smiley-sad", - categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], + categories: [IconCategory.COMMUNICATION, IconCategory.PEOPLE], tags: ["face", "smiley", "emoji", "unhappy", "frowning"], Icon: Icon.SmileySad, }, { name: "smiley-sticker", - categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], + categories: [IconCategory.COMMUNICATION, IconCategory.PEOPLE], tags: ["face", "smiley", "emoji", "happy", "grinning", "smiling"], Icon: Icon.SmileySticker, }, { name: "smiley-x-eyes", - categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], + categories: [IconCategory.COMMUNICATION, IconCategory.PEOPLE], tags: ["face", "smiley", "emoji", "dead", "killed", "unconscious"], Icon: Icon.SmileyXEyes, }, @@ -4914,7 +4841,7 @@ export const icons: ReadonlyArray = [ }, { name: "spade", - categories: [IconCategory.OTHER], + categories: [IconCategory.GAMES], tags: ["spades", "suits", "cards", "gambling", "casino", "games", "gaming"], Icon: Icon.Spade, }, @@ -4980,13 +4907,13 @@ export const icons: ReadonlyArray = [ }, { name: "square", - categories: [IconCategory.OTHER], + categories: [IconCategory.DESIGN], tags: ["4", "shapes", "polygons", "box"], Icon: Icon.Square, }, { name: "square-half", - categories: [IconCategory.OTHER], + categories: [IconCategory.DESIGN], tags: [ "4", "shapes", @@ -5000,29 +4927,19 @@ export const icons: ReadonlyArray = [ }, { name: "squares-four", - categories: [IconCategory.SYSTEM, IconCategory.OTHER], + categories: [IconCategory.DESIGN, IconCategory.SYSTEM], tags: ["4", "shapes", "polygons", "apps", "applications", "grid", "table"], Icon: Icon.SquaresFour, }, { name: "stack", - categories: [ - IconCategory.DESIGN, - IconCategory.DOCUMENT, - IconCategory.EDITOR, - IconCategory.OTHER, - ], + categories: [IconCategory.DESIGN, IconCategory.OFFICE, IconCategory.EDITOR], tags: ["cards", "layers"], Icon: Icon.Stack, }, { name: "stack-simple", - categories: [ - IconCategory.DESIGN, - IconCategory.DOCUMENT, - IconCategory.EDITOR, - IconCategory.OTHER, - ], + categories: [IconCategory.DESIGN, IconCategory.OFFICE, IconCategory.EDITOR], tags: ["cards", "layers"], Icon: Icon.StackSimple, }, @@ -5031,26 +4948,26 @@ export const icons: ReadonlyArray = [ categories: [ IconCategory.COMMUNICATION, IconCategory.MAP, - IconCategory.OTHER, + IconCategory.NATURE, ], tags: ["rate", "ratings", "favorites", "favorited"], Icon: Icon.Star, }, { name: "stop", - categories: [IconCategory.MEDIA, IconCategory.SYSTEM], + categories: [IconCategory.MEDIA], tags: ["music", "audio"], Icon: Icon.Stop, }, { name: "stop-circle", - categories: [IconCategory.MEDIA, IconCategory.SYSTEM], + categories: [IconCategory.MEDIA], tags: ["music", "audio", "round"], Icon: Icon.StopCircle, }, { name: "storefront", - categories: [IconCategory.BUSINESS, IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.COMMERCE, IconCategory.MAP], /// ?? tags: [ "shops", "shopping", @@ -5064,7 +4981,11 @@ export const icons: ReadonlyArray = [ }, { name: "sun", - categories: [IconCategory.OTHER, IconCategory.WEATHER, IconCategory.SYSTEM], + categories: [ + IconCategory.NATURE, + IconCategory.SYSTEM, + IconCategory.WEATHER, + ], tags: [ "day", "daytime", @@ -5081,7 +5002,11 @@ export const icons: ReadonlyArray = [ }, { name: "sun-dim", - categories: [IconCategory.OTHER, IconCategory.WEATHER, IconCategory.SYSTEM], + categories: [ + IconCategory.NATURE, + IconCategory.SYSTEM, + IconCategory.WEATHER, + ], tags: [ "day", "daytime", @@ -5098,8 +5023,8 @@ export const icons: ReadonlyArray = [ { name: "table", categories: [ - IconCategory.BUSINESS, IconCategory.FINANCE, + IconCategory.OFFICE, IconCategory.EDITOR, ], tags: ["tables", "tabular", "speadsheets", "excel", "grid"], @@ -5108,9 +5033,9 @@ export const icons: ReadonlyArray = [ { name: "tag", categories: [ - IconCategory.BUSINESS, + IconCategory.COMMERCE, IconCategory.DEVELOPMENT, - IconCategory.OTHER, + IconCategory.OBJECTS, ], tags: ["tags", "hashtag", "labels"], Icon: Icon.Tag, @@ -5118,16 +5043,16 @@ export const icons: ReadonlyArray = [ { name: "tag-simple", categories: [ - IconCategory.BUSINESS, + IconCategory.COMMERCE, IconCategory.DEVELOPMENT, - IconCategory.OTHER, + IconCategory.OBJECTS, ], tags: ["tags", "hashtag", "labels"], Icon: Icon.TagSimple, }, { name: "target", - categories: [IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.MAP, IconCategory.OBJECTS], tags: ["bullseye", "radar", "archery", "accuracy", "precision"], Icon: Icon.Target, }, @@ -5169,19 +5094,19 @@ export const icons: ReadonlyArray = [ }, { name: "thumbs-up", - categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], + categories: [IconCategory.COMMUNICATION, IconCategory.PEOPLE], tags: ["like", "love", "favorited", "favorites", "emoji"], Icon: Icon.ThumbsUp, }, { name: "thumbs-down", - categories: [IconCategory.COMMUNICATION, IconCategory.OTHER], + categories: [IconCategory.COMMUNICATION, IconCategory.PEOPLE], tags: ["dislike", "hate", "emoji"], Icon: Icon.ThumbsDown, }, { name: "ticket", - categories: [IconCategory.BUSINESS, IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.COMMERCE, IconCategory.MAP, IconCategory.OBJECTS], tags: ["ticketstub", "movie ticket", "entry", "admissions"], Icon: Icon.Ticket, }, @@ -5193,13 +5118,13 @@ export const icons: ReadonlyArray = [ }, { name: "tote", - categories: [IconCategory.BUSINESS, IconCategory.OTHER], + categories: [IconCategory.COMMERCE, IconCategory.OBJECTS], tags: ["suitcases", "valises", "baggage", "tote-bag", "portfolios"], Icon: Icon.Tote, }, { name: "train", - categories: [IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.MAP, IconCategory.OBJECTS], tags: [ "vehicles", "subway", @@ -5215,7 +5140,7 @@ export const icons: ReadonlyArray = [ }, { name: "train-regional", - categories: [IconCategory.BUSINESS, IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.MAP, IconCategory.OBJECTS], tags: [ "vehicles", "subway", @@ -5233,7 +5158,7 @@ export const icons: ReadonlyArray = [ }, { name: "train-simple", - categories: [IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.MAP, IconCategory.OBJECTS], tags: [ "vehicles", "subway", @@ -5261,20 +5186,20 @@ export const icons: ReadonlyArray = [ }, { name: "trash", - categories: [IconCategory.DOCUMENT, IconCategory.SYSTEM], + categories: [IconCategory.OFFICE, IconCategory.SYSTEM], tags: ["garbage", "remove", "delete", "destroy", "recycle", "recycling"], Icon: Icon.Trash, }, { name: "trash-simple", - categories: [IconCategory.DOCUMENT, IconCategory.SYSTEM], + categories: [IconCategory.OFFICE, IconCategory.SYSTEM], tags: ["garbage", "remove", "delete", "destroy", "recycle", "recycling"], Icon: Icon.TrashSimple, }, { name: "tray", categories: [ - IconCategory.BUSINESS, + IconCategory.OFFICE, IconCategory.COMMUNICATION, IconCategory.SYSTEM, ], @@ -5283,7 +5208,7 @@ export const icons: ReadonlyArray = [ }, { name: "trend-up", - categories: [IconCategory.BUSINESS, IconCategory.FINANCE], + categories: [IconCategory.FINANCE], tags: [ "graphs", "graphing", @@ -5297,7 +5222,7 @@ export const icons: ReadonlyArray = [ }, { name: "trend-down", - categories: [IconCategory.BUSINESS, IconCategory.FINANCE], + categories: [IconCategory.FINANCE], tags: [ "graphs", "graphing", @@ -5311,13 +5236,13 @@ export const icons: ReadonlyArray = [ }, { name: "triangle", - categories: [IconCategory.OTHER], + categories: [IconCategory.DESIGN], tags: ["3", "shapes", "polygons"], Icon: Icon.Triangle, }, { name: "truck", - categories: [IconCategory.BUSINESS, IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.COMMERCE, IconCategory.MAP, IconCategory.OBJECTS], tags: ["trucks", "cars", "vehicles", "shipping", "delivery"], Icon: Icon.Truck, }, @@ -5329,7 +5254,7 @@ export const icons: ReadonlyArray = [ }, { name: "upload", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: [ "saved", "saving", @@ -5345,7 +5270,7 @@ export const icons: ReadonlyArray = [ }, { name: "upload-simple", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: [ "saved", "saving", @@ -5361,13 +5286,13 @@ export const icons: ReadonlyArray = [ }, { name: "user", - categories: [IconCategory.USERS], + categories: [IconCategory.PEOPLE], tags: ["person", "users", "profile", "account", "contact", "login"], Icon: Icon.User, }, { name: "user-gear", - categories: [IconCategory.USERS], + categories: [IconCategory.PEOPLE], tags: [ "person", "users", @@ -5381,13 +5306,13 @@ export const icons: ReadonlyArray = [ }, { name: "user-plus", - categories: [IconCategory.USERS], + categories: [IconCategory.PEOPLE], tags: ["person", "users", "profile", "account", "contact", "add", "create"], Icon: Icon.UserPlus, }, { name: "user-minus", - categories: [IconCategory.USERS], + categories: [IconCategory.PEOPLE], tags: [ "person", "users", @@ -5401,15 +5326,16 @@ export const icons: ReadonlyArray = [ }, { name: "user-circle", - categories: [IconCategory.USERS], - tags: ["person", "profile", "account", "contact", "login"], + categories: [IconCategory.PEOPLE], + tags: ["person", "users", "profile", "account", "contact", "login"], Icon: Icon.UserCircle, }, { name: "user-circle-gear", - categories: [IconCategory.USERS], + categories: [IconCategory.PEOPLE], tags: [ "person", + "users", "profile", "account", "contact", @@ -5420,37 +5346,45 @@ export const icons: ReadonlyArray = [ }, { name: "user-circle-plus", - categories: [IconCategory.USERS], - tags: ["person", "profile", "account", "contact", "add", "create"], + categories: [IconCategory.PEOPLE], + tags: ["person", "users", "profile", "account", "contact", "add", "create"], Icon: Icon.UserCirclePlus, }, { name: "user-circle-minus", - categories: [IconCategory.USERS], - tags: ["person", "profile", "account", "contact", "delete", "remove"], + categories: [IconCategory.PEOPLE], + tags: [ + "person", + "users", + "profile", + "account", + "contact", + "delete", + "remove", + ], Icon: Icon.UserCircleMinus, }, { name: "user-rectangle", - categories: [IconCategory.USERS], - tags: ["person", "profile", "account", "contact", "login"], + categories: [IconCategory.PEOPLE], + tags: ["person", "users", "profile", "account", "contact", "login"], Icon: Icon.UserRectangle, }, { name: "user-square", - categories: [IconCategory.USERS], - tags: ["person", "profile", "account", "contact", "login"], + categories: [IconCategory.PEOPLE], + tags: ["person", "users", "profile", "account", "contact", "login"], Icon: Icon.UserSquare, }, { name: "users", - categories: [IconCategory.USERS], - tags: ["people", "profiles", "accounts", "contacts"], + categories: [IconCategory.PEOPLE], + tags: ["user", "people", "profiles", "accounts", "contacts"], Icon: Icon.Users, }, { name: "vibrate", - categories: [IconCategory.MEDIA, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: [ "audio", "volume", @@ -5464,19 +5398,19 @@ export const icons: ReadonlyArray = [ }, { name: "video-camera", - categories: [IconCategory.DEVICE, IconCategory.MEDIA, IconCategory.SYSTEM], + categories: [IconCategory.MEDIA, IconCategory.SYSTEM], tags: ["videography", "films", "movies", "recording"], Icon: Icon.VideoCamera, }, { name: "video-camera-slash", - categories: [IconCategory.DEVICE, IconCategory.MEDIA, IconCategory.SYSTEM], + categories: [IconCategory.MEDIA, IconCategory.SYSTEM], tags: ["videography", "films", "movies", "recording", "disabled"], Icon: Icon.VideoCameraSlash, }, { name: "voicemail", - categories: [IconCategory.DEVICE, IconCategory.SYSTEM], + categories: [IconCategory.SYSTEM], tags: ["phonecalls", "missed", "recording", "telephone", "landline"], Icon: Icon.Voicemail, }, @@ -5515,9 +5449,10 @@ export const icons: ReadonlyArray = [ }, { name: "wheelchair", - categories: [IconCategory.HEALTH, IconCategory.MAP, IconCategory.OTHER], + categories: [IconCategory.HEALTH, IconCategory.MAP, IconCategory.PEOPLE], tags: [ "handicapped", + "medical", "disabled", "differently abled", "accessible", @@ -5584,7 +5519,6 @@ export const icons: ReadonlyArray = [ IconCategory.DEVELOPMENT, IconCategory.FINANCE, IconCategory.SYSTEM, - IconCategory.OTHER, ], tags: [ @@ -5603,13 +5537,13 @@ export const icons: ReadonlyArray = [ }, { name: "x-circle", - categories: [IconCategory.SYSTEM, IconCategory.OTHER], + categories: [IconCategory.SYSTEM], tags: ["closed", "cancelled", "dismissed", "round"], Icon: Icon.XCircle, }, { name: "x-square", - categories: [IconCategory.SYSTEM, IconCategory.OTHER], + categories: [IconCategory.SYSTEM], tags: ["closed", "cancelled", "dismissed"], Icon: Icon.XSquare, }, diff --git a/src/lib/index.ts b/src/lib/index.ts index aa973b2..7f958be 100644 --- a/src/lib/index.ts +++ b/src/lib/index.ts @@ -12,21 +12,22 @@ export enum IconStyle { export enum IconCategory { ARROWS = "arrows", BRAND = "brands", - BUSINESS = "business", + COMMERCE = "commerce", COMMUNICATION = "communications", DESIGN = "design", DEVELOPMENT = "development", - DEVICE = "devices", - DOCUMENT = "documents", + OFFICE = "office", EDITOR = "editor", FINANCE = "finances", - HEALTH = "health & medical", - MAP = "maps", + GAMES = "games", + HEALTH = "health & wellness", + MAP = "maps & navigation", MEDIA = "media", + NATURE = "nature", + OBJECTS = "objects", + PEOPLE = "people", SYSTEM = "system", - USERS = "users", WEATHER = "weather", - OTHER = "other", } export interface IconEntry { From 2fd5fb7c4fa5c7bc0ea500ad0ca59d6259389b93 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Sat, 10 Oct 2020 21:11:12 -0400 Subject: [PATCH 42/46] public: add favicons --- public/favicon-192.png | Bin 0 -> 5422 bytes public/favicon-512.png | Bin 0 -> 18106 bytes public/favicon.ico | Bin 3150 -> 15406 bytes public/index.html | 2 +- public/logo192.png | Bin 5347 -> 0 bytes public/logo512.png | Bin 9664 -> 0 bytes public/manifest.json | 4 ++-- 7 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 public/favicon-192.png create mode 100644 public/favicon-512.png delete mode 100644 public/logo192.png delete mode 100644 public/logo512.png diff --git a/public/favicon-192.png b/public/favicon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..2ac834becf05e733aaa1231e19c45059c8bc8748 GIT binary patch literal 5422 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 BxxoMc literal 0 HcmV?d00001 diff --git a/public/favicon-512.png b/public/favicon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..4713d08c12d16ec76cc1f579ff20eb0ffa437833 GIT binary patch literal 18106 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 literal 0 HcmV?d00001 diff --git a/public/favicon.ico b/public/favicon.ico index bcd5dfd67cd0361b78123e95c2dd96031f27f743..7d28ad7940b00925b5ce6c09b72703ad0760ca84 100644 GIT binary patch literal 15406 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 literal 3150 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 MDeX2GIKR{Qf5okjU;qFB diff --git a/public/index.html b/public/index.html index 20316b4..1d9e75f 100644 --- a/public/index.html +++ b/public/index.html @@ -46,7 +46,7 @@ - + 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN diff --git a/public/manifest.json b/public/manifest.json index 08c8174..ed8fa8c 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -8,12 +8,12 @@ "type": "image/x-icon" }, { - "src": "logo192.png", + "src": "favicon-192.png", "type": "image/png", "sizes": "192x192" }, { - "src": "logo512.png", + "src": "favicon-512.png", "type": "image/png", "sizes": "512x512" } From 18baa4e75b4f702f6cb0e889b177b22cafc6d623 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Sun, 11 Oct 2020 02:07:09 -0400 Subject: [PATCH 43/46] Footer: fix Patreon button link --- src/components/Footer/Footer.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/components/Footer/Footer.tsx b/src/components/Footer/Footer.tsx index 86d5998..537bb07 100644 --- a/src/components/Footer/Footer.tsx +++ b/src/components/Footer/Footer.tsx @@ -71,7 +71,13 @@ const Footer: React.FC = () => {