diff --git a/gatsby-browser.js b/gatsby-browser.js index c57d5a7..d0d3fdd 100644 --- a/gatsby-browser.js +++ b/gatsby-browser.js @@ -1,7 +1,7 @@ import wrapPageElementWithLayout from './src/helpers/wrapPageElement' // Global styles -import './src/styles/global.scss' +import './src/styles/global.css' // IntersectionObserver polyfill for gatsby-image (Safari, IE) if (typeof window !== 'undefined' && !window.IntersectionObserver) { diff --git a/gatsby-config.js b/gatsby-config.js index 069e22f..2cad5ed 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -36,12 +36,6 @@ module.exports = { path: path.join(__dirname, 'src', 'images') } }, - { - resolve: 'gatsby-plugin-sass', - options: { - includePaths: [`${__dirname}/node_modules`, `${__dirname}/src/styles`] - } - }, { resolve: 'gatsby-plugin-svgr', options: { diff --git a/package-lock.json b/package-lock.json index bee6571..b6a6249 100644 --- a/package-lock.json +++ b/package-lock.json @@ -183,16 +183,84 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.3.tgz", - "integrity": "sha512-qmp4pD7zeTxsv0JNecSBsEmG1ei2MqwJq4YQcK3ZWm/0t07QstWfvuV/vm3Qt5xNMFETn2SZqpMx2MQzbtq+KA==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.6.tgz", + "integrity": "sha512-klTBDdsr+VFFqaDHm5rR69OpEQtO2Qv8ECxHS1mNhJJvaHArR6a1xTf5K/eZW7eZpJbhCx3NW1Yt/sKsLXLblg==", "requires": { "@babel/helper-function-name": "^7.8.3", "@babel/helper-member-expression-to-functions": "^7.8.3", "@babel/helper-optimise-call-expression": "^7.8.3", "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", "@babel/helper-split-export-declaration": "^7.8.3" + }, + "dependencies": { + "@babel/generator": { + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.7.tgz", + "integrity": "sha512-DQwjiKJqH4C3qGiyQCAExJHoZssn49JTMJgZ8SANGgVFdkupcUhLOdkAeoC6kmHZCPfoDG5M0b6cFlSN5wW7Ew==", + "requires": { + "@babel/types": "^7.8.7", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", + "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/traverse": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/parser": { + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.7.tgz", + "integrity": "sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A==" + }, + "@babel/traverse": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", + "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.6", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", + "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } } }, "@babel/helper-create-regexp-features-plugin": { @@ -1196,7 +1264,6 @@ "version": "7.8.7", "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.8.7.tgz", "integrity": "sha512-sc7A+H4I8kTd7S61dgB9RomXu/C+F4IrRr4Ytze4dnfx7AXEpCrejSNpjx7vq6y/Bak9S6Kbk65a/WgMLtg43Q==", - "dev": true, "requires": { "core-js-pure": "^3.0.0", "regenerator-runtime": "^0.13.4" @@ -1205,8 +1272,7 @@ "regenerator-runtime": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.4.tgz", - "integrity": "sha512-plpwicqEzfEyTQohIKktWigcLzmNStMGwbOUbykx51/29Z3JOGYldaaNGK7ngNXV+UcoqvIMmloZ48Sr74sd+g==", - "dev": true + "integrity": "sha512-plpwicqEzfEyTQohIKktWigcLzmNStMGwbOUbykx51/29Z3JOGYldaaNGK7ngNXV+UcoqvIMmloZ48Sr74sd+g==" } } }, @@ -1755,9 +1821,9 @@ }, "dependencies": { "buffer": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.3.tgz", - "integrity": "sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.5.0.tgz", + "integrity": "sha512-9FTEDjLjwoAkEwyMGDjYJQN2gfRgOKBKRfiglhvibGbpeeU/pQn1bJxQqm32OD/AIeEuHxU9roxXxg34Byp/Ww==", "requires": { "base64-js": "^1.0.2", "ieee754": "^1.1.4" @@ -2944,12 +3010,6 @@ "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==", "dev": true }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -2960,9 +3020,9 @@ } }, "acorn": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", - "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==" + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==" }, "acorn-globals": { "version": "4.3.4", @@ -3038,12 +3098,6 @@ "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, "ansi-align": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", @@ -3352,12 +3406,6 @@ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" }, - "async-foreach": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", - "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", - "dev": true - }, "async-limiter": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", @@ -3631,9 +3679,9 @@ } }, "babel-plugin-remove-graphql-queries": { - "version": "2.7.23", - "resolved": "https://registry.npmjs.org/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-2.7.23.tgz", - "integrity": "sha512-SvWLivXtbeExS0eUPrRpg8EYiDPcOlzaO/vePcdmW2X8GBC1miezXS+RYPYyt4r9Z0Cg0ZQe58ggssF/8ym3rg==" + "version": "2.7.24", + "resolved": "https://registry.npmjs.org/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-2.7.24.tgz", + "integrity": "sha512-uyYSTt2ikv4QhPC1HSt5WnP9sJFCOytrN119NpXQtGL9AiXNGghrELnY4BxhDuJtw/Wjrw20eED1+BJLzfMs7Q==" }, "babel-plugin-syntax-object-rest-spread": { "version": "6.13.0", @@ -3655,9 +3703,9 @@ "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" }, "babel-preset-gatsby": { - "version": "0.2.29", - "resolved": "https://registry.npmjs.org/babel-preset-gatsby/-/babel-preset-gatsby-0.2.29.tgz", - "integrity": "sha512-asJV/UMq7riYiY4ZhMi83Mbhwwtkvhp9gmmJgJJSJyAWw/tTgAmYan6Udpco3P4Kvd91lj+f8kzXJHT0G2sdwQ==", + "version": "0.2.31", + "resolved": "https://registry.npmjs.org/babel-preset-gatsby/-/babel-preset-gatsby-0.2.31.tgz", + "integrity": "sha512-2PhWjAli3hXcK0ASieOQZgiU4b6THA5/OWJSz5ZM3snmf1oqlWqhRJfzj6RXu2BkwvoGI5Hu9krEcVEgZKGTeQ==", "requires": { "@babel/plugin-proposal-class-properties": "^7.7.4", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.7.4", @@ -3671,7 +3719,7 @@ "babel-plugin-dynamic-import-node": "^2.3.0", "babel-plugin-macros": "^2.8.0", "babel-plugin-transform-react-remove-prop-types": "^0.4.24", - "gatsby-core-utils": "^1.0.28" + "gatsby-core-utils": "^1.0.30" } }, "babel-preset-jest": { @@ -4077,17 +4125,17 @@ } }, "bl": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-3.0.0.tgz", - "integrity": "sha512-EUAyP5UHU5hxF8BPT0LKW8gjYLhq1DQIcneOX/pL/m2Alo+OYDQAJlHq+yseMP50Os2nHXOSic6Ss3vSQeyf4A==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.1.tgz", + "integrity": "sha512-FL/TdvchukRCuWVxT0YMO/7+L5TNeNrVFvRU2IY63aUyv9mpt8splf2NEr6qXtPo5fya5a66YohQKvGNmLrWNA==", "requires": { - "readable-stream": "^3.0.1" + "readable-stream": "^3.4.0" }, "dependencies": { "readable-stream": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz", - "integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -4101,15 +4149,6 @@ "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "dev": true, - "requires": { - "inherits": "~2.0.0" - } - }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -4893,9 +4932,9 @@ } }, "chownr": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", - "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, "chrome-trace-event": { "version": "1.0.2", @@ -5545,8 +5584,7 @@ "core-js-pure": { "version": "3.6.4", "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.4.tgz", - "integrity": "sha512-epIhRLkXdgv32xIUFaaAry2wdxZYBi6bgM7cB136dzzXXa+dFyRLTZeLUJxnd8ShrmyVXBub63n2NHo2JAt8Cw==", - "dev": true + "integrity": "sha512-epIhRLkXdgv32xIUFaaAry2wdxZYBi6bgM7cB136dzzXXa+dFyRLTZeLUJxnd8ShrmyVXBub63n2NHo2JAt8Cw==" }, "core-util-is": { "version": "1.0.2", @@ -6031,6 +6069,11 @@ "whatwg-url": "^7.0.0" } }, + "date-fns": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.10.0.tgz", + "integrity": "sha512-EhfEKevYGWhWlZbNeplfhIU/+N+x0iCIx7VzKlXma2EdQyznVlZhCptXUY+BegNpPW2kjdx15Rvq503YcXXrcA==" + }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", @@ -7369,9 +7412,9 @@ } }, "eslint-plugin-react": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.18.3.tgz", - "integrity": "sha512-Bt56LNHAQCoou88s8ViKRjMB2+36XRejCQ1VoLj716KI1MoE99HpTVvIThJ0rvFmG4E4Gsq+UgToEjn+j044Bg==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz", + "integrity": "sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ==", "requires": { "array-includes": "^3.1.1", "doctrine": "^2.1.0", @@ -7381,8 +7424,10 @@ "object.fromentries": "^2.0.2", "object.values": "^1.1.1", "prop-types": "^15.7.2", - "resolve": "^1.14.2", - "string.prototype.matchall": "^4.0.2" + "resolve": "^1.15.1", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.2", + "xregexp": "^4.3.0" }, "dependencies": { "doctrine": { @@ -7392,6 +7437,11 @@ "requires": { "esutils": "^2.0.2" } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" } } }, @@ -8980,29 +9030,6 @@ } } }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -9014,9 +9041,9 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" }, "gatsby": { - "version": "2.19.30", - "resolved": "https://registry.npmjs.org/gatsby/-/gatsby-2.19.30.tgz", - "integrity": "sha512-uOgYVVfAcBrov59eV9R4U7+BN6o1ruHflDp2lBeKQ/rSB/zGUyHPE5WlWC/SW5KQwSIUxUymeClwRL+P/Z/mMg==", + "version": "2.19.32", + "resolved": "https://registry.npmjs.org/gatsby/-/gatsby-2.19.32.tgz", + "integrity": "sha512-YzAvkTwyh9uxytCqP/utinFstEpz+COEWS39t3PvlcAimuWIsmwDlgK/5CMb3KSkavEeIuuBRADfbInapEbpWQ==", "requires": { "@babel/code-frame": "^7.5.5", "@babel/core": "^7.7.5", @@ -9038,8 +9065,8 @@ "babel-loader": "^8.0.6", "babel-plugin-add-module-exports": "^0.3.3", "babel-plugin-dynamic-import-node": "^2.3.0", - "babel-plugin-remove-graphql-queries": "^2.7.23", - "babel-preset-gatsby": "^0.2.29", + "babel-plugin-remove-graphql-queries": "^2.7.24", + "babel-preset-gatsby": "^0.2.31", "better-opn": "1.0.0", "better-queue": "^3.8.10", "bluebird": "^3.7.2", @@ -9055,6 +9082,7 @@ "core-js": "^2.6.11", "cors": "^2.8.5", "css-loader": "^1.0.1", + "date-fns": "^2.10.0", "debug": "^3.2.6", "del": "^5.1.0", "detect-port": "^1.3.0", @@ -9077,13 +9105,13 @@ "flat": "^4.1.0", "fs-exists-cached": "1.0.0", "fs-extra": "^8.1.0", - "gatsby-cli": "^2.10.0", - "gatsby-core-utils": "^1.0.28", - "gatsby-graphiql-explorer": "^0.2.34", - "gatsby-link": "^2.2.29", - "gatsby-plugin-page-creator": "^2.1.40", - "gatsby-react-router-scroll": "^2.1.22", - "gatsby-telemetry": "^1.1.49", + "gatsby-cli": "^2.10.2", + "gatsby-core-utils": "^1.0.30", + "gatsby-graphiql-explorer": "^0.2.35", + "gatsby-link": "^2.2.30", + "gatsby-plugin-page-creator": "^2.1.42", + "gatsby-react-router-scroll": "^2.1.23", + "gatsby-telemetry": "^1.1.51", "glob": "^7.1.6", "got": "8.3.2", "graphql": "^14.5.8", @@ -9097,6 +9125,7 @@ "jest-worker": "^24.9.0", "json-loader": "^0.5.7", "json-stringify-safe": "^5.0.1", + "latest-version": "5.1.0", "lodash": "^4.17.15", "lokijs": "^1.5.8", "md5": "^2.2.1", @@ -9253,9 +9282,9 @@ "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==" }, "gatsby-cli": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/gatsby-cli/-/gatsby-cli-2.10.0.tgz", - "integrity": "sha512-b+/z4lfXKGcw8ZJW3hm3zB+plU3BFJJN78la2L/Ma0mXVKRVMo7FeBYqzuLYs765ozNVsev+EjkbLVHRVd83Wg==", + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/gatsby-cli/-/gatsby-cli-2.10.2.tgz", + "integrity": "sha512-TAwdMptYEKIWC93MHn3Vr+UZMOCxiAp3qN17+depCm2lmYq9O4DgtQi8FPHIZfivIJjAhQ1TOYXl9890YclfLg==", "requires": { "@babel/code-frame": "^7.5.5", "@babel/runtime": "^7.7.6", @@ -9272,8 +9301,8 @@ "execa": "^3.4.0", "fs-exists-cached": "^1.0.0", "fs-extra": "^8.1.0", - "gatsby-core-utils": "^1.0.28", - "gatsby-telemetry": "^1.1.49", + "gatsby-core-utils": "^1.0.30", + "gatsby-telemetry": "^1.1.51", "hosted-git-info": "^3.0.2", "ink": "^2.6.0", "ink-spinner": "^3.0.1", @@ -9491,26 +9520,97 @@ } }, "gatsby-core-utils": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/gatsby-core-utils/-/gatsby-core-utils-1.0.28.tgz", - "integrity": "sha512-XWKR9Rk2v6iQkmBsTLCdI3adyC9PCh1s5BQ85nlGitlgcVVQq98jZlQdcy0v9mJOrTuce0uf5RqkeGDWFLekoA==", + "version": "1.0.30", + "resolved": "https://registry.npmjs.org/gatsby-core-utils/-/gatsby-core-utils-1.0.30.tgz", + "integrity": "sha512-+WYFxf9dT4u67vecXdROe9iF2jzPKoTVbWI3FYLCcNANY2Y/vEec11vhG5FnBHdLpgmD3cnLPdhCAileKWBldA==", "requires": { "ci-info": "2.0.0", + "configstore": "^5.0.0", "node-object-hash": "^2.0.0" + }, + "dependencies": { + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "requires": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + } + }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" + }, + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "requires": { + "is-obj": "^2.0.0" + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + }, + "make-dir": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", + "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" + } } }, "gatsby-graphiql-explorer": { - "version": "0.2.34", - "resolved": "https://registry.npmjs.org/gatsby-graphiql-explorer/-/gatsby-graphiql-explorer-0.2.34.tgz", - "integrity": "sha512-r3JW4NPC69kRV8VTlDYrR9E9ROyw3Po4qKB5C067fE0bRhtU3DTSSf6MT+C97XS+JqKEZAaub0unptB//gnaCw==", + "version": "0.2.35", + "resolved": "https://registry.npmjs.org/gatsby-graphiql-explorer/-/gatsby-graphiql-explorer-0.2.35.tgz", + "integrity": "sha512-y0ec6zLeaWwCus7xQnOS5dMX4Fu+//H6LLwPjODqnXAtnx2pT8MI5VYnYDqhMLHk32VEXYxhPJRvxg7VMkn18g==", "requires": { "@babel/runtime": "^7.7.6" } }, "gatsby-image": { - "version": "2.2.42", - "resolved": "https://registry.npmjs.org/gatsby-image/-/gatsby-image-2.2.42.tgz", - "integrity": "sha512-0TvzQAVXt8LKX1164jox5zTWWr6XWkfTAmGVYmi2YEP9i4UmK40vfF9GVuEwxo4mgtYbspPcJMafqyZa6fsRHw==", + "version": "2.2.43", + "resolved": "https://registry.npmjs.org/gatsby-image/-/gatsby-image-2.2.43.tgz", + "integrity": "sha512-21UpYpXXax8AkDH3cYOeS2P898VdMGEb5G5kG4BysEh3nWbxpTpnvtETYW8Ps+qfzZL+W604JrXqZQ32m/F3jA==", "requires": { "@babel/runtime": "^7.7.6", "object-fit-images": "^3.2.4", @@ -9518,9 +9618,9 @@ } }, "gatsby-link": { - "version": "2.2.29", - "resolved": "https://registry.npmjs.org/gatsby-link/-/gatsby-link-2.2.29.tgz", - "integrity": "sha512-Yl6CIseRSaF9oLgcaLc4e95al2IQ4fHxMjKQtKRZEH4sFk0BIcLaVfqPwwWBdUK0rGkyNXqNs5lATBWqmg1FwA==", + "version": "2.2.30", + "resolved": "https://registry.npmjs.org/gatsby-link/-/gatsby-link-2.2.30.tgz", + "integrity": "sha512-fGUzQBHcARIYBVMno2qkyOykcxVdANLQpQ1R0kg8b6AEVjxReB+aUlXhq25nJkW4Z2E9Dhn32Xv4mk6znteNig==", "requires": { "@babel/runtime": "^7.7.6", "@types/reach__router": "^1.2.6", @@ -9528,27 +9628,27 @@ } }, "gatsby-page-utils": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/gatsby-page-utils/-/gatsby-page-utils-0.0.39.tgz", - "integrity": "sha512-lDrrenBnh5HR/9mgfhePPvCt2KueccbQu/KPYkBKlwz0hcZ/xl28cgit0Bj9Ijqx7XTMxBd2gtgvgB2QNd8jmA==", + "version": "0.0.41", + "resolved": "https://registry.npmjs.org/gatsby-page-utils/-/gatsby-page-utils-0.0.41.tgz", + "integrity": "sha512-Nu9kSxwRpNSMvUFsu34qD5BA1w94FkkEZc1I5RaiUwHrdE1Ga6mMSJ8Ob+4Yb3pI50eRHvYdtUtfLJW6s8XMQg==", "requires": { "@babel/runtime": "^7.7.6", "bluebird": "^3.7.2", "chokidar": "3.3.0", "fs-exists-cached": "^1.0.0", - "gatsby-core-utils": "^1.0.28", + "gatsby-core-utils": "^1.0.30", "glob": "^7.1.6", "lodash": "^4.17.15", "micromatch": "^3.1.10" } }, "gatsby-plugin-manifest": { - "version": "2.2.42", - "resolved": "https://registry.npmjs.org/gatsby-plugin-manifest/-/gatsby-plugin-manifest-2.2.42.tgz", - "integrity": "sha512-3YWq2zfv6LR0FWlfhZL//mrueuTr+u9cSr8K9HIXKBVby1FZ2CndzaMPbmj61/FSqXHXX2/bhvOx5imFuZCxmw==", + "version": "2.2.44", + "resolved": "https://registry.npmjs.org/gatsby-plugin-manifest/-/gatsby-plugin-manifest-2.2.44.tgz", + "integrity": "sha512-Mhq7sXAiFZG0xL8RFqLYEZK9/RBVtn2ubIiIWA5jS4PRfxSx8szvmAbu7H7VvOJTvh/ArGKUbGPEQ0mbJmX1AA==", "requires": { "@babel/runtime": "^7.7.6", - "gatsby-core-utils": "^1.0.28", + "gatsby-core-utils": "^1.0.30", "semver": "^5.7.1", "sharp": "^0.23.4" } @@ -9559,13 +9659,13 @@ "integrity": "sha512-dK6mMIF2pGfNjWS0CbKSgUp+zKJil2mIw0efH9ghADzzpXIXImlVgDtKJaEM58+jL9bNunWmjOT7AvFNUkgZng==" }, "gatsby-plugin-offline": { - "version": "3.0.35", - "resolved": "https://registry.npmjs.org/gatsby-plugin-offline/-/gatsby-plugin-offline-3.0.35.tgz", - "integrity": "sha512-ndOnB+onKeiWmVOfc7UCDHJ9lbfvrixdk1U2KwW0nwO3dUvjElBxPTclXFgpzmfZqH2Fb8dx8MqoH+ooR7YdGA==", + "version": "3.0.37", + "resolved": "https://registry.npmjs.org/gatsby-plugin-offline/-/gatsby-plugin-offline-3.0.37.tgz", + "integrity": "sha512-dn1n/QHMcwIuuJB8e9+qXxPBRDdLWFYyWi7mLhHuGMpm9YWWiQBgQ+VNTShRUUF7xZwL0sNzn0lpCyKAKyRIcA==", "requires": { "@babel/runtime": "^7.7.6", "cheerio": "^1.0.0-rc.3", - "gatsby-core-utils": "^1.0.28", + "gatsby-core-utils": "^1.0.30", "glob": "^7.1.6", "idb-keyval": "^3.2.0", "lodash": "^4.17.15", @@ -9573,46 +9673,37 @@ } }, "gatsby-plugin-page-creator": { - "version": "2.1.40", - "resolved": "https://registry.npmjs.org/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-2.1.40.tgz", - "integrity": "sha512-jwY8LTOOobrKUr1ph+/IHAHDuzjSrXsAu2YBqZg7wc/J6gre0YAgOU2yAxY34CadE34jieISO3FDIyHMii3vPg==", + "version": "2.1.42", + "resolved": "https://registry.npmjs.org/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-2.1.42.tgz", + "integrity": "sha512-pes5AXpm1ulmhe7UOUtfRAD9/5QTnNVP1edZQFW9jCvy/7Du29lthhsP1ptBWORkdu+1UDbBvQJh+W+9mBPkKQ==", "requires": { "@babel/runtime": "^7.7.6", "bluebird": "^3.7.2", "fs-exists-cached": "^1.0.0", - "gatsby-page-utils": "^0.0.39", + "gatsby-page-utils": "^0.0.41", "glob": "^7.1.6", "lodash": "^4.17.15", "micromatch": "^3.1.10" } }, "gatsby-plugin-react-helmet": { - "version": "3.1.22", - "resolved": "https://registry.npmjs.org/gatsby-plugin-react-helmet/-/gatsby-plugin-react-helmet-3.1.22.tgz", - "integrity": "sha512-eG57C7Rm84dOpaFYxqQsKSzP0ge/6SnAEsPH5JcAcJ7vETtn3rCS6SB8qs+Nk/jhziAjdGjBw3CSJnOkg/QUJA==", + "version": "3.1.23", + "resolved": "https://registry.npmjs.org/gatsby-plugin-react-helmet/-/gatsby-plugin-react-helmet-3.1.23.tgz", + "integrity": "sha512-l6OomFCfggJ6IG8XOw0WuCqbTnVrqtMRxA/O5qbCpXH7K9JxjE406vUM8To0dVjoaCiSvRZU/Dz0vU0wEWe0UQ==", "requires": { "@babel/runtime": "^7.7.6" } }, - "gatsby-plugin-sass": { - "version": "2.1.29", - "resolved": "https://registry.npmjs.org/gatsby-plugin-sass/-/gatsby-plugin-sass-2.1.29.tgz", - "integrity": "sha512-/t0NioasjZnCm+vICI7LQH3Ge/oc1NVMfTR4v+8LwjQGIUR+Tgd7k0soiVeyVXCNl7zV/oYTVkzPcjxkIYrDxQ==", - "requires": { - "@babel/runtime": "^7.7.6", - "sass-loader": "^7.3.1" - } - }, "gatsby-plugin-sharp": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/gatsby-plugin-sharp/-/gatsby-plugin-sharp-2.4.5.tgz", - "integrity": "sha512-O2FZcUd78aKNR7Hbommrbc5igW32U2MnenA/Oc55sklFUF+I1fu4N6zMoHfh7sVtWCqZEbQiNO310Zl8jstD5g==", + "version": "2.4.7", + "resolved": "https://registry.npmjs.org/gatsby-plugin-sharp/-/gatsby-plugin-sharp-2.4.7.tgz", + "integrity": "sha512-xXXr4bPRpssSYwE1y5BMDgO/OEt40nZjQxdSZ12gTrLiFRjGr0H71K65Y+YxJBZCof0OHU04Y0wxEUe7VdNrHA==", "requires": { "@babel/runtime": "^7.7.6", "async": "^2.6.3", "bluebird": "^3.7.2", "fs-extra": "^8.1.0", - "gatsby-core-utils": "^1.0.28", + "gatsby-core-utils": "^1.0.30", "got": "^8.3.2", "imagemin": "^6.1.0", "imagemin-mozjpeg": "^8.0.0", @@ -9640,9 +9731,9 @@ } }, "gatsby-plugin-sitemap": { - "version": "2.2.27", - "resolved": "https://registry.npmjs.org/gatsby-plugin-sitemap/-/gatsby-plugin-sitemap-2.2.27.tgz", - "integrity": "sha512-Iq/nUwMhdl76CPkkUEcprKnGyc3Viaqiaxgn9L2kfF7LhggKVdSKYpJjBa80B0856cDQRJVkatumD43+kf3NZA==", + "version": "2.2.28", + "resolved": "https://registry.npmjs.org/gatsby-plugin-sitemap/-/gatsby-plugin-sitemap-2.2.28.tgz", + "integrity": "sha512-OAdBmIJFR/w3ReBrC0Bz/0dVjpi8x8GqOqrLOeW2S0E0My3zYM7xNZjymGhgU4Ji+AQesUcZ4x6E1akKUjfFHg==", "requires": { "@babel/runtime": "^7.7.6", "minimatch": "^3.0.4", @@ -9690,9 +9781,9 @@ } }, "gatsby-react-router-scroll": { - "version": "2.1.22", - "resolved": "https://registry.npmjs.org/gatsby-react-router-scroll/-/gatsby-react-router-scroll-2.1.22.tgz", - "integrity": "sha512-VSwDrfiUL//eOVqtzBImxDZSQ7PbS4As8IWOP093tOS+r6ddLiSINGW7CewI/0CdYEKwIVGF5fHMWJWgg3gvEQ==", + "version": "2.1.23", + "resolved": "https://registry.npmjs.org/gatsby-react-router-scroll/-/gatsby-react-router-scroll-2.1.23.tgz", + "integrity": "sha512-yUCWzRYUDgvr3xy5GAYd08gToBfE84SX3zvHWgPunVeL4OfwsYh6eei6GtYbLIjq77bvegd2SZkSujQ4Vgm/Gg==", "requires": { "@babel/runtime": "^7.7.6", "scroll-behavior": "^0.9.10", @@ -9710,9 +9801,9 @@ } }, "gatsby-source-filesystem": { - "version": "2.1.48", - "resolved": "https://registry.npmjs.org/gatsby-source-filesystem/-/gatsby-source-filesystem-2.1.48.tgz", - "integrity": "sha512-m1RIYDoV9rhMe2p0ZJA1ae4IIX+iIJCMpNnQiQVtTf+mfihiWyDAdi4lsWzJUxPt8FQwDgUG7GzY3sAoGctvzQ==", + "version": "2.1.50", + "resolved": "https://registry.npmjs.org/gatsby-source-filesystem/-/gatsby-source-filesystem-2.1.50.tgz", + "integrity": "sha512-BSjxTFT3srIhRxlD4sPeJ+p6xtBzqeJ4zMyyzjVgsAkRcnWFzpyGVnH9eBWnYuhPIz1I9bXvKtQZYsIYcYUYCw==", "requires": { "@babel/runtime": "^7.7.6", "better-queue": "^3.8.10", @@ -9720,7 +9811,7 @@ "chokidar": "3.3.0", "file-type": "^12.4.0", "fs-extra": "^8.1.0", - "gatsby-core-utils": "^1.0.28", + "gatsby-core-utils": "^1.0.30", "got": "^8.3.2", "md5-file": "^3.2.3", "mime": "^2.4.4", @@ -9739,9 +9830,9 @@ } }, "gatsby-telemetry": { - "version": "1.1.49", - "resolved": "https://registry.npmjs.org/gatsby-telemetry/-/gatsby-telemetry-1.1.49.tgz", - "integrity": "sha512-NLT843FVp3pt1gjJ/vsclgw6h7pIKDF9l8sWBFiIrJUjiwGqCVC+emylbuK8MFE8Js989SP40piqvgo+orEl3g==", + "version": "1.1.51", + "resolved": "https://registry.npmjs.org/gatsby-telemetry/-/gatsby-telemetry-1.1.51.tgz", + "integrity": "sha512-34SvdYWn/nJTYMiof9rAgvlcYqpzDbadfF1egMR3Kv+7dTBN5UVkeGfjUixsaD+sg6PVA+06CC5TMz8WQXCBWA==", "requires": { "@babel/code-frame": "^7.5.5", "@babel/runtime": "^7.7.6", @@ -9750,7 +9841,7 @@ "configstore": "^5.0.0", "envinfo": "^7.5.0", "fs-extra": "^8.1.0", - "gatsby-core-utils": "^1.0.28", + "gatsby-core-utils": "^1.0.30", "git-up": "4.0.1", "is-docker": "2.0.0", "lodash": "^4.17.15", @@ -9848,18 +9939,18 @@ } }, "gatsby-transformer-json": { - "version": "2.2.26", - "resolved": "https://registry.npmjs.org/gatsby-transformer-json/-/gatsby-transformer-json-2.2.26.tgz", - "integrity": "sha512-JpjeL44AbUxA7gnTxVWd+F6IgGIKE8stFywg1ZLn7bbSHKpKUatN6UXw7PSZDac+9aSaDTEAqWFhOX/z3BqE3Q==", + "version": "2.2.27", + "resolved": "https://registry.npmjs.org/gatsby-transformer-json/-/gatsby-transformer-json-2.2.27.tgz", + "integrity": "sha512-nRGn2sOq+yXgYcZxbv8HmgP+JaPJKklUel4tgeg04VP9Duwy4jO+5YnY5DJtJVMq7eMaKevywhQzfKsDDzWa1w==", "requires": { "@babel/runtime": "^7.7.6", "bluebird": "^3.7.2" } }, "gatsby-transformer-sharp": { - "version": "2.3.16", - "resolved": "https://registry.npmjs.org/gatsby-transformer-sharp/-/gatsby-transformer-sharp-2.3.16.tgz", - "integrity": "sha512-XYQGwtIW6PKZ9KOvS/20IIZanAV7aXPRo1LqmnSK5KYQdgS0vgXCkMM35Sham26sZDKxsNM3+AjmDtCnWIblnw==", + "version": "2.3.17", + "resolved": "https://registry.npmjs.org/gatsby-transformer-sharp/-/gatsby-transformer-sharp-2.3.17.tgz", + "integrity": "sha512-cFVzZ6PzBtwWTuyqluawuJbtAAmUlMZM6+99LUgosOntKse66qK1cSHna8rz1W7i2VZ/mddY76HPs+7XX/ewTg==", "requires": { "@babel/runtime": "^7.7.6", "bluebird": "^3.7.2", @@ -9871,9 +9962,9 @@ } }, "gatsby-transformer-yaml": { - "version": "2.2.25", - "resolved": "https://registry.npmjs.org/gatsby-transformer-yaml/-/gatsby-transformer-yaml-2.2.25.tgz", - "integrity": "sha512-W+rbrTbpabF74U9B6PcqwbUSvlKPtnUEq+ujx4w8mqbP152ttN15TRFtZHmqQdqupokdHMzq87dTZlD4qkWbzw==", + "version": "2.2.26", + "resolved": "https://registry.npmjs.org/gatsby-transformer-yaml/-/gatsby-transformer-yaml-2.2.26.tgz", + "integrity": "sha512-+wsRtRREg68tUxpf0nBcJLDKS/RewTo01tvej35PcA7zbf8/jpuJG/EOKgj2nQpi5UMYL6aboj7dVqSJAZ4lhw==", "requires": { "@babel/runtime": "^7.7.6", "js-yaml": "^3.13.1", @@ -9916,15 +10007,6 @@ } } }, - "gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", - "dev": true, - "requires": { - "globule": "^1.0.0" - } - }, "gensync": { "version": "1.0.0-beta.1", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", @@ -10142,17 +10224,6 @@ "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", "dev": true }, - "globule": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.0.tgz", - "integrity": "sha512-YlD4kdMqRCQHrhVdonet4TdRtv1/sZKepvoxNT4Nrhrp5HI8XFfc8kFlGlBn2myBo80aGp8Eft259mbcUJhgSg==", - "dev": true, - "requires": { - "glob": "~7.1.1", - "lodash": "~4.17.10", - "minimatch": "~3.0.2" - } - }, "gonzales-pe": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.2.4.tgz", @@ -11093,12 +11164,6 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, - "in-publish": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", - "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", - "dev": true - }, "indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", @@ -13093,9 +13158,9 @@ } }, "jpeg-js": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.6.tgz", - "integrity": "sha512-MUj2XlMB8kpe+8DJUGH/3UJm4XpI8XEgZQ+CiHDeyrGoKPdW/8FJv6ku+3UiYm5Fz3CWaL+iXmD8Q4Ap6aC1Jw==" + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.7.tgz", + "integrity": "sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ==" }, "js-base64": { "version": "2.5.1", @@ -14446,9 +14511,9 @@ } }, "napi-build-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.1.tgz", - "integrity": "sha512-boQj1WFgQH3v4clhu3mTNfP+vOBxorDlE8EKiMjUlLG3C4qAESnn9AxIOkFgTR2c9LtzNjPrjS60cT27ZKBhaA==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" }, "natural-compare": { "version": "1.4.0", @@ -14466,9 +14531,9 @@ "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" }, "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" }, "nice-try": { "version": "1.0.5", @@ -14476,9 +14541,9 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, "node-abi": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.14.0.tgz", - "integrity": "sha512-y54KGgEOHnRHlGQi7E5UiryRkH8bmksmQLj/9iLAjoje743YS+KaKB/sDYXgqtT0J16JT3c3AYJZNI98aU/kYg==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.15.0.tgz", + "integrity": "sha512-FeLpTS0F39U7hHZU1srAK4Vx+5AHNVOTP+hxBNQknR/54laTHSFIJkDWDqiquY1LeLUgTfPN7sLPhMubx0PLAg==", "requires": { "semver": "^5.4.1" } @@ -14520,54 +14585,6 @@ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==" }, - "node-gyp": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", - "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", - "dev": true, - "requires": { - "fstream": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "osenv": "0", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^2.0.0", - "which": "1" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - }, - "tar": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", - "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", - "dev": true, - "requires": { - "block-stream": "*", - "fstream": "^1.0.12", - "inherits": "2" - } - } - } - }, "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -14660,87 +14677,6 @@ } } }, - "node-sass": { - "version": "4.13.1", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.13.1.tgz", - "integrity": "sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw==", - "dev": true, - "requires": { - "async-foreach": "^0.1.3", - "chalk": "^1.1.1", - "cross-spawn": "^3.0.0", - "gaze": "^1.0.0", - "get-stdin": "^4.0.1", - "glob": "^7.0.3", - "in-publish": "^2.0.0", - "lodash": "^4.17.15", - "meow": "^3.7.0", - "mkdirp": "^0.5.1", - "nan": "^2.13.2", - "node-gyp": "^3.8.0", - "npmlog": "^4.0.0", - "request": "^2.88.0", - "sass-graph": "^2.2.4", - "stdout-stream": "^1.4.0", - "true-case-path": "^1.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "cross-spawn": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", - "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, - "true-case-path": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", - "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", - "dev": true, - "requires": { - "glob": "^7.1.2" - } - } - } - }, "noms": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", @@ -14778,15 +14714,6 @@ "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=" }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true, - "requires": { - "abbrev": "1" - } - }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -15200,12 +15127,6 @@ "arch": "^2.1.0" } }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, "os-locale": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", @@ -15237,16 +15158,6 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, "p-cancelable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", @@ -19447,270 +19358,6 @@ } } }, - "sass-graph": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", - "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", - "dev": true, - "requires": { - "glob": "^7.0.0", - "lodash": "^4.0.0", - "scss-tokenizer": "^0.2.3", - "yargs": "^7.0.0" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "^1.0.0" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - } - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.0" - } - }, - "yargs-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", - "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", - "dev": true, - "requires": { - "camelcase": "^3.0.0" - } - } - } - }, - "sass-loader": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.3.1.tgz", - "integrity": "sha512-tuU7+zm0pTCynKYHpdqaPpe+MMTQ76I9TPZ7i4/5dZsigE350shQWe5EZNl5dBidM49TPET75tNqRbcsUZWeNA==", - "requires": { - "clone-deep": "^4.0.1", - "loader-utils": "^1.0.1", - "neo-async": "^2.5.0", - "pify": "^4.0.1", - "semver": "^6.3.0" - }, - "dependencies": { - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "requires": { - "kind-of": "^6.0.2" - } - } - } - }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -19753,27 +19400,6 @@ "invariant": "^2.2.4" } }, - "scss-tokenizer": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", - "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", - "dev": true, - "requires": { - "js-base64": "^2.1.8", - "source-map": "^0.4.2" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, "seek-bzip": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", @@ -20128,9 +19754,9 @@ } }, "mimic-response": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.0.0.tgz", - "integrity": "sha512-8ilDoEapqA4uQ3TwS0jakGONKXVJqpy+RpM+3b7pLdOjghCrEiGp9SRkFbUHAmZW9vdnrENWHjaweIoTIJExSQ==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==" } } }, @@ -20797,15 +20423,6 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" }, - "stdout-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", - "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } - }, "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", @@ -21928,11 +21545,11 @@ } }, "tar-stream": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.0.tgz", - "integrity": "sha512-+DAn4Nb4+gz6WZigRzKEZl1QuJVOLtAwwF+WUxy1fJ6X63CaGaUAxJRD2KEn1OMfcbCjySTYpNC6WmfQoIEOdw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.1.tgz", + "integrity": "sha512-GZjLk64XcE/58qwIc1ZfXGqTSE4OutPMEkfBE/oh9eJ4x1eMRjYkgrLrav7PzddpvIpSJSGi8FgNNYXdB9Vumg==", "requires": { - "bl": "^3.0.0", + "bl": "^4.0.1", "end-of-stream": "^1.4.1", "fs-constants": "^1.0.0", "inherits": "^2.0.3", @@ -21940,9 +21557,9 @@ }, "dependencies": { "readable-stream": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz", - "integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -22398,9 +22015,9 @@ }, "dependencies": { "buffer": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.3.tgz", - "integrity": "sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.5.0.tgz", + "integrity": "sha512-9FTEDjLjwoAkEwyMGDjYJQN2gfRgOKBKRfiglhvibGbpeeU/pQn1bJxQqm32OD/AIeEuHxU9roxXxg34Byp/Ww==", "requires": { "base64-js": "^1.0.2", "ieee754": "^1.1.4" @@ -24117,10 +23734,18 @@ "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=" }, + "xregexp": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.3.0.tgz", + "integrity": "sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g==", + "requires": { + "@babel/runtime-corejs3": "^7.8.3" + } + }, "xstate": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/xstate/-/xstate-4.7.8.tgz", - "integrity": "sha512-pRCBefTPvQRJWpvFi9xP4PkgozqpppKjC4xM1WjeFWxIroV1b7Jch4tnky30ZO4ywpVyn8bQMNRIC+5tuTfEKQ==" + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/xstate/-/xstate-4.8.0.tgz", + "integrity": "sha512-xHSYQtCHLkcrFRxa5lK4Lp1rnKt00a80jcKFMQiMBuE+6MvTYv7twwqYpzjsJoKFjGZB3GGEpZAuY1dmlPTh/g==" }, "xtend": { "version": "4.0.2", diff --git a/package.json b/package.json index 91a9dd9..a3c415a 100644 --- a/package.json +++ b/package.json @@ -25,22 +25,21 @@ "@loadable/component": "^5.12.0", "axios": "^0.19.2", "file-saver": "^2.0.2", - "gatsby": "^2.19.30", - "gatsby-image": "^2.2.42", - "gatsby-plugin-manifest": "^2.2.42", + "gatsby": "^2.19.32", + "gatsby-image": "^2.2.43", + "gatsby-plugin-manifest": "^2.2.44", "gatsby-plugin-matomo": "^0.8.1", - "gatsby-plugin-offline": "^3.0.35", - "gatsby-plugin-react-helmet": "^3.1.22", - "gatsby-plugin-sass": "^2.1.29", - "gatsby-plugin-sharp": "^2.4.5", - "gatsby-plugin-sitemap": "^2.2.27", + "gatsby-plugin-offline": "^3.0.37", + "gatsby-plugin-react-helmet": "^3.1.23", + "gatsby-plugin-sharp": "^2.4.7", + "gatsby-plugin-sitemap": "^2.2.28", "gatsby-plugin-svgr": "^2.0.2", "gatsby-plugin-use-dark-mode": "^1.1.2", "gatsby-plugin-webpack-size": "^1.0.0", - "gatsby-source-filesystem": "^2.1.48", - "gatsby-transformer-json": "^2.2.26", - "gatsby-transformer-sharp": "^2.3.16", - "gatsby-transformer-yaml": "^2.2.25", + "gatsby-source-filesystem": "^2.1.50", + "gatsby-transformer-json": "^2.2.27", + "gatsby-transformer-sharp": "^2.3.17", + "gatsby-transformer-yaml": "^2.2.26", "giphy-js-sdk-core": "^1.0.6", "graphql": "^14.6.0", "intersection-observer": "^0.7.0", @@ -69,14 +68,14 @@ "@welldone-software/why-did-you-render": "^4.0.5", "babel-eslint": "^10.1.0", "babel-jest": "^25.1.0", - "babel-preset-gatsby": "^0.2.29", + "babel-preset-gatsby": "^0.2.31", "chalk": "^3.0.0", "eslint": "^6.8.0", "eslint-config-prettier": "^6.10.0", "eslint-loader": "^3.0.3", "eslint-plugin-graphql": "^3.1.1", "eslint-plugin-prettier": "^3.1.2", - "eslint-plugin-react": "^7.18.3", + "eslint-plugin-react": "^7.19.0", "eslint-plugin-react-hooks": "^2.5.0", "eslint-plugin-testing-library": "^2.2.3", "gatsby-plugin-webpack-bundle-analyser-v2": "^1.1.8", @@ -84,7 +83,6 @@ "jest": "^25.1.0", "jest-canvas-mock": "^2.2.0", "js-yaml": "^3.13.1", - "node-sass": "^4.13.1", "ora": "^4.0.3", "prepend": "^1.0.2", "prettier": "^1.19.1", diff --git a/src/components/Layout.jsx b/src/components/Layout.jsx index f28e7f0..37dcc48 100644 --- a/src/components/Layout.jsx +++ b/src/components/Layout.jsx @@ -7,7 +7,7 @@ import Typekit from './atoms/Typekit' import HostnameCheck from './atoms/HostnameCheck' import Header from './organisms/Header' import Footer from './organisms/Footer' -import styles from './Layout.module.scss' +import styles from './Layout.module.css' import { useMeta } from '../hooks/use-meta' // https://github.com/welldone-software/why-did-you-render diff --git a/src/components/Layout.module.css b/src/components/Layout.module.css new file mode 100644 index 0000000..b350cd2 --- /dev/null +++ b/src/components/Layout.module.css @@ -0,0 +1,15 @@ +.screen { + margin-top: calc(var(--spacer) * var(--line-height)); +} + +.screen > article { + display: grid; + grid-template-columns: + [full-start] minmax(var(--spacer), 1fr) + [main-start] minmax(0, 38rem) [main-end] + minmax(var(--spacer), 1fr) [full-end]; +} + +.screen > article > * { + grid-column: main; +} diff --git a/src/components/Layout.module.scss b/src/components/Layout.module.scss deleted file mode 100644 index 76aa6c0..0000000 --- a/src/components/Layout.module.scss +++ /dev/null @@ -1,17 +0,0 @@ -@import 'variables'; - -.screen { - margin-top: $spacer * $line-height; - - > article { - display: grid; - grid-template-columns: - [full-start] minmax($spacer, 1fr) - [main-start] minmax(0, 38rem) [main-end] - minmax($spacer, 1fr) [full-end]; - - > * { - grid-column: main; - } - } -} diff --git a/src/components/atoms/Button.jsx b/src/components/atoms/Button.jsx index 1f0f1ea..4272412 100644 --- a/src/components/atoms/Button.jsx +++ b/src/components/atoms/Button.jsx @@ -1,6 +1,6 @@ import React from 'react' import PropTypes from 'prop-types' -import styles from './Button.module.scss' +import styles from './Button.module.css' const Button = props => ( diff --git a/src/components/atoms/Button.module.css b/src/components/atoms/Button.module.css new file mode 100644 index 0000000..57be23c --- /dev/null +++ b/src/components/atoms/Button.module.css @@ -0,0 +1,42 @@ +.button { + display: block; + width: 100%; + color: var(--brand-cyan); + text-align: center; + border-radius: var(--border-radius); + padding: calc(var(--spacer) / 4) calc(var(--spacer) / 2); + transition-property: all; + background: var(--box-background-color); + border: 0.05rem solid var(--brand-cyan); + font-size: var(--font-size-small); + text-transform: uppercase; + cursor: pointer; +} + +@media (min-width: 30rem) { + .button { + display: inline-block; + width: auto; + } +} + +.button svg { + margin-right: calc(var(--spacer) / 4); + transition: 0.2s var(--easing); + margin-bottom: -0.1rem; + width: var(--font-size-small); + height: var(--font-size-small); +} + +.button:hover, +.button:focus { + color: #5ebeb1; + border-color: #5ebeb1; + transform: translate3d(0, -0.1rem, 0); + box-shadow: var(--box-shadow); +} + +.button:active { + transition: none; + background: var(--box-background-color); +} diff --git a/src/components/atoms/Button.module.scss b/src/components/atoms/Button.module.scss deleted file mode 100644 index af60cc0..0000000 --- a/src/components/atoms/Button.module.scss +++ /dev/null @@ -1,53 +0,0 @@ -@import 'variables'; - -.button { - display: block; - width: 100%; - color: $brand-cyan; - text-align: center; - border-radius: $border-radius; - padding: $spacer / 4 $spacer / 2; - transition-property: all; - background: rgba(#fff, 0.15); - border: 0.05rem solid rgba($brand-cyan, 0.75); - font-size: $font-size-small; - text-transform: uppercase; - cursor: pointer; - - @media (min-width: 30rem) { - display: inline-block; - width: auto; - } - - svg { - margin-right: $spacer / 4; - transition: 0.2s $easing; - margin-bottom: -0.1rem; - width: $font-size-small; - height: $font-size-small; - } - - &:hover, - &:focus { - color: lighten($brand-cyan, 10%); - border-color: rgba(lighten($brand-cyan, 10%), 0.75); - transform: translate3d(0, -0.1rem, 0); - box-shadow: 0 6px 10px rgba($brand-main, 0.1), - 0 10px 25px rgba($brand-main, 0.05); - } - - &:active { - transition: none; - background: rgba(#fff, 0.15); - } - - :global(.dark) & { - background: darken($body-background-color--dark, 1%); - - &:hover, - &:focus { - box-shadow: 0 6px 10px rgba(darken($brand-main, 20%), 0.1), - 0 10px 25px rgba(darken($brand-main, 20%), 0.2); - } - } -} diff --git a/src/components/atoms/FullWidth.jsx b/src/components/atoms/FullWidth.jsx index a6ffe4c..d6aa12c 100644 --- a/src/components/atoms/FullWidth.jsx +++ b/src/components/atoms/FullWidth.jsx @@ -1,6 +1,6 @@ import React from 'react' import PropTypes from 'prop-types' -import styles from './FullWidth.module.scss' +import styles from './FullWidth.module.css' const FullWidth = ({ children }) => (
{children}
diff --git a/src/components/atoms/FullWidth.module.scss b/src/components/atoms/FullWidth.module.css similarity index 69% rename from src/components/atoms/FullWidth.module.scss rename to src/components/atoms/FullWidth.module.css index 5756399..b54f6a8 100644 --- a/src/components/atoms/FullWidth.module.scss +++ b/src/components/atoms/FullWidth.module.css @@ -1,5 +1,3 @@ -@import 'variables'; - .fullWidth { grid-column: full !important; } diff --git a/src/components/atoms/HostnameCheck.jsx b/src/components/atoms/HostnameCheck.jsx index 53ec546..2656ee7 100644 --- a/src/components/atoms/HostnameCheck.jsx +++ b/src/components/atoms/HostnameCheck.jsx @@ -1,7 +1,7 @@ import React, { PureComponent } from 'react' import PropTypes from 'prop-types' import Helmet from 'react-helmet' -import styles from './HostnameCheck.module.scss' +import styles from './HostnameCheck.module.css' export default class HostnameCheck extends PureComponent { static propTypes = { diff --git a/src/components/atoms/HostnameCheck.module.css b/src/components/atoms/HostnameCheck.module.css new file mode 100644 index 0000000..3142e6c --- /dev/null +++ b/src/components/atoms/HostnameCheck.module.css @@ -0,0 +1,16 @@ +.hostnameInfo { + position: sticky; + top: 0; + z-index: 99; + padding: calc(var(--spacer) / 3); + font-size: var(--font-size-small); + font-weight: bold; + background: var(--brand-light); +} + +.hostnameInfo p { + margin: auto; + margin-bottom: 0; + max-width: 70em; + text-align: center; +} diff --git a/src/components/atoms/HostnameCheck.module.scss b/src/components/atoms/HostnameCheck.module.scss deleted file mode 100644 index 94557d4..0000000 --- a/src/components/atoms/HostnameCheck.module.scss +++ /dev/null @@ -1,22 +0,0 @@ -@import 'variables'; - -.hostnameInfo { - position: sticky; - top: 0; - z-index: 99; - padding: $spacer / 3; - font-size: $font-size-small; - font-weight: bold; - background: rgba($brand-light, 0.8); - - :global(.dark) & { - background: rgba($body-background-color--dark, 0.8); - } - - p { - margin: auto; - margin-bottom: 0; - max-width: $screen-lg; - text-align: center; - } -} diff --git a/src/components/atoms/Icon.jsx b/src/components/atoms/Icon.jsx index e61eedb..d178c45 100644 --- a/src/components/atoms/Icon.jsx +++ b/src/components/atoms/Icon.jsx @@ -25,7 +25,7 @@ import { Info } from 'react-feather' import { ReactComponent as Dribbble } from '../../images/dribbble.svg' -import styles from './Icon.module.scss' +import styles from './Icon.module.css' const Icon = memo(({ name, ...props }) => { const components = { diff --git a/src/components/atoms/Icon.module.scss b/src/components/atoms/Icon.module.css similarity index 67% rename from src/components/atoms/Icon.module.scss rename to src/components/atoms/Icon.module.css index 0a3b81c..a9bdcc1 100644 --- a/src/components/atoms/Icon.module.scss +++ b/src/components/atoms/Icon.module.css @@ -1,8 +1,6 @@ -@import 'variables'; - .icon { - width: $font-size-base; - height: $font-size-base; + width: var(--font-size-base); + height: var(--font-size-base); stroke: currentColor; stroke-width: 0.1rem; stroke-linecap: round; diff --git a/src/components/atoms/ProjectImage.jsx b/src/components/atoms/ProjectImage.jsx index 50ee341..dc85774 100644 --- a/src/components/atoms/ProjectImage.jsx +++ b/src/components/atoms/ProjectImage.jsx @@ -2,7 +2,7 @@ import React, { PureComponent } from 'react' import PropTypes from 'prop-types' import { graphql } from 'gatsby' import Img from 'gatsby-image' -import styles from './ProjectImage.module.scss' +import styles from './ProjectImage.module.css' export default class ProjectImage extends PureComponent { static propTypes = { diff --git a/src/components/atoms/ProjectImage.module.css b/src/components/atoms/ProjectImage.module.css new file mode 100644 index 0000000..ae521b4 --- /dev/null +++ b/src/components/atoms/ProjectImage.module.css @@ -0,0 +1,18 @@ +.projectImage { + margin-left: auto; + margin-right: auto; + display: block; + border-radius: var(--border-radius); + overflow: hidden; + box-shadow: var(--box-shadow); +} + +@media (min-width: 1200px) { + .projectImage { + max-width: var(--projectImageMaxWidth); + } +} + +.projectImage img { + display: block; +} diff --git a/src/components/atoms/ProjectImage.module.scss b/src/components/atoms/ProjectImage.module.scss deleted file mode 100644 index f0a1fc1..0000000 --- a/src/components/atoms/ProjectImage.module.scss +++ /dev/null @@ -1,24 +0,0 @@ -@import 'variables'; - -.projectImage { - margin-left: auto; - margin-right: auto; - display: block; - border-radius: $border-radius; - overflow: hidden; - box-shadow: 0 3px 5px rgba($brand-main, 0.15), - 0 5px 16px rgba($brand-main, 0.15); - - @media (min-width: $projectImageMaxWidth) { - max-width: $projectImageMaxWidth; - } - - :global(.dark) & { - box-shadow: 0 3px 5px rgba(darken($brand-main, 20%), 0.15), - 0 5px 16px rgba(darken($brand-main, 20%), 0.15); - } - - img { - display: block; - } -} diff --git a/src/components/molecules/Availability.jsx b/src/components/molecules/Availability.jsx index a7671c5..308a247 100644 --- a/src/components/molecules/Availability.jsx +++ b/src/components/molecules/Availability.jsx @@ -3,7 +3,7 @@ import PropTypes from 'prop-types' import posed from 'react-pose' import { fadeIn } from '../atoms/Transitions' import { useMeta } from '../../hooks/use-meta' -import styles from './Availability.module.scss' +import styles from './Availability.module.css' const Animation = posed.aside(fadeIn) diff --git a/src/components/molecules/Availability.module.css b/src/components/molecules/Availability.module.css new file mode 100644 index 0000000..e768e2d --- /dev/null +++ b/src/components/molecules/Availability.module.css @@ -0,0 +1,21 @@ +.availability { + border-radius: var(--border-radius); + color: var(--text-color-light); + z-index: 2; + padding: calc(var(--spacer) / 2); + display: block; + margin-top: auto; +} + +.availability p { + margin-bottom: 0; +} + +.available { + background: var(--body-background-color); + color: var(--brand-main); + position: fixed; + bottom: var(--spacer); + left: 50%; + transform: translateX(-50%); +} diff --git a/src/components/molecules/Availability.module.scss b/src/components/molecules/Availability.module.scss deleted file mode 100644 index b2148c3..0000000 --- a/src/components/molecules/Availability.module.scss +++ /dev/null @@ -1,36 +0,0 @@ -@import 'variables'; - -.availability { - border-radius: $border-radius; - color: $text-color-light; - z-index: 2; - padding: $spacer / 2; - display: block; - margin-top: auto; - - :global(.dark) & { - color: $text-color-light--dark; - } - - p { - margin-bottom: 0; - } - - a { - border-bottom: 1px solid rgba($brand-cyan, 0.4); - } -} - -.available { - background: rgba($brand-light, 0.8); - color: $brand-main; - position: fixed; - bottom: $spacer; - left: 50%; - transform: translateX(-50%); - - :global(.dark) & { - background: rgba($body-background-color--dark, 0.8); - color: $brand-light; - } -} diff --git a/src/components/molecules/LogoUnit.jsx b/src/components/molecules/LogoUnit.jsx index ba50b2a..ca29941 100644 --- a/src/components/molecules/LogoUnit.jsx +++ b/src/components/molecules/LogoUnit.jsx @@ -4,7 +4,7 @@ import { Link } from 'gatsby' import posed from 'react-pose' import { moveInBottom } from '../atoms/Transitions' import { ReactComponent as Logo } from '../../images/logo.svg' -import styles from './LogoUnit.module.scss' +import styles from './LogoUnit.module.css' import { useResume } from '../../hooks/use-resume' LogoUnit.propTypes = { diff --git a/src/components/molecules/LogoUnit.module.css b/src/components/molecules/LogoUnit.module.css new file mode 100644 index 0000000..89d6505 --- /dev/null +++ b/src/components/molecules/LogoUnit.module.css @@ -0,0 +1,68 @@ +.logounit { + pointer-events: none; + display: block; + width: 100%; +} + +.logo { + display: block; + width: 1.5rem; + height: 1.5rem; + fill: var(--text-color-light); + margin-bottom: calc(var(--spacer) / 2); + margin-left: auto; + margin-right: auto; +} + +.title, +.description { + display: inline-block; + margin-bottom: 0; +} + +.title { + font-size: var(--font-size-h3); + margin-right: calc(var(--spacer) / 4); + line-height: var(--line-height); +} + +.description { + font-size: var(--font-size-h4); + color: var(--text-color); +} + +.description::before, +.description::after { + opacity: 0.4; +} + +.description::before { + content: '{ '; +} + +.description::after { + content: ' }'; +} + +.minimal { + composes: logounit; + pointer-events: all; +} + +.minimal, +.minimal:hover, +.minimal:focus { + transform: scale(0.7); + transform-origin: top center; + transform-box: border-box; +} + +.minimal .title, +.minimal .description { + color: var(--text-color-light); +} + +.minimal .logo { + margin-bottom: calc(var(--spacer) / 3); + opacity: 0.5; +} diff --git a/src/components/molecules/LogoUnit.module.scss b/src/components/molecules/LogoUnit.module.scss deleted file mode 100644 index 5d80fdf..0000000 --- a/src/components/molecules/LogoUnit.module.scss +++ /dev/null @@ -1,75 +0,0 @@ -@import 'variables'; - -.logounit { - pointer-events: none; - display: block; - width: 100%; -} - -.logo { - display: block; - width: 1.5rem; - height: 1.5rem; - fill: $brand-grey-light; - margin-bottom: $spacer / 2; - margin-left: auto; - margin-right: auto; -} - -.title, -.description { - display: inline-block; - margin-bottom: 0; -} - -.title { - font-size: $font-size-h3; - margin-right: $spacer / 4; - color: $brand-main; - line-height: $line-height; -} - -.description { - font-size: $font-size-h4; - color: $brand-grey-light; - - &::before, - &::after { - opacity: 0.4; - } - - &::before { - content: '{ '; - } - - &::after { - content: ' }'; - } -} - -.minimal { - composes: logounit; - pointer-events: all; - - &, - &:hover, - &:focus { - transform: scale(0.7); - transform-origin: top center; - transform-box: border-box; - } - - .title, - .description { - color: $text-color-light; - - :global(.dark) & { - color: $text-color-light--dark; - } - } - - .logo { - margin-bottom: $spacer / 3; - opacity: 0.5; - } -} diff --git a/src/components/molecules/Networks.jsx b/src/components/molecules/Networks.jsx index 8a5946d..f2c0cdf 100644 --- a/src/components/molecules/Networks.jsx +++ b/src/components/molecules/Networks.jsx @@ -4,7 +4,7 @@ import posed from 'react-pose' import { moveInTop } from '../atoms/Transitions' import Icon from '../atoms/Icon' import { useResume } from '../../hooks/use-resume' -import styles from './Networks.module.scss' +import styles from './Networks.module.css' const linkClasses = key => key === 'Mail' ? `u-email ${styles.link}` : `u-url ${styles.link}` diff --git a/src/components/molecules/Networks.module.css b/src/components/molecules/Networks.module.css new file mode 100644 index 0000000..2a7b0f8 --- /dev/null +++ b/src/components/molecules/Networks.module.css @@ -0,0 +1,68 @@ +.networks { + margin-top: calc(var(--spacer) * var(--line-height)); + margin-left: auto; + margin-right: auto; + width: 100%; + text-align: center; + display: flex; + flex-wrap: wrap; + justify-content: center; +} + +.title { + display: block; + font-size: var(--font-size-mini); + color: var(--brand-grey-light); + opacity: 0; + transform: translate3d(0, 0.5rem, 0); + transition: 0.2s var(--easing); +} + +.link { + margin-left: calc(var(--spacer) / var(--line-height)); + margin-right: calc(var(--spacer) / var(--line-height)); + margin-bottom: calc(var(--spacer) / 2); + text-align: center; + display: inline-block; + flex: 0 1; + min-width: 2.5rem; +} + +.link, +.link svg { + transition: 0.2s var(--easing); +} + +.link svg { + stroke: var(--brand-grey-light); + width: 24px; + height: 24px; +} + +.link:hover svg, +.link:focus svg { + stroke: var(--brand-cyan); +} + +.link:hover .title, +.link:focus .title { + opacity: 1; + transform: translate3d(0, 0, 0); +} + +.small { + composes: networks; +} + +.small .link { + padding: calc(var(--spacer) / 4); + margin-left: calc(var(--spacer) / 7); + margin-right: calc(var(--spacer) / 7); + margin-bottom: calc(var(--spacer) / 4); +} + +.small svg { + width: var(--font-size-base); + height: var(--font-size-base); + opacity: 0.8; +} diff --git a/src/components/molecules/Networks.module.scss b/src/components/molecules/Networks.module.scss deleted file mode 100644 index 1a679be..0000000 --- a/src/components/molecules/Networks.module.scss +++ /dev/null @@ -1,71 +0,0 @@ -@import 'variables'; - -.networks { - margin-top: $spacer * $line-height; - margin-left: auto; - margin-right: auto; - width: 100%; - text-align: center; - display: flex; - flex-wrap: wrap; - justify-content: center; -} - -.title { - display: block; - font-size: $font-size-mini; - color: $brand-grey-light; - opacity: 0; - transform: translate3d(0, 0.5rem, 0); - transition: 0.2s $easing; -} - -.link { - margin-left: $spacer / $line-height; - margin-right: $spacer / $line-height; - margin-bottom: $spacer / 2; - text-align: center; - display: inline-block; - flex: 0 1; - min-width: 2.5rem; - - &, - svg { - transition: 0.2s $easing; - } - - svg { - stroke: $brand-grey-light; - width: 24px; - height: 24px; - } - - &:hover, - &:focus { - svg { - stroke: $brand-cyan; - } - - .title { - opacity: 1; - transform: translate3d(0, 0, 0); - } - } -} - -.small { - composes: networks; - - .link { - padding: $spacer / 4; - margin-left: $spacer / 7; - margin-right: $spacer / 7; - margin-bottom: $spacer / 4; - } - - svg { - width: $font-size-base; - height: $font-size-base; - opacity: 0.8; - } -} diff --git a/src/components/molecules/ProjectLinks.jsx b/src/components/molecules/ProjectLinks.jsx index 362a39d..cf76c58 100644 --- a/src/components/molecules/ProjectLinks.jsx +++ b/src/components/molecules/ProjectLinks.jsx @@ -2,7 +2,7 @@ import React from 'react' import PropTypes from 'prop-types' import Button from '../atoms/Button' import Icon from '../atoms/Icon' -import styles from './ProjectLinks.module.scss' +import styles from './ProjectLinks.module.css' ProjectLinks.propTypes = { links: PropTypes.array diff --git a/src/components/molecules/ProjectLinks.module.css b/src/components/molecules/ProjectLinks.module.css new file mode 100644 index 0000000..99a60a2 --- /dev/null +++ b/src/components/molecules/ProjectLinks.module.css @@ -0,0 +1,28 @@ +.projectLinks ul { + padding: 0; +} + +.projectLinks li { + display: flex; + align-items: center; + margin-bottom: calc(var(--spacer) / 2.1); +} + +.projectLinks a { + display: block; + width: 100%; + text-transform: none; + text-align: left; + padding-left: 1.8rem; +} + +.projectLinks svg { + stroke: var(--text-color-light); + width: var(--font-size-small); + height: var(--font-size-small); + margin-left: -1.2rem; +} + +.title { + composes: metatitle from '../templates/Project.module.css'; +} diff --git a/src/components/molecules/ProjectLinks.module.scss b/src/components/molecules/ProjectLinks.module.scss deleted file mode 100644 index 6880f23..0000000 --- a/src/components/molecules/ProjectLinks.module.scss +++ /dev/null @@ -1,31 +0,0 @@ -@import 'variables'; - -.projectLinks { - ul { - padding: 0; - } - - li { - display: flex; - align-items: center; - white-space: nowrap; - margin-bottom: $spacer / 2.1; - } - - a { - display: block; - width: 100%; - text-transform: none; - text-align: left; - } - - svg { - stroke: $brand-grey-light; - width: $font-size-small; - height: $font-size-small; - } -} - -.title { - composes: metatitle from '../templates/Project.module.scss'; -} diff --git a/src/components/molecules/ProjectNav.jsx b/src/components/molecules/ProjectNav.jsx index 69d9a24..5a1fde0 100644 --- a/src/components/molecules/ProjectNav.jsx +++ b/src/components/molecules/ProjectNav.jsx @@ -1,9 +1,9 @@ import React, { PureComponent } from 'react' import PropTypes from 'prop-types' import { Link, graphql, StaticQuery } from 'gatsby' -import Img from 'gatsby-image' import shortid from 'shortid' -import styles from './ProjectNav.module.scss' +import ProjectImage from '../atoms/ProjectImage' +import styles from './ProjectNav.module.css' const query = graphql` query { @@ -28,7 +28,7 @@ const query = graphql` const Project = ({ node, refCurrentItem }) => (
- {node.title} (
diff --git a/src/components/molecules/ProjectTechstack.module.css b/src/components/molecules/ProjectTechstack.module.css new file mode 100644 index 0000000..b43f68d --- /dev/null +++ b/src/components/molecules/ProjectTechstack.module.css @@ -0,0 +1,23 @@ +.projectTechstack ul { + padding: 0; + display: grid; + grid-template-columns: 1fr 1fr; + gap: calc(var(--spacer) / 2); +} + +.projectTechstack li { + display: flex; + align-items: center; + justify-content: center; + padding: calc(var(--spacer) / 4); + text-align: center; + background: var(--box-background-color); + border-radius: var(--border-radius); + border: 0.05rem solid transparent; + color: var(--text-color-light); + font-size: var(--font-size-small); +} + +.title { + composes: metatitle from '../templates/Project.module.css'; +} diff --git a/src/components/molecules/ProjectTechstack.module.scss b/src/components/molecules/ProjectTechstack.module.scss deleted file mode 100644 index 99f6890..0000000 --- a/src/components/molecules/ProjectTechstack.module.scss +++ /dev/null @@ -1,32 +0,0 @@ -@import 'variables'; - -.projectTechstack { - ul { - padding: 0; - display: grid; - grid-template-columns: 1fr 1fr; - grid-gap: $spacer / 2; - } - - li { - display: flex; - align-items: center; - justify-content: center; - padding: $spacer / 4; - text-align: center; - background: rgba(#fff, 0.15); - border-radius: $border-radius; - border: 0.05rem solid transparent; - color: $brand-grey-light; - font-size: $font-size-small; - - :global(.dark) & { - background: darken($body-background-color--dark, 1%); - color: $text-color--dark; - } - } -} - -.title { - composes: metatitle from '../templates/Project.module.scss'; -} diff --git a/src/components/molecules/Repository.jsx b/src/components/molecules/Repository.jsx index 03d6d87..907f276 100644 --- a/src/components/molecules/Repository.jsx +++ b/src/components/molecules/Repository.jsx @@ -1,7 +1,7 @@ import React from 'react' import PropTypes from 'prop-types' import Icon from '../atoms/Icon' -import styles from './Repository.module.scss' +import styles from './Repository.module.css' export default function Repository({ repo }) { const { diff --git a/src/components/molecules/Repository.module.css b/src/components/molecules/Repository.module.css new file mode 100644 index 0000000..6fa11c5 --- /dev/null +++ b/src/components/molecules/Repository.module.css @@ -0,0 +1,51 @@ +.repo { + padding: var(--spacer); + border-radius: var(--border-radius); + background: var(--box-background-color); + display: flex; + flex-wrap: wrap; + align-items: flex-start; + box-shadow: var(--box-shadow); +} + +.repo > * { + width: 100%; +} + +.repo p { + font-size: var(--font-size-small); +} + +.repo p:last-child { + margin: 0; +} + +.repoTitle { + font-size: var(--font-size-h5); + margin-bottom: calc(var(--spacer) / 2); +} + +.meta { + font-size: var(--font-size-small); + align-self: flex-end; + display: flex; + justify-content: space-between; +} + +.meta a { + display: inline-block; + color: var(--text-color-light); + font-variant-numeric: lining-nums; +} + +.meta a:hover, +.meta a:focus { + color: var(--brand-cyan); +} + +.meta svg { + width: var(--font-size-small); + height: var(--font-size-small); + margin-right: calc(var(--spacer) / 12); + margin-bottom: -0.1rem; +} diff --git a/src/components/molecules/Repository.module.scss b/src/components/molecules/Repository.module.scss deleted file mode 100644 index 3a1d170..0000000 --- a/src/components/molecules/Repository.module.scss +++ /dev/null @@ -1,60 +0,0 @@ -@import 'variables'; - -.repo { - padding: $spacer; - border-radius: $border-radius; - background: rgba(#fff, 0.15); - box-shadow: 0 3px 5px rgba($brand-main, 0.1), - 0 5px 16px rgba($brand-main, 0.1); - display: flex; - flex-wrap: wrap; - align-items: flex-start; - - :global(.dark) & { - background: darken($body-background-color--dark, 1%); - box-shadow: 0 3px 5px rgba(darken($brand-main, 20%), 0.1), - 0 5px 16px rgba(darken($brand-main, 20%), 0.1); - } - - > * { - width: 100%; - } - - p { - font-size: $font-size-small; - } - - p:last-child { - margin: 0; - } -} - -.repoTitle { - font-size: $font-size-h4; - margin-bottom: $spacer / 2; -} - -.meta { - font-size: $font-size-small; - align-self: flex-end; - display: flex; - justify-content: space-between; - - a { - display: inline-block; - color: $brand-grey-light; - font-variant-numeric: lining-nums; - - &:hover, - &:focus { - color: $brand-cyan; - } - } - - svg { - width: $font-size-small; - height: $font-size-small; - margin-right: $spacer / 12; - margin-bottom: -($spacer / 12); - } -} diff --git a/src/components/molecules/ThemeSwitch.jsx b/src/components/molecules/ThemeSwitch.jsx index ccb65df..38416dd 100644 --- a/src/components/molecules/ThemeSwitch.jsx +++ b/src/components/molecules/ThemeSwitch.jsx @@ -3,7 +3,7 @@ import PropTypes from 'prop-types' import Helmet from 'react-helmet' import useDarkMode from 'use-dark-mode' import Icon from '../atoms/Icon' -import styles from './ThemeSwitch.module.scss' +import styles from './ThemeSwitch.module.css' const ThemeToggle = memo(({ dark }) => ( @@ -49,7 +49,7 @@ const HeadItems = ({ bodyClass, themeColor }) => ( ) HeadItems.propTypes = { - bodyClass: PropTypes.string.isRequired, + bodyClass: PropTypes.string, themeColor: PropTypes.string.isRequired } diff --git a/src/components/molecules/ThemeSwitch.module.css b/src/components/molecules/ThemeSwitch.module.css new file mode 100644 index 0000000..2cf1142 --- /dev/null +++ b/src/components/molecules/ThemeSwitch.module.css @@ -0,0 +1,77 @@ +.themeSwitch { + position: absolute; + top: calc(var(--spacer) / 2); + right: var(--spacer); + z-index: 10; +} + +.themeSwitch svg { + stroke: var(--brand-grey-light); + width: var(--font-size-base); + height: var(--font-size-base); + margin-top: -0.05rem; +} + +.themeSwitch svg:last-child { + width: calc(var(--font-size-base) * 0.9); + height: calc(var(--font-size-base) * 0.9); +} + +@media print { + .themeSwitch { + display: none; + } +} + +.checkboxContainer { + display: flex; + align-items: center; +} + +.checkboxFake { + --knob-size: 7px; + --knob-space: 1px; + + display: block; + position: relative; + width: calc((var(--knob-size) + var(--knob-space) * 2) * 2); + height: calc(var(--knob-size) + var(--knob-space) * 4); + border: 1px solid var(--brand-grey-light); + border-radius: 15rem; + margin-left: calc(var(--spacer) / 3); + margin-right: calc(var(--spacer) / 3); +} + +.checkboxFake::after { + content: ''; + position: absolute; + top: var(--knob-space); + left: var(--knob-space); + width: var(--knob-size); + height: var(--knob-size); + background-color: var(--brand-grey-light); + border-radius: 15rem; + transition: transform 0.2s var(--easing); + transform: translate3d(0, 0, 0); +} + +.checkbox { + position: relative; + cursor: pointer; +} + +.checkbox [type='checkbox'], +.checkbox .label { + width: 1px; + height: 1px; + border: 0; + clip: rect(0 0 0 0); + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; +} + +.checkbox [type='checkbox']:checked + .checkboxContainer .checkboxFake::after { + transform: translate3d(100%, 0, 0); +} diff --git a/src/components/molecules/ThemeSwitch.module.scss b/src/components/molecules/ThemeSwitch.module.scss deleted file mode 100644 index 88db239..0000000 --- a/src/components/molecules/ThemeSwitch.module.scss +++ /dev/null @@ -1,85 +0,0 @@ -@import 'variables'; - -.themeSwitch { - position: absolute; - top: $spacer / 2; - right: $spacer; - z-index: 10; - - svg { - stroke: $brand-grey-light; - width: $font-size-base; - height: $font-size-base; - margin-top: -0.05rem; - - &:last-child { - width: $font-size-base * 0.9; - height: $font-size-base * 0.9; - } - } - - @media print { - display: none; - } -} - -.checkboxContainer { - display: flex; - align-items: center; -} - -$knob-size: 7px; -$knob-space: 1px; - -.checkboxFake { - display: block; - position: relative; - width: ($knob-size + ($knob-space * 2)) * 2; - height: $knob-size + ($knob-space * 4); - border: 1px solid $brand-grey-light; - border-radius: 15rem; - margin-left: $spacer / 3; - margin-right: $spacer / 3; - - &::after { - content: ''; - position: absolute; - top: $knob-space; - left: $knob-space; - width: $knob-size; - height: $knob-size; - background-color: $brand-grey-light; - border-radius: 15rem; - transition: transform 0.2s $easing; - transform: translate3d(0, 0, 0); - } -} - -.checkbox { - position: relative; - cursor: pointer; - - [type='checkbox'], - .label { - width: 1px; - height: 1px; - border: 0; - clip: rect(0 0 0 0); - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - } - - [type='checkbox'] { - &:checked { - + .checkboxContainer { - .checkboxFake { - &::after { - transform: translate3d(100%, 0, 0); - } - } - } - } - } -} diff --git a/src/components/organisms/Footer.jsx b/src/components/organisms/Footer.jsx index 23ca5de..00db1ac 100644 --- a/src/components/organisms/Footer.jsx +++ b/src/components/organisms/Footer.jsx @@ -4,7 +4,7 @@ import { graphql, useStaticQuery } from 'gatsby' import loadable from '@loadable/component' import LogoUnit from '../molecules/LogoUnit' import Networks from '../molecules/Networks' -import styles from './Footer.module.scss' +import styles from './Footer.module.css' import { useMeta } from '../../hooks/use-meta' const LazyVcard = loadable(() => import('../atoms/Vcard')) diff --git a/src/components/organisms/Footer.module.css b/src/components/organisms/Footer.module.css new file mode 100644 index 0000000..2e81827 --- /dev/null +++ b/src/components/organisms/Footer.module.css @@ -0,0 +1,30 @@ +.footer { + padding: var(--spacer); + padding-top: calc(var(--spacer) * 4); + text-align: center; + color: var(--text-color-light); +} + +.footer, +.footer small { + font-size: var(--font-size-mini); +} + +.footer > aside { + margin-top: 0; + margin-bottom: calc(var(--spacer) * 2); +} + +.actions a { + display: inline-block; + padding: 0 calc(var(--spacer) / 4); + font-size: var(--font-size-small); + margin-left: calc(var(--spacer) / 2); + margin-right: calc(var(--spacer) / 2); + margin-bottom: calc(var(--spacer) / 2); + color: var(--text-color-light); +} + +.copyright a { + color: inherit; +} diff --git a/src/components/organisms/Footer.module.scss b/src/components/organisms/Footer.module.scss deleted file mode 100644 index c405643..0000000 --- a/src/components/organisms/Footer.module.scss +++ /dev/null @@ -1,44 +0,0 @@ -@import 'variables'; - -.footer { - padding: $spacer; - padding-top: $spacer * 4; - text-align: center; - color: $text-color-light; - - &, - small { - font-size: $font-size-mini; - } - - > aside { - margin-top: 0; - margin-bottom: $spacer * 2; - } - - :global(.dark) & { - color: $text-color-light--dark; - } -} - -.actions { - a { - display: inline-block; - padding: 0 $spacer / 4; - font-size: $font-size-small; - margin-left: $spacer / 2; - margin-right: $spacer / 2; - margin-bottom: $spacer / 2; - color: $text-color-light; - - :global(.dark) & { - color: $text-color-light--dark; - } - } -} - -.copyright { - a { - color: inherit; - } -} diff --git a/src/components/organisms/Header.jsx b/src/components/organisms/Header.jsx index 06cace0..604f7fb 100644 --- a/src/components/organisms/Header.jsx +++ b/src/components/organisms/Header.jsx @@ -4,7 +4,7 @@ import Networks from '../molecules/Networks' import Availability from '../molecules/Availability' import ThemeSwitch from '../molecules/ThemeSwitch' import LogoUnit from '../molecules/LogoUnit' -import styles from './Header.module.scss' +import styles from './Header.module.css' import { useMeta } from '../../hooks/use-meta' Header.propTypes = { diff --git a/src/components/organisms/Header.module.scss b/src/components/organisms/Header.module.css similarity index 69% rename from src/components/organisms/Header.module.scss rename to src/components/organisms/Header.module.css index 795bc11..d4a9164 100644 --- a/src/components/organisms/Header.module.scss +++ b/src/components/organisms/Header.module.css @@ -1,10 +1,8 @@ -@import 'variables'; - .header { position: relative; - padding: $spacer; + padding: var(--spacer); padding-top: 30vh; - min-height: calc(100vh - #{$spacer}); + min-height: calc(100vh - var(--spacer)); max-height: 1000px; text-align: center; display: flex; @@ -15,6 +13,6 @@ .minimal { composes: header; min-height: 0; - padding-top: $spacer * 2; + padding-top: calc(var(--spacer) * 2); padding-bottom: 0; } diff --git a/src/components/organisms/Repositories.jsx b/src/components/organisms/Repositories.jsx index e41d5ef..fc22299 100644 --- a/src/components/organisms/Repositories.jsx +++ b/src/components/organisms/Repositories.jsx @@ -2,7 +2,7 @@ import React, { memo } from 'react' import PropTypes from 'prop-types' import Repository from '../molecules/Repository' -import styles from './Repositories.module.scss' +import styles from './Repositories.module.css' Repositories.propTypes = { repos: PropTypes.array diff --git a/src/components/organisms/Repositories.module.css b/src/components/organisms/Repositories.module.css new file mode 100644 index 0000000..3d46725 --- /dev/null +++ b/src/components/organisms/Repositories.module.css @@ -0,0 +1,24 @@ +.section { + margin: calc(var(--spacer) * 3) auto 0 auto; + max-width: calc(var(--projectImageMaxWidth) + var(--spacer) * 2); + padding-left: var(--spacer); + padding-right: var(--spacer); +} + +.sectionTitle { + font-size: var(--font-size-h3); + margin-bottom: calc(var(--spacer) * 2); + text-align: center; +} + +.repos { + display: grid; + grid-template-columns: 1fr; + gap: calc(var(--spacer) * 2); +} + +@media (min-width: 18rem) { + .repos { + grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr)); + } +} diff --git a/src/components/organisms/Repositories.module.scss b/src/components/organisms/Repositories.module.scss deleted file mode 100644 index e733182..0000000 --- a/src/components/organisms/Repositories.module.scss +++ /dev/null @@ -1,29 +0,0 @@ -@import 'variables'; - -.section { - max-width: calc(#{$projectImageMaxWidth} - #{$spacer * 2}); - margin: $spacer * 3 auto 0 auto; - padding-left: $spacer; - padding-right: $spacer; -} - -.sectionTitle { - font-size: $font-size-h3; - margin-bottom: $spacer * 2; - text-align: center; -} - -.repos { - display: grid; - grid-template-columns: 1fr; - grid-gap: $spacer * 2; - - @media (min-width: $screen-sm) { - grid-template-columns: 1fr 1fr; - grid-gap: $spacer * 2; - } - - @media (min-width: $screen-md) { - grid-gap: $spacer * 3; - } -} diff --git a/src/components/templates/Project.jsx b/src/components/templates/Project.jsx index f653054..fd500a5 100644 --- a/src/components/templates/Project.jsx +++ b/src/components/templates/Project.jsx @@ -7,7 +7,7 @@ import ProjectTechstack from '../molecules/ProjectTechstack' import ProjectLinks from '../molecules/ProjectLinks' import ProjectNav from '../molecules/ProjectNav' import SEO from '../atoms/SEO' -import styles from './Project.module.scss' +import styles from './Project.module.css' class ProjectMeta extends PureComponent { static propTypes = { diff --git a/src/components/templates/Project.module.css b/src/components/templates/Project.module.css new file mode 100644 index 0000000..7571ecb --- /dev/null +++ b/src/components/templates/Project.module.css @@ -0,0 +1,50 @@ +.imageWrap { + margin-bottom: calc(var(--spacer) * 3); +} + +.title { + font-size: var(--font-size-h2); +} + +@media (min-width: 30em) { + .imageWrap { + margin-bottom: calc(var(--spacer) * 6); + } + + .title { + font-size: var(--font-size-h1); + } +} + +.description { + font-size: var(--font-size-base); + margin-bottom: calc(var(--spacer) * 2); +} + +.meta { + margin-top: -2rem; + margin-bottom: calc(var(--spacer) * 5); + display: grid; + grid-template-columns: 1fr; + gap: calc(var(--spacer) * 2); +} + +@media (min-width: 40em) { + .meta { + grid-template-columns: 2fr 3fr; + gap: calc(var(--spacer) * 2); + } +} + +.metatitle { + font-size: var(--font-size-h3); + margin-bottom: calc(var(--spacer) * 1.5); +} + +.metatitle span { + display: block; + margin-top: calc(var(--spacer) / 3); + font-size: var(--font-size-base); + font-family: var(--font-family-base); + color: var(--brand-grey-light); +} diff --git a/src/components/templates/Project.module.scss b/src/components/templates/Project.module.scss deleted file mode 100644 index 7f8feab..0000000 --- a/src/components/templates/Project.module.scss +++ /dev/null @@ -1,49 +0,0 @@ -@import 'variables'; -@import '../components/atoms/ProjectImage.module'; - -.imageWrap { - margin-bottom: $spacer * 3; - - @media (min-width: $screen-xs) { - margin-bottom: $spacer * 6; - } -} - -.title { - font-size: $font-size-h2; - - @media (min-width: $screen-xs) { - font-size: $font-size-h1; - } -} - -.description { - font-size: $font-size-base; - margin-bottom: $spacer * 2; -} - -.meta { - margin-top: -($spacer); - margin-bottom: $spacer * 5; - display: grid; - grid-template-columns: 1fr; - grid-gap: $spacer * 2; - - @media (min-width: $screen-sm) { - grid-template-columns: 2fr 3fr; - grid-gap: $spacer * 2; - } -} - -.metatitle { - font-size: $font-size-h3; - margin-bottom: $spacer * 1.5; - - span { - display: block; - margin-top: $spacer / 3; - font-size: $font-size-base; - font-family: $font-family-base; - color: $brand-grey-light; - } -} diff --git a/src/components/templates/Project.test.jsx b/src/components/templates/Project.test.jsx index 06dc588..edd5669 100644 --- a/src/components/templates/Project.test.jsx +++ b/src/components/templates/Project.test.jsx @@ -2,7 +2,7 @@ import React from 'react' import { render } from '@testing-library/react' import { createHistory, createMemorySource } from '@reach/router' import Project from './Project' -import project from '../../jest/__fixtures__/project.json' +import project from '../../../jest/__fixtures__/project.json' describe('Project', () => { const history = createHistory(createMemorySource('/oceanprotocol')) diff --git a/src/pages/404.jsx b/src/pages/404.jsx index 3a380e0..eec5f7d 100644 --- a/src/pages/404.jsx +++ b/src/pages/404.jsx @@ -4,7 +4,7 @@ import { Link } from 'gatsby' import giphyAPI from 'giphy-js-sdk-core' import SEO from '../components/atoms/SEO' import Button from '../components/atoms/Button' -import styles from './404.module.scss' +import styles from './404.module.css' // Famous last words: // "It's just the 404 page so why not expose the dev API key" diff --git a/src/pages/404.module.css b/src/pages/404.module.css new file mode 100644 index 0000000..d73b148 --- /dev/null +++ b/src/pages/404.module.css @@ -0,0 +1,16 @@ +.content { + text-align: center; + height: 100%; + max-width: 35rem; + margin-left: auto; + margin-right: auto; +} + +.content video { + display: block; + width: auto; + height: 300px; + box-shadow: 0 3px 5px rgba(var(--brand-main), 0.15), + 0 5px 16px rgba(var(--brand-main), 0.15); + margin: calc(var(--spacer) / 4) auto calc(var(--spacer) / 2) auto; +} diff --git a/src/pages/404.module.scss b/src/pages/404.module.scss deleted file mode 100644 index ef42c21..0000000 --- a/src/pages/404.module.scss +++ /dev/null @@ -1,18 +0,0 @@ -@import 'variables'; - -.content { - text-align: center; - height: 100%; - max-width: 35rem; - margin-left: auto; - margin-right: auto; - - video { - display: block; - width: auto; - height: 300px; - box-shadow: 0 3px 5px rgba($brand-main, 0.15), - 0 5px 16px rgba($brand-main, 0.15); - margin: $spacer / 4 auto $spacer / 2 auto; - } -} diff --git a/src/pages/index.jsx b/src/pages/index.jsx index d520d4e..e477a6c 100644 --- a/src/pages/index.jsx +++ b/src/pages/index.jsx @@ -4,7 +4,7 @@ import { Link, graphql } from 'gatsby' import shortid from 'shortid' import SEO from '../components/atoms/SEO' import ProjectImage from '../components/atoms/ProjectImage' -import styles from './index.module.scss' +import styles from './index.module.css' import Repositories from '../components/organisms/Repositories' import Icon from '../components/atoms/Icon' diff --git a/src/pages/index.module.css b/src/pages/index.module.css new file mode 100644 index 0000000..addd0d6 --- /dev/null +++ b/src/pages/index.module.css @@ -0,0 +1,81 @@ +.projects { + display: grid; + grid-template-columns: 1fr; + gap: calc(var(--spacer) * 3); + max-width: calc(var(--projectImageMaxWidth) + var(--spacer) * 2); + margin: 0 auto; + padding-left: var(--spacer); + padding-right: var(--spacer); +} + +@media (min-width: 30rem) { + .projects { + grid-template-columns: repeat(auto-fit, minmax(25rem, 1fr)); + } +} + +.title { + font-size: var(--font-size-h4); + opacity: 0; + position: absolute; + top: 15%; + left: 0; + margin: 0; + z-index: 2; + padding: calc(var(--spacer) / 3) var(--spacer); + color: #fff !important; + background: var(--brand-cyan); + transform: translate3d(0, -1rem, 0); + transition: transform 0.2s ease-out; +} + +.project { + position: relative; +} + +.project a { + display: block; + position: relative; +} + +.project a::after { + content: ''; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + z-index: 1; + background: transparent; + transition: background 0.2s ease-out; +} + +.project a:hover::after, +.project a:focus::after { + background: rgba(var(--brand-cyan), 0.05); +} + +.project a:hover .title, +.project a:focus .title, +.project a:hover .imageCount, +.project a:focus .imageCount { + opacity: 1; + transform: translate3d(0, 0, 0); +} + +.imageCount { + position: absolute; + bottom: 5%; + right: 2%; + color: var(--brand-cyan); + font-size: var(--font-size-small); + z-index: 10; + opacity: 0; + transform: translate3d(0, calc(var(--spacer) / 2), 0); + transition: transform 0.25s ease-out; +} + +.imageCount svg { + width: var(--font-size-base); + height: var(--font-size-base); +} diff --git a/src/pages/index.module.scss b/src/pages/index.module.scss deleted file mode 100644 index 75fbff6..0000000 --- a/src/pages/index.module.scss +++ /dev/null @@ -1,84 +0,0 @@ -@import 'variables'; - -.projects { - display: grid; - grid-template-columns: 1fr; - grid-gap: $spacer * 3; - - @media (min-width: $screen-md) { - grid-template-columns: 1fr 1fr; - max-width: calc(#{$projectImageMaxWidth} + #{$spacer * 2}); - margin: 0 auto; - padding: $spacer $spacer * 3; - } -} - -.title { - font-size: $font-size-h4; - opacity: 0; - position: absolute; - top: 15%; - left: 0; - margin: 0; - z-index: 2; - padding: $spacer / 3 $spacer; - background: rgba($brand-cyan, 0.9); - transform: translate3d(0, -1rem, 0); - transition: transform 0.2s ease-out; -} - -.project { - position: relative; - - a { - display: block; - position: relative; - - &::after { - content: ''; - position: absolute; - left: 0; - right: 0; - top: 0; - bottom: 0; - z-index: 1; - background: transparent; - transition: background 0.2s ease-out; - } - - &:hover, - &:focus { - &::after { - background: rgba($brand-cyan, 0.05); - } - - .title { - opacity: 1; - color: #fff; - transform: translate3d(0, 0, 0); - } - - .imageCount { - opacity: 1; - transform: translate3d(0, 0, 0); - } - } - } -} - -.imageCount { - position: absolute; - bottom: 5%; - right: 2%; - color: $brand-cyan; - font-size: $font-size-small; - z-index: 10; - opacity: 0; - transform: translate3d(0, $spacer / 2, 0); - transition: transform 0.25s ease-out; - - svg { - width: $font-size-base; - height: $font-size-base; - } -} diff --git a/src/pages/resume/Header.jsx b/src/pages/resume/Header.jsx index 6a4add2..a91da96 100644 --- a/src/pages/resume/Header.jsx +++ b/src/pages/resume/Header.jsx @@ -2,7 +2,7 @@ import React from 'react' import shortid from 'shortid' import { useResume } from '../../hooks/use-resume' import Icon from '../../components/atoms/Icon' -import styles from './Header.module.scss' +import styles from './Header.module.css' export default function Header() { const { basics, languages } = useResume() diff --git a/src/pages/resume/Header.module.css b/src/pages/resume/Header.module.css new file mode 100644 index 0000000..f17d7a4 --- /dev/null +++ b/src/pages/resume/Header.module.css @@ -0,0 +1,57 @@ +.title { + font-size: var(--font-size-h2); + margin-bottom: calc(var(--spacer) / 4); +} + +@media print { + .title { + margin-bottom: 0; + } +} + +.label { + font-size: var(--font-size-h3); + color: var(--text-color); + margin-bottom: 0; +} + +.contact { + list-style: none; + padding: 0; +} + +.contact li, +.contact p { + margin-bottom: calc(var(--spacer) / 4); +} + +.contact svg { + stroke: var(--text-color-light); + margin-right: calc(var(--spacer) / 4); + margin-bottom: -0.1rem; +} + +@media (min-width: 60em) { + .contact { + margin-top: calc(var(--spacer) * 2.25); + } +} + +.languages svg { + display: inline-block; +} + +.languages p { + margin-left: calc(var(--spacer) / 1.1); +} + +.languages p:first-of-type { + margin-left: 0; + display: inline-block; +} + +.languages span { + font-size: var(--font-size-small); + margin-left: calc(var(--spacer) / 4); + color: var(--text-color-light); +} diff --git a/src/pages/resume/Header.module.scss b/src/pages/resume/Header.module.scss deleted file mode 100644 index 6da5569..0000000 --- a/src/pages/resume/Header.module.scss +++ /dev/null @@ -1,69 +0,0 @@ -@import 'variables'; - -.title { - font-size: $font-size-h2; - margin-bottom: $spacer / 4; - - @media print { - margin-bottom: 0; - } -} - -.label { - font-size: $font-size-h3; - color: $brand-grey-light; - margin-bottom: 0; - - :global(.dark) & { - color: $brand-grey-dimmed; - } -} - -.contact { - list-style: none; - padding: 0; - - li, - p { - margin-bottom: $spacer / 4; - } - - svg { - stroke: $brand-grey-light; - margin-right: $spacer / 4; - margin-bottom: -0.1rem; - - :global(.dark) & { - stroke: $brand-grey; - } - } - - @media (min-width: $screen-md) { - margin-top: $spacer * 2.25; - } -} - -.languages { - svg { - display: inline-block; - } - - p { - margin-left: $spacer / 1.1; - - &:first-of-type { - margin-left: 0; - display: inline-block; - } - } - - span { - font-size: $font-size-small; - margin-left: $spacer / 4; - color: $brand-grey-light; - - :global(.dark) & { - color: $brand-grey; - } - } -} diff --git a/src/pages/resume/ResumeItem.jsx b/src/pages/resume/ResumeItem.jsx index 71f863e..72f5974 100644 --- a/src/pages/resume/ResumeItem.jsx +++ b/src/pages/resume/ResumeItem.jsx @@ -5,7 +5,7 @@ import remark2react from 'remark-react' import parse from 'remark-parse' import html from 'remark-html' import breaks from 'remark-breaks' -import styles from './ResumeItem.module.scss' +import styles from './ResumeItem.module.css' const markdownOutput = text => remark() diff --git a/src/pages/resume/ResumeItem.module.css b/src/pages/resume/ResumeItem.module.css new file mode 100644 index 0000000..a29e433 --- /dev/null +++ b/src/pages/resume/ResumeItem.module.css @@ -0,0 +1,66 @@ +.resumeItem { + padding-bottom: calc(var(--spacer) * 3); + padding-left: var(--spacer); + position: relative; + border-left: 0.1rem solid var(--text-color-light); +} + +.resumeItem::before { + content: ''; + display: block; + width: var(--font-size-mini); + height: var(--font-size-mini); + border-radius: 50%; + background: var(--color-headings); + border: 0.1rem solid var(--color-headings); + position: absolute; + left: -0.4rem; + top: 0.4rem; +} + +.resumeItem:last-child { + border: none; +} + +.resumeItem p:last-child { + margin-bottom: 0; +} + +.title { + margin-bottom: calc(var(--spacer) / 3); + font-size: var(--font-size-h4); +} + +.subTitle { + color: var(--text-color-light); + font-size: var(--font-size-h5); +} + +.time { + display: block; + margin-bottom: calc(var(--spacer) / 2); + white-space: nowrap; + font-style: italic; +} + +@media (min-width: 60em) { + .time { + text-align: right; + position: absolute; + top: -0.3rem; + right: 105%; + } +} + +@media print { + .resumeItem { + padding-bottom: calc(var(--spacer) * 2); + } + + .time { + text-align: left; + position: relative; + top: auto; + right: auto; + } +} diff --git a/src/pages/resume/ResumeItem.module.scss b/src/pages/resume/ResumeItem.module.scss deleted file mode 100644 index bcc6f83..0000000 --- a/src/pages/resume/ResumeItem.module.scss +++ /dev/null @@ -1,77 +0,0 @@ -@import 'variables'; - -.resumeItem { - padding-bottom: $spacer * 3; - padding-left: $spacer; - position: relative; - border-left: 0.1rem solid rgba($brand-grey-light, 0.25); - - &::before { - content: ''; - display: block; - width: $font-size-mini; - height: $font-size-mini; - border-radius: 50%; - background: $body-background-color; - border: 0.1rem solid $color-headings; - position: absolute; - left: -($font-size-mini / 1.8); - top: 0.15rem; - - :global(.dark) & { - background: $body-background-color--dark; - border-color: $color-headings--dark; - } - } - - p:last-child { - margin-bottom: 0; - } - - &:last-child { - border: none; - } -} - -.title { - margin-bottom: $spacer / 3; - font-size: $font-size-h4; - position: relative; - top: -($spacer / 6); -} - -.subTitle { - color: $brand-grey-light; - font-size: $font-size-h5; - - :global(.dark) & { - color: $brand-grey-dimmed; - } -} - -.time { - display: block; - margin-bottom: $spacer / 2; - white-space: nowrap; - font-style: italic; - - @media (min-width: $screen-md) { - text-align: right; - position: absolute; - top: -0.3rem; - right: 105%; - } -} - -@media print { - .resumeItem { - padding-bottom: $spacer * 2; - } - - .time { - text-align: left; - position: relative; - top: auto; - right: auto; - } -} diff --git a/src/pages/resume/index.jsx b/src/pages/resume/index.jsx index 86f1ec6..cbb3c96 100644 --- a/src/pages/resume/index.jsx +++ b/src/pages/resume/index.jsx @@ -3,7 +3,7 @@ import shortid from 'shortid' import SEO from '../../components/atoms/SEO' import Icon from '../../components/atoms/Icon' import { useResume } from '../../hooks/use-resume' -import styles from './index.module.scss' +import styles from './index.module.css' import Header from './Header' import ResumeItem from './ResumeItem' diff --git a/src/pages/resume/index.module.css b/src/pages/resume/index.module.css new file mode 100644 index 0000000..2165270 --- /dev/null +++ b/src/pages/resume/index.module.css @@ -0,0 +1,48 @@ +.resume { + padding: var(--spacer); + display: grid; + grid-gap: calc(var(--spacer) * 4); + grid-template-columns: 1fr; +} + +@media (min-width: 60em) { + .resume { + grid-template-columns: 1fr 2fr; + max-width: calc(var(--projectImageMaxWidth) + var(--spacer) * 2); + margin: 0 auto; + padding: var(--spacer) calc(var(--spacer) * 3); + } +} + +.subTitle { + font-size: var(--font-size-h3); + margin-bottom: 0; + margin-top: -(calc(var(--spacer) / 3)); +} + +.subTitle svg { + width: var(--font-size-large); + height: var(--font-size-large); + margin-right: calc(var(--spacer) / 4); + stroke: var(--brand-grey-light); +} + +@media print { + :global(html) { + font-size: 8pt; + } + + :global(body) { + background: #fff !important; + margin: 1cm; + } + + p { + color: silver; + } + + .resume { + grid-template-columns: 1fr; + max-width: 100%; + } +} diff --git a/src/pages/resume/index.module.scss b/src/pages/resume/index.module.scss deleted file mode 100644 index e3f46d9..0000000 --- a/src/pages/resume/index.module.scss +++ /dev/null @@ -1,47 +0,0 @@ -@import 'variables'; - -.resume { - padding: $spacer; - display: grid; - grid-gap: $spacer * 4; - grid-template-columns: 1fr; - - @media (min-width: $screen-md) { - grid-template-columns: 1fr 2fr; - max-width: calc(#{$projectImageMaxWidth} + #{$spacer * 2}); - margin: 0 auto; - padding: $spacer $spacer * 3; - } -} - -.subTitle { - font-size: $font-size-h3; - margin-bottom: 0; - margin-top: -($spacer / 3); - - svg { - width: $font-size-large; - height: $font-size-large; - margin-right: $spacer / 4; - stroke: $brand-grey-light; - } -} - -@media print { - :global(html) { - font-size: 8pt; - } - - body { - background: #fff !important; - margin: 1cm 1.5cm; - } - - p { - color: silver; - } - - .resume { - grid-template-columns: 1fr; - } -} diff --git a/src/styles/_variables.css b/src/styles/_variables.css new file mode 100644 index 0000000..ce09347 --- /dev/null +++ b/src/styles/_variables.css @@ -0,0 +1,61 @@ +:root { + /* Colors */ + --brand-main: #015565; + --brand-cyan: #43a699; + --brand-main-light: #88bec8; + --brand-light: #e7eef4; + --brand-grey: #4e5d63; + --brand-grey-light: #70858e; + --brand-grey-dimmed: #97abb3; + + /* Backgrounds */ + --body-background-color: var(--brand-light); + --box-background-color: rgba(255, 255, 255, 0.2); + + /* Text Colors */ + --text-color: var(--brand-grey); + --text-color-light: var(--brand-grey-light); + --color-headings: var(--brand-main); + + /* Typography */ + --font-size-root: 18px; + --font-size-base: 1rem; + --font-size-large: 1.2rem; + --font-size-small: 0.8rem; + --font-size-mini: 0.7rem; + --font-size-h1: 2.5rem; + --font-size-h2: 2rem; + --font-size-h3: 1.65rem; + --font-size-h4: 1.45rem; + --font-size-h5: var(--font-size-large); + --font-size-h6: var(--font-size-base); + --line-height: 1.6; + --line-height-small: 1.1428571429; + --font-family-base: 'ff-tisa-sans-web-pro', 'Trebuchet MS', 'Helvetica Neue', + 'Helvetica', 'Arial', 'sans-serif'; + --font-weight-base: 400; + --font-family-monospace: 'Menlo', 'Monaco', 'Consolas', 'Courier New', + 'monospace'; + --font-family-headings: 'brandon-grotesque', 'Avenir Next', 'Helvetica Neue', + 'Helvetica', 'Arial', 'sans-serif'; + --font-weight-headings: 400; + --line-height-headings: 1.1; + + /* Components spacing */ + --spacer: 1.5rem; + --border-radius: 0.25rem; + + /* Miscellanious */ + --projectImageMaxWidth: 1200px; + --easing: cubic-bezier(0.75, 0, 0.08, 1); + --box-shadow: 0 3px 5px rgba(0, 0, 0, 0.05), 0 5px 16px rgba(0, 0, 0, 0.05); +} + +.dark { + --text-color: #7e9199; + --text-color-light: var(--brand-grey); + --color-headings: var(--brand-main-light); + --body-background-color: #1d2224; + --box-background-color: rgba(255, 255, 255, 0.03); + --box-shadow: 0 3px 5px rgba(0, 0, 0, 0.25), 0 5px 16px rgba(0, 0, 0, 0.25); +} diff --git a/src/styles/_variables.scss b/src/styles/_variables.scss deleted file mode 100644 index e88b534..0000000 --- a/src/styles/_variables.scss +++ /dev/null @@ -1,79 +0,0 @@ -$projectImageMaxWidth: 1200px; -$easing: cubic-bezier(0.75, 0, 0.08, 1); - -// Colors -///////////////////////////////////// - -$brand-main: #015565; -$brand-cyan: #43a699; -$brand-main-light: #88bec8; -$brand-light: #e7eef4; - -$brand-grey: #4e5d63; -$brand-grey-light: lighten($brand-grey, 15%); -$brand-grey-dimmed: lighten($brand-grey, 50%); - -// Backgrounds -///////////////////////////////////// - -$body-background-color: $brand-light; -$body-background-color--dark: darken($brand-grey, 22%); - -// Text Colors -///////////////////////////////////// - -$text-color: $brand-grey; -$text-color-light: $brand-grey-light; - -$text-color--dark: lighten($brand-grey-light, 5%); -$text-color-light--dark: lighten($brand-grey-light, 5%); - -// Typography -///////////////////////////////////// - -$font-size-root: 18px; - -$font-size-base: 1rem; -$font-size-large: 1.2rem; -$font-size-small: 0.8rem; -$font-size-mini: 0.7rem; - -$font-size-h1: 2.5rem; -$font-size-h2: 2rem; -$font-size-h3: 1.65rem; -$font-size-h4: 1.45rem; -$font-size-h5: $font-size-large; -$font-size-h6: $font-size-base; - -$line-height: 1.5; -$line-height-small: 1.1428571429; - -$font-family-base: 'ff-tisa-sans-web-pro', 'Trebuchet MS', 'Helvetica Neue', - 'Helvetica', 'Arial', 'sans-serif'; -$font-weight-base: 400; -$font-color-base: $text-color; - -$font-family-monospace: 'Menlo', 'Monaco', 'Consolas', 'Courier New', - 'monospace'; - -$font-family-headings: 'brandon-grotesque', 'Avenir Next', 'Helvetica Neue', - 'Helvetica', 'Arial', 'sans-serif'; -$font-weight-headings: 400; -$line-height-headings: 1.1; - -$color-headings: $brand-main; -$color-headings--dark: $brand-main-light; - -// Components spacing -///////////////////////////////////// - -$spacer: ($font-size-base * $line-height); -$border-radius: 0.25rem; - -// Responsive breakpoints -///////////////////////////////////// - -$screen-xs: 30em; -$screen-sm: 40em; -$screen-md: 60em; -$screen-lg: 70em; diff --git a/src/styles/global.css b/src/styles/global.css new file mode 100644 index 0000000..9fed9bf --- /dev/null +++ b/src/styles/global.css @@ -0,0 +1,105 @@ +@import '_variables.css'; + +*, +*::before, +*::after { + box-sizing: border-box; +} + +html, +body { + margin: 0; + padding: 0; +} + +html { + font-size: var(--font-size-root); + background: var(--body-background-color); +} + +body { + font-family: var(--font-family-base); + font-weight: var(--font-weight-base); + font-size: var(--font-size-base); + line-height: var(--line-height); + color: var(--text-color); + text-rendering: optimizeLegibility; + font-feature-settings: 'liga', 'kern'; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + min-height: 100vh; + background: var(--body-background-color); + transition: background 0.2s var(--easing); +} + +p, +ul, +ol { + margin: 0 0 var(--spacer); +} + +/* Headings */ + +h1 { + font-size: var(--font-size-h1); +} + +h2 { + font-size: var(--font-size-h2); +} + +h3 { + font-size: var(--font-size-h3); +} + +h4 { + font-size: var(--font-size-h4); +} + +h5 { + font-size: var(--font-size-h5); +} + +h6 { + font-size: var(--font-size-h6); +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: var(--font-family-headings); + line-height: var(--line-height-headings); + color: var(--color-headings); + font-weight: var(--font-weight-headings); + margin: 0 0 var(--spacer); +} + +/* Links */ +a { + color: var(--brand-cyan); + text-decoration: none; + transition: 0.2s ease-out; +} + +a:hover, +a:focus { + color: #5ebeb1; +} + +/* Media */ +img, +video, +svg { + max-width: 100%; + height: auto; + margin: 0; +} + +#___gatsby { + display: flex; + min-height: 100vh; + flex-direction: column; +} diff --git a/src/styles/global.scss b/src/styles/global.scss deleted file mode 100644 index f4f2875..0000000 --- a/src/styles/global.scss +++ /dev/null @@ -1,119 +0,0 @@ -@import 'variables'; - -*, -*::before, -*::after { - box-sizing: border-box; -} - -html, -body { - margin: 0; - padding: 0; -} - -html { - font-size: $font-size-root; - background: $body-background-color; -} - -body { - font-family: $font-family-base; - font-weight: $font-weight-base; - font-size: $font-size-base; - line-height: $line-height; - color: $font-color-base; - text-rendering: optimizeLegibility; - font-feature-settings: 'liga', 'kern'; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - min-height: 100vh; - background: $body-background-color; - transition: background 0.2s $easing; - - &.dark { - background-color: $body-background-color--dark; - color: $text-color--dark; - } -} - -p, -ul, -ol { - margin: 0 0 $spacer; -} - -// Headings -///////////////////////////////////// - -h1 { - font-size: $font-size-h1; -} - -h2 { - font-size: $font-size-h2; -} - -h3 { - font-size: $font-size-h3; -} - -h4 { - font-size: $font-size-h4; -} - -h5 { - font-size: $font-size-h5; -} - -h6 { - font-size: $font-size-h6; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - font-family: $font-family-headings; - line-height: $line-height-headings; - color: $color-headings; - font-weight: $font-weight-headings; - margin: 0 0 $spacer; - - .dark & { - color: $color-headings--dark; - } -} - -// Links -///////////////////////////////////// - -a { - color: $brand-cyan; - text-decoration: none; - transition: 0.2s ease-out; - - &:hover, - &:focus { - color: lighten($brand-cyan, 10%); - } -} - -// Media -///////////////////////////////////// - -img, -video, -svg { - max-width: 100%; - height: auto; - margin: 0; -} - -#___gatsby { - display: flex; - min-height: 100vh; - flex-direction: column; -}