From adbf4a944ee6a6071a0a3b6b77a91020330097cc Mon Sep 17 00:00:00 2001 From: Andrew Hosgood Date: Tue, 12 Sep 2023 18:05:47 +0100 Subject: [PATCH 01/16] Add compiled per-component CSS and JS to package --- .github/workflows/_prototype-kit-test.yml | 2 + package.json | 2 +- src/nationalarchives/all.mjs | 20 +- src/nationalarchives/all.scss | 8 +- src/nationalarchives/components/_index.scss | 35 +- .../components/breadcrumbs/_index.scss | 110 +--- .../components/breadcrumbs/breadcrumbs.scss | 110 ++++ .../components/button/_index.scss | 84 +-- .../components/button/button.scss | 101 +++ .../components/button/button.stories.js | 37 +- .../components/button/macro-options.json | 8 +- .../components/button/template.njk | 9 +- .../components/card/_index.scss | 189 +----- .../components/card/card.scss | 189 ++++++ .../components/cookie-banner/_index.scss | 1 + .../cookie-banner/cookie-banner.mjs | 22 + .../cookie-banner/cookie-banner.scss | 11 + .../cookie-banner/cookie-banner.stories.js | 34 + .../components/cookie-banner/fixtures.json | 4 + .../cookie-banner/macro-options.json | 20 + .../components/cookie-banner/macro.njk | 3 + .../components/cookie-banner/template.njk | 15 + .../components/filters/_index.scss | 53 +- .../components/filters/filters.scss | 52 ++ .../components/footer/_index.scss | 262 +------- .../components/footer/footer.scss | 263 ++++++++ .../components/gallery/_index.scss | 127 +--- .../components/gallery/gallery.mjs | 2 +- .../components/gallery/gallery.scss | 128 ++++ .../components/grid/_index.scss | 81 +-- .../components/grid/grid.scss | 80 +++ .../components/header/_index.scss | 593 +----------------- .../components/header/header.scss | 593 ++++++++++++++++++ .../components/hero/_index.scss | 168 +---- .../components/hero/hero.scss | 168 +++++ .../components/index-grid/_index.scss | 83 +-- .../components/index-grid/index-grid.scss | 83 +++ .../components/message/_index.scss | 36 +- .../components/message/message.scss | 35 ++ .../components/phase-banner/_index.scss | 61 +- .../components/phase-banner/phase-banner.scss | 61 ++ .../components/picture/_index.scss | 64 +- .../components/picture/picture.scss | 64 ++ .../components/profile/_index.scss | 3 +- .../components/profile/profile.scss | 4 + .../components/sensitive-image/_index.scss | 78 +-- .../sensitive-image/sensitive-image.scss | 77 +++ .../components/skip-link/_index.scss | 64 +- .../components/skip-link/skip-link.scss | 60 ++ .../components/tabs/_index.scss | 143 +---- .../components/tabs/tabs.scss | 142 +++++ .../colour-schemes/colour-schemes.stories.js | 26 +- .../templates/layouts/_generic.njk | 7 +- src/nationalarchives/tools/_colour.scss | 24 + src/nationalarchives/tools/_index.scss | 10 +- src/nationalarchives/tools/_spacing.scss | 2 +- src/nationalarchives/utilities/_index.scss | 10 +- src/nationalarchives/variables/_colour.scss | 26 +- src/nationalarchives/variables/_grid.scss | 2 +- tasks/test-package.js | 4 + webpack.config.js | 15 +- 61 files changed, 2522 insertions(+), 2246 deletions(-) create mode 100644 src/nationalarchives/components/breadcrumbs/breadcrumbs.scss create mode 100644 src/nationalarchives/components/button/button.scss create mode 100644 src/nationalarchives/components/card/card.scss create mode 100644 src/nationalarchives/components/cookie-banner/_index.scss create mode 100644 src/nationalarchives/components/cookie-banner/cookie-banner.mjs create mode 100644 src/nationalarchives/components/cookie-banner/cookie-banner.scss create mode 100644 src/nationalarchives/components/cookie-banner/cookie-banner.stories.js create mode 100644 src/nationalarchives/components/cookie-banner/fixtures.json create mode 100644 src/nationalarchives/components/cookie-banner/macro-options.json create mode 100644 src/nationalarchives/components/cookie-banner/macro.njk create mode 100644 src/nationalarchives/components/cookie-banner/template.njk create mode 100644 src/nationalarchives/components/filters/filters.scss create mode 100644 src/nationalarchives/components/footer/footer.scss create mode 100644 src/nationalarchives/components/gallery/gallery.scss create mode 100644 src/nationalarchives/components/grid/grid.scss create mode 100644 src/nationalarchives/components/header/header.scss create mode 100644 src/nationalarchives/components/hero/hero.scss create mode 100644 src/nationalarchives/components/index-grid/index-grid.scss create mode 100644 src/nationalarchives/components/message/message.scss create mode 100644 src/nationalarchives/components/phase-banner/phase-banner.scss create mode 100644 src/nationalarchives/components/picture/picture.scss create mode 100644 src/nationalarchives/components/profile/profile.scss create mode 100644 src/nationalarchives/components/sensitive-image/sensitive-image.scss create mode 100644 src/nationalarchives/components/skip-link/skip-link.scss create mode 100644 src/nationalarchives/components/tabs/tabs.scss diff --git a/.github/workflows/_prototype-kit-test.yml b/.github/workflows/_prototype-kit-test.yml index c636d1b1..309b0a7d 100644 --- a/.github/workflows/_prototype-kit-test.yml +++ b/.github/workflows/_prototype-kit-test.yml @@ -37,6 +37,7 @@ jobs: echo -e "{% from \"nationalarchives/components/breadcrumbs/macro.njk\" import tnaBreadcrumbs %}\n$(cat prototype/app/views/index.html)" > prototype/app/views/index.html && echo -e "{% from \"nationalarchives/components/button/macro.njk\" import tnaButton %}\n$(cat prototype/app/views/index.html)" > prototype/app/views/index.html && echo -e "{% from \"nationalarchives/components/card/macro.njk\" import tnaCard %}\n$(cat prototype/app/views/index.html)" > prototype/app/views/index.html && + echo -e "{% from \"nationalarchives/components/cookie-banner/macro.njk\" import tnaCookieBanner %}\n$(cat prototype/app/views/index.html)" > prototype/app/views/index.html && echo -e "{% from \"nationalarchives/components/filters/macro.njk\" import tnaFilters %}\n$(cat prototype/app/views/index.html)" > prototype/app/views/index.html && echo -e "{% from \"nationalarchives/components/footer/macro.njk\" import tnaFooter %}\n$(cat prototype/app/views/index.html)" > prototype/app/views/index.html && echo -e "{% from \"nationalarchives/components/gallery/macro.njk\" import tnaGallery %}\n$(cat prototype/app/views/index.html)" > prototype/app/views/index.html && @@ -57,6 +58,7 @@ jobs: echo "{{ tnaBreadcrumbs({}) }}" >> prototype/app/views/index.html && echo "{{ tnaButton({text:\"I am a button\",url:\"#\"}) }}" >> prototype/app/views/index.html && echo "{{ tnaCard({}) }}" >> prototype/app/views/index.html && + echo "{{ tnaCookieBanner({}) }}" >> prototype/app/views/index.html && echo "{{ tnaFilters({}) }}" >> prototype/app/views/index.html && echo "{{ tnaFooter({}) }}" >> prototype/app/views/index.html && echo "{{ tnaGallery({}) }}" >> prototype/app/views/index.html && diff --git a/package.json b/package.json index 8c302840..be5d28c5 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "test": "node tasks/test-fixtures.js && test-storybook --verbose --stories-json", "lint": "prettier --check '{src,.storybook,tasks}/**/*.{js,mjs,scss,json,html}' && stylelint 'src/**/*.scss' && eslint 'src/**/*.mjs'", "lint:fix": "prettier --write '{src,.storybook,tasks}/**/*.{js,mjs,scss,json,html}' && stylelint --fix 'src/**/*.scss' && eslint --fix 'src/**/*.mjs'", - "package:sass": "sass --style=compressed --embed-sources src/nationalarchives/all.scss package/nationalarchives/all.css", + "package:sass": "sass --style=compressed --embed-sources src/nationalarchives:package/nationalarchives", "package:scripts": "webpack" }, "repository": { diff --git a/src/nationalarchives/all.mjs b/src/nationalarchives/all.mjs index c75c9538..bcb44e99 100644 --- a/src/nationalarchives/all.mjs +++ b/src/nationalarchives/all.mjs @@ -1,4 +1,5 @@ import { Breadcrumbs } from "./components/breadcrumbs/breadcrumbs.mjs"; +import { CookieBanner } from "./components/cookie-banner/cookie-banner.mjs"; import { Gallery } from "./components/gallery/gallery.mjs"; import { Header } from "./components/header/header.mjs"; import { Picture } from "./components/picture/picture.mjs"; @@ -6,7 +7,6 @@ import { SensitiveImage } from "./components/sensitive-image/sensitive-image.mjs import { Tabs } from "./components/tabs/tabs.mjs"; const $body = document.documentElement; - $body.classList.add("tna-template--js-enabled"); const onFirstTouch = () => { @@ -51,6 +51,13 @@ const initAll = (options) => { new Breadcrumbs($breadcrumbs).init(); } + const $cookieBanner = $scope.querySelector( + '[data-module="tna-cookie-banner"]', + ); + if ($cookieBanner) { + new CookieBanner($cookieBanner).init(); + } + const $galleries = $scope.querySelectorAll('[data-module="tna-gallery"]'); $galleries.forEach(($gallery) => { new Gallery($gallery).init(); @@ -79,4 +86,13 @@ const initAll = (options) => { }); }; -export { initAll, Breadcrumbs, Header, Picture, SensitiveImage, Tabs }; +export { + initAll, + Breadcrumbs, + CookieBanner, + Gallery, + Header, + Picture, + SensitiveImage, + Tabs, +}; diff --git a/src/nationalarchives/all.scss b/src/nationalarchives/all.scss index d6bddfe2..6fc73e0d 100644 --- a/src/nationalarchives/all.scss +++ b/src/nationalarchives/all.scss @@ -10,8 +10,8 @@ * ------------------------------------------------ */ -@forward "variables"; -@forward "tools"; +@use "variables"; +@use "tools"; -@forward "utilities"; -@forward "components"; +@use "utilities"; +@use "components"; diff --git a/src/nationalarchives/components/_index.scss b/src/nationalarchives/components/_index.scss index 87730fd6..754ebcef 100644 --- a/src/nationalarchives/components/_index.scss +++ b/src/nationalarchives/components/_index.scss @@ -1,17 +1,18 @@ -@forward "breadcrumbs"; -@forward "button"; -@forward "card"; -@forward "filters"; -@forward "footer"; -@forward "gallery"; -@forward "grid"; -@forward "header"; -@forward "hero"; -@forward "index-grid"; -@forward "message"; -@forward "phase-banner"; -@forward "picture"; -@forward "profile"; -@forward "sensitive-image"; -@forward "skip-link"; -@forward "tabs"; +@use "breadcrumbs"; +@use "button"; +@use "card"; +@use "cookie-banner"; +@use "filters"; +@use "footer"; +@use "gallery"; +@use "grid"; +@use "header"; +@use "hero"; +@use "index-grid"; +@use "message"; +@use "phase-banner"; +@use "picture"; +@use "profile"; +@use "sensitive-image"; +@use "skip-link"; +@use "tabs"; diff --git a/src/nationalarchives/components/breadcrumbs/_index.scss b/src/nationalarchives/components/breadcrumbs/_index.scss index 80a44a55..c04d1781 100644 --- a/src/nationalarchives/components/breadcrumbs/_index.scss +++ b/src/nationalarchives/components/breadcrumbs/_index.scss @@ -1,109 +1 @@ -@use "../../tools/colour"; -@use "../../tools/media"; -@use "../../tools/typography"; - -.tna-breadcrumbs { - padding-top: 1rem; - padding-bottom: 1rem; - - &__wrapper { - &:focus { - outline: none !important; - } - } - - &__list { - margin: 0; - padding: 0; - - list-style: none; - - display: flex; - flex-wrap: wrap; - } - - &__item { - display: flex; - - + .tna-breadcrumbs__item { - &::before { - margin: 0 0.75rem; - - display: inline-block; - - vertical-align: baseline; - - content: "\203A"; - } - } - - &--expandable { - display: none; - - @include media.on-mobile { - display: inline-block !important; - } - } - } - - &__link { - display: inline-block; - - &, - &:link, - &:visited { - @include colour.colour-font("font-base"); - } - - &:hover { - @include colour.colour-font("font-dark"); - } - - @include colour.on-high-contrast { - padding-right: 0.75rem; - padding-left: 0.75rem; - - text-decoration: none; - - @include colour.colour-border("keyline-dark", 1px); - - &:hover { - text-decoration: underline; - - @include colour.colour-font("contrast-background"); - - @include colour.colour-background("contrast-font-base"); - } - } - } - - button#{&}__link { - margin: 0; - padding: 0; - height: 100%; - - font-size: inherit; - line-height: inherit; - font-weight: inherit; - - background-color: transparent; - - border: none; - - appearance: none; - cursor: pointer; - - &:hover { - color: inherit; - @include typography.interacted-text-decoration; - - background-color: transparent; - } - } - - @include media.on-mobile { - &--collapsed &__item:not(:first-child, &__item--expandable, :last-child) { - display: none; - } - } -} +@use "breadcrumbs"; diff --git a/src/nationalarchives/components/breadcrumbs/breadcrumbs.scss b/src/nationalarchives/components/breadcrumbs/breadcrumbs.scss new file mode 100644 index 00000000..e2a1054d --- /dev/null +++ b/src/nationalarchives/components/breadcrumbs/breadcrumbs.scss @@ -0,0 +1,110 @@ +@use "../../tools/colour"; +@use "../../tools/media"; +@use "../../tools/typography"; +@use "../grid"; + +.tna-breadcrumbs { + padding-top: 1rem; + padding-bottom: 1rem; + + &__wrapper { + &:focus { + outline: none !important; + } + } + + &__list { + margin: 0; + padding: 0; + + list-style: none; + + display: flex; + flex-wrap: wrap; + } + + &__item { + display: flex; + + + .tna-breadcrumbs__item { + &::before { + margin: 0 0.75rem; + + display: inline-block; + + vertical-align: baseline; + + content: "\203A"; + } + } + + &--expandable { + display: none; + + @include media.on-mobile { + display: inline-block !important; + } + } + } + + &__link { + display: inline-block; + + &, + &:link, + &:visited { + @include colour.colour-font("font-base"); + } + + &:hover { + @include colour.colour-font("font-dark"); + } + + @include colour.on-high-contrast { + padding-right: 0.75rem; + padding-left: 0.75rem; + + text-decoration: none; + + @include colour.colour-border("keyline-dark", 1px); + + &:hover { + text-decoration: underline; + + @include colour.colour-font("contrast-background"); + + @include colour.colour-background("contrast-font-base"); + } + } + } + + button#{&}__link { + margin: 0; + padding: 0; + height: 100%; + + font-size: inherit; + line-height: inherit; + font-weight: inherit; + + background-color: transparent; + + border: none; + + appearance: none; + cursor: pointer; + + &:hover { + color: inherit; + @include typography.interacted-text-decoration; + + background-color: transparent; + } + } + + @include media.on-mobile { + &--collapsed &__item:not(:first-child, &__item--expandable, :last-child) { + display: none; + } + } +} diff --git a/src/nationalarchives/components/button/_index.scss b/src/nationalarchives/components/button/_index.scss index 21145983..6232aea6 100644 --- a/src/nationalarchives/components/button/_index.scss +++ b/src/nationalarchives/components/button/_index.scss @@ -1,83 +1 @@ -@use "sass:math"; -@use "../../tools/colour"; -@use "../../tools/media"; -@use "../../tools/typography"; -@import "button-group"; - -.tna-button { - padding: 0.25rem 1rem; - - display: inline-block; - - @include typography.relative-font-size(18); - font-weight: 700; - text-decoration: none; - text-align: center; - line-height: #{math.div(16, 18) * 2}; - - @include colour.colour-background("button-primary-background"); - - @include colour.colour-border("button-primary-background", 0.25rem); - - transition: - color 200ms, - background-color 200ms, - border-color 200ms; - - cursor: pointer; - - &, - &:link, - &:visited { - @include colour.colour-font("button-primary-text"); - } - - &:hover { - @include colour.colour-font("button-primary-hover-text"); - text-decoration: none; - - background: transparent; - - transition: - color 50ms, - background-color 50ms, - border-color 50ms; - } - - &--small { - padding: 0.125rem 0.5rem; - - @include typography.relative-font-size(14); - } - - &--accent { - @include colour.colour-background("button-accent-background"); - - @include colour.colour-border("button-accent-background"); - - &, - &:link, - &:visited { - @include colour.colour-font("button-accent-text"); - } - - &:hover { - @include colour.colour-font("font-dark"); - } - } - - &--solid-hover, - .tna-background--accent &, - .tna-background--accent-light & { - &:hover { - @include colour.colour-background("page-background"); - } - } - - .fa, - .fa-regular, - .fa-solid, - .fa-brands { - margin-right: 0.5rem; - } -} +@use "button"; diff --git a/src/nationalarchives/components/button/button.scss b/src/nationalarchives/components/button/button.scss new file mode 100644 index 00000000..d93aa88f --- /dev/null +++ b/src/nationalarchives/components/button/button.scss @@ -0,0 +1,101 @@ +@use "sass:math"; +@use "../../tools/colour"; +@use "../../tools/media"; +@use "../../tools/typography"; +@use "button-group"; + +.tna-button { + padding: 0.25rem 1rem; + + display: inline-block; + + @include typography.relative-font-size(18); + @include typography.main-font-weight-bold; + text-decoration: none; + text-align: center; + line-height: #{math.div(16, 18) * 2}; + + @include colour.colour-background("button-background"); + + @include colour.colour-border("button-background", 0.25rem); + + transition: + color 200ms, + background-color 200ms, + border-color 200ms; + + cursor: pointer; + + &, + &:link, + &:visited { + @include colour.colour-font("button-text"); + } + + &:hover { + @include colour.colour-font("button-hover-text"); + text-decoration: none; + + background: transparent; + + transition: + color 50ms, + background-color 50ms, + border-color 50ms; + } + + &--plain { + @include typography.main-font-weight; + + background-color: transparent; + + border-color: transparent; + + &, + &:link, + &:visited { + @include colour.colour-font("link"); + } + + &:hover { + @include typography.interacted-text-decoration; + } + } + + &--small { + padding: 0.125rem 0.5rem; + + @include typography.relative-font-size(14); + } + + &--accent { + @include colour.colour-background("button-accent-background"); + + @include colour.colour-border("button-accent-background"); + + &, + &:link, + &:visited { + @include colour.colour-font("button-accent-text"); + } + + &:hover { + @include colour.colour-font("font-dark"); + } + } + + &--solid-hover, + .tna-background--accent &, + .tna-background--accent-light & { + &:hover { + @include colour.colour-background("page-background"); + } + } + + .fa, + .fa-regular, + .fa-solid, + .fa-brands { + margin-right: 0.5rem; + } +} diff --git a/src/nationalarchives/components/button/button.stories.js b/src/nationalarchives/components/button/button.stories.js index 44a51dda..94776ae4 100644 --- a/src/nationalarchives/components/button/button.stories.js +++ b/src/nationalarchives/components/button/button.stories.js @@ -9,6 +9,7 @@ const argTypes = { brandIcon: { control: "text" }, accent: { control: "boolean" }, small: { control: "boolean" }, + plain: { control: "boolean" }, buttonElement: { control: "boolean" }, classes: { control: "text" }, attributes: { control: "object" }, @@ -33,6 +34,7 @@ const Template = ({ brandIcon, accent, small, + plain, buttonElement, classes, attributes, @@ -46,6 +48,7 @@ const Template = ({ brandIcon, accent, small, + plain, buttonElement, classes, attributes, @@ -75,6 +78,15 @@ Icon.args = { classes: "tna-button--demo", }; +export const SmallIcon = Template.bind({}); +SmallIcon.args = { + text: "Explore the collection", + href: "#", + icon: "map-location-dot", + small: true, + classes: "tna-button--demo", +}; + export const BrandIcon = Template.bind({}); BrandIcon.args = { text: "Twitter", @@ -85,12 +97,29 @@ BrandIcon.args = { export const Small = Template.bind({}); Small.args = { - text: "Button element", + text: "Small button", href: "#", small: true, classes: "tna-button--demo", }; +export const Plain = Template.bind({}); +Plain.args = { + text: "Plain button", + href: "#", + plain: true, + classes: "tna-button--demo", +}; + +export const SmallPlain = Template.bind({}); +SmallPlain.args = { + text: "Plain small button", + href: "#", + small: true, + plain: true, + classes: "tna-button--demo", +}; + export const ButtonElement = Template.bind({}); ButtonElement.args = { text: "Button element", @@ -126,9 +155,13 @@ Group.args = { }, { text: "Button", - href: "#", buttonElement: true, classes: "tna-button--demo", }, + { + text: "Plain", + plain: true, + classes: "tna-button--demo", + }, ], }; diff --git a/src/nationalarchives/components/button/macro-options.json b/src/nationalarchives/components/button/macro-options.json index 979a3921..8d232262 100644 --- a/src/nationalarchives/components/button/macro-options.json +++ b/src/nationalarchives/components/button/macro-options.json @@ -8,7 +8,7 @@ { "name": "href", "type": "string", - "required": true, + "required": false, "description": "" }, { @@ -41,6 +41,12 @@ "required": false, "description": "" }, + { + "name": "plain", + "type": "boolean", + "required": false, + "description": "" + }, { "name": "buttonElement", "type": "boolean", diff --git a/src/nationalarchives/components/button/template.njk b/src/nationalarchives/components/button/template.njk index 6a9902f0..a0e2f7bd 100644 --- a/src/nationalarchives/components/button/template.njk +++ b/src/nationalarchives/components/button/template.njk @@ -1,11 +1,14 @@ {%- set buttonClasses = [params.classes] if params.classes else [] -%} +{%- if params.accent -%} + {%- set buttonClasses = buttonClasses.concat('tna-button--accent') -%} +{%- endif -%} {%- if params.small -%} {%- set buttonClasses = buttonClasses.concat('tna-button--small') -%} {%- endif -%} -{%- if params.accent -%} - {%- set buttonClasses = buttonClasses.concat('tna-button--accent') -%} +{%- if params.plain -%} + {%- set buttonClasses = buttonClasses.concat('tna-button--plain') -%} {%- endif -%} -<{{ 'button' if params.buttonElement else 'a' }} href="{{ params.href }}" class="tna-button {{ buttonClasses | join(' ') }}" role="button"{%- if params.title %} title="{{ params.title }}"{% endif %} {%- for attribute, value in params.attributes %} {{ attribute }}="{{ value }}"{% endfor %}> +<{{ 'button' if params.buttonElement else 'a' }}{%- if not params.buttonElement %} href="{{ params.href }}"{%- endif %} class="tna-button {{ buttonClasses | join(' ') }}"{%- if not params.buttonElement %} role="button"{%- endif -%}{%- if params.title %} title="{{ params.title }}"{% endif %} {%- for attribute, value in params.attributes %} {{ attribute }}="{{ value }}"{% endfor %}> {%- if params.brandIcon -%} {%- elseif params.icon -%} diff --git a/src/nationalarchives/components/card/_index.scss b/src/nationalarchives/components/card/_index.scss index 6b6468b9..f10b45f3 100644 --- a/src/nationalarchives/components/card/_index.scss +++ b/src/nationalarchives/components/card/_index.scss @@ -1,188 +1 @@ -@use "sass:math"; -@use "../../tools/colour"; -@use "../../tools/typography"; -@use "../../tools/media"; -@use "../../tools/spacing"; - -.tna-card { - @include spacing.space-below; - - &__inner { - display: flex; - flex-direction: column; - } - - &__heading { - order: 2; - } - - &__supertitle { - } - - &__title { - order: 2; - - // @include typography.main-font; - // @include typography.main-font-weight-bold; - } - - &__title-link { - &::after { - display: none !important; - } - } - - &__image-container { - height: 0; - margin-bottom: 1rem; - // padding-bottom: #{math.div(9, 16) * 100%}; - padding-bottom: #{math.div(2, 3) * 100%}; - - position: relative; - order: 1; - } - - &__image { - width: 100%; - height: 100%; - - position: absolute; - inset: 0; - - object-fit: cover; - } - - &__image-label { - max-width: calc(100% - 1rem); - - position: absolute; - top: 0.5rem; - left: 0.5rem; - } - - &__body { - order: 3; - } - - &__actions { - margin-top: 2rem; - - order: 4; - } - - &__action { - @include typography.main-font-weight-bold; - - .fa, - .fa-regular, - .fa-solid, - .fa-brands { - margin-right: 0.5rem; - } - } - - &--contrast, - &--accent { - .tna-card__inner { - padding-bottom: 1rem; - } - - .tna-card__heading, - .tna-card__body, - .tna-card__actions { - margin-right: 1rem; - margin-left: 1rem; - } - } - - &--contrast { - @include colour.invert; - } - - &--accent { - @include colour.accent; - } - - &--accent &__supertitle { - @include colour.invert; - } - - &--horizontal { - position: relative; - - @include media.on-larger-than-mobile { - .tna-card__inner { - margin-left: 50%; - padding: 2rem; - } - - .tna-card__image-container { - height: auto; - margin-bottom: 0; - padding-bottom: 0; - - display: block; - - position: absolute; - inset: 0 50% 0 0; - } - - .tna-card__heading, - .tna-card__body, - .tna-card__actions { - margin-right: 0; - margin-left: 0; - } - } - } - - &--horizontal#{&}--contrast, - &--horizontal#{&}--accent { - @include media.on-mobile { - .tna-card__inner { - padding: 0 0 2rem; - } - - .tna-card__image-container { - margin-bottom: 2rem; - } - - .tna-card__heading, - .tna-card__body, - .tna-card__actions { - margin-right: 2rem; - margin-left: 2rem; - } - } - } - - &:not(#{&}--horizontal) { - @include colour.on-high-contrast { - .tna-card__inner { - padding-bottom: 1rem; - } - - .tna-card__heading, - .tna-card__body, - .tna-card__actions { - margin-right: 1rem; - margin-left: 1rem; - } - } - } - - @include colour.on-high-contrast { - @include colour.colour-border("keyline-dark", 1px); - - .tna-card__inner { - // padding-bottom: 1rem; - } - - .tna-card__heading, - .tna-card__body, - .tna-card__actions { - // margin-right: 1rem; - // margin-left: 1rem; - } - } -} +@use "card"; diff --git a/src/nationalarchives/components/card/card.scss b/src/nationalarchives/components/card/card.scss new file mode 100644 index 00000000..995a4dd1 --- /dev/null +++ b/src/nationalarchives/components/card/card.scss @@ -0,0 +1,189 @@ +@use "sass:math"; +@use "../../tools/colour"; +@use "../../tools/typography"; +@use "../../tools/media"; +@use "../../tools/spacing"; +@use "../button"; + +.tna-card { + @include spacing.space-below; + + &__inner { + display: flex; + flex-direction: column; + } + + &__heading { + order: 2; + } + + &__supertitle { + } + + &__title { + order: 2; + + // @include typography.main-font; + // @include typography.main-font-weight-bold; + } + + &__title-link { + &::after { + display: none !important; + } + } + + &__image-container { + height: 0; + margin-bottom: 1rem; + // padding-bottom: #{math.div(9, 16) * 100%}; + padding-bottom: #{math.div(2, 3) * 100%}; + + position: relative; + order: 1; + } + + &__image { + width: 100%; + height: 100%; + + position: absolute; + inset: 0; + + object-fit: cover; + } + + &__image-label { + max-width: calc(100% - 1rem); + + position: absolute; + top: 0.5rem; + left: 0.5rem; + } + + &__body { + order: 3; + } + + &__actions { + margin-top: 2rem; + + order: 4; + } + + &__action { + @include typography.main-font-weight-bold; + + .fa, + .fa-regular, + .fa-solid, + .fa-brands { + margin-right: 0.5rem; + } + } + + &--contrast, + &--accent { + .tna-card__inner { + padding-bottom: 1rem; + } + + .tna-card__heading, + .tna-card__body, + .tna-card__actions { + margin-right: 1rem; + margin-left: 1rem; + } + } + + &--contrast { + @include colour.invert; + } + + &--accent { + @include colour.accent; + } + + &--accent &__supertitle { + @include colour.invert; + } + + &--horizontal { + position: relative; + + @include media.on-larger-than-mobile { + .tna-card__inner { + margin-left: 50%; + padding: 2rem; + } + + .tna-card__image-container { + height: auto; + margin-bottom: 0; + padding-bottom: 0; + + display: block; + + position: absolute; + inset: 0 50% 0 0; + } + + .tna-card__heading, + .tna-card__body, + .tna-card__actions { + margin-right: 0; + margin-left: 0; + } + } + } + + &--horizontal#{&}--contrast, + &--horizontal#{&}--accent { + @include media.on-mobile { + .tna-card__inner { + padding: 0 0 2rem; + } + + .tna-card__image-container { + margin-bottom: 2rem; + } + + .tna-card__heading, + .tna-card__body, + .tna-card__actions { + margin-right: 2rem; + margin-left: 2rem; + } + } + } + + &:not(#{&}--horizontal) { + @include colour.on-high-contrast { + .tna-card__inner { + padding-bottom: 1rem; + } + + .tna-card__heading, + .tna-card__body, + .tna-card__actions { + margin-right: 1rem; + margin-left: 1rem; + } + } + } + + @include colour.on-high-contrast { + @include colour.colour-border("keyline-dark", 1px); + + .tna-card__inner { + // padding-bottom: 1rem; + } + + .tna-card__heading, + .tna-card__body, + .tna-card__actions { + // margin-right: 1rem; + // margin-left: 1rem; + } + } +} diff --git a/src/nationalarchives/components/cookie-banner/_index.scss b/src/nationalarchives/components/cookie-banner/_index.scss new file mode 100644 index 00000000..3d15a82b --- /dev/null +++ b/src/nationalarchives/components/cookie-banner/_index.scss @@ -0,0 +1 @@ +@use "cookie-banner"; diff --git a/src/nationalarchives/components/cookie-banner/cookie-banner.mjs b/src/nationalarchives/components/cookie-banner/cookie-banner.mjs new file mode 100644 index 00000000..05513291 --- /dev/null +++ b/src/nationalarchives/components/cookie-banner/cookie-banner.mjs @@ -0,0 +1,22 @@ +export class CookieBanner { + constructor($module) { + this.$module = $module; + this.$accept = $module && $module.querySelector('[value="accept"]'); + this.$reject = $module && $module.querySelector('[value="reject"]'); + } + + init() { + if (!this.$module || !this.$accept || !this.$reject) { + return; + } + + this.$module.removeAttribute("hidden"); + + this.$accept.addEventListener("click", () => this.accept()); + this.$reject.addEventListener("click", () => this.reject()); + } + + accept() {} + + reject() {} +} diff --git a/src/nationalarchives/components/cookie-banner/cookie-banner.scss b/src/nationalarchives/components/cookie-banner/cookie-banner.scss new file mode 100644 index 00000000..13661e0d --- /dev/null +++ b/src/nationalarchives/components/cookie-banner/cookie-banner.scss @@ -0,0 +1,11 @@ +@use "../../tools/colour"; +@use "../../tools/spacing"; +@use "../button"; +@use "../grid"; + +.tna-cookie-banner { + @include colour.invert; + + padding-top: 2rem; + padding-bottom: 2rem; +} diff --git a/src/nationalarchives/components/cookie-banner/cookie-banner.stories.js b/src/nationalarchives/components/cookie-banner/cookie-banner.stories.js new file mode 100644 index 00000000..37e916a8 --- /dev/null +++ b/src/nationalarchives/components/cookie-banner/cookie-banner.stories.js @@ -0,0 +1,34 @@ +import CookieBanner from "./template.njk"; +import macroOptions from "./macro-options.json"; + +const argTypes = { + url: { control: "text" }, + classes: { control: "text" }, + attributes: { control: "object" }, +}; + +Object.keys(argTypes).forEach((argType) => { + argTypes[argType].description = macroOptions.find( + (option) => option.name === argType, + )?.description; +}); + +export default { + title: "Components/Cookie banner", + argTypes, +}; + +const Template = ({ url, classes, attributes }) => + CookieBanner({ + params: { + url, + classes, + attributes, + }, + }); + +export const Standard = Template.bind({}); +Standard.args = { + cookiesUrl: "#", + classes: "tna-cookie-banner--demo", +}; diff --git a/src/nationalarchives/components/cookie-banner/fixtures.json b/src/nationalarchives/components/cookie-banner/fixtures.json new file mode 100644 index 00000000..f2732b16 --- /dev/null +++ b/src/nationalarchives/components/cookie-banner/fixtures.json @@ -0,0 +1,4 @@ +{ + "component": "cookie-banner", + "fixtures": [] +} diff --git a/src/nationalarchives/components/cookie-banner/macro-options.json b/src/nationalarchives/components/cookie-banner/macro-options.json new file mode 100644 index 00000000..4e4f75a2 --- /dev/null +++ b/src/nationalarchives/components/cookie-banner/macro-options.json @@ -0,0 +1,20 @@ +[ + { + "name": "cookiesUrl", + "type": "string", + "required": true, + "description": "" + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the cookie banner." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the cookie banner." + } +] diff --git a/src/nationalarchives/components/cookie-banner/macro.njk b/src/nationalarchives/components/cookie-banner/macro.njk new file mode 100644 index 00000000..29fabc30 --- /dev/null +++ b/src/nationalarchives/components/cookie-banner/macro.njk @@ -0,0 +1,3 @@ +{% macro tnaCookieBanner(params) %} + {%- include "nationalarchives/components/cookie-banner/template.njk" -%} +{% endmacro %} \ No newline at end of file diff --git a/src/nationalarchives/components/cookie-banner/template.njk b/src/nationalarchives/components/cookie-banner/template.njk new file mode 100644 index 00000000..d7ff91d3 --- /dev/null +++ b/src/nationalarchives/components/cookie-banner/template.njk @@ -0,0 +1,15 @@ +{%- set containerClasses = [params.classes] if params.classes else [] -%} + diff --git a/src/nationalarchives/components/filters/_index.scss b/src/nationalarchives/components/filters/_index.scss index 43d1c6b3..c943be4c 100644 --- a/src/nationalarchives/components/filters/_index.scss +++ b/src/nationalarchives/components/filters/_index.scss @@ -1,52 +1 @@ -@use "../../tools/spacing"; - -.tna-filters { - display: flex; - flex-wrap: wrap; - gap: 1rem; - - @include spacing.space-below; - - &__item { - } - - &__item--selected #{&}__link { - background-color: #004c7e; - - &, - &:link, - &:visited { - color: #fff; - } - } - - &__link { - padding: 0.125rem 0.75rem; - - text-decoration: none; - - background-color: #d4e5ef; - - border-radius: 99rem; - - transition: - color 200ms, - background-color 200ms; - - &, - &:link, - &:visited { - color: #000; - } - - &:hover { - color: #fff; - - background-color: #004c7e; - - transition: - color 50ms, - background-color 50ms; - } - } -} +@use "filters"; diff --git a/src/nationalarchives/components/filters/filters.scss b/src/nationalarchives/components/filters/filters.scss new file mode 100644 index 00000000..43d1c6b3 --- /dev/null +++ b/src/nationalarchives/components/filters/filters.scss @@ -0,0 +1,52 @@ +@use "../../tools/spacing"; + +.tna-filters { + display: flex; + flex-wrap: wrap; + gap: 1rem; + + @include spacing.space-below; + + &__item { + } + + &__item--selected #{&}__link { + background-color: #004c7e; + + &, + &:link, + &:visited { + color: #fff; + } + } + + &__link { + padding: 0.125rem 0.75rem; + + text-decoration: none; + + background-color: #d4e5ef; + + border-radius: 99rem; + + transition: + color 200ms, + background-color 200ms; + + &, + &:link, + &:visited { + color: #000; + } + + &:hover { + color: #fff; + + background-color: #004c7e; + + transition: + color 50ms, + background-color 50ms; + } + } +} diff --git a/src/nationalarchives/components/footer/_index.scss b/src/nationalarchives/components/footer/_index.scss index df75a72a..1b979fa5 100644 --- a/src/nationalarchives/components/footer/_index.scss +++ b/src/nationalarchives/components/footer/_index.scss @@ -1,261 +1 @@ -@use "../../tools/colour"; -@use "../../tools/typography"; -@use "../../tools/media"; - -.tna-footer { - @include colour.invert; - - padding-top: 1rem; - padding-bottom: 3rem; - - // @include colour.colour-font("font-base"); - - // --link: colour.brand-colour("white"); - - @include colour.on-high-contrast { - @include colour.colour-border("keyline", 1px, solid, top); - } - - .tna-logo { - margin-top: 2rem; - margin-bottom: 1rem; - - &__background { - fill: transparent; - } - - &__foreground { - fill: currentColor; - } - } - - &__title { - margin-top: 0; - margin-bottom: 0; - } - - &__address { - font-style: normal; - } - - &__meta { - margin-top: 1rem; - - @include typography.relative-font-size(16); - } - - &__social { - margin-top: 2rem; - - &-items { - display: flex; - flex-wrap: wrap; - gap: 1rem; - align-items: flex-start; - } - - &-item { - &-link { - min-width: calc(2rem + 4px); - padding: 4px; - - display: block; - - text-align: center; - line-height: 1; - - border: 0 transparent solid; - border-width: 4px 0; - - .fa-solid, - .fa-brands { - font-size: 2rem; - } - - &-text { - } - - &:has(.fa-solid), - &:has(.fa-brands) { - &:hover { - @include colour.colour-border("link", 4px, solid, bottom); - } - } - } - } - } - - &__mailing-list { - margin-top: 2rem; - padding: 1rem; - - @include typography.relative-font-size(16); - - @include colour.colour-border("keyline-dark", 1px, dashed); - - // background: url("data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' stroke='%23fff' stroke-width='2' stroke-dasharray='4%2c 8' stroke-dashoffset='0' stroke-linecap='square'/%3e%3c/svg%3e") rgba(colour.brand-colour("white"), 0.1); - // background-color: rgba(colour.brand-colour("white"), 0.1); - background-color: rgba(#fff, 0.1); - } - - &__navigation { - &-block { - padding-top: 2rem; - - &-heading { - } - - &-items { - } - - &-item { - padding-top: 0.375rem; - padding-bottom: 0.375rem; - - @include colour.colour-border("keyline", 1px, solid, bottom); - - &-link { - text-decoration: none; - - &:hover { - @include typography.interacted-text-decoration; - } - - &-icon { - width: 0.825rem; - height: 0.825rem; - margin-right: 0.125rem; - margin-left: 0.5rem; - - display: inline-block; - - position: relative; - - vertical-align: middle; - - font-size: 0; - - border: 1px var(--link) solid; - - &::before { - position: absolute; - top: -0.25rem; - right: -0.25rem; - z-index: 2; - - border: 0.25rem transparent solid; - border-top-color: var(--link); - border-right-color: var(--link); - - content: ""; - } - - &::after { - width: 4px; - height: 13px; - - position: absolute; - top: -0.125rem; - right: -0.125rem; - z-index: 1; - - background-color: var(--link); - - outline: 3px transparent solid; - @include colour.colour-outline("contrast-background"); - - transform: rotate(45deg) translateX(50%); - transform-origin: 100% 0; - - content: ""; - } - } - } - } - } - } - - &__legal { - padding-top: 3rem; - - @include typography.relative-font-size(16); - - &-items { - margin-bottom: 0; - - text-align: center; - - @include media.on-tiny { - text-align: inherit; - } - } - - &-item { - padding: 0.5rem; - - display: inline-block; - - @include media.on-tiny { - display: block; - } - - &-link { - } - } - } - - hr { - margin-top: 1.5rem; - margin-bottom: 1rem; - } - - &__licence { - @include typography.relative-font-size(16); - - &.tna-container { - align-items: center; - } - - .tna-column { - margin-top: 0.5rem; - } - } - - &__licence-logo { - display: block; - } - - &__govuk { - text-align: center; - - &-link { - display: inline-block; - } - - &-logotype-crown { - margin: 0 auto; - display: block; - } - } - - @include media.on-mobile { - padding-top: 0; - padding-bottom: 2rem; - } - - @include colour.on-high-contrast { - &__navigation { - &-block { - &-items { - @include colour.colour-border("keyline-dark", 0.25rem, solid, top); - } - } - } - - &__mailing-list { - background-color: transparent; - - @include colour.colour-border("keyline-dark", 1px, solid); - } - } -} +@use "footer"; diff --git a/src/nationalarchives/components/footer/footer.scss b/src/nationalarchives/components/footer/footer.scss new file mode 100644 index 00000000..9eedd28e --- /dev/null +++ b/src/nationalarchives/components/footer/footer.scss @@ -0,0 +1,263 @@ +@use "../../tools/colour"; +@use "../../tools/typography"; +@use "../../tools/media"; +@use "../button"; +@use "../grid"; + +.tna-footer { + @include colour.invert; + + padding-top: 1rem; + padding-bottom: 3rem; + + // @include colour.colour-font("font-base"); + + // --link: colour.brand-colour("white"); + + @include colour.on-high-contrast { + @include colour.colour-border("keyline", 1px, solid, top); + } + + .tna-logo { + margin-top: 2rem; + margin-bottom: 1rem; + + &__background { + fill: transparent; + } + + &__foreground { + fill: currentColor; + } + } + + &__title { + margin-top: 0; + margin-bottom: 0; + } + + &__address { + font-style: normal; + } + + &__meta { + margin-top: 1rem; + + @include typography.relative-font-size(16); + } + + &__social { + margin-top: 2rem; + + &-items { + display: flex; + flex-wrap: wrap; + gap: 1rem; + align-items: flex-start; + } + + &-item { + &-link { + min-width: calc(2rem + 4px); + padding: 4px; + + display: block; + + text-align: center; + line-height: 1; + + border: 0 transparent solid; + border-width: 4px 0; + + .fa-solid, + .fa-brands { + font-size: 2rem; + } + + &-text { + } + + &:has(.fa-solid), + &:has(.fa-brands) { + &:hover { + @include colour.colour-border("link", 4px, solid, bottom); + } + } + } + } + } + + &__mailing-list { + margin-top: 2rem; + padding: 1rem; + + @include typography.relative-font-size(16); + + @include colour.colour-border("keyline-dark", 1px, dashed); + + // background: url("data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' stroke='%23fff' stroke-width='2' stroke-dasharray='4%2c 8' stroke-dashoffset='0' stroke-linecap='square'/%3e%3c/svg%3e") rgba(colour.brand-colour("white"), 0.1); + // background-color: rgba(colour.brand-colour("white"), 0.1); + background-color: rgba(#fff, 0.1); + } + + &__navigation { + &-block { + padding-top: 2rem; + + &-heading { + } + + &-items { + } + + &-item { + padding-top: 0.375rem; + padding-bottom: 0.375rem; + + @include colour.colour-border("keyline", 1px, solid, bottom); + + &-link { + text-decoration: none; + + &:hover { + @include typography.interacted-text-decoration; + } + + &-icon { + width: 0.825rem; + height: 0.825rem; + margin-right: 0.125rem; + margin-left: 0.5rem; + + display: inline-block; + + position: relative; + + vertical-align: middle; + + font-size: 0; + + border: 1px var(--link) solid; + + &::before { + position: absolute; + top: -0.25rem; + right: -0.25rem; + z-index: 2; + + border: 0.25rem transparent solid; + border-top-color: var(--link); + border-right-color: var(--link); + + content: ""; + } + + &::after { + width: 4px; + height: 13px; + + position: absolute; + top: -0.125rem; + right: -0.125rem; + z-index: 1; + + background-color: var(--link); + + outline: 3px transparent solid; + @include colour.colour-outline("contrast-background"); + + transform: rotate(45deg) translateX(50%); + transform-origin: 100% 0; + + content: ""; + } + } + } + } + } + } + + &__legal { + padding-top: 3rem; + + @include typography.relative-font-size(16); + + &-items { + margin-bottom: 0; + + text-align: center; + + @include media.on-tiny { + text-align: inherit; + } + } + + &-item { + padding: 0.5rem; + + display: inline-block; + + @include media.on-tiny { + display: block; + } + + &-link { + } + } + } + + hr { + margin-top: 1.5rem; + margin-bottom: 1rem; + } + + &__licence { + @include typography.relative-font-size(16); + + &.tna-container { + align-items: center; + } + + .tna-column { + margin-top: 0.5rem; + } + } + + &__licence-logo { + display: block; + } + + &__govuk { + text-align: center; + + &-link { + display: inline-block; + } + + &-logotype-crown { + margin: 0 auto; + display: block; + } + } + + @include media.on-mobile { + padding-top: 0; + padding-bottom: 2rem; + } + + @include colour.on-high-contrast { + &__navigation { + &-block { + &-items { + @include colour.colour-border("keyline-dark", 0.25rem, solid, top); + } + } + } + + &__mailing-list { + background-color: transparent; + + @include colour.colour-border("keyline-dark", 1px, solid); + } + } +} diff --git a/src/nationalarchives/components/gallery/_index.scss b/src/nationalarchives/components/gallery/_index.scss index 9646152a..97b6dcdd 100644 --- a/src/nationalarchives/components/gallery/_index.scss +++ b/src/nationalarchives/components/gallery/_index.scss @@ -1,126 +1 @@ -@use "../../tools/colour"; -@use "../../tools/spacing"; -@use "../../tools/media"; - -.tna-gallery { - @include colour.invert; - - padding-bottom: 2rem; - - &__header { - padding-top: 2rem; - } - - &__items { - width: 100%; - // padding-top: 2rem; - - display: flex; - flex-direction: column; - align-items: center; - gap: spacing.spacing("l"); - - &:focus { - outline: none !important; - } - } - - &__item { - margin: 0; - - &-index { - padding-bottom: 1rem; - - text-align: center; - } - - &-figure { - } - - &-image { - margin: 0 auto; - height: auto; - } - - &-description { - margin-top: 1rem; - padding: 0.5rem 0 0.5rem 1rem; - - @include colour.colour-border("keyline-dark", 4px, solid, left); - } - - &-tabs { - @include media.on-smaller-than-large { - padding-top: 2rem; - } - } - } - - &__item + &__item { - @include colour.colour-border("keyline", 1px, solid, top); - } - - &__toggle-wrapper { - text-align: center; - } - - &__toggle { - margin-top: 2rem; - } - - &--touchable { - .tna-gallery__items { - flex-flow: row nowrap; - gap: 6rem; - - overflow-x: scroll; - scroll-snap-type: x mandatory; - } - - .tna-gallery__item { - width: 100%; - - scroll-snap-align: center; - flex: none; - } - - &.tna-gallery--collapsed { - .tna-gallery__items { - overflow: auto; - } - } - } - - &--collapsed &__item + &__item, - &--collapsed &__item:first-child &__item-description, - &--collapsed &__item:first-child &__item-tabs { - display: none; - } - - &--collapsed &__item-figure { - width: 100%; - } - - @include colour.on-high-contrast { - &__items { - padding-top: 2rem; - } - - &__item { - padding-bottom: 2rem; - - @include colour.colour-border("keyline-dark", 1px); - - &-index { - // padding-top: 0.5rem; - } - - &-description { - // margin-bottom: 2rem; - // padding: 0 1rem 1rem; - - // border: none; - } - } - } -} +@use "gallery"; diff --git a/src/nationalarchives/components/gallery/gallery.mjs b/src/nationalarchives/components/gallery/gallery.mjs index 92105d53..ae233520 100644 --- a/src/nationalarchives/components/gallery/gallery.mjs +++ b/src/nationalarchives/components/gallery/gallery.mjs @@ -3,7 +3,7 @@ import uuidv4 from "../../lib/uuid.mjs"; export class Gallery { constructor($module) { this.$module = $module; - this.$items = $module.querySelector(".tna-gallery__items"); + this.$items = $module && $module.querySelector(".tna-gallery__items"); this.opened = false; } diff --git a/src/nationalarchives/components/gallery/gallery.scss b/src/nationalarchives/components/gallery/gallery.scss new file mode 100644 index 00000000..8c40a708 --- /dev/null +++ b/src/nationalarchives/components/gallery/gallery.scss @@ -0,0 +1,128 @@ +@use "../../tools/colour"; +@use "../../tools/spacing"; +@use "../../tools/media"; +@use "../button"; +@use "../grid"; + +.tna-gallery { + @include colour.invert; + + padding-bottom: 2rem; + + &__header { + padding-top: 2rem; + } + + &__items { + width: 100%; + // padding-top: 2rem; + + display: flex; + flex-direction: column; + align-items: center; + gap: spacing.spacing("l"); + + &:focus { + outline: none !important; + } + } + + &__item { + margin: 0; + + &-index { + padding-bottom: 1rem; + + text-align: center; + } + + &-figure { + } + + &-image { + margin: 0 auto; + height: auto; + } + + &-description { + margin-top: 1rem; + padding: 0.5rem 0 0.5rem 1rem; + + @include colour.colour-border("keyline-dark", 4px, solid, left); + } + + &-tabs { + @include media.on-smaller-than-large { + padding-top: 2rem; + } + } + } + + &__item + &__item { + @include colour.colour-border("keyline", 1px, solid, top); + } + + &__toggle-wrapper { + text-align: center; + } + + &__toggle { + margin-top: 2rem; + } + + &--touchable { + .tna-gallery__items { + flex-flow: row nowrap; + gap: 6rem; + + overflow-x: scroll; + scroll-snap-type: x mandatory; + } + + .tna-gallery__item { + width: 100%; + + scroll-snap-align: center; + flex: none; + } + + &.tna-gallery--collapsed { + .tna-gallery__items { + overflow: auto; + } + } + } + + &--collapsed &__item + &__item, + &--collapsed &__item:first-child &__item-description, + &--collapsed &__item:first-child &__item-tabs { + display: none; + } + + &--collapsed &__item-figure { + width: 100%; + } + + @include colour.on-high-contrast { + &__items { + // padding-top: 2rem; + } + + &__item { + // padding-bottom: 2rem; + + // @include colour.colour-border("keyline-dark", 1px); + + &-index { + // padding-top: 0.5rem; + } + + &-description { + // margin-bottom: 2rem; + // padding: 0 1rem 1rem; + + // border: none; + } + } + } +} diff --git a/src/nationalarchives/components/grid/_index.scss b/src/nationalarchives/components/grid/_index.scss index 7bf5d97e..5529b160 100644 --- a/src/nationalarchives/components/grid/_index.scss +++ b/src/nationalarchives/components/grid/_index.scss @@ -1,80 +1 @@ -@use "sass:math"; -@use "../../variables/grid"; -@use "../../tools/media"; -@use "../../tools/grid" as tools; - -.tna-container { - max-width: grid.$largest-container-width; - width: 100%; - margin-right: auto; - margin-left: auto; - padding-right: math.div(grid.$gutter-width, 2); - padding-left: math.div(grid.$gutter-width, 2); - - box-sizing: border-box; - - display: flex; - flex-wrap: wrap; - justify-content: stretch; - align-items: stretch; - - &--no-padding, - &--no-padding-all { - max-width: grid.$largest-container-width - (grid.$gutter-width * 2); - } - - &--max { - max-width: none; - } -} - -.tna-column { - margin: 0; - padding-right: math.div(grid.$gutter-width, 2); - padding-left: math.div(grid.$gutter-width, 2); - - box-sizing: border-box; - - &--container { - display: flex; - flex-wrap: wrap; - justify-content: stretch; - align-items: stretch; - } -} - -@include tools.columns-generator(grid.$column-count); - -@include media.on-medium { - @include tools.columns-generator(grid.$column-count-medium, "medium"); -} - -@include media.on-mobile { - .tna-container { - padding-right: math.div(grid.$gutter-width-mobile, 2); - padding-left: math.div(grid.$gutter-width-mobile, 2); - } - - .tna-column { - padding-right: math.div(grid.$gutter-width-mobile, 2); - padding-left: math.div(grid.$gutter-width-mobile, 2); - } -} - -@include media.on-small { - @include tools.columns-generator(grid.$column-count-small, "small"); -} - -@include media.on-tiny { - @include tools.columns-generator(grid.$column-count-tiny, "tiny"); -} - -.tna-container--no-padding, -.tna-container--no-padding-all, -.tna-container--no-padding-all > .tna-column, -.tna-column--no-padding, -.tna-column--container--no-padding-all, -.tna-column--container--no-padding-all > .tna-column { - padding-right: 0; - padding-left: 0; -} +@use "grid"; diff --git a/src/nationalarchives/components/grid/grid.scss b/src/nationalarchives/components/grid/grid.scss new file mode 100644 index 00000000..7bf5d97e --- /dev/null +++ b/src/nationalarchives/components/grid/grid.scss @@ -0,0 +1,80 @@ +@use "sass:math"; +@use "../../variables/grid"; +@use "../../tools/media"; +@use "../../tools/grid" as tools; + +.tna-container { + max-width: grid.$largest-container-width; + width: 100%; + margin-right: auto; + margin-left: auto; + padding-right: math.div(grid.$gutter-width, 2); + padding-left: math.div(grid.$gutter-width, 2); + + box-sizing: border-box; + + display: flex; + flex-wrap: wrap; + justify-content: stretch; + align-items: stretch; + + &--no-padding, + &--no-padding-all { + max-width: grid.$largest-container-width - (grid.$gutter-width * 2); + } + + &--max { + max-width: none; + } +} + +.tna-column { + margin: 0; + padding-right: math.div(grid.$gutter-width, 2); + padding-left: math.div(grid.$gutter-width, 2); + + box-sizing: border-box; + + &--container { + display: flex; + flex-wrap: wrap; + justify-content: stretch; + align-items: stretch; + } +} + +@include tools.columns-generator(grid.$column-count); + +@include media.on-medium { + @include tools.columns-generator(grid.$column-count-medium, "medium"); +} + +@include media.on-mobile { + .tna-container { + padding-right: math.div(grid.$gutter-width-mobile, 2); + padding-left: math.div(grid.$gutter-width-mobile, 2); + } + + .tna-column { + padding-right: math.div(grid.$gutter-width-mobile, 2); + padding-left: math.div(grid.$gutter-width-mobile, 2); + } +} + +@include media.on-small { + @include tools.columns-generator(grid.$column-count-small, "small"); +} + +@include media.on-tiny { + @include tools.columns-generator(grid.$column-count-tiny, "tiny"); +} + +.tna-container--no-padding, +.tna-container--no-padding-all, +.tna-container--no-padding-all > .tna-column, +.tna-column--no-padding, +.tna-column--container--no-padding-all, +.tna-column--container--no-padding-all > .tna-column { + padding-right: 0; + padding-left: 0; +} diff --git a/src/nationalarchives/components/header/_index.scss b/src/nationalarchives/components/header/_index.scss index d279355e..790b0ab6 100644 --- a/src/nationalarchives/components/header/_index.scss +++ b/src/nationalarchives/components/header/_index.scss @@ -1,592 +1 @@ -@use "sass:math"; -@use "../../tools/colour"; -@use "../../variables/colour" as colourVars; // TODO -@use "../../variables/grid"; -@use "../../tools/typography"; -@use "../../tools/media"; - -// TODO: Only for the header component at the moment - remove on redesign -@mixin uninvert { - @include colour.colour-css-vars; - - .tna-template--system-theme & { - @include colour.colour-css-vars; - - @media (prefers-color-scheme: dark) { - @include colour.colour-css-vars-dark; - } - - @media (prefers-contrast: more) { - @include colour.colour-css-vars-high-contrast; - } - - @media (prefers-contrast: more) and (prefers-color-scheme: dark) { - @include colour.colour-css-vars-high-contrast-dark; - } - } - - .tna-template--light-theme & { - @include colour.colour-css-vars; - } - - .tna-template--dark-theme & { - @include colour.colour-css-vars-dark; - } - - .tna-template--high-contrast-theme & { - @include colour.colour-css-vars-high-contrast; - } - - .tna-template--high-contrast-theme.tna-template--dark-theme & { - @include colour.colour-css-vars-high-contrast-dark; - } -} - -.tna-header { - @include colour.invert; - - color: colour.brand-colour("white"); - - background-color: colour.brand-colour("black"); - - &__exit { - padding-top: 0.5rem; - padding-bottom: 0.5rem; - - text-align: right; - - background-color: colourVars.$dark-grey; - } - - &__exit-link { - text-decoration: none; - @include typography.relative-font-size(16); - - &, - &:link, - &:visited { - color: #fff; - } - - &:hover { - text-decoration: underline; - - // .tna-header__exit-link-icon { - // border-color: colour.$tna-yellow; - - // &::before { - // border-top-color: colour.$tna-yellow; - // border-right-color: colour.$tna-yellow; - // } - - // &::after { - // background-color: colour.$tna-yellow; - // } - // } - } - } - - &__exit-link-icon { - width: 0.825rem; - height: 0.825rem; - margin-right: 0.125rem; - margin-left: 0.5rem; - - display: inline-block; - - position: relative; - - vertical-align: middle; - - border: 0.125rem #fff solid; - - &::before { - position: absolute; - top: -0.25rem; - right: -0.25rem; - z-index: 2; - - border: 0.25rem transparent solid; - border-top-color: #fff; - border-right-color: #fff; - - content: ""; - } - - &::after { - width: 0.25rem; - height: 0.825rem; - - position: absolute; - top: -0.125rem; - right: -0.125rem; - z-index: 1; - - background-color: #fff; - - outline: 0.2rem colourVars.$dark-grey solid; - - transform: rotate(45deg) translateX(50%); - transform-origin: 100% 0; - - content: ""; - } - } - - &__contents { - &.tna-container { - justify-content: space-between; - } - } - - &__logo { - padding-top: 1.5rem; - padding-bottom: 1.5rem; - } - - &__logo-link { - display: flex; - align-items: flex-end; - - color: inherit; - text-decoration: none; - - &, - &:link, - &:visited { - color: inherit; - } - - &:hover { - text-decoration: none; - } - - // &--href { - // &:hover { - // outline: 0.375rem #fff solid; - // outline-offset: 1px; - - // // .tna-logo__background { - // // fill: #fff; - // // } - - // // .tna-logo__foreground { - // // fill: #000; - // // } - // } - // } - } - - .tna-logo { - width: 6rem; - height: 6rem; - - display: inline-block; - } - - &__logo-link--href:hover .tna-logo { - outline: 0.375rem #fff solid; - outline-offset: 1px; - } - - &__logo-link--href:active .tna-logo, - &__logo-link--href:focus .tna-logo { - outline: none; - } - - .tna-logo__foreground { - fill: #fff; - } - - .tna-logo__background { - fill: none; - } - - &__logo-strapline { - margin: 0 0.75rem; - - display: inline-block; - - line-height: 2.125; - text-transform: uppercase; - } - - &__navigation-toggle { - align-self: center; - } - - &__hamburger { - width: 2rem; - height: 0.25rem; - - display: block; - - background-color: #fff; - - transition: height 1ms 200ms; - - &::before, - &::after { - height: 0.25rem; - - display: block; - - position: absolute; - right: 0; - left: 0; - - background-color: inherit; - - transition: - top 200ms 200ms, - bottom 200ms 200ms, - transform 200ms; - - content: ""; - } - - &::before { - top: 0; - } - - &::after { - bottom: 0; - } - } - - &__navigation-toggle-button { - height: 2rem; - padding: 0; - - display: block; - - position: relative; - - appearance: none; - - font-size: 0; - - background: none; - - border: 0 transparent solid; - border-width: 0.25rem 0; - - cursor: pointer; - - &--opened { - .tna-header__hamburger { - height: 0; - - &::before, - &::after { - transition: - top 200ms, - bottom 200ms, - transform 200ms 200ms; - } - - &::before { - top: 0.625rem; - - transform: rotate(-135deg); - } - - &::after { - bottom: 0.625rem; - - transform: rotate(135deg); - } - } - } - } - - &--yellow, - &--pink, - &--orange, - &--green, - &--blue { - color: colour.brand-colour("black"); - - .tna-header__logo-link { - &:hover { - .tna-logo { - outline-color: #000; - } - } - } - - .tna-logo__foreground { - fill: #000; - } - - .tna-header__hamburger { - background-color: colour.brand-colour("black"); - } - } - - &--yellow { - background-color: colour.brand-colour("yellow"); - } - - &--pink { - background-color: colour.brand-colour("pink"); - } - - &--orange { - background-color: colour.brand-colour("orange"); - } - - &--green { - background-color: colour.brand-colour("green"); - } - - &--blue { - background-color: colour.brand-colour("blue"); - } - - &__navigation { - display: flex; - flex-direction: column-reverse; - justify-content: space-between; - align-items: flex-end; - } - - &__top-navigation-items { - margin: 0; - padding: 1.25rem 0; - - // order: 1; - - list-style: none; - - line-height: 1; - } - - &__top-navigation-item { - margin-left: 1.5rem; - - display: inline-block; - } - - &__top-navigation-item-link { - display: inline-block; - - text-decoration: none; - @include typography.relative-font-size(16); - - &, - &:link, - &:visited { - color: inherit; - } - - &:hover, - &--selected { - &, - &:link, - &:visited { - @include typography.interacted-text-decoration; - } - } - } - - &__navigation-items { - margin: 0; - padding: 0; - - // order: 2; - - list-style: none; - - white-space: nowrap; - } - - &__navigation-item { - margin-left: 0.75rem; - - display: inline-block; - } - - &__navigation-item-link { - padding: 0.5rem 1rem; - - display: inline-block; - - @include typography.heading-font; - text-decoration: none; - line-height: 2; - - // transition: - // color 200ms, - // background-color 200ms; - - &, - &:link, - &:visited { - color: inherit; - } - - &:hover, - &--selected { - text-decoration: none; - - &, - &:link, - &:visited { - @include uninvert; - @include colour.colour-font("font-dark"); - @include colour.colour-background("page-background"); - } - // transition: - // color 50ms, - // background-color 50ms; - } - } - - @include media.on-larger-than-mobile { - .tna-header__navigation-toggle { - display: none; - } - } - - @include media.on-mobile { - &__contents { - &.tna-container { - padding-right: 0; - padding-left: 0; - } - } - - &__logo { - padding-top: 1rem; - padding-bottom: 1rem; - - &.tna-column { - padding-right: grid.$gutter-width-mobile; - padding-left: grid.$gutter-width-mobile; - } - } - - .tna-logo { - width: 4.5rem; - height: 4.5rem; - } - - &__logo-strapline { - line-height: 1.55; - } - - &__navigation-toggle { - &.tna-column { - padding-right: grid.$gutter-width-mobile; - padding-left: 0; - } - } - - &__navigation { - @include uninvert; - @include colour.colour-font("font-base"); - @include typography.relative-font-size(20); - - align-items: stretch; - flex-direction: column; - - &.tna-column { - padding-right: 0; - padding-left: 0; - } - - .tna-template--js-enabled & { - display: none; - - &--open { - display: flex; - } - } - } - - &__top-navigation-items { - padding: 0.5rem 1rem; - - // text-align: center; - - @include colour.colour-background("page-background"); - - @include colour.colour-border("keyline", 1px, solid, bottom); - } - - &__top-navigation-item { - margin: 0; - padding: 0.5rem; - } - - &__top-navigation-item-link { - } - - &__navigation-items { - width: 100%; - - @include colour.colour-background("page-background"); - } - - &__navigation-item { - margin: 0; - - display: block; - - @include colour.colour-border("keyline", 1px, solid, bottom); - } - - &__navigation-item-link { - padding-right: grid.$gutter-width-mobile; - padding-left: grid.$gutter-width-mobile + 1rem; - - display: block; - - position: relative; - - line-height: #{math.div(1, 1.125) * 2}; - - &::after { - width: 0; - - position: absolute; - top: 0; - bottom: 0; - left: 0; - - @include colour.colour-background("font-dark"); - - // transition: width 200ms; - - content: ""; - } - - &:hover { - &::after { - width: 0.25rem; - - // transition: width 50ms; - } - } - - &--selected { - &::after, - &:hover::after { - width: 0.5rem; - } - } - } - } - - @include media.on-tiny { - .tna-logo { - width: 3.5rem; - height: 3.5rem; - } - - &__logo-strapline { - line-height: 1.25; - } - } -} +@use "header"; diff --git a/src/nationalarchives/components/header/header.scss b/src/nationalarchives/components/header/header.scss new file mode 100644 index 00000000..58516ff1 --- /dev/null +++ b/src/nationalarchives/components/header/header.scss @@ -0,0 +1,593 @@ +@use "sass:math"; +@use "../../tools/colour"; +@use "../../variables/colour" as colourVars; // TODO +@use "../../variables/grid" as gridVars; +@use "../../tools/typography"; +@use "../../tools/media"; +@use "../grid"; + +// TODO: Only for the header component at the moment - remove on redesign +@mixin uninvert { + @include colour.colour-css-vars; + + .tna-template--system-theme & { + @include colour.colour-css-vars; + + @media (prefers-color-scheme: dark) { + @include colour.colour-css-vars-dark; + } + + @media (prefers-contrast: more) { + @include colour.colour-css-vars-high-contrast; + } + + @media (prefers-contrast: more) and (prefers-color-scheme: dark) { + @include colour.colour-css-vars-high-contrast-dark; + } + } + + .tna-template--light-theme & { + @include colour.colour-css-vars; + } + + .tna-template--dark-theme & { + @include colour.colour-css-vars-dark; + } + + .tna-template--high-contrast-theme & { + @include colour.colour-css-vars-high-contrast; + } + + .tna-template--high-contrast-theme.tna-template--dark-theme & { + @include colour.colour-css-vars-high-contrast-dark; + } +} + +.tna-header { + @include colour.invert; + + color: colour.brand-colour("white"); + + background-color: colour.brand-colour("black"); + + &__exit { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + + text-align: right; + + background-color: colourVars.$dark-grey; + } + + &__exit-link { + text-decoration: none; + @include typography.relative-font-size(16); + + &, + &:link, + &:visited { + color: #fff; + } + + &:hover { + text-decoration: underline; + + // .tna-header__exit-link-icon { + // border-color: colour.$tna-yellow; + + // &::before { + // border-top-color: colour.$tna-yellow; + // border-right-color: colour.$tna-yellow; + // } + + // &::after { + // background-color: colour.$tna-yellow; + // } + // } + } + } + + &__exit-link-icon { + width: 0.825rem; + height: 0.825rem; + margin-right: 0.125rem; + margin-left: 0.5rem; + + display: inline-block; + + position: relative; + + vertical-align: middle; + + border: 0.125rem #fff solid; + + &::before { + position: absolute; + top: -0.25rem; + right: -0.25rem; + z-index: 2; + + border: 0.25rem transparent solid; + border-top-color: #fff; + border-right-color: #fff; + + content: ""; + } + + &::after { + width: 0.25rem; + height: 0.825rem; + + position: absolute; + top: -0.125rem; + right: -0.125rem; + z-index: 1; + + background-color: #fff; + + outline: 0.2rem colourVars.$dark-grey solid; + + transform: rotate(45deg) translateX(50%); + transform-origin: 100% 0; + + content: ""; + } + } + + &__contents { + &.tna-container { + justify-content: space-between; + } + } + + &__logo { + padding-top: 1.5rem; + padding-bottom: 1.5rem; + } + + &__logo-link { + display: flex; + align-items: flex-end; + + color: inherit; + text-decoration: none; + + &, + &:link, + &:visited { + color: inherit; + } + + &:hover { + text-decoration: none; + } + + // &--href { + // &:hover { + // outline: 0.375rem #fff solid; + // outline-offset: 1px; + + // // .tna-logo__background { + // // fill: #fff; + // // } + + // // .tna-logo__foreground { + // // fill: #000; + // // } + // } + // } + } + + .tna-logo { + width: 6rem; + height: 6rem; + + display: inline-block; + } + + &__logo-link--href:hover .tna-logo { + outline: 0.375rem #fff solid; + outline-offset: 1px; + } + + &__logo-link--href:active .tna-logo, + &__logo-link--href:focus .tna-logo { + outline: none; + } + + .tna-logo__foreground { + fill: #fff; + } + + .tna-logo__background { + fill: none; + } + + &__logo-strapline { + margin: 0 0.75rem; + + display: inline-block; + + line-height: 2.125; + text-transform: uppercase; + } + + &__navigation-toggle { + align-self: center; + } + + &__hamburger { + width: 2rem; + height: 0.25rem; + + display: block; + + background-color: #fff; + + transition: height 1ms 200ms; + + &::before, + &::after { + height: 0.25rem; + + display: block; + + position: absolute; + right: 0; + left: 0; + + background-color: inherit; + + transition: + top 200ms 200ms, + bottom 200ms 200ms, + transform 200ms; + + content: ""; + } + + &::before { + top: 0; + } + + &::after { + bottom: 0; + } + } + + &__navigation-toggle-button { + height: 2rem; + padding: 0; + + display: block; + + position: relative; + + appearance: none; + + font-size: 0; + + background: none; + + border: 0 transparent solid; + border-width: 0.25rem 0; + + cursor: pointer; + + &--opened { + .tna-header__hamburger { + height: 0; + + &::before, + &::after { + transition: + top 200ms, + bottom 200ms, + transform 200ms 200ms; + } + + &::before { + top: 0.625rem; + + transform: rotate(-135deg); + } + + &::after { + bottom: 0.625rem; + + transform: rotate(135deg); + } + } + } + } + + &--yellow, + &--pink, + &--orange, + &--green, + &--blue { + color: colour.brand-colour("black"); + + .tna-header__logo-link { + &:hover { + .tna-logo { + outline-color: #000; + } + } + } + + .tna-logo__foreground { + fill: #000; + } + + .tna-header__hamburger { + background-color: colour.brand-colour("black"); + } + } + + &--yellow { + background-color: colour.brand-colour("yellow"); + } + + &--pink { + background-color: colour.brand-colour("pink"); + } + + &--orange { + background-color: colour.brand-colour("orange"); + } + + &--green { + background-color: colour.brand-colour("green"); + } + + &--blue { + background-color: colour.brand-colour("blue"); + } + + &__navigation { + display: flex; + flex-direction: column-reverse; + justify-content: space-between; + align-items: flex-end; + } + + &__top-navigation-items { + margin: 0; + padding: 1.25rem 0; + + // order: 1; + + list-style: none; + + line-height: 1; + } + + &__top-navigation-item { + margin-left: 1.5rem; + + display: inline-block; + } + + &__top-navigation-item-link { + display: inline-block; + + text-decoration: none; + @include typography.relative-font-size(16); + + &, + &:link, + &:visited { + color: inherit; + } + + &:hover, + &--selected { + &, + &:link, + &:visited { + @include typography.interacted-text-decoration; + } + } + } + + &__navigation-items { + margin: 0; + padding: 0; + + // order: 2; + + list-style: none; + + white-space: nowrap; + } + + &__navigation-item { + margin-left: 0.75rem; + + display: inline-block; + } + + &__navigation-item-link { + padding: 0.5rem 1rem; + + display: inline-block; + + @include typography.heading-font; + text-decoration: none; + line-height: 2; + + // transition: + // color 200ms, + // background-color 200ms; + + &, + &:link, + &:visited { + color: inherit; + } + + &:hover, + &--selected { + text-decoration: none; + + &, + &:link, + &:visited { + @include uninvert; + @include colour.colour-font("font-dark"); + @include colour.colour-background("page-background"); + } + // transition: + // color 50ms, + // background-color 50ms; + } + } + + @include media.on-larger-than-mobile { + .tna-header__navigation-toggle { + display: none; + } + } + + @include media.on-mobile { + &__contents { + &.tna-container { + padding-right: 0; + padding-left: 0; + } + } + + &__logo { + padding-top: 1rem; + padding-bottom: 1rem; + + &.tna-column { + padding-right: gridVars.$gutter-width-mobile; + padding-left: gridVars.$gutter-width-mobile; + } + } + + .tna-logo { + width: 4.5rem; + height: 4.5rem; + } + + &__logo-strapline { + line-height: 1.55; + } + + &__navigation-toggle { + &.tna-column { + padding-right: gridVars.$gutter-width-mobile; + padding-left: 0; + } + } + + &__navigation { + @include uninvert; + @include colour.colour-font("font-base"); + @include typography.relative-font-size(20); + + align-items: stretch; + flex-direction: column; + + &.tna-column { + padding-right: 0; + padding-left: 0; + } + + .tna-template--js-enabled & { + display: none; + + &--open { + display: flex; + } + } + } + + &__top-navigation-items { + padding: 0.5rem 1rem; + + // text-align: center; + + @include colour.colour-background("page-background"); + + @include colour.colour-border("keyline", 1px, solid, bottom); + } + + &__top-navigation-item { + margin: 0; + padding: 0.5rem; + } + + &__top-navigation-item-link { + } + + &__navigation-items { + width: 100%; + + @include colour.colour-background("page-background"); + } + + &__navigation-item { + margin: 0; + + display: block; + + @include colour.colour-border("keyline", 1px, solid, bottom); + } + + &__navigation-item-link { + padding-right: gridVars.$gutter-width-mobile; + padding-left: gridVars.$gutter-width-mobile + 1rem; + + display: block; + + position: relative; + + line-height: #{math.div(1, 1.125) * 2}; + + &::after { + width: 0; + + position: absolute; + top: 0; + bottom: 0; + left: 0; + + @include colour.colour-background("font-dark"); + + // transition: width 200ms; + + content: ""; + } + + &:hover { + &::after { + width: 0.25rem; + + // transition: width 50ms; + } + } + + &--selected { + &::after, + &:hover::after { + width: 0.5rem; + } + } + } + } + + @include media.on-tiny { + .tna-logo { + width: 3.5rem; + height: 3.5rem; + } + + &__logo-strapline { + line-height: 1.25; + } + } +} diff --git a/src/nationalarchives/components/hero/_index.scss b/src/nationalarchives/components/hero/_index.scss index c2da3290..428877c1 100644 --- a/src/nationalarchives/components/hero/_index.scss +++ b/src/nationalarchives/components/hero/_index.scss @@ -1,167 +1 @@ -@use "../../tools/colour"; -@use "../../tools/media"; - -.tna-hero { - min-height: min(35vw, 480px); - // margin-bottom: 2rem; - padding-top: 5rem; - padding-bottom: 3rem; - - display: flex; - align-items: flex-end; - - position: relative; - - @include colour.invert-on-mobile; - - &__image { - width: 100%; - height: 100%; - - position: absolute; - inset: 0; - z-index: 1; - - object-fit: cover; - } - - picture#{&}__image img { - width: 100%; - height: 100%; - - object-fit: cover; - } - - &__image-details { - position: absolute; - right: 1.25rem; - bottom: 1.25rem; - z-index: 3; - - @include colour.colour-font("font-base"); - } - - &__image-details-summary { - width: 2rem; - height: 2rem; - - position: relative; - z-index: 2; - - font-size: 0; - text-align: center; - line-height: 2rem; - list-style: none; - - background-color: #fc0; - - border-radius: 1rem; - - cursor: pointer; - } - - &__image-details-summary-icon { - font-size: 1.25rem; - font-style: normal; - font-weight: 700; - text-transform: lowercase; - } - - &__image-information { - width: 20rem; - max-width: 45vw; - padding: 0.5rem 1rem; - - position: absolute; - right: 0; - bottom: 2.5rem; - z-index: 1; - - background-color: #fc0; - } - - &__inner { - position: relative; - z-index: 2; - } - - &__content { - } - - &__content-inner { - padding: 2.5rem 1.5rem; - - @include colour.colour-background("page-background"); - } - - &__heading { - margin-bottom: 0; - } - - &__body { - margin-top: 1.5rem; - } - - @include media.on-mobile { - padding: 0; - - display: block; - - &__image { - height: 320px; - - position: static; - } - - &__image-details { - bottom: auto; - top: 1.25rem; - } - - &__image-details-summary { - } - - &__image-details-summary-icon { - } - - &__image-information { - top: 2.5rem; - bottom: auto; - } - - &__inner { - } - - &__content { - } - - &__content-inner { - padding: 1.5rem 0; - - background-color: transparent; - } - - &__heading { - } - - &__body { - margin-top: 1rem; - } - } - - @include media.on-tiny { - &__image { - height: 240px; - } - } - - @include colour.on-high-contrast { - &__content-inner { - @include colour.colour-border("keyline-dark", 1px); - - @include media.on-mobile { - border: none; - } - } - } -} +@use "hero"; diff --git a/src/nationalarchives/components/hero/hero.scss b/src/nationalarchives/components/hero/hero.scss new file mode 100644 index 00000000..46ff41cf --- /dev/null +++ b/src/nationalarchives/components/hero/hero.scss @@ -0,0 +1,168 @@ +@use "../../tools/colour"; +@use "../../tools/media"; +@use "../grid"; + +.tna-hero { + min-height: min(35vw, 480px); + // margin-bottom: 2rem; + padding-top: 5rem; + padding-bottom: 3rem; + + display: flex; + align-items: flex-end; + + position: relative; + + @include colour.invert-on-mobile; + + &__image { + width: 100%; + height: 100%; + + position: absolute; + inset: 0; + z-index: 1; + + object-fit: cover; + } + + picture#{&}__image img { + width: 100%; + height: 100%; + + object-fit: cover; + } + + &__image-details { + position: absolute; + right: 1.25rem; + bottom: 1.25rem; + z-index: 3; + + @include colour.colour-font("font-base"); + } + + &__image-details-summary { + width: 2rem; + height: 2rem; + + position: relative; + z-index: 2; + + font-size: 0; + text-align: center; + line-height: 2rem; + list-style: none; + + background-color: #fc0; + + border-radius: 1rem; + + cursor: pointer; + } + + &__image-details-summary-icon { + font-size: 1.25rem; + font-style: normal; + font-weight: 700; + text-transform: lowercase; + } + + &__image-information { + width: 20rem; + max-width: 45vw; + padding: 0.5rem 1rem; + + position: absolute; + right: 0; + bottom: 2.5rem; + z-index: 1; + + background-color: #fc0; + } + + &__inner { + position: relative; + z-index: 2; + } + + &__content { + } + + &__content-inner { + padding: 2.5rem 1.5rem; + + @include colour.colour-background("page-background"); + } + + &__heading { + margin-bottom: 0; + } + + &__body { + margin-top: 1.5rem; + } + + @include media.on-mobile { + padding: 0; + + display: block; + + &__image { + height: 320px; + + position: static; + } + + &__image-details { + bottom: auto; + top: 1.25rem; + } + + &__image-details-summary { + } + + &__image-details-summary-icon { + } + + &__image-information { + top: 2.5rem; + bottom: auto; + } + + &__inner { + } + + &__content { + } + + &__content-inner { + padding: 1.5rem 0; + + background-color: transparent; + } + + &__heading { + } + + &__body { + margin-top: 1rem; + } + } + + @include media.on-tiny { + &__image { + height: 240px; + } + } + + @include colour.on-high-contrast { + &__content-inner { + @include colour.colour-border("keyline-dark", 1px); + + @include media.on-mobile { + border: none; + } + } + } +} diff --git a/src/nationalarchives/components/index-grid/_index.scss b/src/nationalarchives/components/index-grid/_index.scss index 842d5ba7..f546d93f 100644 --- a/src/nationalarchives/components/index-grid/_index.scss +++ b/src/nationalarchives/components/index-grid/_index.scss @@ -1,82 +1 @@ -@use "sass:math"; -@use "../../tools/colour"; -@use "../../tools/media"; -@use "../../tools/typography"; - -.tna-index-grid { - &__heading { - } - - &__items { - margin-bottom: 0; - padding-top: 2rem; - - list-style: none; - } - - &__item-wrapper { - margin-bottom: 2rem; - - @include media.on-mobile { - margin-bottom: 1rem; - } - } - - &__item { - @include colour.invert; - - // @include colour.colour-font("contrast-font-base"); - - height: 100%; - - display: flex; - flex-direction: column; - - position: relative; - - text-decoration: none; - - @include colour.on-high-contrast { - @include colour.colour-border("keyline-dark", 1px); - } - } - - &__item-image { - width: 100%; - // height: #{math.div(2, 3) * 100%}; - height: auto; - - // object-fit: cover; - } - - &__item-content { - padding: 1rem; - - flex: 1; - } - - &__item-label { - position: absolute; - top: 0.5rem; - left: 0.5rem; - } - - &__item-title { - // @include typography.heading-font; - text-decoration: underline; - // @include typography.relative-font-size(20); - - .tna-index-grid__item:hover & { - &, - &:link, - &:visited { - @include typography.interacted-text-decoration; - } - } - } - - &__item-subtitle { - @include colour.colour-font("font-light"); - @include typography.relative-font-size(16); - } -} +@use "index-grid"; diff --git a/src/nationalarchives/components/index-grid/index-grid.scss b/src/nationalarchives/components/index-grid/index-grid.scss new file mode 100644 index 00000000..e3e4946e --- /dev/null +++ b/src/nationalarchives/components/index-grid/index-grid.scss @@ -0,0 +1,83 @@ +@use "sass:math"; +@use "../../tools/colour"; +@use "../../tools/media"; +@use "../../tools/typography"; +@use "../grid"; + +.tna-index-grid { + &__heading { + } + + &__items { + margin-bottom: 0; + padding-top: 2rem; + + list-style: none; + } + + &__item-wrapper { + margin-bottom: 2rem; + + @include media.on-mobile { + margin-bottom: 1rem; + } + } + + &__item { + @include colour.invert; + + // @include colour.colour-font("contrast-font-base"); + + height: 100%; + + display: flex; + flex-direction: column; + + position: relative; + + text-decoration: none; + + @include colour.on-high-contrast { + @include colour.colour-border("keyline-dark", 1px); + } + } + + &__item-image { + width: 100%; + // height: #{math.div(2, 3) * 100%}; + height: auto; + + // object-fit: cover; + } + + &__item-content { + padding: 1rem; + + flex: 1; + } + + &__item-label { + position: absolute; + top: 0.5rem; + left: 0.5rem; + } + + &__item-title { + // @include typography.heading-font; + text-decoration: underline; + // @include typography.relative-font-size(20); + + .tna-index-grid__item:hover & { + &, + &:link, + &:visited { + @include typography.interacted-text-decoration; + } + } + } + + &__item-subtitle { + @include colour.colour-font("font-light"); + @include typography.relative-font-size(16); + } +} diff --git a/src/nationalarchives/components/message/_index.scss b/src/nationalarchives/components/message/_index.scss index 769fe527..6dd0e499 100644 --- a/src/nationalarchives/components/message/_index.scss +++ b/src/nationalarchives/components/message/_index.scss @@ -1,35 +1 @@ -@use "../../tools/colour"; -@use "../../tools/media"; - -.tna-message { - padding: 1rem; - - display: flex; - align-items: center; - - color: colour.brand-colour("black"); - - @include colour.colour-background("keyline"); - - @include colour.colour-border("keyline-dark", 0.5rem, solid, left); - - // &--yellow { - background-color: colour.brand-colour("cream"); - - border-left-color: colour.brand-colour("yellow"); - // } - - &__icon { - margin-right: 1rem; - - flex: 0 0 2.5rem; - - @include media.on-mobile { - flex: 0 0 1.5rem; - } - } - - &__message { - flex: 1; - } -} +@use "message"; diff --git a/src/nationalarchives/components/message/message.scss b/src/nationalarchives/components/message/message.scss new file mode 100644 index 00000000..769fe527 --- /dev/null +++ b/src/nationalarchives/components/message/message.scss @@ -0,0 +1,35 @@ +@use "../../tools/colour"; +@use "../../tools/media"; + +.tna-message { + padding: 1rem; + + display: flex; + align-items: center; + + color: colour.brand-colour("black"); + + @include colour.colour-background("keyline"); + + @include colour.colour-border("keyline-dark", 0.5rem, solid, left); + + // &--yellow { + background-color: colour.brand-colour("cream"); + + border-left-color: colour.brand-colour("yellow"); + // } + + &__icon { + margin-right: 1rem; + + flex: 0 0 2.5rem; + + @include media.on-mobile { + flex: 0 0 1.5rem; + } + } + + &__message { + flex: 1; + } +} diff --git a/src/nationalarchives/components/phase-banner/_index.scss b/src/nationalarchives/components/phase-banner/_index.scss index e34844f9..8c7e6402 100644 --- a/src/nationalarchives/components/phase-banner/_index.scss +++ b/src/nationalarchives/components/phase-banner/_index.scss @@ -1,60 +1 @@ -@use "../../tools/colour"; -@use "../../tools/media"; -@use "../../tools/typography"; - -.tna-phase-banner { - @include colour.fixed; - - padding-top: 0.375rem; - padding-bottom: 0.375rem; - - background-color: #d9d9d6; - - .tna-container { - align-items: center; - flex-wrap: nowrap; - - // @include media.on-tiny { - // flex-wrap: wrap; - // } - } - - &__phase { - margin: 0.25rem 0; - padding: 0 0.5rem; - - display: block; - - font-weight: 700; - text-transform: uppercase; - line-height: 1.5; - - background-color: #fff; - } - - &__message { - margin: 0.25rem 0; - - // @include typography.relative-font-size(14); - - a { - color: inherit; - } - } - - &--discovery { - background-color: #fad3d4; - } - - &--alpha { - background-color: #f9e1bc; - } - - &--beta { - background-color: #f9f7e2; - } - - &--live { - background-color: #dde5d5; - } -} +@use "phase-banner"; diff --git a/src/nationalarchives/components/phase-banner/phase-banner.scss b/src/nationalarchives/components/phase-banner/phase-banner.scss new file mode 100644 index 00000000..6d914331 --- /dev/null +++ b/src/nationalarchives/components/phase-banner/phase-banner.scss @@ -0,0 +1,61 @@ +@use "../../tools/colour"; +@use "../../tools/media"; +@use "../../tools/typography"; +@use "../grid"; + +.tna-phase-banner { + @include colour.fixed; + + padding-top: 0.375rem; + padding-bottom: 0.375rem; + + background-color: #d9d9d6; + + .tna-container { + align-items: center; + flex-wrap: nowrap; + + // @include media.on-tiny { + // flex-wrap: wrap; + // } + } + + &__phase { + margin: 0.25rem 0; + padding: 0 0.5rem; + + display: block; + + font-weight: 700; + text-transform: uppercase; + line-height: 1.5; + + background-color: #fff; + } + + &__message { + margin: 0.25rem 0; + + // @include typography.relative-font-size(14); + + a { + color: inherit; + } + } + + &--discovery { + background-color: #fad3d4; + } + + &--alpha { + background-color: #f9e1bc; + } + + &--beta { + background-color: #f9f7e2; + } + + &--live { + background-color: #dde5d5; + } +} diff --git a/src/nationalarchives/components/picture/_index.scss b/src/nationalarchives/components/picture/_index.scss index 8dee7b51..36e7253b 100644 --- a/src/nationalarchives/components/picture/_index.scss +++ b/src/nationalarchives/components/picture/_index.scss @@ -1,63 +1 @@ -@use "../../tools/colour"; -@use "../../tools/spacing"; - -.tna-picture { - margin: 0; - padding: 0; - - @include spacing.space-below; - - &__image-wrapper { - // padding: 1rem 0; - - position: relative; - - background-color: #f4f4f4; - } - - &__image { - height: auto; - margin: 0 auto; - } - - &__toggle-transcript { - position: absolute; - right: 1rem; - bottom: 1rem; - } - - &__transcript { - @include colour.invert; - - padding: 1rem 1.5rem; - - // @include colour.colour-font("font-base"); - - .tna-template--clicked &:focus { - outline: none; - } - - .tna-tabs { - margin-bottom: 0.5rem; - } - } - - &__caption { - padding: 1rem 0; - - // position: relative; - - // text-align: center; - - @include colour.colour-border("keyline", 1px, solid, bottom); - } - - @include colour.on-high-contrast { - @include colour.colour-border("keyline-dark", 1px); - border-bottom-width: 0; - - &__caption { - padding: 1rem; - } - } -} +@use "picture"; diff --git a/src/nationalarchives/components/picture/picture.scss b/src/nationalarchives/components/picture/picture.scss new file mode 100644 index 00000000..7ff8db3f --- /dev/null +++ b/src/nationalarchives/components/picture/picture.scss @@ -0,0 +1,64 @@ +@use "../../tools/colour"; +@use "../../tools/spacing"; +@use "../button"; + +.tna-picture { + margin: 0; + padding: 0; + + @include spacing.space-below; + + &__image-wrapper { + // padding: 1rem 0; + + position: relative; + + background-color: #f4f4f4; + } + + &__image { + height: auto; + margin: 0 auto; + } + + &__toggle-transcript { + position: absolute; + right: 1rem; + bottom: 1rem; + } + + &__transcript { + @include colour.invert; + + padding: 1rem 1.5rem; + + // @include colour.colour-font("font-base"); + + .tna-template--clicked &:focus { + outline: none; + } + + .tna-tabs { + margin-bottom: 0.5rem; + } + } + + &__caption { + padding: 1rem 0; + + // position: relative; + + // text-align: center; + + @include colour.colour-border("keyline", 1px, solid, bottom); + } + + @include colour.on-high-contrast { + @include colour.colour-border("keyline-dark", 1px); + border-bottom-width: 0; + + &__caption { + padding: 1rem; + } + } +} diff --git a/src/nationalarchives/components/profile/_index.scss b/src/nationalarchives/components/profile/_index.scss index f4480724..2ad676a5 100644 --- a/src/nationalarchives/components/profile/_index.scss +++ b/src/nationalarchives/components/profile/_index.scss @@ -1,2 +1 @@ -.tna-profile { -} +@use "profile"; diff --git a/src/nationalarchives/components/profile/profile.scss b/src/nationalarchives/components/profile/profile.scss new file mode 100644 index 00000000..14e61304 --- /dev/null +++ b/src/nationalarchives/components/profile/profile.scss @@ -0,0 +1,4 @@ +@use "../grid"; + +.tna-profile { +} diff --git a/src/nationalarchives/components/sensitive-image/_index.scss b/src/nationalarchives/components/sensitive-image/_index.scss index 61067b1a..89fee306 100644 --- a/src/nationalarchives/components/sensitive-image/_index.scss +++ b/src/nationalarchives/components/sensitive-image/_index.scss @@ -1,77 +1 @@ -@use "../../tools/typography" as typographyTools; - -.tna-sensitive-image { - &__warning { - } - - &__details { - position: relative; - - // overflow: hidden; - - &::after { - width: 100%; - padding-bottom: calc( - 100% * var(--sensitive-image-height) / var(--sensitive-image-width) - ); - - display: block; - - position: relative; - z-index: -1; - - background-image: var(--sensitive-image); - background-clip: padding-box; - background-size: contain; - - filter: blur(20px) saturate(0); - - content: ""; - } - } - - &__show { - display: flex; - align-items: center; - justify-content: center; - - position: absolute; - inset: 0; - z-index: 1; - - font-size: 0; - - cursor: pointer; - - &::after { - padding: 0.5rem 2rem; - - @include typographyTools.relative-font-size(16); - background-color: #ff0; - - content: attr(data-action); - } - - &:hover { - &::after { - color: #fff; - - background-color: #000; - } - } - } - - &__container { - } - - &__image { - width: 100%; - } - - &__details[open] { - &::after, - .tna-sensitive-image__show { - display: none; - } - } -} +@use "sensitive-image"; diff --git a/src/nationalarchives/components/sensitive-image/sensitive-image.scss b/src/nationalarchives/components/sensitive-image/sensitive-image.scss new file mode 100644 index 00000000..61067b1a --- /dev/null +++ b/src/nationalarchives/components/sensitive-image/sensitive-image.scss @@ -0,0 +1,77 @@ +@use "../../tools/typography" as typographyTools; + +.tna-sensitive-image { + &__warning { + } + + &__details { + position: relative; + + // overflow: hidden; + + &::after { + width: 100%; + padding-bottom: calc( + 100% * var(--sensitive-image-height) / var(--sensitive-image-width) + ); + + display: block; + + position: relative; + z-index: -1; + + background-image: var(--sensitive-image); + background-clip: padding-box; + background-size: contain; + + filter: blur(20px) saturate(0); + + content: ""; + } + } + + &__show { + display: flex; + align-items: center; + justify-content: center; + + position: absolute; + inset: 0; + z-index: 1; + + font-size: 0; + + cursor: pointer; + + &::after { + padding: 0.5rem 2rem; + + @include typographyTools.relative-font-size(16); + background-color: #ff0; + + content: attr(data-action); + } + + &:hover { + &::after { + color: #fff; + + background-color: #000; + } + } + } + + &__container { + } + + &__image { + width: 100%; + } + + &__details[open] { + &::after, + .tna-sensitive-image__show { + display: none; + } + } +} diff --git a/src/nationalarchives/components/skip-link/_index.scss b/src/nationalarchives/components/skip-link/_index.scss index f7333370..5effad74 100644 --- a/src/nationalarchives/components/skip-link/_index.scss +++ b/src/nationalarchives/components/skip-link/_index.scss @@ -1,63 +1 @@ -@use "../../tools/colour"; - -.tna-skip-link { - width: 1px !important; - height: 1px !important; - margin: 0 !important; - padding: 1rem !important; - - display: block !important; - - position: absolute !important; - - overflow: hidden !important; - - white-space: nowrap !important; - - clip: rect(0 0 0 0) !important; - -webkit-clip-path: inset(50%) !important; - clip-path: inset(50%) !important; - - &, - &:link, - &:visited { - @include colour.colour-font("button-primary-text", $important: true); - } - - &:active, - &:focus { - width: auto !important; - height: auto !important; - margin: inherit !important; - - position: static !important; - - overflow: visible !important; - - white-space: inherit !important; - - clip: auto !important; - -webkit-clip-path: none !important; - clip-path: none !important; - } - - &:focus { - @include colour.colour-background( - "button-primary-background", - $important: true - ); - - @include colour.colour-border("focus-outline", 0.3125rem, $important: true); - - outline: none !important; - } - - &:hover { - @include colour.colour-font("button-primary-hover-text", $important: true); - - @include colour.colour-background( - "button-primary-hover-background", - $important: true - ); - } -} +@use "skip-link"; diff --git a/src/nationalarchives/components/skip-link/skip-link.scss b/src/nationalarchives/components/skip-link/skip-link.scss new file mode 100644 index 00000000..b2beb139 --- /dev/null +++ b/src/nationalarchives/components/skip-link/skip-link.scss @@ -0,0 +1,60 @@ +@use "../../tools/colour"; + +.tna-skip-link { + width: 1px !important; + height: 1px !important; + margin: 0 !important; + padding: 1rem !important; + + display: block !important; + + position: absolute !important; + + overflow: hidden !important; + + white-space: nowrap !important; + + clip: rect(0 0 0 0) !important; + -webkit-clip-path: inset(50%) !important; + clip-path: inset(50%) !important; + + &, + &:link, + &:visited { + @include colour.colour-font("button-text", $important: true); + } + + &:active, + &:focus { + width: auto !important; + height: auto !important; + margin: inherit !important; + + position: static !important; + + overflow: visible !important; + + white-space: inherit !important; + + clip: auto !important; + -webkit-clip-path: none !important; + clip-path: none !important; + } + + &:focus { + @include colour.colour-background("button-background", $important: true); + + @include colour.colour-border("focus-outline", 0.3125rem, $important: true); + + outline: none !important; + } + + &:hover { + @include colour.colour-font("button-hover-text", $important: true); + + @include colour.colour-background( + "button-hover-background", + $important: true + ); + } +} diff --git a/src/nationalarchives/components/tabs/_index.scss b/src/nationalarchives/components/tabs/_index.scss index 37585e05..40fbd1a6 100644 --- a/src/nationalarchives/components/tabs/_index.scss +++ b/src/nationalarchives/components/tabs/_index.scss @@ -1,142 +1 @@ -@use "../../tools/colour"; -@use "../../tools/typography"; -@use "../../tools/spacing"; - -.tna-tabs { - @include spacing.space-below; - - &__list { - margin: 0 0 1rem; - padding: 0; - - display: flex; - align-items: stretch; - gap: 1rem; - flex-wrap: nowrap; - - list-style: none; - } - - &__list-item { - } - - &__list-item-link { - padding: 0.5rem 0; - - display: flex; - - align-items: center; - position: relative; - - @include typography.relative-font-size(20); - @include typography.heading-font; - text-decoration: none; - // line-height: 1.5; - text-align: center; - - background: transparent; - - border: none; - - cursor: pointer; - - &, - &:link, - &:visited { - @include colour.colour-font("font-dark"); - } - - &::after { - height: 0; - - position: absolute; - right: 0; - bottom: 0; - left: 0; - - @include colour.colour-background("keyline-dark"); - - content: ""; - } - - &:hover, - &--selected, - &--selected:hover { - text-decoration: none; - - &::after { - height: 0.25rem; - } - } - - .tna-template--js-enabled & { - @include colour.colour-font("font-light"); - - &:hover { - &::after { - height: 0.125rem; - - @include colour.colour-background("font-light"); - } - } - - &--selected { - @include colour.colour-font("font-dark"); - - &::after, - &:hover::after { - height: 0.25rem; - - @include colour.colour-background("keyline-dark"); - } - } - } - } - - &__items { - // &:not(:target-within) { - // .tna-tabs__item:first-child { - // display: block; - // } - // } - } - - &__item { - display: none; - - &:first-child { - display: block; - } - - &:has(~ :target) { - display: none; - } - - &:target { - display: block; - } - - .tna-template--js-enabled & { - display: block; - - &[hidden] { - display: none; - } - } - - .tna-template--clicked &:focus { - outline: none; - } - } - - @include colour.on-high-contrast { - &__list-item-link { - padding-right: 1rem; - padding-left: 1rem; - - overflow: hidden; - - @include colour.colour-border("keyline-dark", 1px); - } - } -} +@use "tabs"; diff --git a/src/nationalarchives/components/tabs/tabs.scss b/src/nationalarchives/components/tabs/tabs.scss new file mode 100644 index 00000000..37585e05 --- /dev/null +++ b/src/nationalarchives/components/tabs/tabs.scss @@ -0,0 +1,142 @@ +@use "../../tools/colour"; +@use "../../tools/typography"; +@use "../../tools/spacing"; + +.tna-tabs { + @include spacing.space-below; + + &__list { + margin: 0 0 1rem; + padding: 0; + + display: flex; + align-items: stretch; + gap: 1rem; + flex-wrap: nowrap; + + list-style: none; + } + + &__list-item { + } + + &__list-item-link { + padding: 0.5rem 0; + + display: flex; + + align-items: center; + position: relative; + + @include typography.relative-font-size(20); + @include typography.heading-font; + text-decoration: none; + // line-height: 1.5; + text-align: center; + + background: transparent; + + border: none; + + cursor: pointer; + + &, + &:link, + &:visited { + @include colour.colour-font("font-dark"); + } + + &::after { + height: 0; + + position: absolute; + right: 0; + bottom: 0; + left: 0; + + @include colour.colour-background("keyline-dark"); + + content: ""; + } + + &:hover, + &--selected, + &--selected:hover { + text-decoration: none; + + &::after { + height: 0.25rem; + } + } + + .tna-template--js-enabled & { + @include colour.colour-font("font-light"); + + &:hover { + &::after { + height: 0.125rem; + + @include colour.colour-background("font-light"); + } + } + + &--selected { + @include colour.colour-font("font-dark"); + + &::after, + &:hover::after { + height: 0.25rem; + + @include colour.colour-background("keyline-dark"); + } + } + } + } + + &__items { + // &:not(:target-within) { + // .tna-tabs__item:first-child { + // display: block; + // } + // } + } + + &__item { + display: none; + + &:first-child { + display: block; + } + + &:has(~ :target) { + display: none; + } + + &:target { + display: block; + } + + .tna-template--js-enabled & { + display: block; + + &[hidden] { + display: none; + } + } + + .tna-template--clicked &:focus { + outline: none; + } + } + + @include colour.on-high-contrast { + &__list-item-link { + padding-right: 1rem; + padding-left: 1rem; + + overflow: hidden; + + @include colour.colour-border("keyline-dark", 1px); + } + } +} diff --git a/src/nationalarchives/stories/utilities/colour-schemes/colour-schemes.stories.js b/src/nationalarchives/stories/utilities/colour-schemes/colour-schemes.stories.js index 43504f7b..53730eb4 100644 --- a/src/nationalarchives/stories/utilities/colour-schemes/colour-schemes.stories.js +++ b/src/nationalarchives/stories/utilities/colour-schemes/colour-schemes.stories.js @@ -1,15 +1,16 @@ import SkipLink from "../../../components/skip-link/template.njk"; -import Header from "../../../components/header/template.njk"; import Breadcrumbs from "../../../components/breadcrumbs/template.njk"; import Button from "../../../components/button/template.njk"; import Card from "../../../components/card/template.njk"; +import Footer from "../../../components/footer/template.njk"; +import CookieBanner from "../../../components/cookie-banner/template.njk"; import Gallery from "../../../components/gallery/template.njk"; +import Header from "../../../components/header/template.njk"; import Hero from "../../../components/hero/template.njk"; import IndexGrid from "../../../components/index-grid/template.njk"; import Message from "../../../components/message/template.njk"; import Picture from "../../../components/picture/template.njk"; import Tabs from "../../../components/tabs/template.njk"; -import Footer from "../../../components/footer/template.njk"; const argTypes = { theme: { @@ -87,6 +88,11 @@ const Template = ({ theme, accent }) => { : "" }">
+ ${CookieBanner({ + params: { + cookiesUrl: "#", + }, + })} ${SkipLink({ params: { href: "main-content", @@ -205,6 +211,12 @@ const Template = ({ theme, accent }) => { brandIcon: "twitter", }, })} + ${Button({ + params: { + text: "Plain button", + plain: true, + }, + })}
@@ -306,7 +318,7 @@ const Template = ({ theme, accent }) => {

-
+
${Card({ params: { @@ -471,7 +483,7 @@ const Template = ({ theme, accent }) => {
${IndexGrid({ params: { - heading: { title: "My dogs", level: 3, href: "#" }, + heading: { title: "My dogs 1", level: 3, href: "#" }, items: Array(12) .fill({ ...{ @@ -511,7 +523,7 @@ const Template = ({ theme, accent }) => {
${IndexGrid({ params: { - heading: { title: "My dogs", level: 3, href: "#" }, + heading: { title: "My dogs 2", level: 3, href: "#" }, items: Array(12) .fill({ ...{ @@ -551,7 +563,7 @@ const Template = ({ theme, accent }) => {
${IndexGrid({ params: { - heading: { title: "My dogs", level: 3, href: "#" }, + heading: { title: "My dogs 3", level: 3, href: "#" }, items: Array(12) .fill({ ...{ @@ -591,7 +603,7 @@ const Template = ({ theme, accent }) => {
${IndexGrid({ params: { - heading: { title: "My dogs", level: 3, href: "#" }, + heading: { title: "My dogs 4", level: 3, href: "#" }, items: Array(12) .fill({ ...{ diff --git a/src/nationalarchives/templates/layouts/_generic.njk b/src/nationalarchives/templates/layouts/_generic.njk index f6d8dc0a..c7f71986 100644 --- a/src/nationalarchives/templates/layouts/_generic.njk +++ b/src/nationalarchives/templates/layouts/_generic.njk @@ -1,4 +1,5 @@ {# Based on https://github.com/alphagov/govuk-frontend/blob/8b6bf304b9fc891f64459c25a08f3d623f3fea72/packages/govuk-frontend/src/govuk/template.njk #} +{% from "nationalarchives/components/cookie-banner/macro.njk" import tnaCookieBanner -%} {% from "nationalarchives/components/skip-link/macro.njk" import tnaSkipLink -%} @@ -24,7 +25,11 @@ {% block bodyStart %} - {% block cookies %}{% endblock %} + {% block cookies %} + {{ tnaCookieBanner({ + url: '#' + }) }} + {% endblock %} {% block skipLink %} {{ tnaSkipLink({ diff --git a/src/nationalarchives/tools/_colour.scss b/src/nationalarchives/tools/_colour.scss index 6b294301..60576739 100644 --- a/src/nationalarchives/tools/_colour.scss +++ b/src/nationalarchives/tools/_colour.scss @@ -169,6 +169,10 @@ --link-visited: var(--contrast-link-visited); --keyline: var(--contrast-keyline); --keyline-dark: var(--contrast-keyline-dark); + --button-text: var(--contrast-button-text); + --button-background: var(--contrast-button-background); + --button-hover-text: var(--contrast-button-hover-text); + --button-hover-background: var(--contrast-button-hover-background); @include colour-background("contrast-background"); @@ -188,6 +192,10 @@ --link-visited: var(--contrast-link-visited); --keyline: var(--contrast-keyline); --keyline-dark: var(--contrast-keyline-dark); + --button-text: var(--contrast-button-text); + --button-background: var(--contrast-button-background); + --button-hover-text: var(--contrast-button-hover-text); + --button-hover-background: var(--contrast-button-hover-background); @include colour-background("contrast-background"); @@ -232,6 +240,22 @@ --font-dark: #{map.get(colour.$colour-palette-default, "font-dark")}; --font-light: #{map.get(colour.$colour-palette-default, "font-light")}; --link: #{map.get(colour.$colour-palette-default, "font-dark")}; + --link-visited: #{map.get(colour.$colour-palette-default, "link-visited")}; + --keyline: #{map.get(colour.$colour-palette-default, "keyline")}; + --keyline-dark: #{map.get(colour.$colour-palette-default, "keyline-dark")}; + --button-text: #{map.get(colour.$colour-palette-default, "button-text")}; + --button-background: #{map.get( + colour.$colour-palette-default, + "button-background" + )}; + --button-hover-text: #{map.get( + colour.$colour-palette-default, + "button-hover-text" + )}; + --button-hover-background: #{map.get( + colour.$colour-palette-default, + "button-hover-background" + )}; } @mixin light-accent-background { diff --git a/src/nationalarchives/tools/_index.scss b/src/nationalarchives/tools/_index.scss index 2dbac06e..be346346 100644 --- a/src/nationalarchives/tools/_index.scss +++ b/src/nationalarchives/tools/_index.scss @@ -1,5 +1,5 @@ -@forward "colour"; -@forward "grid"; -@forward "media"; -@forward "spacing"; -@forward "typography"; +@use "colour"; +@use "grid"; +@use "media"; +@use "spacing"; +@use "typography"; diff --git a/src/nationalarchives/tools/_spacing.scss b/src/nationalarchives/tools/_spacing.scss index 1529eaea..c6b5acea 100644 --- a/src/nationalarchives/tools/_spacing.scss +++ b/src/nationalarchives/tools/_spacing.scss @@ -9,7 +9,7 @@ } } -@mixin space-below() { +@mixin space-below { @extend %space-below; } diff --git a/src/nationalarchives/utilities/_index.scss b/src/nationalarchives/utilities/_index.scss index 457ede4b..80b332eb 100644 --- a/src/nationalarchives/utilities/_index.scss +++ b/src/nationalarchives/utilities/_index.scss @@ -1,5 +1,5 @@ -@forward "debug"; -@forward "font-awesome"; -@forward "global"; -@forward "overrides"; -@forward "typography"; +@use "debug"; +@use "font-awesome"; +@use "global"; +@use "overrides"; +@use "typography"; diff --git a/src/nationalarchives/variables/_colour.scss b/src/nationalarchives/variables/_colour.scss index 01ca4723..164d3216 100644 --- a/src/nationalarchives/variables/_colour.scss +++ b/src/nationalarchives/variables/_colour.scss @@ -43,10 +43,10 @@ $colour-palette-default: ( "focus-outline": map.get($colour-palette-brand, "blue"), "keyline": #ccc, "keyline-dark": $dark-grey, - "button-primary-text": map.get($colour-palette-brand, "white"), - "button-primary-background": map.get($colour-palette-brand, "black"), - "button-primary-hover-text": map.get($colour-palette-brand, "black"), - "button-primary-hover-background": map.get($colour-palette-brand, "white"), + "button-text": map.get($colour-palette-brand, "white"), + "button-background": map.get($colour-palette-brand, "black"), + "button-hover-text": map.get($colour-palette-brand, "black"), + "button-hover-background": map.get($colour-palette-brand, "white"), "contrast-background": #1e1e1e, // TODO: #343338 ? "contrast-font-base": map.get($colour-palette-brand, "white"), @@ -57,6 +57,10 @@ $colour-palette-default: ( "contrast-link-visited": map.get($colour-palette-brand, "white"), "contrast-keyline": rgba(map.get($colour-palette-brand, "white"), 0.5), "contrast-keyline-dark": rgba(map.get($colour-palette-brand, "white"), 0.8), + "contrast-button-text": map.get($colour-palette-brand, "black"), + "contrast-button-background": map.get($colour-palette-brand, "white"), + "contrast-button-hover-text": map.get($colour-palette-brand, "white"), + "contrast-button-hover-background": map.get($colour-palette-brand, "black"), "accent": map.get($colour-palette-brand, "light-grey"), "accent-background": #111, "accent-background-light": map.get($colour-palette-brand, "light-grey"), @@ -87,15 +91,15 @@ $colour-palette-dark: map.merge( "link-visited": map.get($colour-palette-default, "contrast-link-visited"), "keyline": rgba(map.get($colour-palette-brand, "white"), 0.25), "keyline-dark": map.get($colour-palette-brand, "white"), - "button-primary-text": map.get($colour-palette-brand, "black"), - "button-primary-background": map.get($colour-palette-brand, "white"), - "button-primary-hover-text": map.get($colour-palette-brand, "white"), - "button-primary-hover-background": map.get($colour-palette-brand, "black"), + "button-text": map.get($colour-palette-brand, "black"), + "button-background": map.get($colour-palette-brand, "white"), + "button-hover-text": map.get($colour-palette-brand, "white"), + "button-hover-background": map.get($colour-palette-brand, "black"), "contrast-background": #1e1e1e, "contrast-link-visited": map.get($colour-palette-default, "contrast-link-visited"), // --accent-background-light is the same as --contrast-background on dark themes - "accent-background-light": #111, + "accent-background-light": map.get($colour-palette-brand, "grey"), ) ); @@ -123,6 +127,10 @@ $colour-palette-high-contrast: map.merge( "contrast-link-visited": map.get($colour-palette-brand, "black"), "contrast-keyline": map.get($colour-palette-brand, "black"), "contrast-keyline-dark": map.get($colour-palette-brand, "black"), + "contrast-button-text": map.get($colour-palette-brand, "white"), + "contrast-button-background": map.get($colour-palette-brand, "black"), + "contrast-button-hover-text": map.get($colour-palette-brand, "black"), + "contrast-button-hover-background": map.get($colour-palette-brand, "white"), ) ); diff --git a/src/nationalarchives/variables/_grid.scss b/src/nationalarchives/variables/_grid.scss index dc28a71d..0092da4b 100644 --- a/src/nationalarchives/variables/_grid.scss +++ b/src/nationalarchives/variables/_grid.scss @@ -1,7 +1,7 @@ $largest-container-width: 75.25rem !default; $gutter-width: 2rem !default; -$gutter-width-mobile: 1rem !default; +$gutter-width-mobile: 1.5rem !default; $column-count: 12 !default; $column-count-medium: 6 !default; diff --git a/tasks/test-package.js b/tasks/test-package.js index c75131f6..c6097e81 100644 --- a/tasks/test-package.js +++ b/tasks/test-package.js @@ -11,6 +11,9 @@ const componentJavascriptFiles = (component) => [ const componentFiles = (component, excludeJavaScript = false) => [ `nationalarchives/components/${component}/_index.scss`, + `nationalarchives/components/${component}/${component}.scss`, + `nationalarchives/components/${component}/${component}.css`, + `nationalarchives/components/${component}/${component}.css.map`, `nationalarchives/components/${component}/fixtures.json`, `nationalarchives/components/${component}/macro-options.json`, `nationalarchives/components/${component}/macro.njk`, @@ -45,6 +48,7 @@ const checkExists = [ ...componentFiles("breadcrumbs"), ...componentFiles("button", true), ...componentFiles("card", true), + ...componentFiles("cookie-banner"), ...componentFiles("filters", true), ...componentFiles("footer", true), ...componentFiles("gallery"), diff --git a/webpack.config.js b/webpack.config.js index a23017a6..23db7558 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -16,9 +16,15 @@ module.exports = { .reduce((acc, path) => { acc[ path - .replace(/^(\.\/)?src\/nationalarchives\//, "") - .replace(".mjs", "") - ] = `./${path}`.replace("././", "./"); + .replace( + /^(\.\/)?src\/nationalarchives\/components\/([\w\-]+\/)/, + "", + ) + .replace(/.mjs$/, "") + ] = { + import: `./${path}`.replace("././", "./"), + filename: `components/[name]/[name].js`, + }; return acc; }, {}), }, @@ -38,7 +44,8 @@ module.exports = { ], }, output: { - library: ["TNAFrontend", "[name]"], + // library: ["TNAFrontend", "[name]"], + library: "TNAFrontend", libraryTarget: "umd", umdNamedDefine: true, path: path.resolve(__dirname, "package/nationalarchives"), From 52509603c0f51455d55f7facc6665c19c33a6497 Mon Sep 17 00:00:00 2001 From: Andrew Hosgood Date: Tue, 12 Sep 2023 19:15:25 +0100 Subject: [PATCH 02/16] Add fonts, better exports, more package tests --- package-lock.json | 399 ++++++++++++++++++ package.json | 4 + src/nationalarchives/all.scss | 4 + .../assets/fonts/OpenSans-Bold.ttf | Bin 0 -> 130864 bytes .../assets/fonts/OpenSans-Medium.ttf | Bin 0 -> 130980 bytes .../assets/fonts/RobotoMono-Regular.ttf | Bin 0 -> 86908 bytes .../components/breadcrumbs/breadcrumbs.scss | 1 + .../components/button/button.scss | 4 +- .../components/card/card.scss | 1 + .../cookie-banner/cookie-banner.scss | 1 + .../components/filters/filters.scss | 1 + .../components/footer/footer.scss | 2 + .../components/gallery/gallery.scss | 1 + .../components/grid/grid.scss | 1 + .../components/header/header.scss | 3 +- .../components/hero/hero.scss | 1 + .../components/index-grid/index-grid.scss | 1 + .../components/message/message.scss | 1 + .../components/phase-banner/phase-banner.scss | 1 + .../components/picture/picture.scss | 1 + .../components/profile/profile.scss | 1 + .../sensitive-image/sensitive-image.scss | 5 +- .../components/skip-link/skip-link.scss | 1 + .../components/tabs/tabs.scss | 1 + src/nationalarchives/lib/_font-awesome.scss | 5 + src/nationalarchives/lib/_index.scss | 1 + .../colour-schemes/colour-schemes.stories.js | 32 +- .../typography/typography.stories.js | 2 +- src/nationalarchives/tools/_typography.scss | 4 - src/nationalarchives/utilities/_a11y.scss | 24 ++ .../utilities/_font-awesome.scss | 5 - src/nationalarchives/utilities/_global.scss | 25 -- src/nationalarchives/utilities/_index.scss | 2 +- .../utilities/_typography.scss | 24 +- .../variables/_typography.scss | 14 +- tasks/test-package.js | 130 ++++-- 36 files changed, 597 insertions(+), 106 deletions(-) create mode 100644 src/nationalarchives/assets/fonts/OpenSans-Bold.ttf create mode 100644 src/nationalarchives/assets/fonts/OpenSans-Medium.ttf create mode 100644 src/nationalarchives/assets/fonts/RobotoMono-Regular.ttf create mode 100644 src/nationalarchives/lib/_font-awesome.scss create mode 100644 src/nationalarchives/lib/_index.scss create mode 100644 src/nationalarchives/utilities/_a11y.scss delete mode 100644 src/nationalarchives/utilities/_font-awesome.scss diff --git a/package-lock.json b/package-lock.json index 5cc5106c..2a1fb0a4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,9 @@ "name": "@nationalarchives/frontend", "version": "0.1.18-prerelease", "license": "MIT", + "dependencies": { + "node-self": "^1.0.2" + }, "devDependencies": { "@babel/core": "^7.22.10", "@babel/preset-env": "^7.22.10", @@ -33,6 +36,7 @@ "eslint-plugin-storybook": "^0.6.13", "glob": "^10.2.7", "jest-image-snapshot": "^6.2.0", + "jsdom": "^22.1.0", "nunjucks": "^3.2.3", "prettier": "^3.0.1", "react": "^18.2.0", @@ -7306,6 +7310,15 @@ "@testing-library/dom": ">=7.21.4" } }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, "node_modules/@types/aria-query": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.1.tgz", @@ -8234,6 +8247,12 @@ "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", "dev": true }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -10377,6 +10396,18 @@ "node": ">=4" } }, + "node_modules/cssstyle": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz", + "integrity": "sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==", + "dev": true, + "dependencies": { + "rrweb-cssom": "^0.6.0" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/csstype": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", @@ -10396,6 +10427,54 @@ "node": ">=0.8" } }, + "node_modules/data-urls": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz", + "integrity": "sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^12.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/data-urls/node_modules/tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "dev": true, + "dependencies": { + "punycode": "^2.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/data-urls/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", + "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", + "dev": true, + "dependencies": { + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -10447,6 +10526,12 @@ "node": ">=0.10.0" } }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, "node_modules/decode-named-character-reference": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", @@ -10831,6 +10916,27 @@ "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", "dev": true }, + "node_modules/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "dev": true, + "dependencies": { + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/domhandler": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", @@ -13023,6 +13129,18 @@ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/html-entities": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", @@ -13160,6 +13278,20 @@ "node": ">= 0.8" } }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -13773,6 +13905,12 @@ "node": ">=0.10.0" } }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -17871,6 +18009,120 @@ "signal-exit": "^3.0.2" } }, + "node_modules/jsdom": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-22.1.0.tgz", + "integrity": "sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "cssstyle": "^3.0.0", + "data-urls": "^4.0.0", + "decimal.js": "^10.4.3", + "domexception": "^4.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.4", + "parse5": "^7.1.2", + "rrweb-cssom": "^0.6.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^12.0.1", + "ws": "^8.13.0", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/jsdom/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsdom/node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/jsdom/node_modules/tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "dev": true, + "dependencies": { + "punycode": "^2.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/jsdom/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/jsdom/node_modules/whatwg-url": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", + "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", + "dev": true, + "dependencies": { + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -19607,6 +19859,11 @@ "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", "dev": true }, + "node_modules/node-self": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/node-self/-/node-self-1.0.2.tgz", + "integrity": "sha512-7oanohlazOw8RygP1OPmzAvJTLucwXKoioP4FMrzqnE6xUMM58i8aF18HDU0Hx5oxdsRLbmklieyjdNmvj1jHA==" + }, "node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -19695,6 +19952,12 @@ "node": ">= 6" } }, + "node_modules/nwsapi": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", + "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", + "dev": true + }, "node_modules/nyc": { "version": "15.1.0", "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", @@ -20860,6 +21123,12 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -21011,6 +21280,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -21684,6 +21959,12 @@ "node": ">=0.10.5" } }, + "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.4", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", @@ -21808,6 +22089,12 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rrweb-cssom": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", + "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", + "dev": true + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -21941,6 +22228,18 @@ } } }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, "node_modules/scheduler": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", @@ -23081,6 +23380,12 @@ "webpack": ">=2" } }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, "node_modules/synchronous-promise": { "version": "2.0.17", "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.17.tgz", @@ -23621,6 +23926,30 @@ "node": ">=0.6" } }, + "node_modules/tough-cookie": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -24032,6 +24361,16 @@ "qs": "^6.11.0" } }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "node_modules/url/node_modules/punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -24227,6 +24566,18 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "dev": true, + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/wait-on": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-5.3.0.tgz", @@ -24514,6 +24865,39 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", @@ -24768,6 +25152,21 @@ "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", "dev": true }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/package.json b/package.json index be5d28c5..d87b7a24 100644 --- a/package.json +++ b/package.json @@ -63,6 +63,7 @@ "eslint-plugin-storybook": "^0.6.13", "glob": "^10.2.7", "jest-image-snapshot": "^6.2.0", + "jsdom": "^22.1.0", "nunjucks": "^3.2.3", "prettier": "^3.0.1", "react": "^18.2.0", @@ -77,5 +78,8 @@ "stylelint-selector-bem-pattern": "^3.0.0", "webpack": "^5.88.2", "webpack-cli": "^5.1.4" + }, + "dependencies": { + "node-self": "^1.0.2" } } diff --git a/src/nationalarchives/all.scss b/src/nationalarchives/all.scss index 6fc73e0d..e065cdf1 100644 --- a/src/nationalarchives/all.scss +++ b/src/nationalarchives/all.scss @@ -10,8 +10,12 @@ * ------------------------------------------------ */ +$tna-font-path: "my-fonts-path"; + @use "variables"; @use "tools"; @use "utilities"; @use "components"; + +@use "lib"; diff --git a/src/nationalarchives/assets/fonts/OpenSans-Bold.ttf b/src/nationalarchives/assets/fonts/OpenSans-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4a5bc3958b164df21ed073620b89b58c1d1e420c GIT binary patch literal 130864 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�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�r+$1Dp#BZD!_Q9V5YCT&SEargfy zo;rxwT#|Bl=U);sA|AGm0`Efs# zi21$#S*~u-3bCE&vm6Q%h9!+vTO@~Z*+bB%0*SW@XT}S9jrL$s?0M98dh<=S(f4>xWUrXqm|=(@<7%zu>?Zk zPi+2aA^zx-_xbB~%YVwo;*?zqe|3yBn3jZdSsWwtOiQs{$Tqo*#yN0`Sn7|F$)V*v zJy=qEO#HcO27k~&%ro)*U~4GfAMm}5xBSRZJgfC31fl_q?U?&WD1UJ3<-5wucQN?# z9`tw^A0zcwWy@8L&gQZB6GJ^luo|1Rj;LnIyJt?%EIclTA0uI$z3dN9_Y382Ty$s~ z?~wWmd5YkN;qx#NV#p?C2DwpZA$D~e>C!(#=IA~m4fI`dBf}{%gmG#uDM4N}Gm
uMGu$VhwCfV^VQd;X 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

>GK` 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 {

TNA colour theme

Heading

-

This is some body text link.

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel tincidunt velit, a molestie turpis. Sed odio libero, sodales eleifend lorem sit amet, feugiat consequat nibh.

-

Donec ac tellus in dui rutrum maximus. Aliquam vel euismod eros. Integer ut magna velit. Fusce sed dui sit amet metus eleifend dictum quis vitae mi. Aenean sagittis euismod purus, in accumsan metus venenatis nec. Nullam nec velit felis. Sed nec felis eu nisl varius dictum eu quis nisl.

-

Donec dapibus est arcu, vel pellentesque risus pellentesque eget.

+

This is some body text link.

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel tincidunt velit, a molestie turpis. Sed odio libero, sodales eleifend lorem sit amet, feugiat consequat nibh.

+

Donec ac tellus in dui rutrum maximus. Aliquam vel euismod eros. Integer ut magna velit. Fusce sed dui sit amet metus eleifend dictum quis vitae mi. Aenean sagittis euismod purus, in accumsan metus venenatis nec. Nullam nec velit felis. Sed nec felis eu nisl varius dictum eu quis nisl.

+

Donec dapibus est arcu, vel pellentesque risus pellentesque eget.

  • Alpha
  • Beta
  • @@ -221,10 +221,10 @@ const Template = ({ theme, accent }) => {
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel tincidunt velit, a molestie turpis. Sed odio libero, sodales eleifend lorem sit amet, feugiat consequat nibh.

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel tincidunt velit, a molestie turpis. Sed odio libero, sodales eleifend lorem sit amet, feugiat consequat nibh.

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel tincidunt velit, a molestie turpis. Sed odio libero, sodales eleifend lorem sit amet, feugiat consequat nibh.

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel tincidunt velit, a molestie turpis. Sed odio libero, sodales eleifend lorem sit amet, feugiat consequat nibh.

@@ -234,39 +234,39 @@ const Template = ({ theme, accent }) => {

This is a heading (XL)

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel tincidunt velit, a molestie turpis. Sed odio libero, sodales eleifend lorem sit amet, feugiat consequat nibh.

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel tincidunt velit, a molestie turpis. Sed odio libero, sodales eleifend lorem sit amet, feugiat consequat nibh.

This is a heading (L)

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel tincidunt velit, a molestie turpis. Sed odio libero, sodales eleifend lorem sit amet, feugiat consequat nibh.

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel tincidunt velit, a molestie turpis. Sed odio libero, sodales eleifend lorem sit amet, feugiat consequat nibh.

This is a heading (M)

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel tincidunt velit, a molestie turpis. Sed odio libero, sodales eleifend lorem sit amet, feugiat consequat nibh.

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel tincidunt velit, a molestie turpis. Sed odio libero, sodales eleifend lorem sit amet, feugiat consequat nibh.

This is a heading (S)

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel tincidunt velit, a molestie turpis. Sed odio libero, sodales eleifend lorem sit amet, feugiat consequat nibh.

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel tincidunt velit, a molestie turpis. Sed odio libero, sodales eleifend lorem sit amet, feugiat consequat nibh.

Supertitle

This is a heading (XL)

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel tincidunt velit, a molestie turpis. Sed odio libero, sodales eleifend lorem sit amet, feugiat consequat nibh.

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel tincidunt velit, a molestie turpis. Sed odio libero, sodales eleifend lorem sit amet, feugiat consequat nibh.

Supertitle

This is a heading (L)

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel tincidunt velit, a molestie turpis. Sed odio libero, sodales eleifend lorem sit amet, feugiat consequat nibh.

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel tincidunt velit, a molestie turpis. Sed odio libero, sodales eleifend lorem sit amet, feugiat consequat nibh.

Supertitle

This is a heading (M)

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel tincidunt velit, a molestie turpis. Sed odio libero, sodales eleifend lorem sit amet, feugiat consequat nibh.

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel tincidunt velit, a molestie turpis. Sed odio libero, sodales eleifend lorem sit amet, feugiat consequat nibh.

Supertitle

This is a heading (S)

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel tincidunt velit, a molestie turpis. Sed odio libero, sodales eleifend lorem sit amet, feugiat consequat nibh.

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vel tincidunt velit, a molestie turpis. Sed odio libero, sodales eleifend lorem sit amet, feugiat consequat nibh.

We are the official archive of England and Wales. Discover 1,000 years of history through fascinating stories from the past or start your own research and search our catalogue of 32 million records. Plan a visit to access original historic documents from our collections then enjoy the grounds, café, and free exhibitions.

@@ -279,14 +279,14 @@ const Template = ({ theme, accent }) => {

Reaerching with The National Archives

-

Lorem ipsum link

+

Lorem ipsum link

Supertitle

Reaerching with The National Archives

-

Lorem ipsum link

+

Lorem ipsum link

  • Chip 1 diff --git a/src/nationalarchives/stories/utilities/typography/typography.stories.js b/src/nationalarchives/stories/utilities/typography/typography.stories.js index f01d9e0f..b27b8950 100644 --- a/src/nationalarchives/stories/utilities/typography/typography.stories.js +++ b/src/nationalarchives/stories/utilities/typography/typography.stories.js @@ -8,7 +8,7 @@ export default { }; const ParagraphTemplate = ({ paragraphs }) => - paragraphs.map((paragraph) => `

    ${paragraph}

    `).join(""); + paragraphs.map((paragraph) => `

    ${paragraph}

    `).join(""); export const Paragraph = ParagraphTemplate.bind({}); Paragraph.args = { paragraphs: [ diff --git a/src/nationalarchives/tools/_typography.scss b/src/nationalarchives/tools/_typography.scss index 23a83b07..9911f467 100644 --- a/src/nationalarchives/tools/_typography.scss +++ b/src/nationalarchives/tools/_typography.scss @@ -33,10 +33,6 @@ font-weight: typography.$font-weight-detail; } -@mixin detail-font-weight-bold { - font-weight: typography.$font-weight-detail-bold; -} - @mixin detail-font-small { @include detail-font; @include relative-font-size(14); diff --git a/src/nationalarchives/utilities/_a11y.scss b/src/nationalarchives/utilities/_a11y.scss new file mode 100644 index 00000000..e6b7877f --- /dev/null +++ b/src/nationalarchives/utilities/_a11y.scss @@ -0,0 +1,24 @@ +.tna-visually-hidden { + width: 1px !important; + height: 1px !important; + margin: 0 !important; + padding: 0 !important; + + position: absolute !important; + top: -9999px !important; + left: -9999px !important; + z-index: -1 !important; + + overflow: hidden !important; + + clip: rect(0, 0, 0, 0) !important; + + border: 0 !important; + + background-color: transparent !important; + + &::before, + &::after { + content: "\00a0"; + } +} diff --git a/src/nationalarchives/utilities/_font-awesome.scss b/src/nationalarchives/utilities/_font-awesome.scss deleted file mode 100644 index d9baa884..00000000 --- a/src/nationalarchives/utilities/_font-awesome.scss +++ /dev/null @@ -1,5 +0,0 @@ -@import "../variables/assets"; -$fa-font-path: $tna-font-path !default; -@import "../lib/font-awesome/fontawesome"; -@import "../lib/font-awesome/solid"; -@import "../lib/font-awesome/brands"; diff --git a/src/nationalarchives/utilities/_global.scss b/src/nationalarchives/utilities/_global.scss index 74fa3e8b..76257149 100644 --- a/src/nationalarchives/utilities/_global.scss +++ b/src/nationalarchives/utilities/_global.scss @@ -186,28 +186,3 @@ hr { .tna-background--accent-light { @include colour.light-accent-background; } - -.tna-visually-hidden { - width: 1px !important; - height: 1px !important; - margin: 0 !important; - padding: 0 !important; - - position: absolute !important; - top: -9999px !important; - left: -9999px !important; - z-index: -1 !important; - - overflow: hidden !important; - - clip: rect(0, 0, 0, 0) !important; - - border: 0 !important; - - background-color: transparent !important; - - &::before, - &::after { - content: "\00a0"; - } -} diff --git a/src/nationalarchives/utilities/_index.scss b/src/nationalarchives/utilities/_index.scss index 80b332eb..9fe127f4 100644 --- a/src/nationalarchives/utilities/_index.scss +++ b/src/nationalarchives/utilities/_index.scss @@ -1,5 +1,5 @@ +@use "a11y"; @use "debug"; -@use "font-awesome"; @use "global"; @use "overrides"; @use "typography"; diff --git a/src/nationalarchives/utilities/_typography.scss b/src/nationalarchives/utilities/_typography.scss index 27d4c9de..d62a58e5 100644 --- a/src/nationalarchives/utilities/_typography.scss +++ b/src/nationalarchives/utilities/_typography.scss @@ -3,12 +3,32 @@ @use "../tools/media"; @use "../tools/spacing"; @use "../tools/typography"; +@use "../variables/assets"; @use "../variables/grid"; -// TODO: Temporary - will eventually bundle font files into package -@import "https://fonts.googleapis.com/css2?family=Open+Sans:wght@500;700&family=Roboto+Mono:wght@400&display=swap"; @import "https://use.typekit.net/hkj3kuz.css"; +@font-face { + font-family: "Open Sans"; + src: url("#{assets.$tna-font-path}/OpenSans-Medium.ttf"); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: "Open Sans"; + src: url("#{assets.$tna-font-path}/OpenSans-Bold.ttf"); + font-weight: bold; + font-style: normal; +} + +@font-face { + font-family: "Roboto Mono"; + src: url("#{assets.$tna-font-path}/RobotoMono-Regular.ttf"); + font-weight: normal; + font-style: normal; +} + .tna-template { @include colour.colour-font("font-base"); @include typography.main-font; diff --git a/src/nationalarchives/variables/_typography.scss b/src/nationalarchives/variables/_typography.scss index 9694e7a5..74456f7a 100644 --- a/src/nationalarchives/variables/_typography.scss +++ b/src/nationalarchives/variables/_typography.scss @@ -2,15 +2,15 @@ $base-font-size-px: 16; $interactive-text-decoration-thickness: 3.5px; -$font-family-main: "Open Sans", sans-serif; -$font-weight-main: 500; -$font-weight-main-bold: 700; +$font-family-main: "Open Sans", serif; +// $font-weight-main: 500; +$font-weight-main: normal; +// $font-weight-main-bold: 700; +$font-weight-main-bold: bold; $font-family-heading: supria-sans-condensed, "Arial Narrow", sans-serif; $font-weight-heading: 400; $font-family-detail: "Roboto Mono", monospace; -$font-weight-detail: 400; -$font-weight-detail-bold: 700; -// $font-family-detail: $font-family-main; -// $font-weight-detail: $font-weight-main; +// $font-weight-detail: 400; +$font-weight-detail: normal; diff --git a/tasks/test-package.js b/tasks/test-package.js index c6097e81..45032f01 100644 --- a/tasks/test-package.js +++ b/tasks/test-package.js @@ -1,15 +1,20 @@ const fs = require("fs"); const packageJson = require("../package.json"); +const jsdom = require("jsdom"); +require("node-self"); -let failure = null; +const componentsWithJavaScript = {}; -const componentJavascriptFiles = (component) => [ - `nationalarchives/components/${component}/${component}.js`, - `nationalarchives/components/${component}/${component}.js.map`, - `nationalarchives/components/${component}/${component}.mjs`, -]; +const componentJavascriptFiles = (component, javascriptClass) => { + componentsWithJavaScript[component] = javascriptClass; + return [ + `nationalarchives/components/${component}/${component}.js`, + `nationalarchives/components/${component}/${component}.js.map`, + `nationalarchives/components/${component}/${component}.mjs`, + ]; +}; -const componentFiles = (component, excludeJavaScript = false) => [ +const componentFiles = (component, javascriptClass = null) => [ `nationalarchives/components/${component}/_index.scss`, `nationalarchives/components/${component}/${component}.scss`, `nationalarchives/components/${component}/${component}.css`, @@ -18,7 +23,9 @@ const componentFiles = (component, excludeJavaScript = false) => [ `nationalarchives/components/${component}/macro-options.json`, `nationalarchives/components/${component}/macro.njk`, `nationalarchives/components/${component}/template.njk`, - ...(excludeJavaScript ? [] : componentJavascriptFiles(component)), + ...(javascriptClass + ? componentJavascriptFiles(component, javascriptClass) + : []), ]; const packageDirectory = "package"; @@ -45,24 +52,24 @@ const checkExists = [ "nationalarchives/assets/images/tna-horizontal-logo.svg", "nationalarchives/assets/images/tna-square-logo.svg", // Components - ...componentFiles("breadcrumbs"), - ...componentFiles("button", true), - ...componentFiles("card", true), - ...componentFiles("cookie-banner"), - ...componentFiles("filters", true), - ...componentFiles("footer", true), - ...componentFiles("gallery"), - ...componentFiles("grid", true), - ...componentFiles("header"), - ...componentFiles("hero", true), - ...componentFiles("index-grid", true), - ...componentFiles("message", true), - ...componentFiles("phase-banner", true), - ...componentFiles("picture"), - ...componentFiles("profile", true), - ...componentFiles("sensitive-image"), - ...componentFiles("skip-link", true), - ...componentFiles("tabs"), + ...componentFiles("breadcrumbs", "Breadcrumbs"), + ...componentFiles("button"), + ...componentFiles("card"), + ...componentFiles("cookie-banner", "CookieBanner"), + ...componentFiles("filters"), + ...componentFiles("footer"), + ...componentFiles("gallery", "Gallery"), + ...componentFiles("grid"), + ...componentFiles("header", "Header"), + ...componentFiles("hero"), + ...componentFiles("index-grid"), + ...componentFiles("message"), + ...componentFiles("phase-banner"), + ...componentFiles("picture", "Picture"), + ...componentFiles("profile"), + ...componentFiles("sensitive-image", "SensitiveImage"), + ...componentFiles("skip-link"), + ...componentFiles("tabs", "Tabs"), // Tools "nationalarchives/tools/_index.scss", "nationalarchives/tools/_grid.scss", @@ -96,7 +103,7 @@ checkExists.forEach((checkFile) => { ); } catch (err) { console.error(`🔴 [FAIL] ${err}`); - failure = 1; + process.exit(); } }); @@ -110,7 +117,7 @@ if (packageJson.version === compiledPackageJson.version) { console.error( `🔴 [FAIL] The package version should be ${packageJson.version} but is ${compiledPackageJson.version}`, ); - failure = 2; + process.exit(); } console.log("------------------------------------------"); @@ -121,6 +128,7 @@ const expectedPrototypeKitConfigProperties = [ "scripts", "assets", "sass", + "templates", ]; const prototypeKitConfig = require( `../${packageDirectory}/govuk-prototype-kit.config.json`, @@ -133,26 +141,66 @@ expectedPrototypeKitConfigProperties.forEach( ) ) { console.log( - `🟢 [PASS] The prototype kit config contains "${expectedPrototypeKitConfigProperty}"`, + `🟢 [PASS] Prototype kit config contains: ${expectedPrototypeKitConfigProperty}`, ); } else { console.error( - `🔴 [FAIL] The prototype kit config is missing "${expectedPrototypeKitConfigProperty}"`, + `🔴 [FAIL] Prototype kit config is missing: ${expectedPrototypeKitConfigProperty}`, ); - failure = 3; + process.exit(); } }, ); -// console.log("------------------------------------------"); - -// TODO: Test CSS and JS for contents -// console.log(`Testing compiled JavaScript file`); -// const jsPackage = require("../package/nationalarchives/all.js") -// console.log(jsPackage) -// const {initAll} = require("../package/nationalarchives/all.mjs") -// console.log(initAll) +console.log("------------------------------------------"); -if (failure !== null) { - process.exit(failure); +console.log(`Testing compiled JavaScript files`); +const { JSDOM } = jsdom; +const { window } = new JSDOM(``); +global.window = window; +global.document = window.document; +const jsAllPackage = require("../package/nationalarchives/all.js"); +if ( + Object.keys(jsAllPackage).includes("initAll") && + typeof jsAllPackage.initAll === "function" +) { + console.log(`🟢 [PASS] all.js function exists: initAll()`); +} else { + console.error(`🔴 [FAIL] all.js function missing: initAll()`); + process.exit(); } +Object.keys(componentsWithJavaScript).forEach((component) => { + const componentClass = componentsWithJavaScript[component]; + if ( + Object.keys(jsAllPackage).includes(componentClass) && + typeof jsAllPackage[componentClass] === "function" + ) { + console.log(`🟢 [PASS] all.js function exists: ${componentClass}()`); + } else { + console.error(`🔴 [FAIL] all.js function missing: ${componentClass}()`); + process.exit(); + } +}); +Object.keys(componentsWithJavaScript).forEach((component) => { + const componentClass = componentsWithJavaScript[component]; + const jsComponentPackage = require( + `../package/nationalarchives/components/${component}/${component}.js`, + ); + if ( + Object.keys(jsComponentPackage).includes(componentClass) && + typeof jsComponentPackage[componentClass] === "function" + ) { + console.log( + `🟢 [PASS] ${component}.js function exists: ${componentClass}()`, + ); + } else { + console.error( + `🔴 [FAIL] ${component}.js function missing: ${componentClass}()`, + ); + process.exit(); + } +}); + +console.log("------------------------------------------"); + +// TODO: Test CSS for contents From ba186bcb4bb6efa3ba04a926be1188fbec1127e2 Mon Sep 17 00:00:00 2001 From: Andrew Hosgood Date: Tue, 12 Sep 2023 19:17:23 +0100 Subject: [PATCH 03/16] Edit test log formatting --- tasks/test-package.js | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/tasks/test-package.js b/tasks/test-package.js index 45032f01..be3e92eb 100644 --- a/tasks/test-package.js +++ b/tasks/test-package.js @@ -97,30 +97,30 @@ checkExists.forEach((checkFile) => { try { fs.accessSync(checkFilePath); console.log( - `🟢 [PASS] ${ + ` 🟢 [PASS] ${ fs.lstatSync(checkFilePath).isDirectory() ? "Directory" : "File" } exists: ${checkFilePath.replace(/\/$/, "")}`, ); } catch (err) { - console.error(`🔴 [FAIL] ${err}`); + console.error(` 🔴 [FAIL] ${err}`); process.exit(); } }); -console.log("------------------------------------------"); +console.log("\n"); console.log(`Testing package version`); const compiledPackageJson = require("../package/package.json"); if (packageJson.version === compiledPackageJson.version) { - console.log(`🟢 [PASS] Version ${packageJson.version} is set in the package`); + console.log(` 🟢 [PASS] Version ${packageJson.version} is set in the package`); } else { console.error( - `🔴 [FAIL] The package version should be ${packageJson.version} but is ${compiledPackageJson.version}`, + ` 🔴 [FAIL] The package version should be ${packageJson.version} but is ${compiledPackageJson.version}`, ); process.exit(); } -console.log("------------------------------------------"); +console.log("\n"); console.log(`Testing prototype kit config`); const expectedPrototypeKitConfigProperties = [ @@ -141,18 +141,18 @@ expectedPrototypeKitConfigProperties.forEach( ) ) { console.log( - `🟢 [PASS] Prototype kit config contains: ${expectedPrototypeKitConfigProperty}`, + ` 🟢 [PASS] Prototype kit config contains: ${expectedPrototypeKitConfigProperty}`, ); } else { console.error( - `🔴 [FAIL] Prototype kit config is missing: ${expectedPrototypeKitConfigProperty}`, + ` 🔴 [FAIL] Prototype kit config is missing: ${expectedPrototypeKitConfigProperty}`, ); process.exit(); } }, ); -console.log("------------------------------------------"); +console.log("\n"); console.log(`Testing compiled JavaScript files`); const { JSDOM } = jsdom; @@ -164,9 +164,9 @@ if ( Object.keys(jsAllPackage).includes("initAll") && typeof jsAllPackage.initAll === "function" ) { - console.log(`🟢 [PASS] all.js function exists: initAll()`); + console.log(` 🟢 [PASS] all.js function exists: initAll()`); } else { - console.error(`🔴 [FAIL] all.js function missing: initAll()`); + console.error(` 🔴 [FAIL] all.js function missing: initAll()`); process.exit(); } Object.keys(componentsWithJavaScript).forEach((component) => { @@ -175,9 +175,9 @@ Object.keys(componentsWithJavaScript).forEach((component) => { Object.keys(jsAllPackage).includes(componentClass) && typeof jsAllPackage[componentClass] === "function" ) { - console.log(`🟢 [PASS] all.js function exists: ${componentClass}()`); + console.log(` 🟢 [PASS] all.js function exists: ${componentClass}()`); } else { - console.error(`🔴 [FAIL] all.js function missing: ${componentClass}()`); + console.error(` 🔴 [FAIL] all.js function missing: ${componentClass}()`); process.exit(); } }); @@ -191,16 +191,16 @@ Object.keys(componentsWithJavaScript).forEach((component) => { typeof jsComponentPackage[componentClass] === "function" ) { console.log( - `🟢 [PASS] ${component}.js function exists: ${componentClass}()`, + ` 🟢 [PASS] ${component}.js function exists: ${componentClass}()`, ); } else { console.error( - `🔴 [FAIL] ${component}.js function missing: ${componentClass}()`, + ` 🔴 [FAIL] ${component}.js function missing: ${componentClass}()`, ); process.exit(); } }); -console.log("------------------------------------------"); +console.log("\n"); // TODO: Test CSS for contents From 42da5588989375664bbcecb0b5b1afac07d30480 Mon Sep 17 00:00:00 2001 From: Andrew Hosgood Date: Wed, 13 Sep 2023 08:58:20 +0100 Subject: [PATCH 04/16] Lint --- tasks/test-package.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tasks/test-package.js b/tasks/test-package.js index be3e92eb..9c0cd294 100644 --- a/tasks/test-package.js +++ b/tasks/test-package.js @@ -112,7 +112,9 @@ console.log("\n"); console.log(`Testing package version`); const compiledPackageJson = require("../package/package.json"); if (packageJson.version === compiledPackageJson.version) { - console.log(` 🟢 [PASS] Version ${packageJson.version} is set in the package`); + console.log( + ` 🟢 [PASS] Version ${packageJson.version} is set in the package`, + ); } else { console.error( ` 🔴 [FAIL] The package version should be ${packageJson.version} but is ${compiledPackageJson.version}`, From e3c055470070f65672fd866c2590085c274c87ab Mon Sep 17 00:00:00 2001 From: Andrew Hosgood Date: Wed, 13 Sep 2023 10:30:46 +0100 Subject: [PATCH 05/16] Update documentation --- package-lock.json | 1998 +++++++++++++++-- package.json | 5 +- .../stories/development/contributing.mdx | 9 +- .../stories/development/relationships.md | 91 - .../stories/development/relationships.mdx | 57 + .../stories/development/using.mdx | 75 + 6 files changed, 2006 insertions(+), 229 deletions(-) delete mode 100644 src/nationalarchives/stories/development/relationships.md create mode 100644 src/nationalarchives/stories/development/relationships.mdx create mode 100644 src/nationalarchives/stories/development/using.mdx diff --git a/package-lock.json b/package-lock.json index 2a1fb0a4..c04f229f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,9 +8,6 @@ "name": "@nationalarchives/frontend", "version": "0.1.18-prerelease", "license": "MIT", - "dependencies": { - "node-self": "^1.0.2" - }, "devDependencies": { "@babel/core": "^7.22.10", "@babel/preset-env": "^7.22.10", @@ -37,6 +34,8 @@ "glob": "^10.2.7", "jest-image-snapshot": "^6.2.0", "jsdom": "^22.1.0", + "mdx-mermaid": "^2.0.0", + "node-self": "^1.0.2", "nunjucks": "^3.2.3", "prettier": "^3.0.1", "react": "^18.2.0", @@ -2058,6 +2057,13 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "node_modules/@braintree/sanitize-url": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz", + "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==", + "dev": true, + "peer": true + }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -7319,6 +7325,16 @@ "node": ">= 10" } }, + "node_modules/@types/acorn": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", + "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", + "dev": true, + "optional": true, + "dependencies": { + "@types/estree": "*" + } + }, "node_modules/@types/aria-query": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.1.tgz", @@ -7394,6 +7410,30 @@ "@types/node": "*" } }, + "node_modules/@types/d3-scale": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.4.tgz", + "integrity": "sha512-eq1ZeTj0yr72L8MQk6N6heP603ubnywSDRfNpi5enouR112HzGLS6RIvExCzZTraFF4HdzNpJMwA/zGiMoHUUw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==", + "dev": true, + "peer": true + }, + "node_modules/@types/d3-time": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==", + "dev": true, + "peer": true + }, "node_modules/@types/debug": { "version": "4.1.8", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz", @@ -7453,6 +7493,16 @@ "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", "dev": true }, + "node_modules/@types/estree-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.0.tgz", + "integrity": "sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==", + "dev": true, + "optional": true, + "dependencies": { + "@types/estree": "*" + } + }, "node_modules/@types/express": { "version": "4.17.17", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", @@ -7492,6 +7542,16 @@ "@types/node": "*" } }, + "node_modules/@types/hast": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.5.tgz", + "integrity": "sha512-SvQi0L/lNpThgPoleH53cdjB3y9zpLlVjRbqB3rH8hx1jiRSBGAhyjV3H+URFjNVRqt2EdYNrbZE5IsGlNfpRg==", + "dev": true, + "optional": true, + "dependencies": { + "@types/unist": "^2" + } + }, "node_modules/@types/html-minifier-terser": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", @@ -7778,6 +7838,16 @@ "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", "dev": true }, + "node_modules/@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@typescript-eslint/scope-manager": { "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", @@ -8612,6 +8682,16 @@ "node": ">=8" } }, + "node_modules/astring": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz", + "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==", + "dev": true, + "optional": true, + "bin": { + "astring": "bin/astring" + } + }, "node_modules/async": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", @@ -9610,6 +9690,39 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "dev": true, + "optional": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true, + "optional": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "dev": true, + "optional": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -9926,6 +10039,17 @@ "node": ">= 0.8" } }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "dev": true, + "optional": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/commander": { "version": "9.5.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", @@ -10166,6 +10290,16 @@ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, + "node_modules/cose-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", + "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "dev": true, + "peer": true, + "dependencies": { + "layout-base": "^1.0.0" + } + }, "node_modules/cosmiconfig": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", @@ -10182,6 +10316,37 @@ "node": ">=10" } }, + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dev": true, + "optional": true, + "dependencies": { + "node-fetch": "2.6.7" + } + }, + "node_modules/cross-fetch/node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "optional": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -10427,142 +10592,717 @@ "node": ">=0.8" } }, - "node_modules/data-urls": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz", - "integrity": "sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==", + "node_modules/cytoscape": { + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.26.0.tgz", + "integrity": "sha512-IV+crL+KBcrCnVVUCZW+zRRRFUZQcrtdOPXki+o4CFUWLdAEYvuZLcBSJC9EBK++suamERKzeY7roq2hdovV3w==", "dev": true, + "peer": true, "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^12.0.0" + "heap": "^0.2.6", + "lodash": "^4.17.21" }, "engines": { - "node": ">=14" + "node": ">=0.10" } }, - "node_modules/data-urls/node_modules/tr46": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", - "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "node_modules/cytoscape-cose-bilkent": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", + "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", "dev": true, + "peer": true, "dependencies": { - "punycode": "^2.3.0" + "cose-base": "^1.0.0" }, - "engines": { - "node": ">=14" + "peerDependencies": { + "cytoscape": "^3.2.0" } }, - "node_modules/data-urls/node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "node_modules/cytoscape-fcose": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", + "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", "dev": true, - "engines": { - "node": ">=12" + "peer": true, + "dependencies": { + "cose-base": "^2.2.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" } }, - "node_modules/data-urls/node_modules/whatwg-url": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", - "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", + "node_modules/cytoscape-fcose/node_modules/cose-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", + "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", "dev": true, + "peer": true, "dependencies": { - "tr46": "^4.1.1", - "webidl-conversions": "^7.0.0" + "layout-base": "^2.0.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/layout-base": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", + "dev": true, + "peer": true + }, + "node_modules/d3": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz", + "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==", + "dev": true, + "peer": true, + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" }, "engines": { - "node": ">=14" + "node": ">=12" } }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", "dev": true, + "peer": true, "dependencies": { - "ms": "2.1.2" + "internmap": "1 - 2" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=12" } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", "dev": true, + "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", "dev": true, + "peer": true, "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "dev": true, + "peer": true, + "dependencies": { + "d3-path": "1 - 3" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=12" } }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", "dev": true, + "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "dev": true, + "peer": true, + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } }, - "node_modules/decode-named-character-reference": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", - "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", "dev": true, + "peer": true, "dependencies": { - "character-entities": "^2.0.0" + "delaunator": "5" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">=12" } }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12" + } }, - "node_modules/deep-equal": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz", - "integrity": "sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==", + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", "dev": true, + "peer": true, "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.1", - "is-arguments": "^1.1.1", - "is-array-buffer": "^3.0.2", + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dev": true, + "peer": true, + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/d3-dsv/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "peer": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "dev": true, + "peer": true, + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dev": true, + "peer": true, + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==", + "dev": true, + "peer": true, + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dev": true, + "peer": true, + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "dev": true, + "peer": true, + "dependencies": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dev": true, + "peer": true, + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "dev": true, + "peer": true + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "dev": true, + "peer": true, + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "dev": true, + "peer": true + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dev": true, + "peer": true, + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", + "dev": true, + "peer": true, + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dev": true, + "peer": true, + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dev": true, + "peer": true, + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dev": true, + "peer": true, + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dev": true, + "peer": true, + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dev": true, + "peer": true, + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dagre-d3-es": { + "version": "7.0.10", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz", + "integrity": "sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==", + "dev": true, + "peer": true, + "dependencies": { + "d3": "^7.8.2", + "lodash-es": "^4.17.21" + } + }, + "node_modules/data-urls": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz", + "integrity": "sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^12.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/data-urls/node_modules/tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "dev": true, + "dependencies": { + "punycode": "^2.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/data-urls/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", + "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", + "dev": true, + "dependencies": { + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/dayjs": { + "version": "1.11.9", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.9.tgz", + "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==", + "dev": true, + "peer": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dev": true, + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dev": true, + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "node_modules/deep-equal": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz", + "integrity": "sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.1", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", "is-date-object": "^1.0.5", "is-regex": "^1.1.4", "is-shared-array-buffer": "^1.0.2", @@ -10726,6 +11466,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/delaunator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "dev": true, + "peer": true, + "dependencies": { + "robust-predicates": "^3.0.0" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -10813,6 +11563,13 @@ "detect-port": "bin/detect-port.js" } }, + "node_modules/devtools-protocol": { + "version": "0.0.1045489", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1045489.tgz", + "integrity": "sha512-D+PTmWulkuQW4D1NTiCRCFxF7pQPn0hgp4YyX4wAQ6xYXKOadSWPR3ENGDQ47MW/Ewc9v2rpC/UEEGahgBYpSQ==", + "dev": true, + "optional": true + }, "node_modules/diff": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", @@ -10946,6 +11703,13 @@ "domelementtype": "1" } }, + "node_modules/dompurify": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.5.tgz", + "integrity": "sha512-F9e6wPGtY+8KNMRAVfxeCOHU0/NPWMSENNq4pQctuXRqqdEPW7q3CrLbR5Nse044WwacyjHGOMlvNsBe1y6z9A==", + "dev": true, + "peer": true + }, "node_modules/domutils": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", @@ -11068,6 +11832,13 @@ "integrity": "sha512-FFa8QKjQK/A5QuFr2167myhMesGrhlOBD+3cYNxO9/S4XzHEXesyTD/1/xF644gC8buFPz3ca6G1LOQD0tZrrg==", "dev": true }, + "node_modules/elkjs": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.8.2.tgz", + "integrity": "sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==", + "dev": true, + "peer": true + }, "node_modules/emittery": { "version": "0.10.2", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", @@ -11576,6 +12347,72 @@ "node": ">=4.0" } }, + "node_modules/estree-util-attach-comments": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-2.1.1.tgz", + "integrity": "sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==", + "dev": true, + "optional": true, + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.1.0.tgz", + "integrity": "sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==", + "dev": true, + "optional": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-1.2.0.tgz", + "integrity": "sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==", + "dev": true, + "optional": true, + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/estree-util-visit": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-1.2.1.tgz", + "integrity": "sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==", + "dev": true, + "optional": true, + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -13102,6 +13939,163 @@ "node": ">=8" } }, + "node_modules/hast-util-from-html": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-1.0.2.tgz", + "integrity": "sha512-LhrTA2gfCbLOGJq2u/asp4kwuG0y6NhWTXiPKP+n0qNukKy7hc10whqqCFfyvIA1Q5U5d0sp9HhNim9gglEH4A==", + "dev": true, + "optional": true, + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-from-parse5": "^7.0.0", + "parse5": "^7.0.0", + "vfile": "^5.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/hast-util-from-html/node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "optional": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz", + "integrity": "sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==", + "dev": true, + "optional": true, + "dependencies": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0", + "hastscript": "^7.0.0", + "property-information": "^6.0.0", + "vfile": "^5.0.0", + "vfile-location": "^4.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz", + "integrity": "sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==", + "dev": true, + "optional": true, + "dependencies": { + "@types/hast": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-estree": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.3.3.tgz", + "integrity": "sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==", + "dev": true, + "optional": true, + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "estree-util-attach-comments": "^2.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "hast-util-whitespace": "^2.0.0", + "mdast-util-mdx-expression": "^1.0.0", + "mdast-util-mdxjs-esm": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^0.4.1", + "unist-util-position": "^4.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-estree/node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dev": true, + "optional": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", + "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==", + "dev": true, + "optional": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.2.0.tgz", + "integrity": "sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==", + "dev": true, + "optional": true, + "dependencies": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^3.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript/node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dev": true, + "optional": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -13111,6 +14105,13 @@ "he": "bin/he" } }, + "node_modules/heap": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", + "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", + "dev": true, + "peer": true + }, "node_modules/homedir-polyfill": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", @@ -13530,6 +14531,13 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, + "node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==", + "dev": true, + "optional": true + }, "node_modules/internal-slot": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", @@ -13544,6 +14552,16 @@ "node": ">= 0.4" } }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12" + } + }, "node_modules/interpret": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", @@ -13586,6 +14604,32 @@ "node": ">=8" } }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "dev": true, + "optional": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dev": true, + "optional": true, + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-arguments": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", @@ -13724,6 +14768,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "dev": true, + "optional": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-deflate": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-deflate/-/is-deflate-1.0.0.tgz", @@ -13808,6 +14863,17 @@ "node": ">=0.10.0" } }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "dev": true, + "optional": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-interactive": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", @@ -18198,6 +19264,13 @@ "json-buffer": "3.0.1" } }, + "node_modules/khroma": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.0.0.tgz", + "integrity": "sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g==", + "dev": true, + "peer": true + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -18222,6 +19295,13 @@ "integrity": "sha512-9pSL5XB4J+ifHP0e0jmmC98OGC1nL8/JjS+fi6mnTlIf//yt/MfVLtKg7S6nCtj/8KTcWX7nRlY0XywoYY1ISQ==", "dev": true }, + "node_modules/layout-base": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", + "dev": true, + "peer": true + }, "node_modules/lazy-universal-dotenv": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/lazy-universal-dotenv/-/lazy-universal-dotenv-4.0.0.tgz", @@ -18308,6 +19388,13 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "dev": true, + "peer": true + }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -18536,6 +19623,45 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/mdast-util-definitions/node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions/node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions/node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/mdast-util-find-and-replace": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.2.tgz", @@ -18682,6 +19808,85 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/mdast-util-mdx": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-2.0.1.tgz", + "integrity": "sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==", + "dev": true, + "optional": true, + "dependencies": { + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-mdx-expression": "^1.0.0", + "mdast-util-mdx-jsx": "^2.0.0", + "mdast-util-mdxjs-esm": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.2.tgz", + "integrity": "sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==", + "dev": true, + "optional": true, + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-2.1.4.tgz", + "integrity": "sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==", + "dev": true, + "optional": true, + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "ccount": "^2.0.0", + "mdast-util-from-markdown": "^1.1.0", + "mdast-util-to-markdown": "^1.3.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-remove-position": "^4.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-1.3.1.tgz", + "integrity": "sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==", + "dev": true, + "optional": true, + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/mdast-util-phrasing": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", @@ -18716,21 +19921,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-to-markdown/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/mdast-util-to-string": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", @@ -18750,6 +19940,27 @@ "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", "dev": true }, + "node_modules/mdx-mermaid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdx-mermaid/-/mdx-mermaid-2.0.0.tgz", + "integrity": "sha512-vmkh4yg/EgkhAWxdFsyol5Tgk9aTnM16njgGIYk3R3SdbejPt8YV+HRYycAOstR1TJefMNAmjAyqkRjukLP7qg==", + "dev": true, + "optionalDependencies": { + "estree-util-to-js": "^1.1.0", + "estree-util-visit": "^1.2.0", + "hast-util-from-html": "^1.0.1", + "hast-util-to-estree": "^2.1.0", + "mdast-util-from-markdown": "^1.2.0", + "mdast-util-mdx": "^2.0.0", + "micromark-extension-mdxjs": "^1.0.0", + "puppeteer": "^18.0.0" + }, + "peerDependencies": { + "mermaid": ">=8.11.0", + "react": "^16.8.4 || ^17.0.0 || ^18.0.0", + "unist-util-visit": "^4.1.0" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -18989,6 +20200,35 @@ "node": ">= 8" } }, + "node_modules/mermaid": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.4.0.tgz", + "integrity": "sha512-4QCQLp79lvz7UZxow5HUX7uWTPJOaQBVExduo91tliXC7v78i6kssZOPHxLL+Xs30KU72cpPn3g3imw/xm/gaw==", + "dev": true, + "peer": true, + "dependencies": { + "@braintree/sanitize-url": "^6.0.1", + "@types/d3-scale": "^4.0.3", + "@types/d3-scale-chromatic": "^3.0.0", + "cytoscape": "^3.23.0", + "cytoscape-cose-bilkent": "^4.1.0", + "cytoscape-fcose": "^2.1.0", + "d3": "^7.4.0", + "d3-sankey": "^0.12.3", + "dagre-d3-es": "7.0.10", + "dayjs": "^1.11.7", + "dompurify": "^3.0.5", + "elkjs": "^0.8.2", + "khroma": "^2.0.0", + "lodash-es": "^4.17.21", + "mdast-util-from-markdown": "^1.3.0", + "non-layered-tidy-tree-layout": "^2.0.2", + "stylis": "^4.1.3", + "ts-dedent": "^2.2.0", + "uuid": "^9.0.0", + "web-worker": "^1.2.0" + } + }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -19188,6 +20428,113 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/micromark-extension-mdx-expression": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.8.tgz", + "integrity": "sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "optional": true, + "dependencies": { + "@types/estree": "^1.0.0", + "micromark-factory-mdx-expression": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-events-to-acorn": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.5.tgz", + "integrity": "sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA==", + "dev": true, + "optional": true, + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "micromark-factory-mdx-expression": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-md": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-1.0.1.tgz", + "integrity": "sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==", + "dev": true, + "optional": true, + "dependencies": { + "micromark-util-types": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-1.0.1.tgz", + "integrity": "sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==", + "dev": true, + "optional": true, + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^1.0.0", + "micromark-extension-mdx-jsx": "^1.0.0", + "micromark-extension-mdx-md": "^1.0.0", + "micromark-extension-mdxjs-esm": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-types": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-1.0.5.tgz", + "integrity": "sha512-xNRBw4aoURcyz/S69B19WnZAkWJMxHMT5hE36GtDAyhoyn/8TuAeqjFJQlwk+MKQsUD7b3l7kFX+vlfVWgcX1w==", + "dev": true, + "optional": true, + "dependencies": { + "@types/estree": "^1.0.0", + "micromark-core-commonmark": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-events-to-acorn": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-position-from-estree": "^1.1.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/micromark-factory-destination": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", @@ -19231,6 +20578,33 @@ "uvu": "^0.5.0" } }, + "node_modules/micromark-factory-mdx-expression": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-1.0.9.tgz", + "integrity": "sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "optional": true, + "dependencies": { + "@types/estree": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-events-to-acorn": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-position-from-estree": "^1.0.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + } + }, "node_modules/micromark-factory-space": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", @@ -19432,6 +20806,33 @@ } ] }, + "node_modules/micromark-util-events-to-acorn": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-1.2.3.tgz", + "integrity": "sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "optional": true, + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "@types/unist": "^2.0.0", + "estree-util-visit": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + } + }, "node_modules/micromark-util-html-tag-name": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", @@ -19862,7 +21263,15 @@ "node_modules/node-self": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/node-self/-/node-self-1.0.2.tgz", - "integrity": "sha512-7oanohlazOw8RygP1OPmzAvJTLucwXKoioP4FMrzqnE6xUMM58i8aF18HDU0Hx5oxdsRLbmklieyjdNmvj1jHA==" + "integrity": "sha512-7oanohlazOw8RygP1OPmzAvJTLucwXKoioP4FMrzqnE6xUMM58i8aF18HDU0Hx5oxdsRLbmklieyjdNmvj1jHA==", + "dev": true + }, + "node_modules/non-layered-tidy-tree-layout": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz", + "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==", + "dev": true, + "peer": true }, "node_modules/normalize-package-data": { "version": "2.5.0", @@ -20520,8 +21929,29 @@ "dependencies": { "callsites": "^3.0.0" }, - "engines": { - "node": ">=6" + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", + "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", + "dev": true, + "optional": true, + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, "node_modules/parse-json": { @@ -21104,6 +22534,17 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "dev": true }, + "node_modules/property-information": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.3.0.tgz", + "integrity": "sha512-gVNZ74nqhRMiIUYWGQdosYetaKc83x8oT41a0LlV3AAFCAZwCpg4vmGkq8t34+cUhp3cnM4XDiU/7xlgK7HGrg==", + "dev": true, + "optional": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -21169,6 +22610,24 @@ "node": ">=6" } }, + "node_modules/puppeteer": { + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-18.2.1.tgz", + "integrity": "sha512-7+UhmYa7wxPh2oMRwA++k8UGVDxh3YdWFB52r9C3tM81T6BU7cuusUSxImz0GEYSOYUKk/YzIhkQ6+vc0gHbxQ==", + "deprecated": "< 19.4.0 is no longer supported", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "https-proxy-agent": "5.0.1", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "puppeteer-core": "18.2.1" + }, + "engines": { + "node": ">=14.1.0" + } + }, "node_modules/puppeteer-core": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-2.1.1.tgz", @@ -21265,6 +22724,87 @@ "async-limiter": "~1.0.0" } }, + "node_modules/puppeteer/node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "optional": true, + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/puppeteer/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "optional": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/puppeteer/node_modules/puppeteer-core": { + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-18.2.1.tgz", + "integrity": "sha512-MRtTAZfQTluz3U2oU/X2VqVWPcR1+94nbA2V6ZrSZRVEwLqZ8eclZ551qGFQD/vD2PYqHJwWOW/fpC721uznVw==", + "dev": true, + "optional": true, + "dependencies": { + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "devtools-protocol": "0.0.1045489", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.9.0" + }, + "engines": { + "node": ">=14.1.0" + } + }, + "node_modules/puppeteer/node_modules/ws": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz", + "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==", + "dev": true, + "optional": 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/qs": { "version": "6.11.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", @@ -21789,6 +23329,45 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/remark-external-links/node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-external-links/node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-external-links/node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/remark-gfm": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-3.0.1.tgz", @@ -21830,6 +23409,45 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/remark-slug/node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-slug/node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-slug/node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/renderkid": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", @@ -22089,6 +23707,13 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "dev": true, + "peer": true + }, "node_modules/rrweb-cssom": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", @@ -22118,6 +23743,13 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "dev": true, + "peer": true + }, "node_modules/rxjs": { "version": "6.6.7", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", @@ -22915,6 +24547,21 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, + "node_modules/stringify-entities": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", + "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", + "dev": true, + "optional": true, + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -23004,6 +24651,16 @@ "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", "dev": true }, + "node_modules/style-to-object": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.2.tgz", + "integrity": "sha512-1JGpfPB3lo42ZX8cuPrheZbfQ6kqPPnPHlKMyeRYtfKD+0jG+QsXgXN57O/dvJlzlB2elI6dGmrPnl5VPQFPaA==", + "dev": true, + "optional": true, + "dependencies": { + "inline-style-parser": "0.1.1" + } + }, "node_modules/stylelint": { "version": "15.10.3", "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.10.3.tgz", @@ -23306,6 +24963,13 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/stylis": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.0.tgz", + "integrity": "sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ==", + "dev": true, + "peer": true + }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -23832,6 +25496,13 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "optional": true + }, "node_modules/through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -24111,6 +25782,17 @@ "node": ">=0.8.0" } }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dev": true, + "optional": true, + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -24207,11 +25889,12 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "node_modules/unist-util-position": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", + "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", "dev": true, + "optional": true, "dependencies": { "@types/unist": "^2.0.0" }, @@ -24220,53 +25903,71 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-visit": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", - "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "node_modules/unist-util-position-from-estree": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-1.1.2.tgz", + "integrity": "sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==", "dev": true, + "optional": true, "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" + "@types/unist": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "node_modules/unist-util-remove-position": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-4.0.2.tgz", + "integrity": "sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==", "dev": true, + "optional": true, "dependencies": { "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" + "unist-util-visit": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-visit/node_modules/unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "node_modules/unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", "dev": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-visit/node_modules/unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", "dev": true, "dependencies": { "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" }, "funding": { "type": "opencollective", @@ -24552,6 +26253,21 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/vfile-location": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.1.0.tgz", + "integrity": "sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==", + "dev": true, + "optional": true, + "dependencies": { + "@types/unist": "^2.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/vfile-message": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", @@ -24651,6 +26367,24 @@ "defaults": "^1.0.3" } }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "dev": true, + "optional": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/web-worker": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz", + "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==", + "dev": true, + "peer": true + }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", diff --git a/package.json b/package.json index d87b7a24..7c95f34b 100644 --- a/package.json +++ b/package.json @@ -64,6 +64,8 @@ "glob": "^10.2.7", "jest-image-snapshot": "^6.2.0", "jsdom": "^22.1.0", + "mdx-mermaid": "^2.0.0", + "node-self": "^1.0.2", "nunjucks": "^3.2.3", "prettier": "^3.0.1", "react": "^18.2.0", @@ -78,8 +80,5 @@ "stylelint-selector-bem-pattern": "^3.0.0", "webpack": "^5.88.2", "webpack-cli": "^5.1.4" - }, - "dependencies": { - "node-self": "^1.0.2" } } diff --git a/src/nationalarchives/stories/development/contributing.mdx b/src/nationalarchives/stories/development/contributing.mdx index 2dff68c8..8610d77f 100644 --- a/src/nationalarchives/stories/development/contributing.mdx +++ b/src/nationalarchives/stories/development/contributing.mdx @@ -15,7 +15,8 @@ import { Meta } from "@storybook/blocks"; ### Files -- `_index.scss` - where you can add your [BEM](https://getbem.com/) SCSS styles for the component +- `_index.scss` - Simply includes `@use "myComponent";` so we can include this directory within SASS and have it reference the styles in `[myComponent].scss` +- `[myComponent].scss` - this file gets built as a standalone file as well as being included in all styles and is where you can add your [BEM](https://getbem.com/) SCSS styles for the component - `fixtures.json` - these are snapshots of the rendered component's HTML in different scenarios which can be used by other implementations to test against - `macro-options.json` - the options for the component which are rendered in the Design System as well as being copied in to the Storybook controls - `macro.njk` - the Nunjucks macro easily allows us to include components in the prototype kit and other applications such as the Design System @@ -27,12 +28,14 @@ import { Meta } from "@storybook/blocks"; 1. Create a `[myComponent].mjs` file in the component directory 1. Ensure the top level element in your component has the attribute `data-module="tna-my-component"` 1. Import and initialise your component as part of the `initAll` function in `src/nationalarchives/all.mjs` -1. Update the check in `tasks/test-package.js` to remove the `true` and enable checking of the JavaScript file (`...componentFiles("myComponent")`) +1. Update the check in `tasks/test-package.js` to add the JavaScript class to check for 1. If your component uses JavaScript, ensure you add interaction tests using `@storybook/testing-library` ### Best practices -[TODO] +- [HTML standards](https://nationalarchives.github.io/developer-handbook/technology/html/) +- [JavaScript standards](https://nationalarchives.github.io/developer-handbook/technology/javascript/) +- [CSS standards](https://nationalarchives.github.io/developer-handbook/technology/css/) ## Updating a component diff --git a/src/nationalarchives/stories/development/relationships.md b/src/nationalarchives/stories/development/relationships.md deleted file mode 100644 index 544b32c6..00000000 --- a/src/nationalarchives/stories/development/relationships.md +++ /dev/null @@ -1,91 +0,0 @@ -# Relationship to other resources - -## System context - -```mermaid -C4Context - Person(dev, "Developer", "TNA developer") - System_Ext(github, "GitHub", "Repositories for source files") - System_Ext(npm, "NPMJS", "Hosts NodeJS packages") - System_Ext(pypi, "PyPi", "Hosts Python packages") - Container(app, "Application", "Example application") - System_Ext(pypi, "PyPi", "Hosts Python packages") - - Rel(dev, github, "commits to", "git") - UpdateRelStyle(dev, github, $offsetX="-30", $offsetY="-30") - Rel(github, npm, "publishes to", "npm") - Rel(github, pypi, "publishes to", "pip") - Rel(app, npm, "consumes", "npm") - Rel(app, pypi, "consumes", "pip") - - UpdateLayoutConfig($c4ShapeInRow="2") -``` - -## Component diagram - -```mermaid -C4Context - Person(dev, "Developer", "TNA developer") - - %% Boundary(developer_machine, "Developer machine", "boundary") { - %% System(docker, "Docker") - %% } - - Boundary(github, "GitHub", "boundary") { - Boundary(github_jinja, "Jinja templates", "repository") { - Container(github_jinja_source, "Jinja templates") - } - - Boundary(github_frontend, "Frontend styles", "repository") { - Container(github_frontend_source, "Frontend styles", "git repository") - } - - Boundary(github_application, "Application", "repository") { - Container(github_application_source, "Application source code") - Component(github_application_image, "Application docker image", "GitHub image registry") - } - } - - Boundary(npm, "NPMJS", "boundary") { - Component(npm_package, "Frontend styles") - } - - Enterprise_Boundary(aws, "TNA AWS", "boundary") { - Container(app, "Application") - } - - Boundary(pypi, "PyPi", "boundary") { - Component(pypi_package, "Jinja templates") - } - - Rel(dev, github_frontend_source, "commits to") - UpdateRelStyle(dev, github_frontend_source, $offsetX="-80", $offsetY="-80") - Rel(github_frontend_source, npm_package, "publishes", "GitHub action") - UpdateRelStyle(github_frontend_source, npm_package, $offsetX="-40", $offsetY="-40") - - Rel(dev, github_jinja_source, "commits to") - UpdateRelStyle(dev, github_jinja_source, $offsetX="-15", $offsetY="-80") - Rel(github_jinja_source, github_frontend_source, "consumes") - UpdateRelStyle(github_jinja_source, github_frontend_source, $offsetX="-40", $offsetY="-15") - Rel(github_jinja_source, pypi_package, "publishes", "GitHub action") - UpdateRelStyle(github_jinja_source, pypi_package, $offsetX="-110", $offsetY="-310") - - Rel(dev, github_application_source, "commits to") - UpdateRelStyle(dev, github_application_source, $offsetX="-105", $offsetY="-250") - Rel(github_application_source, github_application_image, "creates", "GitHub action") - UpdateRelStyle(github_application_source, github_application_image, $offsetX="-90", $offsetY="-20") - - Rel(github_application_image, npm_package, "consumes", "GitHub action") - UpdateRelStyle(github_application_image, npm_package, $offsetX="-50", $offsetY="-10") - Rel(github_application_image, pypi_package, "consumes", "GitHub action") - UpdateRelStyle(github_application_image, pypi_package, $offsetX="-120", $offsetY="-10") - - %% Rel(dev, docker, "uses") - %% Rel(docker, npm_package, "consumes") - %% Rel(docker, pypi_package, "consumes") - - Rel(app, github_application_image, "consumes") - UpdateRelStyle(app, github_application_image, $offsetX="-70", $offsetY="-10") - - UpdateLayoutConfig($c4ShapeInRow="3", $c4BoundaryInRow="2") -``` diff --git a/src/nationalarchives/stories/development/relationships.mdx b/src/nationalarchives/stories/development/relationships.mdx new file mode 100644 index 00000000..3abe65a8 --- /dev/null +++ b/src/nationalarchives/stories/development/relationships.mdx @@ -0,0 +1,57 @@ +import { Meta } from "@storybook/blocks"; +import { Mermaid } from 'mdx-mermaid/Mermaid'; + + + +# Relationship to other resources + +Read about the [resources in the Developer Handbook](https://nationalarchives.github.io/developer-handbook/resources/) for more information. + +## Context + + + +## Frontend + + diff --git a/src/nationalarchives/stories/development/using.mdx b/src/nationalarchives/stories/development/using.mdx new file mode 100644 index 00000000..3b283c8c --- /dev/null +++ b/src/nationalarchives/stories/development/using.mdx @@ -0,0 +1,75 @@ +import { Meta } from "@storybook/blocks"; + + + +# Using the styles + +## NPM + +Install the frontend package from NPM with: + +```sh +npm install @nationalarchives/frontend +``` + +### CSS + +From here, you have access to include the SCSS files from the package so you can compile the package yourself: + +```css +// Include all the styles +@include("node_modules/@nationalarchives/frontend/nationalarchives/all"); + +// ...or just include a single component +@include("node_modules/@nationalarchives/frontend/nationalarchives/components/tabs"); +``` + +...or you can copy any of the compiled CSS files into your distribution: + +- `node_modules/@nationalarchives/frontend/nationalarchives/all.css` +- `node_modules/@nationalarchives/frontend/nationalarchives/all.css.map` +- `node_modules/@nationalarchives/frontend/nationalarchives/components/tabs.css` +- `node_modules/@nationalarchives/frontend/nationalarchives/components/tabs.css.map` + +### JavaScript + +```js +// Import all the JavaScript +import "node_modules/@nationalarchives/frontend/nationalarchives/all.mjs"; + +// ...or import just the JavaScript for a single component +import "node_modules/@nationalarchives/frontend/nationalarchives/components/tabs/tabs.mjs"; +``` + +...or you can copy any of the compiled JavaScript files into your distribution: + +- `node_modules/@nationalarchives/frontend/nationalarchives/all.js` +- `node_modules/@nationalarchives/frontend/nationalarchives/all.js.map` +- `node_modules/@nationalarchives/frontend/nationalarchives/components/tabs.js` +- `node_modules/@nationalarchives/frontend/nationalarchives/components/tabs.js.map` + +## Hosted + +### CSS + +Include the CSS in the `` element of your page: + +```html + + + + + +``` + +### JavaScript + +Add the JavaScript to the end of your page just before your closing `` tag: + +```html + + + + + +``` From 1dc24216ecf03b7386fee667343fce23f7994186 Mon Sep 17 00:00:00 2001 From: Andrew Hosgood Date: Wed, 13 Sep 2023 11:02:11 +0100 Subject: [PATCH 06/16] Update documentation --- src/nationalarchives/stories/development/contributing.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/nationalarchives/stories/development/contributing.mdx b/src/nationalarchives/stories/development/contributing.mdx index 8610d77f..3209b480 100644 --- a/src/nationalarchives/stories/development/contributing.mdx +++ b/src/nationalarchives/stories/development/contributing.mdx @@ -7,9 +7,9 @@ import { Meta } from "@storybook/blocks"; ## Adding a new component 1. Create a new directory in `src/nationalarchives/components` -1. Create an `_index.scss`, `fixtures.json`, `macro-options.json`, `macro.njk`, `template.njk` and a `[myComponent].stories.js` in the directory using other components as a guide +1. Create an `_index.scss`, `[myComponent].scss`, `fixtures.json`, `macro-options.json`, `macro.njk`, `template.njk` and a `[myComponent].stories.js` in the directory using other components as a guide 1. Add the component SCSS to `src/nationalarchives/components/_all.scss` -1. Update `tasks/test-package.js` to check for the files as part of the CI (`...componentFiles("myComponent", true)` where `true` ignores the check for any JavaScript files) +1. Update `tasks/test-package.js` to check for the files as part of the CI - `...componentFiles("myComponent")` 1. Set the macro in `macro.njk` to be `tnaMyComponent` where "MyComponent" is the name of your component 1. Add the component import and macro to the prototype kit test in `.github/workflows/ci.yml` From 83d0d5e372d07197fbf00bcf2f9ef2deb6106282 Mon Sep 17 00:00:00 2001 From: Andrew Hosgood Date: Wed, 13 Sep 2023 11:26:01 +0100 Subject: [PATCH 07/16] Remove dependencies docs --- .../stories/development/dependencies.mdx | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 src/nationalarchives/stories/development/dependencies.mdx diff --git a/src/nationalarchives/stories/development/dependencies.mdx b/src/nationalarchives/stories/development/dependencies.mdx deleted file mode 100644 index a7600be7..00000000 --- a/src/nationalarchives/stories/development/dependencies.mdx +++ /dev/null @@ -1,11 +0,0 @@ -import { Meta } from "@storybook/blocks"; - - - -# Update Storybook dependencies - -```sh -npx sb upgrade -# or -npx storybook@latest upgrade -``` From 24c558bab6350f988bdc2ef8da8fa932618a02cb Mon Sep 17 00:00:00 2001 From: Andrew Hosgood Date: Wed, 13 Sep 2023 11:35:26 +0100 Subject: [PATCH 08/16] Update documentation --- .../stories/development/about.mdx | 60 +++++++++++++++++ .../stories/development/technologies.mdx | 65 ------------------- 2 files changed, 60 insertions(+), 65 deletions(-) delete mode 100644 src/nationalarchives/stories/development/technologies.mdx diff --git a/src/nationalarchives/stories/development/about.mdx b/src/nationalarchives/stories/development/about.mdx index 438ae17a..21f49ee3 100644 --- a/src/nationalarchives/stories/development/about.mdx +++ b/src/nationalarchives/stories/development/about.mdx @@ -60,3 +60,63 @@ Each component in this repository should contain: - Webpack - compilation of JavaScript and CSS (used by numerous TNA projects already) - Babel - will allow us to use ESNext or possibly even TypeScript (although this could go against the lean requirement) - Storybook - allow viewing and testing of components (we have already used this elsewhere in TNA) + +#### Storybook + +Most widely supported open source frontend workshop for building UI components, constantly updated, also used by TDR + +#### ESNext JavaScript (not TypeScript) + +JavaScript over TypeScript to allow in-project compilation and possible tree-shaking without extra libraries + +#### Babel + +De facto JavaScript compiler and transpiler, allows us to use most up-to-date JavaScript for increased efficiency and cleaner source code + +#### SCSS + +Most mature CSS preprocessor, used in other TNA projects, huge support + +#### BEM + +Agreed CSS methodology within TNA + +#### Webpack + +Already used in many TNA projects, most mature offering although arguably not the fastest - we could consider changing in the future + +#### Nunjucks + +Used by GDS and made by Mozilla, Nunjucks is simple and expandable and allows us to use components in the GOV.UK prototype kit + +#### npm + +Used by many TNA projects and provides highly available package repository, de facto standard for JavaScript packages + +#### GitHub actions + +Free actions not relying on external services, used on some TNA projects but will allow us to have more of a CI/CD methodology + +#### Prettier + +Opinionated code formatter for (S)CSS, JavaScript, JSON and other file types, intended to reduce bikeshedding + +#### ESLint + +De facto linter for JavaScript to catch potential issues + +#### Stylelint + +Most widely supported and mature (S)CSS linter + +#### Jest + +Lightweight and fast testing library, support for Storybook, easy learning curve + +#### NVM + +Ensures all developers can work on the same version of NodeJS, reduces differences between development environments + +#### Chromatic.com + +Suggested by Storybook for visual regression testing diff --git a/src/nationalarchives/stories/development/technologies.mdx b/src/nationalarchives/stories/development/technologies.mdx deleted file mode 100644 index 966e6970..00000000 --- a/src/nationalarchives/stories/development/technologies.mdx +++ /dev/null @@ -1,65 +0,0 @@ -import { Meta } from "@storybook/blocks"; - - - -# Technologies - -## Storybook - -Most widely supported open source frontend workshop for building UI components, constantly updated, also used by TDR - -## ESNext JavaScript (not TypeScript) - -JavaScript over TypeScript to allow in-project compilation and possible tree-shaking without extra libraries - -## Babel - -De facto JavaScript compiler and transpiler, allows us to use most up-to-date JavaScript for increased efficiency and cleaner source code - -## SCSS - -Most mature CSS preprocessor, used in other TNA projects, huge support - -## BEM - -Agreed CSS methodology within TNA - -## Webpack - -Already used in many TNA projects, most mature offering although arguably not the fastest - we could consider changing in the future - -## Nunjucks - -Used by GDS and made by Mozilla, Nunjucks is simple and expandable and allows us to use components in the GOV.UK prototype kit - -## npm - -Used by many TNA projects and provides highly available package repository, de facto standard for JavaScript packages - -## GitHub actions - -Free actions not relying on external services, used on some TNA projects but will allow us to have more of a CI/CD methodology - -## Prettier - -Opinionated code formatter for (S)CSS, JavaScript, JSON and other file types, intended to reduce bikeshedding - -## ESLint - -De facto linter for JavaScript to catch potential issues - -## Stylelint - -Most widely supported and mature (S)CSS linter - -## Jest - -Lightweight and fast testing library, support for Storybook, easy learning curve - -## NVM - -Ensures all developers can work on the same version of NodeJS, reduces differences between development environments - -## Chromatic.com - -Suggested by Storybook for visual regression testing From 87b3b7fd9cb0c51fff8ad737271425fd7d9591e2 Mon Sep 17 00:00:00 2001 From: Andrew Hosgood Date: Wed, 13 Sep 2023 16:36:55 +0100 Subject: [PATCH 09/16] Revert to use single sentence heading in card --- .../components/card/card.stories.js | 36 +++++++++++-- .../components/card/fixtures.json | 28 +++++------ .../components/card/template.njk | 50 +++++++++---------- .../typography/heading-groups.stories.js | 20 +++++++- .../utilities/typography/typography.mdx | 11 ++++ .../utilities/_typography.scss | 50 +++++++++---------- 6 files changed, 127 insertions(+), 68 deletions(-) diff --git a/src/nationalarchives/components/card/card.stories.js b/src/nationalarchives/components/card/card.stories.js index aa05c351..70e3488a 100644 --- a/src/nationalarchives/components/card/card.stories.js +++ b/src/nationalarchives/components/card/card.stories.js @@ -64,7 +64,7 @@ Standard.args = { supertitle: "Card supertitle", title: "Card title", level: 3, - size: "l", + size: "m", }, href: "#", image: { @@ -92,7 +92,7 @@ Boxed.args = { supertitle: "Card supertitle", title: "Card title", level: 3, - size: "l", + size: "m", }, href: "#", image: { @@ -114,7 +114,7 @@ Accent.args = { supertitle: "Card supertitle", title: "Card title", level: 3, - size: "l", + size: "m", }, href: "#", image: { @@ -189,6 +189,36 @@ HorizontalBoxed.args = { classes: "tna-card--demo", }; +export const HorizontalAccent = Template.bind({}); +HorizontalAccent.args = { + heading: { + supertitle: "Card supertitle", + title: "Card title", + level: 3, + size: "l", + }, + image: { + src: "https://www.nationalarchives.gov.uk/wp-content/uploads/sites/24/2023/07/tna-building-compress.jpg", + alt: "The National Archives office", + width: 1996, + height: 1331, + }, + label: "New", + body: "

    Card body

    ", + actions: [ + { + text: "Card action", + href: "#", + title: "Go and do the action", + icon: "calendar", + }, + ], + horizontal: true, + style: "accent", + htmlElement: "article", + classes: "tna-card--demo", +}; + const GridTemplate = ({ heading, href, diff --git a/src/nationalarchives/components/card/fixtures.json b/src/nationalarchives/components/card/fixtures.json index 9af9f8a6..9e7401d5 100644 --- a/src/nationalarchives/components/card/fixtures.json +++ b/src/nationalarchives/components/card/fixtures.json @@ -10,7 +10,7 @@ }, "body": "

    Card body

    " }, - "html": "

    Card title

    Card body

    ", + "html": "

    Card title

    Card body

    ", "hidden": false }, { @@ -23,7 +23,7 @@ }, "body": "

    Card body

    " }, - "html": "

    Card supertitle

    Card title

    Card body

    ", + "html": "

    Card supertitleCard title

    Card body

    ", "hidden": false }, { @@ -48,7 +48,7 @@ }, "body": "

    Card body

    " }, - "html": "

    Card title

    Card body

    ", + "html": "

    Card title

    Card body

    ", "hidden": false }, { @@ -61,7 +61,7 @@ "href": "#", "body": "

    Card body

    " }, - "html": "

    Card title

    Card body

    ", + "html": "

    Card title

    Card body

    ", "hidden": false }, { @@ -73,7 +73,7 @@ }, "text": "Card body" }, - "html": "

    Card title

    Card body

    ", + "html": "

    Card title

    Card body

    ", "hidden": false }, { @@ -91,7 +91,7 @@ }, "body": "

    Card body

    " }, - "html": "

    Card title

    \"A

    Card body

    ", + "html": "

    Card title

    \"A

    Card body

    ", "hidden": false }, { @@ -110,7 +110,7 @@ "href": "#", "body": "

    Card body

    " }, - "html": "

    Card title

    \"A

    Card body

    ", + "html": "

    Card title

    \"A

    Card body

    ", "hidden": false }, { @@ -129,7 +129,7 @@ } ] }, - "html": "

    Card title

    Card body

    ", + "html": "

    Card title

    Card body

    ", "hidden": false }, { @@ -142,7 +142,7 @@ "label": "New", "body": "

    Card body

    " }, - "html": "

    Card title

    Card body

    ", + "html": "

    Card title

    Card body

    ", "hidden": false }, { @@ -155,7 +155,7 @@ "body": "

    Card body

    ", "style": "boxed" }, - "html": "

    Card title

    Card body

    ", + "html": "

    Card title

    Card body

    ", "hidden": false }, { @@ -168,7 +168,7 @@ "body": "

    Card body

    ", "style": "accent" }, - "html": "

    Card title

    Card body

    ", + "html": "

    Card title

    Card body

    ", "hidden": false }, { @@ -181,7 +181,7 @@ "body": "

    Card body

    ", "style": "foobar" }, - "html": "

    Card title

    Card body

    ", + "html": "

    Card title

    Card body

    ", "hidden": false }, { @@ -194,7 +194,7 @@ "body": "

    Card body

    ", "classes": "card__test-class" }, - "html": "

    Card title

    Card body

    ", + "html": "

    Card title

    Card body

    ", "hidden": false }, { @@ -209,7 +209,7 @@ "data-testattribute": "foobar" } }, - "html": "

    Card title

    Card body

    ", + "html": "

    Card title

    Card body

    ", "hidden": false } ] diff --git a/src/nationalarchives/components/card/template.njk b/src/nationalarchives/components/card/template.njk index 704067ff..4a765218 100644 --- a/src/nationalarchives/components/card/template.njk +++ b/src/nationalarchives/components/card/template.njk @@ -11,43 +11,43 @@ <{{ htmlElement }} class="tna-card {{ containerClasses | join(' ') }}" data-module="tna-card" {%- for attribute, value in params.attributes %} {{ attribute }}="{{ value }}"{% endfor %}>
    {%- if params.heading.supertitle -%} -
    -

    {{ params.heading.supertitle }}

    - - {%- if params.href -%} +
    + + {{ params.heading.supertitle }} + {%- if params.href -%} {{ params.heading.title }} - {%- else -%} + {%- else -%} {{ params.heading.title }} - {%- endif -%} + {%- endif -%}
    {%- else -%} - - {%- if params.href -%} + + {%- if params.href -%} {{ params.heading.title }} - {%- else -%} + {%- else -%} {{ params.heading.title }} - {%- endif -%} + {%- endif -%} - {%- endif -%} - {%- if params.image -%} - {%- if params.href -%} - - {%- else -%} -
    {%- endif -%} - {{ params.image.alt }} - {%- if params.label -%} - {%- endif -%} - {%- endif -%}
    {%- if params.text -%}

    {{ params.text }}

    diff --git a/src/nationalarchives/stories/utilities/typography/heading-groups.stories.js b/src/nationalarchives/stories/utilities/typography/heading-groups.stories.js index 9afac339..0b3fa2a8 100644 --- a/src/nationalarchives/stories/utilities/typography/heading-groups.stories.js +++ b/src/nationalarchives/stories/utilities/typography/heading-groups.stories.js @@ -3,6 +3,7 @@ const argTypes = { title: { control: "text" }, level: { control: "number", min: 1, max: 6, step: 1 }, size: { control: "radio", options: ["m", "l", "xl"] }, + singleSentence: { control: "boolean" }, }; export default { @@ -15,13 +16,30 @@ const Template = ({ title, level = 3, size = "l", -}) => `
    + singleSentence, +}) => + singleSentence + ? `
    + + ${supertitle} + ${title} + +
    ` + : `

    ${supertitle}

    ${title}
    `; export const HeadingGroup = Template.bind({}); HeadingGroup.args = { + supertitle: "The story of", + title: "Alice Hawkins", + singleSentence: true, +}; + +export const HeadingGroupSeparated = Template.bind({}); +HeadingGroupSeparated.args = { supertitle: "Record revealed", title: "The Monteagle Letter", + singleSentence: false, }; diff --git a/src/nationalarchives/stories/utilities/typography/typography.mdx b/src/nationalarchives/stories/utilities/typography/typography.mdx index 0f9812fc..13ffdb0c 100644 --- a/src/nationalarchives/stories/utilities/typography/typography.mdx +++ b/src/nationalarchives/stories/utilities/typography/typography.mdx @@ -14,8 +14,19 @@ We use a set of typefaces... + +## Heading groups + +Although visually identical, there are two types of header groups based on whether the group should be read as a single sentence or not. + +In the first example, the heading will be read by screen readers as `The story of Alice Hawkins.` + +In the second example, the heading will be read as two separate sentences; `Record revealed. The Monteagle Letter.` + + + ## General typography diff --git a/src/nationalarchives/utilities/_typography.scss b/src/nationalarchives/utilities/_typography.scss index d62a58e5..2da3b719 100644 --- a/src/nationalarchives/utilities/_typography.scss +++ b/src/nationalarchives/utilities/_typography.scss @@ -156,6 +156,31 @@ a { } } +%heading { + @include colour.colour-font("font-dark"); + @include typography.heading-font; + + a { + display: inline-block; + + &::after { + padding-left: 0.25rem; + + display: inline-block; + + font-weight: 700; + + content: "\203A"; + } + + &:hover { + &::after { + padding-left: 0.5rem; + } + } + } +} + %heading-xl { @include typography.relative-font-size(64); line-height: 1.2; @@ -194,31 +219,6 @@ a { line-height: 1.6; } -%heading { - @include colour.colour-font("font-dark"); - @include typography.heading-font; - - a { - display: inline-block; - - &::after { - padding-left: 0.25rem; - - display: inline-block; - - font-weight: 700; - - content: "\203A"; - } - - &:hover { - &::after { - padding-left: 0.5rem; - } - } - } -} - .tna-heading { @extend %heading; From 30772237c5bf8bd2b19de2772675985b7e3cd750 Mon Sep 17 00:00:00 2001 From: Andrew Hosgood Date: Wed, 13 Sep 2023 18:13:45 +0100 Subject: [PATCH 10/16] Flatten the template parameters for cards --- .storybook/preview.js | 3 + CHANGELOG.md | 2 + .../components/card/card.scss | 39 +-- .../components/card/card.stories.js | 258 ++++++++++-------- .../components/card/fixtures.json | 54 +++- .../components/card/macro-options.json | 107 +++++--- .../components/card/template.njk | 34 ++- .../colour-schemes/colour-schemes.stories.js | 10 +- src/nationalarchives/utilities/_global.scss | 1 + 9 files changed, 291 insertions(+), 217 deletions(-) diff --git a/.storybook/preview.js b/.storybook/preview.js index a9fbe3ea..b3b508b2 100644 --- a/.storybook/preview.js +++ b/.storybook/preview.js @@ -29,4 +29,7 @@ export const parameters = { cellAmount: 4, }, }, + controls: { + expanded: true, + }, }; diff --git a/CHANGELOG.md b/CHANGELOG.md index 6df0e0b5..71884c63 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,12 +15,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Button elements can be `` or ` - - Set cookie preferences + {{ tnaButton({ + text: "Accept cookies", + buttonElement: true, + attributes: { + value: "accept" + } + }) }} + {{ tnaButton({ + text: "Reject cookies", + buttonElement: true, + attributes: { + value: "reject" + } + }) }} + {{ tnaButton({ + text: "Set cookie preferences", + href: "#", + plain: true + }) }} +
    +
    + +
+ + + + + +{#
+ {{ tnaButton({ + text: "RESET", + buttonElement: true, + attributes: { + id: "reset" + } + }) }} + {{ tnaButton({ + text: "ACCEPT ANALYTICS", + buttonElement: true, + attributes: { + id: "accept-analytics-policy" + } + }) }} + {{ tnaButton({ + text: "REJECT ANALYTICS", + buttonElement: true, + attributes: { + id: "reject-analytics-policy" + } + }) }} + {{ tnaButton({ + text: "ACCEPT SETTINGS", + buttonElement: true, + attributes: { + id: "accept-settings-policy" + } + }) }} + {{ tnaButton({ + text: "REJECT SETTINGS", + buttonElement: true, + attributes: { + id: "reject-settings-policy" + } + }) }} +
#} diff --git a/src/nationalarchives/lib/cookies.mjs b/src/nationalarchives/lib/cookies.mjs new file mode 100644 index 00000000..9f86b9ba --- /dev/null +++ b/src/nationalarchives/lib/cookies.mjs @@ -0,0 +1,110 @@ +export default class Cookies { + #policies = {}; + + constructor( + policies = ["analytics", "settings"], + cookiesPolicyKey = "cookies_policy", + crossDomain = false, + ) { + this.cookiesPolicyKey = cookiesPolicyKey; + this.crossDomain = crossDomain; + policies.forEach((policy) => { + this.#policies[policy] = false; + }); + this.#getPolicies(); + } + + #getPolicies() { + if (this.exists(this.cookiesPolicyKey)) { + this.#policies = { + ...this.#policies, + ...this.allPolicies, + }; + } + } + + get data() { + return this.#deserialise(document.cookie); + } + + #deserialise(cookieString) { + const deserialised = {}; + cookieString.split(";").forEach((cookie) => { + const parts = cookie.trim().split("="); + deserialised[parts[0]] = parts[1]; + }); + return deserialised; + } + + get all() { + return this.data; + } + + get allPolicies() { + return JSON.parse(this.get(this.cookiesPolicyKey)); + } + + exists(key) { + return Object.prototype.hasOwnProperty.call(this.data, key); + } + + hasValue(key, value) { + return this.get(key) === value; + } + + get(key) { + return decodeURIComponent(this.data[key]); + } + + delete(key, path = "/") { + this.set(key, "", 0, path); + } + + acceptPolicy(policy) { + this.setPolicy(policy, true); + } + + rejectPolicy(policy) { + this.setPolicy(policy, false); + } + + setPolicy(policy, accepted) { + this.#policies = { + ...this.#policies, + [policy]: accepted, + }; + this.set(this.cookiesPolicyKey, JSON.stringify(this.#policies)); + } + + acceptAllPolicies() { + Object.keys(this.#policies) + .filter((policy) => this.#policies[policy] === false) + .forEach((policy) => this.acceptPolicy(policy)); + } + + rejectAllPolicies() { + Object.keys(this.#policies) + .filter((policy) => this.#policies[policy] === true) + .forEach((policy) => this.rejectPolicy(policy)); + } + + isPolicyAccepted(policy) { + this.#getPolicies(); + return Object.prototype.hasOwnProperty.call(this.#policies, policy) + ? this.#policies[policy] === true + : null; + } + + set(key, value, maxAge = 60 * 60 * 24 * 365, path = "/") { + document.cookie = `${encodeURIComponent(key)}=${encodeURIComponent( + value, + )}; SameSite=${ + this.crossDomain ? "None" : "Lax" + }; path=${path}; max-age=${maxAge}; Secure`; + this.#getPolicies(); + } + + policy(policy) { + return this.#policies[policy]; + } +} diff --git a/src/nationalarchives/stories/utilities/colour-schemes/colour-schemes.stories.js b/src/nationalarchives/stories/utilities/colour-schemes/colour-schemes.stories.js index d99f4a5f..ec520f6d 100644 --- a/src/nationalarchives/stories/utilities/colour-schemes/colour-schemes.stories.js +++ b/src/nationalarchives/stories/utilities/colour-schemes/colour-schemes.stories.js @@ -9,6 +9,7 @@ import Header from "../../../components/header/template.njk"; import Hero from "../../../components/hero/template.njk"; import IndexGrid from "../../../components/index-grid/template.njk"; import Message from "../../../components/message/template.njk"; +import PhaseBanner from "../../../components/phase-banner/template.njk"; import Picture from "../../../components/picture/template.njk"; import Tabs from "../../../components/tabs/template.njk"; @@ -96,6 +97,13 @@ const Template = ({ theme, accent }) => { href: "main-content", }, })} + ${PhaseBanner({ + params: { + phase: "beta", + message: + 'This is a new service - give us your feedback to help improve it.', + }, + })} ${Header({ params: { logo: { @@ -285,6 +293,9 @@ const Template = ({ theme, accent }) => {

Lorem ipsum link

+

+ Categories +

  • Chip 1 diff --git a/src/nationalarchives/tools/_colour.scss b/src/nationalarchives/tools/_colour.scss index 60576739..1e6b2471 100644 --- a/src/nationalarchives/tools/_colour.scss +++ b/src/nationalarchives/tools/_colour.scss @@ -155,10 +155,14 @@ fill: var(--#{$colour}) if($important, !important, null); } -@mixin fixed { +%fixed { @include colour-css-vars; - // @include colour-font("font-base"); + @include colour-font("font-base"); +} + +@mixin fixed { + @extend %fixed; } %invert { @@ -218,7 +222,7 @@ @include colour-background("accent-background"); - @include colour-font("font-base"); + @include colour-font("font-base", false, colour.$colour-palette-dark); } @mixin accent { @@ -267,8 +271,8 @@ @content; } - @media (prefers-contrast: more) { - .tna-template--system-theme & { + .tna-template--system-theme & { + @media (prefers-contrast: more) { @content; } } diff --git a/src/nationalarchives/utilities/_typography.scss b/src/nationalarchives/utilities/_typography.scss index 2da3b719..a39c04ce 100644 --- a/src/nationalarchives/utilities/_typography.scss +++ b/src/nationalarchives/utilities/_typography.scss @@ -70,6 +70,10 @@ strong { p { margin: 0 0 1.5rem; + @include media.on-tiny { + margin-bottom: 1rem; + } + &:last-child { margin-bottom: 0; } @@ -318,6 +322,8 @@ a { @include typography.relative-font-size(30); line-height: math.div(50, 30); + @include spacing.space-below; + @include media.on-mobile { @include typography.relative-font-size(24); line-height: 2; From fabe5002d8b456739299cf7eea0afc0accd13528 Mon Sep 17 00:00:00 2001 From: Andrew Hosgood Date: Thu, 14 Sep 2023 15:52:58 +0100 Subject: [PATCH 13/16] Remove development code --- .../cookie-banner/cookie-banner.mjs | 21 ---------- .../components/cookie-banner/template.njk | 42 ------------------- 2 files changed, 63 deletions(-) diff --git a/src/nationalarchives/components/cookie-banner/cookie-banner.mjs b/src/nationalarchives/components/cookie-banner/cookie-banner.mjs index c18b9864..1377adf3 100644 --- a/src/nationalarchives/components/cookie-banner/cookie-banner.mjs +++ b/src/nationalarchives/components/cookie-banner/cookie-banner.mjs @@ -50,27 +50,6 @@ export class CookieBanner { $closeButton.addEventListener("click", () => this.close()); }); } - - // ==================== DEV ==================== - // document.getElementById("reset").addEventListener("click", () => { - // this.cookies.delete(this.hideCookieBannerKey); - // this.cookies.delete("cookies_policy"); - // window.scrollY = 0; - // window.location = window.location; - // }); - // document - // .getElementById("accept-analytics-policy") - // .addEventListener("click", () => this.cookies.acceptPolicy("analytics")); - // document - // .getElementById("reject-analytics-policy") - // .addEventListener("click", () => this.cookies.rejectPolicy("analytics")); - // document - // .getElementById("accept-settings-policy") - // .addEventListener("click", () => this.cookies.acceptPolicy("settings")); - // document - // .getElementById("reject-settings-policy") - // .addEventListener("click", () => this.cookies.rejectPolicy("settings")); - // ==================== END ==================== } accept() { diff --git a/src/nationalarchives/components/cookie-banner/template.njk b/src/nationalarchives/components/cookie-banner/template.njk index 0b3d88a5..7b89f829 100644 --- a/src/nationalarchives/components/cookie-banner/template.njk +++ b/src/nationalarchives/components/cookie-banner/template.njk @@ -59,45 +59,3 @@
- - - - - -{#
- {{ tnaButton({ - text: "RESET", - buttonElement: true, - attributes: { - id: "reset" - } - }) }} - {{ tnaButton({ - text: "ACCEPT ANALYTICS", - buttonElement: true, - attributes: { - id: "accept-analytics-policy" - } - }) }} - {{ tnaButton({ - text: "REJECT ANALYTICS", - buttonElement: true, - attributes: { - id: "reject-analytics-policy" - } - }) }} - {{ tnaButton({ - text: "ACCEPT SETTINGS", - buttonElement: true, - attributes: { - id: "accept-settings-policy" - } - }) }} - {{ tnaButton({ - text: "REJECT SETTINGS", - buttonElement: true, - attributes: { - id: "reject-settings-policy" - } - }) }} -
#} From 445350920cb06e0d737068a061af4b4804ed2438 Mon Sep 17 00:00:00 2001 From: Andrew Hosgood Date: Thu, 14 Sep 2023 16:00:25 +0100 Subject: [PATCH 14/16] Update CHANGELOG.md --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e7153994..9f4b3fe2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Tabs also respond to the up/down keys on keyboard navigation as well as left/right - Allow other image sources in a card image using a `` element - Cookie banner and cookie handling +- Individual JavaScript and CSS files are exported for each component ### Changed @@ -24,6 +25,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Consolidated markup for "opens in new tab" in external footer links# - Columns have margin removed by default - Flatten the template parameters for cards (e.g. `image.src` -> `imageSrc`) +- Open Sans and Roboto Mono are included in the package +- Gutters on mobile devices have changed from `1rem` to `1.5rem` ### Deprecated ### Removed @@ -37,6 +40,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Remove double underline from tab item hover - Fix colour of visited tabs when JavaScript is not available - Size of `