diff --git a/config/paths.js b/config/paths.js index b3fd764..b72b26e 100644 --- a/config/paths.js +++ b/config/paths.js @@ -55,9 +55,9 @@ module.exports = { appBuild: resolveApp('build'), appPublic: resolveApp('public'), appHtml: resolveApp('public/index.html'), - appIndexJs: resolveModule(resolveApp, 'src/index'), + appIndexJs: resolveModule(resolveApp, 'src/app/main'), appPackageJson: resolveApp('package.json'), - appSrc: resolveApp('src'), + appSrc: resolveApp('src/app'), appTsConfig: resolveApp('tsconfig.json'), appJsConfig: resolveApp('jsconfig.json'), yarnLockFile: resolveApp('yarn.lock'), diff --git a/package-lock.json b/package-lock.json index 09af430..62d0899 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,687 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/cli": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.8.4.tgz", + "integrity": "sha512-XXLgAm6LBbaNxaGhMAznXXaxtCWfuv6PIDJ9Alsy9JYTOh+j2jJz+L/162kkfU1j/pTSxK1xGmlwI4pdIMkoag==", + "dev": true, + "requires": { + "chokidar": "^2.1.8", + "commander": "^4.0.1", + "convert-source-map": "^1.1.0", + "fs-readdir-recursive": "^1.1.0", + "glob": "^7.0.0", + "lodash": "^4.17.13", + "make-dir": "^2.1.0", + "slash": "^2.0.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, + "fsevents": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", + "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "@babel/code-frame": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", @@ -2088,6 +2769,11 @@ "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==" }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -2210,6 +2896,11 @@ "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=" + }, "ansi-colors": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", @@ -2262,6 +2953,39 @@ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -2310,6 +3034,11 @@ "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + }, "array-flatten": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", @@ -2427,6 +3156,11 @@ "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=" + }, "async-limiter": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", @@ -2850,6 +3584,14 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==" }, + "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=", + "requires": { + "inherits": "~2.0.0" + } + }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -3196,6 +3938,22 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + } + } + }, "caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -3711,6 +4469,11 @@ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, "constant-case": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-2.0.0.tgz", @@ -4163,6 +4926,14 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.9.tgz", "integrity": "sha512-xz39Sb4+OaTsULgUERcCk+TJj8ylkL4aSVDQiX/ksxbELSqwkgt4d4RD7fovIdgJGSuNYqwZEiVjYY5l0ask+Q==" }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "requires": { + "array-find-index": "^1.0.1" + } + }, "cyclist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", @@ -4366,6 +5137,11 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -5895,6 +6671,14 @@ } } }, + "flux-standard-action": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/flux-standard-action/-/flux-standard-action-0.6.1.tgz", + "integrity": "sha1-bzQhG5SDTqHDzDD056+tPQ+/caI=", + "requires": { + "lodash.isplainobject": "^3.2.0" + } + }, "follow-redirects": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.10.0.tgz", @@ -6032,6 +6816,12 @@ "minipass": "^3.0.0" } }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, "fs-write-stream-atomic": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", @@ -6078,6 +6868,17 @@ "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", "optional": true }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -6088,6 +6889,62 @@ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "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=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "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", @@ -6103,6 +6960,11 @@ "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -6241,6 +7103,16 @@ } } }, + "globule": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.1.tgz", + "integrity": "sha512-OVyWOHgw29yosRHCHo7NncwR1hW5ew0W/UrvtwvjefVJeQ26q4/8r8FmPsSF1hJ93IgWkyv16pCTz6WblMzm/g==", + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.12", + "minimatch": "~3.0.2" + } + }, "graceful-fs": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", @@ -6251,6 +7123,11 @@ "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" }, + "gud": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", + "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" + }, "gzip-size": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", @@ -6344,6 +7221,11 @@ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -6428,6 +7310,19 @@ "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" }, + "history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "requires": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -6438,6 +7333,14 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "requires": { + "react-is": "^16.7.0" + } + }, "homedir-polyfill": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", @@ -6748,6 +7651,11 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, + "in-publish": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", + "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==" + }, "indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", @@ -7031,6 +7939,11 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==" + }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -7199,6 +8112,11 @@ "upper-case": "^1.1.0" } }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -7528,6 +8446,7 @@ "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", "optional": true, "requires": { + "nan": "^2.12.1", "node-pre-gyp": "*" }, "dependencies": { @@ -8304,6 +9223,11 @@ "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz", "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==" }, + "js-base64": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.2.tgz", + "integrity": "sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ==" + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -8447,6 +9371,11 @@ "object.assign": "^4.1.0" } }, + "just-curry-it": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/just-curry-it/-/just-curry-it-3.1.0.tgz", + "integrity": "sha512-mjzgSOFzlrurlURaHVjnQodyPNvrHrf1TbQP2XU9NSqBtHQPuHZ+Eb6TAJP7ASeJN9h9K0KXoRTs8u6ouHBKvg==" + }, "killable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", @@ -8631,6 +9560,11 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, + "lodash._basefor": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.3.tgz", + "integrity": "sha1-dVC06SGO8J+tJDQ7YSAhx5tMIMI=" + }, "lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", @@ -8642,6 +9576,35 @@ "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", "dev": true }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" + }, + "lodash.isplainobject": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-3.2.0.tgz", + "integrity": "sha1-moI4rhayAEMpYM1zRlEtASP79MU=", + "requires": { + "lodash._basefor": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.keysin": "^3.0.0" + } + }, + "lodash.keysin": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/lodash.keysin/-/lodash.keysin-3.0.8.tgz", + "integrity": "sha1-IsRJPrvtsUJ5YqVLRFssinZ/tH8=", + "requires": { + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -8696,6 +9659,15 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, "lower-case": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", @@ -8800,6 +9772,11 @@ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", @@ -8871,6 +9848,129 @@ } } }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "^2.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=", + "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" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "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=", + "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=", + "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=" + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "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=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "requires": { + "get-stdin": "^4.0.1" + } + } + } + }, "merge-deep": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.2.tgz", @@ -8970,6 +10070,16 @@ "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.0.tgz", "integrity": "sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY=" }, + "mini-create-react-context": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.3.2.tgz", + "integrity": "sha512-2v+OeetEyliMt5VHMXsBhABoJ0/M4RCe7fatd/fBy6SMiKazUSEt3gxxypfnk2SHMkdBYvorHRoQxuGoiwbzAw==", + "requires": { + "@babel/runtime": "^7.4.0", + "gud": "^1.0.0", + "tiny-warning": "^1.0.2" + } + }, "mini-css-extract-plugin": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", @@ -9145,6 +10255,11 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -9209,6 +10324,32 @@ "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==", + "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": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + } + } + }, "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -9488,6 +10629,98 @@ "semver": "^6.3.0" } }, + "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==", + "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-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "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=", + "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==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "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", @@ -9538,6 +10771,17 @@ "path-key": "^2.0.0" } }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, "nth-check": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", @@ -9890,6 +11134,11 @@ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, "os-locale": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", @@ -9905,6 +11154,15 @@ "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==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", @@ -11377,6 +12635,11 @@ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, "psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", @@ -11744,6 +13007,72 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "react-loadable": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/react-loadable/-/react-loadable-5.5.0.tgz", + "integrity": "sha512-C8Aui0ZpMd4KokxRdVAm2bQtI03k2RMRNzOB+IipV3yxFTSVICv7WoUr5L9ALB5BmKO1iHgZtWM8EvYG83otdg==", + "requires": { + "prop-types": "^15.5.0" + } + }, + "react-redux": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.0.tgz", + "integrity": "sha512-EvCAZYGfOLqwV7gh849xy9/pt55rJXPwmYvI4lilPM5rUT/1NxuuN59ipdBksRVSvz0KInbPnp4IfoXJXCqiDA==", + "requires": { + "@babel/runtime": "^7.5.5", + "hoist-non-react-statics": "^3.3.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.7.2", + "react-is": "^16.9.0" + } + }, + "react-router": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.1.2.tgz", + "integrity": "sha512-yjEuMFy1ONK246B+rsa0cUam5OeAQ8pyclRDgpxuSCrAlJ1qN9uZ5IgyKC7gQg0w8OM50NXHEegPh/ks9YuR2A==", + "requires": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "mini-create-react-context": "^0.3.0", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "requires": { + "isarray": "0.0.1" + } + } + } + }, + "react-router-dom": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.1.2.tgz", + "integrity": "sha512-7BPHAaIwWpZS074UKaw1FjVdZBSVWEk8IuDXdB+OkLb8vd/WRQIpA4ag9WQk61aEfQs47wHyjWUoUGGZxpQXew==", + "requires": { + "@babel/runtime": "^7.1.2", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.1.2", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + } + }, "react-test-renderer": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.13.1.tgz", @@ -11826,6 +13155,40 @@ "strip-indent": "^3.0.0" } }, + "reduce-reducers": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/reduce-reducers/-/reduce-reducers-0.4.3.tgz", + "integrity": "sha512-+CNMnI8QhgVMtAt54uQs3kUxC3Sybpa7Y63HR14uGLgI9/QR5ggHvpxwhGGe3wmx5V91YwqQIblN9k5lspAmGw==" + }, + "redux": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.5.tgz", + "integrity": "sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w==", + "requires": { + "loose-envify": "^1.4.0", + "symbol-observable": "^1.2.0" + } + }, + "redux-actions": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/redux-actions/-/redux-actions-2.6.5.tgz", + "integrity": "sha512-pFhEcWFTYNk7DhQgxMGnbsB1H2glqhQJRQrtPb96kD3hWiZRzXHwwmFPswg6V2MjraXRXWNmuP9P84tvdLAJmw==", + "requires": { + "invariant": "^2.2.4", + "just-curry-it": "^3.1.0", + "loose-envify": "^1.4.0", + "reduce-reducers": "^0.4.3", + "to-camel-case": "^1.0.0" + } + }, + "redux-analytics": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/redux-analytics/-/redux-analytics-0.3.1.tgz", + "integrity": "sha1-cTpvF+l9jB6DULuMgl9//2qjcgU=", + "requires": { + "flux-standard-action": "^0.6.0" + } + }, "redux-thunk": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.3.0.tgz", @@ -11991,6 +13354,14 @@ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "requires": { + "is-finite": "^1.0.0" + } + }, "request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -12129,6 +13500,11 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" }, + "resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -12346,6 +13722,222 @@ "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-10.0.0.tgz", "integrity": "sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg==" }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "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=", + "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==" + }, + "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=" + }, + "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=", + "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=", + "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=", + "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=", + "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=", + "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=", + "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=", + "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=" + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "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=", + "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=" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.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=", + "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=" + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "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=" + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "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=", + "requires": { + "camelcase": "^3.0.0" + } + } + } + }, "sass-loader": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", @@ -12414,6 +14006,25 @@ "ajv-keywords": "^3.4.1" } }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "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=", + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -13069,6 +14680,38 @@ "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==", + "requires": { + "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", @@ -13425,6 +15068,11 @@ } } }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -13468,6 +15116,16 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" }, + "tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "requires": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, "terser": { "version": "4.6.7", "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.7.tgz", @@ -13663,6 +15321,16 @@ "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" }, + "tiny-invariant": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", + "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==" + }, + "tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, "title-case": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz", @@ -13708,11 +15376,24 @@ "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" }, + "to-camel-case": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-camel-case/-/to-camel-case-1.0.0.tgz", + "integrity": "sha1-GlYFSy+daWKYzmamCJcyK29CPkY=", + "requires": { + "to-space-case": "^1.0.0" + } + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" }, + "to-no-case": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/to-no-case/-/to-no-case-1.0.2.tgz", + "integrity": "sha1-xyKQcWTvaxeBMsjmmTAhLRtKoWo=" + }, "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", @@ -13741,6 +15422,14 @@ "repeat-string": "^1.6.1" } }, + "to-space-case": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-space-case/-/to-space-case-1.0.0.tgz", + "integrity": "sha1-sFLar7Gysp3HcM6gFj5ewOvJ/Bc=", + "requires": { + "to-no-case": "^1.0.0" + } + }, "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", @@ -13763,6 +15452,11 @@ "punycode": "^2.1.0" } }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" + }, "trim-repeated": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", @@ -13772,6 +15466,14 @@ "escape-string-regexp": "^1.0.2" } }, + "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==", + "requires": { + "glob": "^7.1.2" + } + }, "ts-pnp": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.1.6.tgz", @@ -14131,6 +15833,11 @@ "spdx-expression-parse": "^3.0.0" } }, + "value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -14227,6 +15934,7 @@ "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", "optional": true, "requires": { + "nan": "^2.12.1", "node-pre-gyp": "*" }, "dependencies": { @@ -15010,6 +16718,7 @@ "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", "optional": true, "requires": { + "nan": "^2.12.1", "node-pre-gyp": "*" }, "dependencies": { @@ -15791,6 +17500,43 @@ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", diff --git a/package.json b/package.json index bcd7f48..84a6ea0 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,9 @@ { "name": "adobeassignment", - "homepage": "http://mohiit1502.github.io/adobeassignment", + "homepage": "http://mohiit1502.github.io/", "version": "0.1.0", "private": true, "dependencies": { - "@babel/core": "7.9.0", "@svgr/webpack": "4.3.3", "@testing-library/jest-dom": "^4.2.4", "@testing-library/react": "^9.5.0", @@ -40,6 +39,7 @@ "jest-watch-typeahead": "0.4.2", "jquery": "^3.4.1", "mini-css-extract-plugin": "0.9.0", + "node-sass": "^4.13.1", "optimize-css-assets-webpack-plugin": "5.0.3", "pnp-webpack-plugin": "1.6.4", "postcss-flexbugs-fixes": "4.1.0", @@ -51,7 +51,13 @@ "react-app-polyfill": "^1.0.6", "react-dev-utils": "^10.2.1", "react-dom": "^16.13.1", + "react-loadable": "^5.5.0", + "react-redux": "^7.2.0", + "react-router-dom": "^5.1.2", "react-test-renderer": "^16.13.1", + "redux": "^4.0.5", + "redux-actions": "^2.6.5", + "redux-analytics": "^0.3.1", "redux-thunk": "^2.3.0", "reselect": "^4.0.0", "reselect-immutable-helpers": "^1.2.2", @@ -95,6 +101,12 @@ ] }, "devDependencies": { + "@babel/cli": "^7.8.4", + "@babel/core": "^7.9.0", + "@babel/plugin-transform-react-jsx": "^7.9.4", + "@babel/preset-env": "^7.9.0", + "@babel/preset-react": "^7.9.4", + "body-parser": "^1.19.0", "gh-pages": "^2.2.0", "plop": "^2.6.0" }, @@ -150,7 +162,8 @@ }, "babel": { "presets": [ - "react-app" + "@babel/env", + "@babel/react" ] } } diff --git a/plop-templates/Page/Page.module.css.hbs b/plop-templates/Page/Page.module.scss.hbs similarity index 100% rename from plop-templates/Page/Page.module.css.hbs rename to plop-templates/Page/Page.module.scss.hbs diff --git a/src/App.css b/src/App.css deleted file mode 100644 index 74b5e05..0000000 --- a/src/App.css +++ /dev/null @@ -1,38 +0,0 @@ -.App { - text-align: center; -} - -.App-logo { - height: 40vmin; - pointer-events: none; -} - -@media (prefers-reduced-motion: no-preference) { - .App-logo { - animation: App-logo-spin infinite 20s linear; - } -} - -.App-header { - background-color: #282c34; - min-height: 100vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-size: calc(10px + 2vmin); - color: white; -} - -.App-link { - color: #61dafb; -} - -@keyframes App-logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/src/App.js b/src/App.js deleted file mode 100644 index ce9cbd2..0000000 --- a/src/App.js +++ /dev/null @@ -1,26 +0,0 @@ -import React from 'react'; -import logo from './logo.svg'; -import './App.css'; - -function App() { - return ( -
-
- logo -

- Edit src/App.js and save to reload. -

- - Learn React - -
-
- ); -} - -export default App; diff --git a/src/App.test.js b/src/App.test.js deleted file mode 100644 index 4db7ebc..0000000 --- a/src/App.test.js +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react'; -import { render } from '@testing-library/react'; -import App from './App'; - -test('renders learn react link', () => { - const { getByText } = render(); - const linkElement = getByText(/learn react/i); - expect(linkElement).toBeInTheDocument(); -}); diff --git a/src/app/actions.js b/src/app/actions.js new file mode 100644 index 0000000..308f403 --- /dev/null +++ b/src/app/actions.js @@ -0,0 +1,2 @@ +export const initializeApp = () => { +} \ No newline at end of file diff --git a/src/app/components/index.js b/src/app/components/index.js new file mode 100644 index 0000000..9812f82 --- /dev/null +++ b/src/app/components/index.js @@ -0,0 +1,9 @@ +/* PLOP_INJECT_IMPORT */ +import Header from './Header'; +import PageLoader from './PageLoader'; + +export { + /* PLOP_INJECT_EXPORT */ + Header, + PageLoader +} \ No newline at end of file diff --git a/src/app/components/molecules/Header/Header.component.scss b/src/app/components/molecules/Header/Header.component.scss new file mode 100644 index 0000000..1870eee --- /dev/null +++ b/src/app/components/molecules/Header/Header.component.scss @@ -0,0 +1,3 @@ +.c-Header { + +} diff --git a/src/app/components/molecules/Header/Header.js b/src/app/components/molecules/Header/Header.js new file mode 100644 index 0000000..8d2a1bf --- /dev/null +++ b/src/app/components/molecules/Header/Header.js @@ -0,0 +1,19 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +const Header = props => { + return ( +
+
+ ); +}; + +Header.defaultProps = { + +}; + +Header.propTypes = { + +}; + +export default Header; \ No newline at end of file diff --git a/src/app/components/molecules/Header/Header.test.js b/src/app/components/molecules/Header/Header.test.js new file mode 100644 index 0000000..4077f50 --- /dev/null +++ b/src/app/components/molecules/Header/Header.test.js @@ -0,0 +1,8 @@ +import React from 'react'; +import Header from './Header'; + +describe('Header', () => { + it('renders without error', () => { + + }); +}); \ No newline at end of file diff --git a/src/app/components/molecules/Header/index.js b/src/app/components/molecules/Header/index.js new file mode 100644 index 0000000..0db1c6b --- /dev/null +++ b/src/app/components/molecules/Header/index.js @@ -0,0 +1,3 @@ +import Header from './Header'; + +export default Header; \ No newline at end of file diff --git a/src/app/components/molecules/PageLoader/PageLoader.component.scss b/src/app/components/molecules/PageLoader/PageLoader.component.scss new file mode 100644 index 0000000..673c2e8 --- /dev/null +++ b/src/app/components/molecules/PageLoader/PageLoader.component.scss @@ -0,0 +1,82 @@ +@import url('https://fonts.googleapis.com/css?family=Indie+Flower'); + +.c-PageLoader { + margin-top: 50%; + display: flex; + align-items: center; + justify-content: center; + .is-animate { + background: #ffb200; + box-sizing: border-box; + font-size: 66px; + display: -webkit-inline-box; + padding: 14px; + border-radius: 7px; + } + .is-animate > div { + animation-name: style; + display: -webkit-inline-box; + color: #fff; + padding: 9px; + background: #ffb200; + font-family: 'Indie Flower', cursive; + box-shadow: 2px 2px 9px 2px; + } + .l{ + animation: letterspacing 1s infinite alternate cubic-bezier(.2, 0, 0, 1); + } + + .is-animate > div { + animation-duration: 1s; + animation-fill-mode: both; + animation-iteration-count: infinite; + } + + .is-animate > div:nth-child(1) { animation-delay: 0.0s } + .is-animate > div:nth-child(2) { animation-delay: 0.1s } + .is-animate > div:nth-child(3) { animation-delay: 0.2s } + .is-animate > div:nth-child(4) { animation-delay: 0.3s } + .is-animate > div:nth-child(5) { animation-delay: 0.4s } + .is-animate > div:nth-child(6) { animation-delay: 0.5s } + .is-animate > div:nth-child(7) { animation-delay: 0.6s } + + + @keyframes style { + from { + transform: scale3d(1, 1, 1); + } + 30% { + box-shadow: 0px 0px 0px 0px; + transform: scale3d(1.25, 0.75, 1); + } + 40% { + transform: scale3d(0.75, 1.25, 1); + } + 50% { + transform: scale3d(1.15, 0.85, 1); + } + 65% { + transform: scale3d(.95, 1.05, 1); + } + 75% { + transform: scale3d(1.05, .95, 1); + } + to { + transform: scale3d(1, 1, 1); + } + } + + + @keyframes letterspacing { + 0% { + filter: blur(0.1rem); + } + 100% { + filter: blur(0.5rem); + } + to { + letter-spacing: none; + filter: blur(0rem); + } + } +} diff --git a/src/app/components/molecules/PageLoader/PageLoader.jsx b/src/app/components/molecules/PageLoader/PageLoader.jsx new file mode 100644 index 0000000..d60c475 --- /dev/null +++ b/src/app/components/molecules/PageLoader/PageLoader.jsx @@ -0,0 +1,27 @@ +import React from 'react'; + +const PageLoader = props => { + return ( +
+
+
l
+
o
+
a
+
d
+
i
+
n
+
g
+
+
+ ) +}; + +PageLoader.defaultProps = { + +}; + +PageLoader.propTypes = { + +}; + +export default PageLoader; \ No newline at end of file diff --git a/src/app/components/molecules/PageLoader/PageLoader.test.js b/src/app/components/molecules/PageLoader/PageLoader.test.js new file mode 100644 index 0000000..34ad0ea --- /dev/null +++ b/src/app/components/molecules/PageLoader/PageLoader.test.js @@ -0,0 +1,8 @@ +import React from 'react'; +import PageLoader from './PageLoader'; + +describe('PageLoader', () => { + it('renders without error', () => { + + }); +}); \ No newline at end of file diff --git a/src/app/components/molecules/PageLoader/index.js b/src/app/components/molecules/PageLoader/index.js new file mode 100644 index 0000000..d7d9040 --- /dev/null +++ b/src/app/components/molecules/PageLoader/index.js @@ -0,0 +1,3 @@ +import PageLoader from './PageLoader.jsx'; + +export default PageLoader; \ No newline at end of file diff --git a/src/app/index.scss b/src/app/index.scss new file mode 100644 index 0000000..093994b --- /dev/null +++ b/src/app/index.scss @@ -0,0 +1,20 @@ +@charset 'UTF-8'; + +@import 'styles/variables'; +@import 'styles/base'; +@import 'styles/components'; +@import 'styles/pages'; + +.abcRioButtonBlue { + background-color: white!important; + color: #585f6b!important; + border-radius: 3px; +} + +.g-signin2, .fb-login-button { + display: flex!important; + justify-content: center; + margin-bottom: 10px; + border-radius: 5px; +} + diff --git a/src/app/main.js b/src/app/main.js new file mode 100644 index 0000000..ee30478 --- /dev/null +++ b/src/app/main.js @@ -0,0 +1,24 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import thunk from 'redux-thunk' +import Immutable from 'immutable' +import {createStore, applyMiddleware, compose} from 'redux' +// import * as serviceWorker from '../serviceWorker'; +import Router from './router'; +import reducer from './reducer' +import 'bootstrap/dist/css/bootstrap.min.css' +import './index.scss' + +const composeEnhancers = + typeof window === 'object' && + window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? + window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({ + serialize: { // prettier-ignore + immutable: Immutable + } + }) : compose; +const store = createStore(reducer, composeEnhancers(applyMiddleware(thunk))) + +ReactDOM.render(, document.getElementById('root')); + +// serviceWorker.unregister(); diff --git a/src/app/pages/Cart/Cart.js b/src/app/pages/Cart/Cart.js new file mode 100644 index 0000000..44883be --- /dev/null +++ b/src/app/pages/Cart/Cart.js @@ -0,0 +1,20 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import styles from './Cart.module.scss'; + +const Cart = props => { + return ( +
+
+ ); +}; + +Cart.defaultProps = { + +}; + +Cart.propTypes = { + +}; + +export default Cart; \ No newline at end of file diff --git a/src/app/pages/Cart/Cart.module.scss b/src/app/pages/Cart/Cart.module.scss new file mode 100644 index 0000000..87d9381 --- /dev/null +++ b/src/app/pages/Cart/Cart.module.scss @@ -0,0 +1,3 @@ +.c-Cart { + +} diff --git a/src/app/pages/Cart/Cart.test.js b/src/app/pages/Cart/Cart.test.js new file mode 100644 index 0000000..5390233 --- /dev/null +++ b/src/app/pages/Cart/Cart.test.js @@ -0,0 +1,8 @@ +import React from 'react'; +import Cart from './Cart'; + +describe('Cart', () => { + it('renders without error', () => { + + }); +}); \ No newline at end of file diff --git a/src/app/pages/Cart/actions.js b/src/app/pages/Cart/actions.js new file mode 100644 index 0000000..1fe9154 --- /dev/null +++ b/src/app/pages/Cart/actions.js @@ -0,0 +1,25 @@ +export const UPDATE_FORM_VALUES = 'UPDATE_BILLING_FORM_VALUES' +export const UPDATE_FORM_ERRORS = 'UPDATE_BILLING_FORM_ERRORS' + +export const initializeLogin = () => (dispatch) => { + // return Promise.all([ + // dispatch(initializeApp()) + // ]) + // .then(() => ({statusCode: 200})) + // .catch((err) => ({statusCode: err.statusCode || 500})) +} + +export const updateFormValues = (formValues) => { + return { + type: UPDATE_FORM_VALUES, + payload: formValues + } +} + +export const updateFormErrors = (formErrors) => { + return { + type: UPDATE_FORM_ERRORS, + payload: formErrors + } +} + \ No newline at end of file diff --git a/src/app/pages/Cart/index.js b/src/app/pages/Cart/index.js new file mode 100644 index 0000000..03e832b --- /dev/null +++ b/src/app/pages/Cart/index.js @@ -0,0 +1,3 @@ +import Cart from './Cart'; + +export default Cart; \ No newline at end of file diff --git a/src/app/pages/Cart/reducer.js b/src/app/pages/Cart/reducer.js new file mode 100644 index 0000000..3812506 --- /dev/null +++ b/src/app/pages/Cart/reducer.js @@ -0,0 +1,17 @@ +import Immutable from 'immutable' + +import {UPDATE_FORM_ERRORS, UPDATE_FORM_VALUES} from './actions' + +const initialState = Immutable.Map() + +const reducer = (state = initialState, action) => { + switch (action.type) { + case UPDATE_FORM_ERRORS: + case UPDATE_FORM_VALUES: + return state.mergeDeep(action.payload) + default: + return state + } +} + +export default reducer diff --git a/src/app/pages/Cart/selectors.js b/src/app/pages/Cart/selectors.js new file mode 100644 index 0000000..f820c33 --- /dev/null +++ b/src/app/pages/Cart/selectors.js @@ -0,0 +1,14 @@ +import {createSelector} from 'reselect' +import {createGetSelector} from 'reselect-immutable-helpers' + +const getData = ({data}) => data + +export const getLogin = createSelector( + getData, + (dataState) => { + return dataState.pages.cart + } +) + +export const getFormValues = createGetSelector(getLogin, 'formValues') +export const getFormErrors = createGetSelector(getLogin, 'formErrors') \ No newline at end of file diff --git a/src/app/pages/Login/Login.js b/src/app/pages/Login/Login.js new file mode 100644 index 0000000..de706a6 --- /dev/null +++ b/src/app/pages/Login/Login.js @@ -0,0 +1,21 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import styles from './Login.module.scss'; + +const Login = props => { + return ( +
+

This is the login module

+
+ ); +}; + +Login.defaultProps = { + +}; + +Login.propTypes = { + +}; + +export default Login; \ No newline at end of file diff --git a/src/app/pages/Login/Login.module.scss b/src/app/pages/Login/Login.module.scss new file mode 100644 index 0000000..4a10ed3 --- /dev/null +++ b/src/app/pages/Login/Login.module.scss @@ -0,0 +1,3 @@ +.c-Login { + +} diff --git a/src/app/pages/Login/Login.test.js b/src/app/pages/Login/Login.test.js new file mode 100644 index 0000000..35326c9 --- /dev/null +++ b/src/app/pages/Login/Login.test.js @@ -0,0 +1,8 @@ +import React from 'react'; +import Login from './Login'; + +describe('Login', () => { + it('renders without error', () => { + + }); +}); \ No newline at end of file diff --git a/src/app/pages/Login/actions.js b/src/app/pages/Login/actions.js new file mode 100644 index 0000000..113031a --- /dev/null +++ b/src/app/pages/Login/actions.js @@ -0,0 +1,28 @@ +export const LOGIN_DATA_STATE_RECEIVED = 'LOGIN_DATA_STATE_RECEIVED' +export const UPDATE_FORM_VALUES = 'UPDATE_BILLING_FORM_VALUES' +export const UPDATE_FORM_ERRORS = 'UPDATE_BILLING_FORM_ERRORS' + +export const updateLoginDataState = (payload) => ({type: LOGIN_DATA_STATE_RECEIVED, payload}) + +export const initializeLogin = () => (dispatch) => { + // return Promise.all([ + // dispatch(initializeApp()) + // ]) + // .then(() => ({statusCode: 200})) + // .catch((err) => ({statusCode: err.statusCode || 500})) +} + +export const updateFormValues = (formValues) => { + return { + type: UPDATE_FORM_VALUES, + payload: formValues + } +} + +export const updateFormErrors = (formErrors) => { + return { + type: UPDATE_FORM_ERRORS, + payload: formErrors + } +} + \ No newline at end of file diff --git a/src/app/pages/Login/index.js b/src/app/pages/Login/index.js new file mode 100644 index 0000000..68d80c8 --- /dev/null +++ b/src/app/pages/Login/index.js @@ -0,0 +1,3 @@ +import Login from './Login'; + +export default Login; \ No newline at end of file diff --git a/src/app/pages/Login/reducer.js b/src/app/pages/Login/reducer.js new file mode 100644 index 0000000..f317a7c --- /dev/null +++ b/src/app/pages/Login/reducer.js @@ -0,0 +1,18 @@ +import Immutable from 'immutable' + +import {LOGIN_DATA_STATE_RECEIVED, UPDATE_FORM_ERRORS, UPDATE_FORM_VALUES} from './actions' + +const initialState = Immutable.Map() + +const reducer = (state = initialState, action) => { + switch (action.type) { + case LOGIN_DATA_STATE_RECEIVED: + case UPDATE_FORM_ERRORS: + case UPDATE_FORM_VALUES: + return state.mergeDeep(action.payload) + default: + return state + } +} + +export default reducer diff --git a/src/app/pages/Login/selectors.js b/src/app/pages/Login/selectors.js new file mode 100644 index 0000000..a30ca9c --- /dev/null +++ b/src/app/pages/Login/selectors.js @@ -0,0 +1,14 @@ +import {createSelector} from 'reselect' +import {createGetSelector} from 'reselect-immutable-helpers' + +const getData = ({data}) => data + +export const getLogin = createSelector( + getData, + (dataState) => { + return dataState.pages.login + } +) + +export const getFormValues = createGetSelector(getLogin, 'formValues') +export const getFormErrors = createGetSelector(getLogin, 'formErrors') \ No newline at end of file diff --git a/src/app/pages/PLP/Plp.js b/src/app/pages/PLP/Plp.js new file mode 100644 index 0000000..57fd569 --- /dev/null +++ b/src/app/pages/PLP/Plp.js @@ -0,0 +1,20 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import styles from './Plp.module.scss'; + +const Plp = props => { + return ( +
+
+ ); +}; + +Plp.defaultProps = { + +}; + +Plp.propTypes = { + +}; + +export default Plp; \ No newline at end of file diff --git a/src/app/pages/PLP/Plp.module.scss b/src/app/pages/PLP/Plp.module.scss new file mode 100644 index 0000000..583d7e3 --- /dev/null +++ b/src/app/pages/PLP/Plp.module.scss @@ -0,0 +1,3 @@ +.c-Plp { + +} diff --git a/src/app/pages/PLP/Plp.test.js b/src/app/pages/PLP/Plp.test.js new file mode 100644 index 0000000..7f3a2d2 --- /dev/null +++ b/src/app/pages/PLP/Plp.test.js @@ -0,0 +1,8 @@ +import React from 'react'; +import Plp from './Plp'; + +describe('Plp', () => { + it('renders without error', () => { + + }); +}); \ No newline at end of file diff --git a/src/app/pages/PLP/actions.js b/src/app/pages/PLP/actions.js new file mode 100644 index 0000000..1fe9154 --- /dev/null +++ b/src/app/pages/PLP/actions.js @@ -0,0 +1,25 @@ +export const UPDATE_FORM_VALUES = 'UPDATE_BILLING_FORM_VALUES' +export const UPDATE_FORM_ERRORS = 'UPDATE_BILLING_FORM_ERRORS' + +export const initializeLogin = () => (dispatch) => { + // return Promise.all([ + // dispatch(initializeApp()) + // ]) + // .then(() => ({statusCode: 200})) + // .catch((err) => ({statusCode: err.statusCode || 500})) +} + +export const updateFormValues = (formValues) => { + return { + type: UPDATE_FORM_VALUES, + payload: formValues + } +} + +export const updateFormErrors = (formErrors) => { + return { + type: UPDATE_FORM_ERRORS, + payload: formErrors + } +} + \ No newline at end of file diff --git a/src/app/pages/PLP/index.js b/src/app/pages/PLP/index.js new file mode 100644 index 0000000..bd24772 --- /dev/null +++ b/src/app/pages/PLP/index.js @@ -0,0 +1,3 @@ +import Plp from './Plp'; + +export default Plp; \ No newline at end of file diff --git a/src/app/pages/PLP/reducer.js b/src/app/pages/PLP/reducer.js new file mode 100644 index 0000000..3812506 --- /dev/null +++ b/src/app/pages/PLP/reducer.js @@ -0,0 +1,17 @@ +import Immutable from 'immutable' + +import {UPDATE_FORM_ERRORS, UPDATE_FORM_VALUES} from './actions' + +const initialState = Immutable.Map() + +const reducer = (state = initialState, action) => { + switch (action.type) { + case UPDATE_FORM_ERRORS: + case UPDATE_FORM_VALUES: + return state.mergeDeep(action.payload) + default: + return state + } +} + +export default reducer diff --git a/src/app/pages/PLP/selectors.js b/src/app/pages/PLP/selectors.js new file mode 100644 index 0000000..d0ffba7 --- /dev/null +++ b/src/app/pages/PLP/selectors.js @@ -0,0 +1,14 @@ +import {createSelector} from 'reselect' +import {createGetSelector} from 'reselect-immutable-helpers' + +const getData = ({data}) => data + +export const getLogin = createSelector( + getData, + (dataState) => { + return dataState.pages.plp + } +) + +export const getFormValues = createGetSelector(getLogin, 'formValues') +export const getFormErrors = createGetSelector(getLogin, 'formErrors') \ No newline at end of file diff --git a/src/app/pages/index.js b/src/app/pages/index.js new file mode 100644 index 0000000..d4b6201 --- /dev/null +++ b/src/app/pages/index.js @@ -0,0 +1,11 @@ +/* PLOP_INJECT_IMPORT */ +import Cart from './Cart'; +import Login from './Login'; +import Plp from './PLP'; + +export { + /* PLOP_INJECT_EXPORT */ + Cart, + Login, + Plp, +} \ No newline at end of file diff --git a/src/app/reducer.js b/src/app/reducer.js new file mode 100644 index 0000000..a6093b5 --- /dev/null +++ b/src/app/reducer.js @@ -0,0 +1,15 @@ +import {combineReducers} from 'redux' + +import loginReducer from './pages/Login/reducer' +import plpReducer from './pages/PLP/reducer' +import cartReducer from './pages/Cart/reducer' + +export default combineReducers({ + data: combineReducers({ + pages: combineReducers({ + login: loginReducer, + plp: plpReducer, + cart: cartReducer + }) + }) +}) diff --git a/src/app/router.jsx b/src/app/router.jsx new file mode 100644 index 0000000..d839fd6 --- /dev/null +++ b/src/app/router.jsx @@ -0,0 +1,44 @@ +import React from 'react' +import PropTypes from 'prop-types' +import {Provider} from 'react-redux' +import {BrowserRouter, Route} from 'react-router-dom'; +import PageLoader from './components/molecules/PageLoader' +import Loadable from 'react-loadable' + +export const LoadableLogin = Loadable({ + loader: () => import('./pages/Login'), + loading: PageLoader +}) + +export const LoadablePLP = Loadable({ + loader: () => import('./pages/PLP'), + loading: PageLoader +}) + +export const LoadableCart = Loadable({ + loader: () => import('./pages/Cart'), + loading: PageLoader +}) + +class Router extends React.Component { + + render() { + const {store} = this.props + return ( + + + + + + + + + ) + } +} + +Router.propTypes = { + store: PropTypes.object +} + +export default Router diff --git a/src/app/selectors.js b/src/app/selectors.js new file mode 100644 index 0000000..e69de29 diff --git a/src/app/styles/_base.scss b/src/app/styles/_base.scss new file mode 100644 index 0000000..33653c9 --- /dev/null +++ b/src/app/styles/_base.scss @@ -0,0 +1,5 @@ +@import 'base/forms'; +@import 'base/general'; +@import 'base/lists'; +@import 'base/material'; +@import 'base/typography'; \ No newline at end of file diff --git a/src/app/styles/_components.scss b/src/app/styles/_components.scss new file mode 100644 index 0000000..7013689 --- /dev/null +++ b/src/app/styles/_components.scss @@ -0,0 +1,5 @@ +// Components +// === +// @import '../components/atoms/InputField/InputField.component'; +@import '../components/molecules/PageLoader/PageLoader.component'; +// @import '../preloader/preload'; diff --git a/src/app/styles/_pages.scss b/src/app/styles/_pages.scss new file mode 100644 index 0000000..96038e7 --- /dev/null +++ b/src/app/styles/_pages.scss @@ -0,0 +1,6 @@ +// Pages +// === + +@import '../pages/PLP/Plp.module'; +@import '../pages/Login/Login.module'; +@import '../pages/Cart/Cart.module'; diff --git a/src/app/styles/_variables.scss b/src/app/styles/_variables.scss new file mode 100644 index 0000000..a9576bf --- /dev/null +++ b/src/app/styles/_variables.scss @@ -0,0 +1,230 @@ +// Project-Wide Variables +// === +// +// Edit these as needed. Some guidelines: +// +// - Names should be lowercase and dash-separated; +// - Qualifiers should be added to the beginning of related variables: use +// `$small-font-size`, not `$font-size-small`; +// - Numeric scales should use increments of 10; these numbers are arbitrary and +// should not map to actual values. If really necessary, additional values can +// be added in between, e.g. $neutral-15 between 10 and 20. +// +// +// Table of Contents +// --- +// +// [AAA] Basic Layout +// [BBB] Responsive Layout +// [CCC] Typography +// [DDD] Color Palette +// [EEE] Appearance +// [FFF] Z-Index +// [GGG] Shorthands + + +// [AAA] Basic Layout +// --- + +// Basic unit for spacing and alignment; 6 to 12px recommended. Apply in whole +// or half multiples. +$sub-unit: 4px; +$unit: 8px; + +// Standard tap-target size +$tap-size: 44px; + +// Container max-width. +$max-width: 1280px; + +// Content Height Calculations +$header-height: 64px; +$footer-height: 173px; +$content-height: calc(100vh - #{$header-height} - #{$footer-height}); + +// [BBB] Responsive Layout +// --- +// +// Media query breakpoints and grid setup. Please see Mobify's Responsive Best +// Practices doc here: https://bit.ly/2tmRnEi, and our Responsive Grid +// documentation here: http://docs.mobify.com/latest/guides/responsive-grid/ +// +// Note: $small-breakpoint isn't needed, since it is 0px + +$medium-breakpoint: 600px; +$large-breakpoint: 960px; +$xlarge-breakpoint: $max-width; + +$susy: ( + // Add color to show the columns and gutters + 'svg-grid-colors': hsl(0, 0%, 95%), + 'columns': susy-repeat(4), + 'gutters': 12px +); + +$medium-layout: ( + 'svg-grid-colors': hsl(0, 0%, 95%), + 'columns': susy-repeat(12), + 'gutters': 12px +); + +$large-layout: ( + 'svg-grid-colors': hsl(0, 0%, 95%), + 'columns': susy-repeat(12), + 'gutters': 24px +); + + +// [CCC] Typography +// --- +// $font-family: 'San Francisco', 'Roboto', 'Fira Sans', 'Segoe UI', sans-serif; +$font-family: Verdana, Geneva, sans-serif; +$header-font-family: 'Avenir Next Condensed', 'Roboto Condensed', 'Helvetica Neue', 'Roboto', sans-serif; +$loaded-header-font-family: 'Roboto', $header-font-family; + +// Line height +$huge-line-height: 32px; +$bigger-line-height: 28px; +$big-line-height: 24px; +$line-height: 20px; +$small-line-height: 16px; +$smaller-line-height: 12px; +$tiny-line-height: 8px; + +// Font sizes +$huge-font-size: 28px; +$bigger-font-size: 24px; +$big-font-size: 20px; +$font-size: 16px; +$small-font-size: 14px; +$smaller-font-size: 12px; +$tiny-font-size: 8px; + +// Font weight +$thin-font-weight: 100; +$extra-light-font-weight: 200; +$light-font-weight: 300; +$regular-font-weight: 400; +$medium-font-weight: 500; +$semi-bold-font-weight: 600; +$bold-font-weight: 700; + +// [DDD] Color Palette +// --- + +// Neutrals +$neutral-00: #fff; +$neutral-10: #f7f7f7; +$neutral-15: #eee; +$neutral-20: #d5d5d5; +$neutral-30: #bfbfbf; +$neutral-40: #999; +$neutral-50: #696969; +$neutral-60: #333; +$neutral-70: #000; + +// Brand colors +$brand-color: #017e9b; // blue +$secondary-brand-color: #005569; +$tertiary-brand-color: #83bdcb; +$quaternary-brand-color: #bfdfe6; + +// UI Kit colors +$ui-brand-color: #005c83; // dark blue + +// Accent colors +$accent-color: #ff852c; // orange +$light-accent-color: lighten($accent-color, 15%); +$dark-accent-color: darken($accent-color, 15%); + +// Primary Action +$primary-action-color: #dc0a3c; +$light-primary-action-color: lighten($primary-action-color, 15%); +$dark-primary-action-color: darken($primary-action-color, 15%); + +// Secondary Action +$secondary-action-color: #ff852c; +$light-secondary-action-color: lighten($secondary-action-color, 15%); +$dark-secondary-action-color: darken($secondary-action-color, 15%); + +// Success colors +$success-color: #037b30; +$light-success-color: lighten($success-color, 15%); +$dark-success-color: darken($success-color, 15%); + +// Error colors +$error-color: #c70936; +$light-error-color: lighten($error-color, 15%); +$feedback-error-color: #f8e7eb; +$dark-error-color: darken($error-color, 15%); + +// Sale color +$sale-color: $error-color; + +// Social colors +$facebook-color: #3a5a93; +$twitter-color: #55aace; +$instagram-color: #405de6; +$pinterest-color: #bd081c; +$youtube-color: #e52d27; +$google-plus-color: #dd4b39; +$yelp-color: #af0606; + + +// [EEE] Appearance +// --- + +$font-color: $neutral-60; + +$link-color: $ui-brand-color; +$active-link-color: $dark-accent-color; + +$focus-color: $brand-color; + +$border-color: $neutral-20; +$border-radius: 4px; + +$input-background-color: $neutral-00; +$input-border-color: $border-color; +$focused-input-border-color: $secondary-brand-color; +$disabled-input-color: $neutral-40; +$disabled-input-background-color: $neutral-15; +$disabled-button-background-color: $neutral-15; +$horizontal-input-padding: $unit; +$vertical-input-padding: $unit; + +$background-color: $neutral-10; +$overlay-color: rgba($neutral-00, 0.85); + + +// [FFF] Z-Index +// --- + +// Organizes z-index usage by name. Values can be incremented/decremented +// slightly as necessary. eg. $z1-layer + 1; + +$z1-depth: 1; // background +$z2-depth: 10; // icon or other ui element +$z3-depth: 100; // modal shade or similar +$z4-depth: 1000; // modal dialog or similar + + +// [GGG] Shorthands +// --- + +$border: 1px solid $border-color; +$light-border: 1px solid $neutral-15; +$input-padding: $vertical-input-padding $horizontal-input-padding; + +$box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.3); +$large-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.3); +$inset-box-shadow: inset 0 2px 2px -2px rgba(0, 0, 0, 0.3), inset 0 -2px 2px -2px rgba(0, 0, 0, 0.3); +$input-box-shadow: inset 0 0 5px 0 rgba(0, 0, 0, 0.3); +$themeColor-Light: #f3e2c7; +$themeColor-Dark:#252525; +$theme-font: verdana, sans-serif; +$theme-supplementer: #f39c12; +$font-size-desktop-h5: 1.25em; +$font-size-mobile-h5: 0.8em; +$font-size-desktop-p: 1.1em; +$font-size-mobile-p: 0.7em; diff --git a/src/app/styles/base/_forms.scss b/src/app/styles/base/_forms.scss new file mode 100644 index 0000000..e76c94b --- /dev/null +++ b/src/app/styles/base/_forms.scss @@ -0,0 +1,333 @@ +// Forms +// === + +$base__radio-checkmark: 'data:image/svg+xml;utf8,'; + + +// General Form Elements +// --- +// +// 1. Address Firefox 4+ setting `line-height` on `input` using `!important` in +// the UA stylesheet. +// 2. Remove padding so people aren’t caught out if they zero out fieldsets. +// 3. Remove inner padding and border in Firefox 4+. +// 4. Correct color not being inherited. Known issue: affects color of disabled +// elements. +// 5. Correct font properties not being inherited. +// 6. Address margins set differently in Firefox 4+, Safari, and Chrome. +// 7. Set font-size to 16px to avoid zooming in on iOS (https://stackoverflow.com/questions/11064237/prevent-iphone-from-zooming-form) + +fieldset { + min-width: 0; + margin: 0; + padding: 0; + border: 0; +} + +input { + margin: 0; // 6 + + color: inherit; // 4 + font: inherit; // 5 + font-family: $font-family; + font-size: $font-size + 2; // 7 + line-height: normal; // 1 + + &::-moz-focus-inner { + padding: 0; // 3 + border: 0; // 3 + } +} + +textarea { + margin: 0; // 6 + + color: inherit; // 4 + font: inherit; // 5 +} + +label, +textarea { + font-family: $font-family; + font-size: $font-size; +} + +label { + display: inline-block; + margin-bottom: $unit / 2; + + font-weight: $semi-bold-font-weight; + + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + + &:active { + color: $active-link-color; + } +} + +select, +textarea, +[type="text"], +[type="search"], +[type="password"], +[type="tel"], +[type="url"], +[type="number"], +[type="email"] { + width: 100%; + min-height: $tap-size; + padding: $input-padding; + border: $border; + + border-radius: 0; + background-color: $input-background-color; + + line-height: $line-height; + + -webkit-appearance: none; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + + &::-webkit-input-placeholder { + color: $neutral-50; + } + + &:active, + &:focus { + border-color: $focus-color; + + box-shadow: $input-box-shadow; + } +} + +legend { + padding: 0; // 2 +} + + +// Search input +// --- +// +// These properties must be set with a slightly higher specificity for search +// inputs because Normalize's defaults are a bit too specific +// +// 1. Address `appearance` set to `searchfield` in Safari and Chrome. +// 2. Remove inner padding and search cancel button in Safari and Chrome on OS X. +// Safari (but not Chrome) clips the cancel button when the search input has +// padding (and `textfield` appearance). + +input[type="search"] { + box-sizing: border-box; + + -webkit-appearance: none; // 1 + + &::-webkit-search-cancel-button, + &::-webkit-search-decoration { + -webkit-appearance: none; // 2 + } +} + +// Select +// --- +// +// 1. Restore browser default styling. If you’re taking full control of select +// styling, remove both these lines. +// 2. Simulate the position of the down-arrow as if it were a Icon component in +// a button. +// 3. Address inconsistent `text-transform` inheritance for `button` and `select`. +// All other form control elements do not inherit `text-transform` values. +// Correct `button` style inheritance in Firefox and Opera. Correct `select` +// style inheritance in Firefox. +// 4. Correct color not being inherited. Known issue: affects color of disabled +// elements. +// 5. Set font-size to 16px to avoid zooming in on iOS (https://stackoverflow.com/questions/11064237/prevent-iphone-from-zooming-form) +// 6. Address margins set differently in Firefox 4+, Safari, and Chrome. + +select { + height: $tap-size; // 1 + margin: 0; // 6 + + border-radius: 0; + + color: $brand-color; + font-family: $font-family; + font-size: $font-size + 2; // 5 + text-transform: none; // 3 + + &, + &[disabled] { + background-repeat: no-repeat; + background-position: calc(100% - 14px) center; // 2 + background-size: 12px 6px; + } +} + +optgroup { + margin: 0; // 6 + + color: inherit; // 4 + font: inherit; // 5 +} + + +// Checkbox and Radios +// --- + +[type="checkbox"], +[type="radio"] { + position: relative; + + display: inline-block; + width: $unit*3; + height: $unit*3; + margin-right: $unit; + border: $border; + + background: $neutral-00; + + vertical-align: middle; + + -webkit-appearance: none; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + + &:active { + background: $neutral-30; + } + + &:checked { + border: 0; + + background: $brand-color; + + &::after { + content: ''; + + position: absolute; + + display: block; + } + } + + &:disabled { + border: 0; + + background: rgba($neutral-20, 0.5); + } +} + +[type="radio"] { + border-radius: 50%; + + &:after { + top: $unit; + right: $unit; + bottom: $unit; + left: $unit; + + border-radius: 50%; + background: $neutral-00; + } +} + +[type="checkbox"] { + &:checked { + &:after { + content: ''; + + top: 0; + + display: block; + width: $unit*3; + height: $unit*3; + + background: url($base__radio-checkmark); + + color: $neutral-00; + line-height: 0; + + pointer-events: none; + } + } +} + + +// Buttons +// --- +// +// 1. Address margins set differently in Firefox 4+, Safari, and Chrome. +// 2. Correct color not being inherited. Known issue: affects color of disabled +// elements. +// 3. Correct font properties not being inherited. +// 4. Address inconsistent `text-transform` inheritance for `button` and `select`. +// All other form control elements do not inherit `text-transform` values. +// Correct `button` style inheritance in Firefox and Opera. Correct `select` +// style inheritance in Firefox. +// 5. Remove inner padding and border in Firefox 4+. +// 6. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` +// and `video` controls. +// 7. Correct inability to style clickable `input` types in iOS. + +button, +[type="submit"] { + display: block; + margin: 0; // 1 + padding: 0; + border: 0; + + background: $neutral-15; + + color: inherit; // 2 + font: inherit; // 3 + line-height: $line-height; + text-transform: none; // 4 + + -webkit-appearance: none; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + + &::-moz-focus-inner { + padding: 0; // 5 + border: 0; // 5 + } + + &:active { + background: $neutral-30; + } +} + +html input[type="button"], +// 6 +input[type="reset"] { + -webkit-appearance: button; // 7 +} + + +// Disabled +// --- +// +// 1. web-kit default disabled style +// 2. Disabled style for button, checkbox, radio, input and select +// 3. Checkbox and Radio style + +[disabled] { + opacity: 1; + background: $disabled-input-background-color; + + color: $disabled-input-color; + + -webkit-text-fill-color: $disabled-input-color; // 1 + + // 2 + &:active, + &:checked { + border-color: $disabled-input-color; + + background: $disabled-input-background-color; + + &::after { + color: $disabled-input-color; // 3 + } + } + + &[type="radio"]:after { + background-color: $disabled-input-color; + } +} diff --git a/src/app/styles/base/_general.scss b/src/app/styles/base/_general.scss new file mode 100644 index 0000000..89f2234 --- /dev/null +++ b/src/app/styles/base/_general.scss @@ -0,0 +1,128 @@ +// General +// === + +// Document +// --- +// +// 1. Applying styles to *::before or *::after is a performance issue on some +// legacy Android devices (4.1.x). As such, these are disabled by default. +// 2. Prevent iOS text size adjust after orientation change, without disabling +// user zoom. +// 3. Remove default margin in all browsers. + + +// *::before, // 1 +// *::after, // 1 +* { + box-sizing: border-box; + + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; +} + +html { + color: $font-color; + font-family: $font-family; + font-size: $font-size; + line-height: $line-height; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -ms-text-size-adjust: 100%; // 2 + -webkit-text-size-adjust: 100%; // 2 +} + +body { + margin: 0; +} + +// Grouping content +// --- +// +// 1. Address margin not present in Safari. +// 2. Contain overflow in all browsers. +// 3. Address odd `em`-unit font size rendering in all browsers.The duplication +// of `monospace` is intentional +// ([Source](http://en.wikipedia.org/wiki/User:Davidgothberg/Test59)). + +figure { + margin: 1em 40px; // 1 +} + +pre { + overflow: auto; // 2 +} + +code, +kbd, +pre, +samp { + font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; // 3 + font-size: 1em; // 3 +} + + +// New HTML5 elements +// --- + +// Correct `block` display not defined for `main` in mobile Safari 6 and +// Android 4.3. +// +// Correct `block` display not defined for `menu`. + +main, +menu { + display: block; +} + +// Normalize vertical alignment of `progress` in Chrome and Firefox. + +audio, +canvas, +progress, +video { + vertical-align: baseline; +} + +// Prevent modern browsers from displaying `audio` without controls. +// Remove excess height in iOS 5 devices. + +audio:not([controls]) { + display: none; + height: 0; +} + +// Hide the `template` element in mobile Safari. + +template { + display: none; +} + +// Prevent `sub` and `sup` affecting `line-height` in all browsers. + +sub, +sup { + position: relative; + + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + + +// Hidden +// --- +// +// Hide visually and from screen readers. `u-visually-hidden` class is preferred +// to ensure that it's working in all conditions. + +[hidden] { + display: none; +} \ No newline at end of file diff --git a/src/app/styles/base/_lists.scss b/src/app/styles/base/_lists.scss new file mode 100644 index 0000000..c3f69d6 --- /dev/null +++ b/src/app/styles/base/_lists.scss @@ -0,0 +1,40 @@ +// Lists +// === + + +// Ordered and Unordered Lists +// --- +// +// We default to unstyled lists because they seem to be a more common usecase. +// Use the extensions to re-add the defaults back in. +// +// It is our recommendation that instead of styling the ul and ol directly that +// you create a list component that can be added to lists when needed. + +ul, +ol { + margin: 0; + padding: 0; + + list-style-type: none; +} + + +// Definition Lists +// --- + +dl { + margin-bottom: $unit; + + line-height: $line-height; +} + +dt { + margin-top: $unit; + + font-weight: $semi-bold-font-weight; +} + +dd { + margin: 0; +} diff --git a/src/app/styles/base/_material.scss b/src/app/styles/base/_material.scss new file mode 100644 index 0000000..393c471 --- /dev/null +++ b/src/app/styles/base/_material.scss @@ -0,0 +1,12 @@ + +.material-icons { + &.md-18 { font-size: 18px; } + &.md-24 { font-size: 24px; } + &.md-36 { font-size: 36px; } + &.md-48 { font-size: 48px; } + &.md-dark { color: rgba(0, 0, 0, 0.54); } + &.md-dark.md-inactive { color: rgba(0, 0, 0, 0.26); } + &.md-light { color: rgba(255, 255, 255, 1); } + &.md-light.md-inactive { color: rgba(255, 255, 255, 0.3); } + &.orange600 { color: #FB8C00; } +} \ No newline at end of file diff --git a/src/app/styles/base/_mixins.scss b/src/app/styles/base/_mixins.scss new file mode 100644 index 0000000..da37a8e --- /dev/null +++ b/src/app/styles/base/_mixins.scss @@ -0,0 +1,81 @@ +// Mixins +// === +// +// Background Shimmer +// --- + +@mixin background-shimmer() { + overflow: hidden; + background: $neutral-10; + background-image: linear-gradient(to right, + $neutral-10 0%, scale-color($neutral-15, $lightness: -5%) 50%, $neutral-10 100%); + background-repeat: no-repeat; + background-size: 100vw 100vh; + animation: 1.5s linear infinite background-shimmer; +} + + +// Visually Hidden +// --- + +@mixin visually-hidden() { + position: absolute; + + overflow: hidden; + clip: rect(1px, 1px, 1px, 1px); + width: 1px; + height: 1px; + padding: 0; + border: 0; +} + + +// Wrap At Root +// --- +// +// Wraps the nested blocks in the `$selector` of your choice, and at the root +// level. Specificity of the selector can be increased by increasing the +// `$degree` to a higher number than the default `1`. + +// Examples: +// --- +// +// Default: +// +// @include wrap-at-root("#app") { +// .u-border-red { border: 1px solid red; } +// } +// +// Output: #app .u-border-red { border: 1px solid red; } +// +// +// Custom: +// +// @include wrap-at-root("#app", 3) { +// .u-border-red { border: 1px solid red; } +// } +// +// Output: #app#app#app .u-border-red { border: 1px solid red; } + + +// Parameters +// --- +// +// @param $selector [String]: ID selector. +// @param $degree [Number]: Effectively the number of id-level selectors you +// need to override. + +@mixin wrap-at-root($selector, $degree: 1) { + $selector-chain: ''; + + // Build an id selector by chaining the same id onto itself once more than + // the specified degree. So if degree: 3, we get #id#id#id. + + @for $i from 1 through $degree { + $selector-chain: $selector-chain + $selector; + } + + @at-root #{$selector-chain} { + @content; + } +} diff --git a/src/app/styles/base/_typography.scss b/src/app/styles/base/_typography.scss new file mode 100644 index 0000000..12bfd38 --- /dev/null +++ b/src/app/styles/base/_typography.scss @@ -0,0 +1,117 @@ +// Typography +// === + +// Headers +// --- +@import url('https://use.fontawesome.com/releases/v5.1.0/css/all.css'); +@import url('https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700'); +@import url('https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap'); +@import url('https://fonts.googleapis.com/icon?family=Material+Icons'); +@import url('https://fonts.googleapis.com/css?family=McLaren&display=swap" rel="stylesheet'); + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0; + + font-family: $header-font-family; + font-weight: $regular-font-weight; + line-height: 1.25; + + // Added with webfontloader. See loadFonts() in app/container.js + .wf-active & { + font-family: $loaded-header-font-family; + } +} + +h1, +%h1 { + font-weight: $light-font-weight; + font-size: $huge-font-size; + line-height: $huge-line-height; +} + +h2, +%h2 { + font-size: $bigger-font-size; + line-height: $bigger-line-height; +} + +h3, +%h3, +h4, +%h4 { + font-size: $big-font-size; + line-height: $big-line-height; +} + +h5, +%h5 { + font-size: $font-size + 2; + line-height: $line-height; +} + +h6, +%h6 { + font-size: $font-size; + line-height: $line-height; +} + + +// Text Elements +// --- + +p { + margin: 0; +} + +a { + color: $link-color; + text-decoration: none; + + &:active, + &:focus { + color: $active-link-color; + } +} + +b, +strong { + font-weight: $semi-bold-font-weight; +} + +small { + font-size: 80%; +} + + +// Miscellaneous Elements +// --- +// +// 1. Address differences between Firefox and other browsers. + +hr { + box-sizing: content-box; // 1 + height: 0; // 1 + margin: ($unit * 2) 0; + border: $border; + border-width: 0 0 1px; + + -moz-box-sizing: content-box; // 1 +} + +img { + max-width: 100%; + margin: 0; +} + +blockquote { + margin: ($unit * 2) 0; + padding-left: $unit; + border-left: 2px solid $border-color; + + color: lighten($font-color, 15); +} diff --git a/src/index.css b/src/index.css deleted file mode 100644 index ec2585e..0000000 --- a/src/index.css +++ /dev/null @@ -1,13 +0,0 @@ -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', - 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', - sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', - monospace; -} diff --git a/src/index.js b/src/index.js deleted file mode 100644 index f5185c1..0000000 --- a/src/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react'; -import ReactDOM from 'react-dom'; -import './index.css'; -import App from './App'; -import * as serviceWorker from './serviceWorker'; - -ReactDOM.render( - - - , - document.getElementById('root') -); - -// If you want your app to work offline and load faster, you can change -// unregister() to register() below. Note this comes with some pitfalls. -// Learn more about service workers: https://bit.ly/CRA-PWA -serviceWorker.unregister(); diff --git a/src/logo.svg b/src/logo.svg deleted file mode 100644 index 6b60c10..0000000 --- a/src/logo.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - -