diff --git a/package.json b/package.json
index 3a51f600..ee93db6a 100644
--- a/package.json
+++ b/package.json
@@ -10,8 +10,10 @@
"axios": "^0.19.2",
"react": "^16.13.1",
"react-dom": "^16.13.1",
+ "react-icons": "^4.4.0",
"react-router-dom": "^5.1.2",
- "react-scripts": "3.4.1"
+ "react-scripts": "3.4.1",
+ "styled-components": "^5.3.5"
},
"scripts": {
"predeploy": "npm run build",
diff --git a/src/App.js b/src/App.js
index a076d23e..75b93a4b 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,60 +1,83 @@
-import React, { Component } from "react";
+ import React from "react";
import PhotoContextProvider from "./context/PhotoContext";
import { HashRouter, Route, Switch, Redirect } from "react-router-dom";
import Header from "./components/Header";
import Item from "./components/Item";
import Search from "./components/Search";
import NotFound from "./components/NotFound";
+import { ThemeProvider } from "styled-components";
+import GlobalStyles from "./global";
+import { ToggleIcon } from "./global";
+import usePersistedState from "./hooks/usePersistedState";
+import dark from "./Styles/dark";
+import light from "./Styles/light";
+
+import { BsFillMoonFill, BsFillSunFill } from "react-icons/bs";
+function App() {
+
+ const [theme, setTheme] = usePersistedState("theme-app", dark);
-class App extends Component {
// Prevent page reload, clear input, set URL and push history on submit
- handleSubmit = (e, history, searchInput) => {
+ const handleSubmit = (e, history, searchInput) => {
e.preventDefault();
e.currentTarget.reset();
let url = `/search/${searchInput}`;
history.push(url);
};
- render() {
+
+
+ const toggleTheme = () => {
+ setTheme(theme.title === "light" ? dark : light);
+ };
+ const toggleIcon = theme.title === "light" ? : ;
+
return (
-
-
-
(
-
- )}
- />
-
- }
- />
-
+ {toggleIcon}
+
+
+
}
- />
- } />
- } />
- } />
- (
-
+ render={(props) => (
+
)}
/>
-
-
-
-
+
+
+ }
+ />
+
+ }
+ />
+ }
+ />
+ } />
+ } />
+ (
+
+ )}
+ />
+
+
+
+
+
);
}
-}
+
export default App;
diff --git a/src/Styles/dark.js b/src/Styles/dark.js
new file mode 100644
index 00000000..4867c933
--- /dev/null
+++ b/src/Styles/dark.js
@@ -0,0 +1,17 @@
+export default {
+ title: "dark",
+
+ colors: {
+ primary: "#383A59",
+ secondary: "#25273C",
+
+ background: "#181823",
+ backgroundStrong: "#2d2d41",
+ backgroundButtonSelected: "#4e46be",
+ backgroundButton: "#BD93F9",
+ text: "#fff",
+ },
+
+
+
+}
\ No newline at end of file
diff --git a/src/Styles/light.js b/src/Styles/light.js
new file mode 100644
index 00000000..c6776d69
--- /dev/null
+++ b/src/Styles/light.js
@@ -0,0 +1,15 @@
+export default {
+ title: "light",
+
+ colors: {
+ primary: "#38AECC",
+ secondary: "#FCFFFD",
+
+ background: "#7CA5B8",
+ backgroundStrong: "#D6EDFF",
+ backgroundButtonSelected: "#7569f1",
+ backgroundButton: "#2C2C34",
+
+ text: "#333",
+ },
+}
\ No newline at end of file
diff --git a/src/components/Container.js b/src/components/Container.js
index 699d8d26..a04b0610 100644
--- a/src/components/Container.js
+++ b/src/components/Container.js
@@ -12,6 +12,7 @@ const Container = ({ searchTerm }) => {
return (
+
{loading ? : }
);
diff --git a/src/components/Form.js b/src/components/Form.js
index 78ef1628..5b755279 100644
--- a/src/components/Form.js
+++ b/src/components/Form.js
@@ -3,35 +3,38 @@ import React, { useState } from "react";
const Form = ({ handleSubmit, history }) => {
const [searchEntry, setSearchEntry] = useState("");
// update search text state
- const updateSearchInput = e => {
+ const updateSearchInput = (e) => {
setSearchEntry(e.target.value);
};
return (
-
+
+
+
+
+ >
);
};
diff --git a/src/global.js b/src/global.js
new file mode 100644
index 00000000..157c2663
--- /dev/null
+++ b/src/global.js
@@ -0,0 +1,252 @@
+import { createGlobalStyle } from 'styled-components'
+import styled from 'styled-components';
+
+
+export default createGlobalStyle`
+ body {
+ text-align: center;
+ font-family: "Josefin Sans", Helvetica, Arial, sans-serif;
+ color: ${props => props.theme.colors.text};
+ background: ${props => props.theme.colors.background};
+ }
+
+ .forkongithub a {
+ background: ${props => props.theme.colors.background};;
+ color: ${props => props.theme.colors.text};;
+ text-decoration: none;
+ font-family: arial, sans-serif;
+ text-align: center;
+ font-weight: bold;
+ padding: 5px 40px;
+ font-size: 1rem;
+ line-height: 2rem;
+ position: relative;
+ transition: 0.5s;
+ }
+
+ .forkongithub a:hover {
+ background: ${props => props.theme.colors.backgroundStrong};
+ color: ${props => props.theme.colors.backgroundButton};
+ }
+
+ .forkongithub a::before,
+ .forkongithub a::after {
+ content: "";
+ width: 100%;
+ display: block;
+ position: absolute;
+ top: 1px;
+ left: 0;
+ height: 1px;
+ background: ${props => props.theme.colors.background};
+ }
+
+ .forkongithub a::after {
+ bottom: 1px;
+ top: auto;
+ }
+
+ h2 {
+ font-size: 2em;
+ margin: 52px 0 40px;
+ text-transform: capitalize;
+ color: ${props => props.theme.colors.backgroundButton};
+ }
+
+ h1 {
+ font-family: "Lobster", "Josefin Sans", Helvetica, Arial, sans-serif;
+ font-size: 4em;
+ color: ${props => props.theme.colors.backgroundButton};
+ }
+
+ ul {
+ list-style-type: none;
+ padding-left: 0;
+ }
+
+ a {
+ text-decoration: none;
+ }
+
+ .is-hidden {
+ border: 0;
+ clip: rect(0 0 0 0);
+ height: 1px;
+ margin: -1px;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ width: 1px;
+ }
+
+ .search-form {
+ max-width: 460px;
+ display: flex;
+ margin: 0 auto 32px;
+ }
+
+ .search-form button {
+ outline: none;
+ border: none;
+ padding: 0px 15px;
+ border-radius: 0 0.35em 0.35em 0;
+ cursor: pointer;
+ }
+
+ .active {
+ background-color: ${props => props.theme.colors.backgroundButtonSelected};
+ cursor: pointer;
+ }
+
+ input {
+ font-size: 1em;
+ width: 100%;
+ background-color: ${props => props.theme.colors.backgroundStrong};
+ padding: 10px 15px;
+ border: 3px solid #d7dbdf;
+ border-right: none;
+ border-radius: 0.35em 0 0 0.35em;
+ outline: none;
+ }
+
+ .main-nav li {
+ width: 100%;
+ margin-bottom: 1em;
+ }
+
+ .main-nav a {
+ display: block;
+ background: ${props => props.theme.colors.backgroundButtonSelected};
+ border-radius: 3px;
+ padding: 5px;
+ color: #fff;
+ }
+
+ .main-nav .active,
+ .main-nav a:hover {
+ background-color: ${props => props.theme.colors.backgroundButton};
+ }
+
+ .photo-container ul {
+ display: flex;
+ flex-flow: row wrap;
+ justify-content: space-between;
+ -ms-align-items: flex-start;
+ align-items: flex-start;
+ }
+
+ .photo-container ul li {
+ width: 220px;
+ height: 165px;
+ overflow: hidden;
+ margin-bottom: 15px;
+ }
+
+ .photo-container ul img {
+ width: 100%;
+ transform: scale(1.25);
+ transition: transform 1.25s;
+ }
+
+ .photo-container li:hover img {
+ transform: scale(1.65);
+ }
+
+ .photo-container .not-found {
+ width: 100%;
+ }
+
+ .loader {
+ border: 16px solid #f3f3f3;
+ /* Light grey */
+ border-top: 16px solid #051c33;
+ /* Blue */
+ border-radius: 50%;
+ width: 120px;
+ height: 120px;
+ animation: spin 2s linear infinite;
+ margin-left: auto;
+ margin-right: auto;
+ }
+
+ @keyframes spin {
+ 0% {
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ transform: rotate(360deg);
+ }
+ }
+
+ .not-found {
+ padding-top: 5%;
+ }
+
+ @media only screen and (max-width: 767px) {
+ body {
+ padding-top: 2em;
+ }
+
+ .photo-container li {
+ margin: auto;
+ }
+ }
+
+ @media only screen and (min-width: 768px) {
+ body {
+ padding-top: 4em;
+ }
+
+ .container {
+ max-width: 960px;
+ margin: auto;
+ }
+
+ .main-nav ul {
+ display: flex;
+ justify-content: center;
+ }
+
+ .main-nav li {
+ margin: 10px;
+ width: 100px;
+ }
+ }
+
+ @media screen and (min-width: 800px) {
+ .forkongithub {
+ position: fixed;
+ display: block;
+ top: 0;
+ right: 0;
+ width: 200px;
+ overflow: hidden;
+ height: 200px;
+ z-index: 9999;
+ }
+
+ .forkongithub a {
+ width: 200px;
+ position: absolute;
+ top: 60px;
+ right: -60px;
+ transform: rotate(45deg);
+ -webkit-transform: rotate(45deg);
+ -ms-transform: rotate(45deg);
+ -moz-transform: rotate(45deg);
+ -o-transform: rotate(45deg);
+ box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.8);
+ }
+ }
+
+
+
+
+`;
+export const ToggleIcon = styled.span`
+
+ font-size: 1.5em;
+
+
+`
\ No newline at end of file
diff --git a/src/hooks/usePersistedState.js b/src/hooks/usePersistedState.js
new file mode 100644
index 00000000..b26bd12a
--- /dev/null
+++ b/src/hooks/usePersistedState.js
@@ -0,0 +1,22 @@
+
+import { useEffect, useState } from "react";
+
+function usePersistedState(key, initialState) {
+ const [state, setState] = useState(() => {
+ const storageValue = localStorage.getItem(key);
+
+ if (storageValue) {
+ return JSON.parse(storageValue);
+ } else {
+ return initialState;
+ }
+ });
+
+ useEffect(() => {
+ localStorage.setItem(key, JSON.stringify(state));
+ }, [key, state]);
+
+ return [state, setState];
+}
+
+export default usePersistedState;
diff --git a/src/index.css b/src/index.css
deleted file mode 100644
index 3067afe8..00000000
--- a/src/index.css
+++ /dev/null
@@ -1,235 +0,0 @@
-body {
- text-align: center;
- font-family: "Josefin Sans", Helvetica, Arial, sans-serif;
- color: #3f4850;
-}
-
-.forkongithub a {
- background: #000;
- color: #fff;
- text-decoration: none;
- font-family: arial, sans-serif;
- text-align: center;
- font-weight: bold;
- padding: 5px 40px;
- font-size: 1rem;
- line-height: 2rem;
- position: relative;
- transition: 0.5s;
-}
-
-.forkongithub a:hover {
- background: #c11;
- color: #fff;
-}
-
-.forkongithub a::before,
-.forkongithub a::after {
- content: "";
- width: 100%;
- display: block;
- position: absolute;
- top: 1px;
- left: 0;
- height: 1px;
- background: #fff;
-}
-
-.forkongithub a::after {
- bottom: 1px;
- top: auto;
-}
-
-h2 {
- font-size: 2em;
- margin: 52px 0 40px;
- text-transform: capitalize;
- color: #051c33;
-}
-
-h1 {
- font-family: "Lobster", "Josefin Sans", Helvetica, Arial, sans-serif;
- font-size: 4em;
- color: #051c33;
-}
-
-ul {
- list-style-type: none;
- padding-left: 0;
-}
-
-a {
- text-decoration: none;
-}
-
-.is-hidden {
- border: 0;
- clip: rect(0 0 0 0);
- height: 1px;
- margin: -1px;
- overflow: hidden;
- padding: 0;
- position: absolute;
- width: 1px;
-}
-
-.search-form {
- max-width: 460px;
- display: flex;
- margin: 0 auto 32px;
-}
-
-.search-form button {
- outline: none;
- border: none;
- padding: 0px 15px;
- border-radius: 0 0.35em 0.35em 0;
- cursor: pointer;
-}
-
-.active {
- background-color: #051c33;
- cursor: pointer;
-}
-
-input {
- font-size: 1em;
- width: 100%;
- background-color: #edeff0;
- padding: 10px 15px;
- border: 3px solid #d7dbdf;
- border-right: none;
- border-radius: 0.35em 0 0 0.35em;
- outline: none;
-}
-
-.main-nav li {
- width: 100%;
- margin-bottom: 1em;
-}
-
-.main-nav a {
- display: block;
- background: #051c33;
- border-radius: 3px;
- padding: 5px;
- color: #fff;
-}
-
-.main-nav .active,
-.main-nav a:hover {
- background-color: #051c33;
-}
-
-.photo-container ul {
- display: flex;
- flex-flow: row wrap;
- justify-content: space-between;
- -ms-align-items: flex-start;
- align-items: flex-start;
-}
-
-.photo-container ul li {
- width: 220px;
- height: 165px;
- overflow: hidden;
- margin-bottom: 15px;
-}
-
-.photo-container ul img {
- width: 100%;
- transform: scale(1.25);
- transition: transform 1.25s;
-}
-
-.photo-container li:hover img {
- transform: scale(1.65);
-}
-
-.photo-container .not-found {
- width: 100%;
-}
-
-.loader {
- border: 16px solid #f3f3f3;
- /* Light grey */
- border-top: 16px solid #051c33;
- /* Blue */
- border-radius: 50%;
- width: 120px;
- height: 120px;
- animation: spin 2s linear infinite;
- margin-left: auto;
- margin-right: auto;
-}
-
-@keyframes spin {
- 0% {
- transform: rotate(0deg);
- }
-
- 100% {
- transform: rotate(360deg);
- }
-}
-
-.not-found {
- padding-top: 5%;
-}
-
-@media only screen and (max-width: 767px) {
- body {
- padding-top: 2em;
- }
-
- .photo-container li {
- margin: auto;
- }
-}
-
-@media only screen and (min-width: 768px) {
- body {
- padding-top: 4em;
- }
-
- .container {
- max-width: 960px;
- margin: auto;
- }
-
- .main-nav ul {
- display: flex;
- justify-content: center;
- }
-
- .main-nav li {
- margin: 10px;
- width: 100px;
- }
-}
-
-@media screen and (min-width: 800px) {
- .forkongithub {
- position: fixed;
- display: block;
- top: 0;
- right: 0;
- width: 200px;
- overflow: hidden;
- height: 200px;
- z-index: 9999;
- }
-
- .forkongithub a {
- width: 200px;
- position: absolute;
- top: 60px;
- right: -60px;
- transform: rotate(45deg);
- -webkit-transform: rotate(45deg);
- -ms-transform: rotate(45deg);
- -moz-transform: rotate(45deg);
- -o-transform: rotate(45deg);
- box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.8);
- }
-}
\ No newline at end of file
diff --git a/src/index.js b/src/index.js
index 87d1be55..fa64977e 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,6 +1,6 @@
import React from 'react';
import ReactDOM from 'react-dom';
-import './index.css';
+import './global.js';
import App from './App';
import * as serviceWorker from './serviceWorker';
diff --git a/yarn.lock b/yarn.lock
index 8ef1f5eb..4f5ed853 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -9,6 +9,13 @@
dependencies:
"@babel/highlight" "^7.8.3"
+"@babel/code-frame@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789"
+ integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==
+ dependencies:
+ "@babel/highlight" "^7.16.7"
+
"@babel/compat-data@^7.8.6", "@babel/compat-data@^7.9.0":
version "7.9.0"
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.0.tgz#04815556fc90b0c174abd2c0c1bb966faa036a6c"
@@ -40,6 +47,15 @@
semver "^5.4.1"
source-map "^0.5.0"
+"@babel/generator@^7.18.2":
+ version "7.18.2"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d"
+ integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==
+ dependencies:
+ "@babel/types" "^7.18.2"
+ "@jridgewell/gen-mapping" "^0.3.0"
+ jsesc "^2.5.1"
+
"@babel/generator@^7.4.0", "@babel/generator@^7.9.0":
version "7.9.0"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.0.tgz#0f67adea4ec39dad6e63345f70eec33014d78c89"
@@ -50,6 +66,13 @@
lodash "^4.17.13"
source-map "^0.5.0"
+"@babel/helper-annotate-as-pure@^7.16.0":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862"
+ integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
"@babel/helper-annotate-as-pure@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee"
@@ -132,6 +155,11 @@
"@babel/types" "^7.8.3"
lodash "^4.17.13"
+"@babel/helper-environment-visitor@^7.18.2":
+ version "7.18.2"
+ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd"
+ integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==
+
"@babel/helper-explode-assignable-expression@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982"
@@ -140,6 +168,14 @@
"@babel/traverse" "^7.8.3"
"@babel/types" "^7.8.3"
+"@babel/helper-function-name@^7.17.9":
+ version "7.17.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12"
+ integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==
+ dependencies:
+ "@babel/template" "^7.16.7"
+ "@babel/types" "^7.17.0"
+
"@babel/helper-function-name@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca"
@@ -156,6 +192,13 @@
dependencies:
"@babel/types" "^7.8.3"
+"@babel/helper-hoist-variables@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246"
+ integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
"@babel/helper-hoist-variables@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134"
@@ -170,6 +213,13 @@
dependencies:
"@babel/types" "^7.8.3"
+"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.0":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437"
+ integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
"@babel/helper-module-imports@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498"
@@ -238,6 +288,13 @@
"@babel/template" "^7.8.3"
"@babel/types" "^7.8.3"
+"@babel/helper-split-export-declaration@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b"
+ integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
"@babel/helper-split-export-declaration@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9"
@@ -245,6 +302,11 @@
dependencies:
"@babel/types" "^7.8.3"
+"@babel/helper-validator-identifier@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad"
+ integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==
+
"@babel/helper-validator-identifier@^7.9.0":
version "7.9.0"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz#ad53562a7fc29b3b9a91bbf7d10397fd146346ed"
@@ -269,6 +331,15 @@
"@babel/traverse" "^7.9.0"
"@babel/types" "^7.9.0"
+"@babel/highlight@^7.16.7":
+ version "7.17.12"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351"
+ integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.16.7"
+ chalk "^2.0.0"
+ js-tokens "^4.0.0"
+
"@babel/highlight@^7.8.3":
version "7.9.0"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079"
@@ -283,6 +354,11 @@
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.0.tgz#f821b32313f07ee570976d3f6238e8d2d66e0a8e"
integrity sha512-Iwyp00CZsypoNJcpXCbq3G4tcDgphtlMwMVrMhhZ//XBkqjXF7LW6V511yk0+pBX3ZwwGnPea+pTKNJiqA7pUg==
+"@babel/parser@^7.16.7", "@babel/parser@^7.18.0":
+ version "7.18.4"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.4.tgz#6774231779dd700e0af29f6ad8d479582d7ce5ef"
+ integrity sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow==
+
"@babel/plugin-proposal-async-generator-functions@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f"
@@ -912,6 +988,15 @@
dependencies:
regenerator-runtime "^0.13.4"
+"@babel/template@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155"
+ integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==
+ dependencies:
+ "@babel/code-frame" "^7.16.7"
+ "@babel/parser" "^7.16.7"
+ "@babel/types" "^7.16.7"
+
"@babel/template@^7.4.0", "@babel/template@^7.8.3", "@babel/template@^7.8.6":
version "7.8.6"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b"
@@ -936,6 +1021,22 @@
globals "^11.1.0"
lodash "^4.17.13"
+"@babel/traverse@^7.4.5":
+ version "7.18.2"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.2.tgz#b77a52604b5cc836a9e1e08dca01cba67a12d2e8"
+ integrity sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==
+ dependencies:
+ "@babel/code-frame" "^7.16.7"
+ "@babel/generator" "^7.18.2"
+ "@babel/helper-environment-visitor" "^7.18.2"
+ "@babel/helper-function-name" "^7.17.9"
+ "@babel/helper-hoist-variables" "^7.16.7"
+ "@babel/helper-split-export-declaration" "^7.16.7"
+ "@babel/parser" "^7.18.0"
+ "@babel/types" "^7.18.2"
+ debug "^4.1.0"
+ globals "^11.1.0"
+
"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.8.7", "@babel/types@^7.9.0":
version "7.9.0"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.0.tgz#00b064c3df83ad32b2dbf5ff07312b15c7f1efb5"
@@ -945,6 +1046,14 @@
lodash "^4.17.13"
to-fast-properties "^2.0.0"
+"@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.18.2":
+ version "7.18.4"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354"
+ integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.16.7"
+ to-fast-properties "^2.0.0"
+
"@cnakazawa/watch@^1.0.3":
version "1.0.4"
resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a"
@@ -963,6 +1072,28 @@
resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18"
integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==
+"@emotion/is-prop-valid@^1.1.0":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.1.2.tgz#34ad6e98e871aa6f7a20469b602911b8b11b3a95"
+ integrity sha512-3QnhqeL+WW88YjYbQL5gUIkthuMw7a0NGbZ7wfFVk2kg/CK5w8w5FFa0RzWjyY1+sujN0NWbtSHH6OJmWHtJpQ==
+ dependencies:
+ "@emotion/memoize" "^0.7.4"
+
+"@emotion/memoize@^0.7.4":
+ version "0.7.5"
+ resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.5.tgz#2c40f81449a4e554e9fc6396910ed4843ec2be50"
+ integrity sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==
+
+"@emotion/stylis@^0.8.4":
+ version "0.8.5"
+ resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04"
+ integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==
+
+"@emotion/unitless@^0.7.4":
+ version "0.7.5"
+ resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed"
+ integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==
+
"@hapi/address@2.x.x":
version "2.1.4"
resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5"
@@ -1153,6 +1284,38 @@
"@types/yargs" "^15.0.0"
chalk "^3.0.0"
+"@jridgewell/gen-mapping@^0.3.0":
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9"
+ integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==
+ dependencies:
+ "@jridgewell/set-array" "^1.0.0"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+ "@jridgewell/trace-mapping" "^0.3.9"
+
+"@jridgewell/resolve-uri@^3.0.3":
+ version "3.0.7"
+ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe"
+ integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==
+
+"@jridgewell/set-array@^1.0.0":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea"
+ integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==
+
+"@jridgewell/sourcemap-codec@^1.4.10":
+ version "1.4.13"
+ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c"
+ integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==
+
+"@jridgewell/trace-mapping@^0.3.9":
+ version "0.3.13"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea"
+ integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.0.3"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+
"@mrmlnc/readdir-enhanced@^2.2.1":
version "2.2.1"
resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"
@@ -2167,6 +2330,22 @@ babel-plugin-named-asset-import@^0.3.6:
resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.6.tgz#c9750a1b38d85112c9e166bf3ef7c5dbc605f4be"
integrity sha512-1aGDUfL1qOOIoqk9QKGIo2lANk+C7ko/fqH0uIyC71x3PEGz0uVP8ISgfEsFuG+FKmjHTvFK/nNM8dowpmUxLA==
+"babel-plugin-styled-components@>= 1.12.0":
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz#c81ef34b713f9da2b7d3f5550df0d1e19e798086"
+ integrity sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.16.0"
+ "@babel/helper-module-imports" "^7.16.0"
+ babel-plugin-syntax-jsx "^6.18.0"
+ lodash "^4.17.11"
+ picomatch "^2.3.0"
+
+babel-plugin-syntax-jsx@^6.18.0:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946"
+ integrity sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==
+
babel-plugin-syntax-object-rest-spread@^6.8.0:
version "6.13.0"
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5"
@@ -2597,6 +2776,11 @@ camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+camelize@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b"
+ integrity sha512-W2lPwkBkMZwFlPCXhIlYgxu+7gC/NUlCtdK652DAJ1JdgV0sTrvuPFshNPrFa1TY2JOkLhgdeEBplB4ezEa+xg==
+
caniuse-api@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
@@ -3134,6 +3318,11 @@ css-blank-pseudo@^0.1.4:
dependencies:
postcss "^7.0.5"
+css-color-keywords@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05"
+ integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==
+
css-color-names@0.0.4, css-color-names@^0.0.4:
version "0.0.4"
resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
@@ -3205,6 +3394,15 @@ css-select@^2.0.0:
domutils "^1.7.0"
nth-check "^1.0.2"
+css-to-react-native@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.0.0.tgz#62dbe678072a824a689bcfee011fc96e02a7d756"
+ integrity sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==
+ dependencies:
+ camelize "^1.0.0"
+ css-color-keywords "^1.0.0"
+ postcss-value-parser "^4.0.2"
+
css-tree@1.0.0-alpha.37:
version "1.0.0-alpha.37"
resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22"
@@ -4880,7 +5078,7 @@ hmac-drbg@^1.0.0:
minimalistic-assert "^1.0.0"
minimalistic-crypto-utils "^1.0.1"
-hoist-non-react-statics@^3.1.0:
+hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0:
version "3.3.2"
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
@@ -7467,6 +7665,11 @@ picomatch@^2.0.4, picomatch@^2.0.7:
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a"
integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==
+picomatch@^2.3.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
+ integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+
pify@^2.0.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
@@ -8517,6 +8720,11 @@ react-error-overlay@^6.0.7:
resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.7.tgz#1dcfb459ab671d53f660a991513cb2f0a0553108"
integrity sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA==
+react-icons@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.4.0.tgz#a13a8a20c254854e1ec9aecef28a95cdf24ef703"
+ integrity sha512-fSbvHeVYo/B5/L4VhB7sBA1i2tS8MkT0Hb9t2H1AVPkwGfVHLJCqyr2Py9dKMxsyM63Eng1GkdZfbWj+Fmv8Rg==
+
react-is@^16.12.0, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
@@ -9262,6 +9470,11 @@ shallow-clone@^3.0.0:
dependencies:
kind-of "^6.0.2"
+shallowequal@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8"
+ integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==
+
shebang-command@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
@@ -9765,6 +9978,22 @@ style-loader@0.23.1:
loader-utils "^1.1.0"
schema-utils "^1.0.0"
+styled-components@^5.3.5:
+ version "5.3.5"
+ resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.5.tgz#a750a398d01f1ca73af16a241dec3da6deae5ec4"
+ integrity sha512-ndETJ9RKaaL6q41B69WudeqLzOpY1A/ET/glXkNZ2T7dPjPqpPCXXQjDFYZWwNnE5co0wX+gTCqx9mfxTmSIPg==
+ dependencies:
+ "@babel/helper-module-imports" "^7.0.0"
+ "@babel/traverse" "^7.4.5"
+ "@emotion/is-prop-valid" "^1.1.0"
+ "@emotion/stylis" "^0.8.4"
+ "@emotion/unitless" "^0.7.4"
+ babel-plugin-styled-components ">= 1.12.0"
+ css-to-react-native "^3.0.0"
+ hoist-non-react-statics "^3.0.0"
+ shallowequal "^1.1.0"
+ supports-color "^5.5.0"
+
stylehacks@^4.0.0:
version "4.0.3"
resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5"
@@ -9779,7 +10008,7 @@ supports-color@^2.0.0:
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
-supports-color@^5.3.0:
+supports-color@^5.3.0, supports-color@^5.5.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==