From d2e62239bd109d5d27af2cd20885c5879a4f5b4c Mon Sep 17 00:00:00 2001 From: Mike Nikles Date: Fri, 12 Mar 2021 12:33:17 +0000 Subject: [PATCH 1/4] Create the rebrand branch; add an animations deliverables placeholder page. --- src/pages/rebrand/animations.tsx | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 src/pages/rebrand/animations.tsx diff --git a/src/pages/rebrand/animations.tsx b/src/pages/rebrand/animations.tsx new file mode 100644 index 000000000..bced8d497 --- /dev/null +++ b/src/pages/rebrand/animations.tsx @@ -0,0 +1,9 @@ +import React from 'react' + +const AnimationsPage: React.FunctionComponent<{}> = () => ( + <> + TBD: Add animation deliverables. + +); + +export default AnimationsPage; From bc206f4458530d836e8d32471d88fed1b82097e2 Mon Sep 17 00:00:00 2001 From: Nisar Hassan Naqvi Date: Wed, 17 Mar 2021 13:02:28 +0000 Subject: [PATCH 2/4] setup tailwind. --- .babelrc | 11 +- .gitpod.yml | 16 +- gatsby-browser.js | 1 + package.json | 9 +- .../gatsby-remark-gitpod/package-lock.json | 31 +- src/pages/index.tsx | 169 +------ tailwind.config.js | 11 + yarn.lock | 449 ++++++++++++++++-- 8 files changed, 505 insertions(+), 192 deletions(-) create mode 100644 tailwind.config.js diff --git a/.babelrc b/.babelrc index 970673e67..0fa923123 100644 --- a/.babelrc +++ b/.babelrc @@ -8,11 +8,20 @@ "node": "6.10.3" } } + ], + [ + "babel-preset-gatsby", + { + "targets": { + "browsers": [">0.25%", "not dead"] + } + } ] ], "plugins": [ "@babel/plugin-proposal-class-properties", "@babel/plugin-transform-object-assign", - "@babel/plugin-proposal-object-rest-spread" + "@babel/plugin-proposal-object-rest-spread", + "babel-plugin-macros" ] } diff --git a/.gitpod.yml b/.gitpod.yml index 5bba2fa33..3b415631e 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -12,21 +12,23 @@ vscode: - jpoissonnier.vscode-styled-components@0.0.29:7hF8G3VtB+HNearI5Zw+NA== - paulmolluzzo.convert-css-in-js@1.1.3:YnjK47pXScU3DMFfQzkkOw== + - lightyen.tailwindcss-intellisense-twin@0.7.4:Z6ktluLCqwxpOSSVZcyWvQ== + github: prebuilds: # enable for the master/default branch (defaults to true) master: true - # enable for all branches in this repo (defaults to false) +# enable for all branches in this repo (defaults to false) branches: true - # enable for pull requests coming from this repo (defaults to true) +# enable for pull requests coming from this repo (defaults to true) pullRequests: true - # enable for pull requests coming from forks (defaults to false) +# enable for pull requests coming from forks (defaults to false) pullRequestsFromForks: true - # add a check to pull requests (defaults to true) +# add a check to pull requests (defaults to true) addCheck: true - # add a "Review in Gitpod" button as a comment to pull requests (defaults to false) +# add a "Review in Gitpod" button as a comment to pull requests (defaults to false) addComment: false - # add a "Review in Gitpod" button to the pull request's description (defaults to false) +# add a "Review in Gitpod" button to the pull request's description (defaults to false) addBadge: false - # add a label once the prebuild is ready to pull requests (defaults to false) +# add a label once the prebuild is ready to pull requests (defaults to false) addLabel: false diff --git a/gatsby-browser.js b/gatsby-browser.js index 99cb7bd17..5efbd9a09 100644 --- a/gatsby-browser.js +++ b/gatsby-browser.js @@ -1 +1,2 @@ +import "tailwindcss/dist/base.min.css"; require("prismjs/themes/prism-solarizedlight.css"); diff --git a/package.json b/package.json index 5581d51cc..2fae9de63 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ }, "dependencies": { "@emotion/core": "^10.0.28", - "@emotion/styled": "^10.0.27", + "@emotion/styled": "^11.1.5", "@sendgrid/mail": "^7.2.6", "babel-plugin-styled-components": "^1.10.7", "bowser": "^2.9.0", @@ -35,7 +35,7 @@ "gatsby-plugin-algolia-docsearch": "^1.0.5", "gatsby-plugin-canonical-urls": "^2.3.2", "gatsby-plugin-catch-links": "^2.3.3", - "gatsby-plugin-emotion": "^4.3.2", + "gatsby-plugin-emotion": "^6.1.0", "gatsby-plugin-exclude": "^1.0.2", "gatsby-plugin-feed": "^2.5.3", "gatsby-plugin-google-analytics": "^2.3.2", @@ -68,6 +68,7 @@ "typescript": "^3.9.3" }, "devDependencies": { + "@emotion/react": "^11.1.5", "@types/aws-lambda": "^8.10.63", "@types/classnames": "^2.2.10", "@types/node": "^14.0.6", @@ -79,9 +80,11 @@ "netlify-lambda": "^2.0.1", "prettier": "^2.0.5", "rimraf": "^3.0.2", + "tailwindcss": "^2.0.3", "tslint": "^6.1.2", "tslint-config-blvd": "^1.2.1", "tslint-config-prettier": "^1.18.0", - "tslint-plugin-prettier": "^2.3.0" + "tslint-plugin-prettier": "^2.3.0", + "twin.macro": "^2.3.0" } } diff --git a/plugins/gatsby-remark-gitpod/package-lock.json b/plugins/gatsby-remark-gitpod/package-lock.json index 4b54ad5bd..a08992844 100644 --- a/plugins/gatsby-remark-gitpod/package-lock.json +++ b/plugins/gatsby-remark-gitpod/package-lock.json @@ -1,8 +1,37 @@ { "name": "gatsby-remark-gitpod", "version": "1.0.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "version": "1.0.0", + "dependencies": { + "unist-util-visit": "^1.4.0" + } + }, + "node_modules/unist-util-is": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.2.tgz", + "integrity": "sha512-YkXBK/H9raAmG7KXck+UUpnKiNmUdB+aBGrknfQ4EreE1banuzrKABx3jP6Z5Z3fMSPMQQmeXBlKpCbMwBkxVw==" + }, + "node_modules/unist-util-visit": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.0.tgz", + "integrity": "sha512-FiGu34ziNsZA3ZUteZxSFaczIjGmksfSgdKqBfOejrrfzyUy5b7YrlzT1Bcvi+djkYDituJDy2XB7tGTeBieKw==", + "dependencies": { + "unist-util-visit-parents": "^2.0.0" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.0.1.tgz", + "integrity": "sha512-6B0UTiMfdWql4cQ03gDTCSns+64Zkfo2OCbK31Ov0uMizEz+CJeAp0cgZVb5Fhmcd7Bct2iRNywejT0orpbqUA==", + "dependencies": { + "unist-util-is": "^2.1.2" + } + } + }, "dependencies": { "unist-util-is": { "version": "2.1.2", diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 89668eb13..5e4df816e 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,156 +1,19 @@ -import React from 'react' - -import IndexLayout from '../layouts/index' -import Banner from '../components/index/Banner' -import TrustedBy from '../components/TrustedBy' -import SaveHours from '../components/index/SaveHours' -import FeatureCards from '../components/FeatureCards' -import Testimonials from '../components/index/Testimonials' -import GetStarted from '../components/index/GetStarted' -import MoreInfo from '../components/MoreInfo' -// import Gatsby from '../resources/gatsby.svg' -import GitLab from '../resources/gitlab-logo.svg' -import FreeCodeCamp from '../resources/freecodecamp.svg' -import DWaveLogo from '../resources/dwave.svg' -import GoogleLogo from '../resources/google.svg' -import OpenAILogo from '../resources/openai.svg' -import SauceLabsLogo from '../resources/sauce-labs.svg' -import FacebookLogo from '../resources/facebook.svg' -import CodeInstituteLogo from '../resources/code.svg' -import FourGeeksAcademyLogo from '../resources/4-geeks-academy.png' -import TheiaIDELogo from '../resources/theia-grey.svg' -// import VueLogo from '../resources/vuejs.svg' -import UberLogo from '../resources/uber.svg' -import AmazonLogo from '../resources/amazon.svg' -import IntelLogo from '../resources/intel.svg' -import { features } from '../contents/index' -import SecurityAndOSS from '../components/index/SecurityAndOSS' -// import ProductivityWithGitpod from '../components/index/ProductivityWithGitpod' - -const IndexPage: React.SFC<{}> = () => ( - - - - Trusted by Visionary Teams} - brands={[ - { - alt: 'GitLab', - url: 'https://about.gitlab.com/', - svg: GitLab, - className: 'grey-logo' - }, - { - alt: 'freeCodeCamp', - url: 'https://www.freecodecamp.org/', - svg: FreeCodeCamp, - className: 'fcc' - }, - { - alt: 'D-Wave', - url: 'https://www.dwavesys.com/', - svg: DWaveLogo, - transform: 'scale(1.3)', - className: 'dwave-logo' - }, - { - alt: 'Google', - url: 'https://about.google/', - svg: GoogleLogo, - transform: 'scale(0.9)', - className: 'grey-logo' - }, - { - alt: 'Amazon', - url: 'https://www.aboutamazon.com', - svg: AmazonLogo, - transform: 'scale(0.9) translateY(5px)', - className: 'grey-logo' - }, - { - alt: 'Facebook', - url: 'https://about.fb.com/', - svg: FacebookLogo, - className: 'grey-logo' - }, - { - alt: 'Uber', - url: 'https://www.uber.com', - svg: UberLogo, - className: 'grey-logo' - }, - { - alt: 'OpenAI', - url: 'https://openai.com/', - svg: OpenAILogo, - transform: 'scale(1.1)', - className: 'grey-logo' - }, - { - alt: 'Sauce Labs', - url: 'https://saucelabs.com/', - svg: SauceLabsLogo, - className: 'grey-logo' - }, - { - alt: 'Intel', - url: 'https://www.intel.com', - svg: IntelLogo, - transform: 'scale(0.8)', - className: 'grey-logo' - }, - { - alt: 'Eclipse Theia', - url: 'https://theia-ide.org', - svg: TheiaIDELogo, - transform: 'scale(1.1)', - className: 'grey-logo' - }, - { - alt: 'Code Institute', - url: 'https://codeinstitute.net/', - svg: CodeInstituteLogo, - className: 'grey-logo' - }, - { - alt: '4Geeks Academy', - url: 'https://www.4geeksacademy.co/', - svg: FourGeeksAcademyLogo, - className: 'four-geeks grey-logo' - } - // { - // alt: 'Gatsby', - // url: 'https://www.gatsbyjs.org/', - // svg: Gatsby, - // className: 'gatsby-logo' - // }, - // { - // alt: 'Vue.js', - // url: 'https://vuejs.org/', - // svg: VueLogo, - // className: 'vue-logo' - // }, - ]} - /> - - {/* */} - - - - - - - - - - - - - +import React from 'react'; + +import tw from "twin.macro"; + +const Button = tw.button` + bg-blue-500 + hover:bg-blue-800 + text-white + p-2 + rounded +` + +const IndexPage = () => ( + <> + + ) - export default IndexPage diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 000000000..62dfdaf3f --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,11 @@ +module.exports = { + purge: [], + darkMode: false, // or 'media' or 'class' + theme: { + extend: {}, + }, + variants: { + extend: {}, + }, + plugins: [], +} diff --git a/yarn.lock b/yarn.lock index acddeea9d..1be9d25f1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -85,6 +85,13 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-annotate-as-pure@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab" + integrity sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw== + dependencies: + "@babel/types" "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" @@ -195,6 +202,13 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.7.0": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz#ec67e4404f41750463e455cc3203f6a32e93fcb0" + integrity sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g== + dependencies: + "@babel/types" "^7.12.13" + "@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.10.5", "@babel/helper-module-transforms@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz#b16f250229e47211abdd84b34b64737c2ab2d359" @@ -220,6 +234,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== +"@babel/helper-plugin-utils@^7.12.13": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af" + integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ== + "@babel/helper-regex@^7.10.4": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.5.tgz#32dfbb79899073c415557053a19bd055aae50ae0" @@ -274,6 +293,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== +"@babel/helper-validator-identifier@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" + integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== + "@babel/helper-wrap-function@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz#8a6f701eab0ff39f765b5a1cfef409990e624b87" @@ -307,6 +331,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037" integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q== +"@babel/parser@^7.12.5": + version "7.13.11" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.11.tgz#f93ebfc99d21c1772afbbaa153f47e7ce2f50b88" + integrity sha512-PhuoqeHoO9fc4ffMEVk4qb/w/s2iOSWohvbHxLtxui0eBg3Lg5gN1U8wp1V1u61hOWkPQJJyJzGH6Y+grwkq8Q== + "@babel/plugin-proposal-async-generator-functions@^7.10.4": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz#3491cabf2f7c179ab820606cec27fed15e0e8558" @@ -465,6 +494,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-syntax-jsx@^7.12.1", "@babel/plugin-syntax-jsx@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz#044fb81ebad6698fe62c478875575bcbb9b70f15" + integrity sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" @@ -744,7 +780,7 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-jsx" "^7.10.4" -"@babel/plugin-transform-react-jsx@^7.10.4", "@babel/plugin-transform-react-jsx@^7.3.0": +"@babel/plugin-transform-react-jsx@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz#673c9f913948764a4421683b2bef2936968fddf2" integrity sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A== @@ -754,6 +790,17 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-jsx" "^7.10.4" +"@babel/plugin-transform-react-jsx@^7.12.1": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.17.tgz#dd2c1299f5e26de584939892de3cfc1807a38f24" + integrity sha512-mwaVNcXV+l6qJOuRhpdTEj8sT/Z0owAVWf9QujTZ0d2ye9X/K+MTOTSizcgKOj18PGnTc/7g1I4+cIUjsKhBcw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-jsx" "^7.12.13" + "@babel/types" "^7.12.17" + "@babel/plugin-transform-react-pure-annotations@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.4.tgz#3eefbb73db94afbc075f097523e445354a1c6501" @@ -1014,6 +1061,15 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" +"@babel/types@^7.12.13", "@babel/types@^7.12.17": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.0.tgz#74424d2816f0171b4100f0ab34e9a374efdf7f80" + integrity sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + "@bugsnag/browser@^7.3.5": version "7.3.5" resolved "https://registry.yarnpkg.com/@bugsnag/browser/-/browser-7.3.5.tgz#31a10983247804b58894bd1dc5a998b89195c780" @@ -1078,15 +1134,33 @@ dependencies: "@babel/plugin-syntax-jsx" "^7.2.0" -"@emotion/babel-preset-css-prop@^10.0.27": - version "10.0.27" - resolved "https://registry.yarnpkg.com/@emotion/babel-preset-css-prop/-/babel-preset-css-prop-10.0.27.tgz#58868d9a6afee0eeaeb0fa9dc5ccb1b12d4f786b" - integrity sha512-rducrjTpLGDholp0l2l4pXqpzAqYYGMg/x4IteO0db2smf6zegn6RRZdDnbaoMSs63tfPWgo2WukT1/F1gX/AA== +"@emotion/babel-plugin@^11.1.2", "@emotion/babel-plugin@^11.2.0": + version "11.2.0" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.2.0.tgz#f25c6df8ec045dad5ae6ca63df0791673b98c920" + integrity sha512-lsnQBnl3l4wu/FJoyHnYRpHJeIPNkOBMbtDUIXcO8luulwRKZXPvA10zd2eXVN6dABIWNX4E34en/jkejIg/yA== dependencies: - "@babel/plugin-transform-react-jsx" "^7.3.0" - "@babel/runtime" "^7.5.5" + "@babel/helper-module-imports" "^7.7.0" + "@babel/plugin-syntax-jsx" "^7.12.1" + "@babel/runtime" "^7.7.2" + "@emotion/hash" "^0.8.0" + "@emotion/memoize" "^0.7.5" + "@emotion/serialize" "^1.0.0" + babel-plugin-macros "^2.6.1" + convert-source-map "^1.5.0" + escape-string-regexp "^4.0.0" + find-root "^1.1.0" + source-map "^0.5.7" + stylis "^4.0.3" + +"@emotion/babel-preset-css-prop@^11.2.0": + version "11.2.0" + resolved "https://registry.yarnpkg.com/@emotion/babel-preset-css-prop/-/babel-preset-css-prop-11.2.0.tgz#c7e945f56b2610b438f0dc8ae5253fc55488de0e" + integrity sha512-9XLQm2eLPYTho+Cx1LQTDA1rATjoAaB4O+ds55XDvoAa+Z16Hhg8y5Vihj3C8E6+ilDM8SV5A9Z6z+yj0YIRBg== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.12.1" + "@babel/runtime" "^7.7.2" + "@emotion/babel-plugin" "^11.2.0" "@emotion/babel-plugin-jsx-pragmatic" "^0.1.5" - babel-plugin-emotion "^10.0.27" "@emotion/cache@^10.0.27": version "10.0.29" @@ -1098,6 +1172,17 @@ "@emotion/utils" "0.11.3" "@emotion/weak-memoize" "0.2.5" +"@emotion/cache@^11.1.3": + version "11.1.3" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.1.3.tgz#c7683a9484bcd38d5562f2b9947873cf66829afd" + integrity sha512-n4OWinUPJVaP6fXxWZD9OUeQ0lY7DvtmtSuqtRWT0Ofo/sBLCVSgb4/Oa0Q5eFxcwablRKjUXqXtNZVyEwCAuA== + dependencies: + "@emotion/memoize" "^0.7.4" + "@emotion/sheet" "^1.0.0" + "@emotion/utils" "^1.0.0" + "@emotion/weak-memoize" "^0.2.5" + stylis "^4.0.3" + "@emotion/core@^10.0.14", "@emotion/core@^10.0.28": version "10.0.35" resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.0.35.tgz#513fcf2e22cd4dfe9d3894ed138c9d7a859af9b3" @@ -1119,7 +1204,7 @@ "@emotion/utils" "0.11.3" babel-plugin-emotion "^10.0.27" -"@emotion/hash@0.8.0": +"@emotion/hash@0.8.0", "@emotion/hash@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== @@ -1131,11 +1216,36 @@ dependencies: "@emotion/memoize" "0.7.4" +"@emotion/is-prop-valid@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.1.0.tgz#29ef6be1e946fb4739f9707def860f316f668cde" + integrity sha512-9RkilvXAufQHsSsjQ3PIzSns+pxuX4EW8EbGeSPjZMHuMx6z/MOzb9LpqNieQX4F3mre3NWS2+X3JNRHTQztUQ== + dependencies: + "@emotion/memoize" "^0.7.4" + "@emotion/memoize@0.7.4": version "0.7.4" resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== +"@emotion/memoize@^0.7.4", "@emotion/memoize@^0.7.5": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.5.tgz#2c40f81449a4e554e9fc6396910ed4843ec2be50" + integrity sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ== + +"@emotion/react@^11.1.5": + version "11.1.5" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.1.5.tgz#15e78f9822894cdc296e6f4e0688bac8120dfe66" + integrity sha512-xfnZ9NJEv9SU9K2sxXM06lzjK245xSeHRpUh67eARBm3PBHjjKIZlfWZ7UQvD0Obvw6ZKjlC79uHrlzFYpOB/Q== + dependencies: + "@babel/runtime" "^7.7.2" + "@emotion/cache" "^11.1.3" + "@emotion/serialize" "^1.0.0" + "@emotion/sheet" "^1.0.1" + "@emotion/utils" "^1.0.0" + "@emotion/weak-memoize" "^0.2.5" + hoist-non-react-statics "^3.3.1" + "@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" @@ -1147,11 +1257,27 @@ "@emotion/utils" "0.11.3" csstype "^2.5.7" +"@emotion/serialize@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.0.1.tgz#322cdebfdbb5a88946f17006548191859b9b0855" + integrity sha512-TXlKs5sgUKhFlszp/rg4lIAZd7UUSmJpwaf9/lAEFcUh2vPi32i7x4wk7O8TN8L8v2Ol8k0CxnhRBY0zQalTxA== + dependencies: + "@emotion/hash" "^0.8.0" + "@emotion/memoize" "^0.7.4" + "@emotion/unitless" "^0.7.5" + "@emotion/utils" "^1.0.0" + csstype "^3.0.2" + "@emotion/sheet@0.9.4": version "0.9.4" resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-0.9.4.tgz#894374bea39ec30f489bbfc3438192b9774d32e5" integrity sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA== +"@emotion/sheet@^1.0.0", "@emotion/sheet@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.0.1.tgz#245f54abb02dfd82326e28689f34c27aa9b2a698" + integrity sha512-GbIvVMe4U+Zc+929N1V7nW6YYJtidj31lidSmdYcWozwoBIObXBnaJkKNDjZrLm9Nc0BR+ZyHNaRZxqNZbof5g== + "@emotion/styled-base@^10.0.27": version "10.0.31" resolved "https://registry.yarnpkg.com/@emotion/styled-base/-/styled-base-10.0.31.tgz#940957ee0aa15c6974adc7d494ff19765a2f742a" @@ -1162,7 +1288,7 @@ "@emotion/serialize" "^0.11.15" "@emotion/utils" "0.11.3" -"@emotion/styled@^10.0.14", "@emotion/styled@^10.0.27": +"@emotion/styled@^10.0.14": version "10.0.27" resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-10.0.27.tgz#12cb67e91f7ad7431e1875b1d83a94b814133eaf" integrity sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q== @@ -1170,12 +1296,23 @@ "@emotion/styled-base" "^10.0.27" babel-plugin-emotion "^10.0.27" +"@emotion/styled@^11.1.5": + version "11.1.5" + resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.1.5.tgz#3d7bfa58b346e48315f65ee956aeef81f0bea8e0" + integrity sha512-nIq7pOBEDqT5xSFbclQ3XFy0q8C9EUU8ECqKN2kJKGxKh+vLz/x26kEih4aOpoAsyzc+R60rQxh7VJiLTUEdmg== + dependencies: + "@babel/runtime" "^7.7.2" + "@emotion/babel-plugin" "^11.1.2" + "@emotion/is-prop-valid" "^1.1.0" + "@emotion/serialize" "^1.0.0" + "@emotion/utils" "^1.0.0" + "@emotion/stylis@0.8.5": 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.5": +"@emotion/unitless@0.7.5", "@emotion/unitless@^0.7.5": version "0.7.5" resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== @@ -1185,7 +1322,12 @@ resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.11.3.tgz#a759863867befa7e583400d322652a3f44820924" integrity sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw== -"@emotion/weak-memoize@0.2.5": +"@emotion/utils@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.0.0.tgz#abe06a83160b10570816c913990245813a2fd6af" + integrity sha512-mQC2b3XLDs6QCW+pDQDiyO/EdGZYOygE8s5N5rrzjSI4M3IejPE/JPndCBwRT9z982aqQNi6beWs1UeayrQxxA== + +"@emotion/weak-memoize@0.2.5", "@emotion/weak-memoize@^0.2.5": version "0.2.5" resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== @@ -1209,6 +1351,13 @@ reflect-metadata "^0.1.12" tslib "^1.8.1" +"@fullhuman/postcss-purgecss@^3.1.3": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@fullhuman/postcss-purgecss/-/postcss-purgecss-3.1.3.tgz#47af7b87c9bfb3de4bc94a38f875b928fffdf339" + integrity sha512-kwOXw8fZ0Lt1QmeOOrd+o4Ibvp4UTEBFQbzvWldjlKv5n+G9sXfIPn1hh63IQIL8K8vbvv1oYMJiIUbuy9bGaA== + dependencies: + purgecss "^3.1.3" + "@graphql-tools/schema@^6.0.14": version "6.2.4" resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-6.2.4.tgz#cc4e9f5cab0f4ec48500e666719d99fc5042481d" @@ -2973,11 +3122,30 @@ acorn-jsx@^5.0.1, acorn-jsx@^5.2.0: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== +acorn-node@^1.6.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" + integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== + dependencies: + acorn "^7.0.0" + acorn-walk "^7.0.0" + xtend "^4.0.2" + +acorn-walk@^7.0.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + acorn@^6.1.1, acorn@^6.4.1: version "6.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== +acorn@^7.0.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + acorn@^7.1.1, acorn@^7.2.0: version "7.4.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" @@ -3621,7 +3789,7 @@ babel-plugin-lodash@3.3.4: lodash "^4.17.10" require-package-name "^2.0.1" -babel-plugin-macros@^2.0.0, babel-plugin-macros@^2.8.0: +babel-plugin-macros@^2.0.0, babel-plugin-macros@^2.6.1, babel-plugin-macros@^2.8.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== @@ -4181,7 +4349,7 @@ bytes@3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= -bytes@3.1.0: +bytes@3.1.0, bytes@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== @@ -4356,7 +4524,7 @@ camel-case@4.1.1: pascal-case "^3.1.1" tslib "^1.10.0" -camelcase-css@2.0.1: +camelcase-css@2.0.1, camelcase-css@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== @@ -4604,6 +4772,11 @@ clean-deep@^3.0.2, clean-deep@^3.3.0: lodash.isplainobject "^4.0.6" lodash.transform "^4.6.0" +clean-set@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/clean-set/-/clean-set-1.1.2.tgz#76d8bf238c3e27827bfa73073ecdfdc767187070" + integrity sha512-cA8uCj0qSoG9e0kevyOWXwPaELRPVg5Pxp6WskLMwerx257Zfnh8Nl0JBH59d7wQzij2CK7qEfJQK3RjuKKIug== + clean-stack@^2.0.0, clean-stack@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" @@ -4847,6 +5020,14 @@ color-string@^1.5.2: color-name "^1.0.0" simple-swizzle "^0.2.2" +color-string@^1.5.4: + version "1.5.5" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.5.tgz#65474a8f0e7439625f3d27a6a19d89fc45223014" + integrity sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + color@3.0.x: version "3.0.0" resolved "https://registry.yarnpkg.com/color/-/color-3.0.0.tgz#d920b4328d534a3ac8295d68f7bd4ba6c427be9a" @@ -4863,11 +5044,24 @@ color@^3.0.0, color@^3.1.2: color-convert "^1.9.1" color-string "^1.5.2" +color@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e" + integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.4" + colorette@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== +colorette@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" + integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== + colors@^1.1.2, colors@^1.2.1: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" @@ -4918,6 +5112,11 @@ commander@^5.1.0: resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== +commander@^6.0.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" + integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== + common-path-prefix@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-2.0.0.tgz#25b0265f318bf093a6ec630813aac97b29dea230" @@ -5494,6 +5693,11 @@ css-tree@1.0.0-alpha.39: mdn-data "2.0.6" source-map "^0.6.1" +css-unit-converter@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.2.tgz#4c77f5a1954e6dbff60695ecb214e3270436ab21" + integrity sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA== + css-what@2.1: version "2.1.3" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" @@ -5847,6 +6051,11 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= + del@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" @@ -6040,6 +6249,15 @@ detective-typescript@^5.8.0: node-source-walk "^4.2.0" typescript "^3.8.3" +detective@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b" + integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg== + dependencies: + acorn-node "^1.6.1" + defined "^1.0.0" + minimist "^1.1.1" + devcert@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/devcert/-/devcert-1.1.3.tgz#ff8119efae52ebf2449531b7482ae0f7211542e9" @@ -6068,6 +6286,11 @@ devcert@^1.1.3: tmp "^0.0.33" tslib "^1.10.0" +didyoumean@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.1.tgz#e92edfdada6537d484d73c0172fd1eba0c4976ff" + integrity sha1-6S7f2tplN9SE1zwBcv0eugxJdv8= + diff-sequences@^25.2.6: version "25.2.6" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" @@ -6296,6 +6519,11 @@ download@^7.1.0: p-event "^2.1.0" pify "^3.0.0" +dset@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/dset/-/dset-2.1.0.tgz#cd1e99e55cf32366d8f144f906c42f7fb3bf431e" + integrity sha512-hlQYwNEdW7Qf8zxysy+yN1E8C/SxRst3Z9n+IvXOR35D9bPVwNHhnL8ZBeoZjvinuGrlvGg6pAMDwhmjqFDgjA== + duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" @@ -7647,6 +7875,16 @@ fs-extra@^9.0.1: jsonfile "^6.0.1" universalify "^1.0.0" +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" @@ -7861,13 +8099,13 @@ gatsby-plugin-catch-links@^2.3.3: "@babel/runtime" "^7.11.2" escape-string-regexp "^1.0.5" -gatsby-plugin-emotion@^4.3.2: - version "4.3.12" - resolved "https://registry.yarnpkg.com/gatsby-plugin-emotion/-/gatsby-plugin-emotion-4.3.12.tgz#c45f80785a04584991e57b3e4437e400f4949850" - integrity sha512-fHrci44MgZjLqEUGySNHKmbgTPOfR+Ir6JDZoPem8YbQZz5des3OyoomSEc2b/ztW5F5xkB792o+aFarahyz/Q== +gatsby-plugin-emotion@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-emotion/-/gatsby-plugin-emotion-6.1.0.tgz#dbf0bf3ee6a57a65bb5e563b63a36189cc98ac8c" + integrity sha512-olgoeJuZJro55+kvz8WRtaBRCLMzdN0TJdY5ByJdd9s49Y+ZN8FyxWuwlWzrbcOTyd8YzoNc2Kkylsw+1+W+2w== dependencies: "@babel/runtime" "^7.11.2" - "@emotion/babel-preset-css-prop" "^10.0.27" + "@emotion/babel-preset-css-prop" "^11.2.0" gatsby-plugin-exclude@^1.0.2: version "1.0.2" @@ -8595,7 +8833,7 @@ glob-to-regexp@^0.3.0: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= -glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -9260,7 +9498,7 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoist-non-react-statics@^3.3.0: +hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1: 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== @@ -9326,6 +9564,11 @@ html-tag-names@^1.1.5: resolved "https://registry.yarnpkg.com/html-tag-names/-/html-tag-names-1.1.5.tgz#f537420c16769511283f8ae1681785fbc89ee0a9" integrity sha512-aI5tKwNTBzOZApHIynaAwecLBv8TlZTEy/P4Sj2SzzAhBrGuI8yGZ0UIXVPQzOHGS+to2mjb04iy6VWt/8+d8A== +html-tags@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" + integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== + html-void-elements@^1.0.0, html-void-elements@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" @@ -9966,6 +10209,13 @@ is-color-stop@^1.0.0: rgb-regex "^1.0.1" rgba-regex "^1.0.0" +is-core-module@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" + integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -10936,6 +11186,11 @@ lodash.every@^4.6.0: resolved "https://registry.yarnpkg.com/lodash.every/-/lodash.every-4.6.0.tgz#eb89984bebc4364279bb3aefbbd1ca19bfa6c6a7" integrity sha1-64mYS+vENkJ5uzrvu9HKGb+mxqc= +lodash.flatmap@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz#ef8cbf408f6e48268663345305c6acc0b778702e" + integrity sha1-74y/QI9uSCaGYzRTBcaswLd4cC4= + lodash.flatten@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" @@ -11694,7 +11949,7 @@ minimist@^0.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.2.1.tgz#827ba4e7593464e7c221e8c5bed930904ee2c455" integrity sha512-GY8fANSrTMfBVfInqJAY41QkOM+upUTytK1jZ0c8+3HdHrJxBJ3rF5i9moClXTE8uUSnUo8cAsCoxDXvSY4DHg== -minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5: +minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -11781,6 +12036,11 @@ mkdirp@^1.0.3, mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +modern-normalize@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/modern-normalize/-/modern-normalize-1.0.0.tgz#539d84a1e141338b01b346f3e27396d0ed17601e" + integrity sha512-1lM+BMLGuDfsdwf3rsgBSrxJwAZHFIrQ8YR61xIqdHo0uNKI9M52wNpHSrliZATJp51On6JD0AfRxd4YGSU0lw== + module-definition@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/module-definition/-/module-definition-3.3.0.tgz#aae06d68c99c5f93841e59b8a4469b974956d4d4" @@ -11901,6 +12161,11 @@ nan@^2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== +nanoid@^3.1.20: + version "3.1.22" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.22.tgz#b35f8fb7d151990a8aebd5aa5015c03cf726f844" + integrity sha512-/2ZUaJX2ANuLtTvqTlgqBQNJoQO398KyJgZloL0PZkC0dpysjncRUPsFe3DUPzz/y3h+u7C46np8RMuvF3jsSQ== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -12145,7 +12410,7 @@ node-addon-api@^3.0.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.0.2.tgz#04bc7b83fd845ba785bb6eae25bc857e1ef75681" integrity sha512-+D4s2HCnxPd5PjjI0STKwncjXTUKKqm74MDMz9OPXavjsGmjkvwgLtA5yoxJUdmpj52+2u+RrXgPipahKczMKg== -node-emoji@^1.10.0: +node-emoji@^1.10.0, node-emoji@^1.8.1: version "1.10.0" resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== @@ -12395,6 +12660,11 @@ object-hash@^1.1.4: resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== +object-hash@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.1.1.tgz#9447d0279b4fcf80cff3259bf66a1dc73afabe09" + integrity sha512-VOJmgmS+7wvXf8CjbQmimtCnEx3IAoLxI3fp2fbWehxrWBcAQFbk+vcwb6vzR0VZv/eNCJ/27j151ZTwqW/JeQ== + object-inspect@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" @@ -13377,6 +13647,24 @@ postcss-flexbugs-fixes@^4.2.1: dependencies: postcss "^7.0.26" +postcss-functions@^3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-functions/-/postcss-functions-3.0.0.tgz#0e94d01444700a481de20de4d55fb2640564250e" + integrity sha1-DpTQFERwCkgd4g3k1V+yZAVkJQ4= + dependencies: + glob "^7.1.2" + object-assign "^4.1.1" + postcss "^6.0.9" + postcss-value-parser "^3.3.0" + +postcss-js@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-3.0.3.tgz#2f0bd370a2e8599d45439f6970403b5873abda33" + integrity sha512-gWnoWQXKFw65Hk/mi2+WTQTHdPD5UJdDXZmX073EY/B3BWnYjO4F4t0VneTCnCGQ5E5GsCdMkzPaTXwl3r5dJw== + dependencies: + camelcase-css "^2.0.1" + postcss "^8.1.6" + postcss-load-config@^2.0.0: version "2.1.2" resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" @@ -13488,6 +13776,13 @@ postcss-modules-values@^1.3.0: icss-replace-symbols "^1.1.0" postcss "^6.0.1" +postcss-nested@^5.0.1: + version "5.0.5" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-5.0.5.tgz#f0a107d33a9fab11d7637205f5321e27223e3603" + integrity sha512-GSRXYz5bccobpTzLQZXOnSOfKl6TwVr5CyAQJUPub4nuRJSOECK5AqurxVgmtxP48p0Kc/ndY/YyS1yqldX0Ew== + dependencies: + postcss-selector-parser "^6.0.4" + postcss-normalize-charset@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" @@ -13607,7 +13902,7 @@ postcss-selector-parser@^3.0.0: indexes-of "^1.0.1" uniq "^1.0.1" -postcss-selector-parser@^6.0.2: +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: version "6.0.4" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== @@ -13655,7 +13950,7 @@ postcss-values-parser@^1.5.0: indexes-of "^1.0.1" uniq "^1.0.1" -postcss@^6.0.1, postcss@^6.0.23: +postcss@^6.0.1, postcss@^6.0.23, postcss@^6.0.9: version "6.0.23" resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== @@ -13673,6 +13968,15 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.27 source-map "^0.6.1" supports-color "^6.1.0" +postcss@^8.1.6, postcss@^8.1.8, postcss@^8.2.1: + version "8.2.8" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.8.tgz#0b90f9382efda424c4f0f69a2ead6f6830d08ece" + integrity sha512-1F0Xb2T21xET7oQV9eKuctbM9S7BC0fetoHCc4H13z0PT6haiRLP4T0ZY4XWh7iLP0usgqykT6p9B2RtOf4FPw== + dependencies: + colorette "^1.2.2" + nanoid "^3.1.20" + source-map "^0.6.1" + potrace@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/potrace/-/potrace-2.1.8.tgz#50f6fba92e1e39ddef6f979b0a0f841809e0acf2" @@ -13778,6 +14082,11 @@ pretty-format@^25.5.0: ansi-styles "^4.0.0" react-is "^16.12.0" +pretty-hrtime@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" + integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= + pretty-ms@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-5.1.0.tgz#b906bdd1ec9e9799995c372e2b1c34f073f95384" @@ -13986,6 +14295,16 @@ pupa@^2.0.1: dependencies: escape-goat "^2.0.0" +purgecss@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/purgecss/-/purgecss-3.1.3.tgz#26987ec09d12eeadc318e22f6e5a9eb0be094f41" + integrity sha512-hRSLN9mguJ2lzlIQtW4qmPS2kh6oMnA9RxdIYK8sz18QYqd6ePp4GNDl18oWHA1f2v2NEQIh51CO8s/E3YGckQ== + dependencies: + commander "^6.0.0" + glob "^7.0.0" + postcss "^8.2.1" + postcss-selector-parser "^6.0.2" + q@^1.1.2: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" @@ -14476,6 +14795,14 @@ redeyed@~2.1.0: dependencies: esprima "~4.0.0" +reduce-css-calc@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz#7ef8761a28d614980dc0c982f772c93f7a99de03" + integrity sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg== + dependencies: + css-unit-converter "^1.1.1" + postcss-value-parser "^3.3.0" + redux-thunk@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622" @@ -14901,6 +15228,14 @@ resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.3 dependencies: path-parse "^1.0.6" +resolve@^1.19.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + resolve@^2.0.0-next.1: version "2.0.0-next.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.1.tgz#4d96ccb89bf82d54ab037241ae053db4e92bb5f1" @@ -15972,6 +16307,11 @@ string-similarity@^1.2.2: lodash.map "^4.6.0" lodash.maxby "^4.6.0" +string-similarity@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/string-similarity/-/string-similarity-4.0.4.tgz#42d01ab0b34660ea8a018da8f56a3309bb8b2a5b" + integrity sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ== + string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -16221,6 +16561,11 @@ stylehacks@^4.0.0: postcss "^7.0.0" postcss-selector-parser "^3.0.0" +stylis@^4.0.3: + version "4.0.7" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.7.tgz#412a90c28079417f3d27c028035095e4232d2904" + integrity sha512-OFFeUXFgwnGOKvEXaSv0D0KQ5ADP0n6g3SVONx6I/85JzNZ3u50FRwB3lVIk1QO2HNdI75tbVzc4Z66Gdp9voA== + subscriptions-transport-ws@^0.9.16: version "0.9.18" resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.18.tgz#bcf02320c911fbadb054f7f928e51c6041a37b97" @@ -16333,6 +16678,32 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" +tailwindcss@^2.0.1, tailwindcss@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-2.0.3.tgz#f8d07797d1f89dc4b171673c26237b58783c2c86" + integrity sha512-s8NEqdLBiVbbdL0a5XwTb8jKmIonOuI4RMENEcKLR61jw6SdKvBss7NWZzwCaD+ZIjlgmesv8tmrjXEp7C0eAQ== + dependencies: + "@fullhuman/postcss-purgecss" "^3.1.3" + bytes "^3.0.0" + chalk "^4.1.0" + color "^3.1.3" + detective "^5.2.0" + didyoumean "^1.2.1" + fs-extra "^9.1.0" + html-tags "^3.1.0" + lodash "^4.17.20" + modern-normalize "^1.0.0" + node-emoji "^1.8.1" + object-hash "^2.1.1" + postcss-functions "^3" + postcss-js "^3.0.3" + postcss-nested "^5.0.1" + postcss-selector-parser "^6.0.4" + postcss-value-parser "^4.1.0" + pretty-hrtime "^1.0.3" + reduce-css-calc "^2.1.8" + resolve "^1.19.0" + tapable@^1.0.0, tapable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" @@ -16867,6 +17238,25 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +twin.macro@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/twin.macro/-/twin.macro-2.3.0.tgz#0ce26e8dfb14e44ef6b75ccea2ddcd67a82bbabe" + integrity sha512-uC35EK6JCeRPZ8NA6ElY/v0oj6kcwRciP1pGV/3or9kO4MOe/FQwLovE4MSTBI6HpPSJtbwjc11Z/4t+fAzsmg== + dependencies: + "@babel/parser" "^7.12.5" + babel-plugin-macros "^2.8.0" + chalk "^4.1.0" + clean-set "^1.1.1" + color "^3.1.3" + dset "^2.0.1" + lodash.flatmap "^4.5.0" + lodash.get "^4.4.2" + lodash.merge "^4.6.2" + postcss "^8.1.8" + string-similarity "^4.0.3" + tailwindcss "^2.0.1" + timsort "^0.3.0" + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -17260,6 +17650,11 @@ universalify@^1.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + unixify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unixify/-/unixify-1.0.0.tgz#3a641c8c2ffbce4da683a5c70f03a462940c2090" @@ -18052,7 +18447,7 @@ xstate@^4.11.0, xstate@^4.13.0, xstate@^4.9.1: resolved "https://registry.yarnpkg.com/xstate/-/xstate-4.13.0.tgz#0be22ceb8bae2bc6a025fab330fe44204d76771c" integrity sha512-UnUJJzP2KTPqnmxIoD/ymXtpy/hehZnUlO6EXqWC/72XkPb15p9Oz/X4WhS3QE+by7NP+6b5bCi/GTGFzm5D+A== -xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: +xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== From b30d7c06344243d20db62977d20da2147c9f1258 Mon Sep 17 00:00:00 2001 From: Nisar Hassan Naqvi Date: Thu, 18 Mar 2021 13:13:11 +0000 Subject: [PATCH 3/4] clean up. --- src/components/ActionCard.tsx | 54 -- src/components/AnnouncementBanner.tsx | 178 ----- src/components/Arrow.tsx | 45 -- src/components/BackToTopButton.tsx | 52 -- src/components/Banner.tsx | 105 --- src/components/Bg.tsx | 30 - src/components/Circle.tsx | 9 - src/components/DropDown.tsx | 214 ------ src/components/ExternalLink.tsx | 42 -- src/components/FeatureCard.tsx | 338 --------- src/components/FeatureCards.tsx | 32 - src/components/FeatureItem.tsx | 70 -- src/components/FeaturesSection.tsx | 40 - src/components/Footer.tsx | 226 ------ src/components/ImageProvider.tsx | 96 --- src/components/InfoCard.tsx | 90 --- src/components/Link.tsx | 25 - src/components/Linkset.tsx | 71 -- src/components/MinimalFooter.tsx | 45 -- src/components/MoreInfo.tsx | 118 --- src/components/Nav.tsx | 340 --------- src/components/NewsletterForm.tsx | 53 -- src/components/Offers.tsx | 71 -- src/components/OnBoarding.tsx | 21 - src/components/PopOver.tsx | 117 --- src/components/PricingBox.tsx | 362 --------- src/components/PricingTable.tsx | 183 ----- src/components/Quote.tsx | 85 --- src/components/SubmissionSucess.tsx | 48 -- src/components/TextBox.tsx | 53 -- src/components/TextCard.tsx | 89 --- src/components/TextCards.tsx | 37 - src/components/TrustedBy.tsx | 128 ---- src/components/blog/MorePosts.tsx | 30 - src/components/blog/PostBanner.tsx | 121 --- src/components/blog/PostPreview.tsx | 133 ---- src/components/blog/Posts.tsx | 11 - src/components/blog/SharePost.tsx | 74 -- src/components/careers/ExpandableJob.tsx | 217 ------ src/components/docs/DocSearch.tsx | 35 - src/components/docs/DocSideBar.tsx | 77 -- src/components/docs/DocTopicChooser.tsx | 52 -- src/components/docs/EditInGitpod.tsx | 63 -- src/components/docs/NavigationArrows.tsx | 37 - src/components/docs/ReachOut.tsx | 80 -- src/components/extension-uninstall/Form.tsx | 142 ---- .../extension-uninstall/Message.tsx | 38 - src/components/features/FeatureBox.tsx | 93 --- .../features/FullAutomationButtons.tsx | 24 - .../features/FullAutomationGraphics.tsx | 33 - src/components/features/Intro.tsx | 103 --- src/components/features/StarFortFree.tsx | 40 - .../gitpod-vs-codespaces/Difference.tsx | 88 --- .../gitpod-vs-codespaces/PowerComparison.tsx | 150 ---- .../gitpod-vs-codespaces/SpeedComparison.tsx | 168 ----- src/components/index/AvatarProvider.tsx | 36 - src/components/index/Banner.tsx | 122 --- src/components/index/GetStarted.tsx | 73 -- src/components/index/Project.tsx | 62 -- src/components/index/SaveHours.tsx | 94 --- src/components/index/SecurityAndOSS.tsx | 72 -- src/components/index/StartWorkspace.tsx | 113 --- src/components/index/Testimonial.tsx | 100 --- src/components/index/Testimonials.tsx | 145 ---- src/components/index/TextFeature.tsx | 65 -- src/components/pricing/Plans.tsx | 116 --- src/components/pricing/PricingBoxes.tsx | 297 -------- src/components/pricing/PricingFAQs.tsx | 201 ----- src/components/pricing/Tabs.tsx | 68 -- src/components/screencasts/Hero.tsx | 25 - src/components/screencasts/NextUp.tsx | 27 - src/components/screencasts/RelatedDocs.tsx | 31 - src/components/screencasts/Screencast.tsx | 76 -- src/components/screencasts/Screencasts.tsx | 35 - src/components/screencasts/YouTubeEmbed.tsx | 47 -- src/components/self-hosted/Install.tsx | 135 ---- src/pages/404.tsx | 43 -- src/pages/about.tsx | 301 -------- src/pages/blog.tsx | 134 ---- src/pages/careers.tsx | 609 --------------- src/pages/contact.tsx | 277 ------- src/pages/education.tsx | 186 ----- src/pages/enterprise-license.tsx | 449 ----------- src/pages/enterprise.tsx | 174 ----- src/pages/extension-activation.tsx | 208 ------ src/pages/extension-uninstall.tsx | 57 -- src/pages/features.tsx | 28 - src/pages/github-student-developer-pack.tsx | 101 --- src/pages/github-teacher-toolbox.tsx | 109 --- src/pages/gitpod-vs-github-codespaces.tsx | 390 ---------- src/pages/imprint.tsx | 61 -- src/pages/media-kit.tsx | 149 ---- src/pages/pricing.tsx | 50 -- src/pages/privacy.tsx | 706 ------------------ src/pages/recruiting.tsx | 187 ----- src/pages/screencasts.tsx | 17 - src/pages/self-hosted-terms.tsx | 100 --- src/pages/self-hosted.tsx | 103 --- src/pages/terms.tsx | 583 --------------- src/pages/vendor.tsx | 181 ----- src/styles/base.ts | 540 -------------- 101 files changed, 12959 deletions(-) delete mode 100644 src/components/ActionCard.tsx delete mode 100644 src/components/AnnouncementBanner.tsx delete mode 100644 src/components/Arrow.tsx delete mode 100644 src/components/BackToTopButton.tsx delete mode 100644 src/components/Banner.tsx delete mode 100644 src/components/Bg.tsx delete mode 100644 src/components/Circle.tsx delete mode 100644 src/components/DropDown.tsx delete mode 100644 src/components/ExternalLink.tsx delete mode 100644 src/components/FeatureCard.tsx delete mode 100644 src/components/FeatureCards.tsx delete mode 100644 src/components/FeatureItem.tsx delete mode 100644 src/components/FeaturesSection.tsx delete mode 100644 src/components/Footer.tsx delete mode 100644 src/components/ImageProvider.tsx delete mode 100644 src/components/InfoCard.tsx delete mode 100644 src/components/Link.tsx delete mode 100644 src/components/Linkset.tsx delete mode 100644 src/components/MinimalFooter.tsx delete mode 100644 src/components/MoreInfo.tsx delete mode 100644 src/components/Nav.tsx delete mode 100644 src/components/NewsletterForm.tsx delete mode 100644 src/components/Offers.tsx delete mode 100644 src/components/OnBoarding.tsx delete mode 100644 src/components/PopOver.tsx delete mode 100644 src/components/PricingBox.tsx delete mode 100644 src/components/PricingTable.tsx delete mode 100644 src/components/Quote.tsx delete mode 100644 src/components/SubmissionSucess.tsx delete mode 100644 src/components/TextBox.tsx delete mode 100644 src/components/TextCard.tsx delete mode 100644 src/components/TextCards.tsx delete mode 100644 src/components/TrustedBy.tsx delete mode 100644 src/components/blog/MorePosts.tsx delete mode 100644 src/components/blog/PostBanner.tsx delete mode 100644 src/components/blog/PostPreview.tsx delete mode 100644 src/components/blog/Posts.tsx delete mode 100644 src/components/blog/SharePost.tsx delete mode 100644 src/components/careers/ExpandableJob.tsx delete mode 100644 src/components/docs/DocSearch.tsx delete mode 100644 src/components/docs/DocSideBar.tsx delete mode 100644 src/components/docs/DocTopicChooser.tsx delete mode 100644 src/components/docs/EditInGitpod.tsx delete mode 100644 src/components/docs/NavigationArrows.tsx delete mode 100644 src/components/docs/ReachOut.tsx delete mode 100644 src/components/extension-uninstall/Form.tsx delete mode 100644 src/components/extension-uninstall/Message.tsx delete mode 100644 src/components/features/FeatureBox.tsx delete mode 100644 src/components/features/FullAutomationButtons.tsx delete mode 100644 src/components/features/FullAutomationGraphics.tsx delete mode 100644 src/components/features/Intro.tsx delete mode 100644 src/components/features/StarFortFree.tsx delete mode 100644 src/components/gitpod-vs-codespaces/Difference.tsx delete mode 100644 src/components/gitpod-vs-codespaces/PowerComparison.tsx delete mode 100644 src/components/gitpod-vs-codespaces/SpeedComparison.tsx delete mode 100644 src/components/index/AvatarProvider.tsx delete mode 100644 src/components/index/Banner.tsx delete mode 100644 src/components/index/GetStarted.tsx delete mode 100644 src/components/index/Project.tsx delete mode 100644 src/components/index/SaveHours.tsx delete mode 100644 src/components/index/SecurityAndOSS.tsx delete mode 100644 src/components/index/StartWorkspace.tsx delete mode 100644 src/components/index/Testimonial.tsx delete mode 100644 src/components/index/Testimonials.tsx delete mode 100644 src/components/index/TextFeature.tsx delete mode 100644 src/components/pricing/Plans.tsx delete mode 100644 src/components/pricing/PricingBoxes.tsx delete mode 100644 src/components/pricing/PricingFAQs.tsx delete mode 100644 src/components/pricing/Tabs.tsx delete mode 100644 src/components/screencasts/Hero.tsx delete mode 100644 src/components/screencasts/NextUp.tsx delete mode 100644 src/components/screencasts/RelatedDocs.tsx delete mode 100644 src/components/screencasts/Screencast.tsx delete mode 100644 src/components/screencasts/Screencasts.tsx delete mode 100644 src/components/screencasts/YouTubeEmbed.tsx delete mode 100644 src/components/self-hosted/Install.tsx delete mode 100644 src/pages/404.tsx delete mode 100644 src/pages/about.tsx delete mode 100644 src/pages/blog.tsx delete mode 100644 src/pages/careers.tsx delete mode 100644 src/pages/contact.tsx delete mode 100644 src/pages/education.tsx delete mode 100644 src/pages/enterprise-license.tsx delete mode 100644 src/pages/enterprise.tsx delete mode 100644 src/pages/extension-activation.tsx delete mode 100644 src/pages/extension-uninstall.tsx delete mode 100644 src/pages/features.tsx delete mode 100644 src/pages/github-student-developer-pack.tsx delete mode 100644 src/pages/github-teacher-toolbox.tsx delete mode 100644 src/pages/gitpod-vs-github-codespaces.tsx delete mode 100644 src/pages/imprint.tsx delete mode 100644 src/pages/media-kit.tsx delete mode 100644 src/pages/pricing.tsx delete mode 100644 src/pages/privacy.tsx delete mode 100644 src/pages/recruiting.tsx delete mode 100644 src/pages/screencasts.tsx delete mode 100644 src/pages/self-hosted-terms.tsx delete mode 100644 src/pages/self-hosted.tsx delete mode 100644 src/pages/terms.tsx delete mode 100644 src/pages/vendor.tsx delete mode 100644 src/styles/base.ts diff --git a/src/components/ActionCard.tsx b/src/components/ActionCard.tsx deleted file mode 100644 index 24ec37c8c..000000000 --- a/src/components/ActionCard.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import React from 'react' - -import styled from '@emotion/styled' -import { colors, borders } from '../styles/variables' -import link from './Link' - -const StyledActionCard = styled.section` - display: block; - max-width: 60rem; - margin: 8rem auto; - padding: 5rem 3rem; - text-align: center; - background: ${colors.offWhite}; - border: ${borders.light2}; - border-radius: 3px; - - h2 { - font-size: 2.8rem; - } - - p { - margin: -3rem 0 4rem; - } - - .btn-wrapper { - justify-content: center; - } -` - -interface Anchor { - text: string - href: string - subject?: string -} - -interface ActionCardProps { - title: string - text: string | JSX.Element - anchors: Anchor[] -} - - -const ActionCard: React.SFC = ({ title, text, anchors }) => ( - -

{title}

- {typeof text === 'string' ?

{text}

: text} -
- {link(anchors[0].href, anchors[0].text, anchors[0].subject)} - {anchors[1] ? link(anchors[1].href, anchors[1].text, anchors[1].subject) : null} -
-
-) - -export default ActionCard diff --git a/src/components/AnnouncementBanner.tsx b/src/components/AnnouncementBanner.tsx deleted file mode 100644 index 58dd71964..000000000 --- a/src/components/AnnouncementBanner.tsx +++ /dev/null @@ -1,178 +0,0 @@ -import React, { useRef, useEffect } from 'react' -import styled from '@emotion/styled' -import { Link } from 'gatsby' -import { colors, borders } from '../styles/variables' -import { jobs } from '../pages/careers' - -const AnnoucementBannerWrapper = styled.div` - position: relative; - background: ${colors.grey}; - transition: all 0.3s; - - button { - position: absolute; - top: 50%; - transform: translateY(-50%); - right: 2rem; - border: none; - border-radius: 50%; - - @media(max-width: 505px) { - display: none; - } - } - - .cross { - display: block; - height: 1.5rem; - width: 1.5rem; - fill: ${colors.white} - } -` - -const StyledAnnouncementBanner = styled(Link)` - color: ${colors.white}; - font-weight: 400; - border-bottom: ${borders.light}; - - &:hover, - &:focus { - color: ${colors.white}; - } - - @media (max-width: 600px) { - font-size: 85%; - } - - .text { - padding: 1rem 0; - font-weight: 600; - text-align: center; - font-size: 90%; - - @media(max-width: 320px) { - padding: .8rem; - } - } - - @media(max-width: 505px) { - .help { - display: none; - } - - .openings { - margin-left: .3rem; - } - } - - @media(min-width: 506px) { - .openings { - display: inline flex; - align-items: center; - background: ${colors.white}; - color: ${colors.grey}; - padding: .5rem 1.4rem; - border-radius: 10rem; - margin-left: 2rem; - } - } - - .arrow { - margin-left: .8rem; - - @media(max-width: 505px) { - height: .8rem; - margin-left: .2rem; - } - } - - .arrow-path { - stroke: #3D515E; - - @media(max-width: 505px) { - stroke: #fff; - } - } -`; - -function markWasDisplayed(): void { - if (typeof localStorage !== 'undefined') { - localStorage.setItem('wasDisplayed', 'true'); - } -} - -function wasDisplayed(): boolean { - if (typeof localStorage !== 'undefined') { - // @ts-ignore - return localStorage.getItem('wasDisplayed') - } - return false; -} - -const AnnoucementBanner = () => { - const bannerRef = useRef(null) - - const hideTheBanner = () => { - if (null !== bannerRef.current) { - bannerRef.current.style.transform = 'translateY(-100%)' - bannerRef.current.style.marginTop = `-${bannerRef.current.offsetHeight}px` - } - - // @ts-ignore - markWasDisplayed(true); - - setTimeout(() => { - if (null !== bannerRef.current) { - bannerRef.current.style.display = 'none' - } - }, 300) - } - - useEffect(() => { - const wasAlreadyDisplayed = wasDisplayed(); - if (wasAlreadyDisplayed) { - if (null !== bannerRef.current) { - bannerRef.current.style.display = 'none'; - } - } - }) - - return ( - - -
-
- Wanna help make Gitpod better? Join our team!  - - {jobs.length} -  Openings - - - - -
-
-
- -
- ) -} - -export default AnnoucementBanner diff --git a/src/components/Arrow.tsx b/src/components/Arrow.tsx deleted file mode 100644 index d159c5494..000000000 --- a/src/components/Arrow.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import React, { CSSProperties } from 'react' - -import styled from '@emotion/styled' -import { Global, css } from '@emotion/core' -import { colors } from '../styles/variables' - -const StyledArrow = styled.svg` - display: inline-block; - fill: ${colors.offWhite1}; - transition: all .2s; - height: 4.5rem; -` - -interface ArrrowProps { - styles?: CSSProperties -} - -const Arrow = ({ styles }: ArrrowProps) => ( - - - - -) - -export default Arrow diff --git a/src/components/BackToTopButton.tsx b/src/components/BackToTopButton.tsx deleted file mode 100644 index 424ff822a..000000000 --- a/src/components/BackToTopButton.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import React from 'react' - -import styled from '@emotion/styled' -import { shadows, colors } from '../styles/variables' -import Arrow from './Arrow' - -const StyledScrollToTopButton = styled.a` - position: fixed; - right: 4%; - bottom: 2rem; - display: flex; - justify-content: center; - align-items: center; - box-shadow: ${shadows.light1}; - border-radius: 50%; - z-index: 100; - transition: transform .3s, opacity .2s, background-color .2s ease-in-out; - background: ${colors.white}; -` - - -class ScrollToTopButton extends React.Component { - - state = { - shouldBeRendered: false - } - - componentDidMount() { - window.addEventListener('scroll', () => { - if ( window.scrollY > 800) { - this.setState({shouldBeRendered: true}) - } - else { - this.setState({shouldBeRendered: false}) - } - }) - } - - render() { - return ( - - - - ) - } -} - -export default ScrollToTopButton diff --git a/src/components/Banner.tsx b/src/components/Banner.tsx deleted file mode 100644 index 14c05acb2..000000000 --- a/src/components/Banner.tsx +++ /dev/null @@ -1,105 +0,0 @@ -import React from 'react' - -import styled from '@emotion/styled' -import link from './Link' - -const StyledBanner = styled.header` - /* ------------------------------------------- */ - /* ----- Banner ----- */ - /* ------------------------------------------- */ - - display: flex; - justify-content: space-between; - align-items: stretch; - padding: 14rem 0 10rem; - - @media (max-width: 960px) { - flex-direction: column-reverse; - padding: 5rem 0; - } - - @media (max-width: 960px) { - flex-direction: column-reverse; - padding: 1rem 0 5rem; - } - - @media (max-width: 640px) { - text-align: center; - } - - .banner__text { - flex: 0 0 55%; - } - - .para { - margin-top: 3rem; - - @media (min-width: 961px) { - max-width: 50rem; - } - } - - .btn { - margin: 5rem 2rem 2rem 0; - - @media (max-width: 960px) { - margin-top: 3rem; - } - } - - p + .btn { - margin-top: 3rem; - } - - - .img-container { - display: block; - flex: 0 0 30%; - - @media (min-width: 961px) { - margin-left: 3rem; - } - - @media (max-width: 960px) { - height: 20rem; - width: 100%; - height: 100%; - max-width: 30rem; - margin: 5rem 0; - } - - @media (max-width: 500px) { - max-width: 22rem; - } - } -` - -interface BannerProps { - subtitle: string - title: JSX.Element - paragraph?: string | JSX.Element - linkPath: string - linkText: string - img: JSX.Element -} - -const Banner: React.SFC = ({ subtitle, title, paragraph, linkPath, linkText, img, children }) => ( -
- -
-
-

{subtitle}

- {title} -
- {paragraph ?

{paragraph}

: null} - {link(linkPath, linkText, '', true, false)} - {children} -
-
- {img} -
-
-
-) - -export default Banner diff --git a/src/components/Bg.tsx b/src/components/Bg.tsx deleted file mode 100644 index 5ddc9995f..000000000 --- a/src/components/Bg.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import React from 'react' - -import styled from '@emotion/styled' -import { sizes } from '../styles/variables' - -const StyledBg = styled.img` - display: block; - width: 100%; - max-height: 40rem; - max-width: 100rem; - margin: 7rem auto; - - @media(max-width: ${sizes.breakpoints.md}) { - margin: 6rem auto; - } -` - -interface BgProps { - url: any - alt: string -} - -const Bg = ({url, alt}: BgProps) => ( -
- -
-) - - -export default Bg diff --git a/src/components/Circle.tsx b/src/components/Circle.tsx deleted file mode 100644 index ae645c1df..000000000 --- a/src/components/Circle.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react' - -const Circle: React.SFC<{}> = () => ( - - - -) - -export default Circle diff --git a/src/components/DropDown.tsx b/src/components/DropDown.tsx deleted file mode 100644 index f87810473..000000000 --- a/src/components/DropDown.tsx +++ /dev/null @@ -1,214 +0,0 @@ -import React from 'react' - -import styled from '@emotion/styled' -import ArrowDown from '../resources/arrow-down.svg' -import { colors, shadows, sizes } from '../styles/variables' -import { Link } from 'gatsby' -import ExternalLink from '../components/ExternalLink' - -const StyledDropDown = styled.div` - z-index: 900; - - @media(min-width: calc(${sizes.breakpoints.lg} + 1px)) { - position: relative; - } - - button { - cursor: pointer; - display: flex; - align-items: center; - border: none; - max-width: 20rem; - - &:hover, - &:focus { - color: ${colors.lightBlue}; - - &::before { - right: 0; - border-color: ${colors.lightBlue}; - } - } - } - - .arrow { - height: .8rem; - margin-left: 1rem; - @media(max-width: ${sizes.breakpoints.lg}) { - height: 1rem; - } - - @media(min-width: calc(${sizes.breakpoints.lg} + 1px)) { - display: none; - } - } - - ul { - display: flex; - flex-direction: column; - - @media(min-width: calc(${sizes.breakpoints.lg} + 1px)) { - position: absolute; - top: 2.5rem; - left: 7%; - width: 120%; - left: 50%; - transform: translateX(-50%); - min-width: 14rem; - padding: .5rem 0 1rem; - background: ${colors.offWhite}; - box-shadow: ${shadows.light}; - - &::before { - position: absolute; - top: 0; - content: ""; - display: block; - height: 130%; - width: 100%; - margin-top: -3rem; - } - } - } - - li { - @media(min-width: calc(${sizes.breakpoints.lg} + 1px)) { - margin: 1rem 0 0; - padding: 0 1.5rem; - font-size: 90%; - width: 100%; - border-bottom: none; - } - - @media(max-width: ${sizes.breakpoints.lg}) { - &:not(:last-child) { - margin-top: 1rem; - } - } - } - - .shown { - opacity: 1; - - @media(min-width: calc(${sizes.breakpoints.lg} + 1px)) { - background: ${colors.white}; - transform: scale(1) translate(-50%, 0); - } - } - - .hidden { - opacity: 0; - - @media(max-width: ${sizes.breakpoints.lg}) { - display: none; - } - - @media(min-width: calc(${sizes.breakpoints.lg} + 1px)) { - transform: scale(0) translate(-50%, -20rem); - } - } -` - -interface Anchor { - text: string - to: string - target?: boolean -} - -interface DropDownProps { - title: string - links: Anchor[] -} - -class DropDown extends React.Component { - - state = { - isRendered: false - } - - handleClick = () => { - this.setState({isRendered: !this.state.isRendered}) - } - - handleMouseEnter = () => { - this.setState({isRendered: true}) - } - - handleMouseLeave = () => { - this.setState({isRendered: false}) - } - - render () { - const { title, links } = this.props - const { isRendered } = this.state - - return ( - - - -
    - { - links.map(({text, to, target}, i) => - target ? - ( -
  • - -
  • - ) - : - ( -
  • - { - i == links.length - 1 ? - - {text} - - : - - {text} - - } -
  • - ) - ) - } - -
-
- ) - } -} - -export default DropDown diff --git a/src/components/ExternalLink.tsx b/src/components/ExternalLink.tsx deleted file mode 100644 index 7334c3658..000000000 --- a/src/components/ExternalLink.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import React from 'react' - -import styled from '@emotion/styled' -import { colors, sizes } from '../styles/variables' - -const StyledExternalLink = styled.a` - .external { - height: 1.5rem; - transform: translate(.6rem, .3rem); - transition: all .2s; - opacity: 0; - fill: ${colors.text}; - - @media(max-width: ${sizes.breakpoints.md}) { - opacity: 1; - } - } - - &:hover, - &:active { - .external { - opacity: 1; - fill: ${colors.link}; - } - } -` - -interface ExternalLinkProps { - text: string - href: string - tabIndex?: number - className?: string, - onBlur?: any -} - -const ExternalLink: React.SFC = ({href, text, tabIndex, className, onBlur}) => ( - - {text} - -) - -export default ExternalLink diff --git a/src/components/FeatureCard.tsx b/src/components/FeatureCard.tsx deleted file mode 100644 index 9e5a5d84a..000000000 --- a/src/components/FeatureCard.tsx +++ /dev/null @@ -1,338 +0,0 @@ -import React, { useState } from 'react' - -import styled from '@emotion/styled' -import { sizes } from '../styles/variables' -import Pattern from '../resources/pattern-2.jpg' -import IconTick from '../resources/icon-tick-2.svg' - -const Styled = styled.div<{ - direction?: string - flexDirectionColumnForImgContainer?: boolean - opposite?: boolean - hasFigFootnote?: boolean -}>` - display: flex; - justify-content: space-between; - position: relative; - - &:not(:last-child) { - margin-bottom: 18rem; - - @media (max-width: 500px) { - margin-bottom: 10rem; - } - } - - @media (max-width: ${sizes.breakpoints.sm}) { - text-align: center; - } - - [id] { - position: absolute; - top: -25vh; - } - - @media (max-width: 1140px) { - flex-direction: column; - max-width: 740px; - } - - h2 + p { - margin: 0; - } - - &:nth-of-type(2n) { - @media (min-width: 1141px) { - flex-direction: ${({ opposite }) => (opposite ? 'reverse' : 'row-reverse')}; - } - - @media (min-width: 1141px) { - .why-gitpod__img-container { - padding-left: 8rem; - &::before { - left: 0; - } - - &:hover::before { - transform: translateX(-5rem); - } - } - } - } - - &:nth-of-type(2n + 1) { - @media (min-width: 1141px) { - flex-direction: ${({ opposite }) => (opposite ? 'row-reverse' : 'reverse')}; - } - } - - .text { - display: flex; - flex-direction: column; - justify-content: center; - min-width: 28rem; - - @media (min-width: 1141px) { - flex: 0 0 38%; - } - - @media (max-width: 1150px) { - padding: 0 4rem; - } - - @media (max-width: ${sizes.breakpoints.md}) { - padding: 0 1rem; - } - - @media (max-width: ${sizes.breakpoints.sm}) { - padding: 0 1rem; - } - } - - img { - width: 100%; - max-height: 440px; - - @media (max-width: 1140px) { - max-height: 400px; - } - - @media (max-width: 500px) { - max-height: 300px; - } - } - - .img-container { - display: flex; - flex-direction: ${({ flexDirectionColumnForImgContainer }) => (flexDirectionColumnForImgContainer ? 'column' : '')}; - justify-content: center; - align-items: ${({ flexDirectionColumnForImgContainer }) => (flexDirectionColumnForImgContainer ? '' : 'center')}; - width: 100%; - position: relative; - - &::before { - content: ''; - position: absolute; - display: block; - height: 100%; - width: 100%; - background: url(${Pattern}); - background-size: cover; - background-repeat: repeat; - z-index: -1; - opacity: 0.1; - border-radius: 3px; - - @media (max-width: ${sizes.breakpoints.md}) { - width: calc(30vh + 100%); - transform: translateX(-20vw); - } - } - - @media (min-width: 1141px) { - padding-right: ${({ direction }) => (direction === 'right' ? '8rem' : '')}; - padding-left: ${({ direction }) => (!(direction === 'right') ? '8rem' : '')}; - min-height: 520px; - max-height: 500px; - flex: 0 0 52%; - - &::before { - left: ${({ direction }) => (direction === 'right' ? '' : 0)}; - right: ${({ direction }) => (!(direction === 'right') ? '' : 0)}; - width: 60vw; - } - } - - @media (max-width: 1140px) { - min-height: 240px; - padding: 5rem; - margin-bottom: ${({ hasFigFootnote }) => (hasFigFootnote ? '7rem' : '2.5rem')}; - - &::before { - left: 0; - right: 0; - } - } - - @media(max-width: 800px) { - margin-bottom: ${({ hasFigFootnote }) => (hasFigFootnote ? '10rem' : '2.5rem')}; - } - - @media (max-width: 560px) { - padding: 3rem; - } - - @media (max-width: 450px) { - padding: 2rem; - } - } - - @keyframes slideInLeft { - 100% { - transform: translateX(5rem); - } - } - - @keyframes slideInRight { - 100% { - transform: translateX(-5rem); - } - } - - .in-view::before { - @media (min-width: 1141px) { - animation: ${({ direction }) => (direction === 'right' ? 'slideInLeft' : 'slideInRight')} 0.6s cubic-bezier(0.16, 1, 0.3, 1) 1 normal - forwards; - } - } - - .buttons { - margin-top: 4rem; - - @media (max-width: 600px) { - margin-top: 1.5rem; - } - } - - ul { - margin-top: 5rem; - font-size: 1.9rem; - - @media (max-width: 500px) { - font-size: 1.6rem; - } - - @media (max-width: 320px) { - font-size: 1.5rem; - } - - @media (max-width: 290px) { - font-size: 1.4rem; - } - } - - li { - display: flex; - align-items: center; - &::before { - content: url(${IconTick}); - transform: scale(0.9); - display: block; - margin: 0 2rem 0 1rem; - left: -0.5rem; - - @media (max-width: 500px) { - margin: 0 1rem 0 0; - } - } - } - - p + .text-list { - margin-top: 2rem; - } - - .text-list { - margin-top: 0; - font-size: inherit; - - @media (max-width: ${sizes.breakpoints.sm}) { - text-align: left; - } - - li + li { - margin-top: 2rem; - } - } - - .footnote { - position: absolute; - margin-top: 4rem; - bottom: -5.5rem; - - @media (max-width: 454px) { - bottom: -5rem; - } - - @media(max-width: 420px) { - bottom: -6.5rem; - } - } - - img { - border-radius: 3px; - } -` - -export interface FeatureCardProps { - src?: string - alt?: string - Graphic?: any - title: string | JSX.Element - text?: string | JSX.Element - direction?: string - id?: string - featuresList?: string[] - Buttons?: any - icon?: string | JSX.Element - iconTitle?: string | JSX.Element - opposite?: boolean - Figure?: () => JSX.Element - figFootnote?: string | JSX.Element - footnote?: string | JSX.Element - gatsbyImage?: JSX.Element -} - -const FeatureCard = ({ - src, - alt, - Graphic, - title, - text, - direction, - id, - featuresList, - Buttons, - Figure, - opposite, - figFootnote, - footnote, - gatsbyImage -}: FeatureCardProps) => { - const [renderedGraphic, setRenderedGraphic] = useState('') - const hasFigFootnote = typeof figFootnote == 'string' || typeof figFootnote == 'object' - return ( - -
- {Graphic ? : null} - {src ? {alt} : null} - { - gatsbyImage ? gatsbyImage : null - } - {featuresList && featuresList.length ? ( -
    - {featuresList.map((feat, i) => ( -
  • {feat}
  • - ))} -
- ) : null} - {Figure ?
: null} - {figFootnote ?

{figFootnote}

: null} -
-
-

{title}

- {text ? text : null} - {Buttons ? : null} - {footnote ?

{footnote}

: null} -
- {id &&
} -
- ) -} - -export default FeatureCard diff --git a/src/components/FeatureCards.tsx b/src/components/FeatureCards.tsx deleted file mode 100644 index d1508deb4..000000000 --- a/src/components/FeatureCards.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import React from 'react' - -import styled from '@emotion/styled' -import { FeatureCardProps } from './FeatureCard' -import FeatureCard from './FeatureCard' - -const Styled = styled.section` - display: flex; - flex-direction: column; - padding-bottom: 5rem; - position: relative; -` - -const FeatureCards = ({ features, opposite }: { features: FeatureCardProps[]; opposite?: boolean }) => { - return ( - -
- {features.map((feature: FeatureCardProps, i) => { - let direction - if (opposite) { - direction = !(i % 2 == 0) ? 'right' : '' - } else { - direction = i % 2 == 0 ? 'right' : '' - } - return - })} -
-
- ) -} - -export default FeatureCards diff --git a/src/components/FeatureItem.tsx b/src/components/FeatureItem.tsx deleted file mode 100644 index b01407a5c..000000000 --- a/src/components/FeatureItem.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import React from 'react' - -import styled from '@emotion/styled' -import { borders, sizes } from '../styles/variables' - -const StyledFeatureItem = styled.div` - display: flex; - align-items: center; - flex: 0 0 45%; - max-width: 60rem; - margin: 0 auto; - margin-bottom: 5rem; - margin-top: 5rem; - - @media(max-width: ${sizes.breakpoints.lg}) { - flex-direction: column; - text-align: center; - } - - div { - @media(min-width: calc(${sizes.breakpoints.lg} + 1px)) { - border-left: ${borders.bold}; - margin-left: 3rem; - padding-left: 3rem; - } - } - - .h3 { - & + p { - margin: 0; - } - } - - p { - max-width: 320px; - } - - img { - max-width: 10rem; - max-height: 12rem; - - @media(min-width: calc(${sizes.breakpoints.lg} + 1px)) { - flex: 0 0 15%; - } - - @media(max-width: ${sizes.breakpoints.lg}) { - height: 10rem; - margin-bottom: 4rem; - } - } -` - -export interface FeatureItemProps { - title: string - text: string - img: string - alt?: string -} - -const FeatureItem = ({ title, text, img, alt }: FeatureItemProps) => ( - - {alt -
-

{title}

-

{text}

-
-
-) - -export default FeatureItem diff --git a/src/components/FeaturesSection.tsx b/src/components/FeaturesSection.tsx deleted file mode 100644 index c49a91890..000000000 --- a/src/components/FeaturesSection.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import React from 'react' - -import styled from '@emotion/styled' -import FeatureItem, { FeatureItemProps } from './FeatureItem' -import { sizes } from '../styles/variables' - -const StyledFeatures = styled.div` - display: flex; - flex-wrap: wrap; - justify-content: space-between; - - @media(max-width: ${sizes.breakpoints.lg}) { - margin-top: -5rem; - } - - @media(max-width: 900px) { - flex-direction: column; - - & > div { - max-width: 400px; - } - } -` - -const FeaturesSection = ({ features }: { features: FeatureItemProps[] }) => ( -
- - { - features.map( - (feature: FeatureItemProps, i) => - ) - } - -
-) - -export default FeaturesSection diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx deleted file mode 100644 index 5646a16c5..000000000 --- a/src/components/Footer.tsx +++ /dev/null @@ -1,226 +0,0 @@ -import React from 'react' - -import styled from '@emotion/styled' -import { colors } from '../styles/variables' -import { Link } from 'gatsby' -import ExternalLink from './ExternalLink' - -const StyledFooter = styled.footer` - background: ${colors.offWhite}; - padding: 7rem 0 4rem; - font-size: 1.4rem; - - .links { - display: flex; - justify-content: space-between; - flex-wrap: wrap; - max-width: 1000px; - margin: 0 auto; - - @media(min-width: 651px) { - ul { - width: 12.4rem; - } - } - - @media(max-width: 650px) { - justify-content: space-between; - - ul { - padding-bottom: 4rem; - border-bottom: 1px solid #ddd; - width: 48%; - text-align: center; - - &:not(:last-child) { - margin-bottom: 5rem; - } - - &:last-child { - transform: translateX(50%); - - img { - transform: translateX(1rem); - } - } - } - } - } - - li { - - &:not(:last-child) { - margin-bottom: 1.6rem; - } - - &:first-of-type { - font-size: 1.7rem; - font-weight: 600; - } - - } - - a { - color: ${colors.text}; - font-weight: 400; - transition: all .2s; - - &:hover, - &:focus { - color: ${colors.link}; - - svg { - fill: ${colors.text}; - } - - .mail { - stroke: ${colors.text}; - } - } - - } - - svg { - fill: #b5b5b5; - height: 2.9rem; - transition: all .2s; - } - - .contact { - li:not(:first-child) { - display: inline-block; - margin-left: 2rem; - transform: translateX(-2rem); - - @media(max-width: 650px) { - transform: translateX(-1rem); - } - } - } - - .info { - text-align: center; - margin: 5rem 0 0; - - p { - margin-bottom: 2rem; - } - } - -` - -const Footer: React.SFC<{}> = () => ( - -
-
-
    -
  • Gitpod
  • -
  • Features
  • -
  • Pricing
  • -
  • Blog
  • -
  • Self-Hosted
  • -
  • Gitpod vs GitHub
    Codespaces
  • -
  • Log In
  • -
-
    -
  • Solutions
  • -
  • Education
  • -
  • Recruiting
  • -
  • Vendor
  • -
-
    -
  • Developer
  • -
  • Getting started
  • -
  • Screencasts
  • -
  • Documentation
  • -
  • - -
  • -
  • - -
  • -
-
    -
  • Company
  • -
  • About
  • -
  • - Careers -
  • -
  • Media Kit
  • -
- -
-
-

Copyright © Gitpod

-
Imprint | Terms of Service | Privacy Policy
-
-
-
-) - -export default Footer diff --git a/src/components/ImageProvider.tsx b/src/components/ImageProvider.tsx deleted file mode 100644 index 781590f0b..000000000 --- a/src/components/ImageProvider.tsx +++ /dev/null @@ -1,96 +0,0 @@ -import React, { CSSProperties } from 'react' -import { graphql, useStaticQuery } from 'gatsby' -import Img from 'gatsby-image' - -import styled from '@emotion/styled' - -const StyledImageProvider = styled.div` - height: 100%; - width: 100%; -` - -interface ImageProviderProps { - fileName?: string - alt: string - wrapperStyles?: CSSProperties - imageStyles?: CSSProperties - isNotRelativeToGatsbyImgWrapper?: boolean - IsAPricingBoxIcon?: boolean - isBlurred?: boolean - fluidData?: any - providerStyles?: CSSProperties - className?: string - placeholderStyles?: CSSProperties -} - -const ImageProvider = ({ - fileName, - alt, - wrapperStyles, - imageStyles, - isNotRelativeToGatsbyImgWrapper, - IsAPricingBoxIcon, - isBlurred, - fluidData, - providerStyles, - className, - placeholderStyles -}: ImageProviderProps) => { - const { allImageSharp } = useStaticQuery(graphql` - query { - allImageSharp { - nodes { - fluid(traceSVG: { color: "#0b2144" }) { - originalName - tracedSVG - src - } - blurredFluid: fluid { - originalName - ...GatsbyImageSharpFluid - } - } - } - } - `) - - let resultingFluid - - if(!fluidData) { - const found = allImageSharp.nodes.find((n: any) => { - return n.fluid.originalName === fileName - }) - - resultingFluid = isBlurred ? found.blurredFluid : found.fluid - } - - const imageStylesIfIsNotRelativeToGatsbyImgWrapper = { - top: '50%', - transform: 'translateY(-50%) scale(.93)', - }; - - let position; - - if (isNotRelativeToGatsbyImgWrapper) { - position = 'none' - } else if (IsAPricingBoxIcon) { - position = 'static' - } else { - position = 'relative' - } - - return ( - - {alt} - - ) -} - -export default ImageProvider; diff --git a/src/components/InfoCard.tsx b/src/components/InfoCard.tsx deleted file mode 100644 index 3bb945ce4..000000000 --- a/src/components/InfoCard.tsx +++ /dev/null @@ -1,90 +0,0 @@ -import React from 'react' - -import Twitter from '../resources/twitter.svg' -import Mail from '../resources/mail.svg' -import Discourse from '../resources/discourse.svg' -import { Link } from 'gatsby' -import styled from '@emotion/styled' -import { sizes } from '../styles/variables' - -const StyledInfoCard = styled.section` - /* --------------------------------------- */ - /* ----- Info ----- */ - /* --------------------------------------- */ - - section { - padding-top: 0; - } - - .h3 + p { - margin: 0; - } - - .info { - @media(min-width: 831px) { - flex: 0 0 44%; - - &:last-of-type { - margin-left: auto; - } - } - - @media(max-width: 830px) { - &:not(:last-of-type) { - margin-bottom: 5rem; - } - } - - &-container { - display: flex; - - @media(max-width: 830px) { - flex-direction: column; - } - } - - p:last-of-type { - margin-bottom: 2rem; - } - - a { - &:not(:last-of-type) { - margin-right: 2rem; - } - } - - @media(max-width: ${sizes.breakpoints.md}) { - &:not(:last-child) { - margin-bottom: 8rem; - } - } - } -` - -const InfoCard: React.SFC<{}> = () => ( - -
-
-

Getting Started with Gitpod

-

You can simply start coding in Gitpod by prefixing any GitHub URL with gitpod.io/#

-

For a more detailed description of Gitpod and its IDE, Theia, please have a look at our documentation.

- Gitpod Docs -
-
-

Do You Need Help?

-

If you have any question, issue or feedback, please get in touch. We love to hear your feedback and help you out.

- - Mail Logo - - - Discourse Logo - - - Twitter Logo - -
-
-
-) - -export default InfoCard diff --git a/src/components/Link.tsx b/src/components/Link.tsx deleted file mode 100644 index 7743b0bbb..000000000 --- a/src/components/Link.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import { Link } from 'gatsby' - -const link = (href: string, text: string, subject = '', primary: boolean = false, normal: boolean = true) => { - if (href.indexOf('://') !== -1) { - return ( - {text} - - ) - } else { - return ( - - {text} - - ) - } -} - -export default link diff --git a/src/components/Linkset.tsx b/src/components/Linkset.tsx deleted file mode 100644 index 66f735701..000000000 --- a/src/components/Linkset.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import React from 'react' - -import styled from '@emotion/styled' -import { colors } from '../styles/variables' -import { Link } from 'gatsby' - -const StyledLinkSet = styled.div` - - &:not(:last-child) { - margin-bottom: 2rem; - } - - a { - display: inline-block; - font-size: 1.5rem; - border-left: solid 1px transparent; - color: ${colors.text}; - font-weight: 400; - - &:hover { - color: ${colors.lightBlue}; - } - - &.active { - color: ${colors.lightBlue}; - border-left: solid 1px ${colors.lightBlue}; - } - - &.caption { - margin-bottom: .4rem; - font-weight: 400; - font-size: 1.7rem; - padding-left: 1.0rem; - } - - &:not(.caption) { - padding-left: 1.8rem; - } - - } -` - -interface LinkSetProps { - caption: string - path: string -} - -class Linkset extends React.Component { - - render() { - - const { caption, path, children } = this.props - - return ( - -
  • - - {caption} - -
  • - {children} -
    - ) - } -} - -export default Linkset diff --git a/src/components/MinimalFooter.tsx b/src/components/MinimalFooter.tsx deleted file mode 100644 index 282d2b69c..000000000 --- a/src/components/MinimalFooter.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import React from 'react' - -import styled from '@emotion/styled' -import { Link } from 'gatsby' -import { colors } from '../styles/variables' - -const StyledMinimalFooter = styled.footer` - padding: 5rem 0 6rem; - text-align: center; - color: ${colors.lightGrey}; - background: ${colors.offWhite}; - - p { - margin-bottom: 2rem; - } - - a, - .link { - color: inherit; - font-weight: 400; - } - - .link { - padding: 0 1rem; - - &:not(:last-child) { - border-right: 1px solid; - } - } -` - -const MinimalFooter = () => ( - -
    -

    Copyright © Gitpod

    -
    - Imprint - Terms of Service - Privacy Policy -
    -
    -
    -) - -export default MinimalFooter diff --git a/src/components/MoreInfo.tsx b/src/components/MoreInfo.tsx deleted file mode 100644 index 5eb50037b..000000000 --- a/src/components/MoreInfo.tsx +++ /dev/null @@ -1,118 +0,0 @@ -import React from 'react' - -import styled from '@emotion/styled' -import { borders, sizes } from '../styles/variables' -import { Link } from 'gatsby' -import MapGrey from '../resources/map-grey.svg' - -const StyledMoreInfo = styled.div<{negativeSpaceTop?: string}>` - @media(min-width: calc(${sizes.breakpoints.md} + 1px)) { - margin-top: ${({negativeSpaceTop}) => negativeSpaceTop }; - } -` - -const StyledPricingLinks = styled.section` - max-width: 850px; - display: flex; - align-items: center; - margin: 0 auto; - - @media (max-width: ${sizes.breakpoints.md}) { - padding-bottom: 8rem; - } - - @media (max-width: 720px) { - flex-direction: column; - text-align: center; - max-width: 550px; - - .btn-wrapper { - justify-content: center; - } - } - - img { - flex: 1; - height: 12rem; - - @media (max-width: 720px) { - max-width: 10rem; - margin-bottom: 2rem; - } - } - - div { - flex: 0 0 75%; - padding-left: 4rem; - border-left: ${borders.bold}; - - @media (max-width: 720px) { - border-left: none; - padding-left: 0; - } - } - - h2 { - margin-bottom: 5rem; - } - - h3 { - font-size: 110%; - margin-bottom: 0.5rem; - } -` - -export interface PricingLinksProps { - img?: JSX.Element - title?: JSX.Element - text?: JSX.Element - links?: JSX.Element - backgroundShouldBeWhite?: boolean - negativeSpaceTop?: string -} - -const PricingLinks = ({ img, title, text, links, backgroundShouldBeWhite, negativeSpaceTop }: PricingLinksProps) => { - let Img = img - let Title = title - let Text = text - let Links = links - if (!(img && title && text && links)) { - Img = Explore Gitpod - Title = ( - <> - Explore Gitpod - - ) - Text = <>Learn about collaboration, workspace sharing, reproducible snapshots, supported language features, and much more. - Links = ( - <> - - See Features - - - See Blog - - - ) - } - return ( - -
    - - {Img} -
    -

    {Title}

    -

    {Text}

    - {Links} -
    -
    -
    -
    - ) -} - -export default PricingLinks diff --git a/src/components/Nav.tsx b/src/components/Nav.tsx deleted file mode 100644 index d35628a1b..000000000 --- a/src/components/Nav.tsx +++ /dev/null @@ -1,340 +0,0 @@ -import React, { useState, useEffect } from 'react' - -import styled from '@emotion/styled' -import { Link } from 'gatsby' -import GitpodLogoDark from '../resources/gitpod-logo-dark.svg' -import { colors, sizes, borders } from '../styles/variables' -import { Global, css } from '@emotion/core' -import { getBrowser } from '../utils/helpers' -import { getBrowserString } from './gitpod-vs-codespaces/Difference' - -const StyledNav = styled.nav` - display: flex; - justify-content: space-between; - align-items: center; - padding: 4rem 0; - position: relative; - - @media(max-width: 900px) { - font-size: 110%; - display: block; - } - - @media(max-width: ${sizes.breakpoints.md}) { - font-size: 100%; - } - - @media(max-width: ${sizes.breakpoints.sm}) { - font-size: 95%; - display: block; - } - - @media(max-width: ${sizes.breakpoints.md}) { - padding: 1rem; - } - - img { - height: 4.2rem; - transform: scale(.97); - } - - .nav__items { - display: flex; - align-items: center; - - @media(max-width: 900px) { - flex-direction: column; - width: 100%; - padding-top: 8rem; - min-height: 95vh; - align-items: center; - z-index: 1; - } - - @media(max-width: ${sizes.breakpoints.md}) { - min-height: 97vh; - } - } - - @media(max-width: 900px) { - .navIsRendered { - display: flex; - } - - .navIsNotRendered { - display: none; - } - } - - .nav__item { - cursor: pointer; - - @media(min-width: 901px) { - &:not(:last-child) { - margin-right: 4rem; - } - } - - @media(max-width: 900px) { - width: 100%; - padding: 2rem 0; - - &:not(:last-child) { - border-bottom: ${borders.light1}; - } - } - - &:last-child { - margin-left: -1rem; - } - } - - .btns { - display: flex; - align-items: center; - - @media(min-width: 901px) { - display: none; - } - - a { - margin-right: 1rem; - transform: translateY(-1px); - - @media(min-width: calc(${sizes.breakpoints.md} + 1px)) { - margin-right: 2rem; - } - } - } - - .nav__burger-container { - display: flex; - justify-content: space-between; - } - - .nav__btn { - position: relative; - cursor: pointer; - border: none; - z-index: 10000; - width: 4rem; - height: 4rem; - transition: all .2s; - - &:hover { - svg { - stroke: ${colors.lightBlue}; - fill: ${colors.lightBlue}; - } - } - - svg { - position: absolute; - top: 0; - right: 0; - width: 100%; - height: 100%; - transition: all .3s cubic-bezier(.25,.75,.5,1.25); - fill: ${colors.text}; - stroke: ${colors.text}; - - &#hamburger { - - @media(max-width: ${sizes.breakpoints.md}) { - transform: scale(.7); - } - - @media(min-width: calc(${sizes.breakpoints.md} + 1px)) { - transform: scale(.8); - } - } - - &#multiply { - transform: scale(.7); - - @media(max-width: ${sizes.breakpoints.md}) { - transform: scale(.65); - } - } - - @media(max-width: ${sizes.breakpoints.md}) { - transform: scale(.7); - } - } - - @media(min-width: 901px) { - display: none; - } - - &:hover, - &:focus { - transform: scale(1.05); - } - } - - - @media(max-width: 900px) { - .shown { - opacity: 1; - transform: scale(1) translateX(0); - max-width: ${sizes.grid.maxWidth}; - } - - .hiden { - opacity: .8; - transform: scale(1.1) translateX(-100vw); - } - - .container { - max-width: ${sizes.grid.maxWidth}; - width: 100%; - margin: 0 auto; - - @media(max-width: ${sizes.breakpoints.sm}) { - padding: 0 1rem; - } - } - - .is-shown { - opacity: 1; - - &--multiply { - transform: rotate(-90deg); - } - } - - .is-hidden { - opacity: 0; - } - } -` - -const Nav = ({ isAFlowPage, showReInstallExtensionButton }: { isAFlowPage?: boolean; showReInstallExtensionButton?: boolean }) => { - const [isNavRendered, setIsNavRendered] = useState(false) - const [browser, setBrowser] = useState() - - const unLock = () => { - if (window.innerWidth >= 900) { - setIsNavRendered(false) - } - } - - useEffect(() => { - window.addEventListener('resize', unLock) - let usersBrowser = getBrowser(window.navigator.userAgent) - setBrowser(getBrowserString(usersBrowser)) - - return () => { - window.removeEventListener('resize', unLock) - } - }) - - const toggleNavigation = () => { - setIsNavRendered(!isNavRendered) - } - - return ( -
    - -
    - -
    - Gitpod Logo - { - !isAFlowPage ?
    - Log In -
    - -
    -
    : null - } - { - showReInstallExtensionButton ? - Reinstall Extension - : null - } -
    - - - { - !isAFlowPage ? ( -
      -
    • - - Features - -
    • -
    • - - Screencasts - -
    • -
    • - - Docs - -
    • -
    • - - Blog - -
    • -
    • - - Pricing - -
    • -
    • - - Log In - -
    • -
    - ) : null - } - -
    -
    -
    - ) -} - -export default Nav diff --git a/src/components/NewsletterForm.tsx b/src/components/NewsletterForm.tsx deleted file mode 100644 index 296753959..000000000 --- a/src/components/NewsletterForm.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import React from 'react' - -import styled from '@emotion/styled' -import { sizes, borders } from '../styles/variables' - -const StyledNewsletterForm = styled.section` - /* ------------------------------------------- */ - /* ----- Section Newsletter ----- */ - /* ------------------------------------------- */ - - .newsletter { - padding: 12rem 0; - - @media(max-width: ${sizes.breakpoints.md}) { - padding: 8rem 0; - } - - &__input { - margin: 0 1.5rem 3rem 0; - padding: 1.2rem 2.5rem; - border: ${borders.light1}; - border-radius: 100px; - - @media(max-width: ${sizes.breakpoints.sm}) { - width: 100%; - } - } - - &__text { - margin: -3rem 0 3rem; - } - } -` - -const NewsletterForm: React.SFC<{}> = () => ( -
    - -

    Never Miss a Blog Post

    -

    Sign up for the newsletter and stay informs about the latest news from Gitpod and its community.

    -
    { - e.preventDefault() - }}> - - -
    -
    -
    -) - -export default NewsletterForm diff --git a/src/components/Offers.tsx b/src/components/Offers.tsx deleted file mode 100644 index de75a5d36..000000000 --- a/src/components/Offers.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import React from 'react' - -import PricingBox, { PricingBoxProps } from '../components/PricingBox' -import styled from '@emotion/styled' -import { sizes } from '../styles/variables' - -const StyledOffers = styled.section` - /* --------------------------------------- */ - /* ----- Offers ----- */ - /* --------------------------------------- */ - - .offers { - display: flex; - justify-content: center; - margin-top: 15rem; - - @media(max-width: ${sizes.breakpoints.md}) { - flex-direction: column; - align-items: center; - } - } - - .btn-container { - margin: 5rem 0; - text-align: center; - } - - @media(max-width: ${sizes.breakpoints.md}) { - h2 { - margin-bottom: 5rem; - } - - br { - display: none; - } - } - -` - -interface OffersProps { - title: string - offers: PricingBoxProps[], - para: JSX.Element -} - - -const Offers: React.SFC = ({ offers, title, para }) => ( - -
    -
    -

    {title}

    - { para } -
    -
    - { - offers.map( - (offer, i) => ( - - ) - ) - } -
    -
    -
    -) - - -export default Offers diff --git a/src/components/OnBoarding.tsx b/src/components/OnBoarding.tsx deleted file mode 100644 index be58168e1..000000000 --- a/src/components/OnBoarding.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react' - -import styled from '@emotion/styled' -import { sizes } from '../styles/variables' - -const StyledOnBoarding = styled.section` - text-align: center; - - @media(max-width: ${sizes.breakpoints.md}) { - padding: 7rem 0; - } -` - -const OnBoarding: React.SFC<{link: string}> = ({ link }) => ( - -

    Would You Like to Have an Onboarding Session?

    - Schedule a Call -
    -) - -export default OnBoarding diff --git a/src/components/PopOver.tsx b/src/components/PopOver.tsx deleted file mode 100644 index ddbad3b23..000000000 --- a/src/components/PopOver.tsx +++ /dev/null @@ -1,117 +0,0 @@ -import React from 'react' - -import styled from '@emotion/styled' -import { colors, sizes } from '../styles/variables' - -const StyledDescripion = styled.span` - position: relative; - - button { - position: relative; - display: inline-block; - height: 1.4rem; - width: 1.4rem; - font-weight: 600; - font-size: 1rem; - border: none; - color: ${colors.white}; - background: ${colors.offWhite1}; - border-radius: 50%; - - @media(max-width: ${sizes.breakpoints.md}) { - transform: scale(1.3); - margin-left: 1rem; - } - - @media(min-width: calc(${sizes.breakpoints.lg} + 1px)) { - transform: translateX(1rem); - } - - &::after { - content: ""; - position: absolute; - top: 0; - left: -25%; - display: block; - height: 3.5rem; - width: 3.5rem; - } - } - - .description__text { - padding: .5rem .5rem .5rem 1.5rem; - font-size: 1.2rem; - font-weight: 400; - color: ${colors.textDark}; - background: ${colors.offWhite2}; - z-index: 1000; - border-radius: 3px; - - @media(max-width: 1080px) { - position: absolute; - right: -5rem; - top: 2.4rem; - min-width: 18rem; - z-index: 9999999999; - } - - @media(min-width: 1081px) { - position: absolute; - top: 0; - left: 3rem; - min-width: 19rem; - } - } - - .bottom { - font-weight: 400; - right: -10rem; - top: 2.4rem; - min-width: 18rem; - z-index: 9999999999; - transform: translateX(-16.5rem); - - @media(max-width: 1081px) { - transform: translateX(-7.5rem); - } - } -` - -class Description extends React.Component<{ description: string | JSX.Element; textPosition?: string }, {}> { - state = { - isRendered: false - } - - handleClick = () => { - this.setState({ isRendered: !this.state.isRendered }) - } - - handleMouseEnter = () => { - this.setState({ isRendered: true }) - } - - handleMouseLeave = () => { - this.setState({ isRendered: false }) - } - - render() { - const { isRendered } = this.state - const { description } = this.props - const positionBottom = this.props.textPosition === 'bottom' - - return ( - - - {isRendered ?
    {description}
    : null} -
    - ) - } -} - -export default Description diff --git a/src/components/PricingBox.tsx b/src/components/PricingBox.tsx deleted file mode 100644 index a45553daa..000000000 --- a/src/components/PricingBox.tsx +++ /dev/null @@ -1,362 +0,0 @@ -import React from 'react' - -import styled from '@emotion/styled' -import { colors, sizes } from '../styles/variables' -import IconTick from '../resources/icon-tick.svg' - -interface StyledPricingBoxProps { - transform?: string - background?: boolean - hideButton?: boolean - banner?: string - bannerColor?: string - btnBackground?: boolean - isTitleOutside?: boolean -} - -const StyledPricingBox = styled.div` - position: relative; - margin: 2rem 1rem; - padding: 3rem 2.8rem; - font-size: 95%; - min-height: ${({ isTitleOutside }) => (isTitleOutside ? '42rem' : '51rem')}; - min-width: 20rem; - max-width: 26rem; - width: 25%; - text-align: center; - color: ${({ background }) => (background ? colors.white : null)}; - background: ${({ background }) => (background ? 'url("https://www.gitpod.io/galaxy.jpg")' : colors.white)}; - background-size: ${({ background }) => (background ? 'cover' : null)}; - background-position: ${({ background }) => (background ? 'left' : null)}; - border: 1px solid ${colors.offWhite2}; - background-color: ${colors.offWhite}; - border-radius: 3px; - margin-top: ${({ isTitleOutside }) => (isTitleOutside ? '6rem' : '2rem')}; - z-index: ${({ isTitleOutside }) => (isTitleOutside ? '1000' : 'none')};; - - @media(min-width: calc(${sizes.breakpoints.md} + 1px)) { - z-index: ${({ transform }) => (transform ? '1' : null)}; - } - - @media(min-width: calc(${sizes.breakpoints.lg} + 1px)) { - transform: ${({ transform }) => (transform ? transform : null)}; - } - - @media(max-width: ${sizes.breakpoints.lg}) { - min-height: 50rem; - padding: 3rem 2rem; - margin-bottom: 5rem; - min-height: ${({ isTitleOutside }) => (isTitleOutside ? '41rem' : '51rem')}; - } - - @media(max-width: 1096px) { - min-width: 25rem; - } - - @media(max-width: 860px) { - margin-top: ${({ banner }) => (banner ? '4rem' : '')}; - } - - @media(max-width: ${sizes.breakpoints.md}) { - min-height: ${({ isTitleOutside }) => (isTitleOutside ? '40rem' : '49rem')}; - min-width: 30rem; - padding: 2rem 3rem; - } - - @media(max-width: 650px) { - display: flex; - flex-direction: column; - align-items: center; - min-height: 0; - } - - @media(max-width: ${sizes.breakpoints.sm}) { - min-width: 25rem; - min-height: auto; - } - - @media(max-width: 320px) { - min-width: 25rem; - } - - > *:not(h4) { - color: inherit; - } - - .h4 { - font-size: 1.8rem; - margin-bottom: 0; - color: ${colors.textDark}; - margin: ${({ isTitleOutside }) => (isTitleOutside ? '-7rem 0 6rem' : '')} - } - - img, object, .g-image { - display: inline-block; - margin: 3rem 0 1rem; - height: 8rem; - width: 8rem; - - display: ${({ isTitleOutside }) => (isTitleOutside ? 'none' : '')}; - - @media(max-width: ${sizes.breakpoints.md}) { - margin: 1.5rem 0 1rem; - } - } - - .g-image { - position: relative; - width: 7rem; - height: 7rem; - margin: 0 0 5rem; - } - - .price { - font-size: 2.1rem; - font-weight: 600; - - span { - font-size: 80%; - font-weight: 400; - } - } - - .duration { - font-size: 1.3rem; - font-weight: 600; - margin: .8rem 0 1.5rem; - } - - .feature { - margin-top: 8rem; - } - - ul { - display: inline-block; - } - - li { - position: relative; - display: block; - font-size: 1.5rem; - text-align: left; - font-size: 85%; - padding-left: 1rem; - - &::before { - content: url(${IconTick}); - position: absolute; - left: -.5rem; - } - - &:not(:last-child) { - margin-bottom: .7rem; - } - } - - .info { - font-size: 95%; - border-top: 1px solid #ddd; - padding-top: 1rem; - } - - @media(min-width: calc(${sizes.breakpoints.lg} + 1px)) { - .span { - display: flex; - justify-content: space-between; - } - } - - .links-container { - display: flex; - flex-direction: column; - justify-content: space-between; - align-items: center; - z-index: 9; - - @media(min-width: calc(${sizes.breakpoints.sm} + 1px)) { - position: absolute; - left: 50%; - width: 100%; - bottom: 1rem; - transform: translateX(-50%); - } - - @media(max-width: ${sizes.breakpoints.sm}) { - margin: 3rem 0 1rem; - } - - @media(min-width: calc(${sizes.breakpoints.lg} + 1px)) { - bottom: ${({ transform }) => (transform ? '2rem' : '1.5rem')}; - } - - @media(max-width: 650px) { - position: static; - transform: none; - margin-top: 5rem; - } - } - - .text { - width: 100%; - opacity: .7; - font-size: 90%; - - @media(min-width: calc(${sizes.breakpoints.sm} + 1px)) { - padding: 0 1.5rem; - } - } - - .is-hidden { - display: ${({ hideButton }) => (hideButton ? 'none' : '')}; - } - - .banner { - position: absolute; - left: 0; - bottom: 100%; - width: 100%; - background: ${colors.offWhite2}; - border-top-left-radius: 3px; - border-top-right-radius: 3px; - - p { - width: 20ch; - margin: 0 auto; - padding: .8rem 0; - color: ${({ bannerColor }) => (bannerColor ? bannerColor : '')}; - font-size: 90%; - font-weight: 600; - } - } - - .blue-on-hover { - color: ${colors.text}; - border: 2px solid #fff; - - &:hover { - color: ${colors.white}; - border: 2px solid ${colors.lightBlue}; - } - } - - .btn { - background: ${({ btnBackground }) => (btnBackground ? colors.link : '')}; - color: ${({ btnBackground }) => (btnBackground ? colors.white : '')}; - border-color: ${({ btnBackground }) => (btnBackground ? colors.link : '')}; - - &:hover { - background: ${({ btnBackground }) => (btnBackground ? colors.lightBlue : '')}; - border-color: ${({ btnBackground }) => (btnBackground ? colors.lightBlue : '')}; - } - } - - .sub-action { - font-size: 90%; - margin-top: .5rem; - padding-bottom: 0; - } - - .spacer { - height: 2.5rem; - } -` - -export interface PricingBoxProps { - title: string - img?: HTMLImageElement - gatsbyImage?: JSX.Element - price?: string | JSX.Element - duration?: string - feature?: string | JSX.Element - features?: (string | JSX.Element)[] - transform?: string - background?: boolean - btnText?: string - btnBackground?: boolean - link?: string - hideButton?: true - btn?: JSX.Element - text?: string - banner?: string - bannerColor?: string - subAction?: JSX.Element - isTitleOutside?: boolean - info?: string - areFeaturesBold?: boolean - boldFeaturesCount?: number - perUserMonth?: boolean - headingLevel?: 'h2' | 'h3' -} - -const PricingBox: React.SFC = ({ - title, - img, - price, - duration, - feature, - features, - btnText, - btnBackground, - transform, - background, - link, - hideButton, - btn, - text, - banner, - bannerColor, - subAction, - isTitleOutside, - info, - areFeaturesBold, - boldFeaturesCount = 0, - perUserMonth, - headingLevel, - gatsbyImage -}) => ( - - { - headingLevel === 'h3' ?

    {title}

    : headingLevel === 'h2' ?

    {title}

    :

    {title}

    - } - {img ? img : null} - {gatsbyImage ?
    {gatsbyImage}
    : null} - {price ?
    {price}
    : null} - { perUserMonth ?
    per user/month
    : null } - {duration ?
    {duration}
    : null} - {feature ?
    {feature}
    : null} - {features && features.length ? ( -
      - {features.map((f, i) => ( -
    • - {f} -
    • - ))} -
    - ) : null} - {info ?

    {info}

    : null} -
    - - {btnText ? btnText : 'Start for Free'} - -
    - {text ?

    {text}

    : null} - {btn ? btn : null} - {subAction ? subAction : } -
    - {banner ? ( -
    -

    {banner}

    -
    - ) : null} -
    -) - -export default PricingBox diff --git a/src/components/PricingTable.tsx b/src/components/PricingTable.tsx deleted file mode 100644 index db982683b..000000000 --- a/src/components/PricingTable.tsx +++ /dev/null @@ -1,183 +0,0 @@ -import React from 'react' - -import styled from '@emotion/styled' -import { colors, sizes } from '../styles/variables' - -const StyledPricingTable = styled.section<{ enableScrollat1080?: boolean, disableMarginBottom?: boolean }>` - padding-bottom: 0; - margin-bottom: ${({disableMarginBottom}) => disableMarginBottom ? 0 : '5rem'}; - - .table-container { - @media (max-width: 1180px) { - overflow-x: ${({ enableScrollat1080: containerMaxWidthLarge }) => (containerMaxWidthLarge ? 'scroll' : '')}; - } - } - - .comparison { - h2 { - font-size: 3rem; - margin-bottom: -2.5rem; - font-weight: 600; - } - - td, - th { - border: none; - } - - .header { - th { - background: ${colors.offWhite}; - } - } - - th { - background: none; - } - - .th { - &__title { - min-width: 26rem; - - @media (max-width: 1160px) { - min-width: 21rem; - } - - @media (max-width: 450px) { - min-width: 18rem; - } - } - } - - tr { - background: ${colors.offWhite}; - - th { - background: ${colors.white}; - font-weight: 600; - } - } - } - - th { - span { - display: block; - } - - img { - height: 2.2rem; - width: 3rem; - transform: translateY(5px); - margin-right: 2rem; - - @media (max-width: 1160px) { - margin-right: 0.5rem; - } - - @media (max-width: ${sizes.breakpoints.md}) { - height: 1.7rem; - transform: translateY(3px); - margin-right: 0.5rem; - } - - @media (max-width: ${sizes.breakpoints.md}) { - height: 1.5rem; - } - } - } - - .header { - th { - text-align: center; - font-weight: 600; - font-size: 2rem; - padding: 3rem; - width: 25%; - - @media (max-width: ${sizes.breakpoints.md}) { - padding: 2rem; - } - - @media (max-width: ${sizes.breakpoints.md}) { - padding: 1.5rem; - } - - span { - font-size: 1.6rem; - font-weight: 400; - - @media (max-width: ${sizes.breakpoints.md}) { - font-size: 1.4rem; - } - - @media (max-width: ${sizes.breakpoints.md}) { - font-size: 1.2rem; - } - - span { - display: inline; - color: ${colors.link}; - font-weight: 600; - } - } - } - } - - .buttons { - th, - td { - background: none; - border: none; - } - - .btn { - margin-top: 2rem; - } - } - - .description { - display: inline-block; - transform: translateY(-0.1rem); - - &__text { - position: absolute; - top: 0; - left: 3rem; - width: 25rem; - min-width: 15rem; - - @media (max-width: ${sizes.breakpoints.md}) { - width: 18rem; - } - } - } - - .disclaimer { - padding: 3rem 0; - background: ${colors.white}; - } -` - -interface PricingTableProps { - title: string | JSX.Element - paragraph?: JSX.Element | string - id?: string - rows?: number - styles?: React.CSSProperties - containerMaxWidthLarge?: boolean - disableMarginBottom?: boolean -} - -const PricingTable: React.SFC = ({ title, paragraph, children, id, rows, styles, containerMaxWidthLarge, disableMarginBottom }) => ( -
    - -

    {title}

    -

    {paragraph}

    -
    - {children}
    -
    -
    -
    -) - -export default PricingTable diff --git a/src/components/Quote.tsx b/src/components/Quote.tsx deleted file mode 100644 index 495dfde50..000000000 --- a/src/components/Quote.tsx +++ /dev/null @@ -1,85 +0,0 @@ -import React from 'react' - -import styled from '@emotion/styled' -import QuoteIcon from '../resources/quote.svg' -import { colors, sizes } from '../styles/variables' - -const StyledQuote = styled.section` - padding: 12rem 0; - margin: 0 auto; - - @media(max-width: ${sizes.breakpoints.md}) { - padding: 8rem 0; - } - - .h4 { - position: relative; - display: flex; - justify-content: center; - align-items: center; - text-align: center; - color: ${colors.text}; - font-size: 2.5rem; - font-weight: 400; - - @media(max-width: ${sizes.breakpoints.sm}) { - font-size: 2.3rem; - } - - span { - max-width: 80rem; - - @media(max-width: 560px) { - padding: 0 1rem; - } - - @media(max-width: ${sizes.breakpoints.sm}) { - width: 100%; - } - } - - object { - height: 7rem; - - &:first-of-type { - transform: rotate(-180deg); - margin-right: 3rem; - } - - &:last-of-type { - margin-left: 3rem; - } - - @media(max-width: ${sizes.breakpoints.md}) { - height: 5rem; - margin: 0 2rem; - } - - @media(max-width: 580px) { - display: none; - } - } - - i { - @media(min-width: 581px) { - display: none; - } - } - } -` - -interface QuoteProps { - title: string | JSX.Element -} - -const Quote: React.SFC = ({title}) => ( - -

    - - {title} - - - -) - -export default Quote diff --git a/src/components/SubmissionSucess.tsx b/src/components/SubmissionSucess.tsx deleted file mode 100644 index 7e6e145fe..000000000 --- a/src/components/SubmissionSucess.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import React from 'react' -import tick from '../resources/tick.svg' -import styled from '@emotion/styled' -import { sizes } from '../styles/variables' - -const Styled = styled.div` - min-height: 80vh; - display: flex; - justify-content: center; - align-items: center; - - @media (max-width: ${sizes.breakpoints.md}) { - flex-direction: column; - text-align: center; - min-height: 70vh; - } - - h1 { - line-height: 1.8; - } - - span { - font-weight: 600; - } - - img { - display: inline-block; - height: 15rem; - margin-right: 3rem; - - @media (max-width: ${sizes.breakpoints.md}) { - margin-right: 0; - margin-bottom: 3rem; - } - } -` - -const SubmissionSucess = () => ( - - Tick -

    - Thanks! -
    We'll get back to you soon. -

    -
    -) - -export default SubmissionSucess diff --git a/src/components/TextBox.tsx b/src/components/TextBox.tsx deleted file mode 100644 index e06eaed72..000000000 --- a/src/components/TextBox.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import React from 'react' - -import styled from '@emotion/styled' -import { colors, borders } from '../styles/variables' - -const StyledTextBox = styled.div` - font-size: 90%; - - .box { - max-width: 75rem; - margin: 10rem auto; - padding: 8rem 5rem; - background: ${colors.white}; - border-radius: 3px; - border: ${borders.light2}; - } - - h1 { - margin-bottom: 6rem; - } - - h2 { - margin: 6rem 0 5rem; - } - - h3 { - margin-top: 4rem; - } - - h4 { - margin: 3rem 0 1rem; - } - - li + li { - margin-top: 2rem; - } - - .model { - padding: 2rem 3rem; - border: ${borders.light}; - font-size: 95%; - } -` - -const TextBox: React.SFC<{}> = ({ children }) => ( - -
    - { children } -
    -
    -) - -export default TextBox diff --git a/src/components/TextCard.tsx b/src/components/TextCard.tsx deleted file mode 100644 index 94635a6f5..000000000 --- a/src/components/TextCard.tsx +++ /dev/null @@ -1,89 +0,0 @@ -import React from 'react' - -import styled from '@emotion/styled' -import { colors, shadows, sizes } from '../styles/variables' - -import Bitbucket from '../resources/bitbucket.svg' -import Github from '../resources/octicons-mark-github.svg' -import Gitlab from '../resources/gitlab.svg' -import Git from '../resources/git.png' -import VSC from '../resources/vsc.svg' -import Theia from '../resources/theia-ide.svg' -import Docker from '../resources/docker.svg' - -const Logos: any = { - Bitbucket: Bitbucket, - Github: Github, - Gitlab: Gitlab, - Git: Git, - VSC: VSC, - Theia: Theia, - Docker: Docker -} - -const StyledTextCard = styled.div` - width: 24%; - padding: 3rem; - margin-bottom: 3rem; - background: ${colors.white}; - box-shadow: ${shadows.light}; - border-radius: 3px; - - @media(min-width: calc(${sizes.breakpoints.md} + 1px)) { - width: 24%; - } - - @media(max-width: ${sizes.breakpoints.lg}) { - width: 49%; - max-width: 44rem; - } - - @media(max-width: ${sizes.breakpoints.md}) { - min-width: 32rem; - } - - @media(max-width: ${sizes.breakpoints.sm}) { - min-width: 28rem; - } - - .title { - text-align: center; - min-height: 5rem; - } - - .read-more { - margin-top: 6rem; - } - - .brands { - margin-top: 3rem; - } - - img { - height: 3rem; - - &:not(:last-child) { - margin-right: 2rem; - } - } -` - -interface TextCardProps { - title: string - paragraphs: (string | JSX.Element)[] - more?: JSX.Element - logos?: string[] -} - -const TextCard: React.SFC = ({title, paragraphs, more, logos}) => ( - -

    {title}

    - { paragraphs.map((p, i) =>

    {p}

    ) } - { more ? more : null } - {logos && logos.length ?
    - {logos.map((logo, i) => {`${logo})} -
    : null} -
    -) - -export default TextCard diff --git a/src/components/TextCards.tsx b/src/components/TextCards.tsx deleted file mode 100644 index 434aabcb9..000000000 --- a/src/components/TextCards.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import React from 'react' - -import styled from '@emotion/styled' -import { sizes } from '../styles/variables' - -const StyledTextCards = styled.section` - .text-cards { - display: flex; - flex-wrap: wrap; - - @media(min-width: calc(${sizes.breakpoints.md} + 1px)) { - justify-content: space-between; - } - - @media(max-width: ${sizes.breakpoints.md}) { - flex-direction: column; - align-items: center; - } - } -` - -interface TextCardsProps { - title?: string -} - -const TextCards: React.SFC = ({ title, children }) => ( -
    - - { title ?

    {title}

    : null } -
    - {children} -
    -
    -
    -) - -export default TextCards diff --git a/src/components/TrustedBy.tsx b/src/components/TrustedBy.tsx deleted file mode 100644 index a1f8ad753..000000000 --- a/src/components/TrustedBy.tsx +++ /dev/null @@ -1,128 +0,0 @@ -import React from 'react' - -import styled from '@emotion/styled' -import { sizes } from '../styles/variables' - -const StyledTrustedBy = styled.section` - padding: 3rem 0; - - h3 { - text-align: center; - font-weight: 400; - } - - h2 { - text-align: center; - } - - .logos { - display: flex; - flex-wrap: wrap; - justify-content: center; - - @media (max-width: 540px) { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); - } - - a { - flex-basis: calc(14% - 2.2rem); - display: flex; - border: 2px solid transparent; - justify-content: center; - margin: 1.2rem; - - img { - height: 100%; - } - } - } - - .grey-logo { - filter: grayscale(100%) contrast(0%) brightness(116%); - -webkit-filter: grayscale(100%) contrast(0%) brightness(116%); - } - - .fcc { - filter: grayscale(100%) contrast(0%); - -webkit-filter: grayscale(100%) contrast(0%); - width: 13rem; - - @media (max-width: ${sizes.breakpoints.md}) { - width: 12rem; - } - - @media (max-width: ${sizes.breakpoints.md}) { - width: 11rem; - } - } - - .dwave-logo { - transform: scale(1.2); - filter: grayscale(100%) contrast(0%) brightness(112%); - -webkit-filter: grayscale(100%) contrast(0%) brightness(112%); - } - - .four-geeks { - transform: scale(0.9); - } - - .gatsby-logo { - filter: grayscale(100%) opacity(47%); - -webkit-filter: grayscale(100%) opacity(47%); - } - - .vue-logo { - filter: grayscale(100%) opacity(62%); - -webkit-filter: grayscale(100%) opacity(62%); - } -` - -const StyledBrandImage = styled.img<{ transform?: string }>` - width: 9.5rem; - - @media(max-width: ${sizes.breakpoints.lg}) { - width: 9rem; - } - - @media(max-width: ${sizes.breakpoints.md}) { - width: 7rem; - } - - @media(min-width: calc(${sizes.breakpoints.lg} + 1px)) { - transform: ${({ transform }) => (transform ? transform : 'none')}; - } -` - -interface Brand { - alt: string - url: string - svg: string - transform?: string - className?: string -} - -interface TrustedByProps { - brands: Brand[] - title: string | JSX.Element - styles?: React.CSSProperties -} - -const TrustedBy = ({ brands, title, styles }: TrustedByProps) => ( - -
    -

    - {title} -

    -
    - {brands.map((b: Brand) => ( - - - - ))} -
    -
    -
    -) - -export default TrustedBy diff --git a/src/components/blog/MorePosts.tsx b/src/components/blog/MorePosts.tsx deleted file mode 100644 index deb7b1a92..000000000 --- a/src/components/blog/MorePosts.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import React from 'react' - -import styled from '@emotion/styled' -import PostPreview from './PostPreview' -import { Posts } from './Posts' - -const StyledMorePosts = styled.section` - h2 { - text-align: center; - } -` - -const MorePosts = ({ posts }: { posts: any[] }) => ( -
    - -
    -

    - Discover More About Gitpod -

    - - {posts.map((p: any) => ( - - ))} - -
    -
    -
    -) - -export default MorePosts diff --git a/src/components/blog/PostBanner.tsx b/src/components/blog/PostBanner.tsx deleted file mode 100644 index 6e2c5adb6..000000000 --- a/src/components/blog/PostBanner.tsx +++ /dev/null @@ -1,121 +0,0 @@ -import React from 'react' - -import styled from '@emotion/styled' -import { colors } from '../../styles/variables' -import { useStaticQuery, graphql } from 'gatsby' -import BackgroundImage from 'gatsby-background-image' - -const StyledPostBanner = styled.header` - position: relative; - overflow-x: hidden; - border-top-left-radius: 2px; - border-top-right-radius: 2px; - - .bg { - display: block; - background-size: cover; - background-position: center; - height: 40rem; - border-top-left-radius: 2px; - border-top-right-radius: 2px; - } - - .contents { - display: flex; - flex-direction: column; - align-items: flex-start; - } - - h1 { - margin-top: 2rem; - } - - .h3 { - margin: 0; - color: ${colors.text}; - font-weight: 200; - } - - .info { - display: flex; - width: 100%; - justify-content: space-between; - } - - .author { - display: flex; - flex-direction: column; - } - - .share { - display: flex; - } - - span + span { - margin-top: 1rem; - } - - span:last-of-type { - &::after { - content: ''; - display: block; - margin-top: 2rem; - height: 5px; - width: 12rem; - background: ${colors.offWhite4}; - border-radius: 5px; - } - } -` - -interface PostBannerProps { - teaserImage: string - title: string - subtitle: string - date: JSX.Element - author: JSX.Element - shareButtons: JSX.Element -} - -const PostBanner: React.SFC = ({ title, subtitle, teaserImage, date, author, shareButtons }) => { - const { allImageSharp } = useStaticQuery(graphql` - query { - allImageSharp { - nodes { - fluid { - originalName - ...GatsbyImageSharpFluid - } - } - } - } - `) - - const image = teaserImage !== null && (teaserImage.substring(0,1) === '/' && !teaserImage.includes(".gif")) ? teaserImage.split('/')[1] : 'placeholder.jpg' - - const fluid = allImageSharp.nodes.find((n: any) => { - return n.fluid.originalName === image - }).fluid - - return ( - - -