diff options
| author | 2020-09-28 02:23:04 +0100 | |
|---|---|---|
| committer | 2020-09-28 02:23:04 +0100 | |
| commit | 01d7fdef889350a25767d5b1999f8698de7ba5a6 (patch) | |
| tree | b2b7ef8d957a6cf00b0192c10e89f5f8e2a7682e | |
| parent | Initialize project using Create React App (diff) | |
Initial commit
| -rw-r--r-- | package.json | 6 | ||||
| -rw-r--r-- | public/index.html | 29 | ||||
| -rw-r--r-- | public/manifest.json | 8 | ||||
| -rw-r--r-- | src/App.css | 38 | ||||
| -rw-r--r-- | src/App.tsx | 39 | ||||
| -rw-r--r-- | src/colors.ts | 8 | ||||
| -rw-r--r-- | src/components/FormListing.tsx | 51 | ||||
| -rw-r--r-- | src/components/HeaderBar/header_1.svg | 3 | ||||
| -rw-r--r-- | src/components/HeaderBar/header_2.svg | 3 | ||||
| -rw-r--r-- | src/components/HeaderBar/index.tsx | 49 | ||||
| -rw-r--r-- | src/components/OAuth2Button.tsx | 42 | ||||
| -rw-r--r-- | src/index.css | 13 | ||||
| -rw-r--r-- | src/index.tsx | 1 | ||||
| -rw-r--r-- | src/pages/LandingPage.tsx | 24 | ||||
| -rw-r--r-- | yarn.lock | 174 | 
15 files changed, 383 insertions, 105 deletions
| diff --git a/package.json b/package.json index 6b2fe25..6e1f3f6 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,11 @@    "version": "0.1.0",    "private": true,    "dependencies": { +    "@emotion/core": "^10.0.35", +    "@fortawesome/fontawesome-svg-core": "^1.2.30", +    "@fortawesome/free-brands-svg-icons": "^5.14.0", +    "@fortawesome/free-solid-svg-icons": "^5.14.0", +    "@fortawesome/react-fontawesome": "^0.1.11",      "@testing-library/jest-dom": "^4.2.4",      "@testing-library/react": "^9.3.2",      "@testing-library/user-event": "^7.1.2", @@ -12,6 +17,7 @@      "@types/react-dom": "^16.9.0",      "react": "^16.13.1",      "react-dom": "^16.13.1", +    "react-inlinesvg": "^2.1.0",      "react-scripts": "3.4.3",      "typescript": "~3.7.2"    }, diff --git a/public/index.html b/public/index.html index aa069f2..4393349 100644 --- a/public/index.html +++ b/public/index.html @@ -4,40 +4,17 @@      <meta charset="utf-8" />      <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />      <meta name="viewport" content="width=device-width, initial-scale=1" /> -    <meta name="theme-color" content="#000000" /> +    <meta name="theme-color" content="#7289DA" />      <meta        name="description" -      content="Web site created using create-react-app" +      content="Python Discord Forms is the surveying system for the Python Discord server."      />      <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" /> -    <!-- -      manifest.json provides metadata used when your web app is installed on a -      user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/ -    -->      <link rel="manifest" href="%PUBLIC_URL%/manifest.json" /> -    <!-- -      Notice the use of %PUBLIC_URL% in the tags above. -      It will be replaced with the URL of the `public` folder during the build. -      Only files inside the `public` folder can be referenced from the HTML. - -      Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will -      work correctly both with client-side routing and a non-root public URL. -      Learn how to configure a non-root public URL by running `npm run build`. -    --> -    <title>React App</title> +    <title>Python Discord Forms</title>    </head>    <body>      <noscript>You need to enable JavaScript to run this app.</noscript>      <div id="root"></div> -    <!-- -      This HTML file is a template. -      If you open it directly in the browser, you will see an empty page. - -      You can add webfonts, meta tags, or analytics to this file. -      The build step will place the bundled scripts into the <body> tag. - -      To begin the development, run `npm start` or `yarn start`. -      To create a production bundle, use `npm run build` or `yarn build`. -    -->    </body>  </html> diff --git a/public/manifest.json b/public/manifest.json index 080d6c7..60e8f8c 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -1,6 +1,6 @@  { -  "short_name": "React App", -  "name": "Create React App Sample", +  "short_name": "Python Discord Forms", +  "name": "Python Discord Forms",    "icons": [      {        "src": "favicon.ico", @@ -20,6 +20,6 @@    ],    "start_url": ".",    "display": "standalone", -  "theme_color": "#000000", -  "background_color": "#ffffff" +  "theme_color": "#7289DA", +  "background_color": "#23272A"  } diff --git a/src/App.css b/src/App.css deleted file mode 100644 index 74b5e05..0000000 --- a/src/App.css +++ /dev/null @@ -1,38 +0,0 @@ -.App { -  text-align: center; -} - -.App-logo { -  height: 40vmin; -  pointer-events: none; -} - -@media (prefers-reduced-motion: no-preference) { -  .App-logo { -    animation: App-logo-spin infinite 20s linear; -  } -} - -.App-header { -  background-color: #282c34; -  min-height: 100vh; -  display: flex; -  flex-direction: column; -  align-items: center; -  justify-content: center; -  font-size: calc(10px + 2vmin); -  color: white; -} - -.App-link { -  color: #61dafb; -} - -@keyframes App-logo-spin { -  from { -    transform: rotate(0deg); -  } -  to { -    transform: rotate(360deg); -  } -} diff --git a/src/App.tsx b/src/App.tsx index a53698a..3505dc1 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,26 +1,27 @@ -import React from 'react'; -import logo from './logo.svg'; -import './App.css'; +/** @jsx jsx */ +import { css, jsx, Global } from "@emotion/core"; + +import LandingPage from "./pages/LandingPage"; +import colors from "./colors"; + +const globalStyles = css` +@import url('https://fonts.googleapis.com/css2?family=Hind:wght@700&display=swap'); + +body { +  background-color: ${colors.notQuiteBlack}; +  color: white; +  font-family: "Hind", "Helvetica", "Arial", sans-serif; +  margin: 0; +} +`;  function App() {    return ( -    <div className="App"> -      <header className="App-header"> -        <img src={logo} className="App-logo" alt="logo" /> -        <p> -          Edit <code>src/App.tsx</code> and save to reload. -        </p> -        <a -          className="App-link" -          href="https://reactjs.org" -          target="_blank" -          rel="noopener noreferrer" -        > -          Learn React -        </a> -      </header> +    <div> +      <Global styles={globalStyles}/> +      <LandingPage/>      </div>    ); -} +};  export default App; diff --git a/src/colors.ts b/src/colors.ts new file mode 100644 index 0000000..2107987 --- /dev/null +++ b/src/colors.ts @@ -0,0 +1,8 @@ +export default { +  blurple: '#7289DA', +  darkButNotBlack: '#2C2F33', +  notQuiteBlack: '#23272A', +  greyple: '#99AAB5', +  error: '#f04747', +  success: '#43b581' +} diff --git a/src/components/FormListing.tsx b/src/components/FormListing.tsx new file mode 100644 index 0000000..9b7eb08 --- /dev/null +++ b/src/components/FormListing.tsx @@ -0,0 +1,51 @@ +/** @jsx jsx */ +import { css, jsx } from "@emotion/core"; + +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { faArrowRight } from "@fortawesome/free-solid-svg-icons"; + +import colors from "../colors"; + +interface FormListingProps { +  title: string, +  description: string, +  open: boolean +} + +function FormListing(props: FormListingProps) { +  const listingStyle = css` +    background-color: ${props.open ? colors.success : colors.darkButNotBlack}; +    width: 80%; +    padding: 20px; +    margin-top: 20px; +    margin-bottom: 20px; +    border-radius: 20px; +    transition: filter 100ms; + +    &:hover { +      filter: brightness(110%); +    } +  `; + +  let closedTag; + +  if (!props.open) { +    closedTag = <span css={css` +      font-size: 0.75em; +      background-color: ${colors.error}; +      border-radius: 5px; +      margin: 0; +      padding-top: 3px; +      margin-right: 5px; +      padding-left: 5px; +      padding-right: 5px; +    `}>CLOSED</span>; +  }; + +  return <div css={listingStyle}> +    <h3 css={{fontSize: "1.5em", marginBottom: "0"}}>{closedTag}{props.title} <FontAwesomeIcon icon={faArrowRight} css={{fontSize: "0.75em", paddingBottom: "1px"}}/></h3> +    <p css={{marginTop: "5px"}}>{props.description}</p> +  </div> +} + +export default FormListing; diff --git a/src/components/HeaderBar/header_1.svg b/src/components/HeaderBar/header_1.svg new file mode 100644 index 0000000..e7db64c --- /dev/null +++ b/src/components/HeaderBar/header_1.svg @@ -0,0 +1,3 @@ +<svg width="1440" height="264" viewBox="0 0 1440 264" fill="none" id="header_1" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M-5.85724 -6.18774V109.725C71.6463 154.832 238.796 275.611 529.296 262.865C819.777 250.113 820.413 92.4954 1447.77 223.42V-6.18451L-5.85724 -6.18774Z" fill="#AFB8F0"/> +</svg> diff --git a/src/components/HeaderBar/header_2.svg b/src/components/HeaderBar/header_2.svg new file mode 100644 index 0000000..692cc7c --- /dev/null +++ b/src/components/HeaderBar/header_2.svg @@ -0,0 +1,3 @@ +<svg width="1440" height="293" viewBox="0 0 1440 293" fill="none" id="header_2" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg"> +<path opacity="0.49063" d="M1447.27 -6.18774V132.565C1428.83 231.124 1378.94 292.543 1114.48 292.543C775.159 292.543 477.003 5.74973 -6.39087 232.513V-6.18713L1447.27 -6.18774Z" fill="#687AE3"/> +</svg> diff --git a/src/components/HeaderBar/index.tsx b/src/components/HeaderBar/index.tsx new file mode 100644 index 0000000..200221c --- /dev/null +++ b/src/components/HeaderBar/index.tsx @@ -0,0 +1,49 @@ +/** @jsx jsx */ +import { css, jsx } from "@emotion/core"; +import SVG from "react-inlinesvg"; + +import header1 from "./header_1.svg"; +import header2 from "./header_2.svg"; + +const headerImageStyles = css` +z-index: -1; +top: 0; +position: absolute; +width: 100%; +transition: height 1s; + +@media (max-width: 660px) { +  height: 140px; +} +`; + +function HeaderBar() { +  return <div> +    <div> +      <SVG src={header1} css={headerImageStyles}/> +      <SVG src={header2} css={headerImageStyles}/> +    </div> +    <h1 css={css` +      font-size: 4em; +      margin: 0; +      margin-top: 10px; +      margin-left: 30px; +      margin-bottom: 200px; +      transition-property: font-size, margin-bottom; +      transition-duration: 1s; + +      @media (max-width: 660px) { +        margin-bottom: 100px; +        font-size: 3em; +      } + +      @media (max-width: 510px) { +        font-size: 2em; +      } +    `}> +      Python Discord Forms +    </h1> +   </div> +} + +export default HeaderBar; diff --git a/src/components/OAuth2Button.tsx b/src/components/OAuth2Button.tsx new file mode 100644 index 0000000..537496b --- /dev/null +++ b/src/components/OAuth2Button.tsx @@ -0,0 +1,42 @@ +/** @jsx jsx */ +import { css, jsx } from "@emotion/core"; + +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { faDiscord } from "@fortawesome/free-brands-svg-icons"; + +import colors from "../colors"; + +const buttonStyling = css` +display: flex; +background-color: ${colors.blurple}; +border: none; +color: white; +font-family: "Hind", "Helvetica", "Arial", sans-serif; +border-radius: 5px; +padding-top: 10px; +padding-bottom: 10px; +padding-right: 20px; +padding-left: 20px; +outline: none; +transition: filter 100ms; +font-size: 1.2em; +align-items: center; + +span { +  vertical-align: middle; +} + +&:hover { +  filter: brightness(110%); +  cursor: pointer; +} +`; + +function OAuth2Button() { +  return <button css={buttonStyling}> +    <span css={{marginRight: "10px"}}><FontAwesomeIcon icon={faDiscord} css={{fontSize: "2em", marginTop: "3px"}}/></span> +    <span>Sign in with Discord</span> +  </button>; +} + +export default OAuth2Button; diff --git a/src/index.css b/src/index.css deleted file mode 100644 index ec2585e..0000000 --- a/src/index.css +++ /dev/null @@ -1,13 +0,0 @@ -body { -  margin: 0; -  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', -    'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', -    sans-serif; -  -webkit-font-smoothing: antialiased; -  -moz-osx-font-smoothing: grayscale; -} - -code { -  font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', -    monospace; -} diff --git a/src/index.tsx b/src/index.tsx index f5185c1..4146d1d 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,6 +1,5 @@  import React from 'react';  import ReactDOM from 'react-dom'; -import './index.css';  import App from './App';  import * as serviceWorker from './serviceWorker'; diff --git a/src/pages/LandingPage.tsx b/src/pages/LandingPage.tsx new file mode 100644 index 0000000..16d40c4 --- /dev/null +++ b/src/pages/LandingPage.tsx @@ -0,0 +1,24 @@ +/** @jsx jsx */ +import { jsx } from "@emotion/core"; + +import HeaderBar from "../components/HeaderBar"; +import FormListing from "../components/FormListing"; +import OAuth2Button from "../components/OAuth2Button"; + +function LandingPage() { +  return <div> +    <HeaderBar/> +    <div css={{marginLeft: "20px"}}> +      <h1>Welcome to Python Discord Forms</h1> + +      <OAuth2Button/> + +      <h3>Available forms</h3> + +      <FormListing title="Ban Appeals" description="Appealing bans from the Discord server" open={true}/> +      <FormListing title="Insights 2020" description="Insights about the Python Discord community" open={false}/> +    </div> +  </div> +} + +export default LandingPage; @@ -221,6 +221,13 @@    dependencies:      "@babel/types" "^7.8.3" +"@babel/helper-module-imports@^7.0.0": +  version "7.10.4" +  resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" +  integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== +  dependencies: +    "@babel/types" "^7.10.4" +  "@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" @@ -1004,7 +1011,7 @@    dependencies:      regenerator-runtime "^0.13.4" -"@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.5.1": +"@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.5.1", "@babel/runtime@^7.5.5":    version "7.11.2"    resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736"    integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw== @@ -1095,6 +1102,116 @@    resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18"    integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== +"@emotion/cache@^10.0.27": +  version "10.0.29" +  resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-10.0.29.tgz#87e7e64f412c060102d589fe7c6dc042e6f9d1e0" +  integrity sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ== +  dependencies: +    "@emotion/sheet" "0.9.4" +    "@emotion/stylis" "0.8.5" +    "@emotion/utils" "0.11.3" +    "@emotion/weak-memoize" "0.2.5" + +"@emotion/core@^10.0.35": +  version "10.0.35" +  resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.0.35.tgz#513fcf2e22cd4dfe9d3894ed138c9d7a859af9b3" +  integrity sha512-sH++vJCdk025fBlRZSAhkRlSUoqSqgCzYf5fMOmqqi3bM6how+sQpg3hkgJonj8GxXM4WbD7dRO+4tegDB9fUw== +  dependencies: +    "@babel/runtime" "^7.5.5" +    "@emotion/cache" "^10.0.27" +    "@emotion/css" "^10.0.27" +    "@emotion/serialize" "^0.11.15" +    "@emotion/sheet" "0.9.4" +    "@emotion/utils" "0.11.3" + +"@emotion/css@^10.0.27": +  version "10.0.27" +  resolved "https://registry.yarnpkg.com/@emotion/css/-/css-10.0.27.tgz#3a7458198fbbebb53b01b2b87f64e5e21241e14c" +  integrity sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw== +  dependencies: +    "@emotion/serialize" "^0.11.15" +    "@emotion/utils" "0.11.3" +    babel-plugin-emotion "^10.0.27" + +"@emotion/[email protected]": +  version "0.8.0" +  resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" +  integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== + +"@emotion/[email protected]": +  version "0.7.4" +  resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" +  integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== + +"@emotion/serialize@^0.11.15", "@emotion/serialize@^0.11.16": +  version "0.11.16" +  resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-0.11.16.tgz#dee05f9e96ad2fb25a5206b6d759b2d1ed3379ad" +  integrity sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg== +  dependencies: +    "@emotion/hash" "0.8.0" +    "@emotion/memoize" "0.7.4" +    "@emotion/unitless" "0.7.5" +    "@emotion/utils" "0.11.3" +    csstype "^2.5.7" + +"@emotion/[email protected]": +  version "0.9.4" +  resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-0.9.4.tgz#894374bea39ec30f489bbfc3438192b9774d32e5" +  integrity sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA== + +"@emotion/[email protected]": +  version "0.8.5" +  resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" +  integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== + +"@emotion/[email protected]": +  version "0.7.5" +  resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" +  integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== + +"@emotion/[email protected]": +  version "0.11.3" +  resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.11.3.tgz#a759863867befa7e583400d322652a3f44820924" +  integrity sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw== + +"@emotion/[email protected]": +  version "0.2.5" +  resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" +  integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== + +"@fortawesome/fontawesome-common-types@^0.2.30": +  version "0.2.30" +  resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.30.tgz#2f1cc5b46bd76723be41d0013a8450c9ba92b777" +  integrity sha512-TsRwpTuKwFNiPhk1UfKgw7zNPeV5RhNp2Uw3pws+9gDAkPGKrtjR1y2lI3SYn7+YzyfuNknflpBA1LRKjt7hMg== + +"@fortawesome/fontawesome-svg-core@^1.2.30": +  version "1.2.30" +  resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.30.tgz#f56dc6791861fe5d1af04fb8abddb94658c576db" +  integrity sha512-E3sAXATKCSVnT17HYmZjjbcmwihrNOCkoU7dVMlasrcwiJAHxSKeZ+4WN5O+ElgO/FaYgJmASl8p9N7/B/RttA== +  dependencies: +    "@fortawesome/fontawesome-common-types" "^0.2.30" + +"@fortawesome/free-brands-svg-icons@^5.14.0": +  version "5.14.0" +  resolved "https://registry.yarnpkg.com/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-5.14.0.tgz#98555518ba41bdff82fbae2f4d1bc36cd3b1c043" +  integrity sha512-WsqPFTvJFI7MYkcy0jeFE2zY+blC4OrnB9MJOcn1NxRXT/sSfEEhrI7CwzIkiYajLiVDBKWeErYOvpsMeodmCQ== +  dependencies: +    "@fortawesome/fontawesome-common-types" "^0.2.30" + +"@fortawesome/free-solid-svg-icons@^5.14.0": +  version "5.14.0" +  resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.14.0.tgz#970453f5e8c4915ad57856c3a0252ac63f6fec18" +  integrity sha512-M933RDM8cecaKMWDSk3FRYdnzWGW7kBBlGNGfvqLVwcwhUPNj9gcw+xZMrqBdRqxnSXdl3zWzTCNNGEtFUq67Q== +  dependencies: +    "@fortawesome/fontawesome-common-types" "^0.2.30" + +"@fortawesome/react-fontawesome@^0.1.11": +  version "0.1.11" +  resolved "https://registry.yarnpkg.com/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.11.tgz#c1a95a2bdb6a18fa97b355a563832e248bf6ef4a" +  integrity sha512-sClfojasRifQKI0OPqTy8Ln8iIhnxR/Pv/hukBhWnBz9kQRmqi6JSH3nghlhAY7SUeIIM7B5/D2G8WjX0iepVg== +  dependencies: +    prop-types "^15.7.2" +  "@hapi/[email protected]":    version "2.1.4"    resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" @@ -2329,6 +2446,22 @@ babel-plugin-dynamic-import-node@^2.3.0:    dependencies:      object.assign "^4.1.0" +babel-plugin-emotion@^10.0.27: +  version "10.0.33" +  resolved "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-10.0.33.tgz#ce1155dcd1783bbb9286051efee53f4e2be63e03" +  integrity sha512-bxZbTTGz0AJQDHm8k6Rf3RQJ8tX2scsfsRyKVgAbiUPUNIRtlK+7JxP+TAd1kRLABFxe0CFm2VdK4ePkoA9FxQ== +  dependencies: +    "@babel/helper-module-imports" "^7.0.0" +    "@emotion/hash" "0.8.0" +    "@emotion/memoize" "0.7.4" +    "@emotion/serialize" "^0.11.16" +    babel-plugin-macros "^2.0.0" +    babel-plugin-syntax-jsx "^6.18.0" +    convert-source-map "^1.5.0" +    escape-string-regexp "^1.0.5" +    find-root "^1.1.0" +    source-map "^0.5.7" +  babel-plugin-istanbul@^5.1.0:    version "5.2.0"    resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" @@ -2346,7 +2479,7 @@ babel-plugin-jest-hoist@^24.9.0:    dependencies:      "@types/babel__traverse" "^7.0.6" [email protected], babel-plugin-macros@^2.0.0:    version "2.8.0"    resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138"    integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== @@ -2360,6 +2493,11 @@ 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-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 sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= +  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" @@ -3158,7 +3296,7 @@ content-type@~1.0.4:    resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"    integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== [email protected], convert-source-map@^1.4.0, convert-source-map@^1.7.0: [email protected], convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.7.0:    version "1.7.0"    resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"    integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== @@ -3527,6 +3665,11 @@ cssstyle@^1.0.0, cssstyle@^1.1.1:    dependencies:      cssom "0.3.x" +csstype@^2.5.7: +  version "2.6.13" +  resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.13.tgz#a6893015b90e84dd6e85d0e3b442a1e84f2dbe0f" +  integrity sha512-ul26pfSQTZW8dcOnD2iiJssfXw0gdNVX9IJDH/X3K5DGPfj+fUYe3kB+swUY6BF3oZDxaID3AJt+9/ojSAE05A== +  csstype@^3.0.2:    version "3.0.3"    resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.3.tgz#2b410bbeba38ba9633353aff34b05d9755d065f8" @@ -4308,6 +4451,11 @@ execa@^1.0.0:      signal-exit "^3.0.0"      strip-eof "^1.0.0" +exenv@^1.2.2: +  version "1.2.2" +  resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d" +  integrity sha1-KueOhdmJQVhnCwPUe+wfA72Ru50= +  exit@^0.1.2:    version "0.1.2"    resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -4576,6 +4724,11 @@ find-cache-dir@^3.3.1:      make-dir "^3.0.2"      pkg-dir "^4.1.0" +find-root@^1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" +  integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== +  [email protected], find-up@^4.0.0:    version "4.1.0"    resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -8615,6 +8768,19 @@ 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-from-dom@^0.4.2: +  version "0.4.2" +  resolved "https://registry.yarnpkg.com/react-from-dom/-/react-from-dom-0.4.2.tgz#bef41428172ca570b492b5e12ae7b592587437e0" +  integrity sha512-cVa4/w0xAyd/bbTu+xu2KKrGc+KDKvR8sSQKodd5pPrN03bN1V3JOLPW+PIzh698LzQ4aL1dfWXpsKx3ZkpT+A== + +react-inlinesvg@^2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/react-inlinesvg/-/react-inlinesvg-2.1.0.tgz#0603ab93fa904c2f764a3fe0d6efc0c1b7af99a4" +  integrity sha512-4kuLrAmzW57INv5nXU/Jy3oET+fxRUOuSZYeB/co6uT4aVUVYxFO/R6vEhodNXyMIar9ldTtgcnRkVLfjNmt/A== +  dependencies: +    exenv "^1.2.2" +    react-from-dom "^0.4.2" +  react-is@^16.12.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" @@ -9512,7 +9678,7 @@ [email protected], source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, sourc    resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"    integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.5.0, source-map@^0.5.6: +source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7:    version "0.5.7"    resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"    integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= | 
