diff --git a/.eleventy.js b/.eleventy.js new file mode 100644 index 00000000..8cab1a2e --- /dev/null +++ b/.eleventy.js @@ -0,0 +1,46 @@ +module.exports = function(eleventyConfig) { + eleventyConfig.addPassthroughCopy({'web/dist/fonts': "fonts"}) + eleventyConfig.addPassthroughCopy({'web/dist/images': "images"}) + eleventyConfig.addPassthroughCopy({'web/dist/js': "js"}) + eleventyConfig.addPassthroughCopy({'web/dist/styles': "styles"}) + eleventyConfig.addPassthroughCopy({'web/dist/svg': "svg"}) + + // Enable custom order in site navigation + eleventyConfig.addCollection("navItems", function (collection) { + return collection.getAll().filter((item) => item.data.navItem) + .sort((a, b) => b.data.navOrder - a.data.navOrder); + }) + + // Inject nunjucks macro import for components into top level Markdown files + eleventyConfig.addCollection('rootfiles', function (collection) { + const macroImport = `{% from "./_includes/system/components.njk" import pageComponents %}`; + let topLevelCollection = collection.getAll().filter((item) => item.data.root); + + topLevelCollection.forEach((item) => { + item.template.frontMatter.content = `${macroImport}\n${item.template.frontMatter.content}`; + }) + + return topLevelCollection; + }) + + // Inject nunjucks macro import for components in section-specific Markdown files + eleventyConfig.addCollection('subpages', function (collection) { + const macroImport = `{% from "../_includes/system/components.njk" import pageComponents %}`; + let subPageCollection = collection.getAll().filter((item) => item.data.subpage); + + subPageCollection.forEach((item) => { + item.template.frontMatter.content = `${macroImport}\n${item.template.frontMatter.content}`; + }) + + return subPageCollection; + }) + return { + passthroughFileCopy: true, + markdownTemplateEngine: "njk", + dir: { + input: "web/amplify/eleventy", + output: "web/eleventy-dist", + layout: "templates/page.njk" + } + } +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 2a3838db..f99ae336 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,10 +12,13 @@ "@splidejs/splide": "^4.0.7", "accessible-autocomplete": "^2.0.3", "fontfaceobserver": "^2.1.0", + "markdown-it": "^13.0.1", + "markdown-it-attrs": "^4.1.6", "normalize.css": "^8.0.1", "tabbyjs": "^12.0.3" }, "devDependencies": { + "@11ty/eleventy": "^1.0.2", "@babel/core": "^7.16.12", "@babel/preset-env": "^7.16.11", "autoprefixer": "^10.4.0", @@ -33,6 +36,212 @@ "webpack-cli": "^4.9.1" } }, + "node_modules/@11ty/dependency-tree": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@11ty/dependency-tree/-/dependency-tree-2.0.1.tgz", + "integrity": "sha512-5R+DsT9LJ9tXiSQ4y+KLFppCkQyXhzAm1AIuBWE/sbU0hSXY5pkhoqQYEcPJQFg/nglL+wD55iv2j+7O96UAvg==", + "dev": true + }, + "node_modules/@11ty/eleventy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-1.0.2.tgz", + "integrity": "sha512-03ER4zukR6BgwppI5DHRE11lc+8B0fWsBrqacVWo3o49QkdEFXnEWjhyI9qd9LrPlgQHK2/MYyxuOvNwecyCLQ==", + "dev": true, + "dependencies": { + "@11ty/dependency-tree": "^2.0.1", + "@11ty/eleventy-utils": "^1.0.1", + "@iarna/toml": "^2.2.5", + "@sindresorhus/slugify": "^1.1.2", + "browser-sync": "^2.27.10", + "chokidar": "^3.5.3", + "cross-spawn": "^7.0.3", + "debug": "^4.3.4", + "dependency-graph": "^0.11.0", + "ejs": "^3.1.8", + "fast-glob": "^3.2.11", + "graceful-fs": "^4.2.10", + "gray-matter": "^4.0.3", + "hamljs": "^0.6.2", + "handlebars": "^4.7.7", + "is-glob": "^4.0.3", + "kleur": "^4.1.5", + "liquidjs": "^9.40.0", + "lodash": "^4.17.21", + "luxon": "^2.5.0", + "markdown-it": "^12.3.2", + "minimist": "^1.2.6", + "moo": "^0.5.1", + "multimatch": "^5.0.0", + "mustache": "^4.2.0", + "normalize-path": "^3.0.0", + "nunjucks": "^3.2.3", + "path-to-regexp": "^6.2.1", + "please-upgrade-node": "^3.2.0", + "pretty": "^2.0.0", + "pug": "^3.0.2", + "recursive-copy": "^2.0.14", + "semver": "^7.3.7", + "slugify": "^1.6.5" + }, + "bin": { + "eleventy": "cmd.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/11ty" + } + }, + "node_modules/@11ty/eleventy-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@11ty/eleventy-utils/-/eleventy-utils-1.0.1.tgz", + "integrity": "sha512-HPpCTz4PzudcQU+i+x6GSNHVqgnvRhnVYg5dLKaAoRWLN966odAGsBxKSyhF8i1MdlOPtsytYb2AGWP7jISC5w==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/11ty" + } + }, + "node_modules/@11ty/eleventy/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@11ty/eleventy/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@11ty/eleventy/node_modules/entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/@11ty/eleventy/node_modules/linkify-it": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "dev": true, + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/@11ty/eleventy/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@11ty/eleventy/node_modules/markdown-it": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/@11ty/eleventy/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@11ty/eleventy/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@11ty/eleventy/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@11ty/eleventy/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@11ty/eleventy/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@11ty/eleventy/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/@ampproject/remapping": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", @@ -1638,6 +1847,12 @@ "node": ">=10.0.0" } }, + "node_modules/@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "dev": true + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", @@ -1744,6 +1959,65 @@ "node": ">= 8" } }, + "node_modules/@sindresorhus/slugify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-1.1.2.tgz", + "integrity": "sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA==", + "dev": true, + "dependencies": { + "@sindresorhus/transliterate": "^0.1.1", + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sindresorhus/slugify/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sindresorhus/transliterate": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-0.1.2.tgz", + "integrity": "sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0", + "lodash.deburr": "^4.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sindresorhus/transliterate/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", + "dev": true + }, "node_modules/@splidejs/splide": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/@splidejs/splide/-/splide-4.0.7.tgz", @@ -1758,6 +2032,21 @@ "node": ">=10.13.0" } }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "node_modules/@types/cors": { + "version": "2.8.13", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", + "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/eslint": { "version": "8.4.10", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", @@ -1790,6 +2079,12 @@ "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, "node_modules/@types/node": { "version": "18.11.11", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.11.tgz", @@ -1990,6 +2285,31 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, + "node_modules/a-sync-waterfall": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", + "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/accessible-autocomplete": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/accessible-autocomplete/-/accessible-autocomplete-2.0.4.tgz", @@ -2117,6 +2437,24 @@ "node": ">= 8" } }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/array-union": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", @@ -2129,6 +2467,51 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "node_modules/assert-never": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz", + "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==", + "dev": true + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "node_modules/async-each-series": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", + "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/autoprefixer": { "version": "10.4.13", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", @@ -2162,6 +2545,15 @@ "postcss": "^8.1.0" } }, + "node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, "node_modules/babel-loader": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", @@ -2220,12 +2612,39 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/babel-walk": { + "version": "3.0.0-canary-5", + "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", + "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.9.6" + }, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true, + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, "node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -2272,13 +2691,284 @@ "node": ">=8" } }, - "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "node_modules/browser-sync": { + "version": "2.27.11", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.27.11.tgz", + "integrity": "sha512-U5f9u97OYJH66T0MGWWzG9rOQTW6ZmDMj97vsmtqwNS03JAwdLVES8eel2lD3rvAqQCNAFqaJ74NMacBI57vJg==", + "dev": true, + "dependencies": { + "browser-sync-client": "^2.27.11", + "browser-sync-ui": "^2.27.11", + "bs-recipes": "1.3.4", + "bs-snippet-injector": "^2.0.1", + "chokidar": "^3.5.1", + "connect": "3.6.6", + "connect-history-api-fallback": "^1", + "dev-ip": "^1.0.1", + "easy-extender": "^2.3.4", + "eazy-logger": "3.1.0", + "etag": "^1.8.1", + "fresh": "^0.5.2", + "fs-extra": "3.0.1", + "http-proxy": "^1.18.1", + "immutable": "^3", + "localtunnel": "^2.0.1", + "micromatch": "^4.0.2", + "opn": "5.3.0", + "portscanner": "2.2.0", + "qs": "^6.11.0", + "raw-body": "^2.3.2", + "resp-modifier": "6.0.2", + "rx": "4.1.0", + "send": "0.16.2", + "serve-index": "1.9.1", + "serve-static": "1.13.2", + "server-destroy": "1.0.1", + "socket.io": "^4.4.1", + "ua-parser-js": "1.0.2", + "yargs": "^17.3.1" + }, + "bin": { + "browser-sync": "dist/bin.js" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/browser-sync-client": { + "version": "2.27.11", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.27.11.tgz", + "integrity": "sha512-okMNfD2NasL/XD1/BclP3onXjhahisk3e/kTQ5HPDT/lLqdBqNDd6QFcjI5I1ak7na2hxKQSLjryql+7fp5gKQ==", "dev": true, - "funding": [ - { + "dependencies": { + "etag": "1.8.1", + "fresh": "0.5.2", + "mitt": "^1.1.3", + "rxjs": "^5.5.6", + "typescript": "^4.6.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/browser-sync-ui": { + "version": "2.27.11", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.27.11.tgz", + "integrity": "sha512-1T/Y8Pp1R68aUL7zVSFq0nxtr258xWd/nTasCAHX2M6EsGaswVOFtXsw3bKqsr35z+J+LfVfOdz1HFLYKxdgrA==", + "dev": true, + "dependencies": { + "async-each-series": "0.1.1", + "connect-history-api-fallback": "^1", + "immutable": "^3", + "server-destroy": "1.0.1", + "socket.io-client": "^4.4.1", + "stream-throttle": "^0.1.3" + } + }, + "node_modules/browser-sync-ui/node_modules/immutable": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", + "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/browser-sync/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-sync/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/browser-sync/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/browser-sync/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/browser-sync/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/browser-sync/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/browser-sync/node_modules/fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^3.0.0", + "universalify": "^0.1.0" + } + }, + "node_modules/browser-sync/node_modules/immutable": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", + "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/browser-sync/node_modules/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", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-sync/node_modules/jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/browser-sync/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-sync/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-sync/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/browser-sync/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/browser-sync/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/browser-sync/node_modules/yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/browser-sync/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "dev": true, + "funding": [ + { "type": "opencollective", "url": "https://opencollective.com/browserslist" }, @@ -2300,12 +2990,33 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/bs-recipes": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", + "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==", + "dev": true + }, + "node_modules/bs-snippet-injector": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz", + "integrity": "sha512-4u8IgB+L9L+S5hknOj3ddNSb42436gsnGm1AuM15B7CdbkpQTyVWgIM5/JUBiKiRwGOR86uo0Lu/OsX+SAlJmw==", + "dev": true + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -2358,6 +3069,15 @@ "node": ">=4" } }, + "node_modules/character-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", + "dev": true, + "dependencies": { + "is-regex": "^1.0.3" + } + }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -2479,12 +3199,106 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, + "node_modules/condense-newlines": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", + "integrity": "sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-whitespace": "^0.3.0", + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/condense-newlines/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "~1.3.2", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/constantinople": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", + "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.1" + } + }, "node_modules/convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/copy-webpack-plugin": { "version": "10.2.4", "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", @@ -2587,6 +3401,19 @@ "url": "https://opencollective.com/core-js" } }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -2707,15 +3534,42 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", "dev": true, "engines": { "node": ">= 0.6.0" } }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==", + "dev": true + }, + "node_modules/dev-ip": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", + "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==", + "dev": true, + "bin": { + "dev-ip": "lib/dev-ip.js" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -2728,6 +3582,18 @@ "node": ">=8" } }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==", + "dev": true + }, "node_modules/dom-serializer": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", @@ -2783,6 +3649,81 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/easy-extender": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", + "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", + "dev": true, + "dependencies": { + "lodash": "^4.17.10" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/eazy-logger": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-3.1.0.tgz", + "integrity": "sha512-/snsn2JqBtUSSstEl4R0RKjkisGHAhvYj89i7r3ytNUKW12y178KDZwXLXIgwDqLW6E/VRMT9qfld7wvFae8bQ==", + "dev": true, + "dependencies": { + "tfunk": "^4.0.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "dev": true, + "dependencies": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "bin": { + "editorconfig": "bin/editorconfig" + } + }, + "node_modules/editorconfig/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/editorconfig/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/electron-to-chromium": { "version": "1.4.284", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", @@ -2804,6 +3745,58 @@ "node": ">= 4" } }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/engine.io": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", + "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", + "dev": true, + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io-client": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.3.tgz", + "integrity": "sha512-aXPtgF1JS3RuuKcpSrBtimSjYvrbhKW9froICH4s0F3XQWLxsKNxqzG39nnvQZQnva4CMvUK63T7shevxRyYHw==", + "dev": true, + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3", + "xmlhttprequest-ssl": "~2.0.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz", + "integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/enhanced-resolve": { "version": "5.12.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", @@ -2838,6 +3831,18 @@ "node": ">=4" } }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -2918,6 +3923,12 @@ "node": ">=6" } }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -2940,6 +3951,19 @@ "node": ">=8.0.0" } }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -2979,6 +4003,21 @@ "node": ">=0.10.0" } }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -2988,6 +4027,18 @@ "node": ">=0.8.x" } }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -3034,6 +4085,36 @@ "reusify": "^1.0.4" } }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -3046,6 +4127,39 @@ "node": ">=8" } }, + "node_modules/finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/find-cache-dir": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", @@ -3076,6 +4190,26 @@ "node": ">=8" } }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/fontfaceobserver": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz", @@ -3094,6 +4228,15 @@ "url": "https://www.patreon.com/infusion" } }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", @@ -3306,6 +4449,48 @@ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "dev": true, + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/hamljs": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/hamljs/-/hamljs-0.6.2.tgz", + "integrity": "sha512-/chXRp4WpL47I+HX1vCCdSbEXAljEG2FBMmgO7Am0bYsqgnEjreeWzUdX1onXqwZtcfgxbCg5WtEYYvuZ5muBg==", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -3318,6 +4503,27 @@ "node": ">= 0.4.0" } }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -3381,6 +4587,57 @@ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ignore": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz", @@ -3431,6 +4688,12 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, "node_modules/internal-slot": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", @@ -3500,6 +4763,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -3539,21 +4808,52 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/is-expression": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", + "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "acorn": "^7.1.1", + "object-assign": "^4.1.1" } }, - "node_modules/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": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "node_modules/is-expression/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true, - "engines": { + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { "node": ">=4" } }, @@ -3590,6 +4890,15 @@ "node": ">=0.12.0" } }, + "node_modules/is-number-like": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", + "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", + "dev": true, + "dependencies": { + "lodash.isfinite": "^3.3.2" + } + }, "node_modules/is-number-object": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", @@ -3617,6 +4926,12 @@ "node": ">=0.10.0" } }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -3687,6 +5002,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-whitespace": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", + "integrity": "sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -3702,6 +5035,94 @@ "node": ">=0.10.0" } }, + "node_modules/jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jake/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jake/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jake/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jake/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -3740,12 +5161,91 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/js-beautify": { + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.7.tgz", + "integrity": "sha512-5SOX1KXPFKx+5f6ZrPsIPEY7NwKeQz47n3jm2i+XeHx9MoRsfQenlOP13FQhWvg8JRS0+XLO6XYUQ2GX+q+T9A==", + "dev": true, + "dependencies": { + "config-chain": "^1.1.13", + "editorconfig": "^0.15.3", + "glob": "^8.0.3", + "nopt": "^6.0.0" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-beautify/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/js-beautify/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-beautify/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==", + "dev": true + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -3800,6 +5300,25 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jstransformer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==", + "dev": true, + "dependencies": { + "is-promise": "^2.0.0", + "promise": "^7.0.1" + } + }, + "node_modules/junk": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/junk/-/junk-1.0.3.tgz", + "integrity": "sha512-3KF80UaaSSxo8jVnRYtMKNGFOoVPBdkkVPsw+Ad0y4oxKXPduS6G6iHkrf69yJVff/VAaYXkV42rtZ7daJxU3w==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -3809,6 +5328,15 @@ "node": ">=0.10.0" } }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/lilconfig": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", @@ -3818,6 +5346,37 @@ "node": ">=10" } }, + "node_modules/limiter": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", + "dev": true + }, + "node_modules/linkify-it": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", + "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/liquidjs": { + "version": "9.43.0", + "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-9.43.0.tgz", + "integrity": "sha512-qZZuL5Emja2UgCqiLewiw9bvwZQwm19TTGFxDkonVzB4YSTOZ8tuTVo/7Uu/AeW1cL2Qb/at3DSoV8wwyFXQCw==", + "dev": true, + "bin": { + "liquid": "bin/liquid.js", + "liquidjs": "bin/liquid.js" + }, + "engines": { + "node": ">=4.8.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/liquidjs" + } + }, "node_modules/load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -3851,57 +5410,363 @@ "node": ">=6.11.5" } }, - "node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/localtunnel": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.2.tgz", + "integrity": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==", + "dev": true, + "dependencies": { + "axios": "0.21.4", + "debug": "4.3.2", + "openurl": "1.1.1", + "yargs": "17.1.1" + }, + "bin": { + "lt": "bin/lt.js" + }, + "engines": { + "node": ">=8.3.0" + } + }, + "node_modules/localtunnel/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/localtunnel/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/localtunnel/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/localtunnel/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/localtunnel/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/localtunnel/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/localtunnel/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/localtunnel/node_modules/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", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/localtunnel/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/localtunnel/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/localtunnel/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/localtunnel/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/localtunnel/node_modules/yargs": { + "version": "17.1.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", + "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/localtunnel/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/lodash.deburr": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz", + "integrity": "sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==", + "dev": true + }, + "node_modules/lodash.isfinite": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", + "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", + "dev": true + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/luxon": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.2.tgz", + "integrity": "sha512-Yg7/RDp4nedqmLgyH0LwgGRvMEKVzKbUdkBYyCosbHgJ+kaOUx0qzSiSatVc3DFygnirTPYnMM2P5dg2uH1WvA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdown-it": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz", + "integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==", + "dependencies": { + "argparse": "^2.0.1", + "entities": "~3.0.1", + "linkify-it": "^4.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdown-it-attrs": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/markdown-it-attrs/-/markdown-it-attrs-4.1.6.tgz", + "integrity": "sha512-O7PDKZlN8RFMyDX13JnctQompwrrILuz2y43pW2GagcwpIIElkAdfeek+erHfxUOlXWPsjFeWmZ8ch1xtRLWpA==", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "markdown-it": ">= 9.0.0" + } + }, + "node_modules/markdown-it/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/markdown-it/node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/maximatch": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/maximatch/-/maximatch-0.1.0.tgz", + "integrity": "sha512-9ORVtDUFk4u/NFfo0vG/ND/z7UQCVZBL539YW0+U1I7H1BkZwizcPx5foFv7LCPcBnm2U6RjFnQOsIvN4/Vm2A==", "dev": true, "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" }, "engines": { - "node": ">=8.9.0" + "node": ">=0.10.0" } }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/maximatch/node_modules/array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==", "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "node_modules/lodash.throttle": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", - "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", - "dev": true - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "node_modules/maximatch/node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", "dev": true, "dependencies": { - "semver": "^6.0.0" + "array-uniq": "^1.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" + } + }, + "node_modules/maximatch/node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, "node_modules/mdn-data": { @@ -3910,6 +5775,11 @@ "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", "dev": true }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" + }, "node_modules/memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", @@ -3947,6 +5817,15 @@ "node": ">=8.6" } }, + "node_modules/mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true, + "bin": { + "mime": "cli.js" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -3989,12 +5868,73 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/mitt": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", + "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/moo": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", + "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==", + "dev": true + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/multimatch": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", + "dev": true, + "dependencies": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/multimatch/node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mustache": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", + "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", + "dev": true, + "bin": { + "mustache": "bin/mustache" + } + }, "node_modules/nanoid": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", @@ -4007,6 +5947,15 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -4025,6 +5974,21 @@ "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", "dev": true }, + "node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -4106,6 +6070,49 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, + "node_modules/nunjucks": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.3.tgz", + "integrity": "sha512-psb6xjLj47+fE76JdZwskvwG4MYsQKXUtMsPh6U0YMvmyjRtKRFcxnlXGWglNybtNTNVmGdp94K62/+NjF5FDQ==", + "dev": true, + "dependencies": { + "a-sync-waterfall": "^1.0.0", + "asap": "^2.0.3", + "commander": "^5.1.0" + }, + "bin": { + "nunjucks-precompile": "bin/precompile" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "chokidar": "^3.3.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/nunjucks/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-inspect": { "version": "1.12.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", @@ -4142,6 +6149,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -4151,6 +6170,24 @@ "wrappy": "1" } }, + "node_modules/openurl": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", + "integrity": "sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==", + "dev": true + }, + "node_modules/opn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "dev": true, + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -4200,6 +6237,15 @@ "node": ">=4" } }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -4233,6 +6279,12 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-to-regexp": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", + "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", + "dev": true + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -4293,6 +6345,38 @@ "node": ">=8" } }, + "node_modules/please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "dependencies": { + "semver-compare": "^1.0.0" + } + }, + "node_modules/portscanner": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", + "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", + "dev": true, + "dependencies": { + "async": "^2.6.0", + "is-number-like": "^1.0.3" + }, + "engines": { + "node": ">=0.4", + "npm": ">=1.0.0" + } + }, + "node_modules/portscanner/node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, "node_modules/postcss": { "version": "8.4.19", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz", @@ -4525,47 +6609,212 @@ } } }, - "node_modules/postcss-reporter": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.0.5.tgz", - "integrity": "sha512-glWg7VZBilooZGOFPhN9msJ3FQs19Hie7l5a/eE6WglzYqVeH3ong3ShFcp9kDWJT1g2Y/wd59cocf9XxBtkWA==", + "node_modules/postcss-reporter": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.0.5.tgz", + "integrity": "sha512-glWg7VZBilooZGOFPhN9msJ3FQs19Hie7l5a/eE6WglzYqVeH3ong3ShFcp9kDWJT1g2Y/wd59cocf9XxBtkWA==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "thenby": "^1.3.4" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/preact": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/preact/-/preact-8.5.3.tgz", + "integrity": "sha512-O3kKP+1YdgqHOFsZF2a9JVdtqD+RPzCQc3rP+Ualf7V6rmRDchZ9MJbiGTT7LuyqFKZqlHSOyO/oMFmI2lVTsw==", + "hasInstallScript": true + }, + "node_modules/pretty": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", + "integrity": "sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w==", + "dev": true, + "dependencies": { + "condense-newlines": "^0.2.1", + "extend-shallow": "^2.0.1", + "js-beautify": "^1.6.12" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "node_modules/pug": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", + "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", + "dev": true, + "dependencies": { + "pug-code-gen": "^3.0.2", + "pug-filters": "^4.0.0", + "pug-lexer": "^5.0.1", + "pug-linker": "^4.0.0", + "pug-load": "^3.0.0", + "pug-parser": "^6.0.0", + "pug-runtime": "^3.0.1", + "pug-strip-comments": "^2.0.0" + } + }, + "node_modules/pug-attrs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz", + "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", + "dev": true, + "dependencies": { + "constantinople": "^4.0.1", + "js-stringify": "^1.0.2", + "pug-runtime": "^3.0.0" + } + }, + "node_modules/pug-code-gen": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz", + "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", + "dev": true, + "dependencies": { + "constantinople": "^4.0.1", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.2", + "pug-attrs": "^3.0.0", + "pug-error": "^2.0.0", + "pug-runtime": "^3.0.0", + "void-elements": "^3.1.0", + "with": "^7.0.0" + } + }, + "node_modules/pug-error": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", + "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==", + "dev": true + }, + "node_modules/pug-filters": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz", + "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", + "dev": true, + "dependencies": { + "constantinople": "^4.0.1", + "jstransformer": "1.0.0", + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0", + "resolve": "^1.15.1" + } + }, + "node_modules/pug-lexer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz", + "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==", + "dev": true, + "dependencies": { + "character-parser": "^2.2.0", + "is-expression": "^4.0.0", + "pug-error": "^2.0.0" + } + }, + "node_modules/pug-linker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz", + "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", "dev": true, "dependencies": { - "picocolors": "^1.0.0", - "thenby": "^1.3.4" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0" } }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true + "node_modules/pug-load": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz", + "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1", + "pug-walk": "^2.0.0" + } }, - "node_modules/preact": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/preact/-/preact-8.5.3.tgz", - "integrity": "sha512-O3kKP+1YdgqHOFsZF2a9JVdtqD+RPzCQc3rP+Ualf7V6rmRDchZ9MJbiGTT7LuyqFKZqlHSOyO/oMFmI2lVTsw==", - "hasInstallScript": true + "node_modules/pug-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz", + "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", + "dev": true, + "dependencies": { + "pug-error": "^2.0.0", + "token-stream": "1.0.0" + } }, - "node_modules/pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "node_modules/pug-runtime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz", + "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==", + "dev": true + }, + "node_modules/pug-strip-comments": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", + "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", "dev": true, - "engines": { - "node": ">= 0.8" + "dependencies": { + "pug-error": "^2.0.0" } }, + "node_modules/pug-walk": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", + "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==", + "dev": true + }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -4575,6 +6824,21 @@ "node": ">=6" } }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -4604,6 +6868,30 @@ "safe-buffer": "^5.1.0" } }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -4672,6 +6960,32 @@ "node": ">= 0.10" } }, + "node_modules/recursive-copy": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/recursive-copy/-/recursive-copy-2.0.14.tgz", + "integrity": "sha512-K8WNY8f8naTpfbA+RaXmkaQuD1IeW9EgNEfyGxSqqTQukpVtoOKros9jUqbpEsSw59YOmpd8nCBgtqJZy5nvog==", + "dev": true, + "dependencies": { + "errno": "^0.1.2", + "graceful-fs": "^4.1.4", + "junk": "^1.0.1", + "maximatch": "^0.1.0", + "mkdirp": "^0.5.1", + "pify": "^2.3.0", + "promise": "^7.0.1", + "rimraf": "^2.7.1", + "slash": "^1.0.0" + } + }, + "node_modules/recursive-copy/node_modules/slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", @@ -4790,6 +7104,12 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, "node_modules/resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -4828,6 +7148,34 @@ "node": ">=8" } }, + "node_modules/resp-modifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", + "integrity": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==", + "dev": true, + "dependencies": { + "debug": "^2.2.0", + "minimatch": "^3.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/resp-modifier/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/resp-modifier/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -4838,6 +7186,18 @@ "node": ">=0.10.0" } }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -4861,6 +7221,24 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==", + "dev": true + }, + "node_modules/rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "dev": true, + "dependencies": { + "symbol-observable": "1.0.1" + }, + "engines": { + "npm": ">=2.0.0" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -4895,6 +7273,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, "node_modules/sass": { "version": "1.56.1", "resolved": "https://registry.npmjs.org/sass/-/sass-1.56.1.tgz", @@ -4930,6 +7314,19 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -4939,6 +7336,96 @@ "semver": "bin/semver.js" } }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true + }, + "node_modules/send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/send/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/send/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/send/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/send/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/send/node_modules/statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/serialize-javascript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", @@ -4948,12 +7435,117 @@ "randombytes": "^2.1.0" } }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/server-destroy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", + "dev": true + }, "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -5035,24 +7627,90 @@ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", + "dev": true + }, + "node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/slugify": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.5.tgz", + "integrity": "sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/socket.io": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.4.tgz", + "integrity": "sha512-m3GC94iK9MfIEeIBfbhJs5BqFibMtkRk8ZpKwG2QwxV0m/eEhPIV4ara6XCF1LWNAus7z58RodiZlAH71U3EhQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.2", + "engine.io": "~6.2.1", + "socket.io-adapter": "~2.4.0", + "socket.io-parser": "~4.2.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", + "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", + "dev": true + }, + "node_modules/socket.io-client": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.4.tgz", + "integrity": "sha512-ZpKteoA06RzkD32IbqILZ+Cnst4xewU7ZYK12aS1mzHftFFjpoMz69IuhP/nL25pJfao/amoPI527KnuhFm01g==", + "dev": true, + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.2.3", + "socket.io-parser": "~4.2.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=10.0.0" } }, - "node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "node_modules/socket.io-parser": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.2.tgz", + "integrity": "sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw==", "dev": true, - "engines": { - "node": ">=12" + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=10.0.0" } }, "node_modules/source-map": { @@ -5115,6 +7773,12 @@ "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, "node_modules/stable": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", @@ -5122,6 +7786,37 @@ "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", "dev": true }, + "node_modules/statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stream-throttle": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", + "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", + "dev": true, + "dependencies": { + "commander": "^2.2.0", + "limiter": "^1.0.5" + }, + "bin": { + "throttleproxy": "bin/throttleproxy.js" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/stream-throttle/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "node_modules/string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -5202,6 +7897,15 @@ "node": ">=4" } }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -5247,6 +7951,15 @@ "node": ">=10.13.0" } }, + "node_modules/symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/tabbyjs": { "version": "12.0.3", "resolved": "https://registry.npmjs.org/tabbyjs/-/tabbyjs-12.0.3.tgz", @@ -5337,6 +8050,71 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "node_modules/tfunk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tfunk/-/tfunk-4.0.0.tgz", + "integrity": "sha512-eJQ0dGfDIzWNiFNYFVjJ+Ezl/GmwHaFTBTjrtqNPW0S7cuVDBrZrmzUz6VkMeCR4DZFqhd4YtLwsw3i2wYHswQ==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "dlv": "^1.1.3" + } + }, + "node_modules/tfunk/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tfunk/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tfunk/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tfunk/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tfunk/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/thenby": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz", @@ -5364,6 +8142,71 @@ "node": ">=8.0" } }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/token-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", + "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==", + "dev": true + }, + "node_modules/typescript": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", + "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ua-parser-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.2.tgz", + "integrity": "sha512-00y/AXhx0/SsnI51fTc0rLRmafiGOM4/O+ny10Ps7f+j/b8p/ZY11ytMgznXkOVo4GQ+KwQG5UQLkLGirsACRg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -5428,6 +8271,15 @@ "node": ">= 10.0.0" } }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/update-browserslist-db": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", @@ -5463,6 +8315,15 @@ "punycode": "^2.1.0" } }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -5473,6 +8334,24 @@ "spdx-expression-parse": "^3.0.0" } }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/watchpack": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", @@ -5740,6 +8619,27 @@ "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", "dev": true }, + "node_modules/with": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", + "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", + "assert-never": "^1.2.1", + "babel-walk": "3.0.0-canary-5" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, "node_modules/wrap-ansi": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", @@ -5760,12 +8660,48 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "node_modules/ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xmlhttprequest-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/y18n": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, + "node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + }, "node_modules/yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", @@ -5828,29 +8764,187 @@ "node": ">=6" } }, - "node_modules/yargs/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/yargs/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + } + }, + "dependencies": { + "@11ty/dependency-tree": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@11ty/dependency-tree/-/dependency-tree-2.0.1.tgz", + "integrity": "sha512-5R+DsT9LJ9tXiSQ4y+KLFppCkQyXhzAm1AIuBWE/sbU0hSXY5pkhoqQYEcPJQFg/nglL+wD55iv2j+7O96UAvg==", + "dev": true + }, + "@11ty/eleventy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-1.0.2.tgz", + "integrity": "sha512-03ER4zukR6BgwppI5DHRE11lc+8B0fWsBrqacVWo3o49QkdEFXnEWjhyI9qd9LrPlgQHK2/MYyxuOvNwecyCLQ==", + "dev": true, + "requires": { + "@11ty/dependency-tree": "^2.0.1", + "@11ty/eleventy-utils": "^1.0.1", + "@iarna/toml": "^2.2.5", + "@sindresorhus/slugify": "^1.1.2", + "browser-sync": "^2.27.10", + "chokidar": "^3.5.3", + "cross-spawn": "^7.0.3", + "debug": "^4.3.4", + "dependency-graph": "^0.11.0", + "ejs": "^3.1.8", + "fast-glob": "^3.2.11", + "graceful-fs": "^4.2.10", + "gray-matter": "^4.0.3", + "hamljs": "^0.6.2", + "handlebars": "^4.7.7", + "is-glob": "^4.0.3", + "kleur": "^4.1.5", + "liquidjs": "^9.40.0", + "lodash": "^4.17.21", + "luxon": "^2.5.0", + "markdown-it": "^12.3.2", + "minimist": "^1.2.6", + "moo": "^0.5.1", + "multimatch": "^5.0.0", + "mustache": "^4.2.0", + "normalize-path": "^3.0.0", + "nunjucks": "^3.2.3", + "path-to-regexp": "^6.2.1", + "please-upgrade-node": "^3.2.0", + "pretty": "^2.0.0", + "pug": "^3.0.2", + "recursive-copy": "^2.0.14", + "semver": "^7.3.7", + "slugify": "^1.6.5" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true + }, + "linkify-it": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "dev": true, + "requires": { + "uc.micro": "^1.0.1" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "markdown-it": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "dev": true, + "requires": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@11ty/eleventy-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@11ty/eleventy-utils/-/eleventy-utils-1.0.1.tgz", + "integrity": "sha512-HPpCTz4PzudcQU+i+x6GSNHVqgnvRhnVYg5dLKaAoRWLN966odAGsBxKSyhF8i1MdlOPtsytYb2AGWP7jISC5w==", "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" + "requires": { + "normalize-path": "^3.0.0" } }, - "node_modules/yargs/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - } - }, - "dependencies": { "@ampproject/remapping": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", @@ -6965,6 +10059,12 @@ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true }, + "@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "dev": true + }, "@jridgewell/gen-mapping": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", @@ -7052,6 +10152,48 @@ "fastq": "^1.6.0" } }, + "@sindresorhus/slugify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-1.1.2.tgz", + "integrity": "sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA==", + "dev": true, + "requires": { + "@sindresorhus/transliterate": "^0.1.1", + "escape-string-regexp": "^4.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + } + } + }, + "@sindresorhus/transliterate": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-0.1.2.tgz", + "integrity": "sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0", + "lodash.deburr": "^4.1.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, + "@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", + "dev": true + }, "@splidejs/splide": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/@splidejs/splide/-/splide-4.0.7.tgz", @@ -7063,6 +10205,21 @@ "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", "dev": true }, + "@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "@types/cors": { + "version": "2.8.13", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", + "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/eslint": { "version": "8.4.10", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", @@ -7095,6 +10252,12 @@ "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, "@types/node": { "version": "18.11.11", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.11.tgz", @@ -7282,6 +10445,28 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, + "a-sync-waterfall": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", + "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, "accessible-autocomplete": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/accessible-autocomplete/-/accessible-autocomplete-2.0.4.tgz", @@ -7376,12 +10561,63 @@ "picomatch": "^2.0.4" } }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true + }, "array-union": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", "dev": true }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "assert-never": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz", + "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==", + "dev": true + }, + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "async-each-series": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", + "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", + "dev": true + }, "autoprefixer": { "version": "10.4.13", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", @@ -7396,6 +10632,15 @@ "postcss-value-parser": "^4.2.0" } }, + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dev": true, + "requires": { + "follow-redirects": "^1.14.0" + } + }, "babel-loader": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", @@ -7438,47 +10683,286 @@ "@babel/helper-define-polyfill-provider": "^0.3.3" } }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "babel-walk": { + "version": "3.0.0-canary-5", + "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", + "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", + "dev": true, + "requires": { + "@babel/types": "^7.9.6" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-sync": { + "version": "2.27.11", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.27.11.tgz", + "integrity": "sha512-U5f9u97OYJH66T0MGWWzG9rOQTW6ZmDMj97vsmtqwNS03JAwdLVES8eel2lD3rvAqQCNAFqaJ74NMacBI57vJg==", + "dev": true, + "requires": { + "browser-sync-client": "^2.27.11", + "browser-sync-ui": "^2.27.11", + "bs-recipes": "1.3.4", + "bs-snippet-injector": "^2.0.1", + "chokidar": "^3.5.1", + "connect": "3.6.6", + "connect-history-api-fallback": "^1", + "dev-ip": "^1.0.1", + "easy-extender": "^2.3.4", + "eazy-logger": "3.1.0", + "etag": "^1.8.1", + "fresh": "^0.5.2", + "fs-extra": "3.0.1", + "http-proxy": "^1.18.1", + "immutable": "^3", + "localtunnel": "^2.0.1", + "micromatch": "^4.0.2", + "opn": "5.3.0", + "portscanner": "2.2.0", + "qs": "^6.11.0", + "raw-body": "^2.3.2", + "resp-modifier": "6.0.2", + "rx": "4.1.0", + "send": "0.16.2", + "serve-index": "1.9.1", + "serve-static": "1.13.2", + "server-destroy": "1.0.1", + "socket.io": "^4.4.1", + "ua-parser-js": "1.0.2", + "yargs": "^17.3.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^3.0.0", + "universalify": "^0.1.0" + } + }, + "immutable": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", + "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", + "dev": true + }, + "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", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + } + } + }, + "browser-sync-client": { + "version": "2.27.11", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.27.11.tgz", + "integrity": "sha512-okMNfD2NasL/XD1/BclP3onXjhahisk3e/kTQ5HPDT/lLqdBqNDd6QFcjI5I1ak7na2hxKQSLjryql+7fp5gKQ==", "dev": true, "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "etag": "1.8.1", + "fresh": "0.5.2", + "mitt": "^1.1.3", + "rxjs": "^5.5.6", + "typescript": "^4.6.2" } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "browser-sync-ui": { + "version": "2.27.11", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.27.11.tgz", + "integrity": "sha512-1T/Y8Pp1R68aUL7zVSFq0nxtr258xWd/nTasCAHX2M6EsGaswVOFtXsw3bKqsr35z+J+LfVfOdz1HFLYKxdgrA==", "dev": true, "requires": { - "fill-range": "^7.0.1" + "async-each-series": "0.1.1", + "connect-history-api-fallback": "^1", + "immutable": "^3", + "server-destroy": "1.0.1", + "socket.io-client": "^4.4.1", + "stream-throttle": "^0.1.3" + }, + "dependencies": { + "immutable": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", + "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", + "dev": true + } } }, "browserslist": { @@ -7493,12 +10977,30 @@ "update-browserslist-db": "^1.0.9" } }, + "bs-recipes": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", + "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==", + "dev": true + }, + "bs-snippet-injector": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz", + "integrity": "sha512-4u8IgB+L9L+S5hknOj3ddNSb42436gsnGm1AuM15B7CdbkpQTyVWgIM5/JUBiKiRwGOR86uo0Lu/OsX+SAlJmw==", + "dev": true + }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -7532,6 +11034,15 @@ "supports-color": "^5.3.0" } }, + "character-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", + "dev": true, + "requires": { + "is-regex": "^1.0.3" + } + }, "chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -7627,12 +11138,95 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, + "condense-newlines": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", + "integrity": "sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-whitespace": "^0.3.0", + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "~1.3.2", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "constantinople": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", + "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", + "dev": true, + "requires": { + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.1" + } + }, "convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true }, + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true + }, "copy-webpack-plugin": { "version": "10.2.4", "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", @@ -7706,6 +11300,16 @@ "browserslist": "^4.21.4" } }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -7790,12 +11394,30 @@ "object-keys": "^1.1.1" } }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, "dependency-graph": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", "dev": true }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==", + "dev": true + }, + "dev-ip": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", + "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==", + "dev": true + }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -7805,6 +11427,18 @@ "path-type": "^4.0.0" } }, + "dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==", + "dev": true + }, "dom-serializer": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", @@ -7842,6 +11476,65 @@ "domhandler": "^4.2.0" } }, + "easy-extender": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", + "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "eazy-logger": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-3.1.0.tgz", + "integrity": "sha512-/snsn2JqBtUSSstEl4R0RKjkisGHAhvYj89i7r3ytNUKW12y178KDZwXLXIgwDqLW6E/VRMT9qfld7wvFae8bQ==", + "dev": true, + "requires": { + "tfunk": "^4.0.0" + } + }, + "editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "dev": true, + "requires": { + "jake": "^10.8.5" + } + }, "electron-to-chromium": { "version": "1.4.284", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", @@ -7860,6 +11553,49 @@ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "engine.io": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", + "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", + "dev": true, + "requires": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3" + } + }, + "engine.io-client": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.3.tgz", + "integrity": "sha512-aXPtgF1JS3RuuKcpSrBtimSjYvrbhKW9froICH4s0F3XQWLxsKNxqzG39nnvQZQnva4CMvUK63T7shevxRyYHw==", + "dev": true, + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3", + "xmlhttprequest-ssl": "~2.0.0" + } + }, + "engine.io-parser": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz", + "integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==", + "dev": true + }, "enhanced-resolve": { "version": "5.12.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", @@ -7882,6 +11618,15 @@ "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", "dev": true }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -7947,6 +11692,12 @@ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -7963,6 +11714,12 @@ "estraverse": "^4.1.1" } }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, "esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -7992,12 +11749,33 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, "events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -8038,6 +11816,35 @@ "reusify": "^1.0.4" } }, + "filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "requires": { + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -8047,6 +11854,38 @@ "to-regex-range": "^5.0.1" } }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, "find-cache-dir": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", @@ -8068,6 +11907,12 @@ "path-exists": "^4.0.0" } }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true + }, "fontfaceobserver": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz", @@ -8079,6 +11924,12 @@ "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", "dev": true }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true + }, "fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", @@ -8230,6 +12081,37 @@ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, + "gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "dev": true, + "requires": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + } + }, + "hamljs": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/hamljs/-/hamljs-0.6.2.tgz", + "integrity": "sha512-/chXRp4WpL47I+HX1vCCdSbEXAljEG2FBMmgO7Am0bYsqgnEjreeWzUdX1onXqwZtcfgxbCg5WtEYYvuZ5muBg==", + "dev": true + }, + "handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + } + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -8239,6 +12121,23 @@ "function-bind": "^1.1.1" } }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + } + } + }, "has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -8281,6 +12180,47 @@ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "dependencies": { + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } + } + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, "ignore": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz", @@ -8319,6 +12259,12 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, "internal-slot": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", @@ -8370,6 +12316,12 @@ "has-tostringtag": "^1.0.0" } }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, "is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -8394,6 +12346,30 @@ "has-tostringtag": "^1.0.0" } }, + "is-expression": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", + "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "object-assign": "^4.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -8427,6 +12403,15 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "is-number-like": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", + "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", + "dev": true, + "requires": { + "lodash.isfinite": "^3.3.2" + } + }, "is-number-object": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", @@ -8445,6 +12430,12 @@ "isobject": "^3.0.1" } }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, "is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -8491,6 +12482,18 @@ "call-bind": "^1.0.2" } }, + "is-whitespace": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", + "integrity": "sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -8503,6 +12506,69 @@ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true }, + "jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "dev": true, + "requires": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -8531,12 +12597,73 @@ } } }, + "js-beautify": { + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.7.tgz", + "integrity": "sha512-5SOX1KXPFKx+5f6ZrPsIPEY7NwKeQz47n3jm2i+XeHx9MoRsfQenlOP13FQhWvg8JRS0+XLO6XYUQ2GX+q+T9A==", + "dev": true, + "requires": { + "config-chain": "^1.1.13", + "editorconfig": "^0.15.3", + "glob": "^8.0.3", + "nopt": "^6.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "js-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==", + "dev": true + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -8577,18 +12704,60 @@ "universalify": "^2.0.0" } }, + "jstransformer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==", + "dev": true, + "requires": { + "is-promise": "^2.0.0", + "promise": "^7.0.1" + } + }, + "junk": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/junk/-/junk-1.0.3.tgz", + "integrity": "sha512-3KF80UaaSSxo8jVnRYtMKNGFOoVPBdkkVPsw+Ad0y4oxKXPduS6G6iHkrf69yJVff/VAaYXkV42rtZ7daJxU3w==", + "dev": true + }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, + "kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true + }, "lilconfig": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", "dev": true }, + "limiter": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", + "dev": true + }, + "linkify-it": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", + "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", + "requires": { + "uc.micro": "^1.0.1" + } + }, + "liquidjs": { + "version": "9.43.0", + "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-9.43.0.tgz", + "integrity": "sha512-qZZuL5Emja2UgCqiLewiw9bvwZQwm19TTGFxDkonVzB4YSTOZ8tuTVo/7Uu/AeW1cL2Qb/at3DSoV8wwyFXQCw==", + "dev": true + }, "load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -8609,23 +12778,157 @@ } } }, - "loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true - }, - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, + "loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true + }, + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "localtunnel": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.2.tgz", + "integrity": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==", + "dev": true, + "requires": { + "axios": "0.21.4", + "debug": "4.3.2", + "openurl": "1.1.1", + "yargs": "17.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "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", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yargs": { + "version": "17.1.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", + "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + } + } + }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -8635,18 +12938,52 @@ "p-locate": "^4.1.0" } }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, + "lodash.deburr": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz", + "integrity": "sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==", + "dev": true + }, + "lodash.isfinite": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", + "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", + "dev": true + }, "lodash.throttle": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", "dev": true }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "luxon": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.2.tgz", + "integrity": "sha512-Yg7/RDp4nedqmLgyH0LwgGRvMEKVzKbUdkBYyCosbHgJ+kaOUx0qzSiSatVc3DFygnirTPYnMM2P5dg2uH1WvA==", + "dev": true + }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -8656,12 +12993,82 @@ "semver": "^6.0.0" } }, + "markdown-it": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz", + "integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==", + "requires": { + "argparse": "^2.0.1", + "entities": "~3.0.1", + "linkify-it": "^4.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==" + } + } + }, + "markdown-it-attrs": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/markdown-it-attrs/-/markdown-it-attrs-4.1.6.tgz", + "integrity": "sha512-O7PDKZlN8RFMyDX13JnctQompwrrILuz2y43pW2GagcwpIIElkAdfeek+erHfxUOlXWPsjFeWmZ8ch1xtRLWpA==", + "requires": {} + }, + "maximatch": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/maximatch/-/maximatch-0.1.0.tgz", + "integrity": "sha512-9ORVtDUFk4u/NFfo0vG/ND/z7UQCVZBL539YW0+U1I7H1BkZwizcPx5foFv7LCPcBnm2U6RjFnQOsIvN4/Vm2A==", + "dev": true, + "requires": { + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" + }, + "dependencies": { + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true + } + } + }, "mdn-data": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", "dev": true }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" + }, "memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", @@ -8690,6 +13097,12 @@ "picomatch": "^2.3.1" } }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + }, "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -8720,18 +13133,72 @@ "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", "dev": true }, + "mitt": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", + "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", + "dev": true + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "moo": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", + "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "multimatch": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", + "dev": true, + "requires": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + } + } + }, + "mustache": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", + "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", + "dev": true + }, "nanoid": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", "dev": true }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -8750,6 +13217,15 @@ "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", "dev": true }, + "nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "requires": { + "abbrev": "^1.0.0" + } + }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -8813,6 +13289,31 @@ "boolbase": "^1.0.0" } }, + "nunjucks": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.3.tgz", + "integrity": "sha512-psb6xjLj47+fE76JdZwskvwG4MYsQKXUtMsPh6U0YMvmyjRtKRFcxnlXGWglNybtNTNVmGdp94K62/+NjF5FDQ==", + "dev": true, + "requires": { + "a-sync-waterfall": "^1.0.0", + "asap": "^2.0.3", + "commander": "^5.1.0" + }, + "dependencies": { + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true + } + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, "object-inspect": { "version": "1.12.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", @@ -8837,6 +13338,15 @@ "object-keys": "^1.1.1" } }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -8846,6 +13356,21 @@ "wrappy": "1" } }, + "openurl": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", + "integrity": "sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==", + "dev": true + }, + "opn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -8880,6 +13405,12 @@ "json-parse-better-errors": "^1.0.1" } }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -8904,6 +13435,12 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "path-to-regexp": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", + "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", + "dev": true + }, "path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -8943,6 +13480,36 @@ "find-up": "^4.0.0" } }, + "please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "requires": { + "semver-compare": "^1.0.0" + } + }, + "portscanner": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", + "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", + "dev": true, + "requires": { + "async": "^2.6.0", + "is-number-like": "^1.0.3" + }, + "dependencies": { + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + } + } + }, "postcss": { "version": "8.4.19", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz", @@ -9097,31 +13664,193 @@ "yaml": "^1.10.2" } }, - "postcss-reporter": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.0.5.tgz", - "integrity": "sha512-glWg7VZBilooZGOFPhN9msJ3FQs19Hie7l5a/eE6WglzYqVeH3ong3ShFcp9kDWJT1g2Y/wd59cocf9XxBtkWA==", + "postcss-reporter": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.0.5.tgz", + "integrity": "sha512-glWg7VZBilooZGOFPhN9msJ3FQs19Hie7l5a/eE6WglzYqVeH3ong3ShFcp9kDWJT1g2Y/wd59cocf9XxBtkWA==", + "dev": true, + "requires": { + "picocolors": "^1.0.0", + "thenby": "^1.3.4" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "preact": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/preact/-/preact-8.5.3.tgz", + "integrity": "sha512-O3kKP+1YdgqHOFsZF2a9JVdtqD+RPzCQc3rP+Ualf7V6rmRDchZ9MJbiGTT7LuyqFKZqlHSOyO/oMFmI2lVTsw==" + }, + "pretty": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", + "integrity": "sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w==", + "dev": true, + "requires": { + "condense-newlines": "^0.2.1", + "extend-shallow": "^2.0.1", + "js-beautify": "^1.6.12" + } + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "requires": { + "asap": "~2.0.3" + } + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "pug": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", + "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", + "dev": true, + "requires": { + "pug-code-gen": "^3.0.2", + "pug-filters": "^4.0.0", + "pug-lexer": "^5.0.1", + "pug-linker": "^4.0.0", + "pug-load": "^3.0.0", + "pug-parser": "^6.0.0", + "pug-runtime": "^3.0.1", + "pug-strip-comments": "^2.0.0" + } + }, + "pug-attrs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz", + "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", + "dev": true, + "requires": { + "constantinople": "^4.0.1", + "js-stringify": "^1.0.2", + "pug-runtime": "^3.0.0" + } + }, + "pug-code-gen": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz", + "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", + "dev": true, + "requires": { + "constantinople": "^4.0.1", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.2", + "pug-attrs": "^3.0.0", + "pug-error": "^2.0.0", + "pug-runtime": "^3.0.0", + "void-elements": "^3.1.0", + "with": "^7.0.0" + } + }, + "pug-error": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", + "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==", + "dev": true + }, + "pug-filters": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz", + "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", + "dev": true, + "requires": { + "constantinople": "^4.0.1", + "jstransformer": "1.0.0", + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0", + "resolve": "^1.15.1" + } + }, + "pug-lexer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz", + "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==", + "dev": true, + "requires": { + "character-parser": "^2.2.0", + "is-expression": "^4.0.0", + "pug-error": "^2.0.0" + } + }, + "pug-linker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz", + "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", + "dev": true, + "requires": { + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0" + } + }, + "pug-load": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz", + "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "pug-walk": "^2.0.0" + } + }, + "pug-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz", + "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", "dev": true, "requires": { - "picocolors": "^1.0.0", - "thenby": "^1.3.4" + "pug-error": "^2.0.0", + "token-stream": "1.0.0" } }, - "postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "pug-runtime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz", + "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==", "dev": true }, - "preact": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/preact/-/preact-8.5.3.tgz", - "integrity": "sha512-O3kKP+1YdgqHOFsZF2a9JVdtqD+RPzCQc3rP+Ualf7V6rmRDchZ9MJbiGTT7LuyqFKZqlHSOyO/oMFmI2lVTsw==" + "pug-strip-comments": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", + "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", + "dev": true, + "requires": { + "pug-error": "^2.0.0" + } }, - "pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "pug-walk": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", + "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==", "dev": true }, "punycode": { @@ -9130,6 +13859,15 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -9145,6 +13883,24 @@ "safe-buffer": "^5.1.0" } }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, "read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -9200,6 +13956,31 @@ "resolve": "^1.1.6" } }, + "recursive-copy": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/recursive-copy/-/recursive-copy-2.0.14.tgz", + "integrity": "sha512-K8WNY8f8naTpfbA+RaXmkaQuD1IeW9EgNEfyGxSqqTQukpVtoOKros9jUqbpEsSw59YOmpd8nCBgtqJZy5nvog==", + "dev": true, + "requires": { + "errno": "^0.1.2", + "graceful-fs": "^4.1.4", + "junk": "^1.0.1", + "maximatch": "^0.1.0", + "mkdirp": "^0.5.1", + "pify": "^2.3.0", + "promise": "^7.0.1", + "rimraf": "^2.7.1", + "slash": "^1.0.0" + }, + "dependencies": { + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", + "dev": true + } + } + }, "regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", @@ -9296,6 +14077,12 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, "resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -9322,12 +14109,48 @@ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, + "resp-modifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", + "integrity": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==", + "dev": true, + "requires": { + "debug": "^2.2.0", + "minimatch": "^3.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -9337,6 +14160,21 @@ "queue-microtask": "^1.2.2" } }, + "rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==", + "dev": true + }, + "rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "dev": true, + "requires": { + "symbol-observable": "1.0.1" + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -9354,6 +14192,12 @@ "is-regex": "^1.1.4" } }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, "sass": { "version": "1.56.1", "resolved": "https://registry.npmjs.org/sass/-/sass-1.56.1.tgz", @@ -9376,12 +14220,102 @@ "ajv-keywords": "^3.5.2" } }, + "section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + } + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + } + } + }, "serialize-javascript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", @@ -9391,12 +14325,104 @@ "randombytes": "^2.1.0" } }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + } + }, + "server-destroy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", + "dev": true + }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, "shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -9459,12 +14485,66 @@ "object-inspect": "^1.9.0" } }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", + "dev": true + }, "slash": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "dev": true }, + "slugify": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.5.tgz", + "integrity": "sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ==", + "dev": true + }, + "socket.io": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.4.tgz", + "integrity": "sha512-m3GC94iK9MfIEeIBfbhJs5BqFibMtkRk8ZpKwG2QwxV0m/eEhPIV4ara6XCF1LWNAus7z58RodiZlAH71U3EhQ==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.2", + "engine.io": "~6.2.1", + "socket.io-adapter": "~2.4.0", + "socket.io-parser": "~4.2.1" + } + }, + "socket.io-adapter": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", + "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", + "dev": true + }, + "socket.io-client": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.4.tgz", + "integrity": "sha512-ZpKteoA06RzkD32IbqILZ+Cnst4xewU7ZYK12aS1mzHftFFjpoMz69IuhP/nL25pJfao/amoPI527KnuhFm01g==", + "dev": true, + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.2.3", + "socket.io-parser": "~4.2.1" + } + }, + "socket.io-parser": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.2.tgz", + "integrity": "sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw==", + "dev": true, + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -9519,12 +14599,42 @@ "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, "stable": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", "dev": true }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==", + "dev": true + }, + "stream-throttle": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", + "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", + "dev": true, + "requires": { + "commander": "^2.2.0", + "limiter": "^1.0.5" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -9584,6 +14694,12 @@ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true }, + "strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "dev": true + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -9614,6 +14730,12 @@ "stable": "^0.1.8" } }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw==", + "dev": true + }, "tabbyjs": { "version": "12.0.3", "resolved": "https://registry.npmjs.org/tabbyjs/-/tabbyjs-12.0.3.tgz", @@ -9671,6 +14793,58 @@ } } }, + "tfunk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tfunk/-/tfunk-4.0.0.tgz", + "integrity": "sha512-eJQ0dGfDIzWNiFNYFVjJ+Ezl/GmwHaFTBTjrtqNPW0S7cuVDBrZrmzUz6VkMeCR4DZFqhd4YtLwsw3i2wYHswQ==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "dlv": "^1.1.3" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "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": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, "thenby": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz", @@ -9692,6 +14866,42 @@ "is-number": "^7.0.0" } }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "token-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", + "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==", + "dev": true + }, + "typescript": { + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", + "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", + "dev": true + }, + "ua-parser-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.2.tgz", + "integrity": "sha512-00y/AXhx0/SsnI51fTc0rLRmafiGOM4/O+ny10Ps7f+j/b8p/ZY11ytMgznXkOVo4GQ+KwQG5UQLkLGirsACRg==", + "dev": true + }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + }, + "uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true + }, "unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -9738,6 +14948,12 @@ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, "update-browserslist-db": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", @@ -9757,6 +14973,12 @@ "punycode": "^2.1.0" } }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true + }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -9767,6 +14989,18 @@ "spdx-expression-parse": "^3.0.0" } }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "dev": true + }, "watchpack": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", @@ -9950,6 +15184,24 @@ "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", "dev": true }, + "with": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", + "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", + "dev": true, + "requires": { + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", + "assert-never": "^1.2.1", + "babel-walk": "3.0.0-canary-5" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, "wrap-ansi": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", @@ -9967,12 +15219,31 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "dev": true, + "requires": {} + }, + "xmlhttprequest-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", + "dev": true + }, "y18n": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + }, "yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", diff --git a/package.json b/package.json index 8de3fad4..89282293 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,8 @@ "js": "webpack --config webpack.config.js", "prebuild": "shx rm -rf ${npm_package_config_to} && shx mkdir -p ${npm_package_config_to}/fonts && shx mkdir ${npm_package_config_to}/images && shx mkdir ${npm_package_config_to}/js && shx mkdir ${npm_package_config_to}/js/libraries && shx mkdir ${npm_package_config_to}/styles && shx mkdir ${npm_package_config_to}/svg", "build": "npm-run-all --parallel fonts images svgs js styles", + "eleventy-start": "eleventy --serve", + "eleventy-build": "eleventy", "watch:fonts": "chokidar ${npm_package_config_from}/fonts -c \"npm run fonts\"", "watch:images": "chokidar ${npm_package_config_from}/images -c \"npm run images\"", "watch:svgs": "chokidar ${npm_package_config_from}/svg -c \"npm run svgs\"", @@ -60,6 +62,7 @@ "watch": "npm-run-all --parallel watch:*" }, "devDependencies": { + "@11ty/eleventy": "^1.0.2", "@babel/core": "^7.16.12", "@babel/preset-env": "^7.16.11", "autoprefixer": "^10.4.0", @@ -80,6 +83,8 @@ "@splidejs/splide": "^4.0.7", "accessible-autocomplete": "^2.0.3", "fontfaceobserver": "^2.1.0", + "markdown-it": "^13.0.1", + "markdown-it-attrs": "^4.1.6", "normalize.css": "^8.0.1", "tabbyjs": "^12.0.3" } diff --git a/web/amplify/eleventy/.DS_Store b/web/amplify/eleventy/.DS_Store new file mode 100644 index 00000000..22caccd9 Binary files /dev/null and b/web/amplify/eleventy/.DS_Store differ diff --git a/web/amplify/eleventy/_data/layout.js b/web/amplify/eleventy/_data/layout.js new file mode 100644 index 00000000..7bfc737d --- /dev/null +++ b/web/amplify/eleventy/_data/layout.js @@ -0,0 +1 @@ +module.exports = "page.njk" \ No newline at end of file diff --git a/web/amplify/eleventy/_includes/advanced-components/accessible-autocomplete.njk b/web/amplify/eleventy/_includes/advanced-components/accessible-autocomplete.njk new file mode 100644 index 00000000..d6a4b0df --- /dev/null +++ b/web/amplify/eleventy/_includes/advanced-components/accessible-autocomplete.njk @@ -0,0 +1,11 @@ +
+ + +
\ No newline at end of file diff --git a/web/amplify/eleventy/_includes/advanced-components/collapsibles.njk b/web/amplify/eleventy/_includes/advanced-components/collapsibles.njk new file mode 100644 index 00000000..1e09b54c --- /dev/null +++ b/web/amplify/eleventy/_includes/advanced-components/collapsibles.njk @@ -0,0 +1,10 @@ +
+ {%- for key, panel in params.panels -%} +
+

{{ panel.title }}

+
+ {{ panel.body | safe }} +
+
+ {%- endfor -%} +
\ No newline at end of file diff --git a/web/amplify/eleventy/_includes/advanced-components/disclosure.njk b/web/amplify/eleventy/_includes/advanced-components/disclosure.njk new file mode 100644 index 00000000..c66fb581 --- /dev/null +++ b/web/amplify/eleventy/_includes/advanced-components/disclosure.njk @@ -0,0 +1,2 @@ + +{{ params.hiddenContent | safe }} \ No newline at end of file diff --git a/web/amplify/eleventy/_includes/advanced-components/tabs.njk b/web/amplify/eleventy/_includes/advanced-components/tabs.njk new file mode 100644 index 00000000..971c2810 --- /dev/null +++ b/web/amplify/eleventy/_includes/advanced-components/tabs.njk @@ -0,0 +1,13 @@ + +{%- for key, section in params.tabs -%} +
+

{{ section.title }}

+ {{ section.body | safe }} +
+{%- endfor -%} \ No newline at end of file diff --git a/web/amplify/eleventy/_includes/base.njk b/web/amplify/eleventy/_includes/base.njk new file mode 100644 index 00000000..4b1ad121 --- /dev/null +++ b/web/amplify/eleventy/_includes/base.njk @@ -0,0 +1,84 @@ +{%- from "./system/components.njk" import pageComponents -%} + + + + + + + + {{ title }} - Amplify + + + + + + + + + + + + + + + + + +{%- include './global/footer.njk' -%} + +{%- if "tabs" in page.url -%} + +{%- endif -%} + + + \ No newline at end of file diff --git a/web/amplify/eleventy/_includes/component.njk b/web/amplify/eleventy/_includes/component.njk new file mode 100644 index 00000000..132f13ab --- /dev/null +++ b/web/amplify/eleventy/_includes/component.njk @@ -0,0 +1,4 @@ +{%- from "./system/component.njk" import component -%} +{%- for key, item in components -%} + {{ component(item.type, item.name, item.data) }} +{%- endfor -%} \ No newline at end of file diff --git a/web/amplify/eleventy/_includes/components.njk b/web/amplify/eleventy/_includes/components.njk new file mode 100644 index 00000000..2d10ab8d --- /dev/null +++ b/web/amplify/eleventy/_includes/components.njk @@ -0,0 +1,25 @@ +{%- from "./system/component.njk" import component -%} +{%- for key, item in components -%} + + {%- if item.type and item.name and item.data -%} +
+ {{ component(item.type, item.name, item.data) }} +
+ + {%- if item | length <= 1 -%} + {%- for childKey, child in item -%} +
+ {{ component(child.type, child.name, child.data) }} +
+ {%- endfor -%} + {%- endif -%} + + {%- else -%} + {%- for childKey, child in item -%} +
+ {{ component(child.type, child.name, child.data) }} +
+ {%- endfor -%} + {%- endif -%} + +{%- endfor -%} \ No newline at end of file diff --git a/web/amplify/eleventy/_includes/core-components/avatar.njk b/web/amplify/eleventy/_includes/core-components/avatar.njk new file mode 100644 index 00000000..039e398d --- /dev/null +++ b/web/amplify/eleventy/_includes/core-components/avatar.njk @@ -0,0 +1,8 @@ +{%- if params.size === "med" -%} + {% set avatarSize = "avatar--med" %} +{%- elif params.size === "small" -%} + {% set avatarSize = "avatar--small" %} +{%- endif -%} +
+ {{ params.image.altText }} +
\ No newline at end of file diff --git a/web/amplify/eleventy/_includes/core-components/breadcrumbs.njk b/web/amplify/eleventy/_includes/core-components/breadcrumbs.njk new file mode 100644 index 00000000..f38f0366 --- /dev/null +++ b/web/amplify/eleventy/_includes/core-components/breadcrumbs.njk @@ -0,0 +1,13 @@ + \ No newline at end of file diff --git a/web/amplify/eleventy/_includes/core-components/cards.njk b/web/amplify/eleventy/_includes/core-components/cards.njk new file mode 100644 index 00000000..9e856136 --- /dev/null +++ b/web/amplify/eleventy/_includes/core-components/cards.njk @@ -0,0 +1,130 @@ +{%- if params.image.aspectRatio === "16:9" -%} + {% set aspectRatio = " l-frame--16-9" %} +{%- elif params.image.aspectRatio === "3:2" -%} + {% set aspectRatio = " l-frame--3-2" %} +{%- elif params.image.aspectRatio === "4:3" -%} + {% set aspectRatio = " l-frame--4-3" %} +{%- elif params.image.aspectRatio === "square" -%} + {% set aspectRatio = " l-frame--square" %} +{%- endif -%} +{%- if params.example -%} +

{{ params.sectionTitle }}

+{%- endif -%} +{%- if params.cards -%} + {%- if params.componentType === "shelves" -%} + + {%- else -%} +
+
+ {%- for key, card in params.cards -%} +
+
+ {%- if card.heading or card.body -%} +
+

{{ card.heading }}

+ {{ card.body | safe }} + {%- if card.link -%} + + {%- if card.link.name -%} + {{ card.link.name }}: + {%- endif -%} + {{ card.link.text }} + + {%- endif -%} + {%- if card.tags -%} +
+ +
+ {%- endif -%} +
+ {%- endif -%} + {%- if card.image -%} +
+ {{ card.image.altText }} +
+ {%- endif -%} +
+
+ {%- endfor -%} +
+
+ {%- endif -%} +{%- else -%} +
+ {%- if params.heading or params.body -%} +
+ {%- if params.heading -%} +

{{ params.heading }}

+ {%- endif -%} + {%- if params.body -%} + {{ params.body | safe }} + {%- endif -%} + {%- if params.link -%} + {{ params.link.text }} + {%- endif -%} + {%- if params.tags -%} +
+ +
+ {%- endif -%} +
+ {%- if params.image -%} + {%- if params.image.inFrame -%} +
+ {{ params.image.altText }} +
+ {%- else -%} +
+ {{ params.image.altText }} +
+ {%- endif -%} + {%- endif -%} + {%- endif -%} +
+{%- endif -%} \ No newline at end of file diff --git a/web/amplify/eleventy/_includes/core-components/image-component.njk b/web/amplify/eleventy/_includes/core-components/image-component.njk new file mode 100644 index 00000000..322bb5b7 --- /dev/null +++ b/web/amplify/eleventy/_includes/core-components/image-component.njk @@ -0,0 +1,17 @@ +{%- if params.aspectRatio === "16:9" -%} + {% set aspectRatio = " l-frame--16-9" %} +{%- elif params.aspectRatio === "3:2" -%} + {% set aspectRatio = " l-frame--3-2" %} +{%- elif params.aspectRatio === "4:3" -%} + {% set aspectRatio = " l-frame--4-3" %} +{%- elif params.aspectRatio === "square" -%} + {% set aspectRatio = " l-frame--square" %} +{%- endif -%} +
+
+ {{ params.url }} +
+
+ {{ params.caption | safe }} +
+
\ No newline at end of file diff --git a/web/amplify/eleventy/_includes/core-components/notes.njk b/web/amplify/eleventy/_includes/core-components/notes.njk new file mode 100644 index 00000000..cd8351c2 --- /dev/null +++ b/web/amplify/eleventy/_includes/core-components/notes.njk @@ -0,0 +1,21 @@ +{% if params.type === "info" %} +
+

{{ params.title }}

+ {{ params.message | safe }} +
+{% elif params.type === "success" %} +
+

{{ params.title }}

+ {{ params.message | safe }} +
+{% elif params.type === "warning" %} +
+

{{ params.title }}

+ {{ params.message | safe }} +
+{% elif params.type === "error" %} + +{% endif %} \ No newline at end of file diff --git a/web/amplify/eleventy/_includes/core-components/progress-indicator.njk b/web/amplify/eleventy/_includes/core-components/progress-indicator.njk new file mode 100644 index 00000000..cca3baf9 --- /dev/null +++ b/web/amplify/eleventy/_includes/core-components/progress-indicator.njk @@ -0,0 +1,23 @@ +
+

Form progress

+
    + {%- for key, item in params.steps -%} +
  1. + {%- if item.complete -%} + Completed: + + + {{ item.name }} + + {%- else -%} +
    + + {{ item.name }} +
    + {%- endif -%} +
  2. + {%- endfor -%} +
+
\ No newline at end of file diff --git a/web/amplify/eleventy/_includes/core-components/quote.njk b/web/amplify/eleventy/_includes/core-components/quote.njk new file mode 100644 index 00000000..848e7cad --- /dev/null +++ b/web/amplify/eleventy/_includes/core-components/quote.njk @@ -0,0 +1,6 @@ +
+

{{ params.quote }}

+
+
+ {{ params.author }} +
\ No newline at end of file diff --git a/web/amplify/eleventy/_includes/core-components/text-component.njk b/web/amplify/eleventy/_includes/core-components/text-component.njk new file mode 100644 index 00000000..3ea1ffd4 --- /dev/null +++ b/web/amplify/eleventy/_includes/core-components/text-component.njk @@ -0,0 +1,3 @@ +
+ {{ params.body }} +
\ No newline at end of file diff --git a/web/amplify/eleventy/_includes/core-components/video.njk b/web/amplify/eleventy/_includes/core-components/video.njk new file mode 100644 index 00000000..26bb71c7 --- /dev/null +++ b/web/amplify/eleventy/_includes/core-components/video.njk @@ -0,0 +1,6 @@ +
+ +
+
+ {{ params.iframe.caption | safe }} +
\ No newline at end of file diff --git a/web/amplify/eleventy/_includes/fundamentals/button.njk b/web/amplify/eleventy/_includes/fundamentals/button.njk new file mode 100644 index 00000000..ce98a37e --- /dev/null +++ b/web/amplify/eleventy/_includes/fundamentals/button.njk @@ -0,0 +1,41 @@ +{%- if params.isExample -%} +
+ {%- if not params.disabled -%} + + {%- else -%} + + {%- endif -%} +
+{%- else -%} +{%- if not params.disabled -%} + +{%- else -%} + +{%- endif -%} +{%- endif -%} \ No newline at end of file diff --git a/web/amplify/eleventy/_includes/fundamentals/details.njk b/web/amplify/eleventy/_includes/fundamentals/details.njk new file mode 100644 index 00000000..f48454ac --- /dev/null +++ b/web/amplify/eleventy/_includes/fundamentals/details.njk @@ -0,0 +1,4 @@ +
+ {{ params.summary }} + {{ params.details | safe }} +
\ No newline at end of file diff --git a/web/amplify/eleventy/_includes/fundamentals/form.njk b/web/amplify/eleventy/_includes/fundamentals/form.njk new file mode 100644 index 00000000..f6fdf280 --- /dev/null +++ b/web/amplify/eleventy/_includes/fundamentals/form.njk @@ -0,0 +1,9 @@ +{%- from "../system/forms/field.njk" import field -%} +
+ {%- for key, item in params.fields -%} + {{ field(item) }} + {%- endfor -%} + {%- if not params.example -%} + + {%- endif -%} +
\ No newline at end of file diff --git a/web/amplify/eleventy/_includes/fundamentals/link.njk b/web/amplify/eleventy/_includes/fundamentals/link.njk new file mode 100644 index 00000000..70e183a3 --- /dev/null +++ b/web/amplify/eleventy/_includes/fundamentals/link.njk @@ -0,0 +1,31 @@ +{%- if not params.isExample -%} + +{{ params.text }} + +{%- else -%} +
+ + {{ params.text }} + +
+{%- endif -%} \ No newline at end of file diff --git a/web/amplify/eleventy/_includes/fundamentals/table.njk b/web/amplify/eleventy/_includes/fundamentals/table.njk new file mode 100644 index 00000000..df64e416 --- /dev/null +++ b/web/amplify/eleventy/_includes/fundamentals/table.njk @@ -0,0 +1,49 @@ +{%- if params.hasWrapper -%} +
+ + + + + {%- for key, heading in params.headings -%} + + {%- endfor -%} + + + + {%- for key, row in params.rows -%} + + {%- if row.heading -%} + + {%- endif -%} + {%- for key, column in row.columns -%} + + {%- endfor -%} + + {%- endfor -%} + +
{{ params.title }}
{{ heading.text }}
{{ row.heading }}{{ column.text }}
+
+{%- else -%} + + + + + {%- for key, heading in params.headings -%} + + {%- endfor -%} + + + + {%- for key, row in params.rows -%} + + + {%- for key, column in row.columns -%} + + {%- endfor -%} + + {%- endfor -%} + +
+

{{ params.title }}

+
{{ heading.text }}
{{ row.heading }}{{ column.text }}
+{%- endif -%} \ No newline at end of file diff --git a/web/amplify/eleventy/_includes/global/footer.njk b/web/amplify/eleventy/_includes/global/footer.njk new file mode 100644 index 00000000..e88003f0 --- /dev/null +++ b/web/amplify/eleventy/_includes/global/footer.njk @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/web/amplify/eleventy/_includes/global/global-nav.njk b/web/amplify/eleventy/_includes/global/global-nav.njk new file mode 100644 index 00000000..374fe7ad --- /dev/null +++ b/web/amplify/eleventy/_includes/global/global-nav.njk @@ -0,0 +1,20 @@ + \ No newline at end of file diff --git a/web/amplify/eleventy/_includes/global/header.njk b/web/amplify/eleventy/_includes/global/header.njk new file mode 100644 index 00000000..ac430441 --- /dev/null +++ b/web/amplify/eleventy/_includes/global/header.njk @@ -0,0 +1,6 @@ + +{%- include './global-nav.njk' -%} \ No newline at end of file diff --git a/web/amplify/eleventy/_includes/global/sidebar.njk b/web/amplify/eleventy/_includes/global/sidebar.njk new file mode 100644 index 00000000..95a78817 --- /dev/null +++ b/web/amplify/eleventy/_includes/global/sidebar.njk @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/web/amplify/eleventy/_includes/homepage.njk b/web/amplify/eleventy/_includes/homepage.njk new file mode 100644 index 00000000..d7d32396 --- /dev/null +++ b/web/amplify/eleventy/_includes/homepage.njk @@ -0,0 +1,3 @@ +{%- extends "base.njk" -%} +{%- from "./system/components.njk" import pageComponents -%} +{{ content | safe }} \ No newline at end of file diff --git a/web/amplify/eleventy/_includes/layout-helpers/box.njk b/web/amplify/eleventy/_includes/layout-helpers/box.njk new file mode 100644 index 00000000..6ced7151 --- /dev/null +++ b/web/amplify/eleventy/_includes/layout-helpers/box.njk @@ -0,0 +1,11 @@ +{%- if params.noPadding -%} + {% set noPadding = " l-box--no-padding" %} +{%- endif -%} +{%- if params.title -%} +

{{ params.title }}

+{%- endif -%} +{%- if params.noBorder -%} +
{{ params.text | safe }}
+{%- else -%} +
{{ params.text | safe }}
+{%- endif -%} \ No newline at end of file diff --git a/web/amplify/eleventy/_includes/layout-helpers/center.njk b/web/amplify/eleventy/_includes/layout-helpers/center.njk new file mode 100644 index 00000000..3e0221ab --- /dev/null +++ b/web/amplify/eleventy/_includes/layout-helpers/center.njk @@ -0,0 +1 @@ +
{{ params.text }}
\ No newline at end of file diff --git a/web/amplify/eleventy/_includes/layout-helpers/cluster.njk b/web/amplify/eleventy/_includes/layout-helpers/cluster.njk new file mode 100644 index 00000000..2c264455 --- /dev/null +++ b/web/amplify/eleventy/_includes/layout-helpers/cluster.njk @@ -0,0 +1,13 @@ +
+ +
\ No newline at end of file diff --git a/web/amplify/eleventy/_includes/layout-helpers/cover.njk b/web/amplify/eleventy/_includes/layout-helpers/cover.njk new file mode 100644 index 00000000..6fb3d767 --- /dev/null +++ b/web/amplify/eleventy/_includes/layout-helpers/cover.njk @@ -0,0 +1,23 @@ +{%- if params.example -%} +

{{ params.title }}

+{%- endif -%} +
+ {%- if params.lead -%} +

{{ params.title }}

+

{{ params.body }}

+ {%- elif params.nested -%} +
+
+ {{ params.body }} +
+
+ {%- elif params.headerFooter -%} +
{{ params.headerContent | safe }}
+
{{ params.body }}
+
{{ params.footerContent | safe }}
+ {%- else -%} +
+ {{ params.body }} +
+ {%- endif -%} +
\ No newline at end of file diff --git a/web/amplify/eleventy/_includes/layout-helpers/frame.njk b/web/amplify/eleventy/_includes/layout-helpers/frame.njk new file mode 100644 index 00000000..5978c8ca --- /dev/null +++ b/web/amplify/eleventy/_includes/layout-helpers/frame.njk @@ -0,0 +1,18 @@ +{%- if params.aspectRatio === "16:9" -%} + {% set aspectRatio = " l-frame--16-9" %} +{%- elif params.aspectRatio === "3:2" -%} + {% set aspectRatio = " l-frame--3-2" %} +{%- elif params.aspectRatio === "4:3" -%} + {% set aspectRatio = " l-frame--4-3" %} +{%- elif params.aspectRatio === "square" -%} + {% set aspectRatio = " l-frame--square" %} +{%- endif -%} +{%- if params.example -%} +

{{ params.title }}

+{%- endif -%} +
+
+ {{ params.image.altText }} +
+
{{ params.image.caption }}
+
\ No newline at end of file diff --git a/web/amplify/eleventy/_includes/layout-helpers/sidebar.njk b/web/amplify/eleventy/_includes/layout-helpers/sidebar.njk new file mode 100644 index 00000000..4036ffd7 --- /dev/null +++ b/web/amplify/eleventy/_includes/layout-helpers/sidebar.njk @@ -0,0 +1,16 @@ +{%- if params.example -%} +

{{ params.title }}

+{%- endif -%} +{%- if params.nested -%} +
+
{{ params.notSidebar }}
+
+ +{%- else -%} +
+
{{ params.notSidebar }}
+ +
+{%- endif -%} \ No newline at end of file diff --git a/web/amplify/eleventy/_includes/layout-helpers/switcher.njk b/web/amplify/eleventy/_includes/layout-helpers/switcher.njk new file mode 100644 index 00000000..9abf1620 --- /dev/null +++ b/web/amplify/eleventy/_includes/layout-helpers/switcher.njk @@ -0,0 +1,9 @@ +
+
+ {%- for key, item in params.items -%} +
+
{{ item.text }}
+
+ {%- endfor -%} +
+
\ No newline at end of file diff --git a/web/amplify/eleventy/_includes/page.njk b/web/amplify/eleventy/_includes/page.njk new file mode 100644 index 00000000..e96acdf1 --- /dev/null +++ b/web/amplify/eleventy/_includes/page.njk @@ -0,0 +1,11 @@ +--- +layout: base.njk +--- +
+ {%- include "global/sidebar.njk" -%} +
+
+

{{ title }}

+ {{ content | safe }} +
+
\ No newline at end of file diff --git a/web/amplify/eleventy/_includes/system/component.njk b/web/amplify/eleventy/_includes/system/component.njk new file mode 100644 index 00000000..6b02340f --- /dev/null +++ b/web/amplify/eleventy/_includes/system/component.njk @@ -0,0 +1,14 @@ +{%- macro component(type, name, params) -%} +{%- if params.componentType -%} + {% set componentClass = params.componentType %} +{%- endif -%} + {%- if name === "quote" or name === "video" -%} +
+ {%- include '../' + type + '/' + name + '.njk' -%} +
+ {%- else -%} +
+ {%- include '../' + type + '/' + name + '.njk' -%} +
+ {%- endif -%} +{%- endmacro -%} \ No newline at end of file diff --git a/web/amplify/eleventy/_includes/system/components.njk b/web/amplify/eleventy/_includes/system/components.njk new file mode 100644 index 00000000..04c7f0f8 --- /dev/null +++ b/web/amplify/eleventy/_includes/system/components.njk @@ -0,0 +1,24 @@ +{%- macro pageComponents(target) -%} +{%- from "./component.njk" import component -%} +{%- for key, item in target -%} + +{%- if item.type and item.name and item.data -%} + + {{ component(item.type, item.name, item.data) }} + + {%- if item | length <= 1 -%} + {%- for childKey, child in item -%} + {{ component(child.type, child.name, child.data) }} + {%- endfor -%} + {%- endif -%} + +{%- else -%} + + {%- for childKey, child in item -%} + {{ component(child.type, child.name, child.data) }} + {%- endfor -%} + +{%- endif -%} + +{%- endfor -%} +{%- endmacro -%} \ No newline at end of file diff --git a/web/amplify/eleventy/_includes/system/forms/field-types/input.njk b/web/amplify/eleventy/_includes/system/forms/field-types/input.njk new file mode 100644 index 00000000..8f3eaf35 --- /dev/null +++ b/web/amplify/eleventy/_includes/system/forms/field-types/input.njk @@ -0,0 +1,41 @@ +{%- macro input(params) -%} + +{%- endmacro -%} \ No newline at end of file diff --git a/web/amplify/eleventy/_includes/system/forms/field-types/select.njk b/web/amplify/eleventy/_includes/system/forms/field-types/select.njk new file mode 100644 index 00000000..ac41d722 --- /dev/null +++ b/web/amplify/eleventy/_includes/system/forms/field-types/select.njk @@ -0,0 +1,13 @@ +{%- macro select(params) -%} + +{%- endmacro -%} \ No newline at end of file diff --git a/web/amplify/eleventy/_includes/system/forms/field.njk b/web/amplify/eleventy/_includes/system/forms/field.njk new file mode 100644 index 00000000..3fdbfcec --- /dev/null +++ b/web/amplify/eleventy/_includes/system/forms/field.njk @@ -0,0 +1,120 @@ +{%- from "./field-types/input.njk" import input -%} +{%- from "./field-types/select.njk" import select -%} +{%- macro field(params) -%} + +{%- if params.isSegmentedGroup -%} + {% set segmentedGroup = " segmented-group-wrapper" %} +{%- endif -%} +{%- if params.error -%} + {% set errorClass = " field--error" %} +{%- endif -%} + +
+ {%- if params.type !== "fieldset" -%} + {%- if params.label -%} + + {%- endif -%} + {%- if params.hint -%} +
{{ params.hint }}
+ {%- endif -%} + {%- endif -%} + {%- if params.type === "textarea" -%} + + {%- elif params.type === "fieldset" -%} +
+ {%- if params.label -%} + + {{ params.label }} + + {%- endif -%} + {%- if params.error.message -%} + + Error: + {{ params.error.message }} + + {%- endif -%} +
{{ params.hint }}
+ {%- if params.isGroup -%} +
+ {%- for key, item in params.fields -%} + {%- if item.type === "select" -%} +
+ + {{ select(item) }} +
+ {%- elif item.type === "checkbox" or item.type === "radio" -%} +
+ {{ input(item) }} + +
+ {%- else -%} +
+ + {{ input(item) }} +
+ {%- endif -%} + {%- endfor -%} +
+ {%- elif params.isSegmentedGroup -%} +
+
+ {%- for key, item in params.fields -%} +
+ {{ input(item) }} + +
+ {%- endfor -%} +
+
+ {%- else -%} + {%- for key, item in params.fields -%} + {%- if item.type === "select" -%} +
+ {{ select(item) }} +
+ {%- elif item.type === "checkbox" or item.type === "radio" -%} +
+ {{ input(item) }} + +
+ {%- else -%} +
+ {{ input(item) }} +
+ {%- endif -%} + {%- endfor -%} + {%- endif -%} +
+ {%- elif params.type === "select" -%} + {{ select(params) }} + {%- else -%} + {{ input(params) }} + {%- endif -%} +
+{%- endmacro -%} \ No newline at end of file diff --git a/web/amplify/eleventy/_includes/system/forms/fields.njk b/web/amplify/eleventy/_includes/system/forms/fields.njk new file mode 100644 index 00000000..14daadf8 --- /dev/null +++ b/web/amplify/eleventy/_includes/system/forms/fields.njk @@ -0,0 +1,6 @@ +{%- macro fields(target, params) -%} +{%- from "./field.njk" import field -%} +{%- for key, field in target -%} + {{ field(field) }} +{%- endfor -%} +{%- endmacro -%} \ No newline at end of file diff --git a/web/amplify/eleventy/_includes/system/page-component.njk b/web/amplify/eleventy/_includes/system/page-component.njk new file mode 100644 index 00000000..e69de29b diff --git a/web/amplify/eleventy/advanced-components.md b/web/amplify/eleventy/advanced-components.md new file mode 100644 index 00000000..2e7287a7 --- /dev/null +++ b/web/amplify/eleventy/advanced-components.md @@ -0,0 +1,9 @@ +--- +title: Advanced components +navItem: true +root: true +navOrder: 5 +--- +Examples of components with JavaScript enhancements, such as collapsible content. + +In the [advanced components](https://github.com/studio24/amplify/blob/main/docs/css.md#css-architecture) directory handles the styles for those few components that are enhanced in some way with JavaScript. They are compiled into a separate `advanced.css` file, which is only served to [supported browsers](https://amplify.studio24.net/amplify/get-started/browser-support.html). \ No newline at end of file diff --git a/web/amplify/eleventy/advanced-components/accessible-autocomplete.md b/web/amplify/eleventy/advanced-components/accessible-autocomplete.md new file mode 100644 index 00000000..2697fae7 --- /dev/null +++ b/web/amplify/eleventy/advanced-components/accessible-autocomplete.md @@ -0,0 +1,1020 @@ +--- +title: Accessible auto-complete +components: + autocomplete: + type: advanced-components + name: accessible-autocomplete + data: + field: + name: country + label: Country + id: country + defaultoption: Select a country + options: + option1: + value: 1 + alt: AF + title: Afghanistan + option2: + value: 2 + alt: AX Aaland Aland + title: Åland Islands + option3: + value: 3 + alt: AL + title: Albania + option4: + value: 4 + alt: DZ + title: Algeria + option5: + value: 5 + alt: AS + title: American Samoa + option6: + value: 6 + alt: AD + title: Andorra + option7: + value: 7 + alt: AO + title: Angola + option8: + value: 8 + alt: AI + title: Anguilla + option9: + value: 8 + alt: AQ + title: Antarctica + option10: + value: 10 + alt: AG + title: Antigua And Barbuda + option11: + value: 11 + alt: AR + title: Argentina + option12: + value: 12 + alt: AM + title: Armenia + option13: + value: 13 + alt: AW + title: Aruba + option14: + value: 14 + alt: AU + title: Australia + option15: + value: 15 + alt: AT Österreich Osterreich Oesterreich + title: Austria + option16: + value: 16 + alt: AZ + title: Azerbaijan + option17: + value: 17 + alt: BS + title: Bahamas + option18: + value: 18 + alt: BH + title: Bahrain + option19: + value: 19 + alt: BD + title: Bangladesh + option20: + value: 20 + alt: BB + title: Barbados + option21: + value: 21 + alt: BY + title: Belarus + option22: + value: 22 + alt: BE België Belgie Belgien Belgique + title: Belgium + option23: + value: 23 + alt: BZ + title: Belize + option24: + value: 24 + alt: BJ + title: Benin + option25: + value: 25 + alt: BM + title: Bermuda + option26: + value: 26 + alt: BT + title: Bhutan + option27: + value: 27 + alt: BO + title: Bolivia + option28: + value: 28 + alt: BQ + title: Bonaire, Sint Eustatius and Saba + option29: + value: 29 + alt: BA + title: Bosnia and Herzegovina + option30: + value: 30 + alt: BW + title: Botswana + option31: + value: 31 + alt: BV + title: Bouvet Island + option32: + value: 32 + alt: BR Brasil + title: Brazil + option33: + value: 33 + alt: IO + title: British Indian Ocean Territory + option34: + value: 34 + alt: BN + title: Brunei Darussalam + option35: + value: 35 + alt: BG + title: Bulgaria + option36: + value: 36 + alt: BF + title: Burkina Faso + option37: + value: 37 + alt: BI + title: Burundi + option38: + value: 38 + alt: KH + title: Cambodia + option39: + value: 39 + alt: CM + title: Cameroon + option40: + value: 40 + alt: CA + title: Canada + option41: + value: 41 + alt: CV + title: Cape Verde + option42: + value: 42 + alt: KY + title: Cayman Islands + option43: + value: 43 + alt: CF + title: Central African Republic + option44: + value: 44 + alt: TD + title: Chad + option45: + value: 45 + alt: CL + title: Chile + option46: + value: 46 + alt: CN Zhongguo Zhonghua Peoples Republic + title: China + option47: + value: 47 + alt: CX + title: Christmas Island + option48: + value: 48 + alt: CC + title: Cocos (Keeling) Islands + option49: + value: 49 + alt: CO + title: Colombia + option50: + value: 50 + alt: KM + title: Comoros + option51: + value: 51 + alt: CG + title: Congo + option52: + value: 52 + alt: CD + title: Congo, the Democratic Republic of the + option53: + value: 53 + alt: CK + title: Cook Islands + option54: + value: 54 + alt: CR + title: Costa Rica + option55: + value: 55 + alt: CI Cote dIvoire + title: Côte d'Ivoire + option56: + value: x1Croatia + alt: HR Hrvatska + title: Croatia + option57: + value: x1Cuba + alt: CU + title: Cuba + option58: + value: x1Curaçao + alt: CW Curacao + title: Curaçao + option59: + value: x1Cyprus + alt: CY + title: Cyprus + option60: + value: x1Czech Republic + alt: CZ Česká Ceska + title: Czech Republic + option61: + value: x1Denmark + alt: DK Danmark + title: Denmark + option62: + value: x1Djibouti + alt: DJ + title: Djibouti + option63: + value: x1Dominica + alt: DM + title: Dominica + option64: + value: x1Dominican Republic + alt: DO + title: Dominican Republic + option65: + value: x1Ecuador + alt: EC + title: Ecuador + option66: + value: x1Egypt + alt: EG + title: Egypt + option67: + value: x1El Salvador + alt: SV + title: El Salvador + option68: + value: x1Equatorial Guinea + alt: GQ + title: Equatorial Guinea + option69: + value: x1Eritrea + alt: ER + title: Eritrea + option70: + value: x1Estonia + alt: EE Eesti + title: Estonia + option71: + value: x1Ethiopia + alt: ET + title: Ethiopia + option72: + value: x1Falkland Islands (Malvinas) + alt: FK + title: Falkland Islands (Malvinas) + option73: + value: x1Faroe Islands + alt: FO Føroyar Færøerne + title: Faroe Islands + option74: + value: x1Fiji + alt: FJ + title: Fiji + option75: + value: x1Finland + alt: FI Suomi + title: Finland + option76: + value: x1France + alt: FR République française + title: France + option77: + value: x1French Guiana + alt: GF + title: French Guiana + option78: + value: x1French Polynesia + alt: PF + title: French Polynesia + option79: + value: x1French Southern Territories + alt: TF + title: French Southern Territories + option80: + value: x1Gabon + alt: GA + title: Gabon + option81: + value: x1Gambia + alt: GM + title: Gambia + option82: + value: x1Georgia + alt: GE + title: Georgia + option83: + value: x1Germany + alt: DE Bundesrepublik Deutschland + title: Germany + option84: + value: x1Ghana + alt: GH + title: Ghana + option85: + value: x1Gibraltar + alt: GI + title: Gibraltar + option86: + value: x1Greece + alt: GR + title: Greece + option87: + value: x1Greenland + alt: GL grønland + title: Greenland + option88: + value: x1Grenada + alt: GD + title: Grenada + option89: + value: x1Guadeloupe + alt: GP + title: Guadeloupe + option90: + value: x1Guam + alt: GU + title: Guam + option91: + value: x1Guatemala + alt: GT + title: Guatemala + option92: + value: x1Guernsey + alt: GG + title: Guernsey + option93: + value: x1Guinea + alt: GN + title: Guinea + option94: + value: x1Guinea-Bissau + alt: GW + title: Guinea-Bissau + option95: + value: x1Guyana + alt: GY + title: Guyana + option96: + value: x1Haiti + alt: HT + title: Haiti + option97: + value: x1Heard Island and McDonald Islands + alt: HM + title: Heard Island and McDonald Islands + option98: + value: x1Holy See (Vatican City State) + alt: VA + title: Holy See (Vatican City State) + option99: + value: x1Honduras + alt: HN + title: Honduras + option100: + value: x1Hong Kong + alt: HK + title: Hong Kong + option101: + value: x1Hungary + alt: HU + title: Hungary + option102: + value: x1Iceland + alt: IS Island + title: Iceland + option103: + value: x1India + alt: IN + title: India + option104: + value: x1Indonesia + alt: ID + title: Indonesia + option105: + value: x1Iran, Islamic Republic of + alt: IR + title: Iran, Islamic Republic of + option106: + value: x1Iraq + alt: IQ + title: Iraq + option107: + value: x1Ireland + alt: IE Éire + title: Ireland + option108: + value: x1Isle of Man + alt: IM + title: Isle of Man + option109: + value: x1Israel + alt: IL + title: Israel + option110: + value: x1Italy + alt: IT Italia + title: Italy + option111: + value: x1Jamaica + alt: JM + title: Jamaica + option112: + value: x1Japan + alt: JP Nippon Nihon + title: Japan + option113: + value: x1Jersey + alt: JE + title: Jersey + option114: + value: x1Jordan + alt: JO + title: Jordan + option115: + value: x1Kazakhstan + alt: KZ + title: Kazakhstan + option116: + value: x1Kenya + alt: KE + title: Kenya + option117: + value: x1Kiribati + alt: KI + title: Kiribati + option118: + value: x1Korea, Democratic People's Republic of + alt: KP North Korea + title: Korea, Democratic People's Republic of + option119: + value: x1Korea, Republic of + alt: KR South Korea + title: Korea, Republic of + option120: + value: x1Kuwait + alt: KW + title: Kuwait + option121: + value: x1Kyrgyzstan + alt: KG + title: Kyrgyzstan + option122: + value: x1Lao People's Democratic Republic + alt: LA + title: Lao People's Democratic Republic + option123: + value: x1Latvia + alt: LV + title: Latvia + option124: + value: x1Lebanon + alt: LB + title: Lebanon + option125: + value: x1Lesotho + alt: LS + title: Lesotho + option126: + value: x1Liberia + alt: LR + title: Liberia + option127: + value: x1Libyan Arab Jamahiriya + alt: LY + title: Libyan Arab Jamahiriya + option128: + value: x1Liechtenstein + alt: LI + title: Liechtenstein + option129: + value: x1Lithuania + alt: LT + title: Lithuania + option130: + value: x1Luxembourg + alt: LU + title: Luxembourg + option131: + value: x1Macao + alt: MO + title: Macao + option132: + value: x1Madagascar + alt: MG + title: Madagascar + option133: + value: x1Malawi + alt: MW + title: Malawi + option134: + value: x1Malaysia + alt: MY + title: Malaysia + option135: + value: x1Maldives + alt: MV + title: Maldives + option136: + value: x1Mali + alt: ML + title: Mali + option137: + value: x1Malta + alt: MT + title: Malta + option138: + value: x1Marshall Islands + alt: MH + title: Marshall Islands + option139: + value: x1Martinique + alt: MQ + title: Martinique + option140: + value: x1Mauritania + alt: MR + title: Mauritania + option141: + value: x1Mauritius + alt: MU + title: Mauritius + option142: + value: x1Mayotte + alt: YT + title: Mayotte + option143: + value: x1Mexico + alt: MX Mexicanos + title: Mexico + option144: + value: x1Micronesia, Federated States of + alt: FM + title: Micronesia, Federated States of + option145: + value: x1Moldova, Republic of + alt: MD + title: Moldova, Republic of + option146: + value: x1Monaco + alt: MC + title: Monaco + option147: + value: x1Mongolia + alt: MN + title: Mongolia + option148: + value: x1Montenegro + alt: ME + title: Montenegro + option149: + value: x1Montserrat + alt: MS + title: Montserrat + option150: + value: x1Morocco + alt: MA + title: Morocco + option151: + value: x1Mozambique + alt: MZ + title: Mozambique + option152: + value: x1Myanmar + alt: MM + title: Myanmar + option153: + value: x1Namibia + alt: NA + title: Namibia + option154: + value: x1Nauru + alt: NR + title: Nauru + option155: + value: x1Nepal + alt: NP + title: Nepal + option156: + value: x1Netherlands + alt: NL Holland Nederland + title: Netherlands + option157: + value: x1New Caledonia + alt: NC + title: New Caledonia + option158: + value: x1New Zealand + alt: NZ + title: New Zealand + option159: + value: x1Nicaragua + alt: NI + title: Nicaragua + option160: + value: x1Niger + alt: NE + title: Niger + option161: + value: x1Nigeria + alt: NG + title: Nigeria + option162: + value: x1Niue + alt: NU + title: Niue + option163: + value: x1Norfolk Island + alt: NF + title: Norfolk Island + option164: + value: x1North Macedonia + alt: MK + title: North Macedonia + option165: + value: x1Northern Mariana Islands + alt: MP + title: Northern Mariana Islands + option166: + value: x1Norway + alt: NO Norge Noreg + title: Norway + option167: + value: x1Oman + alt: OM + title: Oman + option168: + value: x1Pakistan + alt: PK + title: Pakistan + option169: + value: x1Palau + alt: PW + title: Palau + option170: + value: x1Palestinian Territory, Occupied + alt: PS + title: Palestinian Territory, Occupied + option171: + value: x1Panama + alt: PA + title: Panama + option172: + value: x1Papua New Guinea + alt: PG + title: Papua New Guinea + option173: + value: x1Paraguay + alt: PY + title: Paraguay + option174: + value: x1Peru + alt: PE + title: Peru + option175: + value: x1Philippines + alt: PH + title: Philippines + option176: + value: x1Pitcairn + alt: PN + title: Pitcairn + option177: + value: x1Poland + alt: PL + title: Poland + option178: + value: x1Portugal + alt: PT + title: Portugal + option179: + value: x1Puerto Rico + alt: PR + title: Puerto Rico + option180: + value: x1Qatar + alt: QA + title: Qatar + option181: + value: x1Réunion + alt: RE Reunion + title: Réunion + option182: + value: x1Romania + alt: RO + title: Romania + option183: + value: x1Russian Federation + alt: RU Russia Rossiya + title: Russian Federation + option184: + value: x1Rwanda + alt: RW + title: Rwanda + option185: + value: x1Saint Barthélemy + alt: BL + title: Saint Barthélemy + option186: + value: x1Saint Helena + alt: SH + title: Saint Helena + option187: + value: x1Saint Kitts and Nevis + alt: KN + title: Saint Kitts and Nevis + option188: + value: x1Saint Lucia + alt: LC + title: Saint Lucia + option189: + value: x1Saint Martin (French Part) + alt: MF + title: Saint Martin (French Part) + option190: + value: x1Saint Pierre and Miquelon + alt: PM + title: Saint Pierre and Miquelon + option191: + value: x1Saint Vincent and the Grenadines + alt: VC + title: Saint Vincent and the Grenadines + option192: + value: x1Samoa + alt: WS + title: Samoa + option193: + value: x1San Marino + alt: SM + title: San Marino + option194: + value: x1Sao Tome and Principe + alt: ST + title: Sao Tome and Principe + option195: + value: x1Saudi Arabia + alt: SA + title: Saudi Arabia + option196: + value: x1Senegal + alt: SN + title: Senegal + option197: + value: x1Serbia + alt: RS + title: Serbia + option198: + value: x1Seychelles + alt: SC + title: Seychelles + option199: + value: x1Sierra Leone + alt: SL + title: Sierra Leone + option200: + value: x1Singapore + alt: SG + title: Singapore + option201: + value: x1Sint Maarten (Dutch Part) + alt: SX + title: Sint Maarten (Dutch Part) + option202: + value: x1Slovakia + alt: SK + title: Slovakia + option203: + value: x1Slovenia + alt: SI + title: Slovenia + option204: + value: x1Solomon Islands + alt: SB + title: Solomon Islands + option205: + value: x1Somalia + alt: SO + title: Somalia + option206: + value: x1South Africa + alt: ZA + title: South Africa + option207: + value: x1South Georgia and the South Sandwich Islands + alt: GS + title: South Georgia and the South Sandwich Islands + option208: + value: x1South Sudan + alt: SS + title: South Sudan + option209: + value: x1Spain + alt: ES España + title: Spain + option210: + value: x1Sri Lanka + alt: LK + title: Sri Lanka + option211: + value: x1Sudan + alt: SD + title: Sudan + option212: + value: x1Suriname + alt: SR + title: Suriname + option213: + value: x1Svalbard and Jan Mayen + alt: SJ + title: Svalbard and Jan Mayen + option214: + value: x1Swaziland + alt: SZ + title: Swaziland + option215: + value: x1Sweden + alt: SE Sverige + title: Sweden + option216: + value: x1Switzerland + alt: CH Swiss Confederation Schweiz Suisse Svizzera Svizra + title: Switzerland + option217: + value: x1Syrian Arab Republic + alt: SY Syria + title: Syrian Arab Republic + option218: + value: x1Taiwan, Province of China + alt: TW + title: Taiwan, Province of China + option219: + value: x1Tajikistan + alt: TJ + title: Tajikistan + option220: + value: x1Tanzania, United Republic of + alt: TZ + title: Tanzania, United Republic of + option221: + value: x1Thailand + alt: TH + title: Thailand + option222: + value: x1Timor-Leste + alt: TL + title: Timor-Leste + option223: + value: x1Togo + alt: TG + title: Togo + option224: + value: x1Tokelau + alt: TK + title: Tokelau + option225: + value: x1Tonga + alt: TO + title: Tonga + option226: + value: x1Trinidad and Tobago + alt: TT + title: Trinidad and Tobago + option227: + value: x1Tunisia + alt: TN + title: Tunisia + option228: + value: x1Turkey + alt: TR Türkiye Turkiye + title: Turkey + option229: + value: x1Turkmenistan + alt: TM + title: Turkmenistan + option230: + value: x1Turks and Caicos Islands + alt: TC + title: Turks and Caicos Islands + option231: + value: x1Tuvalu + alt: TV + title: Tuvalu + option232: + value: x1Uganda + alt: UG + title: Uganda + option233: + value: x1Ukraine + alt: UA Ukrayina + title: Ukraine + option234: + value: x1United Arab Emirates + alt: AE UAE Emirates + title: United Arab Emirates + option235: + value: x1United Kingdom + alt: GB Great Britain England UK Wales Scotland Northern Ireland + title: United Kingdom + option236: + value: x1United States + alt: US USA United States of America + title: United States + option237: + value: x1United States Minor Outlying Islands + alt: UM + title: United States Minor Outlying Islands + option238: + value: x1Uruguay + alt: UY + title: Uruguay + option239: + value: x1Uzbekistan + alt: UZ + title: Uzbekistan + option240: + value: x1Vanuatu + alt: VU + title: Vanuatu + option241: + value: x1Venezuela + alt: VE + title: Venezuela + option242: + value: x1Vietnam + alt: VN + title: Vietnam + option243: + value: x1Virgin Islands, British + alt: VG + title: Virgin Islands, British + option244: + value: x1Virgin Islands, U.S. + alt: VI + title: Virgin Islands, U.S. + option245: + value: x1Wallis and Futuna + alt: WF + title: Wallis and Futuna + option246: + value: x1Western Sahara + alt: EH + title: Western Sahara + option247: + value: x1Yemen + alt: YE + title: Yemen + option248: + value: x1Zambia + alt: ZM + title: Zambia + option249: + value: x1Zimbabwe + alt: ZW + title: Zimbabwe +--- +A `select` can be enhanced into an accessible auto-complete via JavaScript. Amplify uses the [Accessible autocomplete](https://github.com/alphagov/accessible-autocomplete) NPM package, and there are a number of [example customisations](https://alphagov.github.io/accessible-autocomplete/examples/) which can be followed. + +Follow the default markup for a `select`, making sure to give it a unique ID which can be referenced in the JavaScript. + +{{ pageComponents(components) }} + +Considerations +-------------- + +Note the link to a specific JavaScript file for the auto-complete functionality. \ No newline at end of file diff --git a/web/amplify/eleventy/advanced-components/advanced-components.json b/web/amplify/eleventy/advanced-components/advanced-components.json new file mode 100644 index 00000000..402dc996 --- /dev/null +++ b/web/amplify/eleventy/advanced-components/advanced-components.json @@ -0,0 +1,6 @@ +{ + "layout": "page.njk", + "tags": "advanced-components", + "templateEngineOverride": "njk, md", + "subpage": true +} \ No newline at end of file diff --git a/web/amplify/eleventy/advanced-components/cards.md b/web/amplify/eleventy/advanced-components/cards.md new file mode 100644 index 00000000..11c2cc76 --- /dev/null +++ b/web/amplify/eleventy/advanced-components/cards.md @@ -0,0 +1,79 @@ +--- +title: Block link cards +components: + blockLink: + type: core-components + name: cards + data: + sectionTitle: A block link card + boxType: no-border + heading: Cats and the internet + body:

Examining the popularity of cat-related media content online

+ image: + frameType: 3-2 + url: https://amplify.studio24.net/dist/images/jpg-cat-1.jpg + altText: A cat with green eyes looking directly at the camera + blockLinkCTA: + type: core-components + name: cards + data: + sectionTitle: Block link card with call-to-action (CTA) + boxType: no-border + heading: Cats and the internet + body:

Examining the popularity of cat-related media content online

+ link: + url: javascript:; + type: button + text: Read more + image: + frameType: 3-2 + url: https://amplify.studio24.net/dist/images/jpg-cat-1.jpg + altText: A cat with green eyes looking directly at the camera + blockLinkTags: + type: core-components + name: cards + data: + sectionTitle: A block link card with tag links + boxType: no-border + heading: Cats and the internet + body:

Examining the popularity of cat-related media content online

+ image: + frameType: 3-2 + url: https://amplify.studio24.net/dist/images/jpg-cat-1.jpg + altText: A cat with green eyes looking directly at the camera + tags: + tag1: + link: https://www.studio24.net/work-sector/arts-and-culture/ + title: Arts and culture + tag2: + link: https://www.studio24.net/work-sector/education/ + title: Education + tag3: + link: https://www.studio24.net/work-sector/charity-and-not-for-profit/ + title: Charity and not-for-profit +--- +Cards are used in multiple places. Although the visual appearance may vary, they share two general patterns: + +1. [Simple cards](https://amplify.studio24.net/amplify/core-components/cards.html) with a distinct link that can be selected +2. Block link cards (covered here) where JavaScript is used to make the entire surface area act as a link + +For both types of card, it is important to check that the heading level used fits in with the card's location in the page content hierarchy. + +A simple card is enhanced into a block link card by adding the data attribute `data-component="card"`. When this is present, [JavaScript will make the whole card act as a block link](https://css-tricks.com/block-links-the-search-for-a-perfect-solution/). + +Do not wrap the contents of a card inside a singular `a` element. This can result in a very verbose experience for screen reader users where the entire contents of the card are announced. + +For arranging groups of cards you can use the [switcher layout helper](https://amplify.studio24.net/amplify/layout-helpers/switcher.html) or [shelves component](https://amplify.studio24.net/amplify/core-components/shelves.html) depending on your requirements. + +{{ pageComponents(components) }} + +Considerations +-------------- + +Block links work because the JavaScript looks for a link with the class `card__link`. We add this link to the `card__heading` text, to make sure that the link text is descriptive. If the design calls for a visually distinctive CTA, use a simple `div` to hold the text content and `aria-hidden` to hide it from assistive technology. + +The preceding example shows that it is possible for a block link card to have one link as the main link while also allowing other specific links (in this case a [list of tags](https://amplify.studio24.net/amplify/core-components/tag-list.html)) to different destinations. JavaScript targets the link with the class `card__link` and identifies this as the main link for the card. + +### Neat cards + +If the design calls for a row of cards of equal height, irrespective of the amount of text content, you can add the `card--neat` modifier class to the cards. This forces the card to take up 100% of the height of the parent container. It will also push the last child element in the text region to the bottom edge. You can see this in action on the [Amplify home page](https://amplify.studio24.net/amplify/index.html). \ No newline at end of file diff --git a/web/amplify/eleventy/advanced-components/collapsibles.md b/web/amplify/eleventy/advanced-components/collapsibles.md new file mode 100644 index 00000000..323208f8 --- /dev/null +++ b/web/amplify/eleventy/advanced-components/collapsibles.md @@ -0,0 +1,33 @@ +--- +title: Collapsible containers +components: + collapsibles: + type: advanced-components + name: collapsibles + data: + panels: + panel1: + title: Panel 1 heading + body:

This is a paragraph of text.

Here is another paragraph of text that intentionally contains a lot more words inside it in order to fill the width of the page successfully to check layout and so forth.

Paragraph on Wikipedia + panel2: + title: Panel 2 heading + body:

This is a paragraph of text.

Here is another paragraph of text that intentionally contains a lot more words inside it in order to fill the width of the page successfully to check layout and so forth.

+ panel3: + title: Panel 3 heading + body:

This is a paragraph of text.

Here is another paragraph of text that intentionally contains a lot more words inside it in order to fill the width of the page successfully to check layout and so forth.

+ panel4: + title: Panel 4 heading + body:

This is a paragraph of text.

Here is another paragraph of text that intentionally contains a lot more words inside it in order to fill the width of the page successfully to check layout and so forth.

+--- +This is a series of containers, each holding a heading and some content. JavaScript enhances the markup, collapsing all containers and inserting buttons inside the headings to toggle them open/closed. The JavaScript looks for the presence of the data attribute `data-component="collapsibles"` on the outer container and `data-heading="collapsibles"` on the headings. + +The component takes inspiration from the [GOV.UK Design System accordion component](https://design-system.service.gov.uk/components/accordion/). + +{{ pageComponents(components) }} + +Considerations +-------------- + +[Buttons shouldn't use the pointer cursor](https://adamsilver.io/articles/buttons-shouldnt-have-a-hand-cursor/), so we need to ensure the buttons have sufficient affordance by other visual means. The icon and show/hide help text help to achieve this, but we can also make use of background-color, border and/or box-shadow styles. + +Aligning the button content to the leading edge reduces the risk of it being missed by people using screen magnification software. \ No newline at end of file diff --git a/web/amplify/eleventy/advanced-components/disclosure-widget.md b/web/amplify/eleventy/advanced-components/disclosure-widget.md new file mode 100644 index 00000000..c98a4756 --- /dev/null +++ b/web/amplify/eleventy/advanced-components/disclosure-widget.md @@ -0,0 +1,23 @@ +--- +title: Disclosure widget +components: + disclosure: + type: advanced-components + name: disclosure + data: + hiddenContent:

This text should be hidden if JavaScript is available and the preceding button has the data-toggle="true" attribute.

+--- +A simple control whose sole purpose is to hide or show content, this component is inspired by Adrian Roselli's post about [disclosure widgets](https://adrianroselli.com/2020/05/disclosure-widgets.html). + +The basic principles demonstrated here can be expanded upon and applied to e.g. off-canvas navigation and [dropdown](https://adrianroselli.com/2019/06/link-disclosure-widget-navigation.html) [site navigation](https://css-tricks.com/in-praise-of-the-unambiguous-click-menu/). + +{{ pageComponents(components) }} + +Considerations +-------------- + +Note that the text content of the button - which gives it an accessible name - does not change. Instead, the state of the button is announced via the `aria-expanded` attribute, which is added via JavaScript. The conventional wisdom is to not change the name of a control while the user is interacting with it - and changing both the name and the state could result in confusing announcements for assistive technology users. You can read more about this in Sarah Higley's post: [Playing with state](https://sarahmhigley.com/writing/playing-with-state/). + +Note that we are not using `aria-hidden` on the hidden element. We don't need to, because the element to be hidden directly follows the button to toggle its display in the markup, meaning that we can use the [next-sibling combinator](https://www.w3.org/TR/selectors-3/#adjacent-sibling-combinators) in the CSS to determine whether the content is hidden based on the value of the `aria-expanded` property on the preceding element. Remember, the number one rule for using ARIA in HTML, is to [avoid using ARIA in HTML](https://bitsofco.de/rules-for-using-aria-in-html/). + +This approach also helps to ensure a logical reading and focus order for users. \ No newline at end of file diff --git a/web/amplify/eleventy/advanced-components/tabs.md b/web/amplify/eleventy/advanced-components/tabs.md new file mode 100644 index 00000000..ace5d1d5 --- /dev/null +++ b/web/amplify/eleventy/advanced-components/tabs.md @@ -0,0 +1,33 @@ +--- +title: Tabbed sections +components: + tabbedSections: + type: advanced-components + name: tabs + data: + tabs: + grumpyCat: + id: grumpy-cat + default: true + title: Grumpy Cat + body:

Grumpy Cat was a notable Internet cat, known and nicknamed for her permanently grumpy facial features.

+ lilBub: + id: lil-bub + title: Lil Bub + body:

Lil Bub was an American celebrity cat known for her unique physical appearance. Born the runt of the litter and with several genetic mutations, she had to be bottle-fed.

+ maru: + id: maru + title: Grumpy Cat + body:

Maru is a popular YouTube cat. He previously held the Guiness World Record for the most YouTube video views of an individual animal.

+ +--- +We use the [Tabby](https://github.com/cferdinandi/tabby) NPM package to generate tabbed content sections (not because it sounds like a type of cat). It progressively enhances a linked list of content into tabbed navigation. + +{{ pageComponents(components) }} + +Considerations +-------------- + +The default implementation uses `overflow-x: auto;` on the list of tabs, so that if the width of the tablist is greater than the container/viewport width they will scroll horizontally. This is the same principle that Brad Taunt suggests in his post about [replacing hamburger menus with sausage links](https://tdarb.org/hamburger-menu-alternative/). + +In the absence of a visible scrollbar, you will need to make sure that there are sufficient visual cues to users that content has been cut off and can be scrolled. You could [use linear gradients to help add visual affordance of scrolling](https://bbc.github.io/gel/components/data-tables/#indicating-scroll-functionality-visually), or else you might choose to add further scripting to detect when the element is scrolled all the way to either side, and add start or end classes for styling. \ No newline at end of file diff --git a/web/amplify/eleventy/core-components.md b/web/amplify/eleventy/core-components.md new file mode 100644 index 00000000..96485832 --- /dev/null +++ b/web/amplify/eleventy/core-components.md @@ -0,0 +1,9 @@ +--- +title: Core components +navItem: true +root: true +navOrder: 4 +--- +Examples of commonly required components, the building blocks of web pages. + +The [core components](https://github.com/studio24/amplify/blob/main/docs/css.md#css-architecture) directory handles the minimum required styles for all components, including the initial styles for more advanced components when JavaScript is not available. They are compiled into `core.css`, which is served to all browsers (along with `print.css`). \ No newline at end of file diff --git a/web/amplify/eleventy/core-components/avatars.md b/web/amplify/eleventy/core-components/avatars.md new file mode 100644 index 00000000..fbb9725b --- /dev/null +++ b/web/amplify/eleventy/core-components/avatars.md @@ -0,0 +1,23 @@ +--- +title: Avatars +components: + avatar: + type: core-components + name: avatar + data: + image: + url: https://www.w3.org/2006/05/u/1682ihk1hqqo-sm.jpg +--- +Wrap a square or portrait image inside a `div` or `span` with the class `avatar` to apply a circular mask to the image. + +{{ pageComponents(components) }} + +Considerations +-------------- + +Note the empty `alt` attribute in this example. Images must always have an `alt` attribute - leaving it empty shows that it is a decorative image. + +The default size of an avatar is equivalent to 100px wide and tall (the CSS converts the pixel value into rem units.) Additional modifier classes can be added for smaller avatars: + +- `avatar--med` for an avatar equivalent to 50px wide and tall +- `avatar--small` for an avatar equivalent to 30px wide and tall \ No newline at end of file diff --git a/web/amplify/eleventy/core-components/breadcrumbs.md b/web/amplify/eleventy/core-components/breadcrumbs.md new file mode 100644 index 00000000..deb16ec7 --- /dev/null +++ b/web/amplify/eleventy/core-components/breadcrumbs.md @@ -0,0 +1,31 @@ +--- +title: Breadcrumbs +components: + breadcrumbs: + type: core-components + name: breadcrumbs + data: + items: + page1: + link: javascript:; + text: Home + page2: + link: javascript:; + text: Second Page + page3: + link: javascript:; + text: This Page +--- + +{{ pageComponents(components) }} + +Considerations +-------------- + +Note the use of the [center layout helper](https://amplify.studio24.net/amplify/layout-helpers/center.html) and [cluster layout helper](https://amplify.studio24.net/amplify/layout-helpers/cluster.html). + +Note how the breadcrumb links meet the requirements of [WCAG Success Criterion 2.5.5: Target Size (AAA)](https://www.w3.org/WAI/WCAG21/Understanding/target-size.html). + +The `aria-label` attribute has been added to the `nav` element. This is because the main website navigation also uses the `nav` element. Where there are multiple`nav` elements on a single page, all must be given a unique accessible name via `aria-label`. + +The current page is indicated by `aria-current="page"`. Following Scott O'Hara's [accessible breadcrumb pattern](https://scottaohara.github.io/a11y_breadcrumbs/) it is fully linked so that users of Assistive Technology can find which is the currently active link. \ No newline at end of file diff --git a/web/amplify/eleventy/core-components/core-components.json b/web/amplify/eleventy/core-components/core-components.json new file mode 100644 index 00000000..646f9cff --- /dev/null +++ b/web/amplify/eleventy/core-components/core-components.json @@ -0,0 +1,6 @@ +{ + "layout": "page.njk", + "tags": "core-components", + "templateEngineOverride": "njk, md", + "subpage": true +} \ No newline at end of file diff --git a/web/amplify/eleventy/core-components/image-component.md b/web/amplify/eleventy/core-components/image-component.md new file mode 100644 index 00000000..411cbb1c --- /dev/null +++ b/web/amplify/eleventy/core-components/image-component.md @@ -0,0 +1,23 @@ +--- +title: Image Component +components: + image: + type: core-components + name: image-component + data: + url: https://amplify.studio24.net/dist/images/jpg-cat-1.jpg + altText: A cat with green eyes looking directly at the camera + aspectRatio: "16:9" + caption:

The figcaption is not a replacement for the image's alt attribute. It should be used for providing relevant supporting content.

+--- + +{{ pageComponents(components) }} + +Considerations +-------------- + +Note the use of the [frame layout](https://amplify.studio24.net/amplify/layout-helpers/frame.html), to create the desired aspect ratio, and the `loading="lazy"` attribute on `img` for native lazy-loading. + +### Alternative text + +Every instance of `img` [must include the `alt` attribute](https://amplify.studio24.net/amplify/fundamentals/images.html). This [alt decision tree](https://www.w3.org/WAI/tutorials/images/decision-tree/) is helpful for determining whether and how to provide alternative text. \ No newline at end of file diff --git a/web/amplify/eleventy/core-components/main.md b/web/amplify/eleventy/core-components/main.md new file mode 100644 index 00000000..6df5f879 --- /dev/null +++ b/web/amplify/eleventy/core-components/main.md @@ -0,0 +1,8 @@ +--- +title: Main +--- +A few notes on `main`, which contains the main contents of a web page. + +- There should only be a single instance of `main` that does not have the `hidden` attribute applied to it. +- In Amplify, `main` uses the same principles as the [center layout helper](https://amplify.studio24.net/amplify/layout-helpers/center.html) to add some minimum space between its contents and the edges of the parent element or viewport. Inspect this page in your web browser to see it in action. +- Although it has a set maximum width, the utility class `u-full-width` can be applied to a child item of `main` to make it extend full width beyond the borders of `main`. \ No newline at end of file diff --git a/web/amplify/eleventy/core-components/notes.md b/web/amplify/eleventy/core-components/notes.md new file mode 100644 index 00000000..bf3af9ca --- /dev/null +++ b/web/amplify/eleventy/core-components/notes.md @@ -0,0 +1,44 @@ +--- +title: Notes +components: + infoNote: + type: core-components + name: notes + data: + type: info + title: Informative note heading + message:

Group calendering is currently in beta-test. We encourage everyone to use it and report feedback and issues to its dedicated GitHub repository

+ successNote: + type: core-components + name: notes + data: + type: success + title: Success note heading + message:

Main profile successfully updated

+ warningNote: + type: core-components + name: notes + data: + type: warning + title: Warning note heading + message:

We could not detect your affiliation based on your email address. Please select your affiliation below or go back to use your corporate email address.

+ errorNote: + type: core-components + name: notes + data: + type: error + title: Error note heading + message:

There has been an error

+--- +Notes can be used for simple informational messages, and for success, warning and error alerts. They are an enhancement of the [default box layout](https://amplify.studio24.net/amplify/layout-helpers/box.md#default-box). + +{{ pageComponents(components) }} + +Considerations +-------------- + +Note the use of `role="status"` and `role="alert"`. Both create an ARIA live region. + +If the content of the note is advisory information not important enough to justify an alert, use `role="status"`. When added to an element, the browser will send out an accessible status event to assistive technologies, which can then notify the user about it. + +For error messages, use `role="alert"`. The alert role should read out content that has changed, or bring the user's attention to it immediately, so it should not be used for static content or used regularly. Alerts, by definition, are disruptive. Lots of alerts at once or unnecessary alerts will create a bad user experience. \ No newline at end of file diff --git a/web/amplify/eleventy/core-components/pagination.md b/web/amplify/eleventy/core-components/pagination.md new file mode 100644 index 00000000..586cb92b --- /dev/null +++ b/web/amplify/eleventy/core-components/pagination.md @@ -0,0 +1,34 @@ +--- +title: Pagination +--- + + + +Considerations +-------------- + +Note the use of the [cluster layout helper](https://amplify.studio24.net/amplify/layout-helpers/cluster.html). + +Note how the pagination links meet the requirements of [WCAG Success Criterion 2.5.5: Target Size (AAA)](https://www.w3.org/WAI/WCAG21/Understanding/target-size.html). + +The `aria-label` attribute has been added to the `nav` element. This is because the main website navigation also uses the `nav` element. Where there are multiple`nav` elements on a single page, all must be given a unique accessible name via `aria-label`. + +For all pagination links excluding the current page, `span class="visuallyhidden">pageExamining the popularity of cat-related media content online

+ link: + url: javascript:; + type: button + text: Read more + image: + frameType: 3-2 + url: https://amplify.studio24.net/dist/images/jpg-cat-1.jpg + altText: A cat with green eyes looking directly at the camera + card2: + boxType: no-border + heading: Cats and the internet + body:

Examining the popularity of cat-related media content online

+ link: + url: javascript:; + type: button + text: Read more + image: + frameType: 3-2 + url: https://amplify.studio24.net/dist/images/jpg-cat-1.jpg + altText: A cat with green eyes looking directly at the camera + card3: + boxType: no-border + heading: Cats and the internet + body:

Examining the popularity of cat-related media content online

+ link: + url: javascript:; + type: button + text: Read more + image: + frameType: 3-2 + url: https://amplify.studio24.net/dist/images/jpg-cat-1.jpg + altText: A cat with green eyes looking directly at the camera + card4: + boxType: no-border + heading: Cats and the internet + body:

Examining the popularity of cat-related media content online

+ link: + url: javascript:; + type: button + text: Read more + image: + frameType: 3-2 + url: https://amplify.studio24.net/dist/images/jpg-cat-1.jpg + altText: A cat with green eyes looking directly at the camera + card5: + boxType: no-border + heading: Cats and the internet + body:

Examining the popularity of cat-related media content online

+ link: + url: javascript:; + type: button + text: Read more + image: + frameType: 3-2 + url: https://amplify.studio24.net/dist/images/jpg-cat-1.jpg + altText: A cat with green eyes looking directly at the camera + +--- +Shelves provide a flexbox framework for arranging groups of items such as [cards](https://amplify.studio24.net/amplify/core-components/cards.html). You might choose to use shelves instead of the [switcher layout helper](https://amplify.studio24.net/amplify/layout-helpers/switcher.html) if: + +- you want to specify the number of items on each shelf in relation to the viewport width rather than the width of the parent container +- you want to change how many items can fit on a shelf depending on the total number of items, using [CSS quantity queries](https://alistapart.com/article/quantity-queries-for-css/) - use [Quantity Queries Builder](https://quantityqueries.com/) to roll your own quantity queries +- items don't have to follow a rigid grid pattern and can grow horizontally to fill up the space on a shelf when there are fewer than the maximum possible (much like a cat taking up all the available space) + +Heading for the shelves component +--------------------------------- + +{{ pageComponents(components) }} + +Considerations +-------------- + +The example above uses an unordered list to hold the cards. Because the [cards](https://amplify.studio24.net/amplify/core-components/cards.html) pattern uses headings that fit in with the surrounding page hierarchy, `role="presentaton"` is added to the unordered list to reduce the verbosity of announcements for assitive technology users. \ No newline at end of file diff --git a/web/amplify/eleventy/core-components/simple-cards.md b/web/amplify/eleventy/core-components/simple-cards.md new file mode 100644 index 00000000..850c4705 --- /dev/null +++ b/web/amplify/eleventy/core-components/simple-cards.md @@ -0,0 +1,48 @@ +--- +title: Simple cards +components: + card: + type: core-components + name: cards + data: + heading: Cats and the internet + body: Examining the popularity of cat-related media content online + boxType: no-border + link: + url: https://en.wikipedia.org/wiki/Cats_and_the_Internet + text: Read more + image: + url: https://amplify.studio24.net/dist/images/jpg-cat-1.jpg + altText: A cat with green eyes looking directly at the camera + inFrame: true + aspectRatio: "3:2" + +--- +Cards are used in multiple places. Although the visual appearance may vary, they share two general patterns: + +1. Simple cards (covered here) with a distinct link that can be selected +2. [Block link cards](https://amplify.studio24.net/amplify/advanced-components/cards.html), where JavaScript is used to make the entire surface area act as a link + +For both types of card, it is important to check that the heading level used fits in with the card's location in the page content hierarchy. + +For arranging groups of cards you can use the [switcher layout helper](https://amplify.studio24.net/amplify/layout-helpers/switcher.html) or [shelves component](https://amplify.studio24.net/amplify/core-components/shelves.html) depending on your requirements. + +A simple card +------------- + +### Cats and the Internet + +{{ pageComponents(components) }} + +Considerations +-------------- + +Note the use of the [frame layout helper](https://amplify.studio24.net/amplify/layout-helpers/frame.html) for the card image and the [box layout helper](https://amplify.studio24.net/amplify/layout-helpers/box.html) for the card text. + +In the markup, the card text is first in the source order to prioritise it over the image. Flexbox is used to place the image ahead of the card text visually, via the `order` property. + +Where generic link text is used visually, this is enhanced for Assistive Technology users with the `span class="visuallyhidden"` providing descriptive link text to meet [WCAG Success Criterion 2.4.9: Link Purpose (Link Only) (AAA)](https://www.w3.org/WAI/WCAG21/Understanding/link-purpose-link-only.html). + +### Neat cards + +If the design calls for a row of cards of equal height, irrespective of the amount of text content, you can add the `card--neat` modifier class to the cards. This forces the card to take up 100% of the height of the parent container. It will also push the last child element in the text region to the bottom edge. You can see this in action on the [Amplify home page](https://amplify.studio24.net/amplify/index.html). \ No newline at end of file diff --git a/web/amplify/eleventy/core-components/sticky-footer.md b/web/amplify/eleventy/core-components/sticky-footer.md new file mode 100644 index 00000000..9ae83c72 --- /dev/null +++ b/web/amplify/eleventy/core-components/sticky-footer.md @@ -0,0 +1,6 @@ +--- +title: Sticky footer +--- +Amplify includes styles for a sticky footer, which you can see in action on this website wherever the page content is not long enough to push the footer beyond the bottom of the browser window. + +There are [many ways to achieve a sticky footer](https://css-tricks.com/couple-takes-sticky-footer/), but the approach favoured in Amplify is to [use CSS grid layout](https://css-tricks.com/couple-takes-sticky-footer/#aa-there-is-grid). \ No newline at end of file diff --git a/web/amplify/eleventy/core-components/tag-list.md b/web/amplify/eleventy/core-components/tag-list.md new file mode 100644 index 00000000..4394f871 --- /dev/null +++ b/web/amplify/eleventy/core-components/tag-list.md @@ -0,0 +1,32 @@ +--- +title: Tag list +components: + tagList: + type: layout-helpers + name: cluster + data: + extraClasses: tag-list + itemClass: tag + items: + item1: + link: javascript:; + title: Arts and culture + item2: + link: javascript:; + title: Education + item3: + link: javascript:; + title: Charity and not-for-profit + +--- + +{{ pageComponents(components) }} + +Considerations +-------------- + +Note the use of the [cluster layout helper](https://amplify.studio24.net/amplify/layout-helpers/cluster.html). + +Note how the linked tags meet the requirements of [WCAG Success Criterion 2.5.5: Target Size (AAA)](https://www.w3.org/WAI/WCAG21/Understanding/target-size.html). + +Note the inclusion of visually-hidden text in the linked tags, to provide detail for assistive technology users when browsing out of context, thereby meeting [WCAG Success Criterion 2.4.9: Link Purpose (Link Only) (AAA)](https://www.w3.org/WAI/WCAG21/Understanding/link-purpose-link-only.html). \ No newline at end of file diff --git a/web/amplify/eleventy/core-components/text-component.md b/web/amplify/eleventy/core-components/text-component.md new file mode 100644 index 00000000..30022e0d --- /dev/null +++ b/web/amplify/eleventy/core-components/text-component.md @@ -0,0 +1,16 @@ +--- +title: Text component +--- +The most commonly-used component for adding content to a page. Use for prose, [lists](https://amplify.studio24.net/amplify/styles/lists.html) and [tables](https://amplify.studio24.net/amplify/styles/tables.html). For quotations, use the [quote component](https://amplify.studio24.net/amplify/core-components/quote.html). + +Example text component +---------------------- + +Lorem ipsum, or lipsum as it is sometimes known, is dummy text used in laying out print, graphic or web designs. The passage is attributed to an unknown typesetter in the 15th century who is thought to have scrambled parts of Cicero's De Finibus Bonorum et Malorum for use in a type specimen book. + +Considerations +-------------- + +To help maintain the page heading hierarchy, `h1` is not made available within the text component as this has its own specific location within the page template. + +If you have prose split across multiple text components, with other components interspersed (e.g. the [image component](https://amplify.studio24.net/amplify/core-components/image-component.html)), be sure to check that no heading levels are accidentally skipped in the text components. \ No newline at end of file diff --git a/web/amplify/eleventy/core-components/video-component.md b/web/amplify/eleventy/core-components/video-component.md new file mode 100644 index 00000000..6f9bcd71 --- /dev/null +++ b/web/amplify/eleventy/core-components/video-component.md @@ -0,0 +1,34 @@ +--- +title: Video component +components: + video: + type: core-components + name: video + data: + iframe: + title: Why do cats act so weird? + width: "560" + height: "315" + src: https://embed.ted.com/talks/lang/en/tony_buffington_why_do_cats_act_so_weird + fullscreen: true + caption: "

They're cute, they're lovable, and judging by the 26 billion views on over 2 million YouTube videos of them, one thing is certain: cats are very entertaining. But their strange feline behaviours, both amusing and baffling, leave many of us asking: Why do cats do that? Tony Buffington explains the science behind some of your cat's strangest behaviours.

Video transcript" +--- + +{{ pageComponents(components) }} + +Considerations +-------------- + +The `iframe` must always include a unique, descriptive `title` attribute to meet [WCAG Success Criterion 2.4.1: Bypass Blocks (A)](https://www.w3.org/WAI/WCAG21/Understanding/bypass-blocks.html) and [WCAG Success Criterion 4.1.2: Name, Role, Value (A)](https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html). + +### Captions + +Prerecorded video must include captions to meet [WCAG Success Criterion 1.2.2: Captions (Prerecorded) (A)](https://www.w3.org/WAI/WCAG21/Understanding/captions-prerecorded.html). + +[More advice about audiovisual media captions](https://www.w3.org/WAI/media/av/captions/). + +### Transcripts + +Transcripts for prerecorded video are required to meet [WCAG Success Criterion 1.2.8: Media Alternative (Prerecorded) (AAA)](https://www.w3.org/WAI/WCAG21/Understanding/media-alternative-prerecorded.html). + +[More advice about audiovisual media transcripts.](https://www.w3.org/WAI/media/av/transcripts/) \ No newline at end of file diff --git a/web/amplify/eleventy/design.md b/web/amplify/eleventy/design.md new file mode 100644 index 00000000..84b584f2 --- /dev/null +++ b/web/amplify/eleventy/design.md @@ -0,0 +1,91 @@ +--- +title: Design handover & standards +navItem: true +root: true +navOrder: 6 +--- +Designers are responsible for handing their design files to developers for development, explaining the design intentions, and providing design support to the developer as they build the website. + +**Designers and developers need time to do this together**. + +Designs for web projects are created in Sketch or Figma. The design tool doesn't matter as long as the output is fit for use by the team. + +Design files must contain some baseline information to explain the design principles, and for consistency and quality. + +Design file requirements +------------------------ + +### Fundamentals + +**Fundamentals are the underlining design principles and materials. A set of design choices, instructions and calculations to govern the project.** + +A build-ready, project design file should include these Fundamentals: + +- Colours +- Typography +- Links and buttons +- Lists +- Icons --- size and alignment +- Tables +- `main` container --- breakpoints and width constraints + +If your project doesn't need a required Fundamental, like buttons or definition lists, note it in the design file. + +You can document additional design Fundamentals such as, shadows, blurs, overlays, avatars, images etc. --- as suits your project approach. + +### Components + +**Common UI parts and patterns.** + +Key project components, illustrated with spacing documentation for build, e.g. Navigation, Cards, Breadcrumbs, Collapsibles, etc. + +Depending on approach and budget. + +### Assets for export + +**All the exportable instances of project assets should be gathered on one page.** + +For example, header logo, UI icons, illustrations, social icons, etc. + +Assets should be the right size, grouped, exportable **or** the designer should directly export them and put into a folder for the developer and note it's location on the assets page. + +Dimensions should be 4px base. + +### Templates + +**The purposeful use of the design fundamentals and components.** + +Key page templates are chosen by the designer to illustrate. + +The designs should: + +- Use real or realistic content +- Note accessibility considerations +- Illustrate interactive states + +### Work status + +**Illustrate the status of your work, to help other team members understand progress, decisions and work they can undertake.** + +Mark templates and components with: in progress, review, develop, complete, etc. + +### Prototype the fundamentals + +**Use the [typography test page](https://amplify.studio24.net/amplify/design/typography-test.html) to see how things are working.** + +Our design fundamentals are validated and adjusted collaboratively through our two mediums: the design tool (Figma or Sketch) and the web browser. + +Implementing our project fundamentals immediately in the browser allows us to: + +- Check colour contrast on real screens +- Test site wrappers, gutters and 'standard' grid layouts at different widths +- Ensure the fluid typography feels harmonious, on various devices +- Deploy something to staging right away, testing our build system in the process +- Have productive and meaningful discussions between designer and developer + +* * * * * + +Resources +--------- + +- [Figma starter design file](https://www.figma.com/file/J9ufEdMGbDesKQ15MZWES6/S24-Design-Starter-Template) \ No newline at end of file diff --git a/web/amplify/eleventy/design/design.json b/web/amplify/eleventy/design/design.json new file mode 100644 index 00000000..3c57df2d --- /dev/null +++ b/web/amplify/eleventy/design/design.json @@ -0,0 +1,6 @@ +{ + "layout": "page.njk", + "tags": "design", + "templateEngineOverride": "njk, md", + "subpage": true +} \ No newline at end of file diff --git a/web/amplify/eleventy/design/typography-test.md b/web/amplify/eleventy/design/typography-test.md new file mode 100644 index 00000000..ecd6de15 --- /dev/null +++ b/web/amplify/eleventy/design/typography-test.md @@ -0,0 +1,104 @@ +--- +title: Typography test +components: + table: + type: fundamentals + name: table + data: + title: Example table + headings: + header1: + text: Column header 1 + header2: + text: Column header 2 + header3: + text: Column header 3 + rows: + row1: + heading: Row 1 header + columns: + col1: + text: Row 1, Cell 2 + col2: + text: Row 1, Cell 3 + row2: + heading: Row 2 header + columns: + col1: + text: Row 2, Cell 2 + col2: + text: Row 2, Cell 3 +--- +Use this test page to provide visual feedback of the state and flow of typographical styles. + +Heading 2 +--------- + +### Heading 3 + +#### Heading 4 + +##### Heading 5 + +###### Heading 6 + +Horizontal rule +--------------- + +You can use horizontal rules, like the one below, to add emphasis to section breaks on a page. These lines should be used sparingly as headings should usually provide enough division between sections for the reader. + +* * * * * + +A [paragraph](https://en.wikipedia.org/wiki/Paragraph) is a self-contained unit of a discourse in writing dealing with a particular point or idea. A paragraph consists of one or more sentences. Though not required by the syntax of any language, paragraphs are usually an expected part of formal writing, used to organize longer prose. + +Describing a paragraph H2 +------------------------- + +A [paragraph](https://en.wikipedia.org/wiki/Paragraph) is a self-contained unit of a discourse in writing dealing with a particular point or idea. A paragraph consists of one or more sentences. Though not required by the syntax of any language, paragraphs are usually an expected part of formal writing, used to organize longer prose. + +A [paragraph](https://en.wikipedia.org/wiki/Paragraph) is a self-contained unit of a discourse in writing dealing with a particular point or idea. A paragraph consists of one or more sentences. Though not required by the syntax of any language, paragraphs are usually an expected part of formal writing, used to organize longer prose. + +### Describing a paragraph H3 + +A [paragraph](https://en.wikipedia.org/wiki/Paragraph) is a self-contained unit of a discourse in writing dealing with a particular point or idea. A paragraph consists of one or more sentences. Though not required by the syntax of any language, paragraphs are usually an expected part of formal writing, used to organize longer prose. + +> A block quotation (also known as a long quotation or extract) is a quotation in a written document, that is set off from the main text as a paragraph, or block of text. +> +> It is typically distinguished visually using indentation and a different typeface or smaller size quotation. It may or may not include a citation, usually placed at the bottom. +> +> *Said no one, ever.* + +A [paragraph](https://en.wikipedia.org/wiki/Paragraph) is a self-contained unit of a discourse in writing dealing with a particular point or idea. A paragraph consists of one or more sentences. Though not required by the syntax of any language, paragraphs are usually an expected part of formal writing, used to organize longer prose. + +#### Describing a paragraph H4 + +A [paragraph](https://en.wikipedia.org/wiki/Paragraph) is a self-contained unit of a discourse in writing dealing with a particular point or idea. A paragraph consists of one or more sentences. Though not required by the syntax of any language, paragraphs are usually an expected part of formal writing, used to organize longer prose. + +- First item in an unordered list +- Second item in an unordered list + - First item in second level + - Second item in second level +- Third item in an unordered list + +1. First item in an ordered list +2. Second item in an ordered list + 1. First item in second level + 2. Second item in second level +3. Third item in an ordered list + +A [paragraph](https://en.wikipedia.org/wiki/Paragraph) is a self-contained unit of a discourse in writing dealing with a particular point or idea. A paragraph consists of one or more sentences. Though not required by the syntax of any language, paragraphs are usually an expected part of formal writing, used to organize longer prose. + +##### Describing a paragraph H5 + +A [paragraph](https://en.wikipedia.org/wiki/Paragraph) is a self-contained unit of a discourse in writing dealing with a particular point or idea. A paragraph consists of one or more sentences. Though not required by the syntax of any language, paragraphs are usually an expected part of formal writing, used to organize longer prose. + +A [paragraph](https://en.wikipedia.org/wiki/Paragraph) is a self-contained unit of a discourse in writing dealing with a particular point or idea. A paragraph consists of one or more sentences. Though not required by the syntax of any language, paragraphs are usually an expected part of formal writing, used to organize longer prose. + +###### Describing a paragraph H6 + +A [paragraph](https://en.wikipedia.org/wiki/Paragraph) is a self-contained unit of a discourse in writing dealing with a particular point or idea. A paragraph consists of one or more sentences. Though not required by the syntax of any language, paragraphs are usually an expected part of formal writing, used to organize longer prose. + +Example table +{{ pageComponents(components) }} + +A [paragraph](https://en.wikipedia.org/wiki/Paragraph) is a self-contained unit of a discourse in writing dealing with a particular point or idea. A paragraph consists of one or more sentences. Though not required by the syntax of any language, paragraphs are usually an expected part of formal writing, used to organize longer prose. \ No newline at end of file diff --git a/web/amplify/eleventy/fundamentals.md b/web/amplify/eleventy/fundamentals.md new file mode 100644 index 00000000..29973d36 --- /dev/null +++ b/web/amplify/eleventy/fundamentals.md @@ -0,0 +1,29 @@ +--- +title: Fundamentals +navItem: true +root: true +navOrder: 2 +--- +Covering the essential aspects of any website project, such as colours, typography, button and links, lists, spacing and print styles. + +Fundamentals are the underlining design principles and materials. A set of design choices, instructions and calculations to govern a project. + +Test your fundamentals +---------------------- + +A good first milestone is to complete your fundamental settings and review them on the [typography test page](https://amplify.studio24.net/amplify/design/typography-test.html) with the designer. + +Designer responsibility +----------------------- + +A build-ready, project design file should include these Fundamentals: + +- Colours +- Typography +- Buttons and links +- Lists +- Icons --- size and alignment +- Tables +- `main` container --- breakpoints and width constraints + +Read more about [design handover & standards](https://amplify.studio24.net/amplify/design). \ No newline at end of file diff --git a/web/amplify/eleventy/fundamentals/breakpoints.md b/web/amplify/eleventy/fundamentals/breakpoints.md new file mode 100644 index 00000000..ad33b41a --- /dev/null +++ b/web/amplify/eleventy/fundamentals/breakpoints.md @@ -0,0 +1,8 @@ +--- +title: Breakpoints +--- +Sass variables corresponding to generic device viewport widths, which are used within media query mixins. These values can be updated and new variables added as required for your project's needs. + +The `$max-width` variable is used for limiting the maximum width of e.g. `main`. + +The `$text-measure` variable is designed to be used to limit the maximum line length of text content for improved readability. \ No newline at end of file diff --git a/web/amplify/eleventy/fundamentals/buttons.md b/web/amplify/eleventy/fundamentals/buttons.md new file mode 100644 index 00000000..099e12b5 --- /dev/null +++ b/web/amplify/eleventy/fundamentals/buttons.md @@ -0,0 +1,102 @@ +--- +title: Buttons and links +components: + buttons: + button-normal: + type: 'fundamentals' + name: button + data: + text: Default button style + isExample: true + button-alt: + type: 'fundamentals' + name: button + data: + type: alt + text: Alternate button style + isExample: true + button-wide: + type: 'fundamentals' + name: button + data: + type: wide + text: Wide button style + isExample: true + button-wide-alt: + type: 'fundamentals' + name: button + data: + type: wide-alt + text: Wide button style + isExample: true + button-ghost: + type: 'fundamentals' + name: button + data: + type: ghost + text: Ghost button style + isExample: true + button-disabled: + type: 'fundamentals' + name: button + data: + text: This button is disabled + disabled: true + isExample: true + links: + link-normal: + type: 'fundamentals' + name: link + data: + type: normal + url: / + text: Simple text link + isExample: true + link-button: + type: 'fundamentals' + name: link + data: + type: button + url: / + text: Link styled as a button + isExample: true + link-button-alt: + type: 'fundamentals' + name: link + data: + type: button-alt + url: / + text: Link with alternate button style + isExample: true +--- +Use a button to help a user carry out an action, such as playing audio/video, toggling a dropdown, opening a modal, etc. If you are navigating a user to a new resource, use a link. + +Buttons, and links styled as buttons, need to have sufficient padding to ensure they meet [WCAG Success Criterion 2.5.5: Target Size (AAA)](https://www.w3.org/WAI/WCAG21/Understanding/use-of-color.html). This does not apply to links within sentences and paragraphs. + +Buttons +------- +{{ pageComponents(components.buttons) }} + +### Considerations + +Disabled buttons can confuse some people, so only use them if testing shows that they make the user interface easier to understand. + +Links +----- + +Simple text link + +Link styled as a button + +Link with alternate button style + +### Considerations + +Simple text links are given an underline, in addition to any colour treatment, to meet [WCAG Success Criterion 1.4.1: Use of Color (A)](https://www.w3.org/WAI/WCAG21/Understanding/use-of-color.html) + +Grouping buttons and links +-------------------------- + +Buttons (and links styled as buttons) can be arranged in groups using the [cluster layout](https://amplify.studio24.net/amplify/layout-helpers/cluster.html): + +Primary action Secondary action \ No newline at end of file diff --git a/web/amplify/eleventy/fundamentals/colours.md b/web/amplify/eleventy/fundamentals/colours.md new file mode 100644 index 00000000..b666a7d7 --- /dev/null +++ b/web/amplify/eleventy/fundamentals/colours.md @@ -0,0 +1,30 @@ +--- +title: Colours +--- +Colour contrast +--------------- + +Make sure that the contrast ratio of text and interactive elements on your site meets the requirements of **WCAG 2.1** as paraphrased in the following sections. The ideal contrast range to meet all requirements is 7:1 - 15:1. Higher contrast ratios can be triggering for some people. + +### 1.4.3 Contrast (Minimum) (AA) + +Text (including images of text) has a contrast ratio of at least **4.5:1 for 'regular' text** and at least **3:1 for large text** (at least `18pt` / `24px`, or bold and at least `14pt` / `18.5px`), unless the text is purely decorative. + +### 1.4.6 Contrast (Enhanced) (AAA) + +Text (including images of text) has a contrast ratio of at least **7:1 for 'regular' text** and at least **4.5:1 for large text** (at least `18pt` / `24px`, or bold and at least `14pt` / `18.5px`), unless the text is purely decorative. + +### 1.4.11 Non-text Contrast (AA) + +The visual presentation of UI components (their states - including focus indication - and boundaries) and graphical objects has a contrast ratio of at least 3:1 against adjacent colour(s). + +### Tools for checking colour contrast + +Choose whichever you prefer from the following list: + +- [Accessible Colors](https://accessible-colors.com/) +- [Color Contrast Analyser Download](https://www.tpgi.com/cca-download/) +- [Contrast Ratio](https://contrast-ratio.com/) +- [Link Contrast Checker](https://webaim.org/resources/linkcontrastchecker/) +- [Who Can Use](https://whocanuse.com/) +- [Text on background image a11y check](https://www.brandwood.com/a11y/) \ No newline at end of file diff --git a/web/amplify/eleventy/fundamentals/details-summary.md b/web/amplify/eleventy/fundamentals/details-summary.md new file mode 100644 index 00000000..3ad16f18 --- /dev/null +++ b/web/amplify/eleventy/fundamentals/details-summary.md @@ -0,0 +1,19 @@ +--- +title: Details and summary +components: + detailSummary: + type: fundamentals + name: details + data: + summary: This is the summary content + details: | +

This is the detailed content which is revealed if a user requests to see it

+--- +The `details` element generates a simple no-JavaScript widget to show/hide content, optionally by selecting its child `summary` element. In non-supporting browsers such as IE11 all content is expanded by default. + +{{ pageComponents(components) }} + +Considerations +-------------- + +There is currently no way for `details` to be made to display all of its content by default when printed. \ No newline at end of file diff --git a/web/amplify/eleventy/fundamentals/flow-elements.md b/web/amplify/eleventy/fundamentals/flow-elements.md new file mode 100644 index 00000000..f4d24987 --- /dev/null +++ b/web/amplify/eleventy/fundamentals/flow-elements.md @@ -0,0 +1,37 @@ +--- +title: Flow elements +--- +These are elements that are used in the body of documents and applications. + +This page provides examples of how Amplify does (or doesn't) style some of the more common flow elements that are not covered in more detail elsewhere. + +This paragraph contains a selection of HTML5 elements, such as *emphasis*, **strong**, and small. You can also use `keyboard text`, which sometimes is styled similarly to the `code` or `samp` elements. Even more specifically, there is an element just for *variables*. And let's not forget the sub (H~2~O) and sup (E = MC^2^) elements. + +`abbr`: Some vehicles meet the SULEV standard.\ +`br` was used to make this sentence start on a new line. + +`em` is used for *emphasis* and usually renders as italics, contrast that with `i` which is used for alternate voice or to offset from the normal (such as a phrase from a different language or taxonomic designation): *E. coli* can be bad. `strong` is used for **importance or urgency** and usually renders as bold, contrast that with `b` which is used to **draw attention** without the semantic meaning of importance. + +`cite`: In the words of *Charles Bukowski* --- An intellectual says a simple thing in a hard way. An artist says a hard thing in a simple way. + +`q`: The W3C page *About W3C* says the W3C's mission is To lead the World Wide Web to its full potential by developing protocols and guidelines that ensure long-term growth for the Web. + +`sub` is used for subscripts: H~2~O. `sup` is used for superscripts: E = MC^2^. + +`small` is used for side comments: I wrote this whole document. [Editor's note: no they did not] + +`dfn`: Foreign phrases add a certain je ne sais quoi to one's prose. + +`time`: use for specifying 5 A.M. in a machine-readable format. + +`kbd` and `samp`: I did this: + +c:\>`format c: /yes` + +Is that bad? Press ``Ctrl``+``F5`` for a hard reload. + +`var`: To log in, type `ssh *user*@example.com`, where *user* is your user ID. + +`mark`: the HTML equivalent of the yellow highlighter. + +`meter` and `progress`: Storage space usage: 6 blocks used (out of 8 total) Progress: 37% \ No newline at end of file diff --git a/web/amplify/eleventy/fundamentals/form-errors.md b/web/amplify/eleventy/fundamentals/form-errors.md new file mode 100644 index 00000000..36c5b94f --- /dev/null +++ b/web/amplify/eleventy/fundamentals/form-errors.md @@ -0,0 +1,409 @@ +--- +title: Form error messages +components: + errorNote: + note: + type: core-components + name: notes + data: + title: There is a problem + message: | + + type: error + errorForms: + textErrors: + inputs: + type: fundamentals + name: form + data: + example: true + fields: + name: + label: Name + name: name + required: true + error: + message: Enter a name + type: text + message: + label: Your message + name: message + type: textarea + error: + message: Enter a message + numbersErrors: + inputs: + type: fundamentals + name: form + data: + example: true + fields: + accountNumber: + label: Account number + hint: Must be between 6 and 8 numbers long + name: account-number + type: text + class: input-width-10 + maxlength: 8 + inputmode: numeric + error: + message: Enter an account number + dateErrors: + inputs: + type: fundamentals + name: form + data: + example: true + fields: + arrivalDate: + label: Date of arrival + hint: For example 30/05/2021 + name: arrival-date + type: text + class: input-width-10 + error: + message: Enter an arrival date + dateOfBirth: + label: Date of birth (an example of a memorable date) + hint: For example 20 07 1972 + hintClass: u-no-margin-top + type: fieldset + itemWrapClass: memorable-date + error: + message: Enter a date of birth + fields: + day: + label: Day + name: bday-day + type: text + class: input-width-2 + autocomplete: true + inputmode: numeric + minNum: 0 + maxNum: 31 + month: + label: Month + name: bday-month + type: text + class: input-width-2 + autocomplete: true + inputmode: numeric + minNum: 1 + maxNum: 12 + year: + label: Year + name: bday-year + type: text + class: input-width-4 + autocomplete: true + inputmode: numeric + minNum: 1900 + maxNum: 2050 + meetingTime: + label: Specify a start time for your meeting + hint: Use UTC and your local time + hintClass: u-no-margin-top + type: fieldset + itemWrapClass: memorable-date + isGroup: true + error: + message: Enter a start time + fields: + time: + label: Start Time + name: meeting-time + class: input-width-5 + type: text + timeZone: + label: Time zone + name: timezone + type: select + options: + option1: + value: UTC-12:00 + title: UTC-12:00 + option2: + value: UTC-11:00 + title: UTC-11:00 + option3: + value: UTC-10:00 + title: UTC-10:00 + option4: + value: UTC-09:30 + title: UTC-09:30 + option5: + value: UTC-09:00 + title: UTC-09:00 + option6: + value: UTC-08:00 + title: UTC-08:00 + option7: + value: UTC-07:00 + title: UTC-07:00 + option8: + value: UTC-06:00 + title: UTC-06:00 + option9: + value: UTC-05:00 + title: UTC-05:00 + option10: + value: UTC-04:00 + title: UTC-04:00 + option11: + value: UTC-03:30 + title: UTC-03:30 + option12: + value: UTC-03:00 + title: UTC-03:00 + option13: + value: UTC-02:00 + title: UTC-02:00 + option14: + value: UTC-01:00 + title: UTC-01:00 + option15: + value: UTC-00:00 + title: UTC-00:00 + selected: true + option16: + value: UTC+01:00 + title: UTC+01:00 + option17: + value: UTC+02:00 + title: UTC+02:00 + option18: + value: UTC+03:00 + title: UTC+03:00 + option19: + value: UTC+03:30 + title: UTC+03:30 + option20: + value: UTC+04:00 + title: UTC+04:00 + option21: + value: UTC+04:30 + title: UTC+04:30 + option22: + value: UTC+05:00 + title: UTC+05:00 + option23: + value: UTC+05:30 + title: UTC+05:30 + option24: + value: UTC+05:45 + title: UTC+05:45 + option25: + value: UTC+06:00 + title: UTC+06:00 + option26: + value: UTC+07:00 + title: UTC+07:00 + option27: + value: UTC+08:00 + title: UTC+08:00 + option28: + value: UTC+08:45 + title: UTC+08:45 + option29: + value: UTC+09:30 + title: UTC+09:30 + option30: + value: UTC+10:00 + title: UTC+10:00 + option31: + value: UTC+10:30 + title: UTC+10:30 + option32: + value: UTC+11:00 + title: UTC+11:00 + option33: + value: UTC+12:00 + title: UTC+12:00 + option34: + value: UTC+12:45 + title: UTC+12:45 + option35: + value: UTC+13:00 + title: UTC+13:00 + option36: + value: UTC+14:00 + title: UTC+14:00 + otherErrors: + inputs: + type: fundamentals + name: form + data: + example: true + fields: + file: + label: Choose a file + name: file + type: file + error: + message: The file must be 2MB or smaller + radios: + type: fieldset + label: Do you own any pets? + name: pets + error: + message: Select yes if you do own pets + fields: + yes: + label: Yes + name: pets_yes + type: radio + initialValue: yes + no: + label: No + name: pets_no + type: radio + initialValue: no + noComment: + label: Prefer not to say + name: pets_no-comment + type: radio + initialValue: no-comment + segments: + type: fieldset + label: Segmented options (Radio) + name: segmented-options + hint: We understand that different people enjoy books in differeny ways, which is why we're giving you lots of options. + isSegmentedGroup: true + error: + message: Choose an option + fields: + segment1: + name: segmented-option-1 + class: input--radio + type: radio + segmentTitle: Budget option + segmentBody: Copy to explain this option in more detail + segment2: + name: segmented-option-2 + class: input--radio + type: radio + checked: true + segmentTitle: Value option + segmentBody: Copy to explain this option in more detail + segment3: + name: segmented-option-3 + class: input--radio + type: radio + segmentTitle: Expensive option + segmentBody: Copy to explain this option in more detail + checkboxes: + type: fieldset + label: Things you like + hint: Select all that apply + name: things-you-like + error: + message: Choose at least one item + fields: + chocolate: + label: Chocolate + name: chocolate + type: checkbox + appearance: base + coffee: + label: Coffee + name: coffee + type: checkbox + appearance: base + cake: + label: Cake + name: cake + type: checkbox + appearance: base + chips: + label: Chips + name: chips + type: checkbox + appearance: base + preferredDay: + type: select + label: Preferred day of appointment + name: preferred-day + error: + message: Choose your preferred day + options: + option1: + value: monday + title: Monday + option2: + value: tuesday + title: Tuesday + option3: + value: wednesday + title: Wednesday + option4: + value: thursday + title: Thursday + option5: + value: friday + title: Friday + option6: + value: saturday + title: Saturday + option7: + value: sunday + title: Sunday + + +--- +To notify a user of an error with their form submission: + +1. Prefix the word "Error:" to the document's `title`. It's the first thing announced by screen readers when the page loads. +2. Place an error summary at the top of the page +3. Add an error message to each problematic input + +{{ pageComponents(components.errorNote) }} + +Page title +========== + +Example form showcasing error messages +-------------------------------------- + +### Dealing with text + +{{ pageComponents(components.errorForms.textErrors) }} + +### Dealing with numbers + +{{ pageComponents(components.errorForms.numbersErrors) }} + +### Dealing with dates and times + +{{ pageComponents(components.errorForms.dateErrors) }} + +### Other input types + +{{ pageComponents(components.errorForms.otherErrors) }} + +Error summary considerations +---------------------------- + +The error summary should be at the top of the `main` element. If the page includes breadcrumbs or a back link, place it after these, but before the `h1`. The error summary must contain the heading 'There is a problem'. + +Keyboard focus needs to move to the error summary, hence the addition of `tabindex="-1"`. JavaScript is included to shift focus if an error summary is present. + +Each item in the summary list must link to the field with the validation error. Use the same wording for the error in both the error summary and the problematic field. + +Error message considerations +---------------------------- + +In the event of a validation error, the error message should explain what went wrong and how to fix it. Keep the wording clear and concise. + +To help screen reader users, the error message includes a visually hidden 'Error:' before the error message. \ No newline at end of file diff --git a/web/amplify/eleventy/fundamentals/forms.md b/web/amplify/eleventy/fundamentals/forms.md new file mode 100644 index 00000000..9d1858d4 --- /dev/null +++ b/web/amplify/eleventy/fundamentals/forms.md @@ -0,0 +1,575 @@ +--- +title: Forms +components: + formBasic: + inputs: + type: fundamentals + name: form + data: + example: true + fields: + fullName: + label: Name + name: name + type: text + required: true + hint: E.g Robin Smith + autocomplete: true + emailAddress: + label: Email + name: email + type: email + hint: E.g robin.smith@example.co.uk + autocomplete: true + autocapitalize: off + autocorrect: off + spellcheck: off + inputmode: email + websiteAddress: + label: Website address + name: website + type: url + autocomplete: true + autocapitalize: off + autocorrect: off + spellcheck: off + inputmode: url + password: + label: Password + name: password + type: password + hint: Must contain 8+ characters with at least 1 number. + autocapitalize: off + autocorrect: off + spellcheck: off + message: + label: Your message + name: message + type: textarea + formNumbers: + inputs: + type: fundamentals + name: form + data: + example: true + fields: + accountNumber: + label: Account number + hint: Must be between 6 and 8 numbers long + name: account-number + type: text + class: input-width-10 + maxlength: 8 + inputmode: numeric + phoneNumber: + label: Phone number + hint: Please include your country code + class: input-width-20 + type: tel + name: telephone-number + autocomplete: true + inputmode: tel + guestNumber: + label: Number of guest tickets required + name: guests + type: number + class: input-width-3 + initialValue: 0 + formDates: + inputs: + type: fundamentals + name: form + data: + example: true + fields: + arrivalDate: + label: Date of arrival + hint: For example 30/05/2021 + name: arrival-date + type: text + class: input-width-10 + dateOfBirth: + label: Date of birth (an example of a memorable date) + hint: For example 20 07 1972 + hintClass: u-no-margin-top + type: fieldset + itemWrapClass: memorable-date + fields: + day: + label: Day + name: bday-day + type: text + class: input-width-2 + autocomplete: true + inputmode: numeric + minNum: 0 + maxNum: 31 + month: + label: Month + name: bday-month + type: text + class: input-width-2 + autocomplete: true + inputmode: numeric + minNum: 1 + maxNum: 12 + year: + label: Year + name: bday-year + type: text + class: input-width-4 + autocomplete: true + inputmode: numeric + minNum: 1900 + maxNum: 2050 + meetingTime: + label: Specify a start time for your meeting + hint: Use UTC and your local time + hintClass: u-no-margin-top + type: fieldset + itemWrapClass: memorable-date + isGroup: true + fields: + time: + label: Start Time + name: meeting-time + class: input-width-5 + type: text + timeZone: + label: Time zone + name: timezone + type: select + options: + option1: + value: UTC-12:00 + title: UTC-12:00 + option2: + value: UTC-11:00 + title: UTC-11:00 + option3: + value: UTC-10:00 + title: UTC-10:00 + option4: + value: UTC-09:30 + title: UTC-09:30 + option5: + value: UTC-09:00 + title: UTC-09:00 + option6: + value: UTC-08:00 + title: UTC-08:00 + option7: + value: UTC-07:00 + title: UTC-07:00 + option8: + value: UTC-06:00 + title: UTC-06:00 + option9: + value: UTC-05:00 + title: UTC-05:00 + option10: + value: UTC-04:00 + title: UTC-04:00 + option11: + value: UTC-03:30 + title: UTC-03:30 + option12: + value: UTC-03:00 + title: UTC-03:00 + option13: + value: UTC-02:00 + title: UTC-02:00 + option14: + value: UTC-01:00 + title: UTC-01:00 + option15: + value: UTC-00:00 + title: UTC-00:00 + selected: true + option16: + value: UTC+01:00 + title: UTC+01:00 + option17: + value: UTC+02:00 + title: UTC+02:00 + option18: + value: UTC+03:00 + title: UTC+03:00 + option19: + value: UTC+03:30 + title: UTC+03:30 + option20: + value: UTC+04:00 + title: UTC+04:00 + option21: + value: UTC+04:30 + title: UTC+04:30 + option22: + value: UTC+05:00 + title: UTC+05:00 + option23: + value: UTC+05:30 + title: UTC+05:30 + option24: + value: UTC+05:45 + title: UTC+05:45 + option25: + value: UTC+06:00 + title: UTC+06:00 + option26: + value: UTC+07:00 + title: UTC+07:00 + option27: + value: UTC+08:00 + title: UTC+08:00 + option28: + value: UTC+08:45 + title: UTC+08:45 + option29: + value: UTC+09:30 + title: UTC+09:30 + option30: + value: UTC+10:00 + title: UTC+10:00 + option31: + value: UTC+10:30 + title: UTC+10:30 + option32: + value: UTC+11:00 + title: UTC+11:00 + option33: + value: UTC+12:00 + title: UTC+12:00 + option34: + value: UTC+12:45 + title: UTC+12:45 + option35: + value: UTC+13:00 + title: UTC+13:00 + option36: + value: UTC+14:00 + title: UTC+14:00 + formFiles: + inputs: + type: fundamentals + name: form + data: + example: true + fields: + file: + label: Choose a file + name: file + type: file + formCheckboxes: + inputs: + type: fundamentals + name: form + data: + example: true + fields: + checkboxes: + type: fieldset + label: Things you like + hint: Select all that apply + name: things-you-like + fields: + chocolate: + label: Chocolate + name: chocolate + type: checkbox + appearance: base + coffee: + label: Coffee + name: coffee + type: checkbox + appearance: base + cake: + label: Cake + name: cake + type: checkbox + appearance: base + chips: + label: Chips + name: chips + type: checkbox + appearance: base + formRadios: + inputs: + type: fundamentals + name: form + data: + example: true + fields: + radios: + type: fieldset + label: Have you changed your name? + hint: This includes changing your family name or spelling your name differently. + name: name-change + fields: + yes: + label: Yes + name: name-change_yes + type: radio + initialValue: yes + no: + label: No + name: name-change_no + type: radio + initialValue: no + formSegments: + inputs: + type: fundamentals + name: form + data: + example: true + fields: + segments: + type: fieldset + label: Segmented options (Radio) + name: segmented-options + hint: We understand that different people enjoy books in differeny ways, which is why we're giving you lots of options. + isSegmentedGroup: true + fields: + segment1: + name: segmented-option-1 + class: input--radio + type: radio + segmentTitle: Budget option + segmentBody: Copy to explain this option in more detail + segment2: + name: segmented-option-2 + class: input--radio + type: radio + checked: true + segmentTitle: Value option + segmentBody: Copy to explain this option in more detail + segment3: + name: segmented-option-3 + class: input--radio + type: radio + segmentTitle: Expensive option + segmentBody: Copy to explain this option in more detail + formSelect: + inputs: + type: fundamentals + name: form + data: + example: true + fields: + sortBy: + type: select + label: Sort by + name: sort + options: + option1: + value: published + title: Recently published + option2: + value: updated + title: Recently updated + option3: + value: views + title: Most views + option4: + value: comments + title: Most comments + formFixedWidth: + inputs: + type: fundamentals + name: form + data: + example: true + fields: + 30char: + label: 30 character width + type: text + name: width-30 + class: input-width-30 + 20char: + label: 20 character width + type: text + name: width-20 + class: input-width-20 + 10char: + label: 10 character width + type: text + name: width-10 + class: input-width-10 + 5char: + label: 5 character width + type: text + name: width-5 + class: input-width-5 + 4char: + label: 4 character width + type: text + name: width-4 + class: input-width-4 + 3char: + label: 3 character width + type: text + name: width-3 + class: input-width-3 + 2char: + label: 2 character width + type: text + name: width-2 + class: input-width-2 + +--- +The examples on this page show how we manage forms and their fields, and their default styles. Recommendations are based on Adam Silver's article [Form design: from zero to hero all in one blog post](https://adamsilver.io/blog/form-design-from-zero-to-hero-all-in-one-blog-post/) and the [GOV.UK design system](https://design-system.service.gov.uk/components/). + +An [example search form](https://amplify.studio24.net/amplify/core-components/search.html) is available in [core components](https://amplify.studio24.net/amplify/core-components). + +[Form error messages](https://amplify.studio24.net/amplify/fundamentals/form-errors.html) are covered separately. + +Top tips +-------- + +- Every `input` needs a `label`. Do not wrap inputs in labels, put labels above the input. +- Do not use the `placeholder` attribute on `input` fields. +- Use [fixed width inputs](https://amplify.studio24.net/amplify/fundamentals/forms.html#fixed-width-inputs) for content that has a specific, known length. Postcode inputs should be postcode-sized, telephone number inputs should be telephone number-sized. +- Make form fields look like form fields: apply a border and make sure they are empty to begin with. A minimum height of 44 pixels makes them easy to tap on touch screen devices. +- Make sure any `button` looks like a button. Align them to the left edge of the last input (the right edge for right-to-left languages) where users naturally look for them. Use a verb for button text because the user is doing something, and relate it to what they are doing - avoid generic 'Submit' buttons. +- [The `select` element should be a last resort](https://www.youtube.com/watch?v=CUkMCQR4TpY) as they're really hard to use. Try radio buttons instead. If there's a long list of options, use JavaScript to enhance the `select` into an [accessible auto-complete field](https://amplify.studio24.net/amplify/advanced-components/accessible-autocomplete.html) (not to be confused with the `autocomplete` attribute). +- If you have to use a `select`, don't submit a form when its value changes. Select boxes that submit the form automatically when the user selects an option cause problems for keyboard and screen reader users. + +### Required fields + +It is best practice to only ask questions that are strictly necessary. + +In the event that a form contains both optional and required fields, to clearly identify the required fields to all users add `span class="required">(Required)This is a living guide, running off your project Sass and JavaScript. It starts as the default, clean starter kit. It is not meant to be styled nicely.

+

As you write your project's Sass and JavaScript, this guide will pick up those changes.

+

You can delete this directory (/amplify) if you don't need to refer to these docs or don't want to include it in your finished project.

+ type: info +--- + +{{ pageComponents(components) }} + +
+ +1. Grab an up-to-date copy of Amplify from [GitHub](https://github.com/studio24/amplify) +2. Copy the following items from Amplify into your project (probably into the theme directory, but it will depend on your project setup): + - `/assets-src` directory + - `.nvmrc` file - update to the current LTS version + - `package.json` and `package-lock.json` files + - `svgo.config.js` file + - `webpack.config.js` file +3. Check that the config `from` and `to` paths in `package.json` are correct for your project setup +4. Check the `context` and `output` paths in `webpack.config.js` are correct for your project setup +5. Optional: copy the `/amplify` directory into the webroot +6. Follow the command line instructions to [install project dependencies](https://github.com/studio24/amplify) and check there are no errors when building the front-end assets +7. Make sure the `html` element in your web page template has an appropriate `lang` attribute and the `no-js` class +8. Make sure your web page template includes the following (which can be copied from any of the example pages in the `/amplify` directory): + - link to the core stylesheet + - link to the advanced stylesheet, including the media query to determine which browsers it will be served to + - link to the print stylesheet + - `script` for the Font Face Observer library in the `head` + - another `script` in the `head`, which checks when the desired web font is loaded, adds the `fonts-loaded` class to `html`, adds the main JavaScript file to the `head` and switches the `no-js` class to `js` + +
\ No newline at end of file diff --git a/web/amplify/eleventy/get-started/browser-support.md b/web/amplify/eleventy/get-started/browser-support.md new file mode 100644 index 00000000..c0a1397e --- /dev/null +++ b/web/amplify/eleventy/get-started/browser-support.md @@ -0,0 +1,26 @@ +--- +title: Browser Support +--- +Amplify supports the range of [browsers recommended by the GOVUK Service Manual](https://www.gov.uk/service-manual/technology/designing-for-different-browsers-and-devices). + +Inspired by the [Springer Nature Frontend Playbook](https://github.com/springernature/frontend-playbook/blob/main/practices/graded-browser-support.md), all browsers are served semantic HTML and minimal CSS as defined in `core.css` and `print.css`, but only supported browsers are served the `advanced.css` and any JavaScript files that are needed. + +It is inefficient for developers and website performance (and therefore users) to attempt to make advanced CSS and JavaScript work in older browsers. **Essential user journeys must remain accessible to all users**, irrespective of their browser, but users of supported browsers will have a more interactive and visually pleasing experience. + +Implementing browser support +---------------------------- + +Amplify uses the '[cutting the mustard](http://www.zeldman.com/2015/09/01/youre-welcome-cutting-the-mustard-then-and-now/)' progressive enhancement technique. This involves using feature detection in order to determine which browsers will receive the fully-enhanced experience and which ones will receive only the core experience. + +By [cutting the mustard with CSS media queries](https://www.sitepoint.com/cutting-the-mustard-with-css-media-queries/), users of supported browsers will have the best possible experience even if JavaScript is not available. + +[Implementation details for developers](https://github.com/studio24/amplify/blob/main/docs/browser-support.md). + +### Changing the supported browsers + +If your browser support needs differ, you must make the following updates: + +- the browserslist in `package.json` +- the CSS media query in `head` of your web page templates. + +[How to update Amplify browser support](https://github.com/studio24/amplify/blob/main/docs/browser-support.md). \ No newline at end of file diff --git a/web/amplify/eleventy/get-started/css.md b/web/amplify/eleventy/get-started/css.md new file mode 100644 index 00000000..9c26f0e6 --- /dev/null +++ b/web/amplify/eleventy/get-started/css.md @@ -0,0 +1,21 @@ +--- +title: CSS +--- +Amplify uses [Sass](http://sass-lang.com/) - specifically the [SCSS syntax](https://sass-lang.com/documentation/syntax) - which is compiled into CSS files. The CSS approach is heavily influenced by Andy Bell's [CUBE CSS](https://cube.fyi/). This has some similarities with the [BEM Methodology](http://getbem.com/) but with a more judicious use of class names. + +Architecture +------------ + +The architecture is split into a series of numbered levels in `src/styles/sass` with each level representing a directory that contains our Sass split out into different [partial files](https://sass-lang.com/guide#topic-4). More generic and wide-reaching styles sit within the lower numbered levels, with specificity increasing with each subsequent level. + +[CSS architecture details for developers](https://github.com/studio24/amplify/blob/main/docs/css.md#css-architecture). + +Compiling Sass to CSS +--------------------- + +As mentioned in [browser support](https://amplify.studio24.net/amplify/get-started/browser-support.html), the Sass is compiled into the following CSS stylesheets in `web/dist/styles`: + +- `core.css` and `print.css`, which are served to all browsers +- `advanced.css`, which is served to supported browsers. + +[Sass compilation details for developers](https://github.com/studio24/amplify/blob/main/docs/css.md#compiling-sass-to-css). \ No newline at end of file diff --git a/web/amplify/eleventy/get-started/get-started.json b/web/amplify/eleventy/get-started/get-started.json new file mode 100644 index 00000000..b023262b --- /dev/null +++ b/web/amplify/eleventy/get-started/get-started.json @@ -0,0 +1,4 @@ +{ + "layout": "page.njk", + "tags": "get-started" +} \ No newline at end of file diff --git a/web/amplify/eleventy/get-started/javascript.md b/web/amplify/eleventy/get-started/javascript.md new file mode 100644 index 00000000..4f650d61 --- /dev/null +++ b/web/amplify/eleventy/get-started/javascript.md @@ -0,0 +1,19 @@ +--- +title: JavaScript +--- +Architecture +------------ + +The architecture takes inspiration from Chris Ferdinandi's [How I structure my vanilla JS projects](https://gomakethings.com/how-i-structure-my-vanilla-js-projects/). Rather than keeping all JavaScript within a single file, code is split across a series of individual files and subdirectories within `src/js` directory. This approach offers two main benefits: + +- It makes the code easier to understand for developers +- We don't have to load all JavaScript on all pages + +[JS architecture details for developers](https://github.com/studio24/amplify/blob/main/docs/javascript.md#javascript-architecture). + +Compiling and transpiling +------------------------- + +[Webpack](https://webpack.js.org/) concatenates and minifies the JS needed for the project into `web/dist/js`. [Babel](https://babeljs.io/) is used for transpiling the JS into code for our [supported browsers](https://amplify.studio24.net/amplify/get-started/browser-support.html). + +[JS build tool details for developers](https://github.com/studio24/amplify/blob/main/docs/javascript.md#javascript-build-tools). \ No newline at end of file diff --git a/web/amplify/eleventy/index.md b/web/amplify/eleventy/index.md new file mode 100644 index 00000000..64338459 --- /dev/null +++ b/web/amplify/eleventy/index.md @@ -0,0 +1,46 @@ +--- +title: Home +layout: homepage.njk +root: true +templateEngineOverride: 'njk,md' +components: + cover: + type: layout-helpers + name: cover + data: + lead: true + title: Amplify + body: Welcome to the Studio 24 starter kit for design and front-end development + cards: + type: core-components + name: cards + data: + type: neat + extraClass: teasers + cards: + card1: + heading: Fundamentals + body:

Understand how Amplify handles the fundamentals, e.g. colours, typography, buttons/links, lists, tables, forms, spacing and print styles.

+ link: + url: /fundamentals + text: Browse fundamentals + card2: + heading: Core components + body:

Examples of commonly required components, such as breadcrumbs and pagination.

+ link: + url: /core-components + text: Browse core components + card3: + heading: Advanced components + body:

Examples of components with JavaScript enhancements, such as collapsible content.

+ link: + url: /advanced-components + text: Browse advanced components + card4: + heading: Layout Helpers + body:

Understand how Amplify handles the fundamentals, e.g. colours, typography, buttons/links, lists, tables, forms, spacing and print styles.

+ link: + url: /fundamentals + text: Browse fundamentals +--- +{{ pageComponents(components) }} diff --git a/web/amplify/eleventy/layout-helpers.md b/web/amplify/eleventy/layout-helpers.md new file mode 100644 index 00000000..6170691a --- /dev/null +++ b/web/amplify/eleventy/layout-helpers.md @@ -0,0 +1,10 @@ +--- +title: Layout helpers +navItem: true +root: true +markdown: true +navOrder: 3 +--- +Influenced by [Every Layout](https://every-layout.dev/), these are basic layout helper styles. + +They can be combined and customised to make components and page templates. \ No newline at end of file diff --git a/web/amplify/eleventy/layout-helpers/box.md b/web/amplify/eleventy/layout-helpers/box.md new file mode 100644 index 00000000..d4a8e1cc --- /dev/null +++ b/web/amplify/eleventy/layout-helpers/box.md @@ -0,0 +1,44 @@ +--- +title: Box +components: + default: + type: layout-helpers + name: box + data: + title: Default box + text: Default box, with padding and border + noPadding: + type: layout-helpers + name: box + data: + title: Box without padding + noPadding: true + text: Box with no padding + noBorder: + type: layout-helpers + name: box + data: + title: Box without border + noBorder: true + text: Box with no border + noBorderNoPadding: + type: layout-helpers + name: box + data: + title: Box without padding or border + noBorder: true + noPadding: true + text: Box with no padding and no border +--- +The box layout helper is a simple container for grouping content within a defined region. It uses the class `l-box`. + +Box deliberately treats padding and borders *equally on all sides*. + +If your container needs asymmetrical styling, then it's a container with a more specific purpose and *not* a box. + +{{ pageComponents(components) }} + +Considerations +-------------- + +Because high contrast themes can eliminate `background-color`, the `l-box--no-border` modifier class adds a transparent outline so that the shape of the box remains apparent. Negative `outline-offset` moves the outline inside the box perimeter so that it doesn't impact its overall size. \ No newline at end of file diff --git a/web/amplify/eleventy/layout-helpers/center.md b/web/amplify/eleventy/layout-helpers/center.md new file mode 100644 index 00000000..df0ce888 --- /dev/null +++ b/web/amplify/eleventy/layout-helpers/center.md @@ -0,0 +1,16 @@ +--- +title: Center +components: + center: + type: layout-helpers + name: center + data: + text: Center layout in action +--- +The center layout helper creates a vertical strip of content inside a given container element, with equal spacing on either side. It uses the class `l-center`. This technique is used on the `main` element (albeit without using the `l-center` class). + +Padding on the sides of the center layout helper maintains a space between its contents and the edges of the parent container, even when the parent is narrower than the `max-width` of the center layout. + +The center layout helper uses an exception to the global `box-sizing: border-box;` declaration. It uses `box-sizing: content-box;` to prevent the padding from making the content narrower than intended. + +{{ pageComponents(components) }} \ No newline at end of file diff --git a/web/amplify/eleventy/layout-helpers/cluster.md b/web/amplify/eleventy/layout-helpers/cluster.md new file mode 100644 index 00000000..20f70f38 --- /dev/null +++ b/web/amplify/eleventy/layout-helpers/cluster.md @@ -0,0 +1,48 @@ +--- +title: Cluster +components: + cluster: + type: layout-helpers + name: cluster + data: + items: + item1: + link: javascript:; + title: Item One + item2: + link: javascript:; + title: Item Two + item3: + link: javascript:; + title: Item Three + item4: + link: javascript:; + title: Item Four + item5: + link: javascript:; + title: Item Five + item6: + link: javascript:; + title: Item Six + item7: + link: javascript:; + title: Item Seven + item8: + link: javascript:; + title: Item Eight + item9: + link: javascript:; + title: Item Nine + item10: + link: javascript:; + title: Item Ten +--- +The cluster layout helper suits any group of elements that differ in length, are liable to wrap and need even spacing between them, e.g. lists of tags or groups of buttons. It uses the class `l-cluster`. + +Cluster needs an inner flexbox container - in the following example it's provided by the `ul`. Flexbox gives us control of the alignment of items inside. + +The cluster items - `li` in this example - sit within this container. Each item has a margin on all sides. + +The flexbox container has a negative margin of the same size as the cluster items, creating even spacing between them. `overflow: hidden;` is used to tidy up the edges. + +{{ pageComponents(components) }} \ No newline at end of file diff --git a/web/amplify/eleventy/layout-helpers/cover.md b/web/amplify/eleventy/layout-helpers/cover.md new file mode 100644 index 00000000..76263f5c --- /dev/null +++ b/web/amplify/eleventy/layout-helpers/cover.md @@ -0,0 +1,43 @@ +--- +title: Cover +components: + coverPrincipal: + type: layout-helpers + name: cover + data: + example: true + title: Cover with horizontal centering using a utility class + body: Here is the principal content + extraClasses: principal text-39 u-center + coverNested: + type: layout-helpers + name: cover + data: + example: true + title: Cover with a nested center layout for horizontal centering + body: Here is the principal content + nested: true + nestClasses: l-center principal + extraClasses: text-39 + coverHeaderFooter: + type: layout-helpers + name: cover + data: + example: true + title: Cover with optional header and footer content + body: The principal content + headerFooter: true + headerContent: Header content, e.g. a close button + extraClasses: principal text-39 u-center + footerContent: Footer content + + + +--- +The cover layout helper creates a container with a minimum height to hold vertically centered content, ideal for "above the fold" hero blocks and sections needing visual prominence. It uses the classes `l-cover` for the container and `principal` for the content to be centered. + +{{ pageComponents(components) }} + +### Considerations + +By adding a class to "Header" and/or "Footer" we could then use `align-self: flex-end;` to shift them to the far edge of cover. \ No newline at end of file diff --git a/web/amplify/eleventy/layout-helpers/frame.md b/web/amplify/eleventy/layout-helpers/frame.md new file mode 100644 index 00000000..874d73f0 --- /dev/null +++ b/web/amplify/eleventy/layout-helpers/frame.md @@ -0,0 +1,64 @@ +--- +title: Frame +components: + frame16-9: + type: layout-helpers + name: frame + data: + example: true + title: "16:9 aspect ratio" + aspectRatio: "16:9" + image: + url: https://amplify.studio24.net/dist/images/jpg-cat-1.jpg + altText: A cat with green eyes looking directly at the camera + caption: "An example of the 16:9 frame modifier" + frame3-2: + type: layout-helpers + name: frame + data: + example: true + title: "3:2 aspect ratio" + aspectRatio: "3:2" + image: + url: https://amplify.studio24.net/dist/images/jpg-cat-1.jpg + altText: A cat with green eyes looking directly at the camera + caption: "An example of the 3:2 frame modifier" + frame4-3: + type: layout-helpers + name: frame + data: + example: true + title: "4:3 aspect ratio" + aspectRatio: "4:3" + image: + url: https://amplify.studio24.net/dist/images/jpg-cat-1.jpg + altText: A cat with green eyes looking directly at the camera + caption: "An example of the 4:3 frame modifier" + frameSquare: + type: layout-helpers + name: frame + data: + example: true + title: square aspect ratio + aspectRatio: square + image: + url: https://amplify.studio24.net/dist/images/jpg-cat-1.jpg + altText: A cat with green eyes looking directly at the camera + caption: An example of the square frame modifier +--- +The frame layout helper is useful for cropping media (images and video) to a specific aspect ratio. It uses the class `l-frame` and additional modifier classes for pre-defined aspect ratios. These modifier classes determine the amount of vertical padding on the frame, which then acts as a window onto the content inside. + +{{ pageComponents(components) }} + +Considerations +-------------- + +### Figure/figcaption use + +If using `figure` with `figcaption`, make sure to apply the `l-frame` class to an inner `div` or `picture` rather than directly to the `figure` to avoid obscuring the `figcaption`. + +### Internet Explorer/non-Chromium Edge + +The default frame layout uses `object-fit: cover` for images and videos. This is not supported in Internet Explorer or Edge prior to version 16 and in Edge 16-18 it is only supported on images. However, the Chromium Edge browser, which does support object-fit, is now available to systems as far back as Windows 7. + +If you need broader support you may prefer to forgo `object-fit` and adapt your instance of the frame to rely on absolute positioning of the contents and hiding any overflow. \ No newline at end of file diff --git a/web/amplify/eleventy/layout-helpers/layout-helpers.json b/web/amplify/eleventy/layout-helpers/layout-helpers.json new file mode 100644 index 00000000..33158285 --- /dev/null +++ b/web/amplify/eleventy/layout-helpers/layout-helpers.json @@ -0,0 +1,6 @@ +{ + "layout": "page.njk", + "tags": "layout-helpers", + "templateEngineOverride": "njk, md", + "subpage": true +} \ No newline at end of file diff --git a/web/amplify/eleventy/layout-helpers/sidebar.md b/web/amplify/eleventy/layout-helpers/sidebar.md new file mode 100644 index 00000000..61cec08a --- /dev/null +++ b/web/amplify/eleventy/layout-helpers/sidebar.md @@ -0,0 +1,45 @@ +--- +title: Sidebar +components: + default: + type: layout-helpers + name: sidebar + data: + example: true + title: Default sidebar + notSidebar: Wide panel + sidebarContent: Narrow sidebar panel + nested: + type: layout-helpers + name: sidebar + data: + example: true + nested: true + title: Using nested containers for spacing content + notSidebar: Wide panel + sidebarContent: Narrow sidebar panel +--- +The sidebar layout helper creates a pair of content panels inside a containing element. These two panels stack vertically, until there is enough horizontal space for them to sit alongside each other. One content panel is typically narrower than the other, acting as a "sidebar". + +The sidebar layout helper needs an inner flexbox container to hold the two panels. The same negative margin technique used for the [cluster layout](https://amplify.studio24.net/amplify/layout-helpers/cluster.html) creates gutter spacing between the panels. + +The point at which the panels sit side-by-side horizontally is determined by a `flex-basis` property on the narrower panel and a `min-width` on the wider panel. As there are **no viewport media queries**, the sidebar layout will nest nicely inside other containers. + +Considerations +-------------- + +It is not recommended to use the sidebar layout helper to create an entire page layout, with a main content area and a sidebar. This is because the technique Amplify uses to manage [responsive tables](https://amplify.studio24.net/amplify/fundamentals/tables.html) has been found not to work if the table sits within the sidebar layout helper. + +{{ pageComponents(components) }} + +Using intrinsic content width for the sidebar +--------------------------------------------- + +
+
+ + +
+
+ +We can choose to not specify a width on the narrow "sidebar" panel (by not declaring a `flex-basis` value) and let the content of the sidebar determine how wide it is. The preceding example shows how to override the default styles by using an additional class and omitting the `sidebar` class. \ No newline at end of file diff --git a/web/amplify/eleventy/layout-helpers/simple-search.md b/web/amplify/eleventy/layout-helpers/simple-search.md new file mode 100644 index 00000000..cfcf8d9b --- /dev/null +++ b/web/amplify/eleventy/layout-helpers/simple-search.md @@ -0,0 +1,9 @@ +--- +title: Simple search form +--- +Considerations +-------------- + +Note the use of `input type="search"`. It is recommended to include `role="search"` on the parent `form` element. [More about forms](https://amplify.studio24.net/amplify/fundamentals/forms.html). + +Note the use of the [box layout](https://amplify.studio24.net/amplify/layout-helpers/box.html) and [sidebar layout](https://amplify.studio24.net/amplify/layout-helpers/sidebar.html) in this example. \ No newline at end of file diff --git a/web/amplify/eleventy/layout-helpers/switcher.md b/web/amplify/eleventy/layout-helpers/switcher.md new file mode 100644 index 00000000..028f51f1 --- /dev/null +++ b/web/amplify/eleventy/layout-helpers/switcher.md @@ -0,0 +1,35 @@ +--- +title: Switcher +components: + switcher: + type: layout-helpers + name: switcher + data: + items: + item1: + text: Item 1 + item2: + text: Item 2 + item3: + text: Item 3 +--- +The switcher layout helper switches the alignment of items from horizontal to vertical at a given, container-based breakpoint. It's a good choice for situations where each child item should be considered of equal importance and has an equal width. You will find an example of the switcher on the [Amplify home page](https://amplify.studio24.net/amplify/index.html). + +As with the [cluster](https://amplify.studio24.net/amplify/layout-helpers/cluster.html) and [sidebar](https://amplify.studio24.net/amplify/layout-helpers/sidebar.html) layouts, an inner flexbox container holds the switcher items, and the negative margin technique to create gutter spacing between items. + +As there are **no viewport media queries**, the switcher will nest nicely inside other containers. + +{{ pageComponents(components) }} + +Considerations +-------------- + +The default switcher layout behaves as follows: + +- When the inner flexbox container is less than 690px wide, the child items sit vertically. +- Otherwise, the child items sit horizontally. +- The number of columns in a row is two (determined by the `min-width` percentage used on the child items). + +For gutter spacing, apply padding to the flex items and an equal negative margin to the flex container. This will double up, so use half the intended value. + +Use an additional class to override the default behaviour. \ No newline at end of file diff --git a/web/eleventy-dist/advanced-components/accessible-autocomplete/index.html b/web/eleventy-dist/advanced-components/accessible-autocomplete/index.html new file mode 100644 index 00000000..cc41700c --- /dev/null +++ b/web/eleventy-dist/advanced-components/accessible-autocomplete/index.html @@ -0,0 +1,166 @@ + + + + + + + + Accessible auto-complete - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/advanced-components/cards/index.html b/web/eleventy-dist/advanced-components/cards/index.html new file mode 100644 index 00000000..2978db4f --- /dev/null +++ b/web/eleventy-dist/advanced-components/cards/index.html @@ -0,0 +1,193 @@ + + + + + + + + Block link cards - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/advanced-components/collapsibles/index.html b/web/eleventy-dist/advanced-components/collapsibles/index.html new file mode 100644 index 00000000..4e003f3d --- /dev/null +++ b/web/eleventy-dist/advanced-components/collapsibles/index.html @@ -0,0 +1,166 @@ + + + + + + + + Collapsible containers - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/advanced-components/disclosure-widget/index.html b/web/eleventy-dist/advanced-components/disclosure-widget/index.html new file mode 100644 index 00000000..63871470 --- /dev/null +++ b/web/eleventy-dist/advanced-components/disclosure-widget/index.html @@ -0,0 +1,167 @@ + + + + + + + + Disclosure widget - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/advanced-components/index.html b/web/eleventy-dist/advanced-components/index.html new file mode 100644 index 00000000..22230638 --- /dev/null +++ b/web/eleventy-dist/advanced-components/index.html @@ -0,0 +1,165 @@ + + + + + + + + Advanced components - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/advanced-components/tabbed-sections/index.html b/web/eleventy-dist/advanced-components/tabbed-sections/index.html new file mode 100644 index 00000000..8a84d78f --- /dev/null +++ b/web/eleventy-dist/advanced-components/tabbed-sections/index.html @@ -0,0 +1,172 @@ + + + + + + + + - Amplify + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/advanced-components/tabs/index.html b/web/eleventy-dist/advanced-components/tabs/index.html new file mode 100644 index 00000000..2d230007 --- /dev/null +++ b/web/eleventy-dist/advanced-components/tabs/index.html @@ -0,0 +1,172 @@ + + + + + + + + Tabbed sections - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/core-components/avatars/index.html b/web/eleventy-dist/core-components/avatars/index.html new file mode 100644 index 00000000..1fa5275b --- /dev/null +++ b/web/eleventy-dist/core-components/avatars/index.html @@ -0,0 +1,206 @@ + + + + + + + + Avatars - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/core-components/breadcrumbs/index.html b/web/eleventy-dist/core-components/breadcrumbs/index.html new file mode 100644 index 00000000..f615577a --- /dev/null +++ b/web/eleventy-dist/core-components/breadcrumbs/index.html @@ -0,0 +1,202 @@ + + + + + + + + Breadcrumbs - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/core-components/image-component/index.html b/web/eleventy-dist/core-components/image-component/index.html new file mode 100644 index 00000000..e4a8c0b3 --- /dev/null +++ b/web/eleventy-dist/core-components/image-component/index.html @@ -0,0 +1,203 @@ + + + + + + + + Image Component - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/core-components/image/index.html b/web/eleventy-dist/core-components/image/index.html new file mode 100644 index 00000000..13f7c1e1 --- /dev/null +++ b/web/eleventy-dist/core-components/image/index.html @@ -0,0 +1,242 @@ + + + + + + + + - Amplify + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/core-components/index.html b/web/eleventy-dist/core-components/index.html new file mode 100644 index 00000000..0c44f34b --- /dev/null +++ b/web/eleventy-dist/core-components/index.html @@ -0,0 +1,201 @@ + + + + + + + + Core components - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/core-components/main/index.html b/web/eleventy-dist/core-components/main/index.html new file mode 100644 index 00000000..4379ca03 --- /dev/null +++ b/web/eleventy-dist/core-components/main/index.html @@ -0,0 +1,203 @@ + + + + + + + + Main - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/core-components/notes/index.html b/web/eleventy-dist/core-components/notes/index.html new file mode 100644 index 00000000..88e74fd7 --- /dev/null +++ b/web/eleventy-dist/core-components/notes/index.html @@ -0,0 +1,202 @@ + + + + + + + + Notes - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/core-components/pagination/index.html b/web/eleventy-dist/core-components/pagination/index.html new file mode 100644 index 00000000..e4bec0e2 --- /dev/null +++ b/web/eleventy-dist/core-components/pagination/index.html @@ -0,0 +1,204 @@ + + + + + + + + Pagination - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/core-components/progress-indicator/index.html b/web/eleventy-dist/core-components/progress-indicator/index.html new file mode 100644 index 00000000..c1be6c9d --- /dev/null +++ b/web/eleventy-dist/core-components/progress-indicator/index.html @@ -0,0 +1,198 @@ + + + + + + + + Progress indicator - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/core-components/quote-component/index.html b/web/eleventy-dist/core-components/quote-component/index.html new file mode 100644 index 00000000..3a6cef9c --- /dev/null +++ b/web/eleventy-dist/core-components/quote-component/index.html @@ -0,0 +1,200 @@ + + + + + + + + Quote component - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/core-components/shelves/index.html b/web/eleventy-dist/core-components/shelves/index.html new file mode 100644 index 00000000..2390550f --- /dev/null +++ b/web/eleventy-dist/core-components/shelves/index.html @@ -0,0 +1,239 @@ + + + + + + + + Shelves - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/core-components/simple-cards/index.html b/web/eleventy-dist/core-components/simple-cards/index.html new file mode 100644 index 00000000..32d82c1a --- /dev/null +++ b/web/eleventy-dist/core-components/simple-cards/index.html @@ -0,0 +1,215 @@ + + + + + + + + Simple cards - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/core-components/sticky-footer/index.html b/web/eleventy-dist/core-components/sticky-footer/index.html new file mode 100644 index 00000000..f8e54299 --- /dev/null +++ b/web/eleventy-dist/core-components/sticky-footer/index.html @@ -0,0 +1,199 @@ + + + + + + + + Sticky footer - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/core-components/tag-list/index.html b/web/eleventy-dist/core-components/tag-list/index.html new file mode 100644 index 00000000..744b51fc --- /dev/null +++ b/web/eleventy-dist/core-components/tag-list/index.html @@ -0,0 +1,201 @@ + + + + + + + + Tag list - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/core-components/text-component/index.html b/web/eleventy-dist/core-components/text-component/index.html new file mode 100644 index 00000000..4e28118b --- /dev/null +++ b/web/eleventy-dist/core-components/text-component/index.html @@ -0,0 +1,203 @@ + + + + + + + + Text component - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/core-components/video-component/index.html b/web/eleventy-dist/core-components/video-component/index.html new file mode 100644 index 00000000..9b0020f7 --- /dev/null +++ b/web/eleventy-dist/core-components/video-component/index.html @@ -0,0 +1,205 @@ + + + + + + + + Video component - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/core-components/video-components/index.html b/web/eleventy-dist/core-components/video-components/index.html new file mode 100644 index 00000000..0e994f44 --- /dev/null +++ b/web/eleventy-dist/core-components/video-components/index.html @@ -0,0 +1,172 @@ + + + + + + + + - Amplify + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/design-handover/index.html b/web/eleventy-dist/design-handover/index.html new file mode 100644 index 00000000..24ddfb3b --- /dev/null +++ b/web/eleventy-dist/design-handover/index.html @@ -0,0 +1,100 @@ + + + + + + + + Get started - Amplify + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/design/index.html b/web/eleventy-dist/design/index.html new file mode 100644 index 00000000..b561555d --- /dev/null +++ b/web/eleventy-dist/design/index.html @@ -0,0 +1,203 @@ + + + + + + + + Design handover & standards - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/design/typography-test/index.html b/web/eleventy-dist/design/typography-test/index.html new file mode 100644 index 00000000..3410e3dc --- /dev/null +++ b/web/eleventy-dist/design/typography-test/index.html @@ -0,0 +1,217 @@ + + + + + + + + Typography test - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/fonts/nunito-v20-latin-700.woff b/web/eleventy-dist/fonts/nunito-v20-latin-700.woff new file mode 100644 index 00000000..f4ec4272 Binary files /dev/null and b/web/eleventy-dist/fonts/nunito-v20-latin-700.woff differ diff --git a/web/eleventy-dist/fonts/nunito-v20-latin-700.woff2 b/web/eleventy-dist/fonts/nunito-v20-latin-700.woff2 new file mode 100644 index 00000000..61689839 Binary files /dev/null and b/web/eleventy-dist/fonts/nunito-v20-latin-700.woff2 differ diff --git a/web/eleventy-dist/fonts/nunito-v20-latin-700italic.woff b/web/eleventy-dist/fonts/nunito-v20-latin-700italic.woff new file mode 100644 index 00000000..7b5dc726 Binary files /dev/null and b/web/eleventy-dist/fonts/nunito-v20-latin-700italic.woff differ diff --git a/web/eleventy-dist/fonts/nunito-v20-latin-700italic.woff2 b/web/eleventy-dist/fonts/nunito-v20-latin-700italic.woff2 new file mode 100644 index 00000000..e23f0aa4 Binary files /dev/null and b/web/eleventy-dist/fonts/nunito-v20-latin-700italic.woff2 differ diff --git a/web/eleventy-dist/fonts/nunito-v20-latin-italic.woff b/web/eleventy-dist/fonts/nunito-v20-latin-italic.woff new file mode 100644 index 00000000..756e209b Binary files /dev/null and b/web/eleventy-dist/fonts/nunito-v20-latin-italic.woff differ diff --git a/web/eleventy-dist/fonts/nunito-v20-latin-italic.woff2 b/web/eleventy-dist/fonts/nunito-v20-latin-italic.woff2 new file mode 100644 index 00000000..21bae9b7 Binary files /dev/null and b/web/eleventy-dist/fonts/nunito-v20-latin-italic.woff2 differ diff --git a/web/eleventy-dist/fonts/nunito-v20-latin-regular.woff b/web/eleventy-dist/fonts/nunito-v20-latin-regular.woff new file mode 100644 index 00000000..964a308e Binary files /dev/null and b/web/eleventy-dist/fonts/nunito-v20-latin-regular.woff differ diff --git a/web/eleventy-dist/fonts/nunito-v20-latin-regular.woff2 b/web/eleventy-dist/fonts/nunito-v20-latin-regular.woff2 new file mode 100644 index 00000000..b089f278 Binary files /dev/null and b/web/eleventy-dist/fonts/nunito-v20-latin-regular.woff2 differ diff --git a/web/eleventy-dist/fundamentals/breakpoints/index.html b/web/eleventy-dist/fundamentals/breakpoints/index.html new file mode 100644 index 00000000..f86762a4 --- /dev/null +++ b/web/eleventy-dist/fundamentals/breakpoints/index.html @@ -0,0 +1,212 @@ + + + + + + + + Breakpoints - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/fundamentals/buttons/index.html b/web/eleventy-dist/fundamentals/buttons/index.html new file mode 100644 index 00000000..304edb39 --- /dev/null +++ b/web/eleventy-dist/fundamentals/buttons/index.html @@ -0,0 +1,234 @@ + + + + + + + + Buttons and links - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/fundamentals/colours/index.html b/web/eleventy-dist/fundamentals/colours/index.html new file mode 100644 index 00000000..ca01c768 --- /dev/null +++ b/web/eleventy-dist/fundamentals/colours/index.html @@ -0,0 +1,227 @@ + + + + + + + + Colours - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/fundamentals/details-summary/index.html b/web/eleventy-dist/fundamentals/details-summary/index.html new file mode 100644 index 00000000..f9607474 --- /dev/null +++ b/web/eleventy-dist/fundamentals/details-summary/index.html @@ -0,0 +1,213 @@ + + + + + + + + Details and summary - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/fundamentals/flow-elements/index.html b/web/eleventy-dist/fundamentals/flow-elements/index.html new file mode 100644 index 00000000..dd42d6c0 --- /dev/null +++ b/web/eleventy-dist/fundamentals/flow-elements/index.html @@ -0,0 +1,227 @@ + + + + + + + + Flow elements - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/fundamentals/form-errors/index.html b/web/eleventy-dist/fundamentals/form-errors/index.html new file mode 100644 index 00000000..a7247e2b --- /dev/null +++ b/web/eleventy-dist/fundamentals/form-errors/index.html @@ -0,0 +1,275 @@ + + + + + + + + Form error messages - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/fundamentals/forms/index.html b/web/eleventy-dist/fundamentals/forms/index.html new file mode 100644 index 00000000..97330b1f --- /dev/null +++ b/web/eleventy-dist/fundamentals/forms/index.html @@ -0,0 +1,330 @@ + + + + + + + + Forms - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/fundamentals/hide-and-show/index.html b/web/eleventy-dist/fundamentals/hide-and-show/index.html new file mode 100644 index 00000000..eb029920 --- /dev/null +++ b/web/eleventy-dist/fundamentals/hide-and-show/index.html @@ -0,0 +1,233 @@ + + + + + + + + Hide and show items inclusively - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/fundamentals/icons/index.html b/web/eleventy-dist/fundamentals/icons/index.html new file mode 100644 index 00000000..8af52254 --- /dev/null +++ b/web/eleventy-dist/fundamentals/icons/index.html @@ -0,0 +1,228 @@ + + + + + + + + Icons - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/fundamentals/images/index.html b/web/eleventy-dist/fundamentals/images/index.html new file mode 100644 index 00000000..1037970b --- /dev/null +++ b/web/eleventy-dist/fundamentals/images/index.html @@ -0,0 +1,254 @@ + + + + + + + + Images - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/fundamentals/index.html b/web/eleventy-dist/fundamentals/index.html new file mode 100644 index 00000000..c12303c4 --- /dev/null +++ b/web/eleventy-dist/fundamentals/index.html @@ -0,0 +1,227 @@ + + + + + + + + Fundamentals - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/fundamentals/lists/index.html b/web/eleventy-dist/fundamentals/lists/index.html new file mode 100644 index 00000000..ccf23b25 --- /dev/null +++ b/web/eleventy-dist/fundamentals/lists/index.html @@ -0,0 +1,270 @@ + + + + + + + + Lists - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/fundamentals/print-styles/index.html b/web/eleventy-dist/fundamentals/print-styles/index.html new file mode 100644 index 00000000..0d69539a --- /dev/null +++ b/web/eleventy-dist/fundamentals/print-styles/index.html @@ -0,0 +1,222 @@ + + + + + + + + Print styles - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/fundamentals/skip-link/index.html b/web/eleventy-dist/fundamentals/skip-link/index.html new file mode 100644 index 00000000..6677f0f2 --- /dev/null +++ b/web/eleventy-dist/fundamentals/skip-link/index.html @@ -0,0 +1,211 @@ + + + + + + + + Skip link - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/fundamentals/tables/index.html b/web/eleventy-dist/fundamentals/tables/index.html new file mode 100644 index 00000000..91f2f88e --- /dev/null +++ b/web/eleventy-dist/fundamentals/tables/index.html @@ -0,0 +1,306 @@ + + + + + + + + Tables - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/fundamentals/typography/index.html b/web/eleventy-dist/fundamentals/typography/index.html new file mode 100644 index 00000000..28c6a3e4 --- /dev/null +++ b/web/eleventy-dist/fundamentals/typography/index.html @@ -0,0 +1,230 @@ + + + + + + + + Typography - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/fundamentals/utility-classes/index.html b/web/eleventy-dist/fundamentals/utility-classes/index.html new file mode 100644 index 00000000..b859199c --- /dev/null +++ b/web/eleventy-dist/fundamentals/utility-classes/index.html @@ -0,0 +1,234 @@ + + + + + + + + Utility Classes - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/fundamentals/vertical-spacing/index.html b/web/eleventy-dist/fundamentals/vertical-spacing/index.html new file mode 100644 index 00000000..913ea499 --- /dev/null +++ b/web/eleventy-dist/fundamentals/vertical-spacing/index.html @@ -0,0 +1,223 @@ + + + + + + + + Vertical spacing - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/get-started/browser-support copy/index.html b/web/eleventy-dist/get-started/browser-support copy/index.html new file mode 100644 index 00000000..99f05694 --- /dev/null +++ b/web/eleventy-dist/get-started/browser-support copy/index.html @@ -0,0 +1,128 @@ + + + + + + + + Browser support - Amplify + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/get-started/browser-support/index.html b/web/eleventy-dist/get-started/browser-support/index.html new file mode 100644 index 00000000..3b1af5fb --- /dev/null +++ b/web/eleventy-dist/get-started/browser-support/index.html @@ -0,0 +1,167 @@ + + + + + + + + Browser Support - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/get-started/css/index.html b/web/eleventy-dist/get-started/css/index.html new file mode 100644 index 00000000..9fe8cd05 --- /dev/null +++ b/web/eleventy-dist/get-started/css/index.html @@ -0,0 +1,164 @@ + + + + + + + + CSS - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/get-started/index.html b/web/eleventy-dist/get-started/index.html new file mode 100644 index 00000000..276807d5 --- /dev/null +++ b/web/eleventy-dist/get-started/index.html @@ -0,0 +1,181 @@ + + + + + + + + Get Started - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/get-started/javascript/index.html b/web/eleventy-dist/get-started/javascript/index.html new file mode 100644 index 00000000..8caf1427 --- /dev/null +++ b/web/eleventy-dist/get-started/javascript/index.html @@ -0,0 +1,163 @@ + + + + + + + + JavaScript - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/get-started/js/index.html b/web/eleventy-dist/get-started/js/index.html new file mode 100644 index 00000000..af01ac6d --- /dev/null +++ b/web/eleventy-dist/get-started/js/index.html @@ -0,0 +1,197 @@ + + + + + + + + JS - Amplify + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/images/jpg-cat-1.jpg b/web/eleventy-dist/images/jpg-cat-1.jpg new file mode 100644 index 00000000..402a1ac0 Binary files /dev/null and b/web/eleventy-dist/images/jpg-cat-1.jpg differ diff --git a/web/eleventy-dist/index.html b/web/eleventy-dist/index.html new file mode 100644 index 00000000..6fcd7925 --- /dev/null +++ b/web/eleventy-dist/index.html @@ -0,0 +1,158 @@ + + + + + + + + Home - Amplify + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/eleventy-dist/js/country-autocomplete.min.js b/web/eleventy-dist/js/country-autocomplete.min.js new file mode 100644 index 00000000..21ef6485 --- /dev/null +++ b/web/eleventy-dist/js/country-autocomplete.min.js @@ -0,0 +1 @@ +!function(){var e={10:function(e){var t;window,t=function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=37)}([function(e,t,n){var r=n(1),o=n(6),i=n(7),u=n(16),a=n(18),l="prototype",s=function(e,t,n){var c,p,f,d,h=e&s.F,v=e&s.G,m=e&s.S,y=e&s.P,g=e&s.B,_=v?r:m?r[t]||(r[t]={}):(r[t]||{})[l],b=v?o:o[t]||(o[t]={}),w=b[l]||(b[l]={});for(c in v&&(n=t),n)f=((p=!h&&_&&void 0!==_[c])?_:n)[c],d=g&&p?a(f,r):y&&"function"==typeof f?a(Function.call,f):f,_&&u(_,c,f,e&s.U),b[c]!=f&&i(b,c,d),y&&w[c]!=f&&(w[c]=f)};r.core=o,s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,e.exports=s},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){e.exports=!n(4)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){"use strict";n.r(t),n.d(t,"h",(function(){return a})),n.d(t,"createElement",(function(){return a})),n.d(t,"cloneElement",(function(){return c})),n.d(t,"Component",(function(){return L})),n.d(t,"render",(function(){return B})),n.d(t,"rerender",(function(){return h})),n.d(t,"options",(function(){return o}));var r=function(){},o={},i=[],u=[];function a(e,t){var n,a,l,s,c=u;for(s=arguments.length;2l;)r(a,n=t[l++])&&(~i(s,n)||s.push(n));return s}},function(e,t,n){var r=n(25),o=Math.max,i=Math.min;e.exports=function(e,t){return(e=r(e))<0?o(e+t,0):i(e,t)}},function(e,t){e.exports=!1},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){var r=n(48);e.exports=function(e,t){return new(r(e))(t)}},function(e,t,n){var r=n(2),o=n(33),i=n(34)("species");e.exports=function(e){var t;return o(e)&&("function"!=typeof(t=e.constructor)||t!==Array&&!o(t.prototype)||(t=void 0),r(t)&&null===(t=t[i])&&(t=void 0)),void 0===t?Array:t}},function(e,t,n){"use strict";var r=n(0),o=n(32)(2);r(r.P+r.F*!n(13)([].filter,!0),"Array",{filter:function(e){return o(this,e,arguments[1])}})},function(e,t,n){var r=n(0);r(r.S,"Array",{isArray:n(33)})},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0,n(14),n(36),n(30),n(31),n(35),n(55),n(58);var r=n(5),o=u(n(60)),i=u(n(61));function u(e){return e&&e.__esModule?e:{default:e}}function a(){return(a=Object.assign||function(e){for(var t=1;t=r;this.setState({query:a,ariaHint:l}),i||!l&&s&&c?o(a,(function(e){var n=0=i&&0=s,T=this.props.showNoOptionsFound&&A&&j&&L&&B,D=i+"__wrapper",F=i+"__input",R=null!==O?" "+F+"--focused":"",V=this.props.showAllValues?" "+F+"--show-all-values":" "+F+"--default",U=i+"__dropdown-arrow-down",q=-1!==O&&null!==O,W=i+"__menu",H=W+"--"+u,K=W+"--"+(S||T?"visible":"hidden"),z=i+"__option",Q=i+"__hint",G=this.templateInputValue(E[N]),$=G&&0===G.toLowerCase().indexOf(M.toLowerCase())&&k?M+G.substr(M.length):"",J=l+"__assistiveHint",X=I?{"aria-describedby":J}:null;return h&&"string"==typeof(e=w({className:U}))&&(e=(0,r.createElement)("div",{className:i+"__dropdown-arrow-down-wrapper",dangerouslySetInnerHTML:{__html:e}})),(0,r.createElement)("div",{className:D,onKeyDown:this.handleKeyDown},(0,r.createElement)(o.default,{id:l,length:E.length,queryLength:M.length,minQueryLength:s,selectedOption:this.templateInputValue(E[N]),selectedOptionIndex:N,validChoiceMade:P,isInFocus:null!==this.state.focused,tQueryTooShort:m,tNoResults:y,tSelectedOption:g,tResults:_}),$&&(0,r.createElement)("span",null,(0,r.createElement)("input",{className:Q,readonly:!0,tabIndex:"-1",value:$})),(0,r.createElement)("input",a({"aria-expanded":S?"true":"false","aria-activedescendant":!!q&&l+"__option--"+O,"aria-owns":l+"__listbox","aria-autocomplete":this.hasAutoselect()?"both":"list"},X,{autoComplete:"off",className:""+F+R+V,id:l,onClick:function(e){return t.handleInputClick(e)},onBlur:this.handleInputBlur},function(e){return{onInput:e}}(this.handleInputChange),{onFocus:this.handleInputFocus,name:p,placeholder:f,ref:function(e){t.elementReferences[-1]=e},type:"text",role:"combobox",required:d,value:M})),e,(0,r.createElement)("ul",{className:W+" "+H+" "+K,onMouseLeave:function(e){return t.handleListMouseLeave(e)},id:l+"__listbox",role:"listbox"},E.map((function(e,n){var o=(-1===O?N===n:O===n)&&null===C?" "+z+"--focused":"",i=n%2?" "+z+"--odd":"",u=c()?" '+(n+1)+" of "+E.length+"":"";return(0,r.createElement)("li",{"aria-selected":O===n?"true":"false",className:""+z+o+i,dangerouslySetInnerHTML:{__html:t.templateSuggestion(e)+u},id:l+"__option--"+n,key:n,onBlur:function(e){return t.handleOptionBlur(e,n)},onClick:function(e){return t.handleOptionClick(e,n)},onMouseDown:t.handleOptionMouseDown,onMouseEnter:function(e){return t.handleOptionMouseEnter(e,n)},ref:function(e){t.elementReferences[n]=e},role:"option",tabIndex:"-1","aria-posinset":n+1,"aria-setsize":E.length})})),T&&(0,r.createElement)("li",{className:z+" "+z+"--no-results"},v())),(0,r.createElement)("span",{id:J,style:{display:"none"}},b()))},t}(r.Component);(t.default=p).defaultProps={autoselect:!1,cssNamespace:"autocomplete",defaultValue:"",displayMenu:"inline",minLength:0,name:"input-autocomplete",placeholder:"",onConfirm:function(){},confirmOnBlur:!0,showNoOptionsFound:!0,showAllValues:!1,required:!1,tNoResults:function(){return"No results found"},tAssistiveHint:function(){return"When autocomplete results are available use up and down arrows to review and enter to select. Touch device users, explore by touch or with swipe gestures."},dropdownArrow:i.default}},function(e,t,n){var r=n(9),o=n(53),i=n(28),u=n(26)("IE_PROTO"),a=function(){},l="prototype",s=function(){var e,t=n(15)("iframe"),r=i.length;for(t.style.display="none",n(54).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write(" + + + + + + + +
+
+ © Studio 24 +
+
+ + + + \ No newline at end of file diff --git a/web/eleventy-dist/layout-helpers/center/index.html b/web/eleventy-dist/layout-helpers/center/index.html new file mode 100644 index 00000000..e3250cb0 --- /dev/null +++ b/web/eleventy-dist/layout-helpers/center/index.html @@ -0,0 +1,177 @@ + + + + + + + + Center - Amplify + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + \ No newline at end of file diff --git a/web/eleventy-dist/layout-helpers/cluster/index.html b/web/eleventy-dist/layout-helpers/cluster/index.html new file mode 100644 index 00000000..4791a452 --- /dev/null +++ b/web/eleventy-dist/layout-helpers/cluster/index.html @@ -0,0 +1,189 @@ + + + + + + + + Cluster - Amplify + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + \ No newline at end of file diff --git a/web/eleventy-dist/layout-helpers/cover/index.html b/web/eleventy-dist/layout-helpers/cover/index.html new file mode 100644 index 00000000..ff2a1d84 --- /dev/null +++ b/web/eleventy-dist/layout-helpers/cover/index.html @@ -0,0 +1,184 @@ + + + + + + + + Cover - Amplify + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + \ No newline at end of file diff --git a/web/eleventy-dist/layout-helpers/frame/index.html b/web/eleventy-dist/layout-helpers/frame/index.html new file mode 100644 index 00000000..02df6f80 --- /dev/null +++ b/web/eleventy-dist/layout-helpers/frame/index.html @@ -0,0 +1,192 @@ + + + + + + + + Frame - Amplify + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + \ No newline at end of file diff --git a/web/eleventy-dist/layout-helpers/index.html b/web/eleventy-dist/layout-helpers/index.html new file mode 100644 index 00000000..106d722a --- /dev/null +++ b/web/eleventy-dist/layout-helpers/index.html @@ -0,0 +1,175 @@ + + + + + + + + Layout helpers - Amplify + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + \ No newline at end of file diff --git a/web/eleventy-dist/layout-helpers/quote-component/index.html b/web/eleventy-dist/layout-helpers/quote-component/index.html new file mode 100644 index 00000000..67b58d82 --- /dev/null +++ b/web/eleventy-dist/layout-helpers/quote-component/index.html @@ -0,0 +1,238 @@ + + + + + + + + Quote component - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ No newline at end of file diff --git a/web/eleventy-dist/layout-helpers/shelves/index.html b/web/eleventy-dist/layout-helpers/shelves/index.html new file mode 100644 index 00000000..f617bab2 --- /dev/null +++ b/web/eleventy-dist/layout-helpers/shelves/index.html @@ -0,0 +1,284 @@ + + + + + + + + Shelves - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ No newline at end of file diff --git a/web/eleventy-dist/layout-helpers/sidebar/index.html b/web/eleventy-dist/layout-helpers/sidebar/index.html new file mode 100644 index 00000000..14ec1639 --- /dev/null +++ b/web/eleventy-dist/layout-helpers/sidebar/index.html @@ -0,0 +1,186 @@ + + + + + + + + Sidebar - Amplify + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + \ No newline at end of file diff --git a/web/eleventy-dist/layout-helpers/simple-search/index.html b/web/eleventy-dist/layout-helpers/simple-search/index.html new file mode 100644 index 00000000..56f02ecb --- /dev/null +++ b/web/eleventy-dist/layout-helpers/simple-search/index.html @@ -0,0 +1,176 @@ + + + + + + + + Simple search form - Amplify + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + \ No newline at end of file diff --git a/web/eleventy-dist/layout-helpers/sticky-footer/index.html b/web/eleventy-dist/layout-helpers/sticky-footer/index.html new file mode 100644 index 00000000..128699a8 --- /dev/null +++ b/web/eleventy-dist/layout-helpers/sticky-footer/index.html @@ -0,0 +1,230 @@ + + + + + + + + Sticky footer - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ No newline at end of file diff --git a/web/eleventy-dist/layout-helpers/switcher/index.html b/web/eleventy-dist/layout-helpers/switcher/index.html new file mode 100644 index 00000000..e0ea6943 --- /dev/null +++ b/web/eleventy-dist/layout-helpers/switcher/index.html @@ -0,0 +1,188 @@ + + + + + + + + Switcher - Amplify + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + \ No newline at end of file diff --git a/web/eleventy-dist/pages/advanced-components/index.html b/web/eleventy-dist/pages/advanced-components/index.html new file mode 100644 index 00000000..24ddfb3b --- /dev/null +++ b/web/eleventy-dist/pages/advanced-components/index.html @@ -0,0 +1,100 @@ + + + + + + + + Get started - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ No newline at end of file diff --git a/web/eleventy-dist/pages/core-components/index.html b/web/eleventy-dist/pages/core-components/index.html new file mode 100644 index 00000000..24ddfb3b --- /dev/null +++ b/web/eleventy-dist/pages/core-components/index.html @@ -0,0 +1,100 @@ + + + + + + + + Get started - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ No newline at end of file diff --git a/web/eleventy-dist/pages/design-handover/index.html b/web/eleventy-dist/pages/design-handover/index.html new file mode 100644 index 00000000..24ddfb3b --- /dev/null +++ b/web/eleventy-dist/pages/design-handover/index.html @@ -0,0 +1,100 @@ + + + + + + + + Get started - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ No newline at end of file diff --git a/web/eleventy-dist/pages/fundamentals/index.html b/web/eleventy-dist/pages/fundamentals/index.html new file mode 100644 index 00000000..9583c2b4 --- /dev/null +++ b/web/eleventy-dist/pages/fundamentals/index.html @@ -0,0 +1,100 @@ + + + + + + + + Fundamentals - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ No newline at end of file diff --git a/web/eleventy-dist/pages/get-started/browser-support/index.html b/web/eleventy-dist/pages/get-started/browser-support/index.html new file mode 100644 index 00000000..4596d439 --- /dev/null +++ b/web/eleventy-dist/pages/get-started/browser-support/index.html @@ -0,0 +1,104 @@ + + + + + + + + Browser support - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ No newline at end of file diff --git a/web/eleventy-dist/pages/get-started/index.html b/web/eleventy-dist/pages/get-started/index.html new file mode 100644 index 00000000..24ddfb3b --- /dev/null +++ b/web/eleventy-dist/pages/get-started/index.html @@ -0,0 +1,100 @@ + + + + + + + + Get started - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ No newline at end of file diff --git a/web/eleventy-dist/pages/layout-helpers/index.html b/web/eleventy-dist/pages/layout-helpers/index.html new file mode 100644 index 00000000..24ddfb3b --- /dev/null +++ b/web/eleventy-dist/pages/layout-helpers/index.html @@ -0,0 +1,100 @@ + + + + + + + + Get started - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ No newline at end of file diff --git a/web/eleventy-dist/playground/forms/index.html b/web/eleventy-dist/playground/forms/index.html new file mode 100644 index 00000000..200788ef --- /dev/null +++ b/web/eleventy-dist/playground/forms/index.html @@ -0,0 +1,156 @@ + + + + + + + + Forms Playground - Amplify + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + \ No newline at end of file diff --git a/web/eleventy-dist/styles/advanced.css b/web/eleventy-dist/styles/advanced.css new file mode 100644 index 00000000..f513f8a5 --- /dev/null +++ b/web/eleventy-dist/styles/advanced.css @@ -0,0 +1,911 @@ +/*------------------------------------*\ + #Amplify: advanced styles for browsers selected by mustard cut +\*------------------------------------*/ +/*------------------------------------*\ + #Settings +\*------------------------------------*/ +/*------------------------------------*\ + #Breakpoints + + The measurements presented here are for guidance only + and should be updated to reflect the design/content needs. + + 1. Sets a max-width for improved readability +\*------------------------------------*/ +/* 1 */ +/*------------------------------------*\ + #Colors + + Review and edit these default colours, then add further colors + as required for your project. + + The ideal color contrast range for meeting WCAG AAA is 7:1 - 15:1 + + 1. A contrast higher than 15:1 can be triggering, which is why we + avoid using pure white with pure black. +\*------------------------------------*/ +/** +Brand + */ +/** +Neutrals + */ +/* 1 */ +/* 1 */ +/** +Links + */ +/** +Focus + */ +/** +Borders + */ +/** +Contextual colours (meets WCAG AA for regular text against $off-white, +so also safe for borders) + */ +/*------------------------------------*\ + #Typesetting +\*------------------------------------*/ +/** +Use https://www.cssfontstack.com/ and https://meowni.ca/font-style-matcher/ to pick +system fonts that are reasonably close to any web fonts needed for the project. + +This improves performance, avoids Flash Of Invisible Text (FOIT) and minimises +Flash of Unstyled Text (FOUT) - see https://www.filamentgroup.com/lab/font-events.html + +Be sure to include fonts for both Mac OS and Windows. Use quote marks around +fonts with white space in their name. + +When Font Face Observer has detected that the @font-face files are loaded, then we +can safely use the web fonts instead of the system fonts. + */ +/*------------------------------------*\ + #Functions +\*------------------------------------*/ +/*------------------------------------*\ + #CSS unit functions +\*------------------------------------*/ +/** + #em + */ +/** + #rem + */ +/** + #px + */ +/** + #Return a number without a unit + */ +/** + #Remove any unit present to return a unitless number + */ +/*------------------------------------*\ + #Mixins +\*------------------------------------*/ +/*------------------------------------*\ + #Font sizes + + Base sizes use the Major Third scale from https://type-scale.com/ +\*------------------------------------*/ +/*------------------------------------*\ + #Media query +\*------------------------------------*/ +/*------------------------------------*\ + #Stack +\*------------------------------------*/ +/** +This mixin allows us to add vertical spacing between a container's direct children, +much like the 'axiomatic owl' technique but limited to specific use cases. + +By applying Flexbox to the parent container, we can use auto margin on a specific +child element. This way, we can choose to group elements inside the stack to the +top/bottom of the vertical space, which is useful for card-like components. + +Use with a specific measure, or without for the default measure, e.g. + +main { + @include stack(4rem); +} + +article { + @include stack; +} + */ +/*------------------------------------*\ + #Base + + Repeated to allow for extending placeholders +\*------------------------------------*/ +/*------------------------------------*\ + #Hide and show items inclusively + + See https://www.scottohara.me/blog/2017/04/14/inclusively-hidden.html +\*------------------------------------*/ +/* + * Hide from everybody and remove from the document flow, using the hidden + * attribute. + * + * Use if a component should remain hidden regardless of CSS being + * available or not (the style below provides support for legacy browsers). + */ +[hidden] { + display: none !important; +} + +/* + * Hide from everybody and remove from the document flow, using the %hidden + * placeholder (extend the placeholder with Sass to avoid it appearing + * repeatedly in your markup). + * + * Use if a component requires a basic show and hide interaction, and the + * content should become available were CSS to fail. + */ +/* + * Hide from everybody while maintaining layout, using the %invisible + * placeholder (extend the placeholder with Sass to avoid it appearing + * repeatedly in your markup). + * + * Use if a more complex transition is required, like when transitioning an + * off-screen navigation into the viewport. Best paired with other CSS + * properties that negate its position in the DOM e.g. `position: absolute;` + */ +/* + * Hide visually only - remains available to Assistive Technology - + * using the %visually-hidden placeholder (extend the placeholder with + * Sass to avoid it appearing repeatedly in your markup). + */ +.visuallyhidden:not(:focus):not(:active) { + border: 0; + clip: rect(0 0 0 0); + -webkit-clip-path: inset(100%); + clip-path: inset(100%); + height: 1px; + overflow: hidden; + padding: 0; + position: absolute; + white-space: nowrap; + width: 1px; +} + +/* + *The :not portions of the following selector allow a means for any + * focusable element to become visible when focused/active by a user. + */ +br { + margin-top: 0; +} + +/* + * Restore an element that has been visually hidden, using the %visually-hidden + * placeholder (extend the placeholder with Sass to avoid it appearing + * repeatedly in your markup). + */ +/*------------------------------------*\ + #Advanced components + + For JS enhancements +\*------------------------------------*/ +/*------------------------------------*\ + #Cards advanced +\*------------------------------------*/ +.js [data-component=card] { + cursor: pointer; +} +.js [data-component=card]:hover .card__link { + text-decoration: underline; /* 1 */ + -webkit-text-decoration-skip: auto; + text-decoration-skip: auto; + -webkit-text-decoration-skip: ink; + text-decoration-skip-ink: auto; +} + +/*------------------------------------*\ + #Collapsible sections advanced +\*------------------------------------*/ +.js .component--collapsibles__panel { + padding: 0; +} + +.js [data-heading=collapsibles] button { + align-items: flex-start; + flex-direction: column; + padding: 1.5625rem; + width: 100%; +} +.js [data-heading=collapsibles] button .js-collapsible-heading { + font-size: 1.25rem; + line-height: 1.3; + font-weight: 600; + text-align: left; +} +.js [data-heading=collapsibles] button .js-collapsible-toggle { + color: #0d599b; +} +.js [data-heading=collapsibles] button .js-collapsible-label { + font-size: 1rem; + line-height: 1.5; +} +.js [data-heading=collapsibles] button:hover .js-collapsible-heading { + color: #0d599b; +} +.js [data-heading=collapsibles] button:hover .js-collapsible-label { + text-decoration: underline; + -webkit-text-decoration-skip: auto; + text-decoration-skip: auto; + -webkit-text-decoration-skip: ink; + text-decoration-skip-ink: auto; +} +.js [data-heading=collapsibles] button:focus { + background-color: #ffdc00; +} +.js [data-heading=collapsibles] button:focus .js-collapsible-heading, +.js [data-heading=collapsibles] button:focus .js-collapsible-toggle { + color: #000; +} +.js [data-heading=collapsibles] button[aria-expanded=false] .circle-up { + display: none; +} +.js [data-heading=collapsibles] button[aria-expanded=true] .circle-down { + display: none; +} + +.js .component--collapsibles__panel__content { + padding: 0 1.5625rem 1.5625rem; +} +.js .component--collapsibles__panel__content[aria-hidden=true] { + display: none; +} + +/*------------------------------------*\ + #Disclosure widget +\*------------------------------------*/ +.no-js [data-toggle=true] { + display: none; +} +.no-js [data-toggle=true] + * { + display: initial; +} + +[data-toggle=true] svg { + pointer-events: none; +} +[data-toggle=true]:hover { + box-shadow: 0 0 4px 2px rgba(84, 84, 84, 0.25); +} +[data-toggle=true]:focus { + background-color: #ffdc00; + border-color: #000; + box-shadow: none; +} +[data-toggle=true][aria-expanded=false] .expand-less { + display: none; +} +[data-toggle=true][aria-expanded=false] + * { + display: none; +} +[data-toggle=true][aria-expanded=true] .expand-more { + display: none; +} +[data-toggle=true][aria-expanded=true] + * { + display: block; +} + +[data-toggle=true] + * { + margin-top: 1rem; +} + +/*------------------------------------*\ + #Plugins + + Add third-party plugins here. + Add custom styles directly after the original in a separate file +\*------------------------------------*/ +.autocomplete__wrapper { + position: relative; +} + +.autocomplete__hint, +.autocomplete__input { + -webkit-appearance: none; + border: 2px solid #0b0c0c; + border-radius: 0; /* Safari 10 on iOS adds implicit border rounding. */ + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + margin-bottom: 0; /* BUG: Safari 10 on macOS seems to add an implicit margin. */ + width: 100%; +} + +.autocomplete__input { + background-color: transparent; + position: relative; +} + +.autocomplete__hint { + color: #b1b4b6; + position: absolute; +} + +.autocomplete__input--default { + padding: 5px; +} + +.autocomplete__input--focused { + outline: 3px solid #fd0; + outline-offset: 0; + box-shadow: inset 0 0 0 2px; +} + +.autocomplete__input--show-all-values { + padding: 5px 34px 5px 5px; /* Space for arrow. Other padding should match .autocomplete__input--default. */ + cursor: pointer; +} + +.autocomplete__dropdown-arrow-down { + z-index: -1; + display: inline-block; + position: absolute; + right: 8px; + width: 24px; + height: 24px; + top: 10px; +} + +.autocomplete__menu { + background-color: #fff; + border: 2px solid #0B0C0C; + border-top: 0; + color: #0B0C0C; + margin: 0; + max-height: 342px; + overflow-x: hidden; + padding: 0; + width: 100%; + width: calc(100% - 4px); +} + +.autocomplete__menu--visible { + display: block; +} + +.autocomplete__menu--hidden { + display: none; +} + +.autocomplete__menu--overlay { + box-shadow: rgba(0, 0, 0, 0.256863) 0px 2px 6px; + left: 0; + position: absolute; + top: 100%; + z-index: 100; +} + +.autocomplete__menu--inline { + position: relative; +} + +.autocomplete__option { + border-bottom: solid #b1b4b6; + border-width: 1px 0; + cursor: pointer; + display: block; + position: relative; +} + +.autocomplete__option > * { + pointer-events: none; +} + +.autocomplete__option:first-of-type { + border-top-width: 0; +} + +.autocomplete__option:last-of-type { + border-bottom-width: 0; +} + +.autocomplete__option--odd { + background-color: #FAFAFA; +} + +.autocomplete__option--focused, +.autocomplete__option:hover { + background-color: #1d70b8; + border-color: #1d70b8; + color: white; + outline: none; +} + +@media (-ms-high-contrast: active), (forced-colors: active) { + .autocomplete__menu { + border-color: FieldText; + } + .autocomplete__option { + background-color: Field; + color: FieldText; + } + .autocomplete__option--focused, + .autocomplete__option:hover { + forced-color-adjust: none; /* prevent backplate from obscuring text */ + background-color: Highlight; + border-color: Highlight; + color: HighlightText; + /* Prefer SelectedItem / SelectedItemText in browsers that support it */ + background-color: SelectedItem; + border-color: SelectedItem; + color: SelectedItemText; + outline-color: SelectedItemText; + } +} +.autocomplete__option--no-results { + background-color: #FAFAFA; + color: #646b6f; + cursor: not-allowed; +} + +.autocomplete__hint, +.autocomplete__input, +.autocomplete__option { + font-size: 16px; + line-height: 1.25; +} + +.autocomplete__hint, +.autocomplete__option { + padding: 5px; +} + +@media (min-width: 641px) { + .autocomplete__hint, + .autocomplete__input, + .autocomplete__option { + font-size: 19px; + line-height: 1.31579; + } +} +/*------------------------------------*\ + #S24 accessible autocomplete overrides +\*------------------------------------*/ +.autocomplete__hint, +.autocomplete__input { + -webkit-appearance: none; + appearance: none; + border: 2px solid inherit; +} + +.autocomplete__hint { + color: #bdbdbd; +} + +.autocomplete__input--focused { + background-color: #fcfcfc; + outline: 3px solid #ffdc00; + outline-offset: 0; + box-shadow: inset 0 0 0 2px; +} + +[dir=rtl] .autocomplete__input--show-all-values { + padding-left: 34px; + padding-right: 5px; +} + +.autocomplete__dropdown-arrow-down { + pointer-events: none; + z-index: initial; +} + +[dir=rtl] .autocomplete__dropdown-arrow-down { + right: auto; + left: 8px; +} + +.autocomplete__menu { + border: 2px solid inherit; +} + +.autocomplete__option--odd { + background-color: #bdbdbd; +} + +.autocomplete__option--focused, +.autocomplete__option:hover { + background-color: #235bd1; + border-color: #235bd1; +} + +.autocomplete__option--no-results { + background-color: #bdbdbd; + color: #252525; +} + +.autocomplete__hint, +.autocomplete__input, +.autocomplete__option { + font-size: 1rem; + line-height: 1.5; + line-height: 1.25; +} + +@media (min-width: 641px) { + .autocomplete__hint, + .autocomplete__input, + .autocomplete__option { + font-size: 1rem; + line-height: 1.5; + line-height: 1.25; + } +} +@-webkit-keyframes splide-loading { + 0% { + -webkit-transform: rotateZ(0); + transform: rotateZ(0); + } + 100% { + -webkit-transform: rotateZ(360deg); + transform: rotateZ(360deg); + } +} +@keyframes splide-loading { + 0% { + -webkit-transform: rotateZ(0); + transform: rotateZ(0); + } + 100% { + -webkit-transform: rotateZ(360deg); + transform: rotateZ(360deg); + } +} +.splide__track--draggable { + -webkit-touch-callout: none; + -webkit-user-select: none; + user-select: none; +} + +.splide__track--fade > .splide__list { + display: block; +} + +.splide__track--fade > .splide__list > .splide__slide { + left: 0; + opacity: 0; + position: absolute; + top: 0; + z-index: 0; +} + +.splide__track--fade > .splide__list > .splide__slide.is-active { + opacity: 1; + position: relative; + z-index: 1; +} + +.splide--rtl { + direction: rtl; +} + +.splide__track--ttb > .splide__list { + display: block; +} + +.splide__container { + box-sizing: border-box; + position: relative; +} + +.splide__list { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + display: flex; + height: 100%; + margin: 0 !important; + padding: 0 !important; +} + +.splide.is-initialized:not(.is-active) .splide__list { + display: block; +} + +.splide__pagination { + align-items: center; + display: flex; + flex-wrap: wrap; + justify-content: center; + margin: 0; + pointer-events: none; +} + +.splide__pagination li { + display: inline-block; + line-height: 1; + list-style-type: none; + margin: 0; + pointer-events: auto; +} + +.splide__progress__bar { + width: 0; +} + +.splide { + position: relative; + visibility: hidden; +} + +.splide.is-initialized, .splide.is-rendered { + visibility: visible; +} + +.splide__slide { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + box-sizing: border-box; + flex-shrink: 0; + list-style-type: none !important; + margin: 0; + position: relative; +} + +.splide__slide img { + vertical-align: bottom; +} + +.splide__spinner { + -webkit-animation: splide-loading 1s infinite linear; + animation: splide-loading 1s infinite linear; + border: 2px solid #999; + border-left-color: transparent; + border-radius: 50%; + bottom: 0; + contain: strict; + display: inline-block; + height: 20px; + left: 0; + margin: auto; + position: absolute; + right: 0; + top: 0; + width: 20px; +} + +.splide__sr { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} + +.splide__toggle__pause { + display: none; +} + +.splide__toggle.is-active .splide__toggle__play { + display: none; +} + +.splide__toggle.is-active .splide__toggle__pause { + display: inline; +} + +.splide__track { + overflow: hidden; + position: relative; + z-index: 0; +} + +/*------------------------------------*\ + #S24 customisation of Splide carousel +\*------------------------------------*/ +[data-component=carousel] { + margin-bottom: 6rem; +} + +.splide__arrow { + min-width: auto; + padding-left: 0.25rem; + padding-right: 0.25rem; + position: absolute; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + z-index: 1; +} + +.splide__arrow--prev { + left: 0; +} +.splide__arrow--prev svg { + -webkit-transform: scaleX(-1); + transform: scaleX(-1); +} + +.splide__arrow--next { + right: 0; +} + +.splide__arrow svg { + height: 2rem; + width: 2rem; +} + +.splide__pagination { + bottom: -3.125rem; + left: 50%; + position: absolute; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + width: 100%; +} + +.splide__pagination__page { + background-color: transparent; + border-color: transparent; + height: 2.75rem; + min-width: auto; + position: relative; + width: 2.75rem; +} +.splide__pagination__page:hover, .splide__pagination__page:focus { + background-color: transparent; + border-color: transparent; +} +.splide__pagination__page:focus-visible { + background-color: #ffdc00; + background-image: none; + border-color: #000; +} +.splide__pagination__page::after { + background-color: #0d599b; + border-radius: 50%; + content: ""; + height: 0.875rem; + position: absolute; + width: 0.875rem; +} +.splide__pagination__page[aria-selected=true]::after { + background-color: transparent; + border: solid 2px #0d599b; +} + +/** + * The tablist + */ +[role=tablist] { + border-bottom: 1px solid lightgray; + list-style: none; + margin: 0; + padding: 0; +} +[role=tablist] * { + box-sizing: border-box; +} + +/** + * The tablist item + */ +@media (min-width: 30em) { + [role=tablist] li { + display: inline-block; + } +} + +/** + * The tabs + */ +[role=tab] { + border: 1px solid transparent; + border-top-color: lightgray; + display: block; + padding: 0.5em 1em; + text-decoration: none; + /** + * Active tab styling + */ + /** + * Tabs on hover + */ +} +@media (min-width: 30em) { + [role=tab] { + border-top-color: transparent; + border-top-left-radius: 0.5em; + border-top-right-radius: 0.5em; + display: inline-block; + margin-bottom: -1px; + } +} +[role=tab][aria-selected=true] { + background-color: lightgray; +} +@media (min-width: 30em) { + [role=tab][aria-selected=true] { + background-color: transparent; + border: 1px solid lightgray; + border-bottom-color: #ffffff; + } +} +[role=tab]:hover:not([aria-selected=true]) { + background-color: #f7f7f7; +} +@media (min-width: 30em) { + [role=tab]:hover:not([aria-selected=true]) { + border: 1px solid lightgray; + } +} + +/** + * [hidden] fallback for IE10 and lower + */ +[hidden] { + display: none; +} + +/*------------------------------------*\ + #S24 tabby overrides + + 1. The `stack` mixin applies flexbox in the column direction, + so we need to prevent things like buttons and links + from stretching horizontally +\*------------------------------------*/ +.component--tabs [role=tablist] { + border-bottom: solid 1px #bdbdbd; + display: flex; + flex-flow: row nowrap; + max-width: 100%; + overflow-x: auto; + padding: 0 1.5rem; +} +.component--tabs [role=tablist] li { + flex-shrink: 0; + list-style: none; + margin-top: 0; + padding: 0; +} +.component--tabs [role=tablist] li + li { + margin-left: 1.5rem; +} + +[dir=rtl] .component--tabs [role=tablist] li + li { + margin-left: 0; + margin-right: 1.5rem; +} + +.component--tabs a[role=tab] { + background-color: #bdbdbd; + border: 0; + border-radius: 0; + border-bottom: solid 0.1875rem transparent; + color: #252525; + display: block; + margin-bottom: 0; + padding: 0.625em 0.9375em; +} +.component--tabs a[role=tab]:hover { + background-color: #bdbdbd; + border: 0; + border-bottom: solid 0.1875rem #bdbdbd; + color: #252525; +} +.component--tabs a[role=tab]:focus, .component--tabs a[role=tab][aria-selected=true] { + background-color: #bdbdbd; + border-bottom: solid 0.1875rem #235bd1; + outline: none; + text-decoration: none; +} + +.component--tabs [role=tabpanel] { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: flex-start; /* 1 */ + padding: 1.5rem; +} +.component--tabs [role=tabpanel] > * + * { + margin-top: 1em; +} diff --git a/web/eleventy-dist/styles/advanced.min.css b/web/eleventy-dist/styles/advanced.min.css new file mode 100644 index 00000000..c8244b0d --- /dev/null +++ b/web/eleventy-dist/styles/advanced.min.css @@ -0,0 +1 @@ +[hidden]{display:none !important}.visuallyhidden:not(:focus):not(:active){border:0;clip:rect(0 0 0 0);-webkit-clip-path:inset(100%);clip-path:inset(100%);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}br{margin-top:0}.js [data-component=card]{cursor:pointer}.js [data-component=card]:hover .card__link{text-decoration:underline;-webkit-text-decoration-skip:auto;text-decoration-skip:auto;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto}.js .component--collapsibles__panel{padding:0}.js [data-heading=collapsibles] button{align-items:flex-start;flex-direction:column;padding:1.5625rem;width:100%}.js [data-heading=collapsibles] button .js-collapsible-heading{font-size:1.25rem;line-height:1.3;font-weight:600;text-align:left}.js [data-heading=collapsibles] button .js-collapsible-toggle{color:#0d599b}.js [data-heading=collapsibles] button .js-collapsible-label{font-size:1rem;line-height:1.5}.js [data-heading=collapsibles] button:hover .js-collapsible-heading{color:#0d599b}.js [data-heading=collapsibles] button:hover .js-collapsible-label{text-decoration:underline;-webkit-text-decoration-skip:auto;text-decoration-skip:auto;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto}.js [data-heading=collapsibles] button:focus{background-color:#ffdc00}.js [data-heading=collapsibles] button:focus .js-collapsible-heading,.js [data-heading=collapsibles] button:focus .js-collapsible-toggle{color:#000}.js [data-heading=collapsibles] button[aria-expanded=false] .circle-up{display:none}.js [data-heading=collapsibles] button[aria-expanded=true] .circle-down{display:none}.js .component--collapsibles__panel__content{padding:0 1.5625rem 1.5625rem}.js .component--collapsibles__panel__content[aria-hidden=true]{display:none}.no-js [data-toggle=true]{display:none}.no-js [data-toggle=true]+*{display:initial}[data-toggle=true] svg{pointer-events:none}[data-toggle=true]:hover{box-shadow:0 0 4px 2px rgba(84,84,84,.25)}[data-toggle=true]:focus{background-color:#ffdc00;border-color:#000;box-shadow:none}[data-toggle=true][aria-expanded=false] .expand-less{display:none}[data-toggle=true][aria-expanded=false]+*{display:none}[data-toggle=true][aria-expanded=true] .expand-more{display:none}[data-toggle=true][aria-expanded=true]+*{display:block}[data-toggle=true]+*{margin-top:1rem}.autocomplete__wrapper{position:relative}.autocomplete__hint,.autocomplete__input{-webkit-appearance:none;border:2px solid #0b0c0c;border-radius:0;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;margin-bottom:0;width:100%}.autocomplete__input{background-color:transparent;position:relative}.autocomplete__hint{color:#b1b4b6;position:absolute}.autocomplete__input--default{padding:5px}.autocomplete__input--focused{outline:3px solid #fd0;outline-offset:0;box-shadow:inset 0 0 0 2px}.autocomplete__input--show-all-values{padding:5px 34px 5px 5px;cursor:pointer}.autocomplete__dropdown-arrow-down{z-index:-1;display:inline-block;position:absolute;right:8px;width:24px;height:24px;top:10px}.autocomplete__menu{background-color:#fff;border:2px solid #0b0c0c;border-top:0;color:#0b0c0c;margin:0;max-height:342px;overflow-x:hidden;padding:0;width:100%;width:calc(100% - 4px)}.autocomplete__menu--visible{display:block}.autocomplete__menu--hidden{display:none}.autocomplete__menu--overlay{box-shadow:rgba(0, 0, 0, 0.256863) 0px 2px 6px;left:0;position:absolute;top:100%;z-index:100}.autocomplete__menu--inline{position:relative}.autocomplete__option{border-bottom:solid #b1b4b6;border-width:1px 0;cursor:pointer;display:block;position:relative}.autocomplete__option>*{pointer-events:none}.autocomplete__option:first-of-type{border-top-width:0}.autocomplete__option:last-of-type{border-bottom-width:0}.autocomplete__option--odd{background-color:#fafafa}.autocomplete__option--focused,.autocomplete__option:hover{background-color:#1d70b8;border-color:#1d70b8;color:white;outline:none}@media(-ms-high-contrast: active),(forced-colors: active){.autocomplete__menu{border-color:FieldText}.autocomplete__option{background-color:Field;color:FieldText}.autocomplete__option--focused,.autocomplete__option:hover{forced-color-adjust:none;background-color:Highlight;border-color:Highlight;color:HighlightText;background-color:SelectedItem;border-color:SelectedItem;color:SelectedItemText;outline-color:SelectedItemText}}.autocomplete__option--no-results{background-color:#fafafa;color:#646b6f;cursor:not-allowed}.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:16px;line-height:1.25}.autocomplete__hint,.autocomplete__option{padding:5px}@media(min-width: 641px){.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:19px;line-height:1.31579}}.autocomplete__hint,.autocomplete__input{-webkit-appearance:none;appearance:none;border:2px solid inherit}.autocomplete__hint{color:#bdbdbd}.autocomplete__input--focused{background-color:#fcfcfc;outline:3px solid #ffdc00;outline-offset:0;box-shadow:inset 0 0 0 2px}[dir=rtl] .autocomplete__input--show-all-values{padding-left:34px;padding-right:5px}.autocomplete__dropdown-arrow-down{pointer-events:none;z-index:initial}[dir=rtl] .autocomplete__dropdown-arrow-down{right:auto;left:8px}.autocomplete__menu{border:2px solid inherit}.autocomplete__option--odd{background-color:#bdbdbd}.autocomplete__option--focused,.autocomplete__option:hover{background-color:#235bd1;border-color:#235bd1}.autocomplete__option--no-results{background-color:#bdbdbd;color:#252525}.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:1rem;line-height:1.5;line-height:1.25}@media(min-width: 641px){.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:1rem;line-height:1.5;line-height:1.25}}@-webkit-keyframes splide-loading{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}@keyframes splide-loading{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}.splide__track--draggable{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.splide__track--fade>.splide__list{display:block}.splide__track--fade>.splide__list>.splide__slide{left:0;opacity:0;position:absolute;top:0;z-index:0}.splide__track--fade>.splide__list>.splide__slide.is-active{opacity:1;position:relative;z-index:1}.splide--rtl{direction:rtl}.splide__track--ttb>.splide__list{display:block}.splide__container{box-sizing:border-box;position:relative}.splide__list{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:flex;height:100%;margin:0 !important;padding:0 !important}.splide.is-initialized:not(.is-active) .splide__list{display:block}.splide__pagination{align-items:center;display:flex;flex-wrap:wrap;justify-content:center;margin:0;pointer-events:none}.splide__pagination li{display:inline-block;line-height:1;list-style-type:none;margin:0;pointer-events:auto}.splide__progress__bar{width:0}.splide{position:relative;visibility:hidden}.splide.is-initialized,.splide.is-rendered{visibility:visible}.splide__slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;box-sizing:border-box;flex-shrink:0;list-style-type:none !important;margin:0;position:relative}.splide__slide img{vertical-align:bottom}.splide__spinner{-webkit-animation:splide-loading 1s infinite linear;animation:splide-loading 1s infinite linear;border:2px solid #999;border-left-color:rgba(0,0,0,0);border-radius:50%;bottom:0;contain:strict;display:inline-block;height:20px;left:0;margin:auto;position:absolute;right:0;top:0;width:20px}.splide__sr{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.splide__toggle__pause{display:none}.splide__toggle.is-active .splide__toggle__play{display:none}.splide__toggle.is-active .splide__toggle__pause{display:inline}.splide__track{overflow:hidden;position:relative;z-index:0}[data-component=carousel]{margin-bottom:6rem}.splide__arrow{min-width:auto;padding-left:0.25rem;padding-right:0.25rem;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);z-index:1}.splide__arrow--prev{left:0}.splide__arrow--prev svg{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.splide__arrow--next{right:0}.splide__arrow svg{height:2rem;width:2rem}.splide__pagination{bottom:-3.125rem;left:50%;position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:100%}.splide__pagination__page{background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0);height:2.75rem;min-width:auto;position:relative;width:2.75rem}.splide__pagination__page:hover,.splide__pagination__page:focus{background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}.splide__pagination__page:focus-visible{background-color:#ffdc00;background-image:none;border-color:#000}.splide__pagination__page::after{background-color:#0d599b;border-radius:50%;content:"";height:0.875rem;position:absolute;width:0.875rem}.splide__pagination__page[aria-selected=true]::after{background-color:rgba(0,0,0,0);border:solid 2px #0d599b}[role=tablist]{border-bottom:1px solid #d3d3d3;list-style:none;margin:0;padding:0}[role=tablist] *{box-sizing:border-box}@media(min-width: 30em){[role=tablist] li{display:inline-block}}[role=tab]{border:1px solid rgba(0,0,0,0);border-top-color:#d3d3d3;display:block;padding:.5em 1em;text-decoration:none}@media(min-width: 30em){[role=tab]{border-top-color:rgba(0,0,0,0);border-top-left-radius:.5em;border-top-right-radius:.5em;display:inline-block;margin-bottom:-1px}}[role=tab][aria-selected=true]{background-color:#d3d3d3}@media(min-width: 30em){[role=tab][aria-selected=true]{background-color:rgba(0,0,0,0);border:1px solid #d3d3d3;border-bottom-color:#fff}}[role=tab]:hover:not([aria-selected=true]){background-color:#f7f7f7}@media(min-width: 30em){[role=tab]:hover:not([aria-selected=true]){border:1px solid #d3d3d3}}[hidden]{display:none}.component--tabs [role=tablist]{border-bottom:solid 1px #bdbdbd;display:flex;flex-flow:row nowrap;max-width:100%;overflow-x:auto;padding:0 1.5rem}.component--tabs [role=tablist] li{flex-shrink:0;list-style:none;margin-top:0;padding:0}.component--tabs [role=tablist] li+li{margin-left:1.5rem}[dir=rtl] .component--tabs [role=tablist] li+li{margin-left:0;margin-right:1.5rem}.component--tabs a[role=tab]{background-color:#bdbdbd;border:0;border-radius:0;border-bottom:solid 0.1875rem rgba(0,0,0,0);color:#252525;display:block;margin-bottom:0;padding:0.625em 0.9375em}.component--tabs a[role=tab]:hover{background-color:#bdbdbd;border:0;border-bottom:solid 0.1875rem #bdbdbd;color:#252525}.component--tabs a[role=tab]:focus,.component--tabs a[role=tab][aria-selected=true]{background-color:#bdbdbd;border-bottom:solid 0.1875rem #235bd1;outline:none;text-decoration:none}.component--tabs [role=tabpanel]{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;padding:1.5rem}.component--tabs [role=tabpanel]>*+*{margin-top:1em} diff --git a/web/eleventy-dist/styles/core.css b/web/eleventy-dist/styles/core.css new file mode 100644 index 00000000..f9af41cf --- /dev/null +++ b/web/eleventy-dist/styles/core.css @@ -0,0 +1,3374 @@ +/*------------------------------------*\ + #Amplify: core styles for all browsers +\*------------------------------------*/ +/*------------------------------------*\ + #Settings +\*------------------------------------*/ +/*------------------------------------*\ + #Breakpoints + + The measurements presented here are for guidance only + and should be updated to reflect the design/content needs. + + 1. Sets a max-width for improved readability +\*------------------------------------*/ +/* 1 */ +/*------------------------------------*\ + #Colors + + Review and edit these default colours, then add further colors + as required for your project. + + The ideal color contrast range for meeting WCAG AAA is 7:1 - 15:1 + + 1. A contrast higher than 15:1 can be triggering, which is why we + avoid using pure white with pure black. +\*------------------------------------*/ +/** +Brand + */ +/** +Neutrals + */ +/* 1 */ +/* 1 */ +/** +Links + */ +/** +Focus + */ +/** +Borders + */ +/** +Contextual colours (meets WCAG AA for regular text against $off-white, +so also safe for borders) + */ +/*------------------------------------*\ + #Fonts +\*------------------------------------*/ +/* nunito-regular - latin */ +@font-face { + font-display: fallback; + font-family: "Nunito"; + font-style: normal; + font-weight: 400; + src: local(""), url("../fonts/nunito-v20-latin-regular.woff2") format("woff2"), url("../fonts/nunito-v20-latin-regular.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} +/* nunito-700 - latin */ +@font-face { + font-display: fallback; + font-family: "Nunito"; + font-style: normal; + font-weight: 700; + src: local(""), url("../fonts/nunito-v20-latin-700.woff2") format("woff2"), url("../fonts/nunito-v20-latin-700.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} +/* nunito-italic - latin */ +@font-face { + font-display: fallback; + font-family: "Nunito"; + font-style: italic; + font-weight: 400; + src: local(""), url("../fonts/nunito-v20-latin-italic.woff2") format("woff2"), url("../fonts/nunito-v20-latin-italic.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} +/* nunito-700italic - latin */ +@font-face { + font-display: fallback; + font-family: "Nunito"; + font-style: italic; + font-weight: 700; + src: local(""), url("../fonts/nunito-v20-latin-700italic.woff2") format("woff2"), url("../fonts/nunito-v20-latin-700italic.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} +/*------------------------------------*\ + #Typesetting +\*------------------------------------*/ +/** +Use https://www.cssfontstack.com/ and https://meowni.ca/font-style-matcher/ to pick +system fonts that are reasonably close to any web fonts needed for the project. + +This improves performance, avoids Flash Of Invisible Text (FOIT) and minimises +Flash of Unstyled Text (FOUT) - see https://www.filamentgroup.com/lab/font-events.html + +Be sure to include fonts for both Mac OS and Windows. Use quote marks around +fonts with white space in their name. + +When Font Face Observer has detected that the @font-face files are loaded, then we +can safely use the web fonts instead of the system fonts. + */ +/*------------------------------------*\ + #Functions +\*------------------------------------*/ +/*------------------------------------*\ + #CSS unit functions +\*------------------------------------*/ +/** + #em + */ +/** + #rem + */ +/** + #px + */ +/** + #Return a number without a unit + */ +/** + #Remove any unit present to return a unitless number + */ +/*------------------------------------*\ + #Mixins +\*------------------------------------*/ +/*------------------------------------*\ + #Font sizes + + Base sizes use the Major Third scale from https://type-scale.com/ +\*------------------------------------*/ +/*------------------------------------*\ + #Media query +\*------------------------------------*/ +/*------------------------------------*\ + #Stack +\*------------------------------------*/ +/** +This mixin allows us to add vertical spacing between a container's direct children, +much like the 'axiomatic owl' technique but limited to specific use cases. + +By applying Flexbox to the parent container, we can use auto margin on a specific +child element. This way, we can choose to group elements inside the stack to the +top/bottom of the vertical space, which is useful for card-like components. + +Use with a specific measure, or without for the default measure, e.g. + +main { + @include stack(4rem); +} + +article { + @include stack; +} + */ +/*------------------------------------*\ + #Base + + Normalize comes first for the cascade +\*------------------------------------*/ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ +/* Document + ========================================================================== */ +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ +html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ +/** + * Remove the margin in all browsers. + */ +body { + margin: 0; +} + +/** + * Render the `main` element consistently in IE. + */ +main { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ +/** + * Remove the gray background on active links in IE 10. + */ +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; /* 2 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ +/** + * Remove the border on images inside links in IE 10. + */ +img { + border-style: none; +} + +/* Forms + ========================================================================== */ +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ +button, +input { /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ +button, +select { /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ +button, +[type=button], +[type=reset], +[type=submit] { + -webkit-appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ +button::-moz-focus-inner, +[type=button]::-moz-focus-inner, +[type=reset]::-moz-focus-inner, +[type=submit]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ +button:-moz-focusring, +[type=button]:-moz-focusring, +[type=reset]:-moz-focusring, +[type=submit]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ +[type=checkbox], +[type=radio] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ +[type=number]::-webkit-inner-spin-button, +[type=number]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ +[type=search] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ +[type=search]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ +/** + * Add the correct display in IE 10+. + */ +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ +[hidden] { + display: none; +} + +/*------------------------------------*\ + #Box sizing +\*------------------------------------*/ +*, +*::before, +*::after { + box-sizing: border-box; + font-family: inherit; + margin: 0; + overflow-wrap: break-word; + padding: 0; + word-wrap: break-word; +} + +/*------------------------------------*\ + #Body + + 1. Needed for sticky footer + 2. Because autoprefixer does not cover IE grid +\*------------------------------------*/ +html { + height: 100%; +} + +/** + Typographical styles for fonts are in 30-base/_typography.scss + */ +body { + background-color: #fcfcfc; + color: #252525; + display: grid; /* 1 */ + display: -ms-grid; /* 2 */ + grid-template-columns: 100%; + -ms-grid-columns: 100%; /* 2 */ + grid-template-rows: 1fr auto; /* 1 */ + -ms-grid-rows: 1fr auto; /* 2 */ + min-height: 100%; + overflow-x: hidden; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; +} + +/*------------------------------------*\ + #Typography + + 1. Equivalent to 16px browser default. + 2. This generous line-height allows space for borders on the bottom of + links but will need to be set explicitly on many elements. +\*------------------------------------*/ +body { + font-family: "Arial MT Rounded Bold", Arial, sans-serif; + font-size: 1rem; /* 1 */ + font-style: normal; + font-weight: 400; + line-height: 1.7; /* 2 */ +} + +p + * { + margin-top: 1rem; +} + +h1, h2, h3, h4, h5, h6 { + font-weight: 600; + margin: 0; +} + +h1, +.text-48 { + font-size: 3rem; + line-height: 1.3; +} +@media screen and (min-width: 64em) { + h1, + .text-48 { + font-size: 4rem; + } +} +h1 + *, +.text-48 + * { + margin-top: 1.5rem; +} + +h2, +.text-39 { + font-size: 2.4375rem; + line-height: 1.3; +} +h2 + *, +.text-39 + * { + margin-top: 0.5rem; +} + +h3, +.text-31 { + font-size: 1.9375rem; + line-height: 1.3; +} +h3 + *, +.text-31 + * { + margin-top: 0.5rem; +} + +h4, +.text-25 { + font-size: 1.5625rem; + line-height: 1.3; +} +h4 + *, +.text-25 + * { + margin-top: 0.5rem; +} + +h5, +.text-20 { + font-size: 1.25rem; + line-height: 1.3; +} +h5 + *, +.text-20 + * { + margin-top: 0.25rem; +} + +h6, +.text-16 { + font-size: 1rem; + line-height: 1.5; +} +h6 + *, +.text-16 + * { + margin-top: 0.25rem; +} + +.text-14 { + font-size: 0.875rem; + line-height: 1.5; + margin-top: 1rem; +} + +* + h2, +.text-39, +* + h3, +.text-31, +* + h4, +.text-25, +* + h5, +.text-20, +* + h6, +.text-16 { + margin-top: 1.5rem; +} + +.lead { + font-size: 1.9375rem; + line-height: 1.3; +} +.lead + * { + margin-top: 3rem; +} + +/** +When Font Face Observer has detected that the @font-face files are loaded, then we +can safely use the web fonts instead of the system fonts. + */ +.fonts-loaded body { + font-family: "Nunito", "Arial MT Rounded Bold", Arial, sans-serif; +} + +/*------------------------------------*\ + #Hide and show items inclusively + + See https://www.scottohara.me/blog/2017/04/14/inclusively-hidden.html +\*------------------------------------*/ +/* + * Hide from everybody and remove from the document flow, using the hidden + * attribute. + * + * Use if a component should remain hidden regardless of CSS being + * available or not (the style below provides support for legacy browsers). + */ +[hidden] { + display: none !important; +} + +/* + * Hide from everybody and remove from the document flow, using the %hidden + * placeholder (extend the placeholder with Sass to avoid it appearing + * repeatedly in your markup). + * + * Use if a component requires a basic show and hide interaction, and the + * content should become available were CSS to fail. + */ +/* + * Hide from everybody while maintaining layout, using the %invisible + * placeholder (extend the placeholder with Sass to avoid it appearing + * repeatedly in your markup). + * + * Use if a more complex transition is required, like when transitioning an + * off-screen navigation into the viewport. Best paired with other CSS + * properties that negate its position in the DOM e.g. `position: absolute;` + */ +/* + * Hide visually only - remains available to Assistive Technology - + * using the %visually-hidden placeholder (extend the placeholder with + * Sass to avoid it appearing repeatedly in your markup). + */ +.visuallyhidden:not(:focus):not(:active), .skip-link:not(:focus):not(:active) { + border: 0; + clip: rect(0 0 0 0); + -webkit-clip-path: inset(100%); + clip-path: inset(100%); + height: 1px; + overflow: hidden; + padding: 0; + position: absolute; + white-space: nowrap; + width: 1px; +} + +/* + *The :not portions of the following selector allow a means for any + * focusable element to become visible when focused/active by a user. + */ +br { + margin-top: 0; +} + +/* + * Restore an element that has been visually hidden, using the %visually-hidden + * placeholder (extend the placeholder with Sass to avoid it appearing + * repeatedly in your markup). + */ +/*------------------------------------*\ + #Flow elements +\*------------------------------------*/ +abbr { + -webkit-text-decoration-skip: auto; + text-decoration-skip: auto; + -webkit-text-decoration-skip: ink; + text-decoration-skip-ink: auto; +} + +dfn { + font-style: normal; + font-weight: 600; +} + +b, +strong, +.bold { + font-weight: 600; +} + +em, +i { + font-style: italic; +} + +small, +.small, +.small-caps { + font-size: 0.875rem; + line-height: 1.5; +} + +.small-caps { + text-shadow: 0 0 0 #252525; + text-transform: uppercase; +} + +hr, +pre { + margin-bottom: 1rem; + margin-top: 1rem; +} + +code, +kbd, +samp, +pre { + font-family: Monaco, "Lucida Console", "Courier New", monospace; + -webkit-hyphens: none; + hyphens: none; + orphans: 3; + page-break-before: avoid; + text-transform: none; + widows: 3; +} + +code, +kbd, +samp { + font-size: 0.9em; +} + +samp kbd { + font-size: 1em; +} + +code, +kbd { + background-color: #252525; + border-radius: 0.25rem; + color: #fcfcfc; + padding: 0.125rem 0.25rem; +} + +/*------------------------------------*\ + #Buttons and links + + 1. Don't rely on colour alone for styling links - see + https://www.w3.org/WAI/WCAG21/Understanding/use-of-color.html + + 2. Remove outline on focused links when they're also active/hovered. + + 3. Remove text underline from links styled as buttons. + + 4. Prevent `.button` going full-width if a child of a flex column. + + 5. Meet WCAG AAA target size requirements - see + https://www.w3.org/WAI/WCAG21/Understanding/target-size.html +\*------------------------------------*/ +a:not([class]), +a.with-icon--before, +a.with-icon--after { + border: none; + color: #0d599b; + cursor: pointer; + text-decoration: underline; /* 1 */ + -webkit-text-decoration-skip: auto; + text-decoration-skip: auto; + -webkit-text-decoration-skip: ink; + text-decoration-skip-ink: auto; +} +a:not([class]):visited, +a.with-icon--before:visited, +a.with-icon--after:visited { + color: #920ba6; +} +a:not([class]):hover, +a.with-icon--before:hover, +a.with-icon--after:hover { + color: #001f3f; + outline-width: 0; /* 2 */ +} +a:not([class]):active, +a.with-icon--before:active, +a.with-icon--after:active { + color: #252525; + outline-width: 0; /* 2 */ +} +a:not([class]):focus, +a.with-icon--before:focus, +a.with-icon--after:focus { + background-color: #ffdc00; + background-image: linear-gradient(to top, #000 3px, #ffdc00 3px, #ffdc00); + color: #000; + text-decoration: none; +} + +.button { + text-decoration: none; /* 3 */ +} + +button, +.button, +input[type=submit].button { + align-items: center; + align-self: start; /* 4 */ + background-color: #0d599b; + border: solid 2px #0d599b; + border-radius: 0.375rem; + color: #fcfcfc; + display: inline-flex; + justify-content: center; + min-width: 10ch; + min-height: 2.75rem; /* 5 */ + padding: 0.25em 0.75em; +} +button:hover, +.button:hover, +input[type=submit].button:hover { + background-color: #001f3f; + border-color: #001f3f; + color: #fcfcfc; +} +button:active, button:focus, +.button:active, +.button:focus, +input[type=submit].button:active, +input[type=submit].button:focus { + color: #000; + background-color: #ffdc00; + background-image: none; + border-color: #000; +} + +.button--wide.button--wide { + width: 100%; +} + +.button--alt.button--alt { + background-color: transparent; + color: #0d599b; +} +.button--alt.button--alt:hover { + background-color: #001f3f; + color: #fcfcfc; +} +.button--alt.button--alt:active, .button--alt.button--alt:focus { + background-color: #ffdc00; + color: #000; + outline: 2px solid #000; + outline-offset: -3px; +} + +.button--ghost.button--ghost { + background-color: transparent; + border-color: transparent; + color: #000; + min-width: 2.75rem; /* 5 */ + padding: 0; +} +.button--ghost.button--ghost:hover { + background-color: transparent; + border-color: transparent; +} +.button--ghost.button--ghost:active, .button--ghost.button--ghost:focus { + color: #000; + background-color: #ffdc00; + background-image: none; + border-color: #000; +} + +button[disabled], +.button[disabled], +.button.js-disabled { + background-color: #bdbdbd; + border-color: #bdbdbd; + box-shadow: none; + color: #303030; + cursor: not-allowed; +} +button[disabled]:hover, button[disabled]:focus, button[disabled]:active, +.button[disabled]:hover, +.button[disabled]:focus, +.button[disabled]:active, +.button.js-disabled:hover, +.button.js-disabled:focus, +.button.js-disabled:active { + background-color: #bdbdbd; + color: #303030; + outline: 0; +} + +/*------------------------------------*\ + #Skip link +\*------------------------------------*/ +.skip-link { + background-color: #ffdc00; + border: solid 3px #000; + color: #000; + padding: 0.625em 0.9375em; + text-decoration: none; +} +.skip-link:active, .skip-link:focus { + left: 0; + position: absolute; + top: 0; + z-index: 999; +} +.skip-link:active span, .skip-link:focus span { + box-shadow: 0 -1px 0 0 inset; +} + +.skip-link [dir=rtl]:active, .skip-link [dir=rtl]:focus { + left: auto; + right: 0; +} + +/*------------------------------------*\ + #Focus +\*------------------------------------*/ +:focus { + /** + Ideally we would specify the background-color here to cover all circumstances. + Unfortunately, this does not work at all well for Internet Explorer, so we can't. + + High contrast themes tend to eliminate background-color. If no border is set, we + need to apply a transparent outline to maintain the button shape. The negative + outline-offset moves the outline inside the perimeter to behaves like a border. + */ + outline: 2px solid transparent; + outline-offset: -2px; +} + +/** +Where focus is moved to the target via JavaScript, it +is acceptable not to show a focus outline. + */ +main:focus, +#main:focus, +[tabindex="-1"]:focus { + outline: none; +} + +/*------------------------------------*\ + #Details and summary elements +\*------------------------------------*/ +details { + margin-bottom: 1rem; + margin-top: 1rem; +} + +summary { + color: #0d599b; + cursor: pointer; + display: inline-block; + padding-left: 1.5625rem; + position: relative; +} +summary::before { + border-color: transparent; + border-left-color: inherit; + border-style: solid; + border-width: 7px 0 7px 12.124px; + bottom: 0; + -webkit-clip-path: polygon(0% 0%, 100% 50%, 0% 100%); + clip-path: polygon(0% 0%, 100% 50%, 0% 100%); + content: ""; + display: block; + height: 0; + left: 0; + margin: auto; + position: absolute; + top: -0.0625rem; + width: 0; +} +summary::-webkit-details-marker { + display: none; +} +summary:hover { + color: #001f3f; +} +summary span { + display: inline-block; + padding-bottom: 0.625rem; + padding-top: 0.625rem; + text-decoration: underline; + -webkit-text-decoration-skip: auto; + text-decoration-skip: auto; + -webkit-text-decoration-skip: ink; + text-decoration-skip-ink: auto; +} +summary:focus { + background-color: #ffdc00; + background-image: linear-gradient(to top, #000 3px, #ffdc00 3px, #ffdc00); + color: #000; +} +summary:focus span { + text-decoration: none; +} + +details[open] > summary { + margin-bottom: 1rem; +} + +details[open] > summary::before { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); +} + +[dir=rtl] summary { + padding-left: 0; + padding-right: 1.5625rem; +} +[dir=rtl] summary::before { + left: auto; + right: 0; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); +} + +/*------------------------------------*\ + #Icons +\*------------------------------------*/ +/** +Icons are sized relative to font size, thanks to the em unit. + */ +.icon { + height: 0.75em; + width: 0.75em; +} + +.icon--24 { + height: 1.5rem; + width: 1.5rem; +} + +/** +Use the `with-icon--before` or `with-icon--after` class +on the icon's parent if there is a need to specify the spacing +between text and icon. Pay attention to whether the icon comes +before the text or after. + +2. Logical property creates spacing irrespective of text direction + */ +.with-icon--before, +.with-icon--after { + align-items: center; + display: inline-flex; +} +.with-icon--before .icon, +.with-icon--after .icon { + flex: 0 0 auto; +} + +.with-icon--before .icon { + margin-right: 0.625rem; +} +@supports ((-webkit-margin-end: 1em) or (margin-inline-end: 1em)) { + .with-icon--before .icon { + margin-right: 0; + -webkit-margin-end: 0.625rem; + margin-inline-end: 0.625rem; /* 2 */ + } +} + +.with-icon--after .icon { + margin-left: 0.625rem; +} +@supports ((-webkit-margin-start: 1em) or (margin-inline-start: 1em)) { + .with-icon--after .icon { + margin-left: 0; + -webkit-margin-start: 0.625rem; + margin-inline-start: 0.625rem; /* 2 */ + } +} + +[dir=rtl] .with-icon--before .icon { + margin-left: 0.625rem; + margin-right: 0; +} +@supports ((-webkit-margin-start: 1em) or (margin-inline-start: 1em)) { + [dir=rtl] .with-icon--before .icon { + margin-left: 0; + -webkit-margin-end: 0.625rem; + margin-inline-end: 0.625rem; /* 2 */ + } +} +[dir=rtl] .with-icon--after .icon { + margin-left: 0; + margin-right: 0.625rem; +} +@supports ((-webkit-margin-start: 1em) or (margin-inline-start: 1em)) { + [dir=rtl] .with-icon--after .icon { + margin-right: 0; + -webkit-margin-start: 0.625rem; + margin-inline-start: 0.625rem; /* 2 */ + } +} + +/*------------------------------------*\ + #Images +\*------------------------------------*/ +img { + display: block; + max-width: 100%; +} + +svg { + fill: currentColor; + height: auto; + width: 100%; +} + +/*------------------------------------*\ + #Lists +\*------------------------------------*/ +ul, +ol { + margin-bottom: 1rem; + margin-top: 1rem; + padding-left: 2rem; +} +ul li, +ol li { + padding-left: 0.25rem; +} +ul > * + *, +ul li ul, +ul li ol, +ol > * + *, +ol li ul, +ol li ol { + margin-top: 0.75rem; +} + +[dir=rtl] ul, +[dir=rtl] ol { + padding-left: 0; + padding-right: 2rem; +} + +ol ::marker { + content: counters(list-item, ".") ". "; +} + +/** +List without bullets, numbers or indentation. Bear in mind that this +removes list semantics in some WebKit browsers. If it's important that +the number of items in a list is announced, add role="list" to the
    + */ +.clean-list { + list-style: none; + padding: 0; +} + +/** +Description lists / Definition lists + */ +dl { + margin-bottom: 1rem; + margin-top: 1rem; +} +dl dt { + font-weight: bold; +} +dl dd + dt { + margin-top: 0.5rem; +} +dl dt + dd, +dl dd + dd { + margin-top: 0.25rem; +} + +@supports (grid-row-start: auto) { + dl.grid { + -webkit-column-gap: 1rem; + column-gap: 1rem; + display: grid; + display: -ms-grid; + grid-template-columns: -webkit-max-content; + grid-template-columns: max-content; + -ms-grid-columns: max-content; + grid-template-rows: 1fr; + -ms-grid-rows: 1fr; + row-gap: 1rem; + } + dl.grid dd + dt, + dl.grid dt + dd, + dl.grid dd + dd { + margin-top: 0; + } + dl.grid dt { + grid-column-start: 1; + -ms-grid-column: 1; + grid-column-end: 2; + -ms-grid-column-span: 1; + } + dl.grid dd { + grid-column-start: 2; + -ms-grid-column: 2; + grid-column-end: 3; + -ms-grid-column-span: 1; + } +} + +/*------------------------------------*\ + #Quotes +\*------------------------------------*/ +blockquote { + margin: 1rem 0; + padding: 0 2.5rem; + font-size: 1.25rem; + line-height: 1.3; + display: flex; + flex-direction: column; + justify-content: flex-start; +} +blockquote > * + * { + margin-top: 1rem; +} +blockquote > * { + font-weight: bold; +} +blockquote cite { + font-size: 1rem; + font-style: normal; + font-weight: normal; +} + +/*------------------------------------*\ + #Tables + + 1. Logical property allows text-direction to change with 'dir' +\*------------------------------------*/ +table { + border: 1px solid #bdbdbd; + border-collapse: collapse; + margin-bottom: 1rem; + margin-top: 1rem; + width: 100%; +} + +tr:nth-child(even) { + background-color: rgba(206, 205, 205, 0.5); +} + +th, +td, +table caption { + padding: 0.75rem; + text-align: left; + text-align: start; /* 1 */ +} + +[dir=rtl] th, +[dir=rtl] td, +[dir=rtl] table caption { + text-align: right; + text-align: start; /* 1 */ +} + +th, +td { + vertical-align: text-top; +} + +th { + vertical-align: bottom; +} +th[scope=col] { + background-color: #252525; + color: #fcfcfc; +} + +td { + vertical-align: text-top; +} + +/** +Responsive tables: +https://adrianroselli.com/2020/11/under-engineered-responsive-tables.html + */ +@media screen { + [data-component=table-wrap] { + border: 1px solid #bdbdbd; + margin-bottom: 1rem; + margin-top: 1rem; + max-width: 100% !important; + } + [data-component=table-wrap][role][aria-labelledby][tabindex] { + overflow: auto; + } + [data-component=table-wrap] table { + border: 0; + margin-bottom: 0; + margin-top: 0; + } + [data-component=table-wrap]:focus { + border-color: #000; + box-shadow: inset 0 0 0 4px; + outline: 3px solid #ffdc00; + } +} +/*------------------------------------*\ + #Animation +\*------------------------------------*/ +/* + * Respect the choices of users who do not want animations. + */ +@media screen and (prefers-reduced-motion: reduce), (update: slow) { + *, + ::before, + ::after { + -webkit-animation-delay: -1ms !important; + animation-delay: -1ms !important; + -webkit-animation-duration: 1ms !important; + animation-duration: 1ms !important; + -webkit-animation-iteration-count: 1 !important; + animation-iteration-count: 1 !important; + background-attachment: initial !important; + scroll-behavior: auto !important; + transition-duration: 0.001ms !important; + transition-delay: 0s !important; + } +} +/*------------------------------------*\ + #Forms +\*------------------------------------*/ +/*------------------------------------*\ + #Forms +\*------------------------------------*/ +/** +Start of resets for the fieldset element +https://thatemil.com/blog/2015/01/03/reset-your-fieldset/ + */ +fieldset { + border: 0; + margin: 0; + min-width: 0; + padding: 0.01em 0 0 0; +} + +body:not(:-moz-handler-blocked) fieldset { + display: table-cell; +} + +/** +End of resets for the fieldset element + */ +form > * + *, +.field-group > * + * { + margin-top: 1.75rem; +} + +.field-group + .field-group { + margin-top: 2.5rem; +} + +.field-group__heading { + font-size: 1.25rem; + line-height: 1.3; + font-weight: bold; +} + +/** +Group inputs to line up side-by-side + */ +.input-group { + display: flex; + align-items: center; +} + +.input-group > * + * { + margin-left: 1.875rem; +} + +[dir=rtl] .input-group > * + * { + margin-left: 0; + margin-right: 1.875rem; +} + +.field { + max-width: 41.25rem; +} + +label, +.field-label, +.field-hint, +.field-error-msg, +.faux-label { + display: block; +} + +.field-label, +.faux-label { + margin-bottom: 0.25rem; +} + +.field-label, +.group-legend { + font-weight: bold; +} +.field-label + .field-hint, +.group-legend + .field-hint { + margin-top: 0.25rem; +} + +.field-hint { + font-size: 0.875rem; + line-height: 1.5; + color: #545454; + margin-bottom: 0.25rem; + max-width: 41.25rem; +} + +.required { + color: #545454; + font-weight: normal; +} + +textarea, +[type=date], +[type=email], +[type=file], +[type=number], +[type=password], +[type=search], +[type=tel], +[type=text], +[type=time], +[type=url] { + -webkit-appearance: none; + appearance: none; + background-color: #fcfcfc; + border: 2px solid #545454; + border-radius: 0; + line-height: 1.25; + padding: 0.3125rem; + width: 100%; +} +textarea:focus, +[type=date]:focus, +[type=email]:focus, +[type=file]:focus, +[type=number]:focus, +[type=password]:focus, +[type=search]:focus, +[type=tel]:focus, +[type=text]:focus, +[type=time]:focus, +[type=url]:focus { + box-shadow: inset 0 0 0 2px; + outline: solid 3px #ffdc00; + outline-offset: 0; +} + +[type=date], +[type=email], +[type=number], +[type=password], +[type=search], +[type=tel], +[type=text], +[type=time], +[type=url] { + height: 2.75rem; +} + +[type=file] { + border-color: transparent; +} +[type=file]:focus { + border-color: currentColor; + box-shadow: inset 0 0 0 4px; + margin-left: -0.3125rem; + margin-right: -0.3125rem; + outline: 3px solid #ffdc00; + padding-left: 0.3125rem; + padding-right: 0.3125rem; +} + +/** +Search + */ +[type=search]::-webkit-search-decoration, +[type=search]::-webkit-search-cancel-button { + -webkit-appearance: none; + appearance: none; +} + +/** +Textarea + */ +textarea { + height: 10em; + resize: vertical; +} + +/** +Fixed input widths + */ +.input-width-30 { + max-width: 59ex; +} + +.input-width-20 { + max-width: 41ex; +} + +.input-width-10 { + max-width: 23ex; +} + +.input-width-5 { + max-width: 10.8ex; +} + +.input-width-4 { + max-width: 9ex; +} + +.input-width-3 { + max-width: 7.2ex; +} + +.input-width-2 { + max-width: 5.4ex; +} + +/** +Error styles + */ +[data-component=error-summary] li a { + color: #b83123; + display: inline-block; + font-weight: bold; + padding-bottom: 0.625rem; + padding-top: 0.625rem; +} +[data-component=error-summary] li a:hover, [data-component=error-summary] li a:visited { + color: #b83123; +} +[data-component=error-summary] li a:focus { + color: #252525; +} + +.field--error { + border-left: solid 0.3125rem #b83123; + padding-left: 0.9375rem; +} +.field--error input:not([type=file]), +.field--error textarea:not(:focus) { + border-color: #b83123; +} +.field--error input:focus, +.field--error textarea:focus { + border-color: inherit; +} + +[dir=rtl] .field--error { + border-left: none; + border-right: solid 0.3125rem #b83123; + padding-left: 0; + padding-right: 0.9375rem; +} + +.field-error-msg { + color: #b83123; + font-weight: bold; + margin-top: 0.9375rem; +} + +/*------------------------------------*\ + #Forms - checkbox and radio inputs +\*------------------------------------*/ +.radio-item, +.checkbox-item { + clear: left; + float: left; + margin-top: 0.25rem; + padding-left: 2.125rem; + position: relative; +} +.radio-item::after, +.checkbox-item::after { + clear: both; + content: ""; + display: block; +} + +[dir=rtl] .radio-item, +[dir=rtl] .checkbox-item { + clear: right; + float: right; + padding-left: 0; + padding-right: 2.125rem; +} + +.radio-item input, +.checkbox-item input { + cursor: pointer; + height: 2.75rem; + left: -0.625rem; + margin: 0; + opacity: 0; + position: absolute; + top: -0.125rem; + width: 2.75rem; + z-index: 1; +} + +[dir=rtl] .radio-item input, +[dir=rtl] .checkbox-item input { + left: auto; + right: -0.625rem; +} + +.radio-item label, +.checkbox-item label { + cursor: pointer; + display: inline-block; + margin-bottom: 0; + margin-top: -0.125rem; + padding: 0.6875rem 0.9375rem 0.625rem 0.0625rem; + touch-action: manipulation; +} +.radio-item label::before, .radio-item label::after, +.checkbox-item label::before, +.checkbox-item label::after { + content: ""; + position: absolute; +} +.radio-item label::before, +.checkbox-item label::before { + background: transparent; + border: 2px solid; + height: 1.5rem; + left: 0; + top: 0.5rem; + width: 1.5rem; +} + +[dir=rtl] .radio-item label, +[dir=rtl] .checkbox-item label { + padding: 0.6875rem 0.0625rem 0.625rem 0.9375rem; +} +[dir=rtl] .radio-item label::before, +[dir=rtl] .checkbox-item label::before { + left: auto; + right: 0; +} + +.radio-item label::before, .radio-item label::after { + border-radius: 50%; +} +.radio-item label::after { + background: currentColor; + border: 5px solid; + height: 0; + left: 0.4375rem; + opacity: 0; + top: 0.9375rem; + width: 0; +} + +[dir=rtl] .radio-item label::after { + left: auto; + right: 0.4375rem; +} + +.checkbox-item label::after { + background: transparent; + border: solid; + border-top-color: transparent; + border-width: 0 0 3px 3px; + height: 0.40625rem; + left: 0.375rem; + opacity: 0; + top: 0.9375rem; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + width: 0.75rem; +} + +[dir=rtl] .checkbox-item label::after { + left: auto; + right: 0.375rem; +} + +.checkbox-group--cluster .checkbox-item { + clear: none; + margin-right: 0.75rem; +} + +.radio-item:hover input:not(:disabled) + label::before, +.checkbox-item:hover input:not(:disabled) + label::before { + box-shadow: 0 0 0 4px #235bd1; +} + +.radio-item input:focus + label::before, +.checkbox-item input:focus + label::before { + border-width: 4px; + box-shadow: 0 0 0 4px #ffdc00; +} + +.radio-item:hover input:focus + label::before, +.checkbox-item:hover input:focus + label::before { + box-shadow: 0 0 0 4px #ffdc00; +} + +.radio-item input:checked + label::after, +.checkbox-item input:checked + label::after { + opacity: 1; +} + +[type=radio]:disabled, +[type=radio]:disabled + label, +[type=checkbox]:disabled, +[type=checkbox]:disabled + label { + cursor: default; +} + +[type=radio]:disabled + label, +[type=checkbox]:disabled + label { + opacity: 0.5; +} + +/*------------------------------------*\ + #Memorable dates (e.g. date of birth) +\*------------------------------------*/ +.memorable-date { + display: inline-block; + margin-top: 0; +} + +.memorable-date + .memorable-date { + margin-left: 1rem; +} + +[dir=rtl] .memorable-date + .memorable-date { + margin-left: auto; + margin-right: 1rem; +} + +/*------------------------------------*\ + #Forms - segmented options + + Can use either radio or checkbox inputs. + The purpose is to show all available options outright, + rather than hide them behind a