From 63bebcbcf67c14fb1772deda7c534bba6b1f66e8 Mon Sep 17 00:00:00 2001 From: Jamie Date: Mon, 30 Jan 2023 15:30:01 +0000 Subject: [PATCH 1/4] Initial eleventy build - WIP --- .eleventy.js | 46 + package-lock.json | 5657 ++++++++++++++++- package.json | 5 + web/amplify/eleventy/_data/layout.js | 1 + .../accessible-autocomplete.njk | 0 .../_includes/advanced-components/cards.njk | 0 .../advanced-components/carousel.njk | 0 .../advanced-components/collapsibles.njk | 0 .../advanced-components/disclosure-widget.njk | 0 .../_includes/advanced-components/tabs.njk | 0 web/amplify/eleventy/_includes/base.njk | 76 + web/amplify/eleventy/_includes/component.njk | 4 + web/amplify/eleventy/_includes/components.njk | 19 + .../_includes/core-components/avatar.njk | 0 .../_includes/core-components/breadcrumbs.njk | 0 .../_includes/core-components/card.njk | 12 + .../_includes/core-components/cards.njk | 58 + .../core-components/image-component.njk | 0 .../_includes/core-components/notes.njk | 23 + .../_includes/core-components/pagination.njk | 0 .../core-components/progress-indicator.njk | 0 .../core-components/quote-component.njk | 0 .../_includes/core-components/search.njk | 0 .../_includes/core-components/shelves.njk | 0 .../core-components/sticky-footer.njk | 0 .../_includes/core-components/tag-list.njk | 0 .../core-components/text-component.njk | 3 + .../_includes/core-components/video.njk | 0 .../_includes/design/typography-test.njk | 0 .../_includes/fundamentals/button.njk | 41 + .../eleventy/_includes/fundamentals/form.njk | 63 + .../eleventy/_includes/fundamentals/icon.njk | 0 .../eleventy/_includes/fundamentals/link.njk | 31 + .../eleventy/_includes/global/footer.njk | 5 + .../eleventy/_includes/global/global-nav.njk | 20 + .../eleventy/_includes/global/header.njk | 6 + .../eleventy/_includes/global/sidebar.njk | 27 + web/amplify/eleventy/_includes/homepage.njk | 3 + .../eleventy/_includes/layout-helpers/box.njk | 0 .../_includes/layout-helpers/center.njk | 0 .../_includes/layout-helpers/cluster.njk | 0 .../_includes/layout-helpers/cover.njk | 6 + .../_includes/layout-helpers/frame.njk | 0 .../_includes/layout-helpers/switcher.njk | 0 web/amplify/eleventy/_includes/page.njk | 13 + .../eleventy/_includes/system/component.njk | 3 + .../eleventy/_includes/system/components.njk | 24 + .../_includes/system/page-component.njk | 0 web/amplify/eleventy/advanced-components.md | 9 + .../accessible-autocomplete.md | 13 + .../advanced-components.json | 6 + .../eleventy/advanced-components/cards.md | 59 + .../advanced-components/collapsibles.md | 13 + .../advanced-components/disclosure-widget.md | 15 + .../eleventy/advanced-components/tabs.md | 20 + web/amplify/eleventy/core-components.md | 9 + .../eleventy/core-components/avatars.md | 16 + .../eleventy/core-components/breadcrumbs.md | 13 + .../core-components/core-components.json | 6 + .../core-components/image-component.md | 15 + web/amplify/eleventy/core-components/main.md | 8 + web/amplify/eleventy/core-components/notes.md | 13 + .../eleventy/core-components/pagination.md | 17 + .../core-components/progress-indicator.md | 4 + .../core-components/quote-component.md | 9 + .../eleventy/core-components/shelves.md | 58 + .../eleventy/core-components/simple-cards.md | 35 + .../eleventy/core-components/sticky-footer.md | 6 + .../eleventy/core-components/tag-list.md | 11 + .../core-components/text-component.md | 16 + .../core-components/video-component.md | 19 + web/amplify/eleventy/design.md | 91 + web/amplify/eleventy/design/design.json | 5 + .../eleventy/design/typography-test.md | 79 + web/amplify/eleventy/fundamentals.md | 29 + .../eleventy/fundamentals/breakpoints.md | 8 + web/amplify/eleventy/fundamentals/buttons.md | 102 + web/amplify/eleventy/fundamentals/colours.md | 30 + .../eleventy/fundamentals/details-summary.md | 11 + .../eleventy/fundamentals/flow-elements.md | 37 + .../eleventy/fundamentals/form-errors.md | 119 + web/amplify/eleventy/fundamentals/forms.md | 241 + .../eleventy/fundamentals/fundamentals.json | 6 + .../eleventy/fundamentals/hide-and-show.md | 26 + web/amplify/eleventy/fundamentals/icons.md | 38 + web/amplify/eleventy/fundamentals/images.md | 68 + web/amplify/eleventy/fundamentals/lists.md | 84 + .../eleventy/fundamentals/print-styles.md | 20 + .../eleventy/fundamentals/skip-link.md | 6 + web/amplify/eleventy/fundamentals/tables.md | 48 + .../eleventy/fundamentals/typography.md | 39 + .../eleventy/fundamentals/utility-classes.md | 36 + .../eleventy/fundamentals/vertical-spacing.md | 18 + web/amplify/eleventy/get-started.md | 36 + .../eleventy/get-started/browser-support.md | 26 + web/amplify/eleventy/get-started/css.md | 21 + .../eleventy/get-started/get-started.json | 4 + .../eleventy/get-started/javascript.md | 19 + web/amplify/eleventy/index.md | 45 + web/amplify/eleventy/layout-helpers.md | 8 + web/amplify/eleventy/layout-helpers/box.md | 33 + web/amplify/eleventy/layout-helpers/center.md | 10 + .../eleventy/layout-helpers/cluster.md | 21 + web/amplify/eleventy/layout-helpers/cover.md | 27 + web/amplify/eleventy/layout-helpers/frame.md | 45 + .../layout-helpers/layout-helpers.json | 6 + .../eleventy/layout-helpers/sidebar.md | 32 + .../eleventy/layout-helpers/simple-search.md | 9 + .../eleventy/layout-helpers/switcher.md | 27 + .../accessible-autocomplete/index.html | 195 + .../advanced-components/cards/index.html | 222 + .../collapsibles/index.html | 195 + .../disclosure-widget/index.html | 196 + .../advanced-components/index.html | 192 + .../tabbed-sections/index.html | 172 + .../advanced-components/tabs/index.html | 201 + .../core-components/avatars/index.html | 262 + .../core-components/breadcrumbs/index.html | 258 + .../image-component/index.html | 259 + .../core-components/image/index.html | 242 + web/eleventy-dist/core-components/index.html | 255 + .../core-components/main/index.html | 259 + .../core-components/notes/index.html | 258 + .../core-components/pagination/index.html | 260 + .../progress-indicator/index.html | 254 + .../quote-component/index.html | 256 + .../core-components/shelves/index.html | 295 + .../core-components/simple-cards/index.html | 271 + .../core-components/sticky-footer/index.html | 255 + .../core-components/tag-list/index.html | 257 + .../core-components/text-component/index.html | 259 + .../video-component/index.html | 261 + .../video-components/index.html | 172 + web/eleventy-dist/design-handover/index.html | 100 + web/eleventy-dist/design/index.html | 218 + .../design/typography-test/index.html | 234 + .../fonts/nunito-v20-latin-700.woff | Bin 0 -> 17116 bytes .../fonts/nunito-v20-latin-700.woff2 | Bin 0 -> 13912 bytes .../fonts/nunito-v20-latin-700italic.woff | Bin 0 -> 18052 bytes .../fonts/nunito-v20-latin-700italic.woff2 | Bin 0 -> 14588 bytes .../fonts/nunito-v20-latin-italic.woff | Bin 0 -> 18300 bytes .../fonts/nunito-v20-latin-italic.woff2 | Bin 0 -> 14540 bytes .../fonts/nunito-v20-latin-regular.woff | Bin 0 -> 17412 bytes .../fonts/nunito-v20-latin-regular.woff2 | Bin 0 -> 14004 bytes .../fundamentals/breakpoints/index.html | 277 + .../fundamentals/buttons/index.html | 299 + .../fundamentals/colours/index.html | 292 + .../fundamentals/details-summary/index.html | 278 + .../fundamentals/flow-elements/index.html | 292 + .../fundamentals/form-errors/index.html | 340 + .../fundamentals/forms/index.html | 395 ++ .../fundamentals/hide-and-show/index.html | 298 + .../fundamentals/icons/index.html | 293 + .../fundamentals/images/index.html | 319 + web/eleventy-dist/fundamentals/index.html | 290 + .../fundamentals/lists/index.html | 335 + .../fundamentals/print-styles/index.html | 287 + .../fundamentals/skip-link/index.html | 276 + .../fundamentals/tables/index.html | 371 ++ .../fundamentals/typography/index.html | 295 + .../fundamentals/utility-classes/index.html | 299 + .../fundamentals/vertical-spacing/index.html | 288 + .../browser-support copy/index.html | 128 + .../get-started/browser-support/index.html | 190 + web/eleventy-dist/get-started/css/index.html | 187 + web/eleventy-dist/get-started/index.html | 202 + .../get-started/javascript/index.html | 186 + web/eleventy-dist/get-started/js/index.html | 197 + web/eleventy-dist/images/jpg-cat-1.jpg | Bin 0 -> 42574 bytes web/eleventy-dist/index.html | 165 + .../js/country-autocomplete.min.js | 1 + web/eleventy-dist/js/countryAutocomplete.js | 143 + .../js/libraries/fontfaceobserver.js | 1 + web/eleventy-dist/js/main.js | 413 ++ web/eleventy-dist/js/main.min.js | 1 + web/eleventy-dist/js/splide.js | 3832 +++++++++++ web/eleventy-dist/js/splide.min.js | 2 + .../js/splide.min.js.LICENSE.txt | 6 + web/eleventy-dist/js/tabs.js | 104 + web/eleventy-dist/js/tabs.min.js | 2 + web/eleventy-dist/js/tabs.min.js.LICENSE.txt | 1 + .../layout-helpers/box/index.html | 224 + .../layout-helpers/center/index.html | 215 + .../layout-helpers/cluster/index.html | 227 + .../layout-helpers/cover/index.html | 222 + .../layout-helpers/frame/index.html | 230 + web/eleventy-dist/layout-helpers/index.html | 211 + .../layout-helpers/quote-component/index.html | 238 + .../layout-helpers/shelves/index.html | 284 + .../layout-helpers/sidebar/index.html | 224 + .../layout-helpers/simple-search/index.html | 214 + .../layout-helpers/sticky-footer/index.html | 230 + .../layout-helpers/switcher/index.html | 226 + .../pages/advanced-components/index.html | 100 + .../pages/core-components/index.html | 100 + .../pages/design-handover/index.html | 100 + .../pages/fundamentals/index.html | 100 + .../get-started/browser-support/index.html | 104 + .../pages/get-started/index.html | 100 + .../pages/layout-helpers/index.html | 100 + web/eleventy-dist/styles/advanced.css | 911 +++ web/eleventy-dist/styles/advanced.min.css | 1 + web/eleventy-dist/styles/core.css | 3374 ++++++++++ web/eleventy-dist/styles/core.min.css | 1 + web/eleventy-dist/styles/print.css | 530 ++ web/eleventy-dist/styles/print.min.css | 1 + web/eleventy-dist/svg/credit-card.svg | 1 + web/eleventy-dist/svg/logoipsum-logo-6.svg | 1 + 208 files changed, 33665 insertions(+), 193 deletions(-) create mode 100644 .eleventy.js create mode 100644 web/amplify/eleventy/_data/layout.js create mode 100644 web/amplify/eleventy/_includes/advanced-components/accessible-autocomplete.njk create mode 100644 web/amplify/eleventy/_includes/advanced-components/cards.njk create mode 100644 web/amplify/eleventy/_includes/advanced-components/carousel.njk create mode 100644 web/amplify/eleventy/_includes/advanced-components/collapsibles.njk create mode 100644 web/amplify/eleventy/_includes/advanced-components/disclosure-widget.njk create mode 100644 web/amplify/eleventy/_includes/advanced-components/tabs.njk create mode 100644 web/amplify/eleventy/_includes/base.njk create mode 100644 web/amplify/eleventy/_includes/component.njk create mode 100644 web/amplify/eleventy/_includes/components.njk create mode 100644 web/amplify/eleventy/_includes/core-components/avatar.njk create mode 100644 web/amplify/eleventy/_includes/core-components/breadcrumbs.njk create mode 100644 web/amplify/eleventy/_includes/core-components/card.njk create mode 100644 web/amplify/eleventy/_includes/core-components/cards.njk create mode 100644 web/amplify/eleventy/_includes/core-components/image-component.njk create mode 100644 web/amplify/eleventy/_includes/core-components/notes.njk create mode 100644 web/amplify/eleventy/_includes/core-components/pagination.njk create mode 100644 web/amplify/eleventy/_includes/core-components/progress-indicator.njk create mode 100644 web/amplify/eleventy/_includes/core-components/quote-component.njk create mode 100644 web/amplify/eleventy/_includes/core-components/search.njk create mode 100644 web/amplify/eleventy/_includes/core-components/shelves.njk create mode 100644 web/amplify/eleventy/_includes/core-components/sticky-footer.njk create mode 100644 web/amplify/eleventy/_includes/core-components/tag-list.njk create mode 100644 web/amplify/eleventy/_includes/core-components/text-component.njk create mode 100644 web/amplify/eleventy/_includes/core-components/video.njk create mode 100644 web/amplify/eleventy/_includes/design/typography-test.njk create mode 100644 web/amplify/eleventy/_includes/fundamentals/button.njk create mode 100644 web/amplify/eleventy/_includes/fundamentals/form.njk create mode 100644 web/amplify/eleventy/_includes/fundamentals/icon.njk create mode 100644 web/amplify/eleventy/_includes/fundamentals/link.njk create mode 100644 web/amplify/eleventy/_includes/global/footer.njk create mode 100644 web/amplify/eleventy/_includes/global/global-nav.njk create mode 100644 web/amplify/eleventy/_includes/global/header.njk create mode 100644 web/amplify/eleventy/_includes/global/sidebar.njk create mode 100644 web/amplify/eleventy/_includes/homepage.njk create mode 100644 web/amplify/eleventy/_includes/layout-helpers/box.njk create mode 100644 web/amplify/eleventy/_includes/layout-helpers/center.njk create mode 100644 web/amplify/eleventy/_includes/layout-helpers/cluster.njk create mode 100644 web/amplify/eleventy/_includes/layout-helpers/cover.njk create mode 100644 web/amplify/eleventy/_includes/layout-helpers/frame.njk create mode 100644 web/amplify/eleventy/_includes/layout-helpers/switcher.njk create mode 100644 web/amplify/eleventy/_includes/page.njk create mode 100644 web/amplify/eleventy/_includes/system/component.njk create mode 100644 web/amplify/eleventy/_includes/system/components.njk create mode 100644 web/amplify/eleventy/_includes/system/page-component.njk create mode 100644 web/amplify/eleventy/advanced-components.md create mode 100644 web/amplify/eleventy/advanced-components/accessible-autocomplete.md create mode 100644 web/amplify/eleventy/advanced-components/advanced-components.json create mode 100644 web/amplify/eleventy/advanced-components/cards.md create mode 100644 web/amplify/eleventy/advanced-components/collapsibles.md create mode 100644 web/amplify/eleventy/advanced-components/disclosure-widget.md create mode 100644 web/amplify/eleventy/advanced-components/tabs.md create mode 100644 web/amplify/eleventy/core-components.md create mode 100644 web/amplify/eleventy/core-components/avatars.md create mode 100644 web/amplify/eleventy/core-components/breadcrumbs.md create mode 100644 web/amplify/eleventy/core-components/core-components.json create mode 100644 web/amplify/eleventy/core-components/image-component.md create mode 100644 web/amplify/eleventy/core-components/main.md create mode 100644 web/amplify/eleventy/core-components/notes.md create mode 100644 web/amplify/eleventy/core-components/pagination.md create mode 100644 web/amplify/eleventy/core-components/progress-indicator.md create mode 100644 web/amplify/eleventy/core-components/quote-component.md create mode 100644 web/amplify/eleventy/core-components/shelves.md create mode 100644 web/amplify/eleventy/core-components/simple-cards.md create mode 100644 web/amplify/eleventy/core-components/sticky-footer.md create mode 100644 web/amplify/eleventy/core-components/tag-list.md create mode 100644 web/amplify/eleventy/core-components/text-component.md create mode 100644 web/amplify/eleventy/core-components/video-component.md create mode 100644 web/amplify/eleventy/design.md create mode 100644 web/amplify/eleventy/design/design.json create mode 100644 web/amplify/eleventy/design/typography-test.md create mode 100644 web/amplify/eleventy/fundamentals.md create mode 100644 web/amplify/eleventy/fundamentals/breakpoints.md create mode 100644 web/amplify/eleventy/fundamentals/buttons.md create mode 100644 web/amplify/eleventy/fundamentals/colours.md create mode 100644 web/amplify/eleventy/fundamentals/details-summary.md create mode 100644 web/amplify/eleventy/fundamentals/flow-elements.md create mode 100644 web/amplify/eleventy/fundamentals/form-errors.md create mode 100644 web/amplify/eleventy/fundamentals/forms.md create mode 100644 web/amplify/eleventy/fundamentals/fundamentals.json create mode 100644 web/amplify/eleventy/fundamentals/hide-and-show.md create mode 100644 web/amplify/eleventy/fundamentals/icons.md create mode 100644 web/amplify/eleventy/fundamentals/images.md create mode 100644 web/amplify/eleventy/fundamentals/lists.md create mode 100644 web/amplify/eleventy/fundamentals/print-styles.md create mode 100644 web/amplify/eleventy/fundamentals/skip-link.md create mode 100644 web/amplify/eleventy/fundamentals/tables.md create mode 100644 web/amplify/eleventy/fundamentals/typography.md create mode 100644 web/amplify/eleventy/fundamentals/utility-classes.md create mode 100644 web/amplify/eleventy/fundamentals/vertical-spacing.md create mode 100644 web/amplify/eleventy/get-started.md create mode 100644 web/amplify/eleventy/get-started/browser-support.md create mode 100644 web/amplify/eleventy/get-started/css.md create mode 100644 web/amplify/eleventy/get-started/get-started.json create mode 100644 web/amplify/eleventy/get-started/javascript.md create mode 100644 web/amplify/eleventy/index.md create mode 100644 web/amplify/eleventy/layout-helpers.md create mode 100644 web/amplify/eleventy/layout-helpers/box.md create mode 100644 web/amplify/eleventy/layout-helpers/center.md create mode 100644 web/amplify/eleventy/layout-helpers/cluster.md create mode 100644 web/amplify/eleventy/layout-helpers/cover.md create mode 100644 web/amplify/eleventy/layout-helpers/frame.md create mode 100644 web/amplify/eleventy/layout-helpers/layout-helpers.json create mode 100644 web/amplify/eleventy/layout-helpers/sidebar.md create mode 100644 web/amplify/eleventy/layout-helpers/simple-search.md create mode 100644 web/amplify/eleventy/layout-helpers/switcher.md create mode 100644 web/eleventy-dist/advanced-components/accessible-autocomplete/index.html create mode 100644 web/eleventy-dist/advanced-components/cards/index.html create mode 100644 web/eleventy-dist/advanced-components/collapsibles/index.html create mode 100644 web/eleventy-dist/advanced-components/disclosure-widget/index.html create mode 100644 web/eleventy-dist/advanced-components/index.html create mode 100644 web/eleventy-dist/advanced-components/tabbed-sections/index.html create mode 100644 web/eleventy-dist/advanced-components/tabs/index.html create mode 100644 web/eleventy-dist/core-components/avatars/index.html create mode 100644 web/eleventy-dist/core-components/breadcrumbs/index.html create mode 100644 web/eleventy-dist/core-components/image-component/index.html create mode 100644 web/eleventy-dist/core-components/image/index.html create mode 100644 web/eleventy-dist/core-components/index.html create mode 100644 web/eleventy-dist/core-components/main/index.html create mode 100644 web/eleventy-dist/core-components/notes/index.html create mode 100644 web/eleventy-dist/core-components/pagination/index.html create mode 100644 web/eleventy-dist/core-components/progress-indicator/index.html create mode 100644 web/eleventy-dist/core-components/quote-component/index.html create mode 100644 web/eleventy-dist/core-components/shelves/index.html create mode 100644 web/eleventy-dist/core-components/simple-cards/index.html create mode 100644 web/eleventy-dist/core-components/sticky-footer/index.html create mode 100644 web/eleventy-dist/core-components/tag-list/index.html create mode 100644 web/eleventy-dist/core-components/text-component/index.html create mode 100644 web/eleventy-dist/core-components/video-component/index.html create mode 100644 web/eleventy-dist/core-components/video-components/index.html create mode 100644 web/eleventy-dist/design-handover/index.html create mode 100644 web/eleventy-dist/design/index.html create mode 100644 web/eleventy-dist/design/typography-test/index.html create mode 100644 web/eleventy-dist/fonts/nunito-v20-latin-700.woff create mode 100644 web/eleventy-dist/fonts/nunito-v20-latin-700.woff2 create mode 100644 web/eleventy-dist/fonts/nunito-v20-latin-700italic.woff create mode 100644 web/eleventy-dist/fonts/nunito-v20-latin-700italic.woff2 create mode 100644 web/eleventy-dist/fonts/nunito-v20-latin-italic.woff create mode 100644 web/eleventy-dist/fonts/nunito-v20-latin-italic.woff2 create mode 100644 web/eleventy-dist/fonts/nunito-v20-latin-regular.woff create mode 100644 web/eleventy-dist/fonts/nunito-v20-latin-regular.woff2 create mode 100644 web/eleventy-dist/fundamentals/breakpoints/index.html create mode 100644 web/eleventy-dist/fundamentals/buttons/index.html create mode 100644 web/eleventy-dist/fundamentals/colours/index.html create mode 100644 web/eleventy-dist/fundamentals/details-summary/index.html create mode 100644 web/eleventy-dist/fundamentals/flow-elements/index.html create mode 100644 web/eleventy-dist/fundamentals/form-errors/index.html create mode 100644 web/eleventy-dist/fundamentals/forms/index.html create mode 100644 web/eleventy-dist/fundamentals/hide-and-show/index.html create mode 100644 web/eleventy-dist/fundamentals/icons/index.html create mode 100644 web/eleventy-dist/fundamentals/images/index.html create mode 100644 web/eleventy-dist/fundamentals/index.html create mode 100644 web/eleventy-dist/fundamentals/lists/index.html create mode 100644 web/eleventy-dist/fundamentals/print-styles/index.html create mode 100644 web/eleventy-dist/fundamentals/skip-link/index.html create mode 100644 web/eleventy-dist/fundamentals/tables/index.html create mode 100644 web/eleventy-dist/fundamentals/typography/index.html create mode 100644 web/eleventy-dist/fundamentals/utility-classes/index.html create mode 100644 web/eleventy-dist/fundamentals/vertical-spacing/index.html create mode 100644 web/eleventy-dist/get-started/browser-support copy/index.html create mode 100644 web/eleventy-dist/get-started/browser-support/index.html create mode 100644 web/eleventy-dist/get-started/css/index.html create mode 100644 web/eleventy-dist/get-started/index.html create mode 100644 web/eleventy-dist/get-started/javascript/index.html create mode 100644 web/eleventy-dist/get-started/js/index.html create mode 100644 web/eleventy-dist/images/jpg-cat-1.jpg create mode 100644 web/eleventy-dist/index.html create mode 100644 web/eleventy-dist/js/country-autocomplete.min.js create mode 100644 web/eleventy-dist/js/countryAutocomplete.js create mode 100644 web/eleventy-dist/js/libraries/fontfaceobserver.js create mode 100644 web/eleventy-dist/js/main.js create mode 100644 web/eleventy-dist/js/main.min.js create mode 100644 web/eleventy-dist/js/splide.js create mode 100644 web/eleventy-dist/js/splide.min.js create mode 100644 web/eleventy-dist/js/splide.min.js.LICENSE.txt create mode 100644 web/eleventy-dist/js/tabs.js create mode 100644 web/eleventy-dist/js/tabs.min.js create mode 100644 web/eleventy-dist/js/tabs.min.js.LICENSE.txt create mode 100644 web/eleventy-dist/layout-helpers/box/index.html create mode 100644 web/eleventy-dist/layout-helpers/center/index.html create mode 100644 web/eleventy-dist/layout-helpers/cluster/index.html create mode 100644 web/eleventy-dist/layout-helpers/cover/index.html create mode 100644 web/eleventy-dist/layout-helpers/frame/index.html create mode 100644 web/eleventy-dist/layout-helpers/index.html create mode 100644 web/eleventy-dist/layout-helpers/quote-component/index.html create mode 100644 web/eleventy-dist/layout-helpers/shelves/index.html create mode 100644 web/eleventy-dist/layout-helpers/sidebar/index.html create mode 100644 web/eleventy-dist/layout-helpers/simple-search/index.html create mode 100644 web/eleventy-dist/layout-helpers/sticky-footer/index.html create mode 100644 web/eleventy-dist/layout-helpers/switcher/index.html create mode 100644 web/eleventy-dist/pages/advanced-components/index.html create mode 100644 web/eleventy-dist/pages/core-components/index.html create mode 100644 web/eleventy-dist/pages/design-handover/index.html create mode 100644 web/eleventy-dist/pages/fundamentals/index.html create mode 100644 web/eleventy-dist/pages/get-started/browser-support/index.html create mode 100644 web/eleventy-dist/pages/get-started/index.html create mode 100644 web/eleventy-dist/pages/layout-helpers/index.html create mode 100644 web/eleventy-dist/styles/advanced.css create mode 100644 web/eleventy-dist/styles/advanced.min.css create mode 100644 web/eleventy-dist/styles/core.css create mode 100644 web/eleventy-dist/styles/core.min.css create mode 100644 web/eleventy-dist/styles/print.css create mode 100644 web/eleventy-dist/styles/print.min.css create mode 100644 web/eleventy-dist/svg/credit-card.svg create mode 100644 web/eleventy-dist/svg/logoipsum-logo-6.svg diff --git a/.eleventy.js b/.eleventy.js new file mode 100644 index 0000000..8cab1a2 --- /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 2a3838d..f99ae33 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 8de3fad..8928229 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/_data/layout.js b/web/amplify/eleventy/_data/layout.js new file mode 100644 index 0000000..7bfc737 --- /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 0000000..e69de29 diff --git a/web/amplify/eleventy/_includes/advanced-components/cards.njk b/web/amplify/eleventy/_includes/advanced-components/cards.njk new file mode 100644 index 0000000..e69de29 diff --git a/web/amplify/eleventy/_includes/advanced-components/carousel.njk b/web/amplify/eleventy/_includes/advanced-components/carousel.njk new file mode 100644 index 0000000..e69de29 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 0000000..e69de29 diff --git a/web/amplify/eleventy/_includes/advanced-components/disclosure-widget.njk b/web/amplify/eleventy/_includes/advanced-components/disclosure-widget.njk new file mode 100644 index 0000000..e69de29 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 0000000..e69de29 diff --git a/web/amplify/eleventy/_includes/base.njk b/web/amplify/eleventy/_includes/base.njk new file mode 100644 index 0000000..48603f3 --- /dev/null +++ b/web/amplify/eleventy/_includes/base.njk @@ -0,0 +1,76 @@ +{% from "./system/components.njk" import pageComponents %} + + + + + + + + {{ title }} - Amplify + + + + + + + + + + + + + + + + + +{% include './global/footer.njk' %} + + + + + \ 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 0000000..2d27632 --- /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 0000000..8cea39d --- /dev/null +++ b/web/amplify/eleventy/_includes/components.njk @@ -0,0 +1,19 @@ +{% 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 0000000..e69de29 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 0000000..e69de29 diff --git a/web/amplify/eleventy/_includes/core-components/card.njk b/web/amplify/eleventy/_includes/core-components/card.njk new file mode 100644 index 0000000..f2e5a88 --- /dev/null +++ b/web/amplify/eleventy/_includes/core-components/card.njk @@ -0,0 +1,12 @@ +{% extends cards.njk %} +{% block card %} +{% if params.type %} + {% set cardType = " card--" + params.type %} +{% endif %} +{% block card %} +
+

{{ card.heading }}

+ {{ card.body | safe }} +
+{% endblock %} +{% endblock %} \ 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 0000000..e0b9b8b --- /dev/null +++ b/web/amplify/eleventy/_includes/core-components/cards.njk @@ -0,0 +1,58 @@ +
+ {%- if params.cards -%} +
+
+ {%- 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 -%} +
+ {%- endif -%} + {%- if card.image -%} +
+ {{ card.image.altText }} +
+ {%- endif -%} +
+
+ {%- endfor -%} +
+
+ {%- 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.image -%} +
+ {{ params.image.altText }} +
+ {%- 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 0000000..e69de29 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 0000000..e1a73a1 --- /dev/null +++ b/web/amplify/eleventy/_includes/core-components/notes.njk @@ -0,0 +1,23 @@ +{% 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/pagination.njk b/web/amplify/eleventy/_includes/core-components/pagination.njk new file mode 100644 index 0000000..e69de29 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 0000000..e69de29 diff --git a/web/amplify/eleventy/_includes/core-components/quote-component.njk b/web/amplify/eleventy/_includes/core-components/quote-component.njk new file mode 100644 index 0000000..e69de29 diff --git a/web/amplify/eleventy/_includes/core-components/search.njk b/web/amplify/eleventy/_includes/core-components/search.njk new file mode 100644 index 0000000..e69de29 diff --git a/web/amplify/eleventy/_includes/core-components/shelves.njk b/web/amplify/eleventy/_includes/core-components/shelves.njk new file mode 100644 index 0000000..e69de29 diff --git a/web/amplify/eleventy/_includes/core-components/sticky-footer.njk b/web/amplify/eleventy/_includes/core-components/sticky-footer.njk new file mode 100644 index 0000000..e69de29 diff --git a/web/amplify/eleventy/_includes/core-components/tag-list.njk b/web/amplify/eleventy/_includes/core-components/tag-list.njk new file mode 100644 index 0000000..e69de29 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 0000000..3ea1ffd --- /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 0000000..e69de29 diff --git a/web/amplify/eleventy/_includes/design/typography-test.njk b/web/amplify/eleventy/_includes/design/typography-test.njk new file mode 100644 index 0000000..e69de29 diff --git a/web/amplify/eleventy/_includes/fundamentals/button.njk b/web/amplify/eleventy/_includes/fundamentals/button.njk new file mode 100644 index 0000000..7793341 --- /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/form.njk b/web/amplify/eleventy/_includes/fundamentals/form.njk new file mode 100644 index 0000000..790393e --- /dev/null +++ b/web/amplify/eleventy/_includes/fundamentals/form.njk @@ -0,0 +1,63 @@ +
+ {%- for key, field in params.fields -%} +
+ {%- if field.label -%} + + {%- endif -%} + {%- if field.hint -%} +
{{ field.hint }}
+ {%- endif -%} + {%- if not field.type === "textarea" or not field.type === "fieldset" -%} + + {%- elif field.type === "textarea" -%} + + {%- elif field.type === "fieldset" -%} +
+ {{ field.label }} + + {% endif %}> +
+ {%- endif -%} +
+ {%- endfor -%} +
\ No newline at end of file diff --git a/web/amplify/eleventy/_includes/fundamentals/icon.njk b/web/amplify/eleventy/_includes/fundamentals/icon.njk new file mode 100644 index 0000000..e69de29 diff --git a/web/amplify/eleventy/_includes/fundamentals/link.njk b/web/amplify/eleventy/_includes/fundamentals/link.njk new file mode 100644 index 0000000..70e183a --- /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/global/footer.njk b/web/amplify/eleventy/_includes/global/footer.njk new file mode 100644 index 0000000..e88003f --- /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 0000000..ad8210f --- /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 0000000..2d1d377 --- /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 0000000..a623cd0 --- /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 0000000..48b0178 --- /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 0000000..e69de29 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 0000000..e69de29 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 0000000..e69de29 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 0000000..9f24bff --- /dev/null +++ b/web/amplify/eleventy/_includes/layout-helpers/cover.njk @@ -0,0 +1,6 @@ +{% block cover %} +
+

{{ params.title }}

+

{{ params.body }}

+
+{% endblock cover %} \ 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 0000000..e69de29 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 0000000..e69de29 diff --git a/web/amplify/eleventy/_includes/page.njk b/web/amplify/eleventy/_includes/page.njk new file mode 100644 index 0000000..a2ab34c --- /dev/null +++ b/web/amplify/eleventy/_includes/page.njk @@ -0,0 +1,13 @@ +--- +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 0000000..cad3acb --- /dev/null +++ b/web/amplify/eleventy/_includes/system/component.njk @@ -0,0 +1,3 @@ +{%- macro component(type, name, params) -%} + {% include '../' + type + '/' + name + '.njk' %} +{%- 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 0000000..7865b6e --- /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/page-component.njk b/web/amplify/eleventy/_includes/system/page-component.njk new file mode 100644 index 0000000..e69de29 diff --git a/web/amplify/eleventy/advanced-components.md b/web/amplify/eleventy/advanced-components.md new file mode 100644 index 0000000..2e7287a --- /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 0000000..d9bbc5f --- /dev/null +++ b/web/amplify/eleventy/advanced-components/accessible-autocomplete.md @@ -0,0 +1,13 @@ +--- +title: Accessible auto-complete +--- +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. + +Country + +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 0000000..402dc99 --- /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 0000000..5d4b495 --- /dev/null +++ b/web/amplify/eleventy/advanced-components/cards.md @@ -0,0 +1,59 @@ +--- +title: Block link cards +--- +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. + +A block link card +----------------- + +### [Cats and the Internet](https://en.wikipedia.org/wiki/Cats_and_the_Internet) + +Examining the popularity of cat-related media content online. + +![](https://amplify.studio24.net/dist/images/jpg-cat-1.jpg) + +Block link card with call-to-action (CTA) +----------------------------------------- + +### [Cats and the Internet](https://en.wikipedia.org/wiki/Cats_and_the_Internet) + +Examining the popularity of cat-related media content online. + +Read more + +![](https://amplify.studio24.net/dist/images/jpg-cat-1.jpg) + +A block link card with tag links +-------------------------------- + +### [Cats and the Internet](https://en.wikipedia.org/wiki/Cats_and_the_Internet) + +Examining the popularity of cat-related media content online. + +- [Content tagged with Arts and culture](https://www.studio24.net/work-sector/arts-and-culture/) +- [Content tagged with Education](https://www.studio24.net/work-sector/education/) +- [Content tagged with Charity and not-for-profit](https://www.studio24.net/work-sector/charity-and-not-for-profit/) + +![](https://amplify.studio24.net/dist/images/jpg-cat-1.jpg) + +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 0000000..5c58842 --- /dev/null +++ b/web/amplify/eleventy/advanced-components/collapsibles.md @@ -0,0 +1,13 @@ +--- +title: Collapsible containers +--- +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/). + +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 0000000..1b1eebd --- /dev/null +++ b/web/amplify/eleventy/advanced-components/disclosure-widget.md @@ -0,0 +1,15 @@ +--- +title: Disclosure widget +--- +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/). + +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 0000000..d587281 --- /dev/null +++ b/web/amplify/eleventy/advanced-components/tabs.md @@ -0,0 +1,20 @@ +--- +title: Tabbed sections +--- +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. + +- [Grumpy Cat](https://amplify.studio24.net/amplify/advanced-components/tabs.html#grumpy-cat) +- [Lil Bub](https://amplify.studio24.net/amplify/advanced-components/tabs.html#lil-bub) +- [Maru](https://amplify.studio24.net/amplify/advanced-components/tabs.html#maru) + +Grumpy Cat +---------- + +[Grumpy Cat](https://en.wikipedia.org/wiki/Grumpy_Cat) was a notable Internet cat, known and nicknamed for her permanently grumpy facial features. + +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 0000000..9648583 --- /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 0000000..1511b79 --- /dev/null +++ b/web/amplify/eleventy/core-components/avatars.md @@ -0,0 +1,16 @@ +--- +title: Avatars +--- +Wrap a square or portrait image inside a `div` or `span` with the class `avatar` to apply a circular mask to the image. + +![](https://www.w3.org/2006/05/u/1682ihk1hqqo-sm.jpg) + +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 0000000..558746a --- /dev/null +++ b/web/amplify/eleventy/core-components/breadcrumbs.md @@ -0,0 +1,13 @@ +--- +title: Breadcrumbs +--- +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 0000000..646f9cf --- /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 0000000..564d204 --- /dev/null +++ b/web/amplify/eleventy/core-components/image-component.md @@ -0,0 +1,15 @@ +--- +title: Image Component +--- +![](https://amplify.studio24.net/dist/images/jpg-cat-1.jpg) + +The figcaption is not a replacement for the image's `alt` attribute. It should be used for providing relevant supporting content. + +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 0000000..6df5f87 --- /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 0000000..5858917 --- /dev/null +++ b/web/amplify/eleventy/core-components/notes.md @@ -0,0 +1,13 @@ +--- +title: Notes +--- +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). + +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 0000000..9908be3 --- /dev/null +++ b/web/amplify/eleventy/core-components/pagination.md @@ -0,0 +1,17 @@ +--- +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">page 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 +| Column header 1 | Column header 2 | Column header 3 | +| --- | --- | --- | +| Row 1 header | Row 1, cell 2 | Row 1, cell 3 | +| Row 2 header | Row 2, cell 2 | Row 2, cell 3 | + +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 0000000..29973d3 --- /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 0000000..ad33b41 --- /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 0000000..6e72763 --- /dev/null +++ b/web/amplify/eleventy/fundamentals/buttons.md @@ -0,0 +1,102 @@ +--- +title: Buttons +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 0000000..b666a7d --- /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 0000000..4dea036 --- /dev/null +++ b/web/amplify/eleventy/fundamentals/details-summary.md @@ -0,0 +1,11 @@ +--- +title: Details and summary +--- +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. + +This is the summary content + +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 0000000..52e5493 --- /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 (H2O) and sup (E = MC2) 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: H2O. sup is used for superscripts: E = MC2. + +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 0000000..b078aed --- /dev/null +++ b/web/amplify/eleventy/fundamentals/form-errors.md @@ -0,0 +1,119 @@ +--- +title: Form error messages +--- +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 + +There is a problem +------------------ + +- [Enter a name](https://amplify.studio24.net/amplify/fundamentals/form-errors.html#name) +- [Enter a message](https://amplify.studio24.net/amplify/fundamentals/form-errors.html#message) +- [Enter an account number](https://amplify.studio24.net/amplify/fundamentals/form-errors.html#account-number) +- [Enter an arrival date](https://amplify.studio24.net/amplify/fundamentals/form-errors.html#arrival-date) +- [Enter a start time](https://amplify.studio24.net/amplify/fundamentals/form-errors.html#meeting-time) +- [Enter a date of birth](https://amplify.studio24.net/amplify/fundamentals/form-errors.html#bday-day) +- [The file must be 2MB or smaller](https://amplify.studio24.net/amplify/fundamentals/form-errors.html#file) +- [Select yes if you do own pets](https://amplify.studio24.net/amplify/fundamentals/form-errors.html#pets_yes) +- [Choose a segmented option](https://amplify.studio24.net/amplify/fundamentals/form-errors.html#segmented-option-1) +- [Choose at least one item you like](https://amplify.studio24.net/amplify/fundamentals/form-errors.html#chocolate) +- [Choose your preferred day](https://amplify.studio24.net/amplify/fundamentals/form-errors.html#day) + +Page title +========== + +Example form showcasing error messages +-------------------------------------- + +### Dealing with text + +Name (Required) Error: Enter a name + +E.g. Robin Smith + +Your message (Required) Error: Enter a message + +### Dealing with numbers + +Account number (Required) Error: Enter an account number + +Must be between 6 and 8 numbers long + +### Dealing with dates and times + +Date of arrival (Required) Error: Enter an arrival date + +For example 30/05/2021 + +Date of birth (Required) (an example of a memorable date) Error: Enter a date of birth + +For example 20 07 1972 + +Day + +Month + +Year + +Specify a start time for your meeting Error: Enter a start time + +Use UTC and your local time zone + +Start time + +Time zone + +### Other input types + +Upload an image Error: The file must be 2MB or smaller + +Maximum file size 2MB + +Do you own any pets? (Required) Error: Select yes if you do own pets + + Yes + + No + + Prefer not to say + +Segmented options (Radio) Error: Choose an option + +We understand that different people enjoy books in different ways, which is why we're giving you lots of options. + + Budget option Copy to explain this option in more detail. + + Value option Copy to explain this option in more detail. + + Expensive option Copy to explain this option in more detail. + +Things you like Error: Choose at least one item + + Chocolate + + Coffee + + Cake + + Chips + +Preferred day of appointment Error: Choose your preferred day + +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 0000000..fa80ac2 --- /dev/null +++ b/web/amplify/eleventy/fundamentals/forms.md @@ -0,0 +1,241 @@ +--- +title: Forms +--- +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 +--- +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 0000000..c0a1397 --- /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 0000000..9c26f0e --- /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 0000000..b023262 --- /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 0000000..4f650d6 --- /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 0000000..bc40662 --- /dev/null +++ b/web/amplify/eleventy/index.md @@ -0,0 +1,45 @@ +--- +title: Home +layout: homepage.njk +root: true +templateEngineOverride: 'njk,md' +components: + cover: + type: layout-helpers + name: cover + data: + 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 0000000..c84c827 --- /dev/null +++ b/web/amplify/eleventy/layout-helpers.md @@ -0,0 +1,8 @@ +--- +title: Layout helpers +root: 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 0000000..c06e690 --- /dev/null +++ b/web/amplify/eleventy/layout-helpers/box.md @@ -0,0 +1,33 @@ +--- +title: Box +--- +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. + +Default box +----------- + +Default box, with padding and border + +Box without padding +------------------- + +Box with no padding + +Box without border +------------------ + +Box with no border + +Box without padding or border +----------------------------- + +Box with no padding and no border + +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 0000000..01921a5 --- /dev/null +++ b/web/amplify/eleventy/layout-helpers/center.md @@ -0,0 +1,10 @@ +--- +title: Center +--- +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. + +Center layout in action \ 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 0000000..45ddf33 --- /dev/null +++ b/web/amplify/eleventy/layout-helpers/cluster.md @@ -0,0 +1,21 @@ +--- +title: Cluster +--- +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. + +- Item One +- Item Two +- Item Three +- Item Four +- Item Five +- Item Six +- Item Seven +- Item Eight +- Item Nine +- Item Ten \ 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 0000000..86d876f --- /dev/null +++ b/web/amplify/eleventy/layout-helpers/cover.md @@ -0,0 +1,27 @@ +--- +title: Cover +--- +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. + +Cover with horizontal centering using a utility class +----------------------------------------------------- + +Here is the principal content + +Cover with a nested center layout for horizontal centering +---------------------------------------------------------- + +Here is the principal content + +Cover with optional header and footer content +--------------------------------------------- + +"Header" content, e.g. a close button + +The principal content + +"Footer" content + +### 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 0000000..04c0bc2 --- /dev/null +++ b/web/amplify/eleventy/layout-helpers/frame.md @@ -0,0 +1,45 @@ +--- +title: Frame +--- +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. + +16:9 aspect ratio +----------------- + +![](https://amplify.studio24.net/dist/images/jpg-cat-1.jpg) + +An example of the 16:9 frame modifier + +3:2 aspect ratio +---------------- + +![](https://amplify.studio24.net/dist/images/jpg-cat-1.jpg) + +An example of the 3:2 frame modifier + +4:3 aspect ratio +---------------- + +![](https://amplify.studio24.net/dist/images/jpg-cat-1.jpg) + +An example of the 4:3 frame modifier + +Square aspect ratio +------------------- + +![](https://amplify.studio24.net/dist/images/jpg-cat-1.jpg) + +An example of the square frame modifier + +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 0000000..3315828 --- /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 0000000..d29eee5 --- /dev/null +++ b/web/amplify/eleventy/layout-helpers/sidebar.md @@ -0,0 +1,32 @@ +--- +title: Sidebar +--- +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. + +Default sidebar +--------------- + +Wide panel + +Narrow "sidebar" panel + +Using nested containers for spacing content +------------------------------------------- + +Wide panel + +Narrow "sidebar" panel + +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 0000000..cfcf8d9 --- /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 0000000..d57aa15 --- /dev/null +++ b/web/amplify/eleventy/layout-helpers/switcher.md @@ -0,0 +1,27 @@ +--- +title: Switcher +--- +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. + +Item 1 + +Item 2 + +Item 3 + +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 0000000..45a6797 --- /dev/null +++ b/web/eleventy-dist/advanced-components/accessible-autocomplete/index.html @@ -0,0 +1,195 @@ + + + + + + + + + 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 0000000..c983e46 --- /dev/null +++ b/web/eleventy-dist/advanced-components/cards/index.html @@ -0,0 +1,222 @@ + + + + + + + + + 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 0000000..b74f95e --- /dev/null +++ b/web/eleventy-dist/advanced-components/collapsibles/index.html @@ -0,0 +1,195 @@ + + + + + + + + + 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 0000000..c0cc0af --- /dev/null +++ b/web/eleventy-dist/advanced-components/disclosure-widget/index.html @@ -0,0 +1,196 @@ + + + + + + + + + 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 0000000..9195dfc --- /dev/null +++ b/web/eleventy-dist/advanced-components/index.html @@ -0,0 +1,192 @@ + + + + + + + + + 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 0000000..8a84d78 --- /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 0000000..178fae0 --- /dev/null +++ b/web/eleventy-dist/advanced-components/tabs/index.html @@ -0,0 +1,201 @@ + + + + + + + + + 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 0000000..de27c86 --- /dev/null +++ b/web/eleventy-dist/core-components/avatars/index.html @@ -0,0 +1,262 @@ + + + + + + + + + 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 0000000..cd7549e --- /dev/null +++ b/web/eleventy-dist/core-components/breadcrumbs/index.html @@ -0,0 +1,258 @@ + + + + + + + + + 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 0000000..dc981d0 --- /dev/null +++ b/web/eleventy-dist/core-components/image-component/index.html @@ -0,0 +1,259 @@ + + + + + + + + + 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 0000000..13f7c1e --- /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 0000000..fd98f77 --- /dev/null +++ b/web/eleventy-dist/core-components/index.html @@ -0,0 +1,255 @@ + + + + + + + + + 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 0000000..6830879 --- /dev/null +++ b/web/eleventy-dist/core-components/main/index.html @@ -0,0 +1,259 @@ + + + + + + + + + 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 0000000..336e82e --- /dev/null +++ b/web/eleventy-dist/core-components/notes/index.html @@ -0,0 +1,258 @@ + + + + + + + + + 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 0000000..1cdbe29 --- /dev/null +++ b/web/eleventy-dist/core-components/pagination/index.html @@ -0,0 +1,260 @@ + + + + + + + + + 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 0000000..0ce67e2 --- /dev/null +++ b/web/eleventy-dist/core-components/progress-indicator/index.html @@ -0,0 +1,254 @@ + + + + + + + + + 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 0000000..9fcde2b --- /dev/null +++ b/web/eleventy-dist/core-components/quote-component/index.html @@ -0,0 +1,256 @@ + + + + + + + + + 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 0000000..bcc0f95 --- /dev/null +++ b/web/eleventy-dist/core-components/shelves/index.html @@ -0,0 +1,295 @@ + + + + + + + + + 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 0000000..436a935 --- /dev/null +++ b/web/eleventy-dist/core-components/simple-cards/index.html @@ -0,0 +1,271 @@ + + + + + + + + + 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 0000000..6f51b0c --- /dev/null +++ b/web/eleventy-dist/core-components/sticky-footer/index.html @@ -0,0 +1,255 @@ + + + + + + + + + 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 0000000..afadadb --- /dev/null +++ b/web/eleventy-dist/core-components/tag-list/index.html @@ -0,0 +1,257 @@ + + + + + + + + + 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 0000000..bc56671 --- /dev/null +++ b/web/eleventy-dist/core-components/text-component/index.html @@ -0,0 +1,259 @@ + + + + + + + + + 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 0000000..cedb6f1 --- /dev/null +++ b/web/eleventy-dist/core-components/video-component/index.html @@ -0,0 +1,261 @@ + + + + + + + + + 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 0000000..0e994f4 --- /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 0000000..24ddfb3 --- /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 0000000..5cfa99c --- /dev/null +++ b/web/eleventy-dist/design/index.html @@ -0,0 +1,218 @@ + + + + + + + + + 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 0000000..685dcfb --- /dev/null +++ b/web/eleventy-dist/design/typography-test/index.html @@ -0,0 +1,234 @@ + + + + + + + + + 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 0000000000000000000000000000000000000000..f4ec427213d365831e51d4700c4057c2eef4e477 GIT binary patch literal 17116 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 W7-Sf*001h10nY%q0sn=t1dRZ3Ec_J! literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..616898392923c78e463fbbcae2030825e2595db7 GIT binary patch literal 13912 zcmV-eHmAvVPew8T0RR9105(_v5C8xG0DsT`05$di0RR9100000000000000000000 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 R04jk2&j7dq|AnvwjQ~MlCTjoy literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..e23f0aa4aa15b413c5fa5d48f32b9f3cf9b36be9 GIT binary patch literal 14588 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..756e209b1d39db2f49036dff752f32156875a469 GIT binary patch literal 18300 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..21bae9b759151f30a376cdaf492e5ef1703511b7 GIT binary patch literal 14540 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..964a308e84eabdabbb20849cc009414b453cc942 GIT binary patch literal 17412 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

xEjYSc+t*xJ*HT_)Z}Y|%=nKa21}(jzS3%m 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 aG0oqz0kZ@EFw2Cyp8G_;emlVH1ONb-1O^HK literal 0 HcmV?d00001 diff --git a/web/eleventy-dist/fundamentals/breakpoints/index.html b/web/eleventy-dist/fundamentals/breakpoints/index.html new file mode 100644 index 0000000..a712af4 --- /dev/null +++ b/web/eleventy-dist/fundamentals/breakpoints/index.html @@ -0,0 +1,277 @@ + + + + + + + + + Breakpoints - Amplify + + + + + + + + + + + + + + + + +

+
+
+ © Studio 24 +
+
+ + + + + \ 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 0000000..9470977 --- /dev/null +++ b/web/eleventy-dist/fundamentals/buttons/index.html @@ -0,0 +1,299 @@ + + + + + + + + + Buttons - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ 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 0000000..61a2f3e --- /dev/null +++ b/web/eleventy-dist/fundamentals/colours/index.html @@ -0,0 +1,292 @@ + + + + + + + + + Colours - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ 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 0000000..6d96d38 --- /dev/null +++ b/web/eleventy-dist/fundamentals/details-summary/index.html @@ -0,0 +1,278 @@ + + + + + + + + + Details and summary - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ 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 0000000..b26d4cc --- /dev/null +++ b/web/eleventy-dist/fundamentals/flow-elements/index.html @@ -0,0 +1,292 @@ + + + + + + + + + Flow elements - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ 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 0000000..650e773 --- /dev/null +++ b/web/eleventy-dist/fundamentals/form-errors/index.html @@ -0,0 +1,340 @@ + + + + + + + + + Form error messages - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ 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 0000000..75846e6 --- /dev/null +++ b/web/eleventy-dist/fundamentals/forms/index.html @@ -0,0 +1,395 @@ + + + + + + + + + Forms - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ 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 0000000..98a4781 --- /dev/null +++ b/web/eleventy-dist/fundamentals/hide-and-show/index.html @@ -0,0 +1,298 @@ + + + + + + + + + Hide and show items inclusively - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ 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 0000000..d27ba7c --- /dev/null +++ b/web/eleventy-dist/fundamentals/icons/index.html @@ -0,0 +1,293 @@ + + + + + + + + + Icons - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ 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 0000000..a6a84fc --- /dev/null +++ b/web/eleventy-dist/fundamentals/images/index.html @@ -0,0 +1,319 @@ + + + + + + + + + Images - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ 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 0000000..1774736 --- /dev/null +++ b/web/eleventy-dist/fundamentals/index.html @@ -0,0 +1,290 @@ + + + + + + + + + Fundamentals - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ 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 0000000..98375ed --- /dev/null +++ b/web/eleventy-dist/fundamentals/lists/index.html @@ -0,0 +1,335 @@ + + + + + + + + + Lists - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ 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 0000000..c4a6baa --- /dev/null +++ b/web/eleventy-dist/fundamentals/print-styles/index.html @@ -0,0 +1,287 @@ + + + + + + + + + Print styles - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ 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 0000000..d7c635f --- /dev/null +++ b/web/eleventy-dist/fundamentals/skip-link/index.html @@ -0,0 +1,276 @@ + + + + + + + + + Skip link - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ 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 0000000..9f2261b --- /dev/null +++ b/web/eleventy-dist/fundamentals/tables/index.html @@ -0,0 +1,371 @@ + + + + + + + + + Tables - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ 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 0000000..82890e5 --- /dev/null +++ b/web/eleventy-dist/fundamentals/typography/index.html @@ -0,0 +1,295 @@ + + + + + + + + + Typography - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ 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 0000000..738130e --- /dev/null +++ b/web/eleventy-dist/fundamentals/utility-classes/index.html @@ -0,0 +1,299 @@ + + + + + + + + + Utility Classes - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ 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 0000000..ad5e14b --- /dev/null +++ b/web/eleventy-dist/fundamentals/vertical-spacing/index.html @@ -0,0 +1,288 @@ + + + + + + + + + Vertical spacing - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ 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 0000000..99f0569 --- /dev/null +++ b/web/eleventy-dist/get-started/browser-support copy/index.html @@ -0,0 +1,128 @@ + + + + + + + + Browser support - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ 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 0000000..fb9fdb5 --- /dev/null +++ b/web/eleventy-dist/get-started/browser-support/index.html @@ -0,0 +1,190 @@ + + + + + + + + + Browser Support - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ 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 0000000..43e0a91 --- /dev/null +++ b/web/eleventy-dist/get-started/css/index.html @@ -0,0 +1,187 @@ + + + + + + + + + CSS - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ 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 0000000..0d44780 --- /dev/null +++ b/web/eleventy-dist/get-started/index.html @@ -0,0 +1,202 @@ + + + + + + + + + Get Started - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ 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 0000000..acd64a6 --- /dev/null +++ b/web/eleventy-dist/get-started/javascript/index.html @@ -0,0 +1,186 @@ + + + + + + + + + JavaScript - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ 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 0000000..af01ac6 --- /dev/null +++ b/web/eleventy-dist/get-started/js/index.html @@ -0,0 +1,197 @@ + + + + + + + + JS - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ 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 0000000000000000000000000000000000000000..402a1ac0af38fa0f8d8715c435b39c7120833c0e GIT binary patch literal 42574 zcmbrlWmp?s)HWKlDN=&Fg+g%%?i4NV?hptqTHJ~hcSVBgaR=Br(q%+ z@FjA?!N$VE#v#Cch1>`z@rm$}A4)Q6G7{vM4NOA=X5(RHX5|qR5D-&QP_ecSNBRFN z;9nmAABb{{8ia-d2B6}jpy8wZLjb6dV?;+o4)XtPXeg-Ym;j6yz<(eEdo%S#OOB*&sd;6(CJF1Y`)J2N)jxv9j8;;$*Vg zgMss4;B6)t3L0uvTA+eO`kXUJ;G$_;pDHl^nn%1BSya%(g+AgwUE&5Nca0@&- zZOsX)NwI(%VlgOyBaM`dE{*>29nnX0sT|k`9Cpz~p`l2sNuPF&Q5p&>0w486S{U8BiG?cY?7BLMS3*EtZf2Cq$=5 zcj*I#qM%!#Yevw{FP+$Jmw~HbFeX+jq$6xNhpH?^nYgD=Yio z@Q`{oeM3L1j2YAL6M-Lzio754vS3h<6mt3in!<4v-2i+K2@Uu(CqCbGv)3^i1#&_N z*&(YvP95)G39`ik7mn(H9I2&VQEG_DId&Mxp}WLgGUHTTyx-G?Wg<0(*`;vTT26J@?A2 z>u^ogWO{I)M;y0c7%|9ADWd)2n->8rg6pS@omvgwA z%!=5))kCd+8y0v1*$D-Zh5u(K=yZ{&094>6z+W=5CEjm6Y^!0h?Yvc@C@XK@kJ83g zs=5|q#$(yM?u-+1OwII@gWRZWBG9;f2|T1&OxTwAr^^6{#@46E9{$%7DV@fb<{$T{JfXI!%VF z)pqCTHfG4^hi005&c^Ti1nji6DL&UN1g__^j(MQB^e;m| zgLJWP0l}b9dH{F`uP9lUcv82|mUoXr4eq<^o5il$x61ly(fNRe@Kxzy8zXJ*iPd6( zc!G z>^YSdUsd^}aO$U(_Z|aD_4U`!>LX{164{?xzg2gQ5u3Jg*mu_6Y z1lVkQ1(ZyPS}y$YoX{6O-LSuI&g3mxx+8U-aqrb4|6VUJn0`ezh!X2y5z2&a2@D3r3k8u)2jMA;yFg6#S!cwO1C(F2e`w2?d{3RE zKH>kOha)-Z=Z*1whkjG<<`dJO;;B=IbTd`g8|ytBX;AnePzBgWj}8X(pbR7s(O=is zl2YxuhNOLD5y#?f(<#xB9!(tg)fE|2PO@`PbEg^Vt{XcR9 zS^+~r==1=qp;%g_Zc<{Cs)<1KU1QE&t@dkj($4V;TFO?+>6-A6U!f#di#Iy8%ayi*~K@X_V z0y{I%vTv|$fhD??Ml_vMr7^74-)DWXi^*d_!Su0G76=H?5`+p0(#)5~E1=mO7_urf z9$Pu}%s!nLnZ!8g@D0nqQD?ff(sKHy~Nn)eFO`^6E!Yw=4+` z4rq`*)Dnmeistja=%mm!(FgCfecq>b@yL!m6emo1yGx~Xd~`;?=xmazS*KR6b2XIT z0oOXs>dx|T(jG2170AtcF=Grvw*-YlfHFvWL7D`oa*C~-5{xJuaL0n+%~P^7?@ zAwXGB5Iy?)+9!ff1D)^STG?tTC1c)Pkvn>dJ;;CrV7=h@}99CZor(?+KMI zk=LxIPU{8@zUe=t0Cd>sy-~qrq5rWBI%p`0bQ*JDXpha}@+aF!#5znQmCeWXm}J%m z8tbdHA7gTLqrOBf@cEU$GW^3>*RF4SwMdt5)38eremDdY{GWrgB!dQlfnfP-nPjRP zL|oqHCuOdzuobK&f%A1kj=yd7UPqdrt9MMC7xdPtImOa!tg)Ph5BWrGOHb@r_Kg+hlJa*%|~`_IH;9kTGk>0 zXPu~JJT?!+t9?p$`PiKP0di?7Rfih`QX9kM3uUe+t(Td5fW1&MNUSB<5(G&;vSb%l z5A?dGk-Ms1bidL?7jjJPR~O}G1-&*V(FQZ^E8Io8DVA;@bxmsT-ygP_b(Yg zP7|EgG&}@G_c@v?%_clc^=`8s7CG{8K1MoFlF^4USQyX)q<~T+g1J}3KgM0qeu&*r z$~CmFHMg_Owo&h65cYpc$kW6+}4dXx9>NzRhnZpJ$;mZaKUeK8`gd( z_(8vv9R&ScL52(z>5*OnM+$^S!KW?#?)o^iY&|DnE0m5BQ=mo$7)p-=MPeC~Pf~UdCP}kRo*aicz~EfD zs;c9Yw0W#0$$d4M_i#4#wa}jRcSAh-mdesd)Q`<;@t9D$xDX3OFAlwhv;a2%ghC^j zOG-)|?_(~&8TWYFu|24CR`arOYQdfdd`(&Kl=&;8DvK1CLS`?%aL{={Q5ESYYlAI9 zL6Klg9D2Z8vaV2*aZlkvu{F1(_tIS?W!>95AD$V8qz^1X3yLcA3oo~#d=1M=|M`7DRF_zQ0M#HcZ;C5R#%Axn2Gh z>6tvi?GfO=w-K@~PNYJK*^46s?4jqD0!fo?osYre5hEGW=)YHMVyfXZL>7aJZc4mz zA(ieE1zGSWrF(q(yhGtY^5Z{f@IJD12yQT$EO)FlNE#ng(0>Tb3jVR&%3qKOPYioS z7ePIw>-`p-<5COfFV-RQ*GovUyH|gEMk(E(0vcpO`a=Xg(2~dn2XL;?k{0>Z_D6Id zU7AbZP>7MjLun=c$48!1#!-fR8g>h*S$&@&=8Qu&liWxZLQHxbOF~S1929^&o!2*4 zCP?WUC?j}ags_hFn~QFGk%G#n<+{kSDvIFOICG2Fd}rFaClVp+o1u^zX|izoNGLFj zMkt)y>(hV}9lUnwhr2?oiA!_|EX0()%#i2RMLk+sFMr#^ZI?t-?l|-D)Whzg7vlty zT|%ua20`&+FdVwGvPu=0jAM4dyU;%(Z`Yt5LW||EifF1#;sPpzq6qa4=ErBRjvRdn zDAZ=wKXp4>LorE^aYQI!h^(Kst%^aL>?H~2aE~l>ojI&uTvvB`H^%H;ucmwe?a(_Q&|k$Ks?W5mr+YxT-C_RSC91}l&>U8oeuuL;KI7^m;FFwcQCT)>+U zZAdmalAOp_8S{Oir`%q(z-S=Hu%gPjcy`;afeTDdRorm0Z`k}87aJZb1?U5XbZu{= za@eMv`!WqD{V17B(}9=_3eT9NS7PWj=9bIADa4hbdOrF77xKvNQrLB4Oa)+`VpbctYHL|jFcYp2O^Y-iP#3(GNcbszNYTolO* z&hOegvN4rec&<;KWhYGm%43<_9~jwwDWT(V4)!}ZaJ)*8@;+LK0HOgzt=fsd7hQNt z9KRZAs&_0Vn~hB%3!Y%7CML~t>lEoI@cfmL)vU2JSvbY=WztOX^U~VS??#7CO&ZdX z2lFClJGt)SW9R_S7o}9S!d#4VCv7Qhm_LgRJY9b_e3{;cbv4pvTv24v?_wmq7oX2t zo#smqcSYnL|C#4V!3(tgz&2fEP?0w^w2E1(7WtTJvf5&Sd@iRz0idBE+kX#F|F@x_ zqM>78{?Ai6DhPRQ?tjjsG!PMqkdOawpB^kq2j?{8Z@__T?g#4g%q004BHh_>|xjXEZeqneCS`TcPK7~Xqzdg2BR8ruqC zd5gGBc(~&h)Nf_oOxDI?&X&;%5p<|M$41PztGZnboTktuIbe>mWNtFv(|IJA2xV9~Q?JN0d2ze~$k- zY(kMz?fR%9EOf58k?&weP(Sm8If#`^G!z85bJf>RnV&Rp4l}oBCc|+T*$3$M<_J1{ z$`XJkJ5T!gf*mX%-!=f~`w4tcc#}5sCaI_QYY&`Hj5U}}XQ^T{swpnrAN z;m>Jf84GTx(|r$@SSyaOh{v{B4lSwK%|Ye&?_>hR1^}}F#aVI_Z~f~}zJ%2__GsTx zYMUdmYOh4{7}}FkRoy0=ojE(pq8$La-|m;N(Z+urT(?0kAN~e(lK5SF&9DR!3FrZ^ z*=?!Y2J18WBT|c}H>ThAHjGvPw1q3Na?yuGHqLeVxLF|6kuSlrB{IpbhYPKc&x(!C zfR}HJn1W#q&C);VEJ{N>f>3o?t$5#ea;|!Nu&<)j6r1cQ1}F2j#PtToML*eqNMhl?*uwhfC`JpTI-=4|s_<=zIt?88um@Z!d{*6aeWI z6aWgqS2-~H>KY0JF!eH4sSv&3Go3$O`g;JydjM6@w}SMPjT4o_)p!(Kz*H~&>%v^L zHH#%60rGhFTihixkIPi~M`t`2 z{ma*13Diq*{LTKvnz5zX{fN6V_bB_YA39VIc<>BLOr;yE2PRU zHQYDkJo)s)Pe~(;h0i^Rx_Q;${?6-(3qC!NaxM{oW2Z$m!mQ>S9^!A;dhu#4PvG<@ z{uOhpwDh-#7aABM9ia`^clWA-6=2BJOM)QTg%d0p%yJpX_ph#V(pm*CMZ$xF9HUm# z6y!ztz7*06AH7#$W-TekXJJ`oZg}}xn$!U6%d!mm>orPSatvWvV0LX$kOL-$UIHb2 zLMibjpzWQALU<2(v-ZBWJTG^4jM!(wm9UDJ0;nQiIgw2b9zOkyn;K8r8^H&uxOMEwW2C(o3hTZl+3FT%v#K|ajzFP@xGCg-|DR^42g z(&QDKHq-qBh<=3A+VkqIW+JGp!KrDW5azjMdGxBeMlY^QMJyhNMY=7TRg+&K*TI7_ z1CE_;x8*`I9O8Sg{4B;S(2HY-H1~Lx_q6TxyckIf`xACneRYJpH5Pp?g^0iMcy4=` zs!V172$(JT2f!W_n^+=L!DL#W%8OTaawc6E^{$%LX2asg{`f4Auf;~DwHsv*BE3wm zPMW1X{P;Y)_dekxt=)X4##G3uOc3OSmj#_a^}G3LoH?Db?U-epyqnf{zb8@6%TPWR z#x$d;wIt7>AKR=JKHQ@-zfhgCD6Nw?| zP2%M}g~Lnda9b$T7n2vN2^GY8rSpb3o~tum?=1V5+Z#^PQDOqq13d;chD-<{i4x-F zUt3;k)Q>q~2|Fc52#wZStQO@5Y)`+U{CLDTvRb^r?-xR=K`^O}*6$k@N2%$R=0Vzm zU=uz56~Oa*rqgB=r+RKR(BJpkO_J#A>3j3&Bl5D5wuMzzfOoNK{B{}aT0PZJJ^1*> zfquLL)eVA}eiOKIZUPBS6tq^lgJ_LOuocPe{;6oK8nW;*&)RteF44{GVkMToMVJUe zF%8_t2`z0l^<;upUH424^$|C*ccw1GugK59Zgvt_t&3c=+ zf#kJiw#-`Dn{7uiIgAc?z8UXrr>@DKLDGkq%+VvEGwkBw$@f$S@GD0JHYNeQ!+xkB z_if978m-z*-?*rSq>b$q*G=g(CGgms3i5 zLo($2gI4mdVlk=oK_$>t0-mGlKLDk^?L6C1<~H+~lD=c0efMAMaZGX&{hN$;aIFjr ze(k>V&UidsFAI~C>2g{IyV8N^k9Ipg24i29alF7c(R%24eVpr@a|S(QOK3eq>h6Ak zVmJMd%CzK1)_pj$tRWrimaQ#~?M>*8Yf5dtu(QhK2wS;}^xGqeD#sK|3D;?&B-V<_T@Fad5cUfd23N>7sQlh!aqvC|p66ynC!DW zjxVm}i_Yruqos!1N|RnaMijS%CPBJhgYO^?D`R@HH%wy=60Bu48LPga+;5y`nROvQ z_RH!K{&BGeB8Q!(B03ux@Cg@Y^q zN*Rz%w5%m7@!gq~yH~*M)eL+p%J2L2H?L?qg}1_#!gX}KyS408CRN6?9Gn~B7Aaxt zz}F3VnWYmHj`@)5RZO`;l8&KverIXlCh}gGGAl#5qo!aS3&Da-<2bV+FW-ZkVZo!nr3pgEg0pTl)nKg*v2%}lf^X|kQ-Ux@&9L>=>uK`aG54`HZMCx{ zhvgM^68bfQRjS*@f{&U@nK7iL`XY?0#p+E*lB$I%!15G=Fl*rmoiZUu*x!54!mMhk`X7Lzk=+>ULG*_L5fLU;(z=$T z6kAF22tZQ3N;*Rv+*8Op7%Qs91%JJbevn#mY&pN3mV9Yu$BC3?`OWUs%~ zJ1#%v)f#BTfS3EUjWd(Y1tKe4zUXxJ|`@FX-D;D-pt zwQ^L61(iiX%joZ!6ZaO3z;PqXHOFuC@}hzg8@}K(o10S=HnhHCb#GKgO9}nMNref1 z`E~`y&sGuo8EqNl#2;L^DoG!mPxDB2h#3K^ecD=aL^>b`tq z>~?vRN|~iQ5Ht7FG!WCjM5l0I(e>zvOYPOyu3%}R@SisGTAls63Uu>k`F@!v7(O;d z9c^`@0-M)@X%vksj5m#y@Q|!TOb)WyznB5@P68A1UR11IhiapjgA-&YeR)4Le zK0EBJ(o(LhV#T7qUq^wew#B}>M!yYjp5gLAs2Mod>w1BT=if#4+^fpY<_7g_z1N8{ zPXx^k`p0joPo@u}7rE@pR2tj%9Zvl93d5({wyxxiW!>wQR+H4LZ8g8%tX|ZuqN!H& z`%nw09s8YZ{X7)2m|$#0MY}B@a_DR?+Cy`Yspmec8Ep`kV!e)*XgnZDru0`zn1_Hc z43AX&(2XH_^smzzF{SuL8x|Qu6psC|dr*Q#pLBzkJH{|c-rFB_DVNP9>6SXe z@=-h41l|-sBy6V7iYqS+)^(*#c@gpxIm__Pw>n^UmN^K|5lBh-1`aprKer`yW2lyH zO7hMwFh44*Dxb=H9eO?fYy5uVwbQrO)s^%xi4WN0H?sXs>7FE0EjJV+3QRF-PAzg~ zOr6AI>QCaZQ_kfhfM?pr)pQme-DIjWF9)A&xKbXK?_P0X@shYiMK?V+`dn$zqZaug z+sd8+K=H7_`O}!Y&hl0L^bvY;x1tqcn3v%^hXTBJ{1^Ot3tEWb@S|e-qkum4Kfqh( zUrRdP(+kSdM#bmV8aKhH-{d#hY4!GniWem z6Z#h-m?kyyGK+Gg4i}7Vclc9}kmQ#42gA~efLiJw!1Mz<&)gGZBhi!8mksxuB#Tw0 zFLckAPkl_ag7he#_2`liQmvu+1w_D|=0>&a{^eqnJfb_ECHo(vPtx;PHbyHyQ5IIP zKi+Z)-H=%Oj}&V!$ndzaQMc!FEqv6IoKp?ZA51yRmc1UtEKJCoHNOm$o+hxk&QX(g z<(xWfDfh zudo~Q>?OKU5`Gvo@<1X&JAMgse{(^AM5pI9NUx4+u^snSesh+Q6G0f(la!v@*Crh4 zHPy?V@%iUM$I#K5bT;V{f(h-C@n)TWfMeJ{KpM(7Lg89<{jV(6h>VK+7iJf`1#X==@8$sn#MS?aFH9orlu56_YdLV(^(7S>u8qr~+zy0u=Ks7?W z_=0OP=}BH7@IL+%#8G;|?)++YMnVrSR*2V&XGnv=NbvF?x7QS6T@mC+jo+F{LRMGh zRTeT5(All+N3=I&QA0@T#@_`xf&6)9Rb=5$z@K8YF|9R^CNDF9HvGi20SL!o%g$Te3R&#t9tpQ{YjVyoGgjt3yWhbM zp4=Z4%>scf8Muxt-SD~mC+E4<*vSEBvZl~68`cZJqav>^488UEh)T$lkR$d=06;k&>>7D&ZZT&h`(F;Cp*$3_%)G-6eUqfT65^0Pdi_avFL$x=UhC zv3t%Lp=)nSbW-PJD6-5QuFKd8(PRgi(1$bC7)yYm29;5*3G4>T7t8Vrahg)_(uz}j z_pos#YPErU^%}Q2_fR)eRaVD7yoN+}!#jse1d8{oYTMxtA0)IDB7l*&6(mM4r`s$X-#uTQyulx<_?d%2K6s?e_P13GU*F~6Wck@F zdP$VvOCGvmlf=EhWoSXoHp_>c1`J897gM?1^wHQpeG{$OV(R$gE5=EkmhUGbS2Df* z9DJtNTmx}hVvKW7tF_)GcN#g5!l`rF~Ei9GP0)r?h=-g0 zFuhyWQ43_S?y&`prwRS4--Fp+0>!T=Y$N?s$6p+xfYGjnz_0wTaQ2*d-D|(SEQK+= zvMUd;%Z=ym$Aq4QaQk_~xnCm2Cu{et$P-+~x%qwyUIyF}2_upIO~1xf zRO<;5h@o0Kb%}kiX6}ad>j+E{jNtc8HbD@ z-hPUt-2U)CK(&K(kwb?6)tPw5BeE8ciH;Pcmnzh>hT}Ev#_!r;?b`n&L#5NYh?ZR z1F>B!i#+$`CenM9vZZzJVpU!ao4D(uRCPe?M1 z-xa{5{IYDgEzqn})Pi~pZyVWo6Ygjev@v?u z3tJHPD|#QW3D~h zox0f!OZmc;@!Y08Su(-cx7IAp{HHc5xezpi%tO4qF>QjI7g)0WF93grT7#WprvhzO z#Mh-i{&95Z_hX!R5k921(#kYZwK|o#Yxvyw574#iSODmaHNSLi%vu-pttyoZu3v3) zDh-`$3`rcc)qeAWtY10aFLbC2XE{wX;ulKZ4GuAtOytx8j&ERf)Hgd+rADmZw3Em> zPk4^MI$~l!)0y()p=HbHZ#Rnmc7Q{53XVZ+DPo*vgYI@{&lB+vP;XOtLDBh^yi^&Z zXduP7ox9x$$9M$av^H{wxe~SKyBjV_m#94W!$e$UI_ya4#I#df+D^o}ocg;BM?f*b zc7Gd{&u3^nGDp1qt~0>G=&C>A;7Y_0R5eR9YM^FvTSp|!)J~gxHpw*Qo$)f2N&M@A zpCMa1oSH`8J>|Ga}hFBcmEVZJ37V~dLA)RWOvt- zBP9`s_t1L-XOyMIOgm5hRCrT#j6TCG;;N|oF{50=G|GuR^<(Z^m}ux_N-)eOhpKl^ z@&_5ChEGUJ${k1)Mx&y^ON2W`(8clkp0j^YF%l(?J??~2ZKlrUJ`kBkmq4b`0qAJx zFEG)7C>a0!>xayvx!iB1wQ75t^la3GqCiZcxiI4DW9pRW#)d4d-*6;}eid;&s_V+-xr7#3y1itgZ;a+AQ1e zT?q-{V@tJ%hLr3h1$N@W-FaxU#x!x1@d*L$?!u-_8Pt{~4(z1y}>Uyje1xAeE z)NqE^cC5$YVXNszq=^Q$oG`C-c4`~&cx^KMwuyO%=X!?~!>0jK!h-jQiClPwTYADQ zN!u*%!x&3f`nIb*CFDPpPwBAHpA2+EJagvmGK)J?g83zI8m-0XGg1pi zG>6CLhP7SV+&K3{TS->TLYsUU_b$OFCALK7dRiE`phd7AecoN@3TtF5#5*i4bYx84 zhgY*GPn+!xI9a31#;WcUmLvbL`(Yb%@z7HamMXon9ZP)OW7cUVqJ4gcm;Ht(+^V6x zOP5ATjy1!Yr(lR_OLOpfXuzP=T8q+!*wCQfmuiD^(VGijP0pL}4G-rU*Hn8mk@1JX zuWBFt)h_=5UIe_F**s8hUik-D%DlBUoDC*aLVD`2`5ai+9OewnT6^=#tz)4ByluHF zalh$1%-f9y?nzw~pee3g8nABdM&m3h5h8YmlC!rxd9&WSX}OalAy)Rz)Oljfpt`6P#XPJqmhTeOH>lYbzb zOqfksWbL%V>uC{*{w3D*=KlbBN{tVxc_x!HTpVc_yAR_jvkOxR_N>^6udXEL!dRxk z!inH#hEKyu$-~=fG8Mtdek^YKP`lNHl3hcN=%_pnHNI;ZuYd9F= z_y6~$seb0bSDCz$vhC+-wSwkEp)iu9Wrhg(9P4i!?+=8>53J%2+>M#P zN+)x&SpDT`F$X`^z=Da*sKuIL0kaMJ>o!9=;K+``Uy-&ViuVL5)q5h6(W?vA^FJY0 z+n+!=5FFY4BW8GN-=&BMVM;dLD8eM2(wB$GhThtsmFJQN_I?NaQ<{SD)0vjRdscAhjfpXiLKYQvOx>TDm&q`r}@ z-}%fnb#IKjFc`jWsf5l}V!x^thF)1_@NwwLKoDJ_+eTxU>~FU0%N-E`VUqYd^Hc3y zk}b1p6TqUK;U9ZNGGkxH%!aP7`oW`VTKsUFlsr;9h#u>3PNHt7Mg*s93{C*qL*)DH zi>AiEk%h@|Deg}>$@8=|MK>x>ITn$nCC6}J1gE!HVKBYl8)fus=)uf(z@LJ@0o5FLOaHbVrS74in64PZbEp3@#U?EhQ~<^p zKG-o%D^DVYi^R8&5YmPhi`fpZFol}?kSv0+{>}=ljv6@fx8x_{Os{JUr|sS{2D_2q z9*L-F%R1Y%$KB6`9W%pkWx2Z-cJh-F!CF4iCfvH94wjU@JR;fO$yMRP&d|&*EoNK1 zoRVbD0@htN`d#TdS6JvB0YRcwNj;&-aD#)fE1M&7>Co+%8pVNf$Lqtn+CbY zgOONuBK5xI>Hcxo&4?7BoUr8vwQHh43t{>qE{48-c$Tt?vw?z>W_3zoJqw#NebR#4 z8?6v9{fC5-zx*AfU-GE3|B`E}A^xy{e#*_K4T&+j^cO^$Oq42=`fJull+zH{CNcI% zTLqA_!-S)-WW!}6zZG|vCRO2;t|>reHaSYq6Q3395QKC$Z}7mvdBWoRg$h1tnvBm4Q(-!h}3()!7+CLuGym&Y6*g%MgmZkwCY@ z+p|^^Y^5eNQA_?9Ui?ntb*sl?tu6&tL2Z~irW~onjEE5US(8usKz28T1}O7;II>7~ zk(h@j@oHISB}O4|OoZ9ur>E)#Jy)Jss;M!CLH)6?Kb|yo~Wgq4ZZYSRuz)3Nni+X4ecV$(?|S7v{GSdyEHOR)Wu6 zZ51|Sb|Zt0w{mH}6tUA2f8zONpkiu1><^>g{B1Kz6lV+5;?O9h9gh-YgoIKcj1}HBc&gcbY5tb`fg;n8L1?|Kz-cF zNTn+zd;c%Vu-r==?i5QCZ>K6 z>Z++@PTlg7K2^@fs@ZE`f1)W6&(+qvV$GruttvfZtyc-0IX^YyT00ZNCv9ur5*_<2 z96g&3&aCXI;Dh-e{^G>2+4F2!$2%G8Q*ezr(+-fyChZWKcc#CgzXfW8I#*Vx(?G48 zdruS7mKUsX^JDO=NYe{UQnm86E4x=n<^4zRbN(0)iye@b(pn`dhq8WN^s}LIM0wjRx}7 zvHz`6LjmB^gCJ6xmM(Ok6S;G1d#AU4UueAje+n}s>Hh&vhW-Ia_=d_U+G^wE=~;R5 z@EOPu)6>ZUf!9Ba21OvT(0pWRC4=Taz}!!LeR)W%KaM+;>|hX*@EmiKMV2@ni#!|@ z5u|;Jm_we8bw?f!RX}N<-n=^yshz$?3ZOR2c{s0(uYl&~=gC7D9PA(r{{U4(QwIkJ zgCfX2)3E_%f=adEKkR*#CO`iHuo^v(T@U^f`x^O!wyagy=kOIDYAoYN$#H4Ztx=R( zWaQP<@8jg;#dI;BP&khi;l6>q6WP$wNz86>15Zo5QNNqAe{S<*(VqJgrS3n#kI&pH zFYgMEBNSfXrO>RLaldU7f!sjitNv$#{Q2YwB^7^^DSp?kk#W?9(+VQi@Lo$$Qq3(p zWvY9rmHPcO+mOG=&nG)N7<%_kULraQsT=*d zq2W}M4YC)?h6Wwr=0_0YdHLPvkFiol$?=_g*q>VqKbW=6bn>(5+?R4HPh*?E&&Y5s z+A!Fs4n>Xq1lOF7^>?b27lF*j`Xco_`=-WLN@Gx@r}$2rn?vw(7>6Ta_X@VLxB>2> z=jN(d@z{00vp|r;N)CR~U zf|5OHvVenLQ<302>)5${!mrVu7u~-?d*Qtt$3}}#vR7^Ydf?gp5G80_1roJQrzYk{HuReQJ%s=RiG(#jnDFD&8{ro_?nRmYO|umt}B zKAM0h+Mo!|O`nX|S=Rx4+IKLBOt-#wvC2;C3*)`QBh$Av8MgyGw;^MMy&A|cb*Ija ztpU9bjiAv@RClP6Y`K41-}xb}*|$ePmUSxTUUJWtjxEZrHEnu2KA|)oxp>q_cqYsf zl&?r8v*_siIWFnx3HssCISHp3;gdKWLpCs2@K7Bw-K|HelQuyMvn_ zi|`Rf!@PBUGBfz95_RgA=J+k=m@u>dV1!faitma?*un5^5unEc%uO_vN>8LQL9UUQ zftHgc#(F?+oZh7+QIP4;w#)eptQ=!rAZ}wGKxBjtLN4pwNbSH zEtQEff-Q=vVrDGCsCw{AnK7>k{@C-(ntEh{-#dF^?I&2Fv zrNXP=5At>O4s+{j@0q6`x}hYZWm??UV|uvwe*aBsHOgv1;%0m_g!Yc*qYAIo%<0QW z^;4D`oOa+J-7J|lO~(#Id!Ega!-uW-xhj#>)Mb!Na?Tc-*hbeMEAlTRdi2yyub}k1 z7wk4R7Y)WoPo-Q!VFGq>tw23=DZ zPTuM9R%y=Bj!RuGQs+kSJgd>5d$jVz8qR94(N)D7rB(=NxQ-^+hZHzjSYcczqb?$v z^c%P_SCBeAf+ERTr1n2byU|JAVyyHGujE|tla>3pLH-T-7Q^hifwOLXGNS9Wuvv0c zU1?_bq%xw;0xY25Nmve801?n`WbXQ|f59?!h=G-^Dd1C_WRp zsA%=bqvKDtYSPSyQgmycS)f$^yLv;SEbGVAMfCYa{|sM(mxu#vaDG>5?v3Hs1Oa{-D?mF>G7@qI=_^Ngl>#|KAJF;xeE@YeB zS2yRisHZn-&zHDG1%A$K&DC4>5<90y90rceJ4a5asyV|AtGE>vEFq0YH*pGq%~O9c z>!SIw$t&gst&a512teX$^7mc$P=p2+(+BIVGjV0P6B9S$!QLdRJ8 zd6^ozj~F<&;&uYOKR9|YH5igdY99#`WE6st;NyuX=_)2gq4(TiOxkL=ppf4B`v#{_ zY0}l;Gmk18yTqV~xQ4N8+Af6vi&Bg&od>rh7eGiMW_{wGNu-B=86k)r=0ngt z-Fu1W_at9yHMwWwpZ+TG6bM`Cb79Zl0Y%NVEjepFuy~ui%Q^DV=ibca*@n&U6tKnE z%yUrpJ^}fRRcAJ&E2HPQsk-M7GNKLAD@v?)VoGO@sqbGg7V{(@K(EbZ$dDsPBAnLn z(1}_L>T2CqoA!qgjW2N9rSB=i+eDUq7q1a;}`2;cxGc#6ybzVyh&1#xf0K0t@-Q#q`s0l_UfSqG{OR)h4$AcB%{A0}vO{6)VHXs}5kle)ScJp)m^S~!eJnPS z{ddm@UN)hfhFg*4+iW2z((vg}pnmT3^o^v{f6j6+|3*au5=Z^Dx5XkagvQ*b-r0}H zuix?en%_7vDZ;7zYgJLd;Ma^lDcoU2{%i7=*O>N~j9W79je^5xN*c_CZch`}IWG9B zi~onGuZ)VLiLyYu7PDi`M59`_kFYiSN_5Z12kORf2b?NXz!|Rg(Bv+|$XYJ@|8{TKmU? zq{^CYj@PoDUW{QB)s)H}ctg>_%vY5p?|GFUKZ1I-UO{(rTN({6x4hwpOZ+N%zL(kS zw(Dh&YUZ4$bTrP>fIM$+?_j6@>Xj!YMnc_Q8gkn~Xk%g1(jXNr=$n-?0x7;}bMwWI zc^}kiS#0UftGw&FaLPb3Kn9LpcsE1gJFN-AGo(hT=KWpJdxdLp;JdZ$M3e5`d%{L; z+7Fs9f5@G5qR|$3j54}cdb6Mw4luOE<1aDTe@RLJAr8e|eqv=}Vec21>b}nbKdnk| zhg7Og2AC2!#QL~g54(**y7gJQxx|;~5H@l?PGgjaG~bGd=fVIb>^~n)UEwgEF^_4o z8lIYy*){P*{T25;sAO{VZGO3QAw;KH?+A1Z zN!x(}0+i`a3A{FxG3e_(J}*C@-iwdnF-%M>v|=>vKGbYeIkUny=7F_ScM?MxUn1oe z-{5scS5axH@BUUIA+7K@xn|0K2)nQ*A*E0anjQ8KC?oq4m;c`*3a_M=rhNUH6jDsJ z??C2=BGlUTZR=Yey6{E<*vwi(@8?ri?@u)VMf4b@NbhNhgZuYCQ>=0vo!tlaj0QHG zE*9A(T5ye;%VQYdA2e?g;SWQzhJQm1&W(elt=ZeRf80EUn-{}`#!mTP z{xhZvTQ2fPf-Q~NX%A&4H%%zqzLMA=_yOndO80^Auoa$(43EEGod`cj(vkPHF%7hG8`Y-`DbNb!&RQ->M=EA6! z-FK~)vJd0Cx}#-ldJL?j+fF$2LlipQCqClXLvg5n!w(&}O1E5bb8a}hKRUrkXU;)n z^T(hm;-zADK6+?>Ed|8A&W}w%#3y$fMe< zgHP;&@58v;?^3W&xIAnJmlzsdm%j<+ewwz96tv0atf#loE(@Ve{;`cmx_P3J@aNA4 z0|eOy#Iz%HMoz+x)o|O0}F<7%~hhO)^G5kkabcw7f+I4WldIqjT+ApZ+a}H;03V&X?0z|a zXe2^5i0`ud7{jybiKn@Vp?046r38KyO)kmmC?u1L6vn0`6fZbbxf3o1k=MI7ccJ0x zt;4k@_eJWzL`Y2b7l@kQ%*z@nEOo}jW-4Qgl1Kf|&>O&bgk-%k%9~KLj-*3kZf;FD zPviPR8O@Sf--G2arR?IUHYjf*lJ?BLp7@O=DJFwlpy20}l-zaf7a{9e3sRr@g zlenh3A0LQ!%6n!rNNHjV60Wn~I&QdRiSg|#%>kb@`WV$dB%D)vUIT6(_Lx$sU;YO{ zJOh(e3`oOy|FA#xPZ|cYF;Z}}ZO6eR7k0dTJR!9gf#;l$(F^rpA;LmMRiNy-7^I#* z$xDpQ*1YEvPe4(U9+FKXmp<~_jgyXCXxz$xjn~T%OJlb#FqO?bFKyzlJDkqGE7MiH zJJ9mLs7D~kw(4hjvR>a)Y&GVWwQ1Y-)4#I(HY=pLJ-<~S@!}*=n7Myr+Wy3$o0)mh zoR3j;jw5Vhfc?OF%g_Hohm@p{Oys;~gDp|^E6j@foDU(EaTVvudgp`cVet^#;E{q5 zYsY(@&I>Ag{eOUxqH$-v%`jJ7nl_Of&|4LRZxLwL{Aa+I>hZTcb2{5FVtK}WF?og(;@$9jPq$wdzgTO&_P=ZdXnoF8)Z9naMGGwV z8n5Q33xSzzAcEPeyw6hS!@s<(GAl|7h1_Vl;s>W0WG+xozd%@g>>8{J_RBtgj@lt{ z?CX)VO*zrL&pS73CD&WWOMG;3LHO!pd(GuRz7W)*qSP{sSumM42Mnv*wnuYws3#p; z`~zbQ3k$GC^bV^@V`<+Huh7gwgDdULsUIWsn11^H92w^%{2_a_IO@)-KITI0C+?E9 z+%pz`y07g5rZCO&VbU*V)dR{JYp+;mS0`NomHluOlevcq&GViEBi5uW+KJn(Rp z@}3HD_iecfSi7nlGrLp)1;^Dr+Rq`4bQ1IrDFGtZDzZd`Kv`Z{US0M5zPLv zAtn+uiZL?1?;;tFD;y=5aB@91{S?9wSHEt4_Ke-r$fNdvaeXdp!O68nn+Xwz@Yzr^ zkiYNV&dWW~rgpK4(E6yX3tOqnU|JkZUL2KBv56uHlr{d-k=-)!@5@R4rgyH8yvNxOi)S|UaTh6l^v*nirW;onqPIO(Z<=2H2-U<#* zk*oUuRFMB@omWV)pCtzF3kY2IYlpQ`?S>nrn*%m}+}fnd{=wpNcl9T2mpD78*S=*J z1hIdBI3iD9w@o{&W0E|c!3M-7aE2Y)SkhrS;o1Ld!{llb}?5Dzq-;L9= z^MPA74H|YTm%_PeFsXpyENCq2D#Fu8nm9{mQfI1w8!#Z83zMmSj>#{=D$DA2DtzdG zN}EZ$P(?62YE|3QRngZ6AEpPRmoYvb(4u`->(^M5wIQd4MGj4;_lH%s@qN{P0(<+d0wg&B~wzWlO5AIt0M zosjpBv>TR_Tb!TrC@8f@{xWi(8|qOI7uzZ_>CDQ#9{VmJFA5_e@5d5`bi3@mjR@h6 zy?ErU3F)6v=7lyQ7Eg-gC%Mz_Xf6pl3*lJ7c&7HR13@f;_rg3HZ%?yL+2LvqS#x5B{8q$cJ zmfEb$6q17RuGGi2wVqE$6fTdyh%G$B63dYYH6K7zBO~P}-d)tcJwfx{A_i6GL_xzX{H< zUJqU@JSk4D}28OI=su9;u8q|OwgGi$aX zMmE4cHy#UJnag1v3;BAuj+vcRKWj5%pR-EO?|?opzD3ZJEaxQ-K*MlDWJ%M}gjEPk zxbnC$$t1Na=XhXwt;Xb0?*Xq%m>`yQUTGECfYXbUbP9}qZcNz8ev z7aQ=q%0A$NdwO=zBfmB7vTPYsynZm~Z+YcopIuttCy0r;jy5!X0x#ZmB^$FGf}^c_ zO!WVZ&5s@Naj+9u{sD`clrp2uf5;@=_S;2a7v>u+=cM>Fsc#B2j}T53LHk8SK!;w- z@I;QfI_cqw!M*iY6ZtSHN3qzoTT=331z_v3)w^kv<>7ldU9bCf1ZkQy1B%)Y0W(+T z%*I}k!yJxb{{Td!Yid{QW0l>tTB|qhRqNriL`POfUNxiQ3AY$d>i0^^X1tfonz06m zj9-oI;=7>qx4XEjI|I3zoO~bLFYt$bb9Em;+|9LqS7>I60S^fXsSVb6E*de z0zJ>xT8 zQ|O-J+a=D^C||hN*BVSVup60gVEqi;hezCmu%98PZEaUR)#rM8)|KYCu{mPtjl_v+`rH|=ZY7nJSe??X%SX>_kBP`XB8C_O`B1Jy3fUs z$6(c;@FA#ip$uUNBhN6(6kWuL|8do2&n^{BOblmuUR=_f*fNJx{jR57q1;Y2*LeZg znT&{oYCHvnC}mMU<#I`v8(O6!mBny|$^4Yr_f?R?Ef1zuh!{;o*&b5o~6!fTY^_SY@h^6KZF}bo`|1eG(&s`z=Jge-?Zh-F6uLoop5n6A&&8bxxG<@<>4x6RFp3!2-Eko) z&hZ5IrZ6L$9H+MW2&%bW;711RdpVo*Km}MvuI2Mz7^VVmcx`g~xXEO_ykl%Svkk@2 zB5C3nPg7zZ3kp=fs|*q_lGM8RRj7+&!V9;ju+1FSkqjqC*0-<668{Ko9OWDFB5Wh-b-L55Ty>Hw^ zK4shB>T%|?XIi4Nc!|9(2~^gj2@C^kIhN8)_ot?0EGvNrgw2??EY#?~SB?CPBT}0_ zX#zUM4>(zqeXu5QE>FIcl0M*zlkUmOldwM^&0$({uyiUV;VGx$(w^t7B+}-o?&e0& zqO<)juIMRnIj!50H7@o7yfIw2F)}UN>>lx}TeS;-ua771 zEs6@KISilc$rsLme@0xNP9L@-G%k6=Ag&^9fdy+0i67@gsNf#LdAJ2GYg|k-2b8^3 zp>v>p0VPKD#`~C7am-Sq?wUFmBpgsFYPN%I6=Q%=3d#!yR2U-|=A%4Y{~04W@%}Gg z00Hs;e3AcSj6}fa!IhLEprz;L)kM^=a3_@3atlxY-?SAtI0?9afcQ$W?)PG@4>GFa z5_Y!Q9WCnGzM#KqXpTa0p~u=mGx;vYLct?M8Tj4eAz2k=Uou>^ixIp0P3m{LQ_E!y z$jlyA6YdpjN~@Wjq-8ORf1R~D%ni{fjYIeGe7ek(sqk}_ZOvG{6v~`s$^C=d8YsPm z=yW(*J6`wv+lY5J`; z#G+#A$#|jBRvUBljT86`XL-%yippwCh3%g}hEMy=g17|>RR_gbtQ4ixG(j)(a0?Gy$jT$IzkG|nGCMs*z?!Ygr{q5 z4c4k$31u2j=;;#$K-w#50~)8Z@}S|;uZP25rNtX zDqutU*_JZ7%K9tb$J2EiY`hS}3?^V{|I(839_OKb`FWq!`0hw`M%UPV^!UpZ`?slw zEj7JR*}zkk;7#vF=d!8yWvqM-CT9!w-?n8>P0W1uT$~F$G)*W7+7|*1IpVAI7H<~c zGTR55$`UworqfJty9|%UObE(9mm9DpJPWLJ3GsOfwO~f{IpP-3eB&xVffW+_e}x1< zhC_rygomYc{GY=Z0T-W+M~a)4UQ&~Q7gk4z>E@Q<|5HXVtB3^L-~2v@-)~%$V#Zw( zNN;)AoS??_E&(0^0WBj^Z~$=ApY2}84PQ^<_ERi6%W%RzS3;)in6XlkYfr?GwmWRZ`AlNunN@Ika47|N5y_D2GgPVE>$zpWx(m zv~bTjs%MG$4bJFzB1!g0JP|E>8&&jCPVsOpzpZwbsgDbST^>c6gy8=7edxNtOK_*NvEd>`E%R?Kqi4{L!|U zwFD0gK}{}a2Oh~tip(@cNA z@g{sTU0x?WNu)FkBGp(TUMJD~Iu=Xpo*QBZN%$7E?&JKxAj2=X5Ot@t9RYr)#6%2^wN9(%W&LqpobvGb=G}3nkJzlX~Fp?FPBNXhphC4?NK8h zMa}MHB+Wn!f4XWEyMwRbD{bkao-ty^<}IBXcbOV9YS1|w2ewIOcF(tz_rK3*pu0o( zLM-5)$8#zc%`t1xjlwnQjnWZvW8L9Odg*KDU9)v3HM#10#b<`ZN+)FkjcUf9zk|{V z^BE+*dA`Z#hA2(GvZk13#X&6YCm=_VEr$dJPs%)h1v9~^5Mr)e*?{+Jy0LTVucBP5 zY4d$n4Xdh5E{Qg;zgmbWaQ@u+L6nbzw0I|8ltn6T~A|1{;;Nx|AE$znlJivzL$G{ zpsZqCgqNAlO@v7%K)DA8ERsi^!YxLl`ii~hke1qB+|>_M<|QcysDZ4-$Z02%*B%H} zJ{OINel5&>0l)dZg07y+KrZ*h{7YL2u0KUts& z&B)x%ficgAnIEY)*Kbv>I}T5WS4Ctz>a)h@RT4CT4Ixkb^M3;@s!|Y`r_b9tz3#>A zzEVA0%d=b0*HchP8mln zT$u@A%DzX5YP9H3V2}ScCvw ziFrsHC?rtKm)ZTAqVkF$5eug-7nAZtSD>o?8QK?n*_R+>*BgqE(y=ORnOQ8vus)h1 zyz%Dy_~vVJY@-_K$p`V8*luE9{_c(ZYv_TCAr=pAP=K zDuL2k3nBIhUxvVP`wm0ATvEWtwtZncd9yL@PYd0)mLcx{0GZZvKb|Jvo_s}n9&Q?5 zf6ShE>sz5s^o?4aFyDxAZ0=o%*`<-C2${C$06muv zQ>T`*A07-TcT6b{1peg3zMh!%Z;GAIoVX`F%({N)19M_QRVm3`lA>SvZH4-VnA*-^ zH;y=dI=LBje)W1)e7uK^gQTCp)5Mo%(731+o*RXyhjtD%Zvh=#A@qWfJrC3Kb0|Fb zRPS@Y?&Kc9`9FXfaLZT~yQyaF+NxZ8G|yed4v57t`nl%ljd^C(3b-;6YS)k%`1%hJ zdVTFsJUX*f@FbDPd2j~}m^xiz%3~it$Yq@92zq5a8I=e1sRPv&cQ#MLP|0 zd9^+%%=bEm%3mXVp7=b7_4?HFhS-<-hFt8m)Pwy^Prfjv(H|#|HF_Lb&1B*5@(u66 zMNMU{$adU9grc`u82t?H(G(Qd5k?#BBa+1w}=u)&j__TQqcN^2xzhh^) zi&gP$^Ad~pj8X5r>7tvqyszrv8iwj_a_T^D%v2ALYo6lf?Z`rk6$52!18ERKk_it~ zbTjRpPSO4h_p$Gn){}5o8qXaQvs;6);N2ty=h|RkGoCOgwPG=AqR>O=-l6&pTY`Dl zg=%}p{FNKP)_}RRqgS>s7Q9TtPF+jvKbfK<>wOw$hb4i)kjdoNw~^sv!5#P#qdfKO zx}*CXinYsA={ zq|SADBE0w6@>-87KKyX!-rqPKb+YdD8M4O2W*tn15T$f0#?)MjelKF`nR?8bsY26D zlZpH}69{}Q7!xfGjLnX#DehrT(pSL2LBs*Mp6~FF&IJ2MUwP^&RH{99`0QtUBw{p9C&^%2+zd6%X1jk7NsY&CxDfe?dwTwPEaLAz?A6va~8 zz7M0ub_9L1E=Pmb4X2siPDK5s6ZhHS=|rg1vnPN3J*+gNs!fffQ_**5BHLx);oIu$ zuq*L$-7Zf(+=e}nB8WceYSR^}`zP}{RON>-@seAq4@{|o_S38*=WRm$sC7ip7NS`2 zP(P@V1Dhm{tWze;h@UTyuCZ6fuIBG#-$MeX%{rzf;V?a1T^FJcK_sl{oXUAqkA8Dh zA$WHCa9~oN2{GGz>}!xW45Y^Y66@8|@z* zwxYN+->@k^MN-G&dEgWh=WYzrZ!nYm^ndGsI}xGW+0YI9c*_J%qhuCaB2~5oT|b;o z&ii+zs7ercCcloK`>GoPH_k)h%B#Ff(D#taN6)*r8A@edfWcHX&#Di z%uI#{m=uJdKmvRP$*gk9k_1!KyX=HDLl|3l2E`j2v=(pq zj89?i5uT%Xhj|@lB;N81<;7!Lhld#VDleJcLOzapPpkZTUXUqIRzKi$R#@xNbef-E zq3|59<1JQ9cmv7#4Np|&2-*1+n3!5#^=u9gRr>k`E?!DQD6{HbxN^C*u)O7H?`L{% zW@*0$DzZGOoIvYqCp@*uz*OW^_P~|Lj-=|%IdvZzlz;+=V9cVlCl-@Rk?m&F&0Jja z%14+uUL#avp0GRM0>FP>lN8i7FXBVZ32UtR2e_iLL1c-`UpnCC3om+zsd^~eIQ|FN z9_sEn>}`2q7g~T8=DPK-WJB2(BC#m13_5-GNK#YmwD$%%(0D(d-E}eLUb@o6?oe87 zZcwse48-s7$a>bwH%|wAc}__x5s6^^eRjQ9dQ7WMhR54x8mt1$r{b}j$|13D-si@I z-|{G8_7wXR<*F$4S6D!gHI;qfx+1_cD$ctE7Et-|*A6>i5*}`D9lpAMi5j;&HGnW5 z^@v1#65o19scE+I_;W@}R)%ldK1;PjXIv8bbWEO!-w=E*KA^6VK!G&CNRg6oHt^zy!&vYn#hq)seOB>sE+2m;lU2-L594Eq4rR%qhSJrr>^gOkd3Wq@=bR^Yo zfavkXBO*zXIKJVO5;q^MKUDn<#t0XQxJWkJFtg|Kg?lY(Z+D06PQGogpO|?h9&K#PmZGVTU4X4nJt$57) z371Gl05XHh-Gy1@erg|yLZIRfF@xs8Yid;f_Jt zcU>coR5C0!YTm1257%mGy7IEu)ED3(&PBQ)?}XZ=$M)}YAS4v86^<6c%Z{KL$-fCq zevc&p;CQ}6lR#Y8Bh~&=22hsqRK$O}AnWg37!YRZx{P0w;oJfyse4T49$-t3J2azxPc8RQC z-I}nMnu-fEBI0+t-cqpGEveI?cKON_SB+M{;eFWS8XKF2Bw**!V_ zlL~&qO>T?FxLqh9Z}XE-o4j1mL?-fmhqpjL-mG38xN)}}>UH9_yv1Ay$6Mx~LUsPW z=P>)wMC6s{!fcTA>IXPeqyEueW=p=AavTmdHlCMl{yW4|$(TT+7ik@ExRv_(Vp zBQy5usoW`~$Va8~XVj*-iPc4%hhTEDpMHHWDKH$dGG}QUGX&@%9Og=E)=LuhN{Ee? zx)j@_=Dq;}FGw}OW`2@vfpu_c96%A`e*nhe--rN8y@fbQIt92OY(uQ*$l!8rX0>zy z)KBJ8ZX-UF_`+rMe%fzZKrZk%s-wxUU{~7poSDfSI2JZ&%kXZ z)Ob+>v;(#CI5$}?kbA!c?huvs`n-7OqzbMSSMc?5d`QVX2^VzVrf>NIRa++F+-s$< zkn8Grw0Kx-^|eVr&4o@)Z;y!}$|A6g`x(d_PTP~%EmNj&8%M*y6Wy)vhtzGJkBlUa z{)zT6&_eH*v8ZPKPIc&=FC&}spjXG#KHX+nP{aH)&+xBzK3pv#2}%e9Fg|Wwne}a% zN@a!QIv?$I!#xaD5BxNsNP+%x_)2PClz!AJd^S`(t0^_5%SIwJpscD`1>-_@+9DBN zQSYx>P-W4)-txTU!;%LP-w!hh(MG~w#CiUeX*91*+^_HdcWZ@xx(@= zLdiXhYzQ_#GN`9CulpiWjAeIonK4im+~mnRReB{RyhQjVJW$4s#1&4X5@|6n>_z&$ zu#{g9{9!wciE}T_1W5dW-|sPQ$tILl3!5oP#P-)5kzpq)P9hP_zQxR9_m?dRF3~f| zV^vdUz5f%fRy2-N;S%`Bt&IrTHrVs=7mHk~@JT<8u|B&kWE1;qP(iFQrH?}B(Sc)v zV~n{X-Ki8b_gpBaG!N=2?KmF!6+7w2v#U772KE-ufQbQ2+3eu->KA#otvy&9yPJ~m zl8_z@$H>}vY?^eq_9N%^bKFhdLja}qMEcwk`&Hh|@vO%K<+N+^)D;Qm{_vbS+2LrI z{{oG2_|zkV_Ua{sNBtjwlV)q`(R`HR3s3U9!t~M0U!O!KzEh?Yk-#08zodxZ`Rs?_ z{c@()C~3O&q-mA=RhnPB zKuMb9xo=WyKx>aUxXz54MDwu6`;Ol17^=uO1TU#CZt$P8W9XqUlbG4QMeU%ZI^w8l zwymQ(|81U}=MPs|pt~0(J+jhYc~)Lo61>65Xb9YBiNwc?_pe=$!S#Fv*1rZxO#yBc zT;I=pL6Xg((dNA*ShS>M+P^n#!(5N&eN(O6v1l$c4O6%*gIG4M80P45lf4Iz0Hx_bJw@mt7YVkYPlsqf>_)l{i- zp19#&_vciEE}PjLjy*rtWsnSzadETNBy!j8P)-?FnADI zalC5^Tm+RE6>4LNv5^O;XGP+qLuIii*JQjkA5qd`2D`J~m5JsjH-~1}`*1Ovf(S&j z%Ro25LjD@H)q%wxt($qtWrm@!$}8h8CXW?uHl%QiXXs@-B>I+%(^&FDuEo`)c*Ytr zWC#)Q2|NpknmacB6N<*`Dm;r4d-?uG_!Se|vh3kHy;mty+a#*GPHS##|l-bmuZ!Iyi{IW`dD@5u?hd!ElS`ye&06hW( zsO;V*@yzVsr`yf7!O8vu5PB0BJZTR;)>m9v2L*NhshOm+5UR-6wqC}=m8g%(@Y|-SZB!@@JKF-x8Vna4D|^gsJ~y zMsF4ZMZr`2nwbIJw_U)(Xc}|6ri>Ud7pD&RS+oXcvp(*LSod1yK|9HCDM*PU7{!*M z^9!QmF^P%{QfnjnzBa~J>UpvSMcTxF0K=5&`|0Qpu`EJuaFYiVKPd~cXZ>D z_WF&mOPGT|iLtuN#Co}NN#eZ?6bJtRMV9%kg#Gi_xz+Bb9i273>h!i~hB}Bw0CXQa zOnN0;IRDEhzR$=IdGo1r5HPD)0O-xdK$^-kZBZYF6IF9?C?ZT)cA$bgfRKe!7WXO2 zn34R;sJC8I7VfiUkpDQ_w`Tz@39=c5q)*;D0KS&>{1W^wS@b7gIcjmzeivCnv_zCj zI5Jj_$B&cP^hoUByC6Xe_eec8+C02>a^kwo}x78_O+UgnVs-688w zDw0x66JzvtQIa@O&jtKwIftL?M}7pkOy%QI>QZq%S6het9+o0@66J-RTf`y4gLYSc zAYJ@hMmh4^E|?xvfCHah&$!xj=B+-q&t6~KAJ(6_C1NxcJq&kkygHQ_&c;arC3Jh< z4+{F-It_yW!-Z<*o24lGX}AMJ`lplw^qSZb6D&$aWX+>MyB4p4CuHH?;iG&qVgKHc4rC z_(p`iW4%f0{rM7PiJ>5Xus>2>OqgCiWfU*n4lU+&(r@=@vy3Ld1Sc(}C<33OCBBTG zh#_BpNn?W_Hhi_90$gljIFlmF@=u#!(!YQGWaxZ-*CpRBydQ%LpsE4vLrfn@LE++XOK#W$7DaL zeLzD(l$k>PE=uc32ZQr>^m9DE}6QFtuy}Z-a7WrMtxY#ETj9J zDI5ZT`%Z@0RKv=2UQz2t%K}hxEk6M4giRIf_#K$<4=;QbY#*7lFoui150~d)q#Q=6 z=l-LoyGuPV4&ddh&!KK;MFZ=g`U)H)6@6s|(oHo+ihFW*@+yx(mSF_QzolWp)qesO z5|bDnL3M4hb$z~fmpe14eF05-xZ56~8N(P=x(oAfU*$*Wmgp7c-%1Jr`v=TArZN;y z#1f*$rK4nZhOc5AF#&|fi5da!1Z+v9ehSM8n!~LUPMppR5ePuSIXM3g|D#`}WBnu% zUzuAT;Lg`H*x?#cy6lOGWZc@w8Rmq-xnow-b_^L#3v%u1j@@i)r@OLQ;cbf%1>Q}a zVj0U}wI<^f$qrn>g++QFSXNdZt7rU0=CMWsRj15*+2{&nt1k^U_m7{^v5mw?CuQxj z9FheUMy^qX1A#oqj}+*Sfs$)~1+1PyBFd5~cu+E)0T$$p*72YkaJ*SZs)zQ% zx?bHrun4r!Yww0Y?2^!3QqY!FScsM-Wg)dJ@+u63a6h^A8t=_Pl7(M|pZDiPC+2)e zbllGJP@-P-_zfLPVKkDpITViJ`noK1JBBcS<0u`8>(UjJ-J^X$Vkoqc z$z@4COjmNytq~3z5CcF~m@O9O4=|H7jCMF}U1YOuLt^`QdZB2AJ%E3JX`mE65W_J( zyOf;-`|lIR#4Zou7POVG&3!$r2`5vbqIF$L42s3VEMX*U!f}iTk>WxgPe>X4n?Yd8 zdHP?wDzQJFZ${Poa~U$}oCd$zcv)q(Us9w`q@_>=4$%u|LqGO*O&FYj46TAXIR-A^ zuLi&TC5NQIf|ZXMmDZ9sz3tEwZ9w$tTd!>QH}SE*+xQXDfc%_6S6BO8=?#|ioaKje@Y&VRl zd%&Y6PJ`c5`bOM^7d4iODCquI&;5WZg45qz~;7v3r@QGhp2_Ss;n^G8!N$1@k zImtg2{oSZt)Ed4v9tE#_l6#K%8lH{}Qc$RSKHOhJCKobbPjmY*=JB3}47q_s>B{m$(5_hj?h!5}s^NaoEP}}t>CzmS=dZHN?ch{@PATnZ96i!@PU+%R z)0ino^|4#}HDz{eu<{zmv5q{H*$0QTR3-r$N;AUA*`$O`jXar%37L3*SONAn;=sj(n17Y(bv77C&02nb*Ln!YP#I$m~;IU$V) z!bgrNjSq}MEt*Dt$Mj9-Wl!?TIO-^}qd&NbK<$$=#iP79sazG=VNvyMOZu(DY}O*Rz-?=0wFx!>OH@6SbCt8Ea05RE{)^L}zz;s*`IJcgm}u7sb|3utg`-JVG+ zLpKV#4kgtAg?pVz;MPPGO0qDi`_f_!I*`;hSuo%-92*^iP2DV%EhP4+2jEeu#uBC` znlAR+8HH0q#bc0l%KJjiZEeUh`*a+@zaIq{A^1+%>baZIpFjuSNW+wBE2*#%?ppC( zLKzySlIT1G?NSDm_;)0?p&gNDsdBeK>a#;9eX;9fxa-oj+1<}m*W2?Q{)%#li z{>$8R!5b?ax$4__M3rfEDMfV%WX+dQ3&L`bIG)gP4aMg!KG)usNJufT&AZEj%zoNb zer69v*9M8UPd{AEK5eB!_9z+t9#R}HSCc*fM-u%-2PI;zEn*KtlU(TbX>6lZK*Bqs zHUx0!y}|>v7{dBwOl2Qo+>jV{<|=wj^}5VLZK;8bKMJAD1}vw%g}alR6}rggH$((j zc^~ZQiG;*~${RH%#-JG+W#jqM3PI}+lr?qaA`T{UP|zy*0^h~$)ftn8%|;zBC_D2YbGFVFb}Il(KQtiv2v{p;5F zRJqJg1u@u(x4G~Ab}GC$>GTuA5#13e)7!N+us@9%BU5N zlgQ%25%fB1zRqcv)9DBczqciKMVUCXMl4PyRm-=ufb!PsX(J*dM z$v=RGJO>i&fQ|uO#f8UnDp1(`Gq8M6F$J&K&9r~eY%^d3*!42$^3Z*6Jgd@GL>8Dg zbHX~uIHz&Q%f6y!8>=TIJ8!Xi;80IRP#%34`h4CVUz-w&?sz(aLvaL^wb+|LR>#Qf zcxWy%jbBigkUqFT)p34hxd%`~~ zE|lW+Nb895POn|VP(d+>8Gl#EaJnj$P?5c6ppQ;}@bsWhPcpPKqK(*3ZfX(7KTjID z*nJB{laWHN2*HM%;h<-e4ZyZA95un|VcLBJWQnzAkA0Y&w99h96cnmM-&#rTAN=hw z#8r$AQmZ4?`azN!q8L-N^-l46NeuXoP-<4laexIv>A%}C@%uwL3dXC8B%_DQ!9mw| zJNB(y)(mStF*~;Ds~zc#LtMDr zl1qnSs|hIr3dmwYG&?hR#$pFdxG#cf8*lneM3uo6RgwyhzopuJ1d1oWPV(wy!`f>p zt6%BmV@=eeoZ(ee<^lAUr8LO#;i!)~M|DJL0(k0j+4n)E#x-Z+AgB~WWHE8z2)J7a z`Q&VVkW<)6j!Nbl5E23I}q5htjvbhy1Q{nVJ! zbGGB5a=0BITQv{&XD`rk8}A0SX}BLew?=h;&;`FMN0bhydJ*)FV?zd%9h+K0EL#Tk z#ShF8Z{Ihj+4BlAZHMvRSITz&H42k6racHm7B&;dmhvd49SHjjRfT?l#kG<{HnQw+ z@_{kb*iMs#Xb+5gypi>zjl$MqcE0{Mg@=q&h@Fa=Zr)QlM)@}&yUkS^TatFYS6;Ah z?q}o#dHQvz{!R5hEcSJrz~Jjukrzq6mpz6BAwqalB_UIa7L|8Wf>4$UdS@)&Tgka3 z@rrsFWPmChXAgmeY%2om?MFr-B|j(a{pBv~gbRFa1P_85qA#~bkDvw}E1VU>Kq>2UzGTzFoWx#_>!h>=f-j-C3%gmV zDXBR1TCt!d(Voc6$fqQ#`8jmxUlkZh2zUq5ca$rn;KS_29UeSQGs$RmIypLJf`rW`t~&)*-UnSbVQ;qA$n9c~AG zI+r%}m~{RIdDYLn@#5~8C%wXc0r{+cdHnu*$Kq*=I&h#47ePd*CVK!_A>TciYrl~d zf54dwU=Kyhp=*FU{*E|hiljbdHwprRPX*=Op_#}1SukdQl&k8HFzP4Mm;MmOfllNW zGSNM981;bq>M?RwzsBW+M19`zy$mQ3(fX+Ro^eU4DazbRN{0`Z95{VtMAq>0Kc*%) ztrEXeOdD!(aM41ZF(5pw?tD?5`#Dg5B21Aw)@l71pXryQy}>`C4mE*v{{ZYB9AJ?3 zG#;#Jfl~`mp#3^Hl%fcK;mrj4RB^Ox*jaweiE^)D{{W6ehzDuhEP3l7a&@^JVEdL_ zxp3WAsrcH=&NiRsG$Wf*{>r*3YJ6seL(yOL=*$OWY!~(5$l-_EfJc*h+@|NS$1>OS$w&j=CM`+R z$y+g+VSK8{ed0jDY$3xnTjqHtVB`m{P9Yv|cY_2I{yDCV&aqE>k=II#A4{E2d=yad zhAHVOgj@G_>0w-V6%&`iPxy3vHlE*rz+E1b{VzX`^d(1DuUp74_y-E=E^uo- zjc}c@FZ4dtGkBjYKTr{5Ws z>#LW(4zqs84nCRn_!G|8pke;a8h{=HydioUME?MI!chkboCIFD?LV%1@X$)Bh{41tsmjbZM>DQWwu-SN zIA!?c@$otaQO6p}b7R(+jUOW|_H~rGMf2SLn52cKmyc#aU@cE*_J2%er4*_A5-Id` z2<{%G@>YB}Ns*i<(a-Q)X*;x+Kr-?h|u0p#jbXOV6xG)2c6ma{njuAvab|k{)YziKIJIDaw zeB&ZC0eL+O()hSu+S@4m2QLrt4L`t+55dEPl$RmL*f_q^G6V$SPlh;fLnuW!T(Utt zG@k|JHO8MXC-{>9^Kh2_4oy+cUJw`kDCZ(?Artyyl^^w(xGCnVt%87zhH@z*Th0cB z>gG<{>x{0fzlZMky_>TmGCuI1quKaZFU}3;ysL+EA|UT5?ioiVyp^emvaICMkcr=uA{`ALo;0^KGzAoM@$-6`ymw}H$QGE}GnxeBe_Ku6YCSBw~=?XE>tecS@5 zc1bcsq2W`P_~<-095Fi|89`u_FF1$^4uhj2!SKv|@MKsO)p}*0*GCu?34mj-dC(9! zUuO595S()0Mxdg-QPu!vvA!Ozy)xbt{x}yQCw=vh6O0jcv~nX<1MT&W;Y6V0hY}jU z?8qe)qu_32qrv4LPrr_UOkEy_P(9>`Dsq}1J(xkUJLyU9*@?tM!W=m#A^td)!<=_8 zeq<;SWMjs-%f7}BURLB7S zu3$s1Yn3@=!6qYs_WHso!?)^aHthX}d z?8)yTlQ3r(UYz#mMt&Mxq+#9EM*|0V^ZEY(^Y+P?4e^eUe}?ZVq&T<-$2kqQI6N8Z z>3K@z0jFxf#C21^HJ^TrLI^|;12i>P%Wx5Ap*Uxk;hmM@^)dqRID;=aK&jpiA0`pk zMgIT{)oeY!{uyb^4vhx9yv(#@ona3g#(&v@Fc}j?pd{Bpi{dNhDwt_lAD$KFuFVnloG`;*F})>w^qdWYMQJ^K>O1dJYPXF(;SwF5W- zfpgRLoTK77+`N=aJ=4jDO|qB#VohD3r}*w-O(*sIPO@a)hUw0D;|ZS_zd#r zCQomS-d-|(FTQt9I?&!Z$P{|R4h(DP)aSkOWPcSpnu;yYM>_(qiG>~(cgBm+f}uT} z04VJTnT{yFfx)OTKA8C;IQqVg;8ABC0qZfvbXj{B))$;HULlMD4_Qlk@CIb#1eG%V zyP_9~hLZYm=vBc%D`{~MIneg!Qd8N+DIj1nyqceuZ7A8q<9|>#|ZMF?ECXE z5)+HK2v2*0&!L?E02~Maa*Nh5P8q}q+#oNNr~cqybfG3{LEf69Uhps1NOOzm)p}iC0$$w=NEjhD`I^Ni@?w@eX|}<_ zJY+T+{{RdMZ9|y%mG(R*%&ZcnADfX2>7~I(kFgQXvqfgd;mU`Yy@Gp79I+o%2T959 zjz6P@FETL~`f%hXsL?n{?YZxlcCaxE=M*bIXS*<2%CNS$=eA zZ?ioggg=fA?>aZGf!w|5PV%M-qjAk==UM!@W^^2J%W*^l?Ot4j=Q&;@l5o~y?HoAs zm&ilQmIqbsbBl5uf|e)V z&2B2O5y0ZGr1B3ZWj&b@$i3(5$cK|GELu%xq(T=*MsS2rN^)z$TWbz~F_lDoGd!jO z0pLkT#lQ%cbiw{PKKBf!M7Pdd(97NLB)n&%CVayQo)XRNn6hZW&P$uixNl{~BIhRP z&T|QH9l5UyGm9L@S-?hlT%FZDa2adB-Xk@RMdn`S7J$NVBZJ$PXM^hp%faIVi1Oe` z%J$*~a&~ZG{{Ri%r=1>$>S@^9?8R$qIgL^rX+Mifj^>Z25}as^q(A=Li0gAj^~G0Fg@}A0A{6irJVl& z;$^iKA|`e8Gdb*0Ap1QpXJee|auMUP9?Tp_Ug@U;{V)BdPRsi>=I9eoRQ~{U{sH3X zV@_mN7(uvN$Bhp>XOV7rE1UlSt}}tBH!_DTwq(vv`Mf4TUheYMT?cqDVCt37Z!QU= z<;gN+XHffqa^!f!d_&F|X3715`a6WQ;$Lx84_c7Qg-*kRp*XhloYOCBqO) z#-S}9MCNLZzJh2 zqEdFpk~&9)%{_Uco_&m$MjSG5-Esw0cn$Wv3Q|<%# zob#3xXT~>8+;FQ7QlcK_E=9D2CojNyM8^h5GoPiJ%8?5`7s~2)J24g^{m)@FP9T~+KYsDq#!W{PI)xZfWD~0FAiWmGf z=i!zecdRdmSbztY1aMbHUSD2~dSMvmki$yoE*f9}d|cqg7_WFU<3V^^)%fFf4+oGv zeLmACF(uaD3EDYG(pE*`F(tRfB;_oRmkd)BB=KGm@1zMA|EHXE08aav{rD51<_$ zew=lcilfhN*SDV#SCD?zMM32Eg3B}(FIY>BL^LVRj;=$kHYPJ#uu%aig;YS2=n})G zv}M_fNbVt^=(68a0$Lin!k#d>-cA^`2TaXlmtA7;_{uHJYL8}Gq~lbLJ6{3X-1%jP z5A}O@EZC}Q7(9!PT~}-E{{Z2SsG-}fY#!eRD5*oW$YId!#*g=OQw{8^tB{FrZcO%3U|k|t##5qOZ87a4nR4KR25{5xl(|UIU^b@bi6u>4Ll{lVGF{Q zeI}d2y(GIIUe8WNSpYmYNgimEmiWj(oaW1xi3hOPnj5zS)&t(`a&Ym2Q$4RPyqH`R@H|}fgKBWujo`*ZfWFK?DL7%+d2=NQU7?L8p374m2s?-= zUf(){vb|y9xgz(DEB0#SaJlqV#E7#H1XaOcz4wOSMxjYlquwGHmpmt^!Qo zRqqW$!9d89P!?bwSEEFQLiyolL^5fej|e!%@N3CuB0VxWE(K>)aYvQY>CW|-J-sWi zPQ5rSxjjRcJc)~&6;U2kbf%}gAO-0#3R}H2Dgor;_2DpOYO;f`9X=$$E*2sOLOmux zF$xRb??RZ3revecr%f^;&{=25(J6*kVv$0RC$mKSf(3Jd9v`M3e5uJ*@JKl%Se&9L z^Be+)P*+}1Jd$n-LC{c<8t6@qId6>re@d@w|)?Q0Uk3j4(I^X}kXb>@q8(J)m>Fhwu}gT;Oz>JIZi81$8Z) zYx6^y<-{^)fzj>u)I~lDQRx|u zQZf_{4lgN+(J@dJ1Pj@$SQ$X*6RvD<8dNz0lv~Lx!^l;D@;*SF>*8A~PXs$}WD^uT zBuF0ylQ7}|!k&0}=PasKUG|GenIZsG5PgfB0aSY+?v$95!jY{`yoPyAXaOZ5WL$ZI z)geJWImJ;R+A=~V!=O&L9F1o{_D$kThyVk_lA84R!thQU3Gsq7tJuc0IPzlOCMkmO zt}K5i6%z}>xE|+4$j|a7Xf5H{E;&fG&??R3T!=g)$(}8^K*I@sWMKaQ45Og`0JjdF z%>8QU^^PxCczT*$T;4fy1hEB%k7Tx{hXr;nS>bi)h2(e)qzrLM+bhUKSi$&aQA$zA z*D)a$FGdj1dsexl*H!N!{{Tat4;Tt^P7g)^(y5EcCQe+#30JAc?c`RfZ8AR*CR3l-Hel{MpCG3+Q#KrVG_W#s`A+m0NR$%nc)zTu3bmy)lu zTs3H_5{u`DhdX7MO0+~r-XJ2m2d`(F{{XSiC|I~DEgqbWxgt>Xk%)Cn4ku@nl?K@5 z9AX53x&^r1`X}u>{W+Gr11;bO4CxudDj-FDv5AC3tqKnmj2s5-wec;zCOL;#Jdm~F zAN?jfQWn&Ip3J3+oRH(x z)Li`A<;{K7%+=>H$-Up(xoBA3pUur4qR4s&Ic$Jo`=3YYYtGYh29ked_8U+$*+^FRS?GM z#|JqSt^yxJ{-Kh0<0d#w9%+?JEcKE{W5z!suQTpn9CTs~+T##CV1S$%6t0~aTHL(i z!`GqBM%)Su-e^x0@r+XoiJr1YIHV@GE=k{mCwXp-|HJ?!5di@K00IL600IL60RaF2 z0096I5FsEjK~XSqKw*KA!BGF&00;pB0RcY{&+-W5@gMgGz6($P01G(SAmeWT04)Ci zH`fP&!Jlu05XOI-oOj4@UjG1x)>RlmPxtN$;ox4$RTeUbLe>^>)^{7((@-WGjn@&UFv`FZ_ajSagiBJ^uix=iT<|JHGH) z5p~=iPhv)wbZrOW>$lGVP8_!clkI_-)*pbBa%a|pe!(E+ba!7=Z4wAbJ(|bf9A^b!UA9UdS^V#;v z;ic3JEY}DH^Y$`;b~Ry%gz7Rgc8m3T7rQw(v;P`vG>NA34 z$n@=*+{h0@ZCp)q0j;Cdac{yGK3c6lSV!Zc7hC}$v)81anf={}-?E2$vEN|%9btQ) zTpz@A^Q3v??oNRrub+B=?OEY~(mNm(m{;#p6h7hMf2FDRv&R1bci-36>5votmJY$I z8sBU2^Ee*^!SELU0GCJ4BHjXLK{{EP2cz7B2G}-ehfGLoRJ8RKs{mo|WgOVUx!k?! zSZvPFH@>fe=)PYggIm-v&cl2kBi!|rZv#9T0ZZR7{`H=%v77Qq@Yp86WUnrda0?p5 z03e&TXT$C;_i464nmrj}Z!?|aVl$NBk0IH6E$J-V`cLssbJ7ahBt7hjfuTPAXPGiP}`*&c>3uA@Wym)z`J{-bW<$1`o|ox%KAUGjOX+r0ZJ z-HvL#voW=&#>f8vQ4LFtP-dt5=12`B?VX;lgE5YNw1atkz zkFwlljP8$DaRk4ah(VQj&XcG66F4hyK`G2=MP9Am-bJRSyDf>~kTe1(=x21o6g z{23%!vG9oV%Q$V8I64y;K?RUOU&)Z*@w=vR^UFLQ8$Vm@o%JLpAVd+v(I7&| zf_Gn=FWyMEB@}jRMNV>B!Tu(J#}f>`&pgSv;LYUwe-hS7Gta6OZVF zyWbd}n<@0hotN~meX;XB#^-S862&u|eJmeMoDs>!@w^J^+7|CD+2My7dW;0?;~La- z*$01Y`=qntUFRQcZx7_7qXq8vSLknCJZr{tuR_H&j6<`-;1*gk8pVT{m*B8SXwHB# zhD_2QjiBygy<7Wjdy!$@+pfnth@Utej{@)Q_Hcst6MgUqBxC?zCPo&^Y1YXs9}C*p zGWuWYIy9TZ2e}Vcql9jSxs!BT54`^X|HJ?x5di=K0|5X70RaI4000000096I5Fs%^ zAW>m)fsvvA+5iXv0|5a)5WIVi+X+}W;P^NP20phumxsv8_$RY`m3xeTA?Wgd8Rboh z%|{M-@5T6E#4$|}`PR7^U$B+wDg~;_w$4pzX{dUY4A;km)}ZG89bt{mvgLa|{#~4B zlsk&l*xce&<>#@%BoW$7ISWfoCTkO=gb9FK8d3Wvf4Ti0x5 zUBOuGe^KYb@tb^=QM7`Qx~WC7`rv^pC*U7d1W%anxE1X6-J zGP;YxC5ktR@#kgKS=wik;sGzhc7hEc#TluhGePV~c9xzu3aHBqQk+30E?%y05b~lS;t~O?;aKE(Q8Zz=3%SI+45o>v21qCoPy_@K zHvt-e8lQ$+vcoJm0V}A8Fe(#t)~*hj8J_&1tq%vT3o$|wWWrk+j=bp%;nr-ZtdAdKb)&<|q=*_8c=3fvKBhOUhXeGK@@u*@&?_Nf+t~R zBe_6pkZrz8Z%{M{uw5$Mz@hR}Peids6{2i4FR{X5G2LSMbCs+PT0>_0jdt6)>@)j~ zk{|$`FGd1V>BnMWHya4cPax4m2E$UorciW)TOCXG z^nii^bq`Aj!O@z>N}4QS2Vxa*SL0EJ>L}V9OsL}i3_T-UARW1K{^j0+aIzm>&u~P6 zvI-i8(DFQzh;ZE8v9%&Ca^R)Mk-K(JM{GlGKy#9W5VDKNs+ac!)sF`C2vo3|d4_(+ z;lfn?sjH1VohI&S)+%p2skE}NE(>BNmtT;!FaALK7%`=X8BGF5$EL0k3f{0~0RF}S zm0O7NHc`byJ`CHv_Udt-0%P@r};m$7ZdFgmpE|&LL5>DUMbc7E#!#Qsv`p zRSrU(RD!h#;*P*l%`|c%Hj4{lMP@bkI~`PT%a>;5+_Z#h4N*PrY8beDD@54AV9KT~ zrH!l!%F5nBO_NrqefVl`ap5b=Cczj{sPB`L_7vd5^Cy^pP$e)Sg2y%xM8Q_F8^vEG zV4U!bcSJ9YscRq!bI`?n2L=2Ie8#A`swD`*#}^h{M7x&QvDTchXJh(DRZI)qe=++s zle)i&IrF)4<;9hdmq?7QT+@tgXZIxq3LN5ly3k#k983WoSya&4w$`!M`|LQ8Qx=2rm8O7T)b7AjVajUxoa0L z640I?t!=4fsl7p=2Qqc_zawKzt;2x=1+_{%iT52fUQWbCxE*GUvL!%EASD+sZMnh% Q-r*F)#Z}6F=F)%v+0F@oB>(^b literal 0 HcmV?d00001 diff --git a/web/eleventy-dist/index.html b/web/eleventy-dist/index.html new file mode 100644 index 0000000..0f0267e --- /dev/null +++ b/web/eleventy-dist/index.html @@ -0,0 +1,165 @@ + + + + + + + + + Home - Amplify + + + + + + + + + + + + + + + + + +
+
+ © Studio 24 +
+
+ + + + + \ 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 0000000..21ef648 --- /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 0000000..004eadf --- /dev/null +++ b/web/eleventy-dist/layout-helpers/center/index.html @@ -0,0 +1,215 @@ + + + + + + + + + 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 0000000..f08edc8 --- /dev/null +++ b/web/eleventy-dist/layout-helpers/cluster/index.html @@ -0,0 +1,227 @@ + + + + + + + + + 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 0000000..d929ada --- /dev/null +++ b/web/eleventy-dist/layout-helpers/cover/index.html @@ -0,0 +1,222 @@ + + + + + + + + + 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 0000000..38e738b --- /dev/null +++ b/web/eleventy-dist/layout-helpers/frame/index.html @@ -0,0 +1,230 @@ + + + + + + + + + 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 0000000..96e4c6d --- /dev/null +++ b/web/eleventy-dist/layout-helpers/index.html @@ -0,0 +1,211 @@ + + + + + + + + + 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 0000000..67b58d8 --- /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 0000000..f617bab --- /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 0000000..ebafdaf --- /dev/null +++ b/web/eleventy-dist/layout-helpers/sidebar/index.html @@ -0,0 +1,224 @@ + + + + + + + + + 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 0000000..2d56cea --- /dev/null +++ b/web/eleventy-dist/layout-helpers/simple-search/index.html @@ -0,0 +1,214 @@ + + + + + + + + + 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 0000000..128699a --- /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 0000000..f8aa9ac --- /dev/null +++ b/web/eleventy-dist/layout-helpers/switcher/index.html @@ -0,0 +1,226 @@ + + + + + + + + + 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 0000000..24ddfb3 --- /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 0000000..24ddfb3 --- /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 0000000..24ddfb3 --- /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 0000000..9583c2b --- /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 0000000..4596d43 --- /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 0000000..24ddfb3 --- /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 0000000..24ddfb3 --- /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/styles/advanced.css b/web/eleventy-dist/styles/advanced.css new file mode 100644 index 0000000..f513f8a --- /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 0000000..c8244b0 --- /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 0000000..f9af41c --- /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
    E.g robin.smith@example.co.uk
    + + + + + +
    +
    + © Studio 24 +
    +
    + + + + \ No newline at end of file From 1672ad090b7e31caeaad048922d3d39365ae4758 Mon Sep 17 00:00:00 2001 From: Jamie Date: Wed, 8 Feb 2023 16:08:11 +0000 Subject: [PATCH 4/4] Added remaining components --- web/amplify/eleventy/.DS_Store | Bin 0 -> 8196 bytes .../accessible-autocomplete.njk | 11 + .../_includes/advanced-components/cards.njk | 0 .../advanced-components/carousel.njk | 0 .../advanced-components/collapsibles.njk | 10 + .../advanced-components/disclosure-widget.njk | 0 .../advanced-components/disclosure.njk | 2 + .../_includes/advanced-components/tabs.njk | 13 + web/amplify/eleventy/_includes/base.njk | 12 +- web/amplify/eleventy/_includes/components.njk | 8 +- .../_includes/core-components/avatar.njk | 8 + .../_includes/core-components/breadcrumbs.njk | 13 + .../_includes/core-components/card.njk | 12 - .../_includes/core-components/cards.njk | 166 ++- .../core-components/image-component.njk | 17 + .../_includes/core-components/notes.njk | 20 +- .../_includes/core-components/pagination.njk | 0 .../core-components/progress-indicator.njk | 23 + .../core-components/quote-component.njk | 0 .../_includes/core-components/quote.njk | 6 + .../_includes/core-components/search.njk | 0 .../_includes/core-components/shelves.njk | 0 .../core-components/sticky-footer.njk | 0 .../_includes/core-components/tag-list.njk | 0 .../_includes/core-components/video.njk | 6 + .../_includes/design/typography-test.njk | 0 .../_includes/fundamentals/details.njk | 4 + .../eleventy/_includes/fundamentals/form.njk | 6 +- .../eleventy/_includes/fundamentals/icon.njk | 0 .../eleventy/_includes/fundamentals/table.njk | 49 + .../eleventy/_includes/global/global-nav.njk | 4 +- .../eleventy/_includes/layout-helpers/box.njk | 11 + .../_includes/layout-helpers/center.njk | 1 + .../_includes/layout-helpers/cluster.njk | 13 + .../_includes/layout-helpers/cover.njk | 27 +- .../_includes/layout-helpers/frame.njk | 18 + .../_includes/layout-helpers/sidebar.njk | 16 + .../_includes/layout-helpers/switcher.njk | 9 + web/amplify/eleventy/_includes/page.njk | 6 +- .../eleventy/_includes/system/component.njk | 13 +- .../system/forms/field-types/input.njk | 41 + .../system/forms/field-types/select.njk | 13 + .../eleventy/_includes/system/forms/field.njk | 156 ++- .../accessible-autocomplete.md | 1009 ++++++++++++++++- .../eleventy/advanced-components/cards.md | 84 +- .../advanced-components/collapsibles.md | 20 + .../advanced-components/disclosure-widget.md | 8 + .../eleventy/advanced-components/tabs.md | 29 +- .../eleventy/core-components/avatars.md | 9 +- .../eleventy/core-components/breadcrumbs.md | 18 + .../core-components/image-component.md | 12 +- web/amplify/eleventy/core-components/notes.md | 31 + .../eleventy/core-components/pagination.md | 17 + .../core-components/progress-indicator.md | 23 + .../core-components/quote-component.md | 10 + .../eleventy/core-components/shelves.md | 110 +- .../eleventy/core-components/simple-cards.md | 23 +- .../eleventy/core-components/tag-list.md | 21 + .../core-components/video-component.md | 15 + web/amplify/eleventy/design/design.json | 3 +- .../eleventy/design/typography-test.md | 33 +- .../eleventy/fundamentals/details-summary.md | 10 +- .../eleventy/fundamentals/flow-elements.md | 32 +- .../eleventy/fundamentals/form-errors.md | 442 ++++++-- web/amplify/eleventy/fundamentals/forms.md | 516 +++++++-- web/amplify/eleventy/fundamentals/tables.md | 126 +- web/amplify/eleventy/get-started.md | 11 +- web/amplify/eleventy/index.md | 3 +- web/amplify/eleventy/layout-helpers.md | 2 + web/amplify/eleventy/layout-helpers/box.md | 49 +- web/amplify/eleventy/layout-helpers/center.md | 8 +- .../eleventy/layout-helpers/cluster.md | 47 +- web/amplify/eleventy/layout-helpers/cover.md | 52 +- web/amplify/eleventy/layout-helpers/frame.md | 73 +- .../eleventy/layout-helpers/sidebar.md | 39 +- .../eleventy/layout-helpers/switcher.md | 18 +- 76 files changed, 3097 insertions(+), 520 deletions(-) create mode 100644 web/amplify/eleventy/.DS_Store delete mode 100644 web/amplify/eleventy/_includes/advanced-components/cards.njk delete mode 100644 web/amplify/eleventy/_includes/advanced-components/carousel.njk delete mode 100644 web/amplify/eleventy/_includes/advanced-components/disclosure-widget.njk create mode 100644 web/amplify/eleventy/_includes/advanced-components/disclosure.njk delete mode 100644 web/amplify/eleventy/_includes/core-components/card.njk delete mode 100644 web/amplify/eleventy/_includes/core-components/pagination.njk delete mode 100644 web/amplify/eleventy/_includes/core-components/quote-component.njk create mode 100644 web/amplify/eleventy/_includes/core-components/quote.njk delete mode 100644 web/amplify/eleventy/_includes/core-components/search.njk delete mode 100644 web/amplify/eleventy/_includes/core-components/shelves.njk delete mode 100644 web/amplify/eleventy/_includes/core-components/sticky-footer.njk delete mode 100644 web/amplify/eleventy/_includes/core-components/tag-list.njk delete mode 100644 web/amplify/eleventy/_includes/design/typography-test.njk create mode 100644 web/amplify/eleventy/_includes/fundamentals/details.njk delete mode 100644 web/amplify/eleventy/_includes/fundamentals/icon.njk create mode 100644 web/amplify/eleventy/_includes/fundamentals/table.njk create mode 100644 web/amplify/eleventy/_includes/layout-helpers/sidebar.njk create mode 100644 web/amplify/eleventy/_includes/system/forms/field-types/input.njk create mode 100644 web/amplify/eleventy/_includes/system/forms/field-types/select.njk diff --git a/web/amplify/eleventy/.DS_Store b/web/amplify/eleventy/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..22caccd9fdf984ef1428f3508352c803514a6107 GIT binary patch literal 8196 zcmeI1&u-H|5XNWQv^WZ+DgRUsNS3&!B`FnZ#l?hj;7Sl200p}?t%YkxangXINWQ}} z@CuxH5#EIpe6zb$cH)#?ph)aWyR)(P+u8kjY-bW85}lFXCfXn(3zco7hNh(Od9HJ1 zNgr8<70?s8Pom_&ixO{ctT|u^7y^cXAz%m?0{;d9ytBDj3*P(ctZ5AaL*Tz8z|RL8 zm93*~rmTE)pphv6Yz2p9K_7X5)Y#fO+Gfg1Ddtq!gV0i;Qw*WxIB)ZCSV!ATStTc- z`X-i^D=Vv)EX%4{ue(RdxI1)*qqO4=Uh=1B zNfLR#`mXmp49302^+!oObi+6pNI~ca81m{x82ib%lZ;|NmD;X4VO6WuUgOqe(%#)^ zH|_1+y=l{)>}|K2_RhWg(`nVZap&%Xr@eR4ah!aV+a;l&HgrXOK5ajtR|4atJBXts zKEzp8UISF0PS7&40R2tagpR3?HpY<{&}R^e+fe4A-#p(ew1s*7;^h#$kNjL~(*FRS z&$E*6GwQ2ntIJlf#4PeFSXE(zFgm2TxLO%*p9|q8Lrje=n_Y%mUU8Y;A~0k4a6v=y zbrGy(jPts+MY=Mtl4@RE!(IYh$xTZ6CZYjaTgB33kCI|uYsuS?>AWu+ z&m=`XN3sqEE`31MjpRCypo|cO0oFRhhM5+$>t|`pymJKSW^k}?z8x}U)h%V-|4hRa zL*U{FEGyR=oc}*w{QLjKEzo#21Pp;cPC!)lyZaruQLpBCf1GREsBciY@VHD_DM2IC jaafs-!=Cl*JJg^F=^nFpVMbR|)(CvH~>R literal 0 HcmV?d00001 diff --git a/web/amplify/eleventy/_includes/advanced-components/accessible-autocomplete.njk b/web/amplify/eleventy/_includes/advanced-components/accessible-autocomplete.njk index e69de29..d6a4b0d 100644 --- a/web/amplify/eleventy/_includes/advanced-components/accessible-autocomplete.njk +++ 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/cards.njk b/web/amplify/eleventy/_includes/advanced-components/cards.njk deleted file mode 100644 index e69de29..0000000 diff --git a/web/amplify/eleventy/_includes/advanced-components/carousel.njk b/web/amplify/eleventy/_includes/advanced-components/carousel.njk deleted file mode 100644 index e69de29..0000000 diff --git a/web/amplify/eleventy/_includes/advanced-components/collapsibles.njk b/web/amplify/eleventy/_includes/advanced-components/collapsibles.njk index e69de29..1e09b54 100644 --- a/web/amplify/eleventy/_includes/advanced-components/collapsibles.njk +++ 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-widget.njk b/web/amplify/eleventy/_includes/advanced-components/disclosure-widget.njk deleted file mode 100644 index e69de29..0000000 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 0000000..c66fb58 --- /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 index e69de29..971c281 100644 --- a/web/amplify/eleventy/_includes/advanced-components/tabs.njk +++ b/web/amplify/eleventy/_includes/advanced-components/tabs.njk @@ -0,0 +1,13 @@ +
      + {%- for key, tab in params.tabs -%} +
    • + {{ tab.title }} +
    • + {%- endfor -%} +
    +{%- 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 index e2a4444..4b1ad12 100644 --- a/web/amplify/eleventy/_includes/base.njk +++ b/web/amplify/eleventy/_includes/base.njk @@ -66,11 +66,19 @@ - +{%- if "tabs" in page.url -%} + +{%- endif -%} \ No newline at end of file diff --git a/web/amplify/eleventy/_includes/components.njk b/web/amplify/eleventy/_includes/components.njk index 685fa8c..2d10ab8 100644 --- a/web/amplify/eleventy/_includes/components.njk +++ b/web/amplify/eleventy/_includes/components.njk @@ -2,17 +2,23 @@ {%- for key, item in components -%} {%- if item.type and item.name and item.data -%} - {{ component(item.type, item.name, 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 -%} diff --git a/web/amplify/eleventy/_includes/core-components/avatar.njk b/web/amplify/eleventy/_includes/core-components/avatar.njk index e69de29..039e398 100644 --- a/web/amplify/eleventy/_includes/core-components/avatar.njk +++ 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 index e69de29..f38f036 100644 --- a/web/amplify/eleventy/_includes/core-components/breadcrumbs.njk +++ 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/card.njk b/web/amplify/eleventy/_includes/core-components/card.njk deleted file mode 100644 index d407141..0000000 --- a/web/amplify/eleventy/_includes/core-components/card.njk +++ /dev/null @@ -1,12 +0,0 @@ -{%- extends cards.njk -%} -{%- block card -%} -{%- if params.type -%} - {%- set cardType = " card--" + params.type -%} -{%- endif -%} -{%- block card -%} -
    -

    {{ card.heading }}

    - {{ card.body | safe }} -
    -{%- endblock -%} -{%- endblock -%} \ 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 index ae24f22..9e85613 100644 --- a/web/amplify/eleventy/_includes/core-components/cards.njk +++ b/web/amplify/eleventy/_includes/core-components/cards.njk @@ -1,58 +1,130 @@ -
    - {%- if params.cards -%} -
    -
    +{%- 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 -%}
    - {%- endif -%}
    + {%- endfor -%}
    - {%- endfor -%}
    -
    - {%- 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.image -%} -
    - {{ params.image.altText }} -
    + {%- 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 -%} -
    \ No newline at end of file +
    +{%- 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 index e69de29..322bb5b 100644 --- a/web/amplify/eleventy/_includes/core-components/image-component.njk +++ 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 index 5ad16bd..cd8351c 100644 --- a/web/amplify/eleventy/_includes/core-components/notes.njk +++ b/web/amplify/eleventy/_includes/core-components/notes.njk @@ -1,23 +1,21 @@ -{%- if params.type === "info" -%} -
    -
    -

    {{ params.title }}

    - {{ params.message | safe }} -
    +{% if params.type === "info" %} +
    +

    {{ params.title }}

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

    {{ params.title }}

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

    {{ params.title }}

    {{ params.message | safe }}
    -{%- elif params.type === "error" -%} - \ 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 index e69de29..5978c8c 100644 --- a/web/amplify/eleventy/_includes/layout-helpers/frame.njk +++ 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 0000000..4036ffd --- /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 index e69de29..9abf162 100644 --- a/web/amplify/eleventy/_includes/layout-helpers/switcher.njk +++ 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 index bc83d72..e96acdf 100644 --- a/web/amplify/eleventy/_includes/page.njk +++ b/web/amplify/eleventy/_includes/page.njk @@ -4,10 +4,8 @@ layout: base.njk
    {%- include "global/sidebar.njk" -%}
    -
    +

    {{ title }}

    -
    - {{ content | safe }} -
    + {{ 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 index 1a8a084..6b02340 100644 --- a/web/amplify/eleventy/_includes/system/component.njk +++ b/web/amplify/eleventy/_includes/system/component.njk @@ -1,3 +1,14 @@ {%- macro component(type, name, params) -%} - {%- include '../' + type + '/' + name + '.njk' -%} +{%- 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/forms/field-types/input.njk b/web/amplify/eleventy/_includes/system/forms/field-types/input.njk new file mode 100644 index 0000000..8f3eaf3 --- /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 0000000..ac41d72 --- /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 index 420180d..3fdbfce 100644 --- a/web/amplify/eleventy/_includes/system/forms/field.njk +++ b/web/amplify/eleventy/_includes/system/forms/field.njk @@ -1,52 +1,120 @@ +{%- from "./field-types/input.njk" import input -%} +{%- from "./field-types/select.njk" import select -%} {%- macro field(params) -%} -
    - {%- if params.label -%} -
    {%- endmacro -%} \ 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 index d9bbc5f..2697fae 100644 --- a/web/amplify/eleventy/advanced-components/accessible-autocomplete.md +++ b/web/amplify/eleventy/advanced-components/accessible-autocomplete.md @@ -1,11 +1,1018 @@ --- 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. -Country +{{ pageComponents(components) }} Considerations -------------- diff --git a/web/amplify/eleventy/advanced-components/cards.md b/web/amplify/eleventy/advanced-components/cards.md index 5d4b495..11c2cc7 100644 --- a/web/amplify/eleventy/advanced-components/cards.md +++ b/web/amplify/eleventy/advanced-components/cards.md @@ -1,5 +1,56 @@ --- 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: @@ -14,38 +65,7 @@ Do not wrap the contents of a card inside a singular `a` element. This can resul 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 block link card ------------------ - -### [Cats and the Internet](https://en.wikipedia.org/wiki/Cats_and_the_Internet) - -Examining the popularity of cat-related media content online. - -![](https://amplify.studio24.net/dist/images/jpg-cat-1.jpg) - -Block link card with call-to-action (CTA) ------------------------------------------ - -### [Cats and the Internet](https://en.wikipedia.org/wiki/Cats_and_the_Internet) - -Examining the popularity of cat-related media content online. - -Read more - -![](https://amplify.studio24.net/dist/images/jpg-cat-1.jpg) - -A block link card with tag links --------------------------------- - -### [Cats and the Internet](https://en.wikipedia.org/wiki/Cats_and_the_Internet) - -Examining the popularity of cat-related media content online. - -- [Content tagged with Arts and culture](https://www.studio24.net/work-sector/arts-and-culture/) -- [Content tagged with Education](https://www.studio24.net/work-sector/education/) -- [Content tagged with Charity and not-for-profit](https://www.studio24.net/work-sector/charity-and-not-for-profit/) - -![](https://amplify.studio24.net/dist/images/jpg-cat-1.jpg) +{{ pageComponents(components) }} Considerations -------------- diff --git a/web/amplify/eleventy/advanced-components/collapsibles.md b/web/amplify/eleventy/advanced-components/collapsibles.md index 5c58842..323208f 100644 --- a/web/amplify/eleventy/advanced-components/collapsibles.md +++ b/web/amplify/eleventy/advanced-components/collapsibles.md @@ -1,10 +1,30 @@ --- 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 -------------- diff --git a/web/amplify/eleventy/advanced-components/disclosure-widget.md b/web/amplify/eleventy/advanced-components/disclosure-widget.md index 1b1eebd..c98a475 100644 --- a/web/amplify/eleventy/advanced-components/disclosure-widget.md +++ b/web/amplify/eleventy/advanced-components/disclosure-widget.md @@ -1,10 +1,18 @@ --- 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 -------------- diff --git a/web/amplify/eleventy/advanced-components/tabs.md b/web/amplify/eleventy/advanced-components/tabs.md index d587281..ace5d1d 100644 --- a/web/amplify/eleventy/advanced-components/tabs.md +++ b/web/amplify/eleventy/advanced-components/tabs.md @@ -1,16 +1,29 @@ --- 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. -- [Grumpy Cat](https://amplify.studio24.net/amplify/advanced-components/tabs.html#grumpy-cat) -- [Lil Bub](https://amplify.studio24.net/amplify/advanced-components/tabs.html#lil-bub) -- [Maru](https://amplify.studio24.net/amplify/advanced-components/tabs.html#maru) - -Grumpy Cat ----------- - -[Grumpy Cat](https://en.wikipedia.org/wiki/Grumpy_Cat) was a notable Internet cat, known and nicknamed for her permanently grumpy facial features. +{{ pageComponents(components) }} Considerations -------------- diff --git a/web/amplify/eleventy/core-components/avatars.md b/web/amplify/eleventy/core-components/avatars.md index 1511b79..fbb9725 100644 --- a/web/amplify/eleventy/core-components/avatars.md +++ b/web/amplify/eleventy/core-components/avatars.md @@ -1,9 +1,16 @@ --- 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. -![](https://www.w3.org/2006/05/u/1682ihk1hqqo-sm.jpg) +{{ pageComponents(components) }} Considerations -------------- diff --git a/web/amplify/eleventy/core-components/breadcrumbs.md b/web/amplify/eleventy/core-components/breadcrumbs.md index 558746a..deb16ec 100644 --- a/web/amplify/eleventy/core-components/breadcrumbs.md +++ b/web/amplify/eleventy/core-components/breadcrumbs.md @@ -1,6 +1,24 @@ --- 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 -------------- diff --git a/web/amplify/eleventy/core-components/image-component.md b/web/amplify/eleventy/core-components/image-component.md index 564d204..411cbb1 100644 --- a/web/amplify/eleventy/core-components/image-component.md +++ b/web/amplify/eleventy/core-components/image-component.md @@ -1,9 +1,17 @@ --- 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.

    --- -![](https://amplify.studio24.net/dist/images/jpg-cat-1.jpg) -The figcaption is not a replacement for the image's `alt` attribute. It should be used for providing relevant supporting content. +{{ pageComponents(components) }} Considerations -------------- diff --git a/web/amplify/eleventy/core-components/notes.md b/web/amplify/eleventy/core-components/notes.md index 5858917..bf3af9c 100644 --- a/web/amplify/eleventy/core-components/notes.md +++ b/web/amplify/eleventy/core-components/notes.md @@ -1,8 +1,39 @@ --- 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 -------------- diff --git a/web/amplify/eleventy/core-components/pagination.md b/web/amplify/eleventy/core-components/pagination.md index 9908be3..586cb92 100644 --- a/web/amplify/eleventy/core-components/pagination.md +++ b/web/amplify/eleventy/core-components/pagination.md @@ -1,6 +1,23 @@ --- title: Pagination --- + + + Considerations -------------- diff --git a/web/amplify/eleventy/core-components/progress-indicator.md b/web/amplify/eleventy/core-components/progress-indicator.md index 7d60c1c..acebcb8 100644 --- a/web/amplify/eleventy/core-components/progress-indicator.md +++ b/web/amplify/eleventy/core-components/progress-indicator.md @@ -1,4 +1,27 @@ --- title: Progress indicator +components: + progressIndicator: + type: core-components + name: progress-indicator + data: + steps: + step1: + complete: true + number: 1 + name: Delivery address + step2: + number: 2 + name: Billing address + current: true + step3: + number: 3 + name: Payment details + step4: + number: 4 + name: Confirmation + --- +{{ pageComponents(components) }} + While it is [recommended not to use progress indicators](https://design-system.service.gov.uk/patterns/question-pages/#using-progress-indicators) for forms, Amplify does include one: \ No newline at end of file diff --git a/web/amplify/eleventy/core-components/quote-component.md b/web/amplify/eleventy/core-components/quote-component.md index 9291c0c..75796b2 100644 --- a/web/amplify/eleventy/core-components/quote-component.md +++ b/web/amplify/eleventy/core-components/quote-component.md @@ -1,6 +1,16 @@ --- title: Quote component +components: + quote: + type: core-components + name: quote + data: + quote: I think all cats are wild. They only act tame if there's a saucer of milk in it for them. + author: Douglas Adams --- + +{{ pageComponents(components) }} + Considerations -------------- diff --git a/web/amplify/eleventy/core-components/shelves.md b/web/amplify/eleventy/core-components/shelves.md index 351111d..13a0338 100644 --- a/web/amplify/eleventy/core-components/shelves.md +++ b/web/amplify/eleventy/core-components/shelves.md @@ -1,5 +1,73 @@ --- title: Shelves +components: + cards: + type: core-components + name: cards + data: + componentType: shelves + cards: + card1: + 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 + 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: @@ -10,47 +78,7 @@ Shelves provide a flexbox framework for arranging groups of items such as [cards Heading for the shelves component --------------------------------- -Lorem ipsum dolor sit amet, consectetuer adipiscing elit. - -- ### Cats and the Internet - - Examining the popularity of cat-related media content online. - - [Cats and the Internet: Read more](https://en.wikipedia.org/wiki/Cats_and_the_Internet) - - ![](https://amplify.studio24.net/dist/images/jpg-cat-1.jpg) - -- ### Cats and the Internet - - Examining the popularity of cat-related media content online. - - [Cats and the Internet: Read more](https://en.wikipedia.org/wiki/Cats_and_the_Internet) - - ![](https://amplify.studio24.net/dist/images/jpg-cat-1.jpg) - -- ### Cats and the Internet - - Examining the popularity of cat-related media content online. - - [Cats and the Internet: Read more](https://en.wikipedia.org/wiki/Cats_and_the_Internet) - - ![](https://amplify.studio24.net/dist/images/jpg-cat-1.jpg) - -- ### Cats and the Internet - - Examining the popularity of cat-related media content online. - - [Cats and the Internet: Read more](https://en.wikipedia.org/wiki/Cats_and_the_Internet) - - ![](https://amplify.studio24.net/dist/images/jpg-cat-1.jpg) - -- ### Cats and the Internet - - Examining the popularity of cat-related media content online. - - [Cats and the Internet: Read more](https://en.wikipedia.org/wiki/Cats_and_the_Internet) - - ![](https://amplify.studio24.net/dist/images/jpg-cat-1.jpg) +{{ pageComponents(components) }} Considerations -------------- diff --git a/web/amplify/eleventy/core-components/simple-cards.md b/web/amplify/eleventy/core-components/simple-cards.md index 2f3533b..850c470 100644 --- a/web/amplify/eleventy/core-components/simple-cards.md +++ b/web/amplify/eleventy/core-components/simple-cards.md @@ -1,5 +1,22 @@ --- 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: @@ -15,11 +32,7 @@ A simple card ### Cats and the Internet -Examining the popularity of cat-related media content online. - -[Cats and the Internet: Read more](https://en.wikipedia.org/wiki/Cats_and_the_Internet) - -![](https://amplify.studio24.net/dist/images/jpg-cat-1.jpg) +{{ pageComponents(components) }} Considerations -------------- diff --git a/web/amplify/eleventy/core-components/tag-list.md b/web/amplify/eleventy/core-components/tag-list.md index 9bf407e..4394f87 100644 --- a/web/amplify/eleventy/core-components/tag-list.md +++ b/web/amplify/eleventy/core-components/tag-list.md @@ -1,6 +1,27 @@ --- 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 -------------- diff --git a/web/amplify/eleventy/core-components/video-component.md b/web/amplify/eleventy/core-components/video-component.md index bc19ee1..6f9bcd7 100644 --- a/web/amplify/eleventy/core-components/video-component.md +++ b/web/amplify/eleventy/core-components/video-component.md @@ -1,6 +1,21 @@ --- 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 -------------- diff --git a/web/amplify/eleventy/design/design.json b/web/amplify/eleventy/design/design.json index cae2750..3c57df2 100644 --- a/web/amplify/eleventy/design/design.json +++ b/web/amplify/eleventy/design/design.json @@ -1,5 +1,6 @@ { "layout": "page.njk", "tags": "design", - "templateEngineOverride": "njk, md" + "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 index 7b2bd03..ecd6de1 100644 --- a/web/amplify/eleventy/design/typography-test.md +++ b/web/amplify/eleventy/design/typography-test.md @@ -1,5 +1,33 @@ --- 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. @@ -71,9 +99,6 @@ A [paragraph](https://en.wikipedia.org/wiki/Paragraph) is a self-contained unit 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 -| Column header 1 | Column header 2 | Column header 3 | -| --- | --- | --- | -| Row 1 header | Row 1, cell 2 | Row 1, cell 3 | -| Row 2 header | Row 2, cell 2 | Row 2, cell 3 | +{{ 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/details-summary.md b/web/amplify/eleventy/fundamentals/details-summary.md index 4dea036..3ad16f1 100644 --- a/web/amplify/eleventy/fundamentals/details-summary.md +++ b/web/amplify/eleventy/fundamentals/details-summary.md @@ -1,9 +1,17 @@ --- 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. -This is the summary content +{{ pageComponents(components) }} Considerations -------------- diff --git a/web/amplify/eleventy/fundamentals/flow-elements.md b/web/amplify/eleventy/fundamentals/flow-elements.md index 52e5493..f4d2498 100644 --- a/web/amplify/eleventy/fundamentals/flow-elements.md +++ b/web/amplify/eleventy/fundamentals/flow-elements.md @@ -5,33 +5,33 @@ 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 (H2O) and sup (E = MC2) elements. +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. +`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. +`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." +`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". +`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: H2O. sup is used for superscripts: E = MC2. +`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]" +`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. +`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. +`time`: use for specifying 5 A.M. in a machine-readable format. -kbd and samp: I did this: +`kbd` and `samp`: I did this: -c:\>format c: /yes +c:\>`format c: /yes` -Is that bad? Press Ctrl+F5 for a hard reload. +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. +`var`: To log in, type `ssh *user*@example.com`, where *user* is your user ID. -mark: the HTML equivalent of the yellow highlighter. +`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 +`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 index b078aed..36c5b94 100644 --- a/web/amplify/eleventy/fundamentals/form-errors.md +++ b/web/amplify/eleventy/fundamentals/form-errors.md @@ -1,5 +1,366 @@ --- 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: @@ -7,20 +368,7 @@ To notify a user of an error with their form submission: 2. Place an error summary at the top of the page 3. Add an error message to each problematic input -There is a problem ------------------- - -- [Enter a name](https://amplify.studio24.net/amplify/fundamentals/form-errors.html#name) -- [Enter a message](https://amplify.studio24.net/amplify/fundamentals/form-errors.html#message) -- [Enter an account number](https://amplify.studio24.net/amplify/fundamentals/form-errors.html#account-number) -- [Enter an arrival date](https://amplify.studio24.net/amplify/fundamentals/form-errors.html#arrival-date) -- [Enter a start time](https://amplify.studio24.net/amplify/fundamentals/form-errors.html#meeting-time) -- [Enter a date of birth](https://amplify.studio24.net/amplify/fundamentals/form-errors.html#bday-day) -- [The file must be 2MB or smaller](https://amplify.studio24.net/amplify/fundamentals/form-errors.html#file) -- [Select yes if you do own pets](https://amplify.studio24.net/amplify/fundamentals/form-errors.html#pets_yes) -- [Choose a segmented option](https://amplify.studio24.net/amplify/fundamentals/form-errors.html#segmented-option-1) -- [Choose at least one item you like](https://amplify.studio24.net/amplify/fundamentals/form-errors.html#chocolate) -- [Choose your preferred day](https://amplify.studio24.net/amplify/fundamentals/form-errors.html#day) +{{ pageComponents(components.errorNote) }} Page title ========== @@ -30,77 +378,19 @@ Example form showcasing error messages ### Dealing with text -Name (Required) Error: Enter a name - -E.g. Robin Smith - -Your message (Required) Error: Enter a message +{{ pageComponents(components.errorForms.textErrors) }} ### Dealing with numbers -Account number (Required) Error: Enter an account number - -Must be between 6 and 8 numbers long +{{ pageComponents(components.errorForms.numbersErrors) }} ### Dealing with dates and times -Date of arrival (Required) Error: Enter an arrival date - -For example 30/05/2021 - -Date of birth (Required) (an example of a memorable date) Error: Enter a date of birth - -For example 20 07 1972 - -Day - -Month - -Year - -Specify a start time for your meeting Error: Enter a start time - -Use UTC and your local time zone - -Start time - -Time zone +{{ pageComponents(components.errorForms.dateErrors) }} ### Other input types -Upload an image Error: The file must be 2MB or smaller - -Maximum file size 2MB - -Do you own any pets? (Required) Error: Select yes if you do own pets - - Yes - - No - - Prefer not to say - -Segmented options (Radio) Error: Choose an option - -We understand that different people enjoy books in different ways, which is why we're giving you lots of options. - - Budget option Copy to explain this option in more detail. - - Value option Copy to explain this option in more detail. - - Expensive option Copy to explain this option in more detail. - -Things you like Error: Choose at least one item - - Chocolate - - Coffee - - Cake - - Chips - -Preferred day of appointment Error: Choose your preferred day +{{ pageComponents(components.errorForms.otherErrors) }} Error summary considerations ---------------------------- diff --git a/web/amplify/eleventy/fundamentals/forms.md b/web/amplify/eleventy/fundamentals/forms.md index fa80ac2..9d1858d 100644 --- a/web/amplify/eleventy/fundamentals/forms.md +++ b/web/amplify/eleventy/fundamentals/forms.md @@ -1,5 +1,421 @@ --- 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/). @@ -37,21 +453,7 @@ Provide hint text when users are more likely to make a mistake, such as when hav Dealing with text ----------------- -Name (Required) - -E.g. Robin Smith - -Email - -E.g. robin.smith@example.co.uk - -Website address - -Password - -Must contain 8+ characters with at least 1 number - -Your message +{{ pageComponents(components.formBasic) }} ### How to make filling in text fields easier @@ -64,15 +466,7 @@ Use `autocapitalize="none"`, `autocorrect="off"` and `spellcheck="false"` to sto Dealing with numbers -------------------- -Account number - -Must be between 6 and 8 numbers long - -Phone number - -Please include your country code - -Number of guest tickets required +{{ pageComponents(components.formNumbers) }} ### How to make filling in number fields easier @@ -85,27 +479,7 @@ When asking for payment details, including the `autocomplete` attribute can help Dealing with dates and times ---------------------------- -Date of arrival - -For example 30/05/2021 - -Date of birth (an example of a memorable date) - -For example 20 07 1972 - -Day - -Month - -Year - -Specify a start time for your meeting - -Use UTC and your local time zone - -Start time - -Time zone +{{ pageComponents(components.formDates) }} ### How to make providing dates and times easier @@ -118,24 +492,12 @@ Again, due to inconsistencies with how different browsers and Assistive Technolo File input ---------- -Choose a file +{{ pageComponents(components.formFiles) }} Checkboxes ---------- -Things you like - -Select all that apply. - - Chocolate - - Coffee - - Cake - - Chips - -Fries or frites, not crisps. +{{ pageComponents(components.formCheckboxes) }} ### How to make checkboxes easier to use @@ -146,15 +508,7 @@ If required, hint text can be added for the entire checkbox group and/or for ind Radios ------ -Have you changed your name? - -This includes changing your family name or spelling your name differently. - - Yes - - No - -Hint text for this radio item would go here. +{{ pageComponents(components.formRadios) }} ### How to make radios easier to use @@ -167,15 +521,7 @@ If required, hint text can be added for the entire radio group and/or for indivi Segmented options ----------------- -Segmented options (Radio) - -We understand that different people enjoy books in different ways, which is why we're giving you lots of options. - - Budget option Copy to explain this option in more detail. - - Value option Copy to explain this option in more detail. - - Expensive option Copy to explain this option in more detail. +{{ pageComponents(components.formSegments) }} The purpose of segmented options is to show all available options outright, rather than hiding them behind a `select`. It can be used with either checkboxes, or with radio buttons as in the preceding example. @@ -184,7 +530,7 @@ The basis of this pattern is the [switcher layout](https://amplify.studio24.net/ Select ------ -Sort by +{{ pageComponents(components.formSelect) }} ### Considerations @@ -210,19 +556,7 @@ Fixed-width inputs There is a collection of CSS classes prefixed with `input-width-` which, when added to an `input`, will reduce the maximum width of the input field to better suit the intended contents: -30 character width - -20 character width - -10 character width - -5 character width - -4 character width - -3 character width - -2 character width +{{ pageComponents(components.formFixedWidth) }} Form validation --------------- diff --git a/web/amplify/eleventy/fundamentals/tables.md b/web/amplify/eleventy/fundamentals/tables.md index 78f3a6b..573b0e8 100644 --- a/web/amplify/eleventy/fundamentals/tables.md +++ b/web/amplify/eleventy/fundamentals/tables.md @@ -1,13 +1,118 @@ --- title: Tables +components: + exampleTable: + 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 + spiceTable: + table: + type: fundamentals + name: table + data: + hasWrapper: true + captionId: unique-caption-id + title: Member of the Spice Girls + headings: + firstName: + text: First name + lastName: + text: Last name + bandName: + text: Band name + dateOfBirth: + text: Date of birth + placeOfBirth: + text: Place of birth + rows: + emma: + columns: + firstName: + text: Emma + lastName: + text: Bunton + bandName: + text: Baby + dateOfBirth: + text: 21 January 1976 + placeOfBirth: + text: Watford, Hertfordshire + geri: + columns: + firstName: + text: Geri + lastName: + text: Halliwell + bandName: + text: Ginger + dateOfBirth: + text: 21 January 1972 + placeOfBirth: + text: London + victoria: + columns: + firstName: + text: Victoria + lastName: + text: Beckham + bandName: + text: Posh + dateOfBirth: + text: 17 April 1974 + placeOfBirth: + text: Harlow, Essex + melb: + columns: + firstName: + text: Melanie + lastName: + text: Brown + bandName: + text: Scary + dateOfBirth: + text: 29 May 1975 + placeOfBirth: + text: Leeds, Yorkshire + melc: + columns: + firstName: + text: Melanie + lastName: + text: Chisholm + bandName: + text: Sporty + dateOfBirth: + text: 12 January 1974 + placeOfBirth: + text: Whiston, Merseyside + --- -Example table -------------- -| Column header 1 | Column header 2 | Column header 3 | -| --- | --- | --- | -| Row 1 header | Row 1, cell 2 | Row 1, cell 3 | -| Row 2 header | Row 2, cell 2 | Row 2, cell 3 | +{{ pageComponents(components.exampleTable) }} Considerations -------------- @@ -33,14 +138,7 @@ The grid structure of data tables must remain intact, no matter the available sp - A JavaScript enhancement checks whether the wrapper has any overflow. If there is no overflow, the `tabindex`, `role` and `aria-labelledby` attributes are all removed; but they need to exist in the base markup in case JavaScript is not available. -Members of the Spice Girls -| First name | Last name | Band name | Date of birth | Place of birth | -| --- | --- | --- | --- | --- | -| Emma | Bunton | Baby | 21 January 1976 | Watford, Hertfordshire | -| Geri | Halliwell | Ginger | 6 August 1972 | London | -| Victoria | Beckham | Posh | 17 April 1974 | Harlow, Essex | -| Melanie | Brown | Scary | 29 May 1975 | Leeds, Yorkshire | -| Melanie | Chisholm | Sporty | 12 January 1974 | Whiston, Merseyside | +{{ pageComponents(components.spiceTable) }} ### Notes on responsive tables diff --git a/web/amplify/eleventy/get-started.md b/web/amplify/eleventy/get-started.md index e6de8fc..c9c3fcb 100644 --- a/web/amplify/eleventy/get-started.md +++ b/web/amplify/eleventy/get-started.md @@ -13,9 +13,14 @@ components: message: |

    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.

    +

    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 @@ -33,4 +38,6 @@ components: - 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 + - 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/index.md b/web/amplify/eleventy/index.md index bc40662..6433845 100644 --- a/web/amplify/eleventy/index.md +++ b/web/amplify/eleventy/index.md @@ -7,7 +7,8 @@ components: cover: type: layout-helpers name: cover - data: + data: + lead: true title: Amplify body: Welcome to the Studio 24 starter kit for design and front-end development cards: diff --git a/web/amplify/eleventy/layout-helpers.md b/web/amplify/eleventy/layout-helpers.md index c84c827..6170691 100644 --- a/web/amplify/eleventy/layout-helpers.md +++ b/web/amplify/eleventy/layout-helpers.md @@ -1,6 +1,8 @@ --- 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. diff --git a/web/amplify/eleventy/layout-helpers/box.md b/web/amplify/eleventy/layout-helpers/box.md index c06e690..d4a8e1c 100644 --- a/web/amplify/eleventy/layout-helpers/box.md +++ b/web/amplify/eleventy/layout-helpers/box.md @@ -1,5 +1,34 @@ --- 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`. @@ -7,25 +36,7 @@ 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. -Default box ------------ - -Default box, with padding and border - -Box without padding -------------------- - -Box with no padding - -Box without border ------------------- - -Box with no border - -Box without padding or border ------------------------------ - -Box with no padding and no border +{{ pageComponents(components) }} Considerations -------------- diff --git a/web/amplify/eleventy/layout-helpers/center.md b/web/amplify/eleventy/layout-helpers/center.md index 01921a5..df0ce88 100644 --- a/web/amplify/eleventy/layout-helpers/center.md +++ b/web/amplify/eleventy/layout-helpers/center.md @@ -1,5 +1,11 @@ --- 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). @@ -7,4 +13,4 @@ Padding on the sides of the center layout helper maintains a space between its c 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. -Center layout in action \ No newline at end of file +{{ 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 index 45ddf33..20f70f3 100644 --- a/web/amplify/eleventy/layout-helpers/cluster.md +++ b/web/amplify/eleventy/layout-helpers/cluster.md @@ -1,5 +1,41 @@ --- 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`. @@ -9,13 +45,4 @@ The cluster items - `li` in this example - sit within this container. Each item 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. -- Item One -- Item Two -- Item Three -- Item Four -- Item Five -- Item Six -- Item Seven -- Item Eight -- Item Nine -- Item Ten \ No newline at end of file +{{ 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 index 86d876f..76263f5 100644 --- a/web/amplify/eleventy/layout-helpers/cover.md +++ b/web/amplify/eleventy/layout-helpers/cover.md @@ -1,26 +1,42 @@ --- 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. -Cover with horizontal centering using a utility class ------------------------------------------------------ - -Here is the principal content - -Cover with a nested center layout for horizontal centering ----------------------------------------------------------- - -Here is the principal content - -Cover with optional header and footer content ---------------------------------------------- - -"Header" content, e.g. a close button - -The principal content - -"Footer" content +{{ pageComponents(components) }} ### Considerations diff --git a/web/amplify/eleventy/layout-helpers/frame.md b/web/amplify/eleventy/layout-helpers/frame.md index 04c0bc2..874d73f 100644 --- a/web/amplify/eleventy/layout-helpers/frame.md +++ b/web/amplify/eleventy/layout-helpers/frame.md @@ -1,35 +1,54 @@ --- 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. -16:9 aspect ratio ------------------ - -![](https://amplify.studio24.net/dist/images/jpg-cat-1.jpg) - -An example of the 16:9 frame modifier - -3:2 aspect ratio ----------------- - -![](https://amplify.studio24.net/dist/images/jpg-cat-1.jpg) - -An example of the 3:2 frame modifier - -4:3 aspect ratio ----------------- - -![](https://amplify.studio24.net/dist/images/jpg-cat-1.jpg) - -An example of the 4:3 frame modifier - -Square aspect ratio -------------------- - -![](https://amplify.studio24.net/dist/images/jpg-cat-1.jpg) - -An example of the square frame modifier +{{ pageComponents(components) }} Considerations -------------- diff --git a/web/amplify/eleventy/layout-helpers/sidebar.md b/web/amplify/eleventy/layout-helpers/sidebar.md index d29eee5..61cec08 100644 --- a/web/amplify/eleventy/layout-helpers/sidebar.md +++ b/web/amplify/eleventy/layout-helpers/sidebar.md @@ -1,5 +1,23 @@ --- 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". @@ -12,21 +30,16 @@ 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. -Default sidebar ---------------- - -Wide panel - -Narrow "sidebar" panel - -Using nested containers for spacing content -------------------------------------------- - -Wide panel - -Narrow "sidebar" panel +{{ 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/switcher.md b/web/amplify/eleventy/layout-helpers/switcher.md index d57aa15..028f51f 100644 --- a/web/amplify/eleventy/layout-helpers/switcher.md +++ b/web/amplify/eleventy/layout-helpers/switcher.md @@ -1,5 +1,17 @@ --- 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). @@ -7,11 +19,7 @@ As with the [cluster](https://amplify.studio24.net/amplify/layout-helpers/cluste As there are **no viewport media queries**, the switcher will nest nicely inside other containers. -Item 1 - -Item 2 - -Item 3 +{{ pageComponents(components) }} Considerations --------------