diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 0c336d808..85aba52b9 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -12,7 +12,16 @@ jobs: - name: Install dependencies run: npm install - + + - name: Sonar analysis + uses: sonarsource/sonarcloud-github-action@master + with: + projectBaseDir: . + env: + GITHUB_TOKEN: ${{ secrets.TOKEN_GITHUB }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }} + - name: Run linting run: npm run lint diff --git a/.prettierignore b/.prettierignore index 9b6142ef4..390d36ab9 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,5 +1,6 @@ node_modules/* dist/* +.cache/* tests/backstop/* .github/* coverage/* diff --git a/CHANGELOG.md b/CHANGELOG.md index 07f1ea996..f130c20aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,131 @@ # NHS.UK frontend Changelog -## 7.0.1 - TBA +## 8.2.0 - 12 June 2024 + +:recycle: **Changes** + +- Align label bottom margins with fieldset legend bottom margins ([PR 946](https://github.com/nhsuk/nhsuk-frontend/pull/946)) + +:wrench: **Fixes** + +- Change example link to hash ([PR 962](https://github.com/nhsuk/nhsuk-frontend/pull/962)) +- Adjust nested list spacing ([PR 961](https://github.com/nhsuk/nhsuk-frontend/pull/961)) +- Fix header navigation item alignment ([PR 054](https://github.com/nhsuk/nhsuk-frontend/pull/954)) +- Fix bug with inset text component requiring uppercase `html` argument ([Issue 950](https://github.com/nhsuk/nhsuk-frontend/issues/950)) +- Remove unused CSS from icon card component ([PR 943](https://github.com/nhsuk/nhsuk-frontend/pull/943)) +- Remove unused CSS from breadcrumbs component ([PR 943](https://github.com/nhsuk/nhsuk-frontend/pull/943)) +- Add `aria-hidden` to responsive labels in responsive tables, to avoid screen readers repeating them ([PR 942](https://github.com/nhsuk/nhsuk-frontend/pull/942)) +- Add `opacity: 1` to header search placeholder, to increase colour contrast on Firefox ([PR 939](https://github.com/nhsuk/nhsuk-frontend/pull/939)) + +## 8.1.1 - 14 March 2024 + +:wrench: **Fixes** + +- Fix alignment of copyright footer +- Add missing/outdated backstop images +- Don't limit input heights to `40px`, to prevent vertical overflow + +## 8.1.0 - 11 January 2024 + +:wrench: **Fixes** + +- Updated header component unit tests ([PR 900](https://github.com/nhsuk/nhsuk-frontend/pull/900)). +- Fixed bug where the header didn't align with the main width container ([PR 902](https://github.com/nhsuk/nhsuk-frontend/pull/902)). This fixes [Issue 901](https://github.com/nhsuk/nhsuk-frontend/issues/901) +- Clicking the chevron image on a 'Primary Card (With Chevron)' card element now focuses the link ([PR 905](https://github.com/nhsuk/nhsuk-frontend/pull/905)). +- Added font licensing guidance to the relevant package READMEs and updated the copyright guidance to include NHS England ([PR 915](https://github.com/nhsuk/nhsuk-frontend/pull/915)). + +:new: **New features** + +- Add and export new `initAll` method in `nhsuk.js`, and pass document by default, but allowing smaller DOM scopes to be passed. This allows new nhsuk-frontend JS components to be initialised after page load, such as in new pieces of DOM added by JavaScript. + - This fixes [issue 906](https://github.com/nhsuk/nhsuk-frontend/issues/906) where button elements added _after_ the page has loaded would not benefit from the button component's JS behaviours (double click prevention and space bar activation for links). ([PR 907](https://github.com/nhsuk/nhsuk-frontend/pull/907)). + +## 8.0.2 - 19 October 2023 + +:wrench: **Fixes** + +- Resolves the bug of the drop down menu covering the main content of the page ([PR 898](https://github.com/nhsuk/nhsuk-frontend/pull/898)). + +## 8.0.1 - 02 October 2023 + +:wrench: **Fixes** + +- Updated design examples for suffix and prefix, and added backstop regression images ([PR 826](https://github.com/nhsuk/nhsuk-frontend/pull/826)). +- Fix focus padding for the search input ([PR 896](https://github.com/nhsuk/nhsuk-frontend/pull/896)). +- Remove card component Javascript from documentation ([PR 891](https://github.com/nhsuk/nhsuk-frontend/pull/891)). + +## 8.0.0 - 28 September 2023 + +:boom: **Breaking changes** + +- Updated header and footer to use the new styles and functionality to match the live nhs.uk site ([PR 881](https://github.com/nhsuk/nhsuk-frontend/pull/881)) + +As well as changes to the styles, this added an example of a footer with it's links in columns, and removed the redundant example of "Header transactional". This also fixes the issue ([Issue 805](https://github.com/nhsuk/nhsuk-frontend/issues/805)). + +In the header variants, the menu toggle button has been replaced with a dropdown menu, that becomes visible when the screen width is below 768px (tablet width). The search toggle has been removed, and instead the search input automatically adjusts according to the screen width. + +Instead of having this: + +``` +// menu toggle + + + + Close menu + +``` + +You will now only need this: + +``` + + + +``` + +:wrench: **Fixes** + +- Fix vertical alignment of primary card icon +- Change NHS Digital wording to NHS England +- Remove dead link in "Action link" example + +:new: **New features** + +- Added suffix and prefix examples to text input component ([PR 884](https://github.com/nhsuk/nhsuk-frontend/pull/884)) + +We added 4 new text input examples that allow users to add suffixes and prefixed to the input form. This was done by adding "suffix" and "prefix" as macro options. + +``` + input({ + "label": { + "text": "What is the cost per item, in pounds?" + }, + "prefix": "£", + "suffix": "per item", + "errorMessage": { + "text": "Enter a cost per item, in pounds" + } + }) +``` + +## 7.1.0 - 21 August 2023 + +:new: **New features** +🆕 New features + +- Added three new card variants, primary card(with chevron), secondary card and top task ([PR 878](https://github.com/nhsuk/nhsuk-frontend/pull/878)) :wrench: **Fixes** @@ -12,15 +137,15 @@ We removed the need to add the last breadcrumb outside of the 'Items' list, now {{ breadcrumb({ items: [ { - href: "/level-one", + href: "#", text: "Level one" }, { - href: "/level-one/level-two", + href: "#", text: "Level two" } ], - href: "/level-one/level-two/level-three", + href: "#", text: "Level three" }) }} ``` @@ -31,15 +156,15 @@ You will now only need this: {{ breadcrumb({ items: [ { - href: "/level-one", + href: "#", text: "Level one", }, { - href: "/level-one/level-two", + href: "#", text: "Level two" }, { - href: "/level-one/level-two/level-three", + href: "#", text: "Level three" } ] diff --git a/README.md b/README.md index 5ae79f099..9c6946c25 100644 --- a/README.md +++ b/README.md @@ -30,8 +30,8 @@ Read our [contributing guidelines](CONTRIBUTING.md) to contribute to NHS.UK fron ## Get in touch -NHS.UK frontend is maintained by NHS Digital. [Email us](mailto:service-manual@nhs.net), open a [GitHub issue](https://github.com/nhsuk/nhsuk-frontend/issues/new) or get in touch on the [NHS digital service manual Slack workspace](https://join.slack.com/t/nhs-service-manual/shared_invite/enQtNTIyOTEyNjU3NDkyLTk4NDQ3YzkwYzk1Njk5YjAxYTI5YTVkZmUxMGQ0ZjA3NjMyM2ZkNjBlMWMxODVjZjYzNzg1ZmU4MWY1NmE2YzE). +NHS.UK frontend is maintained by NHS England. [Email us](mailto:service-manual@nhs.net), open a [GitHub issue](https://github.com/nhsuk/nhsuk-frontend/issues/new) or get in touch on the [NHS digital service manual Slack workspace](https://join.slack.com/t/nhs-service-manual/shared_invite/enQtNTIyOTEyNjU3NDkyLTk4NDQ3YzkwYzk1Njk5YjAxYTI5YTVkZmUxMGQ0ZjA3NjMyM2ZkNjBlMWMxODVjZjYzNzg1ZmU4MWY1NmE2YzE). ## Licence -The codebase is released under the MIT Licence, unless stated otherwise. This covers both the codebase and any sample code in the documentation. The documentation is © Crown copyright and available under the terms of the Open Government 3.0 licence. +The codebase is released under the MIT Licence, unless stated otherwise. This covers both the codebase and any sample code in the documentation. The documentation is © NHS England and available under the terms of the Open Government 3.0 licence. diff --git a/app/_templates/page.njk b/app/_templates/page.njk index c45ef7dce..949acd29c 100644 --- a/app/_templates/page.njk +++ b/app/_templates/page.njk @@ -6,9 +6,7 @@ {% from 'components/card/macro.njk' import card %} {% from 'components/contents-list/macro.njk' import contentsList %} {% from 'components/details/macro.njk' import details %} -{% from 'components/header/macro.njk' import header %} {% from 'components/hero/macro.njk' import hero %} -{% from 'components/footer/macro.njk' import footer %} {% from 'components/do-dont-list/macro.njk' import list %} {% from 'components/images/macro.njk' import image %} {% from 'components/inset-text/macro.njk' import insetText %} diff --git a/app/components/action-link/index.njk b/app/components/action-link/index.njk index eb1e04fbe..45f00a79a 100644 --- a/app/components/action-link/index.njk +++ b/app/components/action-link/index.njk @@ -12,7 +12,7 @@
{{ actionLink({ "text": "Find a minor injuries unit", - "href": "https://www.nhs.uk/service-search/minor-injuries-unit/locationsearch/551" + "href": "#" }) }}
diff --git a/app/components/all.njk b/app/components/all.njk index 3679c6798..d1b9ef3d7 100644 --- a/app/components/all.njk +++ b/app/components/all.njk @@ -69,15 +69,15 @@ items: [ { text: "Home", - href: "https://www.nhs.uk/" + href: "#" }, { text: "Health A-Z", - href: "https://www.nhs.uk/conditions" + href: "#" }, { text: "Abscess", - href: "https://www.nhs.uk/conditions/abscess/" + href: "#" } ] }) }} @@ -89,26 +89,26 @@ {{ contentsList({ items: [ { - href: "https://www.nhs.uk/conditions/age-related-macular-degeneration-amd/", + href: "#", text: "What is AMD?", current: "true" }, { - href: "https://www.nhs.uk/conditions/age-related-macular-degeneration-amd/symptoms/", + href: "#", text: "Symptoms" }, { - href: "https://www.nhs.uk/conditions/age-related-macular-degeneration-amd/getting-diagnosed/", + href: "#", text: "Getting diagnosed" } , { - href: "https://www.nhs.uk/conditions/age-related-macular-degeneration-amd/treatment/", + href: "#", text: "Treatments" } , { - href: "https://www.nhs.uk/conditions/age-related-macular-degeneration-amd/living-with-amd/", + href: "#", text: "Living with AMD" } ] @@ -917,7 +917,7 @@ "label": "Profile editor login" } ], - "secondaryLinks": [ + "metaLinks": [ { "URL": "https://www.nhs.uk/about-us/sitemap/", "label": "Sitemap" diff --git a/app/components/breadcrumb/index.njk b/app/components/breadcrumb/index.njk index 44960b759..61c461fdc 100644 --- a/app/components/breadcrumb/index.njk +++ b/app/components/breadcrumb/index.njk @@ -8,21 +8,21 @@ {{ breadcrumb({ items: [ { - href: "/level-one", + href: "#", text: "Level one", attributes: {lang: "en"} }, { - href: "/level-one/level-two", + href: "#", text: "Level two" }, { - href: "/level-one/level-two/level-three", + href: "#", text: "Level three", attributes: {lang: "en"} } ], - href: "/level-one/level-two/level-three/level-four", + href: "#", text: "Level four", classes: "example-class-one example-class-two", attributes: {lang: "en"} diff --git a/app/components/button/link.njk b/app/components/button/link.njk index 273af79ad..451582e93 100644 --- a/app/components/button/link.njk +++ b/app/components/button/link.njk @@ -12,7 +12,7 @@
{{ button({ "text": "Link button", - "href": "/nhsuk-frontend/" + "href": "/" }) }}
diff --git a/app/components/card/card-group.njk b/app/components/card/card-group.njk index 95d813bdf..aba6cd026 100644 --- a/app/components/card/card-group.njk +++ b/app/components/card/card-group.njk @@ -17,6 +17,7 @@
  • {{ card({ "href": "#", + "primary": "true", "clickable": "true", "heading": "Introduction to care and support", "headingClasses": "nhsuk-heading-m", @@ -26,28 +27,31 @@
  • {{ card({ "href": "#", + "primary": "true", "clickable": "true", "heading": "Help from social services and charities", "headingClasses": "nhsuk-heading-m", - "description": "Includes helplines, needs assessments, advocacy and reporting abuse" + "description": "Includes helplines, needs assessments, advocacy and reporting abuse." }) }}
  • {{ card({ "href": "#", + "primary": "true", "clickable": "true", - "heading": "Money, work and benefits", + "heading": "Care services, equipment and care homes", "headingClasses": "nhsuk-heading-m", - "description": "How to pay for care and support, and where you can get help with costs" + "description": "Includes home adaptations, help at home from a carer, social care you can get for free and housing." }) }}
  • {{ card({ "href": "#", + "primary": "true", "clickable": "true", - "heading": "Care after a hospital stay", + "heading": "Money, work and benefits", "headingClasses": "nhsuk-heading-m", - "description": "Includes hospital discharge and care and support afterwards" + "description": "How to pay for care and support, and where you can get help with costs" }) }}
  • diff --git a/app/components/card/card-primary.njk b/app/components/card/card-primary.njk new file mode 100644 index 000000000..02617d995 --- /dev/null +++ b/app/components/card/card-primary.njk @@ -0,0 +1,25 @@ +{% set html_style = 'background-color: #f0f4f5;' %} +{% set title = 'Card - primary card (with chevron)' %} +{% from 'components/card/macro.njk' import card %} +{% extends 'layout.njk' %} + +{% block body %} + +
    +
    +
    +
    + {{ card({ + "href": "#", + "primary": "true", + "clickable": "true", + "heading": "Introduction to care and support", + "headingClasses": "nhsuk-heading-m", + "description": "A quick guide for people who have care and support needs and their carers" + }) }} +
    +
    +
    +
    + +{% endblock %} diff --git a/app/components/card/card-secondary.njk b/app/components/card/card-secondary.njk new file mode 100644 index 000000000..be3ccd2c6 --- /dev/null +++ b/app/components/card/card-secondary.njk @@ -0,0 +1,29 @@ +{% set html_style = 'background-color: #f0f4f5;' %} +{% set title = 'Card - secondary' %} +{% from 'components/card/macro.njk' import card %} +{% extends 'layout.njk' %} + +{% block body %} + +
    +
    + +
    +
    + + {{ card({ + "href": "#", + "clickable": "true", + "secondary": "true", + "heading": "Urgent and emergency care services", + "headingClasses": "nhsuk-heading-m", + "description": "Services the NHS provides if you need urgent or emergency medical help" + }) }} + +
    +
    + +
    +
    + +{% endblock %} diff --git a/app/components/card/top-task-card.njk b/app/components/card/top-task-card.njk new file mode 100644 index 000000000..702cb0b44 --- /dev/null +++ b/app/components/card/top-task-card.njk @@ -0,0 +1,28 @@ +{% set html_style = 'background-color: #f0f4f5;' %} +{% set title = 'Card - Clickable card' %} +{% from 'components/card/macro.njk' import card %} +{% extends 'layout.njk' %} + +{% block body %} + +
    +
    + +
    +
    + + {{ card({ + "href": "#", + "clickable": "true", + "headingLevel": 5, + "heading": "Order a repeat prescription", + "headingClasses": "nhsuk-heading-xs" + }) }} + +
    +
    + +
    +
    + +{% endblock %} \ No newline at end of file diff --git a/app/components/contents-list/index.njk b/app/components/contents-list/index.njk index cecaaa897..31bcb83f2 100644 --- a/app/components/contents-list/index.njk +++ b/app/components/contents-list/index.njk @@ -13,26 +13,26 @@ {{ contentsList({ items: [ { - href: "https://www.nhs.uk/conditions/age-related-macular-degeneration-amd/", + href: "#", text: "What is AMD?", current: "true" }, { - href: "https://www.nhs.uk/conditions/age-related-macular-degeneration-amd/symptoms/", + href: "#", text: "Symptoms" }, { - href: "https://www.nhs.uk/conditions/age-related-macular-degeneration-amd/getting-diagnosed/", + href: "#", text: "Getting diagnosed" } , { - href: "https://www.nhs.uk/conditions/age-related-macular-degeneration-amd/treatment/", + href: "#", text: "Treatments" } , { - href: "https://www.nhs.uk/conditions/age-related-macular-degeneration-amd/living-with-amd/", + href: "#", text: "Living with AMD" } ] diff --git a/app/components/footer/footer-in-columns.njk b/app/components/footer/footer-in-columns.njk new file mode 100644 index 000000000..980ad1d26 --- /dev/null +++ b/app/components/footer/footer-in-columns.njk @@ -0,0 +1,103 @@ +{% set html_style = 'background-color: #f0f4f5;' %} +{% set title = 'Footer (columns)' %} +{% from 'components/footer/macro.njk' import footer %} +{% extends 'layout.njk' %} + +{% block body %} + + {{ footer({ + "links": [ + { + "URL": "#", + "label": "Home" + }, + { + "URL": "#", + "label": "Health A to Z" + }, + { + "URL": "#", + "label": "Live Well" + }, + { + "URL": "#", + "label": "Mental health" + }, + { + "URL": "#", + "label": "Care and support" + }, + { + "URL": "#", + "label": "Accessibility statement" + }, + { + "URL": "#", + "label": "Pregnancy" + }, + { + "URL": "#", + "label": "NHS services" + }, + { + "URL": "#", + "label": "Coronavirus (COVID-19)" + } + ], + "linksColumn2": [ + { + "URL": "#", + "label": "NHS App" + }, + { + "URL": "#", + "label": "Find my NHS number" + }, + { + "URL": "#", + "label": "Your health records" + }, + { + "URL": "#", + "label": "About the NHS" + }, + { + "URL": "#", + "label": "Healthcare abroad" + } + ], + "linksColumn3": [ + { + "URL": "#", + "label": "Contact us" + }, + { + "URL": "#", + "label": "Other NHS websites" + }, + { + "URL": "#", + "label": "Profile editor login" + } + ], + "metaLinks": [ + { + "URL": "#", + "label": "About us" + }, + { + "URL": "#", + "label": "Accessibility statement" + }, + { + "URL": "#", + "label": "Our policies" + }, + { + "URL": "#", + "label": "Cookies" + } + ] + })}} + +{% endblock %} diff --git a/app/components/footer/index.njk b/app/components/footer/index.njk index 43b7cdcaa..f861b414e 100644 --- a/app/components/footer/index.njk +++ b/app/components/footer/index.njk @@ -1,5 +1,5 @@ {% set html_style = 'background-color: #f0f4f5;' %} -{% set title = 'Footer' %} +{% set title = 'Footer (default)' %} {% from 'components/footer/macro.njk' import footer %} {% extends 'layout.njk' %} diff --git a/app/components/header/header-logo.njk b/app/components/header/header-logo.njk index ad5ce4d1d..800210b56 100644 --- a/app/components/header/header-logo.njk +++ b/app/components/header/header-logo.njk @@ -1,5 +1,5 @@ {% set html_style = 'background-color: #f0f4f5;' %} -{% set title = 'Header' %} +{% set title = 'Header with logo only' %} {% from 'components/header/macro.njk' import header %} {% extends 'layout.njk' %} diff --git a/app/components/header/header-service-name-with-nav.njk b/app/components/header/header-service-name-with-nav.njk index 4872953b6..d4680c3e6 100644 --- a/app/components/header/header-service-name-with-nav.njk +++ b/app/components/header/header-service-name-with-nav.njk @@ -1,5 +1,5 @@ {% set html_style = 'background-color: #f0f4f5;' %} -{% set title = 'Header transactional with service name' %} +{% set title = 'Header with a service name, search and navigation' %} {% from 'components/header/macro.njk' import header %} {% extends 'layout.njk' %} @@ -14,7 +14,7 @@ "primaryLinks": [ { "url" : "#", - "label" : "NHS service standard" + "label" : "Standards and technology" }, { 'url' : '#', diff --git a/app/components/header/header-service-name.njk b/app/components/header/header-service-name.njk index a0c7c3ec4..8c5149e50 100644 --- a/app/components/header/header-service-name.njk +++ b/app/components/header/header-service-name.njk @@ -1,5 +1,5 @@ {% set html_style = 'background-color: #f0f4f5;' %} -{% set title = 'Header transactional with service name' %} +{% set title = 'Header with service name' %} {% from 'components/header/macro.njk' import header %} {% extends 'layout.njk' %} diff --git a/app/components/header/header-transactional-service-name.njk b/app/components/header/header-transactional-service-name.njk index 92edfab49..13038875d 100644 --- a/app/components/header/header-transactional-service-name.njk +++ b/app/components/header/header-transactional-service-name.njk @@ -7,7 +7,7 @@ {{ header({ "transactionalService": { - "name": "Register with a GP" + "name": "Find your NHS number" }, "showNav": "false", "showSearch": "false" diff --git a/app/components/header/header-transactional.njk b/app/components/header/header-transactional.njk deleted file mode 100644 index 9dad44536..000000000 --- a/app/components/header/header-transactional.njk +++ /dev/null @@ -1,15 +0,0 @@ -{% set html_style = 'background-color: #f0f4f5;' %} -{% set title = 'Header transactional' %} -{% from 'components/header/macro.njk' import header %} -{% extends 'layout.njk' %} - -{% block body %} - - {{ header({ - "transactional": "true", - "showNav": "false", - "showSearch": "false" - }) - }} - -{% endblock %} diff --git a/app/components/header/index.njk b/app/components/header/index.njk index 5f9d87dc0..3754df755 100644 --- a/app/components/header/index.njk +++ b/app/components/header/index.njk @@ -1,5 +1,5 @@ {% set html_style = 'background-color: #f0f4f5;' %} -{% set title = 'Header' %} +{% set title = 'Header (default)' %} {% from 'components/header/macro.njk' import header %} {% extends 'layout.njk' %} diff --git a/app/components/input/autocomplete.njk b/app/components/input/autocomplete.njk index 13d37dfcb..2579af2ab 100644 --- a/app/components/input/autocomplete.njk +++ b/app/components/input/autocomplete.njk @@ -16,7 +16,8 @@ }, "id": "input-with-autocomplete-attribute", "name": "postcode", - "autocomplete": "postal-code" + "autocomplete": "postal-code", + "classes": "nhsuk-input--width-5" }) }} diff --git a/app/components/input/custom-width.njk b/app/components/input/custom-width.njk index 0ec02544d..7c5785a1d 100644 --- a/app/components/input/custom-width.njk +++ b/app/components/input/custom-width.njk @@ -12,10 +12,11 @@
    {{ input({ "label": { - "text": "National insurance number" + "text": "National Insurance number", + "classes": "nhsuk-label--l" }, "hint": { - "text": "It’s on your National Insurance card, benefit letter, payslip or P60\. For example, ‘QQ 12 34 56 C’." + "text": "It's on your National Insurance card, benefit letter, payslip or P60\. For example, 'QQ 12 34 56 C'." }, "id": "input-width-10", "name": "test-width-10", diff --git a/app/components/input/error-and-prefix-and-suffix.njk b/app/components/input/error-and-prefix-and-suffix.njk new file mode 100644 index 000000000..5aee830a8 --- /dev/null +++ b/app/components/input/error-and-prefix-and-suffix.njk @@ -0,0 +1,33 @@ +{% set html_style = 'background-color: #f0f4f5;' %} +{% set title = 'Input with error message, prefix and suffix' %} +{% from 'components/input/macro.njk' import input %} +{% extends 'layout.njk' %} + +{% block body %} + +
    +
    + +
    +
    + {{ input({ + "label": { + "text": "What is the cost per item, in pounds?", + "classes": "nhsuk-label--l" + }, + "id": "input-with-error-message-and-prefix-and-suffix", + "name": "test-name-7", + "prefix": "£", + "suffix": "per item", + "classes": "nhsuk-input--width-5", + "errorMessage": { + "text": "Enter a cost per item, in pounds" + } + }) }} +
    +
    + +
    +
    + +{% endblock %} diff --git a/app/components/input/error.njk b/app/components/input/error.njk index 959db5b0c..4ed5ccc70 100644 --- a/app/components/input/error.njk +++ b/app/components/input/error.njk @@ -12,13 +12,15 @@
    {{ input({ "label": { - "text": "National Insurance number" + "text": "National Insurance number", + "classes": "nhsuk-label--l" }, "hint": { - "text": "It’s on your National Insurance card, benefit letter, payslip or P60\. For example, ‘QQ 12 34 56 C’." + "text": "It’s on your National Insurance card, benefit letter, payslip or P60\. For example, 'QQ 12 34 56 C'." }, "id": "input-with-error-message", "name": "test-name-3", + "classes": "nhsuk-input--width-10", "errorMessage": { "text": "Error message goes here" } diff --git a/app/components/input/hint.njk b/app/components/input/hint.njk index da200db3b..7a4461e6b 100644 --- a/app/components/input/hint.njk +++ b/app/components/input/hint.njk @@ -12,13 +12,15 @@
    {{ input({ "label": { - "text": "National insurance number" + "text": "National Insurance number", + "classes": "nhsuk-label--l" }, "hint": { - "text": "It’s on your National Insurance card, benefit letter, payslip or P60\. For example, ‘QQ 12 34 56 C’." + "text": "It’s on your National Insurance card, benefit letter, payslip or P60\. For example, 'QQ 12 34 56 C'." }, "id": "input-with-hint-text", - "name": "test-name-2" + "name": "test-name-2", + "classes": "nhsuk-input--width-10" }) }}
    diff --git a/app/components/input/prefix-and-suffix.njk b/app/components/input/prefix-and-suffix.njk new file mode 100644 index 000000000..9aef61932 --- /dev/null +++ b/app/components/input/prefix-and-suffix.njk @@ -0,0 +1,31 @@ +{% set html_style = 'background-color: #f0f4f5;' %} +{% set title = 'Input with prefix and suffix' %} +{% from 'components/input/macro.njk' import input %} +{% extends 'layout.njk' %} + +{% block body %} + +
    +
    + +
    +
    + {{ input({ + "label": { + "text": "What is the cost per item, in pounds?", + "classes": "nhsuk-label--l" + }, + "id": "input-with-prefix-and-suffix", + "name": "test-name-6", + "prefix": "£", + "suffix": "per item", + "classes": "nhsuk-input--width-5" + + }) }} +
    +
    + +
    +
    + +{% endblock %} diff --git a/app/components/input/prefix.njk b/app/components/input/prefix.njk new file mode 100644 index 000000000..b3bda75c6 --- /dev/null +++ b/app/components/input/prefix.njk @@ -0,0 +1,29 @@ +{% set html_style = 'background-color: #f0f4f5;' %} +{% set title = 'Input with prefix' %} +{% from 'components/input/macro.njk' import input %} +{% extends 'layout.njk' %} + +{% block body %} + +
    +
    + +
    +
    + {{ input({ + "label": { + "text": "What is the cost in pounds?", + "classes": "nhsuk-label--l" + }, + "id": "input-with-prefix", + "name": "test-name-4", + "prefix": "£", + "classes": "nhsuk-input--width-5" + }) }} +
    +
    + +
    +
    + +{% endblock %} diff --git a/app/components/input/suffix.njk b/app/components/input/suffix.njk new file mode 100644 index 000000000..cf19580b9 --- /dev/null +++ b/app/components/input/suffix.njk @@ -0,0 +1,29 @@ +{% set html_style = 'background-color: #f0f4f5;' %} +{% set title = 'Input with suffix' %} +{% from 'components/input/macro.njk' import input %} +{% extends 'layout.njk' %} + +{% block body %} + +
    +
    + +
    +
    + {{ input({ + "label": { + "text": "What is the weight in kilograms?", + "classes": "nhsuk-label--l" + }, + "id": "input-with-suffix", + "name": "test-name-5", + "suffix": "kg", + "classes": "nhsuk-input--width-5" + }) }} +
    +
    + +
    +
    + +{% endblock %} diff --git a/app/components/inset-text/index.njk b/app/components/inset-text/index.njk index f1b09f582..42c92d0fa 100644 --- a/app/components/inset-text/index.njk +++ b/app/components/inset-text/index.njk @@ -11,7 +11,7 @@
    {{ insetText({ - "HTML": "

    You can report any suspected side effect to the UK safety scheme.

    " + "html": "

    You can report any suspected side effect to the UK safety scheme.

    " }) }}
    diff --git a/app/pages/about.njk b/app/pages/about.njk index 5bb9401f0..a9e51a38f 100644 --- a/app/pages/about.njk +++ b/app/pages/about.njk @@ -28,8 +28,8 @@

    Please see our contributing guidelines on how to set up the project locally and contribute changes to NHS.UK frontend.

    Get in touch

    -

    NHS.UK frontend is actively maintained by a team at NHS Digital, you can email us or get in touch on the NHS digital service manual Slack workspace. - +

    NHS.UK frontend is actively maintained by a team at NHS England, you can email us or get in touch on the NHS digital service manual Slack workspace.

    +
    {% endblock %} diff --git a/app/pages/examples.njk b/app/pages/examples.njk index 36c2d6f6f..6473c4dd4 100644 --- a/app/pages/examples.njk +++ b/app/pages/examples.njk @@ -35,10 +35,12 @@
  • Button secondary
  • Button reverse
  • Card - Basic card
  • -
  • Card - Clickable card
  • Card - Card with an image
  • Card - Card group
  • Card - Feature card
  • +
  • Card - Primary card (with chevron)
  • +
  • Card - Secondary card
  • +
  • Card - Top task card
  • Card - Care card non-urgent (blue)
  • Card - Care card urgent (red)
  • Card - Care card emergency (red and black)
  • @@ -68,14 +70,14 @@
  • Fieldset
  • Fieldset as page heading
  • Fieldset with inputs
  • -
  • Footer
  • -
  • Header
  • +
  • Footer (default)
  • +
  • Footer (columns)
  • +
  • Header (default)
  • Header with navigation
  • Header with search
  • Header with logo only
  • Header with a service name
  • Header with a service name, search and navigation
  • -
  • Header transactional
  • Header transactional with service name
  • Header organisational
  • Header organisational with white header
  • @@ -90,6 +92,10 @@
  • Input with hint text
  • Input with error message
  • Input with width modifier
  • +
  • Input with prefix
  • +
  • Input with suffix
  • +
  • Input with prefix and suffix
  • +
  • Input with error message, prefix and suffix
  • Inset text
  • Label
  • Label with bold text
  • @@ -121,4 +127,38 @@
  • Warning callout
  • Warning callout with custom heading
  • + +

    Styles

    + +{% endblock %} + +{% block footer %} + + {{ footer({ + "links": [ + { + "URL": baseUrl, + "label": "NHS.UK frontend" + }, + { + "URL": baseUrl + "pages/install.html", + "label": "Install" + }, + { + "URL": baseUrl + "pages/examples.html", + "label": "Examples" + }, + { + "URL": baseUrl + "pages/about.html", + "label": "About" + }, + { + "URL": "https://github.com/nhsuk/nhsuk-frontend", + "label": "GitHub" + } + ] + })}} + {% endblock %} diff --git a/app/styles/lists.njk b/app/styles/lists.njk new file mode 100644 index 000000000..cbe0590fa --- /dev/null +++ b/app/styles/lists.njk @@ -0,0 +1,101 @@ +{% set title = 'Lists' %} + +{% extends 'page.njk' %} + +{% block header %} + {{ super() }} +{% endblock %} + +{% block breadcrumb %} + {{ breadcrumb({ + items: [ + { + href: "../../", + text: "NHS.UK frontend" + }, + { + href: "../pages/examples.html", + text: "Examples" + } + ] + }) }} +{% endblock %} + +{% block content %} + +

    Lists

    + +

    Plain list

    + + + +

    Bulleted list

    + + + +

    Numbered list

    + +
      +
    1. Dissolve half a teaspoon of salt in a glass of warm water.
    2. +
    3. Gargle with the solution then spit it out – don't swallow it.
    4. +
    5. Repeat as often as you like.
    6. +
    + +

    Bulleted list with nested bulleted list

    + + + +

    Numbered list with nested numbered list

    + + + +

    Bulleted list with 2 nested lists

    + + + + +{% endblock %} diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 000000000..77e0d6d4b --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,39 @@ +trigger: + branches: + include: + - review-* + paths: + exclude: + - CHANGELOG.md + - README.md + - CODE_OF_CONDUCT.md + - CONTRIBUTING.md +pr: none + +pool: + vmImage: 'ubuntu-latest' + +steps: + - script: npm ci + displayName: 'Install' + + - script: npm run build + displayName: 'Build' + + - script: npm run lint + displayName: 'Lint' + + - script: npm run test + displayName: 'Test' + + - script: npm run backstop:ci + displayName: 'Backstop' + + - task: ArchiveFiles@2 + inputs: + rootFolderOrFile: '$(System.DefaultWorkingDirectory)' + includeRootFolder: false + displayName: 'Create file archive to publish' + + - task: PublishBuildArtifacts@1 + displayName: 'Publish files to Azure Pipelines' diff --git a/docs/installation/installing-with-npm.md b/docs/installation/installing-with-npm.md index 4ff25798d..5fabb82a0 100644 --- a/docs/installation/installing-with-npm.md +++ b/docs/installation/installing-with-npm.md @@ -88,7 +88,6 @@ If you're using a transpiler or bundler such as [Babel](https://babeljs.io/) or ```javascript // Components -import Card from './components/card/card'; import Checkboxes from './components/checkboxes/checkboxes'; import Details from './components/details/details'; import ErrorSummary from './components/error-summary/error-summary'; @@ -101,7 +100,6 @@ import '../node_modules/nhsuk-frontend/packages/polyfills'; // Initialize components document.addEventListener('DOMContentLoaded', () => { - Card(); Checkboxes(); Details(); ErrorSummary(); diff --git a/package-lock.json b/package-lock.json index 2dfdb8bf1..e1097d158 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "nhsuk-frontend", - "version": "7.0.0", + "version": "8.1.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "nhsuk-frontend", - "version": "7.0.0", + "version": "8.1.1", "license": "MIT", "devDependencies": { "@babel/core": "^7.18.6", @@ -17,8 +17,10 @@ "concurrently": "^7.2.2", "eslint": "^8.19.0", "eslint-config-airbnb-base": "^15.0.0", + "eslint-config-postcss": "^4.0.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^4.2.1", + "follow-redirects": "^1.15.6", "gulp": "^4.0.2", "gulp-clean": "^0.4.0", "gulp-clean-css": "^4.3.0", @@ -36,6 +38,7 @@ "minimist": "^1.2.6", "nunjucks": "^3.2.3", "prettier": "^2.7.1", + "puppeteer": "^18.1.0", "sass": "^1.53.0", "start-server-and-test": "^1.14.0", "stylelint": "^13.13.1", @@ -362,9 +365,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "dev": true, "engines": { "node": ">=6.9.0" @@ -1022,12 +1025,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", - "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1721,60 +1724,93 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "node_modules/@eslint/eslintrc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.0.tgz", - "integrity": "sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" + "eslint-visitor-keys": "^3.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, "funding": { "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/compat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.0.1.tgz", + "integrity": "sha512-jIstH3YKraEe4HRQ77ux12ZLRxPzehmcdjRSRrSePiwf6s4G9DzdYl3L5CKSXWt4JyzXxy2p7MXFU7630Gz8PA==", "dev": true, + "peer": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.0.2.tgz", + "integrity": "sha512-wV19ZEGEMAC1eHgrS7UQPqsdEiCIbTKTasEfcXAigzoXICcqZSjBZEHlZwNVvKg6UBCjSlos84XiLqsRJnIcIg==", + "dev": true, + "peer": true, "dependencies": { - "type-fest": "^0.20.2" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, + "peer": true, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@eslint/js": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.35.0.tgz", - "integrity": "sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1796,13 +1832,13 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { @@ -1823,9 +1859,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "dev": true }, "node_modules/@istanbuljs/load-nyc-config": { @@ -2809,6 +2845,9 @@ } }, "node_modules/@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", "version": "4.1.5", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", @@ -2904,9 +2943,9 @@ } }, "node_modules/@types/babel__core": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", - "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz", + "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==", "dev": true, "dependencies": { "@babel/parser": "^7.20.7", @@ -2917,18 +2956,18 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "version": "7.6.5", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz", + "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==", "dev": true, "dependencies": { "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz", + "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==", "dev": true, "dependencies": { "@babel/parser": "^7.1.0", @@ -2936,12 +2975,12 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz", - "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz", + "integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==", "dev": true, "dependencies": { - "@babel/types": "^7.3.0" + "@babel/types": "^7.20.7" } }, "node_modules/@types/eslint": { @@ -2974,9 +3013,9 @@ "peer": true }, "node_modules/@types/graceful-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", - "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.7.tgz", + "integrity": "sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==", "dev": true, "dependencies": { "@types/node": "*" @@ -3070,9 +3109,9 @@ "dev": true }, "node_modules/@types/prettier": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", - "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", "dev": true }, "node_modules/@types/stack-utils": { @@ -3109,15 +3148,266 @@ "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==", + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.1.tgz", + "integrity": "sha512-CHzgNU3qYBnp/O4S3yv2tXPlvMTq0YWSTVg2/JYLqWZGHwwgJGAwd00poay/11asPq8wLFwHzubyInqHIFmmiw==", "dev": true, "optional": true, "dependencies": { "@types/node": "*" } }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.9.0.tgz", + "integrity": "sha512-6e+X0X3sFe/G/54aC3jt0txuMTURqLyekmEHViqyA2VnxhLMpvA6nqmcjIy+Cr9tLDHPssA74BP5Mx9HQIxBEA==", + "dev": true, + "peer": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.9.0", + "@typescript-eslint/type-utils": "7.9.0", + "@typescript-eslint/utils": "7.9.0", + "@typescript-eslint/visitor-keys": "7.9.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.9.0.tgz", + "integrity": "sha512-qHMJfkL5qvgQB2aLvhUSXxbK7OLnDkwPzFalg458pxQgfxKDfT1ZDbHQM/I6mDIf/svlMkj21kzKuQ2ixJlatQ==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.9.0", + "@typescript-eslint/types": "7.9.0", + "@typescript-eslint/typescript-estree": "7.9.0", + "@typescript-eslint/visitor-keys": "7.9.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.9.0.tgz", + "integrity": "sha512-ZwPK4DeCDxr3GJltRz5iZejPFAAr4Wk3+2WIBaj1L5PYK5RgxExu/Y68FFVclN0y6GGwH8q+KgKRCvaTmFBbgQ==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/types": "7.9.0", + "@typescript-eslint/visitor-keys": "7.9.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.9.0.tgz", + "integrity": "sha512-6Qy8dfut0PFrFRAZsGzuLoM4hre4gjzWJB6sUvdunCYZsYemTkzZNwF1rnGea326PHPT3zn5Lmg32M/xfJfByA==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "7.9.0", + "@typescript-eslint/utils": "7.9.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.9.0.tgz", + "integrity": "sha512-oZQD9HEWQanl9UfsbGVcZ2cGaR0YT5476xfWE0oE5kQa2sNK2frxOlkeacLOTh9po4AlUT5rtkGyYM5kew0z5w==", + "dev": true, + "peer": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.9.0.tgz", + "integrity": "sha512-zBCMCkrb2YjpKV3LA0ZJubtKCDxLttxfdGmwZvTqqWevUPN0FZvSI26FalGFFUZU/9YQK/A4xcQF9o/VVaCKAg==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/types": "7.9.0", + "@typescript-eslint/visitor-keys": "7.9.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "peer": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.9.0.tgz", + "integrity": "sha512-5KVRQCzZajmT4Ep+NEgjXCvjuypVvYHUW7RHlXzNPuak2oWpVoD1jf5xCP0dPAuNIchjC7uQyvbdaSTFaLqSdA==", + "dev": true, + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.9.0", + "@typescript-eslint/types": "7.9.0", + "@typescript-eslint/typescript-estree": "7.9.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.9.0.tgz", + "integrity": "sha512-iESPx2TNLDNGQLyjKhUvIKprlP49XNEK+MvIf9nIO7ZZaZdbnfWKHnXAgufpxqfA0YryH8XToi4+CjBgVnFTSQ==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/types": "7.9.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "peer": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "node_modules/@webassemblyjs/ast": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", @@ -3319,9 +3609,9 @@ } }, "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -3626,6 +3916,22 @@ "node": ">=0.10.0" } }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", @@ -3642,16 +3948,17 @@ "dev": true }, "node_modules/array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, "peer": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" }, "engines": { @@ -3745,16 +4052,37 @@ "node": ">=0.10.0" } }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, "peer": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" }, "engines": { @@ -3765,15 +4093,15 @@ } }, "node_modules/array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, "peer": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" }, "engines": { @@ -3783,6 +4111,28 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -3908,10 +4258,13 @@ "dev": true }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -4168,9 +4521,9 @@ } }, "node_modules/backstopjs": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/backstopjs/-/backstopjs-6.1.4.tgz", - "integrity": "sha512-EachXZeA2JQPgivnt2Qqdyt20Jix6G8e6IoO4AG3hHTB5YdJQnfazYx7Qs5hW0GYnx44M0nuTxSHQGbrPwpMBw==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/backstopjs/-/backstopjs-6.2.2.tgz", + "integrity": "sha512-Uy+y7FR+4jjhg+lxO2Sx9ag7D08HII9p5bfTpLD6/t2wkSk38pTTFbb7eeRvhuUNoPAgEk4o1urYrtPq4G9jyg==", "dev": true, "dependencies": { "@mirzazeyrek/node-resemble-js": "^1.2.1", @@ -4186,9 +4539,9 @@ "os": "^0.1.2", "p-map": "^4.0.0", "path": "^0.12.7", - "playwright": "^1.23.4", - "portfinder": "^1.0.28", - "puppeteer": "^15.4.0", + "playwright": "^1.32.1", + "portfinder": "^1.0.32", + "puppeteer": "^19.7.0", "super-simple-web-server": "^1.1.3", "temp": "^0.9.4" }, @@ -4196,6 +4549,36 @@ "backstop": "cli/index.js" } }, + "node_modules/backstopjs/node_modules/@puppeteer/browsers": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-0.5.0.tgz", + "integrity": "sha512-Uw6oB7VvmPRLE4iKsjuOh8zgDabhNX67dzo8U/BB0f9527qx+4eeUs+korU98OhG5C4ubg7ufBgVi63XYwS6TQ==", + "dev": true, + "dependencies": { + "debug": "4.3.4", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "yargs": "17.7.1" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=14.1.0" + }, + "peerDependencies": { + "typescript": ">= 4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/backstopjs/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -4227,6 +4610,18 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/backstopjs/node_modules/chromium-bidi": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.7.tgz", + "integrity": "sha512-6+mJuFXwTMU6I3vYLs6IL8A1DyQTPjCfIL971X0aMPVGRbGnNfl6i6Cl0NMbxi2bRYLGESt9T2ZIMRM5PAEcIQ==", + "dev": true, + "dependencies": { + "mitt": "3.0.0" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, "node_modules/backstopjs/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -4245,6 +4640,30 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/backstopjs/node_modules/cosmiconfig": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz", + "integrity": "sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==", + "dev": true, + "dependencies": { + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "node_modules/backstopjs/node_modules/devtools-protocol": { + "version": "0.0.1107588", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1107588.tgz", + "integrity": "sha512-yIR+pG9x65Xko7bErCUSQaDLrO/P1p3JUzEk7JCU4DowPcGHkTGUGQapcfcLc4qj0UaALwZ+cr0riFgiqpixcg==", + "dev": true + }, "node_modules/backstopjs/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -4254,6 +4673,57 @@ "node": ">=8" } }, + "node_modules/backstopjs/node_modules/mitt": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", + "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==", + "dev": true + }, + "node_modules/backstopjs/node_modules/puppeteer": { + "version": "19.11.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-19.11.1.tgz", + "integrity": "sha512-39olGaX2djYUdhaQQHDZ0T0GwEp+5f9UB9HmEP0qHfdQHIq0xGQZuAZ5TLnJIc/88SrPLpEflPC+xUqOTv3c5g==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@puppeteer/browsers": "0.5.0", + "cosmiconfig": "8.1.3", + "https-proxy-agent": "5.0.1", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "puppeteer-core": "19.11.1" + } + }, + "node_modules/backstopjs/node_modules/puppeteer-core": { + "version": "19.11.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-19.11.1.tgz", + "integrity": "sha512-qcuC2Uf0Fwdj9wNtaTZ2OvYRraXpAK+puwwVW8ofOhOgLPZyz1c68tsorfIZyCUOpyBisjr+xByu7BMbEYMepA==", + "dev": true, + "dependencies": { + "@puppeteer/browsers": "0.5.0", + "chromium-bidi": "0.4.7", + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "devtools-protocol": "0.0.1107588", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "proxy-from-env": "1.1.0", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.13.0" + }, + "engines": { + "node": ">=14.14.0" + }, + "peerDependencies": { + "typescript": ">= 4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/backstopjs/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -4266,6 +4736,27 @@ "node": ">=8" } }, + "node_modules/backstopjs/node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/bail": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", @@ -4378,9 +4869,9 @@ } }, "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", - "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "dependencies": { "inherits": "^2.0.3", @@ -4690,13 +5181,19 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4944,9 +5441,9 @@ } }, "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", "dev": true }, "node_modules/class-utils": { @@ -5192,9 +5689,9 @@ } }, "node_modules/collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", "dev": true }, "node_modules/collection-map": { @@ -5724,6 +6221,57 @@ "node": ">=12" } }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/date-fns": { "version": "2.29.3", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", @@ -5825,9 +6373,9 @@ "dev": true }, "node_modules/deepmerge": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", - "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, "engines": { "node": ">=0.10.0" @@ -5854,12 +6402,30 @@ "node": ">= 0.10" } }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -5926,9 +6492,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.1019158", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1019158.tgz", - "integrity": "sha512-wvq+KscQ7/6spEV7czhnZc9RM/woz1AY+/Vpd8/h2HFMwJSdTliu7f/yr1A6vDdJfKICZsShqsYpEQbdhg8AFQ==", + "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 }, "node_modules/diff": { @@ -6160,9 +6726,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", - "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz", + "integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==", "dev": true, "peer": true, "dependencies": { @@ -6210,44 +6776,57 @@ } }, "node_modules/es-abstract": { - "version": "1.21.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", - "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", - "get-symbol-description": "^1.0.0", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.4", - "is-array-buffer": "^3.0.1", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -6256,6 +6835,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-module-lexer": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", @@ -6263,28 +6863,40 @@ "dev": true, "peer": true }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, "peer": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { @@ -6305,6 +6917,9 @@ } }, "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", "version": "0.10.64", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", @@ -6314,6 +6929,7 @@ "es6-iterator": "^2.0.3", "es6-symbol": "^3.1.3", "esniff": "^2.0.1", + "esniff": "^2.0.1", "next-tick": "^1.1.0" }, "engines": { @@ -6378,15 +6994,14 @@ } }, "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dev": true, "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" + "esutils": "^2.0.2" }, "bin": { "escodegen": "bin/escodegen.js", @@ -6408,78 +7023,29 @@ "node": ">=4.0" } }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/eslint": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.35.0.tgz", - "integrity": "sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^2.0.0", - "@eslint/js": "8.35.0", - "@humanwhocodes/config-array": "^0.11.8", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -6487,23 +7053,19 @@ "find-up": "^5.0.0", "glob-parent": "^6.0.2", "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", + "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "bin": { @@ -6516,6 +7078,35 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint-compat-utils": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.0.tgz", + "integrity": "sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==", + "dev": true, + "peer": true, + "dependencies": { + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/eslint-compat-utils/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/eslint-config-airbnb-base": { "version": "15.0.0", "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", @@ -6535,6 +7126,16 @@ "eslint-plugin-import": "^2.25.2" } }, + "node_modules/eslint-config-postcss": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-postcss/-/eslint-config-postcss-4.0.0.tgz", + "integrity": "sha512-vOvKpJ6xnuveq6wCDzyg/M6ZguqpxILdLmi6jLuJy92aN0bwygkGkUGc/m3TP0kvGo9BofbrhtX/DFPZ9kTp4Q==", + "dev": true, + "peerDependencies": { + "@logux/eslint-config": ">=36.0.0", + "eslint": ">=6.8.0" + } + }, "node_modules/eslint-config-prettier": { "version": "8.6.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz", @@ -6547,16 +7148,46 @@ "eslint": ">=7.0.0" } }, + "node_modules/eslint-config-standard": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", + "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peer": true, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", + "eslint-plugin-promise": "^6.0.0" + } + }, "node_modules/eslint-import-resolver-node": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", - "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, "peer": true, "dependencies": { "debug": "^3.2.7", - "is-core-module": "^2.11.0", - "resolve": "^1.22.1" + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, "node_modules/eslint-import-resolver-node/node_modules/debug": { @@ -6570,9 +7201,9 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", - "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", "dev": true, "peer": true, "dependencies": { @@ -6597,28 +7228,51 @@ "ms": "^2.1.1" } }, + "node_modules/eslint-plugin-es-x": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.6.0.tgz", + "integrity": "sha512-I0AmeNgevgaTR7y2lrVCJmGYF0rjoznpDvqV/kIkZSZbZ8Rw3eu4cGlvBBULScfkSOCzqKbff5LR4CNrV7mZHA==", + "dev": true, + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.6.0", + "eslint-compat-utils": "^0.5.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "eslint": ">=8" + } + }, "node_modules/eslint-plugin-import": { - "version": "2.27.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", - "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", "dev": true, "peer": true, "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", - "eslint-module-utils": "^2.7.4", - "has": "^1.0.3", - "is-core-module": "^2.11.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.values": "^1.1.6", - "resolve": "^1.22.1", - "semver": "^6.3.0", - "tsconfig-paths": "^3.14.1" + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" }, "engines": { "node": ">=4" @@ -6650,6 +7304,156 @@ "node": ">=0.10.0" } }, + "node_modules/eslint-plugin-n": { + "version": "17.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.7.0.tgz", + "integrity": "sha512-4Jg4ZKVE4VjHig2caBqPHYNW5na84RVufUuipFLJbgM/G57O6FdpUKJbHakCDJb/yjQuyqVzYWRtU3HNYaZUwg==", + "dev": true, + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "enhanced-resolve": "^5.15.0", + "eslint-plugin-es-x": "^7.5.0", + "get-tsconfig": "^4.7.0", + "globals": "^15.0.0", + "ignore": "^5.2.4", + "minimatch": "^9.0.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": ">=8.23.0" + } + }, + "node_modules/eslint-plugin-n/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/eslint-plugin-n/node_modules/globals": { + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.2.0.tgz", + "integrity": "sha512-FQ5YwCHZM3nCmtb5FzEWwdUc9K5d3V/w9mzcz8iGD1gC/aOTHc6PouYu0kkKipNJqHAT7m51sqzQjEjIP+cK0A==", + "dev": true, + "peer": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-n/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "peer": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/eslint-plugin-n/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-perfectionist": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-2.10.0.tgz", + "integrity": "sha512-P+tdrkHeMWBc55+DZsoDOAftV1WCsEoHaKm6JC7zajFus/syfT4vUPBFb3atGFSuyaVnGQGHlcKpP9X3Q0gH/w==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/utils": "^6.13.0 || ^7.0.0", + "minimatch": "^9.0.3", + "natural-compare-lite": "^1.4.0" + }, + "peerDependencies": { + "astro-eslint-parser": "^0.16.0", + "eslint": ">=8.0.0", + "svelte": ">=3.0.0", + "svelte-eslint-parser": "^0.33.0", + "vue-eslint-parser": ">=9.0.0" + }, + "peerDependenciesMeta": { + "astro-eslint-parser": { + "optional": true + }, + "svelte": { + "optional": true + }, + "svelte-eslint-parser": { + "optional": true + }, + "vue-eslint-parser": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-perfectionist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/eslint-plugin-perfectionist/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "peer": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/eslint-plugin-prefer-let": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prefer-let/-/eslint-plugin-prefer-let-3.0.1.tgz", + "integrity": "sha512-vbznkkBSXB63d4o1o0NIm5C2ey3V5wKr/25dAvPdydQXdowAcnr69cbLgxd2YAG81IV5eddCO55Lp6gL7wSE4w==", + "dev": true, + "peer": true, + "dependencies": { + "requireindex": "~1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/eslint-plugin-prettier": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", @@ -6671,6 +7475,19 @@ } } }, + "node_modules/eslint-plugin-promise": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", + "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", + "dev": true, + "peer": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -6684,24 +7501,6 @@ "node": ">=8.0.0" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, "node_modules/eslint-visitor-keys": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", @@ -6711,6 +7510,29 @@ "node": ">=10" } }, + "node_modules/eslint/node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -6773,9 +7595,9 @@ } }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -6783,15 +7605,38 @@ }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/estraverse": { @@ -6873,29 +7718,34 @@ "dev": true }, "node_modules/espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.0.1.tgz", + "integrity": "sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==", "dev": true, + "peer": true, "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.11.3", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^4.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", "dev": true, + "peer": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esprima": { @@ -6990,6 +7840,16 @@ "es5-ext": "~0.10.14" } }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, "node_modules/event-stream": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", @@ -8009,6 +8869,9 @@ } }, "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "version": "1.15.6", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", @@ -8171,21 +9034,24 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, "engines": { "node": ">= 0.4" @@ -8222,14 +9088,19 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8272,13 +9143,14 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" @@ -8287,6 +9159,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-tsconfig": { + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz", + "integrity": "sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==", + "dev": true, + "peer": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -8648,10 +9533,10 @@ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, "node_modules/gulp": { @@ -8937,6 +9822,9 @@ } }, "node_modules/gulp-cli/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", @@ -9375,18 +10263,6 @@ "node": ">=6" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -9418,21 +10294,21 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true, "engines": { "node": ">= 0.4" @@ -9454,12 +10330,12 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -9513,6 +10389,18 @@ "node": ">=0.10.0" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/homedir-polyfill": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", @@ -9822,9 +10710,9 @@ ] }, "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "engines": { "node": ">= 4" @@ -9921,13 +10809,13 @@ "dev": true }, "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -10020,14 +10908,16 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10115,12 +11005,12 @@ } }, "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10147,6 +11037,21 @@ "node": ">=0.10.0" } }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-date-object": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", @@ -10263,9 +11168,9 @@ } }, "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, "engines": { "node": ">= 0.4" @@ -10390,12 +11295,15 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10444,16 +11352,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -10584,17 +11488,17 @@ } }, "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "dependencies": { "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", + "make-dir": "^4.0.0", "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/istanbul-lib-report/node_modules/has-flag": { @@ -10606,6 +11510,48 @@ "node": ">=8" } }, + "node_modules/istanbul-lib-report/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-report/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/istanbul-lib-report/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -10618,6 +11564,12 @@ "node": ">=8" } }, + "node_modules/istanbul-lib-report/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", @@ -10633,9 +11585,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -11024,6 +11976,23 @@ "node": ">=0.12.0" } }, + "node_modules/jest-config/node_modules/jest-environment-node": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", + "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", + "dev": true, + "dependencies": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, "node_modules/jest-config/node_modules/micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -11161,16 +12130,23 @@ } }, "node_modules/jest-dev-server/node_modules/wait-on": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-7.2.0.tgz", + "integrity": "sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==", "version": "7.2.0", "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-7.2.0.tgz", "integrity": "sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==", "dev": true, "dependencies": { + "axios": "^1.6.1", + "joi": "^17.11.0", "axios": "^1.6.1", "joi": "^17.11.0", "lodash": "^4.17.21", "minimist": "^1.2.8", "rxjs": "^7.8.1" + "minimist": "^1.2.8", + "rxjs": "^7.8.1" }, "bin": { "wait-on": "bin/wait-on" @@ -11382,89 +12358,73 @@ } }, "node_modules/jest-environment-node": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", - "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.4.tgz", + "integrity": "sha512-i7SbpH2dEIFGNmxGCpSc2w9cA4qVD+wfvg2ZnfQ7XVrKL0NA5uDVBIiGH8SR4F0dKEv/0qI5r+aDomDf04DpEQ==", "dev": true, "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", + "@jest/environment": "^29.6.4", + "@jest/fake-timers": "^29.6.4", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" + "jest-mock": "^29.6.3", + "jest-util": "^29.6.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-environment-puppeteer": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/jest-environment-puppeteer/-/jest-environment-puppeteer-7.0.1.tgz", - "integrity": "sha512-ZfNK2jfY4Ru7WQW9aq/WStkyf6I74Y141j1FTGiZtKfj6xh058N+vtWnt7o1yw3SOumrIAL9lMdKWZxWZRVHuA==", - "dev": true, - "dependencies": { - "chalk": "^4.1.2", - "cwd": "^0.10.0", - "jest-dev-server": "^7.0.1", - "jest-environment-node": "^29.4.1", - "merge-deep": "^3.0.3" - }, - "engines": { - "node": ">=14.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-environment-puppeteer/node_modules/@jest/environment": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.4.3.tgz", - "integrity": "sha512-dq5S6408IxIa+lr54zeqce+QgI+CJT4nmmA+1yzFgtcsGK8c/EyiUb9XQOgz3BMKrRDfKseeOaxj2eO8LlD3lA==", + "node_modules/jest-environment-node/node_modules/@jest/environment": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.4.tgz", + "integrity": "sha512-sQ0SULEjA1XUTHmkBRl7A1dyITM9yb1yb3ZNKPX3KlTd6IG7mWUe3e2yfExtC2Zz1Q+mMckOLHmL/qLiuQJrBQ==", "dev": true, "dependencies": { - "@jest/fake-timers": "^29.4.3", - "@jest/types": "^29.4.3", + "@jest/fake-timers": "^29.6.4", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^29.4.3" + "jest-mock": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-environment-puppeteer/node_modules/@jest/fake-timers": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.4.3.tgz", - "integrity": "sha512-4Hote2MGcCTWSD2gwl0dwbCpBRHhE6olYEuTj8FMowdg3oQWNKr2YuxenPQYZ7+PfqPY1k98wKDU4Z+Hvd4Tiw==", + "node_modules/jest-environment-node/node_modules/@jest/fake-timers": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.4.tgz", + "integrity": "sha512-6UkCwzoBK60edXIIWb0/KWkuj7R7Qq91vVInOe3De6DSpaEiqjKcJw4F7XUet24Wupahj9J6PlR09JqJ5ySDHw==", "dev": true, "dependencies": { - "@jest/types": "^29.4.3", + "@jest/types": "^29.6.3", "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^29.4.3", - "jest-mock": "^29.4.3", - "jest-util": "^29.4.3" + "jest-message-util": "^29.6.3", + "jest-mock": "^29.6.3", + "jest-util": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-environment-puppeteer/node_modules/@jest/schemas": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", - "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", + "node_modules/jest-environment-node/node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, "dependencies": { - "@sinclair/typebox": "^0.25.16" + "@sinclair/typebox": "^0.27.8" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-environment-puppeteer/node_modules/@jest/types": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.4.3.tgz", - "integrity": "sha512-bPYfw8V65v17m2Od1cv44FH+SiKW7w2Xu7trhcdTLUmSv85rfKsP+qXSjO4KGJr4dtPSzl/gvslZBXctf1qGEA==", + "node_modules/jest-environment-node/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, "dependencies": { - "@jest/schemas": "^29.4.3", + "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", @@ -11475,31 +12435,31 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-environment-puppeteer/node_modules/@sinclair/typebox": { - "version": "0.25.24", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", - "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", + "node_modules/jest-environment-node/node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "dev": true }, - "node_modules/jest-environment-puppeteer/node_modules/@sinonjs/commons": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", - "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "node_modules/jest-environment-node/node_modules/@sinonjs/commons": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", "dev": true, "dependencies": { "type-detect": "4.0.8" } }, - "node_modules/jest-environment-puppeteer/node_modules/@sinonjs/fake-timers": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz", - "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==", + "node_modules/jest-environment-node/node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, "dependencies": { - "@sinonjs/commons": "^2.0.0" + "@sinonjs/commons": "^3.0.0" } }, - "node_modules/jest-environment-puppeteer/node_modules/ansi-styles": { + "node_modules/jest-environment-node/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -11526,7 +12486,7 @@ "node": ">=8" } }, - "node_modules/jest-environment-puppeteer/node_modules/chalk": { + "node_modules/jest-environment-node/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -11542,7 +12502,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-environment-puppeteer/node_modules/color-convert": { + "node_modules/jest-environment-node/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -11554,7 +12514,7 @@ "node": ">=7.0.0" } }, - "node_modules/jest-environment-puppeteer/node_modules/color-name": { + "node_modules/jest-environment-node/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", @@ -11572,7 +12532,7 @@ "node": ">=8" } }, - "node_modules/jest-environment-puppeteer/node_modules/has-flag": { + "node_modules/jest-environment-node/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -11581,7 +12541,7 @@ "node": ">=8" } }, - "node_modules/jest-environment-puppeteer/node_modules/is-number": { + "node_modules/jest-environment-node/node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", @@ -11590,36 +12550,19 @@ "node": ">=0.12.0" } }, - "node_modules/jest-environment-puppeteer/node_modules/jest-environment-node": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.4.3.tgz", - "integrity": "sha512-gAiEnSKF104fsGDXNkwk49jD/0N0Bqu2K9+aMQXA6avzsA9H3Fiv1PW2D+gzbOSR705bWd2wJZRFEFpV0tXISg==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.4.3", - "@jest/fake-timers": "^29.4.3", - "@jest/types": "^29.4.3", - "@types/node": "*", - "jest-mock": "^29.4.3", - "jest-util": "^29.4.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-environment-puppeteer/node_modules/jest-message-util": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.4.3.tgz", - "integrity": "sha512-1Y8Zd4ZCN7o/QnWdMmT76If8LuDv23Z1DRovBj/vcSFNlGCJGoO8D1nJDw1AdyAGUk0myDLFGN5RbNeJyCRGCw==", + "node_modules/jest-environment-node/node_modules/jest-message-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.3.tgz", + "integrity": "sha512-FtzaEEHzjDpQp51HX4UMkPZjy46ati4T5pEMyM6Ik48ztu4T9LQplZ6OsimHx7EuM9dfEh5HJa6D3trEftu3dA==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.4.3", + "@jest/types": "^29.6.3", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.4.3", + "pretty-format": "^29.6.3", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -11627,27 +12570,27 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-environment-puppeteer/node_modules/jest-mock": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.4.3.tgz", - "integrity": "sha512-LjFgMg+xed9BdkPMyIJh+r3KeHt1klXPJYBULXVVAkbTaaKjPX1o1uVCAZADMEp/kOxGTwy/Ot8XbvgItOrHEg==", + "node_modules/jest-environment-node/node_modules/jest-mock": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.3.tgz", + "integrity": "sha512-Z7Gs/mOyTSR4yPsaZ72a/MtuK6RnC3JYqWONe48oLaoEcYwEDxqvbXz85G4SJrm2Z5Ar9zp6MiHF4AlFlRM4Pg==", "dev": true, "dependencies": { - "@jest/types": "^29.4.3", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-util": "^29.4.3" + "jest-util": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-environment-puppeteer/node_modules/jest-util": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.4.3.tgz", - "integrity": "sha512-ToSGORAz4SSSoqxDSylWX8JzkOQR7zoBtNRsA7e+1WUX5F8jrOwaNpuh1YfJHJKDHXLHmObv5eOjejUd+/Ws+Q==", + "node_modules/jest-environment-node/node_modules/jest-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.3.tgz", + "integrity": "sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==", "dev": true, "dependencies": { - "@jest/types": "^29.4.3", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -11658,7 +12601,7 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-environment-puppeteer/node_modules/micromatch": { + "node_modules/jest-environment-node/node_modules/micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", @@ -11671,13 +12614,13 @@ "node": ">=8.6" } }, - "node_modules/jest-environment-puppeteer/node_modules/pretty-format": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz", - "integrity": "sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==", + "node_modules/jest-environment-node/node_modules/pretty-format": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz", + "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==", "dev": true, "dependencies": { - "@jest/schemas": "^29.4.3", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, @@ -11685,7 +12628,7 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-environment-puppeteer/node_modules/pretty-format/node_modules/ansi-styles": { + "node_modules/jest-environment-node/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", @@ -11697,7 +12640,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-environment-puppeteer/node_modules/supports-color": { + "node_modules/jest-environment-node/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -11709,7 +12652,7 @@ "node": ">=8" } }, - "node_modules/jest-environment-puppeteer/node_modules/to-regex-range": { + "node_modules/jest-environment-node/node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", @@ -11721,6 +12664,92 @@ "node": ">=8.0" } }, + "node_modules/jest-environment-puppeteer": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/jest-environment-puppeteer/-/jest-environment-puppeteer-7.0.1.tgz", + "integrity": "sha512-ZfNK2jfY4Ru7WQW9aq/WStkyf6I74Y141j1FTGiZtKfj6xh058N+vtWnt7o1yw3SOumrIAL9lMdKWZxWZRVHuA==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2", + "cwd": "^0.10.0", + "jest-dev-server": "^7.0.1", + "jest-environment-node": "^29.4.1", + "merge-deep": "^3.0.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/jest-environment-puppeteer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-environment-puppeteer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-environment-puppeteer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-environment-puppeteer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-environment-puppeteer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-puppeteer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-get-type": { "version": "28.0.2", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", @@ -12304,6 +13333,23 @@ "node": ">=8" } }, + "node_modules/jest-runner/node_modules/jest-environment-node": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", + "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", + "dev": true, + "dependencies": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, "node_modules/jest-runner/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -12854,6 +13900,9 @@ "integrity": "sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg==", "dev": true, "dependencies": { + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", "@hapi/hoek": "^9.3.0", "@hapi/topo": "^5.1.0", "@sideway/address": "^4.1.5", @@ -12867,16 +13916,6 @@ "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==", "dev": true }, - "node_modules/js-sdsl": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", - "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -14132,6 +15171,13 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true, + "peer": true + }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -14155,9 +15201,9 @@ "dev": true }, "node_modules/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, "dependencies": { "whatwg-url": "^5.0.0" @@ -14448,9 +15494,9 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -14478,13 +15524,13 @@ } }, "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -14536,6 +15582,40 @@ "node": ">= 0.4" } }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/object.map": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", @@ -14599,15 +15679,15 @@ } }, "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, "peer": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -14665,9 +15745,9 @@ } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "dependencies": { "deep-is": "^0.1.3", @@ -14675,7 +15755,7 @@ "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -15024,9 +16104,9 @@ } }, "node_modules/pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", "dev": true, "engines": { "node": ">= 6" @@ -15118,31 +16198,33 @@ } }, "node_modules/playwright": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.31.1.tgz", - "integrity": "sha512-zKJabsIA2rvOwJ12lGTqWv4HVJzlfw2JtUvO4hAr7J8UXQZ1qEPpX20E1vcz/9fotnTkwgqp3CVdIBwptBN3Fg==", + "version": "1.38.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.38.1.tgz", + "integrity": "sha512-oRMSJmZrOu1FP5iu3UrCx8JEFRIMxLDM0c/3o4bpzU5Tz97BypefWf7TuTNPWeCe279TPal5RtPPZ+9lW/Qkow==", "dev": true, - "hasInstallScript": true, "dependencies": { - "playwright-core": "1.31.1" + "playwright-core": "1.38.1" }, "bin": { "playwright": "cli.js" }, "engines": { - "node": ">=14" + "node": ">=16" + }, + "optionalDependencies": { + "fsevents": "2.3.2" } }, "node_modules/playwright-core": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.31.1.tgz", - "integrity": "sha512-JTyX4kV3/LXsvpHkLzL2I36aCdml4zeE35x+G5aPc4bkLsiRiQshU5lWeVpHFAuC8xAcbI6FDcw/8z3q2xtJSQ==", + "version": "1.38.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.38.1.tgz", + "integrity": "sha512-tQqNFUKa3OfMf4b2jQ7aGLB8o9bS3bOY0yMEtldtC2+spf8QXG9zvXLTXUeRsoNuxEYMgLYR+NXfAa1rjKRcrg==", "dev": true, "bin": { - "playwright": "cli.js" + "playwright-core": "cli.js" }, "engines": { - "node": ">=14" + "node": ">=16" } }, "node_modules/plugin-error": { @@ -15263,6 +16345,15 @@ "node": ">=0.10.0" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { "version": "7.0.39", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", @@ -15594,34 +16685,33 @@ } }, "node_modules/puppeteer": { - "version": "15.5.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-15.5.0.tgz", - "integrity": "sha512-+vZPU8iBSdCx1Kn5hHas80fyo0TiVyMeqLGv/1dygX2HKhAZjO9YThadbRTCoTYq0yWw+w/CysldPsEekDtjDQ==", - "deprecated": "< 19.2.0 is no longer supported", + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-18.1.0.tgz", + "integrity": "sha512-2RCVWIF+pZOSfksWlQU0Hh6CeUT5NYt66CDDgRyuReu6EvBAk1y+/Q7DuzYNvGChSecGMb7QPN0hkxAa3guAog==", + "deprecated": "< 19.4.0 is no longer supported", "dev": true, "hasInstallScript": true, "dependencies": { "cross-fetch": "3.1.5", "debug": "4.3.4", - "devtools-protocol": "0.0.1019158", + "devtools-protocol": "0.0.1045489", "extract-zip": "2.0.1", "https-proxy-agent": "5.0.1", - "pkg-dir": "4.2.0", "progress": "2.0.3", "proxy-from-env": "1.1.0", "rimraf": "3.0.2", "tar-fs": "2.1.1", "unbzip2-stream": "1.4.3", - "ws": "8.8.0" + "ws": "8.9.0" }, "engines": { "node": ">=14.1.0" } }, "node_modules/puppeteer/node_modules/ws": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", - "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz", + "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==", "dev": true, "engines": { "node": ">=10.0.0" @@ -15881,6 +16971,9 @@ } }, "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", @@ -16040,14 +17133,15 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -16056,18 +17150,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, "node_modules/regexpu-core": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.1.tgz", @@ -16251,6 +17333,16 @@ "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", "dev": true }, + "node_modules/requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true, + "peer": true, + "engines": { + "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", @@ -16258,12 +17350,12 @@ "dev": true }, "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -16341,6 +17433,16 @@ "node": ">= 0.10" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "peer": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -16415,6 +17517,9 @@ } }, "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", @@ -16423,6 +17528,30 @@ "tslib": "^2.1.0" } }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -16459,15 +17588,18 @@ } }, "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -16526,6 +17658,9 @@ } }, "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", @@ -16777,6 +17912,38 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", @@ -17586,29 +18753,50 @@ "node": ">=8" } }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -18166,9 +19354,9 @@ } }, "node_modules/tar-stream/node_modules/readable-stream": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", - "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "dependencies": { "inherits": "^2.0.3", @@ -18638,10 +19826,23 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, "node_modules/tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, "peer": true, "dependencies": { @@ -18732,15 +19933,74 @@ "node": ">= 0.6" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -18761,6 +20021,47 @@ "is-typedarray": "^1.0.0" } }, + "node_modules/typescript": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "dev": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-7.9.0.tgz", + "integrity": "sha512-7iTn9c10teHHCys5Ud/yaJntXZrjt3h2mrx3feJGBOLgQkF3TB1X89Xs3aVQ/GgdXRAXpk2bPTdpRwHP4YkUow==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "7.9.0", + "@typescript-eslint/parser": "7.9.0", + "@typescript-eslint/utils": "7.9.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/uglify-js": { "version": "3.17.4", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", @@ -19685,17 +20986,16 @@ "dev": true }, "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -19783,9 +21083,9 @@ } }, "node_modules/ws": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.1.tgz", - "integrity": "sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==", + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", + "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", "dev": true, "engines": { "node": ">=10.0.0" @@ -20183,9 +21483,9 @@ } }, "@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "dev": true }, "@babel/helper-remap-async-to-generator": { @@ -20633,12 +21933,12 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", - "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-arrow-functions": { @@ -21113,16 +22413,47 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + } + } + }, + "@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true + }, + "@eslint/compat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.0.1.tgz", + "integrity": "sha512-jIstH3YKraEe4HRQ77ux12ZLRxPzehmcdjRSRrSePiwf6s4G9DzdYl3L5CKSXWt4JyzXxy2p7MXFU7630Gz8PA==", + "dev": true, + "peer": true + }, "@eslint/eslintrc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.0.tgz", - "integrity": "sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.0.2.tgz", + "integrity": "sha512-wV19ZEGEMAC1eHgrS7UQPqsdEiCIbTKTasEfcXAigzoXICcqZSjBZEHlZwNVvKg6UBCjSlos84XiLqsRJnIcIg==", "dev": true, + "peer": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.19.0", + "espree": "^10.0.1", + "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -21131,26 +22462,18 @@ }, "dependencies": { "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true + "peer": true } } }, "@eslint/js": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.35.0.tgz", - "integrity": "sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true }, "@hapi/hoek": { @@ -21169,13 +22492,13 @@ } }, "@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" } }, @@ -21186,9 +22509,9 @@ "dev": true }, "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "dev": true }, "@istanbuljs/load-nyc-config": { @@ -21945,6 +23268,9 @@ } }, "@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", "version": "4.1.5", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", @@ -22021,9 +23347,9 @@ "dev": true }, "@types/babel__core": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", - "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz", + "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==", "dev": true, "requires": { "@babel/parser": "^7.20.7", @@ -22034,18 +23360,18 @@ } }, "@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "version": "7.6.5", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz", + "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==", "dev": true, "requires": { "@babel/types": "^7.0.0" } }, "@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz", + "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==", "dev": true, "requires": { "@babel/parser": "^7.1.0", @@ -22053,12 +23379,12 @@ } }, "@types/babel__traverse": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz", - "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz", + "integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==", "dev": true, "requires": { - "@babel/types": "^7.3.0" + "@babel/types": "^7.20.7" } }, "@types/eslint": { @@ -22091,9 +23417,9 @@ "peer": true }, "@types/graceful-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", - "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.7.tgz", + "integrity": "sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==", "dev": true, "requires": { "@types/node": "*" @@ -22187,9 +23513,9 @@ "dev": true }, "@types/prettier": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", - "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", "dev": true }, "@types/stack-utils": { @@ -22226,15 +23552,163 @@ "dev": true }, "@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.1.tgz", + "integrity": "sha512-CHzgNU3qYBnp/O4S3yv2tXPlvMTq0YWSTVg2/JYLqWZGHwwgJGAwd00poay/11asPq8wLFwHzubyInqHIFmmiw==", "dev": true, "optional": true, "requires": { "@types/node": "*" } }, + "@typescript-eslint/eslint-plugin": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.9.0.tgz", + "integrity": "sha512-6e+X0X3sFe/G/54aC3jt0txuMTURqLyekmEHViqyA2VnxhLMpvA6nqmcjIy+Cr9tLDHPssA74BP5Mx9HQIxBEA==", + "dev": true, + "peer": true, + "requires": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.9.0", + "@typescript-eslint/type-utils": "7.9.0", + "@typescript-eslint/utils": "7.9.0", + "@typescript-eslint/visitor-keys": "7.9.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + } + }, + "@typescript-eslint/parser": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.9.0.tgz", + "integrity": "sha512-qHMJfkL5qvgQB2aLvhUSXxbK7OLnDkwPzFalg458pxQgfxKDfT1ZDbHQM/I6mDIf/svlMkj21kzKuQ2ixJlatQ==", + "dev": true, + "peer": true, + "requires": { + "@typescript-eslint/scope-manager": "7.9.0", + "@typescript-eslint/types": "7.9.0", + "@typescript-eslint/typescript-estree": "7.9.0", + "@typescript-eslint/visitor-keys": "7.9.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.9.0.tgz", + "integrity": "sha512-ZwPK4DeCDxr3GJltRz5iZejPFAAr4Wk3+2WIBaj1L5PYK5RgxExu/Y68FFVclN0y6GGwH8q+KgKRCvaTmFBbgQ==", + "dev": true, + "peer": true, + "requires": { + "@typescript-eslint/types": "7.9.0", + "@typescript-eslint/visitor-keys": "7.9.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.9.0.tgz", + "integrity": "sha512-6Qy8dfut0PFrFRAZsGzuLoM4hre4gjzWJB6sUvdunCYZsYemTkzZNwF1rnGea326PHPT3zn5Lmg32M/xfJfByA==", + "dev": true, + "peer": true, + "requires": { + "@typescript-eslint/typescript-estree": "7.9.0", + "@typescript-eslint/utils": "7.9.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + } + }, + "@typescript-eslint/types": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.9.0.tgz", + "integrity": "sha512-oZQD9HEWQanl9UfsbGVcZ2cGaR0YT5476xfWE0oE5kQa2sNK2frxOlkeacLOTh9po4AlUT5rtkGyYM5kew0z5w==", + "dev": true, + "peer": true + }, + "@typescript-eslint/typescript-estree": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.9.0.tgz", + "integrity": "sha512-zBCMCkrb2YjpKV3LA0ZJubtKCDxLttxfdGmwZvTqqWevUPN0FZvSI26FalGFFUZU/9YQK/A4xcQF9o/VVaCKAg==", + "dev": true, + "peer": true, + "requires": { + "@typescript-eslint/types": "7.9.0", + "@typescript-eslint/visitor-keys": "7.9.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "peer": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "peer": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "peer": true + } + } + }, + "@typescript-eslint/utils": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.9.0.tgz", + "integrity": "sha512-5KVRQCzZajmT4Ep+NEgjXCvjuypVvYHUW7RHlXzNPuak2oWpVoD1jf5xCP0dPAuNIchjC7uQyvbdaSTFaLqSdA==", + "dev": true, + "peer": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.9.0", + "@typescript-eslint/types": "7.9.0", + "@typescript-eslint/typescript-estree": "7.9.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.9.0.tgz", + "integrity": "sha512-iESPx2TNLDNGQLyjKhUvIKprlP49XNEK+MvIf9nIO7ZZaZdbnfWKHnXAgufpxqfA0YryH8XToi4+CjBgVnFTSQ==", + "dev": true, + "peer": true, + "requires": { + "@typescript-eslint/types": "7.9.0", + "eslint-visitor-keys": "^3.4.3" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "peer": true + } + } + }, + "@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "@webassemblyjs/ast": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", @@ -22433,9 +23907,9 @@ } }, "acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true }, "acorn-globals": { @@ -22665,6 +24139,16 @@ "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", "dev": true }, + "array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "requires": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + } + }, "array-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", @@ -22678,16 +24162,17 @@ "dev": true }, "array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, "peer": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" } }, @@ -22755,32 +24240,63 @@ "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", "dev": true }, + "array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "peer": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + } + }, "array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, "peer": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" } }, "array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, "peer": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" } }, + "arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + } + }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -22874,10 +24390,13 @@ } }, "available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "requires": { + "possible-typed-array-names": "^1.0.0" + } }, "axios": { "version": "0.25.0", @@ -23069,9 +24588,9 @@ } }, "backstopjs": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/backstopjs/-/backstopjs-6.1.4.tgz", - "integrity": "sha512-EachXZeA2JQPgivnt2Qqdyt20Jix6G8e6IoO4AG3hHTB5YdJQnfazYx7Qs5hW0GYnx44M0nuTxSHQGbrPwpMBw==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/backstopjs/-/backstopjs-6.2.2.tgz", + "integrity": "sha512-Uy+y7FR+4jjhg+lxO2Sx9ag7D08HII9p5bfTpLD6/t2wkSk38pTTFbb7eeRvhuUNoPAgEk4o1urYrtPq4G9jyg==", "dev": true, "requires": { "@mirzazeyrek/node-resemble-js": "^1.2.1", @@ -23087,13 +24606,29 @@ "os": "^0.1.2", "p-map": "^4.0.0", "path": "^0.12.7", - "playwright": "^1.23.4", - "portfinder": "^1.0.28", - "puppeteer": "^15.4.0", + "playwright": "^1.32.1", + "portfinder": "^1.0.32", + "puppeteer": "^19.7.0", "super-simple-web-server": "^1.1.3", "temp": "^0.9.4" }, "dependencies": { + "@puppeteer/browsers": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-0.5.0.tgz", + "integrity": "sha512-Uw6oB7VvmPRLE4iKsjuOh8zgDabhNX67dzo8U/BB0f9527qx+4eeUs+korU98OhG5C4ubg7ufBgVi63XYwS6TQ==", + "dev": true, + "requires": { + "debug": "4.3.4", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "yargs": "17.7.1" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -23113,6 +24648,15 @@ "supports-color": "^7.1.0" } }, + "chromium-bidi": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.7.tgz", + "integrity": "sha512-6+mJuFXwTMU6I3vYLs6IL8A1DyQTPjCfIL971X0aMPVGRbGnNfl6i6Cl0NMbxi2bRYLGESt9T2ZIMRM5PAEcIQ==", + "dev": true, + "requires": { + "mitt": "3.0.0" + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -23128,12 +24672,69 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "cosmiconfig": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz", + "integrity": "sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==", + "dev": true, + "requires": { + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" + } + }, + "devtools-protocol": { + "version": "0.0.1107588", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1107588.tgz", + "integrity": "sha512-yIR+pG9x65Xko7bErCUSQaDLrO/P1p3JUzEk7JCU4DowPcGHkTGUGQapcfcLc4qj0UaALwZ+cr0riFgiqpixcg==", + "dev": true + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "mitt": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", + "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==", + "dev": true + }, + "puppeteer": { + "version": "19.11.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-19.11.1.tgz", + "integrity": "sha512-39olGaX2djYUdhaQQHDZ0T0GwEp+5f9UB9HmEP0qHfdQHIq0xGQZuAZ5TLnJIc/88SrPLpEflPC+xUqOTv3c5g==", + "dev": true, + "requires": { + "@puppeteer/browsers": "0.5.0", + "cosmiconfig": "8.1.3", + "https-proxy-agent": "5.0.1", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "puppeteer-core": "19.11.1" + } + }, + "puppeteer-core": { + "version": "19.11.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-19.11.1.tgz", + "integrity": "sha512-qcuC2Uf0Fwdj9wNtaTZ2OvYRraXpAK+puwwVW8ofOhOgLPZyz1c68tsorfIZyCUOpyBisjr+xByu7BMbEYMepA==", + "dev": true, + "requires": { + "@puppeteer/browsers": "0.5.0", + "chromium-bidi": "0.4.7", + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "devtools-protocol": "0.0.1107588", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "proxy-from-env": "1.1.0", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.13.0" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -23142,6 +24743,13 @@ "requires": { "has-flag": "^4.0.0" } + }, + "ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "dev": true, + "requires": {} } } }, @@ -23229,9 +24837,9 @@ }, "dependencies": { "readable-stream": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", - "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -23473,13 +25081,16 @@ } }, "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" } }, "callsites": { @@ -23642,9 +25253,9 @@ "dev": true }, "cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", "dev": true }, "class-utils": { @@ -23843,9 +25454,9 @@ "dev": true }, "collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", "dev": true }, "collection-map": { @@ -24274,6 +25885,39 @@ } } }, + "data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, "date-fns": { "version": "2.29.3", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", @@ -24344,9 +25988,9 @@ "dev": true }, "deepmerge": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", - "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true }, "default-compare": { @@ -24364,12 +26008,24 @@ "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==", "dev": true }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, "define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "requires": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } @@ -24415,9 +26071,9 @@ "dev": true }, "devtools-protocol": { - "version": "0.0.1019158", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1019158.tgz", - "integrity": "sha512-wvq+KscQ7/6spEV7czhnZc9RM/woz1AY+/Vpd8/h2HFMwJSdTliu7f/yr1A6vDdJfKICZsShqsYpEQbdhg8AFQ==", + "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 }, "diff": { @@ -24613,9 +26269,9 @@ } }, "enhanced-resolve": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", - "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz", + "integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==", "dev": true, "peer": true, "requires": { @@ -24657,46 +26313,74 @@ } }, "es-abstract": { - "version": "1.21.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", - "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", - "get-symbol-description": "^1.0.0", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.4", - "is-array-buffer": "^3.0.1", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" + "which-typed-array": "^1.1.15" + } + }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.4" } }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true + }, "es-module-lexer": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", @@ -24704,25 +26388,34 @@ "dev": true, "peer": true }, + "es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "requires": { + "es-errors": "^1.3.0" + } + }, "es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, "requires": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" } }, "es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, "peer": true, "requires": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "es-to-primitive": { @@ -24737,6 +26430,9 @@ } }, "es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", "version": "0.10.64", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", @@ -24745,6 +26441,7 @@ "es6-iterator": "^2.0.3", "es6-symbol": "^3.1.3", "esniff": "^2.0.1", + "esniff": "^2.0.1", "next-tick": "^1.1.0" } }, @@ -24800,15 +26497,14 @@ "dev": true }, "escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dev": true, "requires": { "esprima": "^4.0.1", "estraverse": "^5.2.0", "esutils": "^2.0.2", - "optionator": "^0.8.1", "source-map": "~0.6.1" }, "dependencies": { @@ -24817,69 +26513,32 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } } } }, "eslint": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.35.0.tgz", - "integrity": "sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, "requires": { - "@eslint/eslintrc": "^2.0.0", - "@eslint/js": "8.35.0", - "@humanwhocodes/config-array": "^0.11.8", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -24887,26 +26546,39 @@ "find-up": "^5.0.0", "glob-parent": "^6.0.2", "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", + "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "dependencies": { + "@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -24948,9 +26620,9 @@ "dev": true }, "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -24958,11 +26630,22 @@ } }, "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true }, + "espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "requires": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + } + }, "estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", @@ -25001,6 +26684,25 @@ } } }, + "eslint-compat-utils": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.0.tgz", + "integrity": "sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==", + "dev": true, + "peer": true, + "requires": { + "semver": "^7.5.4" + }, + "dependencies": { + "semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "peer": true + } + } + }, "eslint-config-airbnb-base": { "version": "15.0.0", "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", @@ -25013,6 +26715,13 @@ "semver": "^6.3.0" } }, + "eslint-config-postcss": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-postcss/-/eslint-config-postcss-4.0.0.tgz", + "integrity": "sha512-vOvKpJ6xnuveq6wCDzyg/M6ZguqpxILdLmi6jLuJy92aN0bwygkGkUGc/m3TP0kvGo9BofbrhtX/DFPZ9kTp4Q==", + "dev": true, + "requires": {} + }, "eslint-config-prettier": { "version": "8.6.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz", @@ -25020,16 +26729,24 @@ "dev": true, "requires": {} }, + "eslint-config-standard": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", + "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", + "dev": true, + "peer": true, + "requires": {} + }, "eslint-import-resolver-node": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", - "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, "peer": true, "requires": { "debug": "^3.2.7", - "is-core-module": "^2.11.0", - "resolve": "^1.22.1" + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" }, "dependencies": { "debug": { @@ -25045,9 +26762,9 @@ } }, "eslint-module-utils": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", - "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", "dev": true, "peer": true, "requires": { @@ -25066,28 +26783,42 @@ } } }, + "eslint-plugin-es-x": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.6.0.tgz", + "integrity": "sha512-I0AmeNgevgaTR7y2lrVCJmGYF0rjoznpDvqV/kIkZSZbZ8Rw3eu4cGlvBBULScfkSOCzqKbff5LR4CNrV7mZHA==", + "dev": true, + "peer": true, + "requires": { + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.6.0", + "eslint-compat-utils": "^0.5.0" + } + }, "eslint-plugin-import": { - "version": "2.27.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", - "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", "dev": true, "peer": true, "requires": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", - "eslint-module-utils": "^2.7.4", - "has": "^1.0.3", - "is-core-module": "^2.11.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.values": "^1.1.6", - "resolve": "^1.22.1", - "semver": "^6.3.0", - "tsconfig-paths": "^3.14.1" + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" }, "dependencies": { "debug": { @@ -25112,6 +26843,103 @@ } } }, + "eslint-plugin-n": { + "version": "17.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.7.0.tgz", + "integrity": "sha512-4Jg4ZKVE4VjHig2caBqPHYNW5na84RVufUuipFLJbgM/G57O6FdpUKJbHakCDJb/yjQuyqVzYWRtU3HNYaZUwg==", + "dev": true, + "peer": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "enhanced-resolve": "^5.15.0", + "eslint-plugin-es-x": "^7.5.0", + "get-tsconfig": "^4.7.0", + "globals": "^15.0.0", + "ignore": "^5.2.4", + "minimatch": "^9.0.0", + "semver": "^7.5.3" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "peer": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "globals": { + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.2.0.tgz", + "integrity": "sha512-FQ5YwCHZM3nCmtb5FzEWwdUc9K5d3V/w9mzcz8iGD1gC/aOTHc6PouYu0kkKipNJqHAT7m51sqzQjEjIP+cK0A==", + "dev": true, + "peer": true + }, + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "peer": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "peer": true + } + } + }, + "eslint-plugin-perfectionist": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-2.10.0.tgz", + "integrity": "sha512-P+tdrkHeMWBc55+DZsoDOAftV1WCsEoHaKm6JC7zajFus/syfT4vUPBFb3atGFSuyaVnGQGHlcKpP9X3Q0gH/w==", + "dev": true, + "peer": true, + "requires": { + "@typescript-eslint/utils": "^6.13.0 || ^7.0.0", + "minimatch": "^9.0.3", + "natural-compare-lite": "^1.4.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "peer": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "peer": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "eslint-plugin-prefer-let": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prefer-let/-/eslint-plugin-prefer-let-3.0.1.tgz", + "integrity": "sha512-vbznkkBSXB63d4o1o0NIm5C2ey3V5wKr/25dAvPdydQXdowAcnr69cbLgxd2YAG81IV5eddCO55Lp6gL7wSE4w==", + "dev": true, + "peer": true, + "requires": { + "requireindex": "~1.2.0" + } + }, "eslint-plugin-prettier": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", @@ -25121,6 +26949,14 @@ "prettier-linter-helpers": "^1.0.0" } }, + "eslint-plugin-promise": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", + "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", + "dev": true, + "peer": true, + "requires": {} + }, "eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -25131,15 +26967,6 @@ "estraverse": "^4.1.1" } }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - } - }, "eslint-visitor-keys": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", @@ -25167,21 +26994,23 @@ } }, "espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.0.1.tgz", + "integrity": "sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==", "dev": true, + "peer": true, "requires": { - "acorn": "^8.8.0", + "acorn": "^8.11.3", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^4.0.0" }, "dependencies": { "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "dev": true, + "peer": true } } }, @@ -25253,6 +27082,16 @@ "es5-ext": "~0.10.14" } }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, "event-stream": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", @@ -26093,6 +27932,9 @@ } }, "follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "version": "1.15.6", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", @@ -26207,21 +28049,21 @@ "optional": true }, "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true }, "function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" } }, "functions-have-names": { @@ -26243,14 +28085,16 @@ "dev": true }, "get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "get-package-type": { @@ -26275,13 +28119,24 @@ } }, "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + } + }, + "get-tsconfig": { + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz", + "integrity": "sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==", + "dev": true, + "peer": true, + "requires": { + "resolve-pkg-maps": "^1.0.0" } }, "get-value": { @@ -26569,10 +28424,10 @@ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, "gulp": { @@ -26808,6 +28663,9 @@ } }, "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", @@ -27161,15 +29019,6 @@ "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "dev": true }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, "has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -27192,18 +29041,18 @@ } }, "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "requires": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" } }, "has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true }, "has-symbols": { @@ -27213,12 +29062,12 @@ "dev": true }, "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "requires": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" } }, "has-value": { @@ -27259,6 +29108,15 @@ } } }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "requires": { + "function-bind": "^1.1.2" + } + }, "homedir-polyfill": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", @@ -27490,9 +29348,9 @@ "dev": true }, "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true }, "immutable": { @@ -27562,13 +29420,13 @@ "dev": true }, "internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, "requires": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "hasown": "^2.0.0", "side-channel": "^1.0.4" } }, @@ -27634,14 +29492,13 @@ } }, "is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, "requires": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" } }, "is-arrayish": { @@ -27691,12 +29548,12 @@ "dev": true }, "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "requires": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "is-data-descriptor": { @@ -27716,6 +29573,15 @@ } } }, + "is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "requires": { + "is-typed-array": "^1.1.13" + } + }, "is-date-object": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", @@ -27796,9 +29662,9 @@ "dev": true }, "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true }, "is-number": { @@ -27886,12 +29752,12 @@ } }, "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, "requires": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" } }, "is-stream": { @@ -27919,16 +29785,12 @@ } }, "is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "which-typed-array": "^1.1.14" } }, "is-typedarray": { @@ -28023,13 +29885,13 @@ } }, "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "requires": { "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", + "make-dir": "^4.0.0", "supports-color": "^7.1.0" }, "dependencies": { @@ -28039,6 +29901,33 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "requires": { + "semver": "^7.5.3" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -28047,6 +29936,12 @@ "requires": { "has-flag": "^4.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, @@ -28062,9 +29957,9 @@ } }, "istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", "dev": true, "requires": { "html-escaper": "^2.0.0", @@ -28336,6 +30231,20 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "jest-environment-node": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", + "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", + "dev": true, + "requires": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" + } + }, "micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -28442,16 +30351,23 @@ } }, "wait-on": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-7.2.0.tgz", + "integrity": "sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==", "version": "7.2.0", "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-7.2.0.tgz", "integrity": "sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==", "dev": true, "requires": { + "axios": "^1.6.1", + "joi": "^17.11.0", "axios": "^1.6.1", "joi": "^17.11.0", "lodash": "^4.17.21", "minimist": "^1.2.8", "rxjs": "^7.8.1" + "minimist": "^1.2.8", + "rxjs": "^7.8.1" } } } @@ -28609,74 +30525,61 @@ } }, "jest-environment-node": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", - "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.4.tgz", + "integrity": "sha512-i7SbpH2dEIFGNmxGCpSc2w9cA4qVD+wfvg2ZnfQ7XVrKL0NA5uDVBIiGH8SR4F0dKEv/0qI5r+aDomDf04DpEQ==", "dev": true, "requires": { - "@jest/environment": "^28.1.3", - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", + "@jest/environment": "^29.6.4", + "@jest/fake-timers": "^29.6.4", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" - } - }, - "jest-environment-puppeteer": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/jest-environment-puppeteer/-/jest-environment-puppeteer-7.0.1.tgz", - "integrity": "sha512-ZfNK2jfY4Ru7WQW9aq/WStkyf6I74Y141j1FTGiZtKfj6xh058N+vtWnt7o1yw3SOumrIAL9lMdKWZxWZRVHuA==", - "dev": true, - "requires": { - "chalk": "^4.1.2", - "cwd": "^0.10.0", - "jest-dev-server": "^7.0.1", - "jest-environment-node": "^29.4.1", - "merge-deep": "^3.0.3" + "jest-mock": "^29.6.3", + "jest-util": "^29.6.3" }, "dependencies": { "@jest/environment": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.4.3.tgz", - "integrity": "sha512-dq5S6408IxIa+lr54zeqce+QgI+CJT4nmmA+1yzFgtcsGK8c/EyiUb9XQOgz3BMKrRDfKseeOaxj2eO8LlD3lA==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.4.tgz", + "integrity": "sha512-sQ0SULEjA1XUTHmkBRl7A1dyITM9yb1yb3ZNKPX3KlTd6IG7mWUe3e2yfExtC2Zz1Q+mMckOLHmL/qLiuQJrBQ==", "dev": true, "requires": { - "@jest/fake-timers": "^29.4.3", - "@jest/types": "^29.4.3", + "@jest/fake-timers": "^29.6.4", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^29.4.3" + "jest-mock": "^29.6.3" } }, "@jest/fake-timers": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.4.3.tgz", - "integrity": "sha512-4Hote2MGcCTWSD2gwl0dwbCpBRHhE6olYEuTj8FMowdg3oQWNKr2YuxenPQYZ7+PfqPY1k98wKDU4Z+Hvd4Tiw==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.4.tgz", + "integrity": "sha512-6UkCwzoBK60edXIIWb0/KWkuj7R7Qq91vVInOe3De6DSpaEiqjKcJw4F7XUet24Wupahj9J6PlR09JqJ5ySDHw==", "dev": true, "requires": { - "@jest/types": "^29.4.3", + "@jest/types": "^29.6.3", "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^29.4.3", - "jest-mock": "^29.4.3", - "jest-util": "^29.4.3" + "jest-message-util": "^29.6.3", + "jest-mock": "^29.6.3", + "jest-util": "^29.6.3" } }, "@jest/schemas": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", - "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, "requires": { - "@sinclair/typebox": "^0.25.16" + "@sinclair/typebox": "^0.27.8" } }, "@jest/types": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.4.3.tgz", - "integrity": "sha512-bPYfw8V65v17m2Od1cv44FH+SiKW7w2Xu7trhcdTLUmSv85rfKsP+qXSjO4KGJr4dtPSzl/gvslZBXctf1qGEA==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, "requires": { - "@jest/schemas": "^29.4.3", + "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", @@ -28685,27 +30588,27 @@ } }, "@sinclair/typebox": { - "version": "0.25.24", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", - "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "dev": true }, "@sinonjs/commons": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", - "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", "dev": true, "requires": { "type-detect": "4.0.8" } }, "@sinonjs/fake-timers": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz", - "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, "requires": { - "@sinonjs/commons": "^2.0.0" + "@sinonjs/commons": "^3.0.0" } }, "ansi-styles": { @@ -28772,55 +30675,41 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, - "jest-environment-node": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.4.3.tgz", - "integrity": "sha512-gAiEnSKF104fsGDXNkwk49jD/0N0Bqu2K9+aMQXA6avzsA9H3Fiv1PW2D+gzbOSR705bWd2wJZRFEFpV0tXISg==", - "dev": true, - "requires": { - "@jest/environment": "^29.4.3", - "@jest/fake-timers": "^29.4.3", - "@jest/types": "^29.4.3", - "@types/node": "*", - "jest-mock": "^29.4.3", - "jest-util": "^29.4.3" - } - }, "jest-message-util": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.4.3.tgz", - "integrity": "sha512-1Y8Zd4ZCN7o/QnWdMmT76If8LuDv23Z1DRovBj/vcSFNlGCJGoO8D1nJDw1AdyAGUk0myDLFGN5RbNeJyCRGCw==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.3.tgz", + "integrity": "sha512-FtzaEEHzjDpQp51HX4UMkPZjy46ati4T5pEMyM6Ik48ztu4T9LQplZ6OsimHx7EuM9dfEh5HJa6D3trEftu3dA==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.4.3", + "@jest/types": "^29.6.3", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.4.3", + "pretty-format": "^29.6.3", "slash": "^3.0.0", "stack-utils": "^2.0.3" } }, "jest-mock": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.4.3.tgz", - "integrity": "sha512-LjFgMg+xed9BdkPMyIJh+r3KeHt1klXPJYBULXVVAkbTaaKjPX1o1uVCAZADMEp/kOxGTwy/Ot8XbvgItOrHEg==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.3.tgz", + "integrity": "sha512-Z7Gs/mOyTSR4yPsaZ72a/MtuK6RnC3JYqWONe48oLaoEcYwEDxqvbXz85G4SJrm2Z5Ar9zp6MiHF4AlFlRM4Pg==", "dev": true, "requires": { - "@jest/types": "^29.4.3", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-util": "^29.4.3" + "jest-util": "^29.6.3" } }, "jest-util": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.4.3.tgz", - "integrity": "sha512-ToSGORAz4SSSoqxDSylWX8JzkOQR7zoBtNRsA7e+1WUX5F8jrOwaNpuh1YfJHJKDHXLHmObv5eOjejUd+/Ws+Q==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.3.tgz", + "integrity": "sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==", "dev": true, "requires": { - "@jest/types": "^29.4.3", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -28839,12 +30728,12 @@ } }, "pretty-format": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz", - "integrity": "sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz", + "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==", "dev": true, "requires": { - "@jest/schemas": "^29.4.3", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, @@ -28877,6 +30766,70 @@ } } }, + "jest-environment-puppeteer": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/jest-environment-puppeteer/-/jest-environment-puppeteer-7.0.1.tgz", + "integrity": "sha512-ZfNK2jfY4Ru7WQW9aq/WStkyf6I74Y141j1FTGiZtKfj6xh058N+vtWnt7o1yw3SOumrIAL9lMdKWZxWZRVHuA==", + "dev": true, + "requires": { + "chalk": "^4.1.2", + "cwd": "^0.10.0", + "jest-dev-server": "^7.0.1", + "jest-environment-node": "^29.4.1", + "merge-deep": "^3.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "jest-get-type": { "version": "28.0.2", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", @@ -29312,6 +31265,20 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "jest-environment-node": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", + "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", + "dev": true, + "requires": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -29729,6 +31696,9 @@ "integrity": "sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg==", "dev": true, "requires": { + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", "@hapi/hoek": "^9.3.0", "@hapi/topo": "^5.1.0", "@sideway/address": "^4.1.5", @@ -29742,12 +31712,6 @@ "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==", "dev": true }, - "js-sdsl": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", - "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", - "dev": true - }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -30729,6 +32693,13 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true, + "peer": true + }, "negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -30749,9 +32720,9 @@ "dev": true }, "node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, "requires": { "whatwg-url": "^5.0.0" @@ -30973,9 +32944,9 @@ "dev": true }, "object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true }, "object-keys": { @@ -30994,13 +32965,13 @@ } }, "object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" } @@ -31039,6 +33010,31 @@ "es-abstract": "^1.20.4" } }, + "object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "peer": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + } + }, + "object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "peer": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + } + }, "object.map": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", @@ -31091,15 +33087,15 @@ } }, "object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, "peer": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, "on-finished": { @@ -31139,9 +33135,9 @@ } }, "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "requires": { "deep-is": "^0.1.3", @@ -31149,7 +33145,7 @@ "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "word-wrap": "^1.2.5" } }, "ordered-read-streams": { @@ -31407,9 +33403,9 @@ } }, "pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", "dev": true }, "pixelmatch": { @@ -31478,18 +33474,19 @@ } }, "playwright": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.31.1.tgz", - "integrity": "sha512-zKJabsIA2rvOwJ12lGTqWv4HVJzlfw2JtUvO4hAr7J8UXQZ1qEPpX20E1vcz/9fotnTkwgqp3CVdIBwptBN3Fg==", + "version": "1.38.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.38.1.tgz", + "integrity": "sha512-oRMSJmZrOu1FP5iu3UrCx8JEFRIMxLDM0c/3o4bpzU5Tz97BypefWf7TuTNPWeCe279TPal5RtPPZ+9lW/Qkow==", "dev": true, "requires": { - "playwright-core": "1.31.1" + "fsevents": "2.3.2", + "playwright-core": "1.38.1" } }, "playwright-core": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.31.1.tgz", - "integrity": "sha512-JTyX4kV3/LXsvpHkLzL2I36aCdml4zeE35x+G5aPc4bkLsiRiQshU5lWeVpHFAuC8xAcbI6FDcw/8z3q2xtJSQ==", + "version": "1.38.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.38.1.tgz", + "integrity": "sha512-tQqNFUKa3OfMf4b2jQ7aGLB8o9bS3bOY0yMEtldtC2+spf8QXG9zvXLTXUeRsoNuxEYMgLYR+NXfAa1rjKRcrg==", "dev": true }, "plugin-error": { @@ -31587,6 +33584,12 @@ "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", "dev": true }, + "possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true + }, "postcss": { "version": "7.0.39", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", @@ -31848,29 +33851,28 @@ "dev": true }, "puppeteer": { - "version": "15.5.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-15.5.0.tgz", - "integrity": "sha512-+vZPU8iBSdCx1Kn5hHas80fyo0TiVyMeqLGv/1dygX2HKhAZjO9YThadbRTCoTYq0yWw+w/CysldPsEekDtjDQ==", + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-18.1.0.tgz", + "integrity": "sha512-2RCVWIF+pZOSfksWlQU0Hh6CeUT5NYt66CDDgRyuReu6EvBAk1y+/Q7DuzYNvGChSecGMb7QPN0hkxAa3guAog==", "dev": true, "requires": { "cross-fetch": "3.1.5", "debug": "4.3.4", - "devtools-protocol": "0.0.1019158", + "devtools-protocol": "0.0.1045489", "extract-zip": "2.0.1", "https-proxy-agent": "5.0.1", - "pkg-dir": "4.2.0", "progress": "2.0.3", "proxy-from-env": "1.1.0", "rimraf": "3.0.2", "tar-fs": "2.1.1", "unbzip2-stream": "1.4.3", - "ws": "8.8.0" + "ws": "8.9.0" }, "dependencies": { "ws": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", - "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz", + "integrity": "sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==", "dev": true, "requires": {} } @@ -32001,6 +34003,9 @@ } }, "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", @@ -32192,22 +34197,17 @@ } }, "regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" } }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, "regexpu-core": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.1.tgz", @@ -32350,6 +34350,13 @@ "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", "dev": true }, + "requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "dev": true, + "peer": true + }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -32357,12 +34364,12 @@ "dev": true }, "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "requires": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -32420,6 +34427,13 @@ "value-or-function": "^3.0.0" } }, + "resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "peer": true + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -32463,6 +34477,9 @@ } }, "rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", @@ -32471,6 +34488,26 @@ "tslib": "^2.1.0" } }, + "safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -32493,13 +34530,13 @@ } }, "safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" } }, @@ -32541,6 +34578,9 @@ } }, "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", @@ -32757,6 +34797,32 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } + }, + "set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + } + }, "set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", @@ -33430,26 +35496,38 @@ "strip-ansi": "^6.0.1" } }, + "string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + } + }, "string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, "string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, "strip-ansi": { @@ -33882,9 +35960,9 @@ }, "dependencies": { "readable-stream": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", - "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -34251,10 +36329,18 @@ "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", "dev": true }, + "ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "peer": true, + "requires": {} + }, "tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, "peer": true, "requires": { @@ -34326,15 +36412,56 @@ "mime-types": "~2.1.24" } }, + "typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + } + }, "typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dev": true, "requires": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" } }, "typedarray": { @@ -34352,6 +36479,25 @@ "is-typedarray": "^1.0.0" } }, + "typescript": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "dev": true, + "peer": true + }, + "typescript-eslint": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-7.9.0.tgz", + "integrity": "sha512-7iTn9c10teHHCys5Ud/yaJntXZrjt3h2mrx3feJGBOLgQkF3TB1X89Xs3aVQ/GgdXRAXpk2bPTdpRwHP4YkUow==", + "dev": true, + "peer": true, + "requires": { + "@typescript-eslint/eslint-plugin": "7.9.0", + "@typescript-eslint/parser": "7.9.0", + "@typescript-eslint/utils": "7.9.0" + } + }, "uglify-js": { "version": "3.17.4", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", @@ -35068,17 +37214,16 @@ "dev": true }, "which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dev": true, "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "has-tostringtag": "^1.0.2" } }, "word-wrap": { @@ -35141,9 +37286,9 @@ } }, "ws": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.1.tgz", - "integrity": "sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==", + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", + "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", "dev": true, "requires": {} }, diff --git a/package.json b/package.json index d932f931a..2408b63a6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nhsuk-frontend", - "version": "7.0.0", + "version": "8.1.1", "description": "NHS.UK frontend contains the code you need to start building user interfaces for NHS websites and services.", "scripts": { "prepare": "gulp bundle", @@ -36,8 +36,10 @@ "concurrently": "^7.2.2", "eslint": "^8.19.0", "eslint-config-airbnb-base": "^15.0.0", + "eslint-config-postcss": "^4.0.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^4.2.1", + "follow-redirects": "^1.15.6", "gulp": "^4.0.2", "gulp-clean": "^0.4.0", "gulp-clean-css": "^4.3.0", @@ -55,6 +57,7 @@ "minimist": "^1.2.6", "nunjucks": "^3.2.3", "prettier": "^2.7.1", + "puppeteer": "^18.1.0", "sass": "^1.53.0", "start-server-and-test": "^1.14.0", "stylelint": "^13.13.1", diff --git a/packages/components/breadcrumb/README.md b/packages/components/breadcrumb/README.md index f49374f12..1189b2af1 100644 --- a/packages/components/breadcrumb/README.md +++ b/packages/components/breadcrumb/README.md @@ -36,16 +36,16 @@ Find out more about the breadcrumb component and when to use it in the [NHS digi {{ breadcrumb({ items: [ { - href: "/level-one", + href: "#", text: "Level one", attributes: {lang: "en"} }, { - href: "/level-one/level-two", + href: "#", text: "Level two" }, { - href: "/level-one/level-two/level-three", + href: "#", text: "Level three" } ], diff --git a/packages/components/breadcrumb/_breadcrumb.scss b/packages/components/breadcrumb/_breadcrumb.scss index 182e8a18f..f9ab0ce4c 100644 --- a/packages/components/breadcrumb/_breadcrumb.scss +++ b/packages/components/breadcrumb/_breadcrumb.scss @@ -18,26 +18,6 @@ padding-bottom: nhsuk-spacing(3); padding-top: 20px; /* [2] */ - .nhsuk-icon__chevron-right { - fill: $color_nhsuk-grey-3; - height: 18px; - position: relative; - top: 5px; - width: 18px; - - @include mq($from: large-desktop) { - margin: 0 3px 0 5px; - } - } - - .nhsuk-icon__chevron-left { - float: left; - height: 24px; - left: -8px; - position: relative; - width: 24px; - } - + .nhsuk-width-container .nhsuk-main-wrapper { padding-top: 0; } diff --git a/packages/components/button/button.js b/packages/components/button/button.js index 0653d27c0..3b2a87755 100644 --- a/packages/components/button/button.js +++ b/packages/components/button/button.js @@ -62,8 +62,8 @@ class Button { } } -export default () => { - const buttons = document.querySelectorAll('[data-module="nhsuk-button"]') +export default ({ scope = document } = {}) => { + const buttons = scope.querySelectorAll('[data-module="nhsuk-button"]') buttons.forEach((el) => { new Button(el).init() }) diff --git a/packages/components/card/README.md b/packages/components/card/README.md index c50a3362f..c7270b527 100644 --- a/packages/components/card/README.md +++ b/packages/components/card/README.md @@ -33,21 +33,20 @@ Find out more about the card component and when to use it in the [NHS digital se }) }} ``` -### Clickable card +### Primary card (with chevron) -[Preview the clickable card component](https://nhsuk.github.io/nhsuk-frontend/components/card/clickable-card.html) +[Preview the primary card component](https://nhsuk.github.io/nhsuk-frontend/components/card/card-primary.html) #### HTML markup ``` -
    -
    +
    +

    - - Introduction to care and support - + Introduction to care and support

    A quick guide for people who have care and support needs and their carers

    +
    ``` @@ -59,6 +58,7 @@ Find out more about the card component and when to use it in the [NHS digital se {{ card({ "href": "#", + "primary": "true", "clickable": "true", "heading": "Introduction to care and support", "headingClasses": "nhsuk-heading-m", @@ -66,6 +66,38 @@ Find out more about the card component and when to use it in the [NHS digital se }) }} ``` +### Secondary card + +[Preview the secondary card component](https://nhsuk.github.io/nhsuk-frontend/components/card/card-secondary.html) + +#### HTML markup + +``` +
    +
    +

    + Urgent and emergency care services +

    +

    Services the NHS provides if you need urgent or emergency medical help

    +
    +
    +``` + +#### Nunjucks macro + +``` +{% from 'components/card/macro.njk' import card %} + + {{ card({ + "href": "#", + "clickable": "true", + "secondary": "true", + "heading": "Urgent and emergency care services", + "headingClasses": "nhsuk-heading-m", + "description": "Services the NHS provides if you need urgent or emergency medical help" + }) }} +``` + ### Card with an image [Preview the card with an image component](https://nhsuk.github.io/nhsuk-frontend/components/card/card-with-image.html) @@ -535,6 +567,8 @@ The card Nunjucks macro takes the following arguments: | **href** | string | No | The value of the card href attribute | | **clickable** | boolean | No | If set to true, then the class `nhsuk-card--clickable` will be applied. | | **feature** | boolean | No | If set to true, then the class `nhsuk-card__heading--feature` and `nhsuk-card__content--feature` will be applied. | +| **primary** | boolean | No | If set to true, then the class `nhsuk-card__content--primary` will be applied. | +| **secondary** | boolean | No | If set to true, then the class `nhsuk-card--secondary` and `nhsuk-card__content--secondary` will be applied. | | **type** | string | No | Care card component variant type - non-urgent, urgent or emergency | | **imgURL** | string | No | The URL of the image in the card | | **imgALT** | string | No | The alternative text of the image in the card | diff --git a/packages/components/card/card.scss b/packages/components/card/card.scss index a56958e90..aba21b2af 100644 --- a/packages/components/card/card.scss +++ b/packages/components/card/card.scss @@ -272,3 +272,41 @@ $card-border-hover-color: $color_nhsuk-grey-3; } } } + +/* Card primary + ========================================================================== */ + +.nhsuk-card__content--primary { + padding-right: 75px; + + @include mq($from: desktop) { + height: 100%; + } + + .nhsuk-icon { + display: block; + fill: $color_nhsuk-blue; + margin-top: -(nhsuk-spacing(2)); + pointer-events: none; + position: absolute; + right: nhsuk-spacing(4); + top: 50%; + } +} + +/* Card secondary + ========================================================================== */ + +.nhsuk-card--secondary { + background: transparent; + border-bottom: $card-border-bottom-width solid $card-border-color; + border-left: 0; + border-right: 0; + border-top: 0; +} + +.nhsuk-card__content--secondary { + padding-left: 0; + padding-right: 0; + padding-top: 0; +} diff --git a/packages/components/card/template.njk b/packages/components/card/template.njk index 34d225259..76738678e 100644 --- a/packages/components/card/template.njk +++ b/packages/components/card/template.njk @@ -2,8 +2,10 @@
    {%- if params.imgURL %} @@ -11,6 +13,8 @@ {%- endif %}
    {%- if params.headingHtml %} {{ params.headingHtml | safe }} @@ -46,5 +50,8 @@

    {{ params.description | safe }}

    {%- else %} {%- endif %} + {% if params.primary %} + + {% endif %}
    diff --git a/packages/components/character-count/character-count.js b/packages/components/character-count/character-count.js index 6a4f19552..8a96b2344 100644 --- a/packages/components/character-count/character-count.js +++ b/packages/components/character-count/character-count.js @@ -248,8 +248,8 @@ CharacterCount.prototype.defaults = { wordCountAttribute: 'data-maxwords' } -export default () => { - const characterCounts = document.querySelectorAll('[data-module="nhsuk-character-count"]') +export default ({ scope = document } = {}) => { + const characterCounts = scope.querySelectorAll('[data-module="nhsuk-character-count"]') characterCounts.forEach((el) => { new CharacterCount(el).init() }) diff --git a/packages/components/checkboxes/checkboxes.js b/packages/components/checkboxes/checkboxes.js index 39650acf5..6b3ecc197 100644 --- a/packages/components/checkboxes/checkboxes.js +++ b/packages/components/checkboxes/checkboxes.js @@ -54,9 +54,9 @@ const unCheckExclusiveInputs = function unCheckExclusiveInputs(input) { syncAllConditionalReveals(input) } -export default () => { +export default ({ scope = document } = {}) => { // Checkbox input DOMElements inside a conditional form group - const checkboxInputs = document.querySelectorAll('.nhsuk-checkboxes .nhsuk-checkboxes__input') + const checkboxInputs = scope.querySelectorAll('.nhsuk-checkboxes .nhsuk-checkboxes__input') /** * Toggle classes and attributes diff --git a/packages/components/contents-list/README.md b/packages/components/contents-list/README.md index b8bc0e86f..79b637eab 100644 --- a/packages/components/contents-list/README.md +++ b/packages/components/contents-list/README.md @@ -41,26 +41,26 @@ Find out more about the contents list component and when to use it in the [NHS d {{ contentsList({ items: [ { - href: "https://www.nhs.uk/conditions/age-related-macular-degeneration-amd/", + href: "#", text: "What is AMD?", current: "true" }, { - href: "https://www.nhs.uk/conditions/age-related-macular-degeneration-amd/symptoms/", + href: "#", text: "Symptoms" }, { - href: "https://www.nhs.uk/conditions/age-related-macular-degeneration-amd/getting-diagnosed/", + href: "#", text: "Getting diagnosed" } , { - href: "https://www.nhs.uk/conditions/age-related-macular-degeneration-amd/treatment/", + href: "#", text: "Treatments" } , { - href: "https://www.nhs.uk/conditions/age-related-macular-degeneration-amd/living-with-amd/", + href: "#", text: "Living with AMD" } ] diff --git a/packages/components/details/details.js b/packages/components/details/details.js index 09c5fe196..70cd993e5 100644 --- a/packages/components/details/details.js +++ b/packages/components/details/details.js @@ -5,7 +5,7 @@ import { toggleAttribute } from '../../common' * Test at http://0.0.0.0:3000/components/details/index.html */ -export default () => { +export default ({ scope = document } = {}) => { // Does the browser support details component const nativeSupport = typeof document.createElement('details').open === 'boolean' if (nativeSupport) { @@ -13,7 +13,7 @@ export default () => { } // Nodelist of all details elements - const allDetails = document.querySelectorAll('details') + const allDetails = scope.querySelectorAll('details') /** * Adds all necessary functionality to a details element @@ -28,11 +28,11 @@ export default () => { if (!element.id) element.setAttribute('id', `nhsuk-details${index}`) // Set content element and give it an ID if it doesn't already have one - const content = document.querySelector(`#${element.id} .nhsuk-details__text`) + const content = scope.querySelector(`#${element.id} .nhsuk-details__text`) if (!content.id) content.setAttribute('id', `nhsuk-details__text${index}`) // Set summary element - const summary = document.querySelector(`#${element.id} .nhsuk-details__summary`) + const summary = scope.querySelector(`#${element.id} .nhsuk-details__summary`) // Set initial summary aria attributes summary.setAttribute('role', 'button') diff --git a/packages/components/error-summary/error-summary.js b/packages/components/error-summary/error-summary.js index 35a584152..2c797c26a 100644 --- a/packages/components/error-summary/error-summary.js +++ b/packages/components/error-summary/error-summary.js @@ -101,9 +101,9 @@ function handleClick(event) { } } -export default ({ focusOnPageLoad = true } = {}) => { +export default ({ focusOnPageLoad = true, scope = document } = {}) => { // Error summary component - const errorSummary = document.querySelector('.nhsuk-error-summary') + const errorSummary = scope.querySelector('.nhsuk-error-summary') if (errorSummary) { // Focus error summary component if it exists diff --git a/packages/components/footer/README.md b/packages/components/footer/README.md index 2def8048c..34e016729 100644 --- a/packages/components/footer/README.md +++ b/packages/components/footer/README.md @@ -4,27 +4,43 @@ Find out more about the footer component and when to use it in the [NHS digital service manual](https://service-manual.nhs.uk/design-system/components/footer). +Your copyright statement must reflect the ownership of your website or service. The NHS website is (c) Crown copyright but the NHS generally does not have Crown status. + ## Quick start examples -### Footer +### Footer (default) -[Preview the footer component](https://nhsuk.github.io/nhsuk-frontend/components/footer/index.html) +[Preview the footer (default) component](https://nhsuk.github.io/nhsuk-frontend/components/footer/index.html) #### HTML markup ```html @@ -61,17 +77,216 @@ Find out more about the footer component and when to use it in the [NHS digital })}} ``` +### Footer (columns) + +[Preview the Footer (columns) component](https://nhsuk.github.io/nhsuk-frontend/components/footer/footer-in-columns.html) + +#### HTML markup + +```html + +``` + +#### Nunjucks macro + +``` +{% from 'components/footer/macro.njk' import footer %} + +{{ footer({ + "links": [ + { + "URL": "#", + "label": "Home" + }, + { + "URL": "#", + "label": "Health A to Z" + }, + { + "URL": "#", + "label": "Live Well" + }, + { + "URL": "#", + "label": "Mental health" + }, + { + "URL": "#", + "label": "Care and support" + }, + { + "URL": "#", + "label": "Accessibility statement" + }, + { + "URL": "#", + "label": "Pregnancy" + }, + { + "URL": "#", + "label": "NHS services" + }, + { + "URL": "#", + "label": "Coronavirus (COVID-19)" + } + ], + "linksColumn2": [ + { + "URL": "#", + "label": "NHS App" + }, + { + "URL": "#", + "label": "Find my NHS number" + }, + { + "URL": "#", + "label": "Your health records" + }, + { + "URL": "#", + "label": "About the NHS" + }, + { + "URL": "#", + "label": "Healthcare abroad" + } + ], + "linksColumn3": [ + { + "URL": "#", + "label": "Contact us" + }, + { + "URL": "#", + "label": "Other NHS websites" + }, + { + "URL": "#", + "label": "Profile editor login" + } + ], + "metaLinks": [ + { + "URL": "#", + "label": "About us" + }, + { + "URL": "#", + "label": "Accessibility statement" + }, + { + "URL": "#", + "label": "Our policies" + }, + { + "URL": "#", + "label": "Cookies" + } + ] +})}} +``` + ### Nunjucks arguments The footer Nunjucks macro takes the following arguments: -| Name | Type | Required | Description | -| ------------------ | ------ | -------- | --------------------------------------------------------------------------------------------- | -| **links** | array | No | Array of primary navigation items for use in the footer. | -| **links.[].url** | string | No | The href of a primary navigation item in the footer. | -| **links.[].label** | string | No | The label of a primary navigation item in the footer. | -| **classes** | string | No | Optional additional classes to add to the footer container. Separate each class with a space. | -| **attributes** | object | No | Any extra HTML attributes (for example data attributes) to add to the footer container. | -| **copyright** | string | No | The label for the copyright notice in the footer. | +| Name | Type | Required | Description | +| ------------------------- | ------ | -------- | --------------------------------------------------------------------------------------------- | +| **links** | array | No | Array of first column of navigation items for use in the footer. | +| **links.[].url** | string | No | The href of a navigation item in the first column of the footer. | +| **links.[].label** | string | No | The label of a navigation item in the first column of the footer. | +| **linksColumn2** | array | No | Array of second column of navigation items for use in the footer. | +| **linksColumn2.[].url** | string | No | The href of a navigation item in the second column of the footer. | +| **linksColumn2.[].label** | string | No | The label of a navigation item in the second column of the footer. | +| **linksColumn3** | array | No | Array of third column of navigation items for use in the footer. | +| **linksColumn3.[].url** | string | No | The href of a navigation item in the third column of the footer. | +| **linksColumn3.[].label** | string | No | The label of a navigation item in the third column of the footer. | +| **classes** | string | No | Optional additional classes to add to the footer container. Separate each class with a space. | +| **attributes** | object | No | Any extra HTML attributes (for example data attributes) to add to the footer container. | +| **copyright** | string | No | The label for the copyright notice in the footer. | +| **metaLinks** | array | No | Array of policy navigation items for use in the footer. | +| **metaLinks.[].url** | string | No | The href of a policy navigation item in the footer. | +| **metaLinks.[].label** | string | No | The label of a policy navigation item in the footer. | If you are using Nunjucks macros in production be aware that using `html` arguments, or ones ending with `html` can be a [security risk](https://developer.mozilla.org/en-US/docs/Glossary/Cross-site_scripting). Read more about this in the [Nunjucks documentation](https://mozilla.github.io/nunjucks/api.html#user-defined-templates-warning). diff --git a/packages/components/footer/_footer.scss b/packages/components/footer/_footer.scss index 615e6e77b..1872a07b4 100644 --- a/packages/components/footer/_footer.scss +++ b/packages/components/footer/_footer.scss @@ -2,7 +2,7 @@ COMPONENTS / #FOOTER ========================================================================== */ -.nhsuk-footer { +.nhsuk-footer-container { @include clearfix(); @include print-hide(); @include nhsuk-responsive-padding(5, bottom); @@ -12,23 +12,49 @@ border-top: nhsuk-spacing(1) solid $color_nhsuk-blue; } +.nhsuk-footer { + background-color: $color_nhsuk-grey-4; + margin-bottom: 15px; + + @include mq($from: desktop) { + display: flex; + justify-content: space-between; + } +} + .nhsuk-footer__list { @include nhsuk-responsive-padding(4, bottom); list-style-type: none; - margin: 0; + margin-bottom: 25px; padding-left: nhsuk-spacing(0); + &:last-child { + margin-bottom: 15px; + } + @include mq($from: desktop) { float: left; padding-bottom: 0; + padding-right: 40px; width: 75%; + + &:last-child { + padding-right: 0; + } } } .nhsuk-footer__list-item { @include nhsuk-font(16); + @include mq($from: desktop) { + float: none; + margin-right: 0; + } +} + +.nhsuk-footer-default__list-item { @include mq($from: desktop) { float: left; margin-right: nhsuk-spacing(5); @@ -36,26 +62,27 @@ } .nhsuk-footer__list-item-link { - color: $nhsuk-secondary-text-color; + color: $nhsuk-footer-link-text-color; &:visited { - color: $nhsuk-secondary-text-color; + color: $nhsuk-footer-link-text-color; } &:hover { - color: $nhsuk-text-color; + color: $nhsuk-link-hover-color; } } .nhsuk-footer__copyright { @include nhsuk-font(16); - color: $nhsuk-secondary-text-color; + color: $nhsuk-footer-copyright-text-color; margin-bottom: 0; +} - @include mq($from: desktop) { - float: right; - text-align: right; - width: 25%; +.nhsuk-footer__meta { + @include mq($until: desktop) { + border-top: 1px solid #f0f4f5; + padding-top: 35px; } } diff --git a/packages/components/footer/template.njk b/packages/components/footer/template.njk index 9a42abbc2..903485217 100644 --- a/packages/components/footer/template.njk +++ b/packages/components/footer/template.njk @@ -1,17 +1,77 @@
    {# close nhsuk-width-container #} +
    {# close nhsuk-footer-container #} diff --git a/packages/components/header/README.md b/packages/components/header/README.md index 36719bc1f..c97db6fa6 100644 --- a/packages/components/header/README.md +++ b/packages/components/header/README.md @@ -11,9 +11,9 @@ compiled JavaScript for all components `nhsuk.min.js` or the individual componen ## Quick start examples -### Header +### Header (default) -[Preview the header component](https://nhsuk.github.io/nhsuk-frontend/components/header/index.html) +[Preview the header (default) component](https://nhsuk.github.io/nhsuk-frontend/components/header/index.html) #### HTML markup @@ -22,107 +22,83 @@ compiled JavaScript for all components `nhsuk.min.js` or the individual componen
    -
    - -
    - + ``` @@ -143,17 +119,21 @@ compiled JavaScript for all components `nhsuk.min.js` or the individual componen 'url' : 'https://www.nhs.uk/live-well/', 'label' : 'Live Well' }, + { + 'url' : 'https://www.nhs.uk/mental-health/', + 'label' : 'Mental health' + }, { 'url' : 'https://www.nhs.uk/conditions/social-care-and-support/', 'label' : 'Care and support' }, { - 'url' : 'https://www.nhs.uk/news/', - 'label' : 'Health news' + 'url' : 'https://www.nhs.uk/pregnancy/', + 'label' : 'Pregnancy' }, { - 'url' : 'https://www.nhs.uk/service-search', - 'label' : 'Services near you' + 'url' : 'https://www.nhs.uk/nhs-services/', + 'label' : 'NHS services' } ] }) @@ -171,81 +151,67 @@ compiled JavaScript for all components `nhsuk.min.js` or the individual componen
    -
    -
    - -
    -
    - + ``` @@ -255,31 +221,35 @@ compiled JavaScript for all components `nhsuk.min.js` or the individual componen {% from 'components/header/macro.njk' import header %} {{ header({ - "showNav": "true", - "showSearch": "false", - "primaryLinks": [ - { - "url" : "https://www.nhs.uk/conditions", - "label" : "Health A-Z" - }, - { - 'url' : 'https://www.nhs.uk/live-well/', - 'label' : 'Live Well' - }, - { - 'url' : 'https://www.nhs.uk/conditions/social-care-and-support/', - 'label' : 'Care and support' - }, - { - 'url' : 'https://www.nhs.uk/news/', - 'label' : 'Health news' - }, - { - 'url' : 'https://www.nhs.uk/service-search', - 'label' : 'Services near you' - } - ] - }) + "showNav": "true", + "showSearch": "false", + "primaryLinks": [ + { + "url" : "https://www.nhs.uk/conditions", + "label" : "Health A-Z" + }, + { + 'url' : 'https://www.nhs.uk/live-well/', + 'label' : 'Live Well' + }, + { + 'url' : 'https://www.nhs.uk/mental-health/', + 'label' : 'Mental health' + }, + { + 'url' : 'https://www.nhs.uk/conditions/social-care-and-support/', + 'label' : 'Care and support' + }, + { + 'url' : 'https://www.nhs.uk/pregnancy/', + 'label' : 'Pregnancy' + }, + { + 'url' : 'https://www.nhs.uk/nhs-services/', + 'label' : 'NHS services' + } + ] + }) }} ``` @@ -294,36 +264,19 @@ compiled JavaScript for all components `nhsuk.min.js` or the individual componen
    @@ -339,7 +292,33 @@ compiled JavaScript for all components `nhsuk.min.js` or the individual componen {{ header({ "showNav": "false", - "showSearch": "true" + "showSearch": "true", + "primaryLinks": [ + { + "url" : "https://www.nhs.uk/conditions", + "label" : "Health A-Z" + }, + { + 'url' : 'https://www.nhs.uk/live-well/', + 'label' : 'Live Well' + }, + { + 'url' : 'https://www.nhs.uk/mental-health/', + 'label' : 'Mental health' + }, + { + 'url' : 'https://www.nhs.uk/conditions/social-care-and-support/', + 'label' : 'Care and support' + }, + { + 'url' : 'https://www.nhs.uk/pregnancy/', + 'label' : 'Pregnancy' + }, + { + 'url' : 'https://www.nhs.uk/nhs-services/', + 'label' : 'NHS services' + } + ] }) }} ``` @@ -355,10 +334,7 @@ compiled JavaScript for all components `nhsuk.min.js` or the individual componen @@ -379,42 +355,6 @@ compiled JavaScript for all components `nhsuk.min.js` or the individual componen --- -### Header transactional - -[Preview the header transactional component](https://nhsuk.github.io/nhsuk-frontend/components/header/header-transactional.html) - -#### HTML markup - -```HTML - -``` - -#### Nunjucks macro - -``` -{% from 'components/header/macro.njk' import header %} - -{{ header({ - "transactional": "true", - "showNav": "false", - "showSearch": "false" - }) -}} -``` - ---- - ### Header transactional with service name [Preview the header transactional with service name component](https://nhsuk.github.io/nhsuk-frontend/components/header/header-transactional-service-name.html) @@ -422,18 +362,15 @@ compiled JavaScript for all components `nhsuk.min.js` or the individual componen #### HTML markup ```HTML -
    ``` #### Nunjucks macro ``` +{% from 'components/header/macro.njk' import header %} + {{ header({ "showNav": "true", "showSearch": "true", @@ -620,115 +527,85 @@ compiled JavaScript for all components `nhsuk.min.js` or the individual componen
    -
    - -
    - +
    ``` #### Nunjucks macro ``` +{% from 'components/header/macro.njk' import header %} + {{ header({ "showNav": "true", "showSearch": "true", @@ -775,121 +652,92 @@ compiled JavaScript for all components `nhsuk.min.js` or the individual componen
    -
    - -
    - + ``` #### Nunjucks macro ``` +{% from 'components/header/macro.njk' import header %} + {{ header({ "showNav": "true", "showSearch": "true", "classes": "nhsuk-header--white nhsuk-header--white-nav", "organisation": { - "name": "Anytown Anyplace Anywhere", + "name": "Anytown Anyplace", + "split": "Anywhere", "descriptor": "NHS Foundation Trust" }, "primaryLinks": [ diff --git a/packages/components/header/_header-organisation.scss b/packages/components/header/_header-organisation.scss new file mode 100644 index 000000000..94df27a70 --- /dev/null +++ b/packages/components/header/_header-organisation.scss @@ -0,0 +1,124 @@ +/** + * These are the styles for the organisation header variants. +*/ + +.nhsuk-header--organisation { + .nhsuk-header__link { + height: auto; + text-decoration: none; + width: auto; + + &:hover { + color: $color_nhsuk-white; + text-decoration: underline; + + .nhsuk-logo { + box-shadow: none; + } + } + + &:focus { + background: $nhsuk-focus-color; + box-shadow: 0 0 0 $nhsuk-focus-width $nhsuk-focus-color, + 0 $nhsuk-focus-width 0 $nhsuk-focus-width $nhsuk-focus-text-color; + + .nhsuk-organisation-name, + .nhsuk-organisation-descriptor { + color: $nhsuk-focus-text-color; + } + + .nhsuk-logo { + box-shadow: none; + } + + &:hover { + text-decoration: none; + } + } + } + + .nhsuk-header__logo .nhsuk-logo { + @include nhsuk-logo-size-small; + + @media (max-width: 450px) { + height: nhsuk-spacing(4); + width: 60px; + } + + @media (max-width: 375px) { + height: 20px; + width: 50px; + } + } + + .nhsuk-header__navigation { + max-width: 100%; + } +} + +.nhsuk-organisation-name { + color: $color_nhsuk-white; + display: block; + font-size: 22px; + font-weight: bold; + letter-spacing: 0.2px; + line-height: 23px; + margin-top: -2px; + + @include mq($media-type: print) { + color: $nhsuk-print-text-color; + } + + @media (max-width: 450px) { + font-size: 17px; + letter-spacing: 0.1px; + line-height: 17px; + } + + @media (max-width: 375px) { + font-size: 13px; + line-height: 13px; + } + + .nhsuk-organisation-name-split { + display: block; + } +} + +.nhsuk-organisation-descriptor { + color: $color_nhsuk-white; + display: block; + font-size: 15px; + font-weight: bold; + line-height: 21px; + + @include mq($media-type: print) { + color: $color_nhsuk-blue; + } + + @media (max-width: 450px) { + font-size: 12px; + line-height: 18px; + } + + @media (max-width: 375px) { + font-size: 10px; + line-height: 13px; + } +} + +.nhsuk-organisation-logo { + border: 0; + max-height: 100px; + max-width: 280px; + + @media (max-width: 450px) { + max-width: 150px; + } +} + +.nhsuk-organisation-logo[src$=".svg"] { + height: auto; + max-width: 220px; + width: 100%; +} diff --git a/packages/components/header/_header-service.scss b/packages/components/header/_header-service.scss new file mode 100644 index 000000000..112539c6a --- /dev/null +++ b/packages/components/header/_header-service.scss @@ -0,0 +1,58 @@ +/** + * These are the styles for the service header variants. +*/ + +.nhsuk-header__link--service { + height: auto; + margin-bottom: -(nhsuk-spacing(1)); + text-decoration: none; + width: auto; + + @include mq($from: large-desktop) { + align-items: center; + display: flex; + -ms-flex-align: center; + margin-bottom: 0; + width: auto; + } + + &:hover { + background: none; + + .nhsuk-header__service-name { + text-decoration: underline; + } + } + + &:focus { + background: $nhsuk-focus-color; + box-shadow: 0 0 0 $nhsuk-focus-width $nhsuk-focus-color, + 0 $nhsuk-focus-width 0 $nhsuk-focus-width $nhsuk-focus-text-color; + + .nhsuk-header__service-name { + color: $nhsuk-focus-text-color; + text-decoration: none; + } + + .nhsuk-logo { + box-shadow: none; + } + } +} + +.nhsuk-header__service-name { + @include nhsuk-font(19); + + color: $color_nhsuk-white; + display: block; + padding-left: 0; + padding-right: 0; + + @include mq($from: large-desktop) { + padding-left: nhsuk-spacing(3); + } + + @include mq($until: large-desktop) { + max-width: 220px; + } +} diff --git a/packages/components/header/_header-transactional.scss b/packages/components/header/_header-transactional.scss new file mode 100644 index 000000000..abea22684 --- /dev/null +++ b/packages/components/header/_header-transactional.scss @@ -0,0 +1,61 @@ +/** + * These are the styles for the transactional header variants. +*/ + +.nhsuk-header__transactional-service-name { + padding-left: nhsuk-spacing(3); + padding-top: 3px; + + @include mq($until: tablet) { + padding-bottom: nhsuk-spacing(3); + } + + @include mq($until: tablet) { + padding-left: 0; + padding-top: nhsuk-spacing(2); + width: 100%; + } +} + +.nhsuk-header__transactional-service-name--link { + @include nhsuk-link-style-white; + @include nhsuk-font(19); + text-decoration: none; + + &:hover { + text-decoration: underline; + } +} + +.nhsuk-header__transactional { + .nhsuk-header__container { + justify-content: normal; + } + + .nhsuk-header__link { + @include nhsuk-logo-size-small; + display: block; + } + + .nhsuk-logo { + @include nhsuk-logo-size-small; + } +} + +.nhsuk-header__transactional--logo { + max-width: 100%; + + @include mq($from: tablet) { + .nhsuk-header__link--service { + align-items: center; + display: flex; + -ms-flex-align: center; + margin-bottom: 0; + width: auto; + } + + .nhsuk-header__service-name { + padding-left: nhsuk-spacing(3); + } + } +} diff --git a/packages/components/header/_header-white.scss b/packages/components/header/_header-white.scss new file mode 100644 index 000000000..a59a610c4 --- /dev/null +++ b/packages/components/header/_header-white.scss @@ -0,0 +1,130 @@ +/** + * These are the styles for the white header variants. +*/ + +.nhsuk-header--white { + background-color: $color_nhsuk-white; + + .nhsuk-header__search-wrap { + margin-bottom: nhsuk-spacing(3); + + @include mq($until: tablet) { + &::after { + background: $color_nhsuk-white; + } + } + } + + .nhsuk-navigation-container { + background-color: $color_nhsuk-blue; + } + + .nhsuk-logo { + .nhsuk-logo__background { + fill: $color_nhsuk-blue; + } + + .nhsuk-logo__text { + fill: $color_nhsuk-white; + } + } + + .nhsuk-header__link { + &:hover { + color: $nhsuk-text-color; + text-decoration: underline; + + .nhsuk-organisation-descriptor { + color: $nhsuk-text-color; + } + } + } + + .nhsuk-search__submit { + background-color: $color_nhsuk-blue; + + .nhsuk-icon__search { + fill: $color_nhsuk-white; + } + + &:hover { + background-color: $color_shade_nhsuk-blue-20; + border-color: $color_shade_nhsuk-blue-20; + } + + &:focus { + background-color: $nhsuk-focus-color; + + .nhsuk-icon__search { + fill: $nhsuk-focus-text-color; + } + } + } + + .nhsuk-search__input { + border: 1px solid $color_nhsuk-grey-3; + + &:focus { + border: 2px solid $nhsuk-focus-text-color; + + @include mq($until: tablet) { + border: $nhsuk-focus-width solid $nhsuk-focus-text-color; + } + } + } + + .nhsuk-header__search-form { + @include mq($until: tablet) { + padding-top: 0; + } + } + + .nhsuk-organisation-name { + color: shade($color_nhsuk-black, 100%); + } + + .nhsuk-organisation-descriptor { + color: $color_nhsuk-blue; + } + + .nhsuk-header__transactional-service-name--link { + color: $color_nhsuk-black; + } + + .nhsuk-header__service-name { + color: $nhsuk-text-color; + } +} + +.nhsuk-header--white-nav { + .nhsuk-navigation-container { + background-color: $color_nhsuk-white; + } + .nhsuk-navigation { + background-color: $color_nhsuk-white; + + .nhsuk-header__navigation-list { + border-top: 1px solid $color_nhsuk-grey-5; + } + + .nhsuk-header__navigation-link { + color: $color_nhsuk-blue; + + &:visited { + color: $color_nhsuk-blue; + } + + &:focus { + color: $nhsuk-focus-text-color; + + &:hover { + background: $nhsuk-focus-color; + } + } + } + + .nhsuk-icon__chevron-down { + fill: $color_nhsuk-blue; + } + } +} diff --git a/packages/components/header/_header.scss b/packages/components/header/_header.scss index 130967841..a224d03cc 100644 --- a/packages/components/header/_header.scss +++ b/packages/components/header/_header.scss @@ -3,7 +3,7 @@ ========================================================================== */ /** - * The behaviour with regards to responsiveness is as follow: +* The behaviour with regards to responsiveness is as follow: * * - Mobile to tablet view * Menu toggle button visible and navigation links hidden, search toggle @@ -16,41 +16,28 @@ * - Desktop+ view * Menu toggle button hidden and navigation links visible, search toggle * button hidden and search form visible - * - * 1. Custom height and width of the logo - * 2. Custom height and width of form items - * 3. Custom height and width of svg icons - * 4. Remove inner border on buttons for Firefox, see - * https://github.com/necolas/normalize.css/issues/393 - * 5. Proprietary extension so form field looks the same in Safari - * 6. Custom margin to move menu toggle past the search toggle button - * 7. Custom border value between expanded search and expanded menu if both open at the same time - * 8. Don't display the link address for the logo anchor, see - * core/elements/_links.scss - * 9. Use non variable colour to follow NHS England guidelines on logo colour - * 10. Remove random top margin in Safari - * 11. Align close icon with nav item arrow icons - * 12. Add nhsuk-spacing(9) to align right and left main nav with header */ .nhsuk-header { - @include clearfix(); background-color: $color_nhsuk-blue; } .nhsuk-header__container { - @include clearfix(); + @include govuk-width-container; padding: 20px 0; @include mq($until: tablet) { - margin: 0; - padding: nhsuk-spacing(3); + padding-bottom: 0; + } + + @include mq($from: tablet) { + border-bottom: 1px solid $color_transparent_nhsuk-white-20; + display: flex; + justify-content: space-between; } } .nhsuk-header__logo { - float: left; - @include mq($until: tablet) { position: relative; z-index: 1; @@ -77,7 +64,7 @@ } .nhsuk-logo { - @include nhsuk-logo-size; /* [1] */ + @include nhsuk-logo-size; border: 0; } @@ -91,7 +78,7 @@ } .nhsuk-header__link { - @include nhsuk-logo-size; /* [1] */ + @include nhsuk-logo-size; display: block; &:hover { @@ -111,7 +98,7 @@ @include mq($media-type: print) { &:after { - content: ""; /* [8] */ + content: ""; } } @@ -122,19 +109,36 @@ } } +.nhsuk-header__logo--only { + max-width: 100%; + + @include mq($until: tablet) { + padding-bottom: nhsuk-spacing(3); + } + @include mq($from: tablet) { + .nhsuk-header__link--service { + align-items: center; + display: flex; + -ms-flex-align: center; + margin-bottom: 0; + width: auto; + } + + .nhsuk-header__service-name { + padding-left: nhsuk-spacing(3); + } + } +} + .nhsuk-header__content { - @include clearfix(); @include print-hide(); - position: relative; &.js-show { - border-bottom: nhsuk-spacing(1) solid $color_nhsuk-grey-5; /* [7] */ + border-bottom: nhsuk-spacing(1) solid $color_nhsuk-grey-5; } @include mq($from: tablet) { - float: right; - &.js-show { border-bottom: 0; } @@ -142,39 +146,16 @@ } .nhsuk-header__search { - @include clearfix(); - position: relative; text-align: right; @include mq($from: tablet) { - float: left; margin-left: nhsuk-spacing(2); } } -.nhsuk-header__search-toggle { - @include toggle-button(); - min-height: nhsuk-spacing(6); /* [2] */ - padding: nhsuk-spacing(1) nhsuk-spacing(2) 0; - position: absolute; - right: 0; - top: 0; - - .nhsuk-icon__search { - fill: $color_nhsuk-white; - height: 21px; /* [3] */ - width: 21px; /* [3] */ - } - - &:focus { - @include nhsuk-focused-button(); - box-shadow: 0 0 0 2px $nhsuk-focus-color, 0 $nhsuk-focus-width 0 2px $nhsuk-focus-text-color; - } - - @include mq($from: tablet) { - display: none; - } +.nhsuk-header__search-no-nav { + padding-bottom: nhsuk-spacing(3); } .nhsuk-header__search-form { @@ -182,51 +163,37 @@ overflow: visible; @include mq($until: tablet) { - background-color: $color_nhsuk-white; display: flex; - padding: nhsuk-spacing(3); + margin: nhsuk-spacing(3) 0 0; + position: relative; width: 100%; } } .nhsuk-header__search-wrap { - @include mq($until: tablet) { - display: none; - - &.js-show { - clear: both; - display: flex; - margin-bottom: -20px; - margin-left: -16px; - margin-right: -16px; - padding-top: 16px; - text-align: left; - } - } - @include mq($from: tablet) { display: block; - line-height: 0; } } .nhsuk-search__input { - -webkit-appearance: listbox; /* [5] */ + -webkit-appearance: listbox; border-bottom-left-radius: $nhsuk-border-radius; border-bottom-right-radius: 0; border-top-left-radius: $nhsuk-border-radius; border-top-right-radius: 0; padding: 0 nhsuk-spacing(3); &:focus { - border: 4px solid $nhsuk-focus-text-color; + border: nhsuk-spacing(1) solid $nhsuk-focus-text-color; box-shadow: 0 0 0 $nhsuk-focus-width $nhsuk-focus-color; outline: $nhsuk-focus-width solid transparent; outline-offset: $nhsuk-focus-width; - padding: 0 9px; + padding: 0 13px; } &::placeholder { color: $color_nhsuk-grey-1; font-size: $nhsuk-base-font-size; + opacity: 1; // fixes low contrast of placeholder text in firefox } &:-ms-input-placeholder { color: $color_nhsuk-grey-1; @@ -238,25 +205,24 @@ } @include mq($until: tablet) { - border-bottom: 1px solid $color_nhsuk-grey-3; - border-left: 1px solid $color_nhsuk-grey-3; - border-right: 0; - border-top: 1px solid $color_nhsuk-grey-3; + border: 1px solid $color_nhsuk-white; + border-bottom-right-radius: $nhsuk-border-radius; + border-top-right-radius: $nhsuk-border-radius; flex-grow: 2; -ms-flex-positive: 2; font-size: inherit; - height: 52px; /* [4] */ + height: 40px; margin: 0; outline: none; - width: 100%; /* [4] */ + width: 100%; z-index: 1; } @include mq($from: tablet) { border: 1px solid $color_nhsuk-white; font-size: $nhsuk-base-font-size; - height: nhsuk-spacing(6); /* [2] */ - width: 200px; /* [2] */ + height: nhsuk-spacing(6); + width: 200px; } @include mq($from: desktop) { @@ -277,7 +243,7 @@ padding: 0; &::-moz-focus-inner { - border: 0; /* [4] */ + border: 0; } &:hover { @@ -285,19 +251,29 @@ } @include mq($until: tablet) { - background-color: $color_nhsuk-green; - height: 52px; /* [2] */ + background-color: $color_nhsuk-grey-5; + border: 0; + height: 40px; margin: 0; padding: nhsuk-spacing(2) nhsuk-spacing(2) 0; + position: absolute; + right: 0; + top: 0; + z-index: 9; .nhsuk-icon__search { - fill: $color_nhsuk-white; - height: 38px; /* [3] */ - width: 38px; /* [3] */ + fill: $color_nhsuk-blue; + height: 27px; + width: 27px; } &:hover { - background-color: $nhsuk-button-hover-color; + background-color: $color_shade_nhsuk-blue-35; + border: 1px solid $color_nhsuk-white; + + .nhsuk-icon { + fill: $color_nhsuk-white; + } } &:focus { @@ -323,12 +299,13 @@ @include mq($from: tablet) { background-color: $color_nhsuk-grey-5; display: block; - height: nhsuk-spacing(6); /* [2] */ - width: 44px; /* [2] */ + height: nhsuk-spacing(6); + line-height: 1; + width: 44px; .nhsuk-icon__search { - height: 27px; /* [3] */ - width: 27px; /* [3] */ + height: 27px; + width: 27px; } &:hover { @@ -356,194 +333,19 @@ } } -.nhsuk-search__close { - @include mq($until: tablet) { - @include close-button(); - - margin-left: nhsuk-spacing(2); - margin-right: -(nhsuk-spacing(2)); /* [11] */ - margin-top: nhsuk-spacing(2); - - &:focus { - .nhsuk-icon__close { - fill: $nhsuk-focus-text-color; - } - } - } - - @include mq($from: tablet) { - display: none; - } -} - -.nhsuk-search__input--withdropdown { - border-bottom-left-radius: 0; -} - -.nhsuk-search__submit--withdropdown { - border-bottom-right-radius: 0; -} - -/* Main navigation - * - * Appears below the header strip - ====================================================================== */ - -.nhsuk-header__menu { - float: right; - - @include mq($from: tablet) { - float: left; - } -} - -.nhsuk-header__menu-toggle { - @include toggle-button(); - - display: block; - font-size: 16px; - font-weight: 400; - line-height: $nhsuk-base-line-height; - margin-right: 0; /* [6] */ - padding: 7px nhsuk-spacing(3); - position: relative; - text-decoration: none; - z-index: 1; - - @include mq($until: tablet) { - right: 48px; - } - - @include mq($from: tablet, $until: large-desktop) { - margin-top: 0; /* [10] */ - } - - @include mq($from: large-desktop) { - display: none; - } - - &:focus { - @include nhsuk-focused-button; - - box-shadow: 0 0 0 2px $nhsuk-focus-color, 0 $nhsuk-focus-width 0 2px $nhsuk-focus-text-color; - } -} - -/* 'only' modifier for when there is only the menu in the header, no search - ====================================================================== */ - -.nhsuk-header__menu--only { - .nhsuk-header__menu-toggle { - @include mq($until: tablet) { - position: relative; - right: auto; - top: auto; - } - } -} - -.nhsuk-header__navigation { - @include print-hide(); - background-color: $color_nhsuk-white; - clear: both; - display: none; - overflow: hidden; - - &.js-show { - display: block; - - @include mq($until: large-desktop) { - border-bottom: nhsuk-spacing(1) solid $color_nhsuk-grey-5; /* [7] */ - border-top: nhsuk-spacing(1) solid $color_nhsuk-grey-5; /* [7] */ - - .nhsuk-width-container { - margin: 0 nhsuk-spacing(3); - } - } - - @include mq($until: desktop) { - .nhsuk-width-container { - margin: 0; - } - } - } - - @include mq($from: large-desktop) { - background-color: $color_nhsuk-blue; - display: block; - margin: 0 auto; - max-width: $nhsuk-page-width + nhsuk-spacing(9); /* [12] */ - } -} - -.nhsuk-header__navigation-title { - font-weight: $nhsuk-font-bold; - margin-bottom: 0; - padding: nhsuk-spacing(3); - position: relative; - - @include mq($from: large-desktop) { - display: none; - } -} - -.nhsuk-header__navigation-close { - @include close-button(); - overflow: hidden; - position: absolute; - right: nhsuk-spacing(2); - top: nhsuk-spacing(2); - white-space: nowrap; - - &:focus { - .nhsuk-icon__close { - fill: $nhsuk-focus-text-color; - } - } -} - -.nhsuk-header__navigation-list { - list-style: none; - margin: 0; - padding-left: 0; - - @include mq($from: large-desktop) { - border-top: 1px solid $nhsuk-secondary-border-color; - display: flex; - justify-content: space-between; - padding: 0; - width: 100%; - } -} - -.nhsuk-header__navigation-item { - border-top: 1px solid $color_nhsuk-grey-5; - margin-bottom: 0; - position: relative; - - @include mq($from: large-desktop) { - border-top: 0; - margin: 0; - text-align: center; - - .nhsuk-icon__chevron-right { - display: none; - } - } -} - .nhsuk-header__navigation-link { @include nhsuk-font(16); border-bottom: nhsuk-spacing(1) solid transparent; border-top: nhsuk-spacing(1) solid transparent; - color: $color_nhsuk-blue; + color: $color_nhsuk-white; display: block; - padding: 12px nhsuk-spacing(3); - text-decoration: none; + font-size: inherit; + padding: nhsuk-spacing(3) 12px; + text-decoration: underline; + white-space: nowrap; - @include mq($from: large-desktop) { - color: $color_nhsuk-white; - line-height: normal; + @include mq($from: tablet) { + padding: 12px nhsuk-spacing(3); } .nhsuk-icon__chevron-right { @@ -554,7 +356,7 @@ } &:visited { - color: $color_nhsuk-blue; + color: $color_nhsuk-white; @include mq($from: large-desktop) { color: $color_nhsuk-white; @@ -563,16 +365,12 @@ &:hover { box-shadow: none; - color: $color_nhsuk-blue; - text-decoration: underline; + color: $color_nhsuk-white; + text-decoration: none; @include mq($from: large-desktop) { color: $color_nhsuk-white; } - - .nhsuk-icon__chevron-right { - fill: $color_nhsuk-blue; - } } &:active, @@ -588,10 +386,6 @@ &:hover { background-color: $nhsuk-focus-color; color: $nhsuk-focus-text-color; - - .nhsuk-icon__chevron-right { - fill: $nhsuk-focus-text-color; - } } &:visited { @@ -601,396 +395,144 @@ } } -.nhsuk-header__navigation-item--for-mobile { - @include mq($from: large-desktop) { - display: none; - } -} - -.nhsuk-header__navigation-list--small { - @include mq($from: large-desktop) { - justify-content: flex-start; - } -} - -/** - * Transactional Header with service name -**/ - -.nhsuk-header__transactional-service-name { - float: left; - padding-left: nhsuk-spacing(3); - padding-top: 3px; - - @include mq($until: large-desktop) { - padding-left: 0; - padding-top: nhsuk-spacing(2); - width: 100%; - } -} - -.nhsuk-header__transactional-service-name--link { - @include nhsuk-link-style-white; - @include nhsuk-font(19); - text-decoration: none; - - &:hover { - text-decoration: underline; - } -} - -.nhsuk-header--transactional { - .nhsuk-header__link { - @include nhsuk-logo-size-small; - display: block; - } - - .nhsuk-logo { - @include nhsuk-logo-size-small; - } - - .nhsuk-header__transactional-service-name { - float: left; - } -} - -.nhsuk-header__link--service { - height: auto; - margin-bottom: -(nhsuk-spacing(1)); - text-decoration: none; +// menu toggle button, only shows when screen can't fit all nav items +.nhsuk-header__menu-toggle { + background: transparent; + border: 0; + border-bottom: nhsuk-spacing(1) solid transparent; + border-radius: 0; + border-top: nhsuk-spacing(1) solid transparent; + box-sizing: border-box; + cursor: pointer; + margin: 0; + overflow: visible; + position: relative; + right: 0; + text-align: center; + text-decoration: underline; + vertical-align: top; + visibility: hidden; width: auto; + z-index: 1; - @include mq($from: large-desktop) { - align-items: center; - display: flex; - -ms-flex-align: center; - margin-bottom: 0; - width: auto; + &.nhsuk-header__navigation-link { + padding-right: 30px; } - &:hover { - background: none; - - .nhsuk-header__service-name { - text-decoration: underline; - } + @include mq($from: desktop) { + display: none; } &:focus { - background: $nhsuk-focus-color; - box-shadow: 0 0 0 $nhsuk-focus-width $nhsuk-focus-color, - 0 $nhsuk-focus-width 0 $nhsuk-focus-width $nhsuk-focus-text-color; - - .nhsuk-header__service-name { - color: $nhsuk-focus-text-color; - text-decoration: none; - } + text-decoration: none; - .nhsuk-logo { - box-shadow: none; + .nhsuk-icon__chevron-down { + fill: $color_nhsuk-black; } } } -.nhsuk-header__service-name { - @include nhsuk-font(19); - - color: $color_nhsuk-white; +.nhsuk-header__menu-toggle--visible { + visibility: visible; display: block; - padding-left: 0; - padding-right: 0; - - @include mq($from: large-desktop) { - padding-left: nhsuk-spacing(3); - } - - @include mq($until: large-desktop) { - max-width: 220px; - } } -.nhsuk-header__logo--only { - max-width: 100%; - - @include mq($from: tablet) { - .nhsuk-header__link--service { - align-items: center; - display: flex; - -ms-flex-align: center; - margin-bottom: 0; - width: auto; - } - - .nhsuk-header__service-name { - padding-left: nhsuk-spacing(3); - } +.nhsuk-icon__chevron-down { + .nhsuk-header__menu-toggle[aria-expanded="true"] & { + transform: rotate(270deg); } } -/** - * Organisational header -**/ - -.nhsuk-header--organisation { - .nhsuk-header__link { - height: auto; - text-decoration: none; - width: auto; - - &:hover { - color: $color_nhsuk-white; - text-decoration: underline; - - .nhsuk-logo { - box-shadow: none; - } - } +.nhsuk-navigation { + display: flex; - &:focus { - background: $nhsuk-focus-color; - box-shadow: 0 0 0 $nhsuk-focus-width $nhsuk-focus-color, - 0 $nhsuk-focus-width 0 $nhsuk-focus-width $nhsuk-focus-text-color; - - .nhsuk-organisation-name, - .nhsuk-organisation-descriptor { - color: $nhsuk-focus-text-color; - } - - .nhsuk-logo { - box-shadow: none; - } - - &:hover { - text-decoration: none; - } - } - } - - .nhsuk-header__logo .nhsuk-logo { - height: 32px; - width: 80px; - - @media (max-width: 450px) { - height: 24px; - width: 60px; - } - - @media (max-width: 375px) { - height: 20px; - width: 50px; - } - } - - .nhsuk-header__navigation { - max-width: 100%; + @include mq($until: tablet) { + position: relative; + z-index: 10; } } -.nhsuk-organisation-name { - color: $color_nhsuk-white; - display: block; - font-size: 22px; - font-weight: bold; - letter-spacing: 0.2px; - line-height: 23px; - margin-top: -2px; - - @include mq($media-type: print) { - color: $nhsuk-print-text-color; - } - - @media (max-width: 450px) { - font-size: 17px; - letter-spacing: 0.1px; - line-height: 17px; - } - - @media (max-width: 375px) { - font-size: 13px; - line-height: 13px; - } - - .nhsuk-organisation-name-split { - display: block; - } +%nhsuk-navigation-list { + list-style: none; + margin: 0; + padding: 0; } -.nhsuk-organisation-descriptor { - color: $color_nhsuk-white; - display: block; - font-size: 15px; - font-weight: bold; - line-height: 21px; +// ul of visible nav +.nhsuk-header__navigation-list { + @extend %nhsuk-navigation-list; + @include govuk-width-container; - @include mq($media-type: print) { - color: $color_nhsuk-blue; - } + width: 100%; - @media (max-width: 450px) { - font-size: 12px; - line-height: 18px; + @include mq($from: desktop) { + display: flex; + justify-content: space-between; } - @media (max-width: 375px) { - font-size: 10px; - line-height: 13px; + .js-enabled & { + display: flex; } } -.nhsuk-org-logo { - border: 0; - max-height: 100px; - max-width: 280px; - - @media (max-width: 450px) { - max-width: 150px; - } +.nhsuk-header__navigation-item { + margin-bottom: 0; } -.nhsuk-org-logo[src$=".svg"] { - height: auto; - max-width: 220px; - width: 100%; +.nhsuk-navigation-container { + position: relative; } -// Header (white) - -.nhsuk-header--white { +// ul of hidden nav +.nhsuk-header__drop-down { + @extend %nhsuk-navigation-list; + @include print-hide(); background-color: $color_nhsuk-white; + border-bottom: nhsuk-spacing(1) solid $color_nhsuk-grey-5; + overflow: hidden; + position: absolute; + right: 0; + top: 100%; + left: 0; - .nhsuk-logo { - .nhsuk-logo__background { - fill: $color_nhsuk-blue; - } - - .nhsuk-logo__text { - fill: $color_nhsuk-white; - } - } - - .nhsuk-header__link { - &:hover { - color: $nhsuk-text-color; - text-decoration: underline; - - .nhsuk-organisation-descriptor { - color: $nhsuk-text-color; - } - } - } - - .nhsuk-search__submit { - background-color: $color_nhsuk-blue; - - .nhsuk-icon__search { - fill: $color_nhsuk-white; - } - - &:hover { - background-color: $color_shade_nhsuk-blue-20; - border-color: $color_shade_nhsuk-blue-20; - } - - &:focus { - background-color: $nhsuk-focus-color; - - .nhsuk-icon__search { - fill: $nhsuk-focus-text-color; - } - } - } - - .nhsuk-search__input { - border: 1px solid $color_nhsuk-grey-3; - - &:focus { - border: 2px solid $nhsuk-focus-text-color; - - @include mq($until: tablet) { - border: $nhsuk-focus-width solid $nhsuk-focus-text-color; - } - } - } - - .nhsuk-header__search-toggle, - .nhsuk-header__menu-toggle { - border-color: $color_nhsuk-blue; + .nhsuk-header__navigation-link { color: $color_nhsuk-blue; - - .nhsuk-icon { - fill: $color_nhsuk-blue; - } - - &.is-active, - &:hover { - border-color: $color_shade_nhsuk-blue-20; - color: $color_nhsuk-white; - - .nhsuk-icon { - fill: $color_nhsuk-white; - } - } - - &:focus { - color: $nhsuk-focus-text-color; - - .nhsuk-icon { - fill: $nhsuk-focus-text-color; - } - } + padding: 12px nhsuk-spacing(3); } - .nhsuk-header__search-form { - @include mq($until: tablet) { - padding-top: 0; - } - } + .nhsuk-header__navigation-item { + border-top: 1px solid $color_nhsuk-grey-5; + margin-bottom: 0; - .nhsuk-organisation-name { - color: #000; /* [9] */ /* stylelint-disable-line color-no-hex */ + @include mq($from: large-desktop) { + border-top: 0; + margin: 0; + text-align: center; + } } +} - .nhsuk-organisation-descriptor { - color: $color_nhsuk-blue; - } +.nhsuk-header__drop-down--hidden { + display: none; +} - .nhsuk-header__transactional-service-name--link { - color: $color_nhsuk-black; - } +.nhsuk-mobile-menu-container { + align-self: center; + display: none; +} - .nhsuk-header__navigation-list { - border-top: 0; - } +.nhsuk-mobile-menu-container--visible { + display: block; +} - .nhsuk-header__service-name { - color: $nhsuk-text-color; +.nhsuk-header__navigation-item--home { + @include mq($from: desktop) { + display: none; } } -// Navigation (white) - -.nhsuk-header--white-nav { - .nhsuk-header__navigation { - background-color: $color_nhsuk-white; - - .nhsuk-header__navigation-list { - border-top: 1px solid $color_nhsuk-grey-5; - } - - .nhsuk-header__navigation-link { - color: $color_nhsuk-blue; - - &:visited { - color: $color_nhsuk-blue; - } - - &:focus { - color: $nhsuk-focus-text-color; - - &:hover { - background: $nhsuk-focus-color; - } - } - } +.nhsuk-header__navigation-list--left-aligned { + @include mq($from: desktop) { + justify-content: initial; } } diff --git a/packages/components/header/header.js b/packages/components/header/header.js index 78284b4a0..a4520c9aa 100644 --- a/packages/components/header/header.js +++ b/packages/components/header/header.js @@ -1,7 +1,208 @@ -import MenuToggle from './menuToggle' -import SearchToggle from './searchToggle' +/** + * Header component + * + */ + +class Header { + constructor() { + this.menuIsOpen = false + this.navigation = document.querySelector('.nhsuk-navigation') + this.navigationList = document.querySelector('.nhsuk-header__navigation-list') + this.mobileMenu = document.createElement('ul') + this.mobileMenuToggleButton = document.querySelector('.nhsuk-header__menu-toggle') + this.mobileMenuCloseButton = document.createElement('button') + this.mobileMenuContainer = document.querySelector('.nhsuk-mobile-menu-container') + this.breakpoints = [] + this.width = document.body.offsetWidth + } + + init() { + if (!this.navigation || !this.navigationList || !this.mobileMenuToggleButton || !this.mobileMenuContainer) { + return + } + + this.setupMobileMenu() + this.calculateBreakpoints() + this.updateNavigation() + this.doOnOrientationChange() + + this.handleResize = this.debounce(() => { + this.calculateBreakpoints() + this.updateNavigation() + }) + + this.mobileMenuToggleButton.addEventListener('click', this.toggleMobileMenu.bind(this)) + window.addEventListener('resize', this.handleResize) + window.addEventListener('orientationchange', this.doOnOrientationChange()) + } + + debounce(func, timeout = 100) { + let timer + return (...args) => { + clearTimeout(timer) + timer = setTimeout(() => { + func.apply(this, args) + }, timeout) + } + } + + /** + * Calculate breakpoints. + * + * Calculate the breakpoints by summing the widths of + * each navigation item. + * + */ + calculateBreakpoints() { + let childrenWidth = 0 + for (let i = 0; i < this.navigationList.children.length; i++) { + childrenWidth += this.navigationList.children[i].offsetWidth + this.breakpoints[i] = childrenWidth + } + } + + // Add the mobile menu to the DOM + setupMobileMenu() { + this.mobileMenuContainer.appendChild(this.mobileMenu) + this.mobileMenu.classList.add('nhsuk-header__drop-down', 'nhsuk-header__drop-down--hidden') + } + + /** + * Close the mobile menu + * + * Closes the mobile menu and updates accessibility state. + * + * Remvoes the margin-bottom from the navigation + */ + closeMobileMenu() { + this.menuIsOpen = false + this.mobileMenu.classList.add('nhsuk-header__drop-down--hidden') + this.navigation.style.marginBottom = 0 + this.mobileMenuToggleButton.setAttribute('aria-expanded', 'false') + this.mobileMenuToggleButton.focus() + this.mobileMenuCloseButton.removeEventListener('click', this.closeMobileMenu.bind(this)) + document.removeEventListener('keydown', this.handleEscapeKey.bind(this)) + } + + /** + * Escape key handler + * + * This function is called when the user + * presses the escape key to close the mobile menu. + * + */ + handleEscapeKey(e) { + if (e.key === 'Escape') { + this.closeMobileMenu() + } + } + + /** + * Open the mobile menu + * + * Opens the mobile menu and updates accessibility state. + * + * The mobile menu is absolutely positioned, so it adds a margin + * to the bottom of the navigation to prevent it from overlapping + * + * Adds event listeners for the close button, + */ + + openMobileMenu() { + this.menuIsOpen = true + this.mobileMenu.classList.remove('nhsuk-header__drop-down--hidden') + const marginBody = this.mobileMenu.offsetHeight + this.navigation.style.marginBottom = `${marginBody}px` + this.mobileMenuToggleButton.setAttribute('aria-expanded', 'true') + + // add event listerer for esc key to close menu + document.addEventListener('keydown', this.handleEscapeKey.bind(this)) + + // add event listener for close icon to close menu + this.mobileMenuCloseButton.addEventListener('click', this.closeMobileMenu.bind(this)) + } + + /** + * Handle menu button click + * + * Toggles the mobile menu between open and closed + */ + toggleMobileMenu() { + if (this.menuIsOpen) { + this.closeMobileMenu() + } else { + this.openMobileMenu() + } + } + + /** + * Update nav for the available space + * + * If the available space is less than the current breakpoint, + * add the mobile menu toggle button and move the last + * item in the list to the drop-down list. + * + * If the available space is greater than the current breakpoint, + * remove the mobile menu toggle button and move the first item in the + * + * Additionaly will close the mobile menu if the window gets resized + * and the menu is open. + */ + + updateNavigation() { + const availableSpace = this.navigation.offsetWidth + let itemsVisible = this.navigationList.children.length + + if (availableSpace < this.breakpoints[itemsVisible - 1]) { + this.mobileMenuToggleButton.classList.add('nhsuk-header__menu-toggle--visible') + this.mobileMenuContainer.classList.add('nhsuk-mobile-menu-container--visible') + if (itemsVisible === 2) { + return + } + while (availableSpace < this.breakpoints[itemsVisible - 1]) { + this.mobileMenu.insertBefore(this.navigationList.children[itemsVisible - 2], this.mobileMenu.firstChild) + itemsVisible -= 1 + } + } else if (availableSpace > this.breakpoints[itemsVisible]) { + while (availableSpace > this.breakpoints[itemsVisible]) { + this.navigationList.insertBefore( + this.mobileMenu.removeChild(this.mobileMenu.firstChild), + this.mobileMenuContainer + ) + itemsVisible += 1 + } + } + + if (!this.mobileMenu.children.length) { + this.mobileMenuToggleButton.classList.remove('nhsuk-header__menu-toggle--visible') + this.mobileMenuContainer.classList.remove('nhsuk-mobile-menu-container--visible') + } + + if (document.body.offsetWidth !== this.width && this.menuIsOpen) { + this.closeMobileMenu() + } + } + + /** + * Orientation change + * + * Check the orientation of the device, if changed it will trigger a + * update to the breakpoints and navigation. + */ + doOnOrientationChange() { + switch (window.orientation) { + case 90: + setTimeout(() => { + this.calculateBreakpoints() + this.updateNavigation() + }, 200) + break + default: + break + } + } +} export default () => { - MenuToggle() - SearchToggle() + new Header().init() } diff --git a/packages/components/header/header.test.js b/packages/components/header/header.test.js deleted file mode 100644 index 8d54817a9..000000000 --- a/packages/components/header/header.test.js +++ /dev/null @@ -1,9 +0,0 @@ -import Header from './header' - -describe('NHS.UK header()', () => { - describe('Does not throw an error', () => { - it('if no document exists', () => { - Header() - }) - }) -}) diff --git a/packages/components/header/menuToggle.js b/packages/components/header/menuToggle.js deleted file mode 100644 index 045faa3a9..000000000 --- a/packages/components/header/menuToggle.js +++ /dev/null @@ -1,32 +0,0 @@ -import { toggleAttribute } from '../../common' - -/** - * Handle menu show and hide for mobile - */ -export default () => { - // HTMLElements - const toggleButton = document.querySelector('#toggle-menu') - const closeButton = document.querySelector('#close-menu') - const nav = document.querySelector('#header-navigation') - - /** - * Toggle classes and attributes - * @param {Object} event click event object - */ - const toggleMenu = (event) => { - event.preventDefault() - // Toggle aria-expanded for accessibility - toggleAttribute(toggleButton, 'aria-expanded') - // Toggle classes to apply CSS - toggleButton.classList.toggle('is-active') - nav.classList.toggle('js-show') - } - - // Check all necessary HTMLElements exist - if (toggleButton && closeButton && nav) { - // Attach toggleMenu as click to any elements which need it - ;[toggleButton, closeButton].forEach((elem) => { - elem.addEventListener('click', toggleMenu) - }) - } -} diff --git a/packages/components/header/menuToggle.test.js b/packages/components/header/menuToggle.test.js deleted file mode 100644 index d4e35064e..000000000 --- a/packages/components/header/menuToggle.test.js +++ /dev/null @@ -1,85 +0,0 @@ -import MenuToggle from './menuToggle' - -// Mock HTML -const toggleButtonHtml = - '' -const closeButtonHtml = - '' -const navHtml = - '' - -// DOM Elements to be set -let toggleButton -let closeButton -let nav - -// Helper to set DOM Elements -const initTest = (html) => { - document.body.innerHTML = html || toggleButtonHtml + closeButtonHtml + navHtml - toggleButton = document.querySelector('.nhsuk-header__menu-toggle') - closeButton = document.querySelector('.nhsuk-header__navigation-close') - nav = document.querySelector('.nhsuk-header__navigation') - MenuToggle() -} - -describe('NHS.UK menuToggle()', () => { - describe('does not throw an error', () => { - it('if no elements exists', () => { - MenuToggle() - }) - it('if no toggleButton exists', () => { - initTest(closeButtonHtml + navHtml) - expect(toggleButton).toBeNull() - expect(closeButton).toBeDefined() - expect(nav).toBeDefined() - }) - - it('if no closeButton exists', () => { - initTest(toggleButtonHtml + navHtml) - expect(toggleButton).toBeDefined() - expect(closeButton).toBeNull() - expect(nav).toBeDefined() - }) - - it('if no nav exists', () => { - initTest(toggleButtonHtml + closeButtonHtml) - expect(toggleButton).toBeDefined() - expect(closeButton).toBeDefined() - expect(nav).toBeNull() - }) - }) - - describe('Adds correct classes to elements', () => { - it('when toggleButton is clicked for the first time', () => { - initTest() - toggleButton.click() - expect(toggleButton.getAttribute('aria-expanded')).toEqual('true') - expect(toggleButton.classList.contains('is-active')).toEqual(true) - expect(nav.classList.contains('js-show')).toEqual(true) - }) - - it('when toggleButton is clicked twice', () => { - initTest() - toggleButton.click() - expect(toggleButton.getAttribute('aria-expanded')).toEqual('true') - expect(toggleButton.classList.contains('is-active')).toEqual(true) - expect(nav.classList.contains('js-show')).toEqual(true) - toggleButton.click() - expect(toggleButton.getAttribute('aria-expanded')).toEqual('false') - expect(toggleButton.classList.contains('is-active')).toEqual(false) - expect(nav.classList.contains('js-show')).toEqual(false) - }) - - it('when toggleButton is clicked then closeButton is clicked', () => { - initTest() - toggleButton.click() - expect(toggleButton.getAttribute('aria-expanded')).toEqual('true') - expect(toggleButton.classList.contains('is-active')).toEqual(true) - expect(nav.classList.contains('js-show')).toEqual(true) - closeButton.click() - expect(toggleButton.getAttribute('aria-expanded')).toEqual('false') - expect(toggleButton.classList.contains('is-active')).toEqual(false) - expect(nav.classList.contains('js-show')).toEqual(false) - }) - }) -}) diff --git a/packages/components/header/searchToggle.js b/packages/components/header/searchToggle.js deleted file mode 100644 index 10a67ba2d..000000000 --- a/packages/components/header/searchToggle.js +++ /dev/null @@ -1,34 +0,0 @@ -import { toggleAttribute } from '../../common' - -/** - * Handle search show and hide for mobile - */ -export default () => { - // HTMLElements - const toggleButton = document.querySelector('#toggle-search') - const closeButton = document.querySelector('#close-search') - const searchContainer = document.querySelector('#wrap-search') - const menuSearchContainer = document.querySelector('#content-header') - - /** - * Toggle classes and attributes - * @param {Object} event click event object - */ - const toggleSearch = (event) => { - event.preventDefault() - // Toggle aria-expanded for accessibility - toggleAttribute(toggleButton, 'aria-expanded') - // Toggle classes to apply CSS - toggleButton.classList.toggle('is-active') - searchContainer.classList.toggle('js-show') - menuSearchContainer.classList.toggle('js-show') - } - - // Check all necessary HTMLElements exist - if (toggleButton && closeButton) { - // Attach toggleSearch as click to any elements which need it - ;[toggleButton, closeButton].forEach((elem) => { - elem.addEventListener('click', toggleSearch) - }) - } -} diff --git a/packages/components/header/template.njk b/packages/components/header/template.njk index a8aefc21d..68cfc941a 100644 --- a/packages/components/header/template.njk +++ b/packages/components/header/template.njk @@ -10,16 +10,19 @@ {% endset %} + \ No newline at end of file diff --git a/packages/components/input/README.md b/packages/components/input/README.md index d3c395145..d7fe93e0d 100644 --- a/packages/components/input/README.md +++ b/packages/components/input/README.md @@ -52,7 +52,7 @@ See [Autofilling form controls: the autocomplete attribute](https://html.spec.wh - + ``` @@ -67,7 +67,8 @@ See [Autofilling form controls: the autocomplete attribute](https://html.spec.wh }, "id": "input-with-autocomplete-attribute", "name": "postcode", - "autocomplete": "postal-code" + "autocomplete": "postal-code", + "classes": "nhsuk-input--width-5" }) }} ``` @@ -81,13 +82,13 @@ See [Autofilling form controls: the autocomplete attribute](https://html.spec.wh ```html
    -
    ``` @@ -98,13 +99,15 @@ See [Autofilling form controls: the autocomplete attribute](https://html.spec.wh {{ input({ "label": { - "text": "National insurance number" + "text": "National insurance number", + "classes": "nhsuk-label--l" }, "hint": { - "text": "It’s on your National Insurance card, benefit letter, payslip or P60\. For example, ‘QQ 12 34 56 C’." + "text": "It’s on your National Insurance card, benefit letter, payslip or P60\. For example, 'QQ 12 34 56 C'." }, "id": "input-with-hint-text", - "name": "test-name-2" + "name": "test-name-2", + "classes": "nhsuk-input--width-10" }) }} ``` @@ -118,16 +121,17 @@ See [Autofilling form controls: the autocomplete attribute](https://html.spec.wh ```html
    -
    ``` @@ -138,13 +142,15 @@ See [Autofilling form controls: the autocomplete attribute](https://html.spec.wh {{ input({ "label": { - "text": "National Insurance number" + "text": "National Insurance number", + "classes": "nhsuk-label--l" }, "hint": { - "text": "It’s on your National Insurance card, benefit letter, payslip or P60\. For example, ‘QQ 12 34 56 C’." + "text": "It’s on your National Insurance card, benefit letter, payslip or P60\. For example, 'QQ 12 34 56 C'." }, "id": "input-with-error-message", "name": "test-name-3", + "classes": "nhsuk-input--width-10", "errorMessage": { "text": "Error message goes here" } @@ -161,11 +167,11 @@ See [Autofilling form controls: the autocomplete attribute](https://html.spec.wh ```html
    -
    +{%- if params.prefix or params.suffix %} +
    +{% endif %} + {%- if params.prefix %} + + {% endif %} + + {%- if params.suffix %} + + {% endif %} +{%- if params.prefix or params.suffix %} +
    {# close nhsuk-input__wrapper #} +{% endif %} + {# close nhsuk-form-group #} diff --git a/packages/components/inset-text/README.md b/packages/components/inset-text/README.md index ad254f92e..fabc14d62 100644 --- a/packages/components/inset-text/README.md +++ b/packages/components/inset-text/README.md @@ -25,7 +25,7 @@ If you’re using Nunjucks macros in production be aware that using `html` argum {% from 'components/inset-text/macro.njk' import insetText %} {{ insetText({ - "HTML": "

    You can report any suspected side effect to the UK safety scheme.

    " + "html": "

    You can report any suspected side effect to the UK safety scheme.

    " }) }} ``` @@ -35,7 +35,7 @@ The inset text Nunjucks macro takes the following arguments: | Name | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------- | -| **HTML** | string | Yes | HTML content to be used within the inset text component. | +| **html** | string | Yes | HTML content to be used within the inset text component. | | **classes** | string | No | Optional additional classes to add to the inset text container. Separate each class with a space. | | **attributes** | object | No | Any extra HTML attributes (for example data attributes) to add to the inset text container. | diff --git a/packages/components/inset-text/template.njk b/packages/components/inset-text/template.njk index 6902580f1..451c856b7 100644 --- a/packages/components/inset-text/template.njk +++ b/packages/components/inset-text/template.njk @@ -2,5 +2,6 @@ {%- if params.classes %} {{ params.classes }}{% endif %}" {%- for attribute, value in params.attributes %} {{attribute}}="{{value}}"{% endfor %}> Information: - {{ params.HTML | safe }} + {# params.HTML supported for backwards compatibility - see issue #950 #} + {{ (params.html or params.HTML) | safe }} diff --git a/packages/components/label/_label.scss b/packages/components/label/_label.scss index 459281d91..b7aea74e1 100644 --- a/packages/components/label/_label.scss +++ b/packages/components/label/_label.scss @@ -10,45 +10,30 @@ } /* Modifiers that make labels look more like their equivalent headings */ - -.nhsuk-label--xl { - @include nhsuk-typography-responsive(48); - - display: block; +.nhsuk-label--xl, +.nhsuk-label--l, +.nhsuk-label--m { font-weight: $nhsuk-font-bold; margin-top: 0; + margin-bottom: nhsuk-spacing(3); +} - @include nhsuk-responsive-margin(7, "bottom"); +.nhsuk-label--xl { + @include nhsuk-typography-responsive(48); } .nhsuk-label--l { @include nhsuk-typography-responsive(32); - - display: block; - font-weight: $nhsuk-font-bold; - margin-top: 0; - - @include nhsuk-responsive-margin(4, "bottom"); } .nhsuk-label--m { @include nhsuk-typography-responsive(24); - - display: block; - font-weight: $nhsuk-font-bold; - margin-top: 0; - - @include nhsuk-responsive-margin(4, "bottom"); } .nhsuk-label--s { @include nhsuk-typography-responsive(19); - - display: block; font-weight: $nhsuk-font-bold; margin-top: 0; - - @include nhsuk-responsive-margin(4, "bottom"); } // When the label is nested inside a heading, override the heading so that it diff --git a/packages/components/radios/radios.js b/packages/components/radios/radios.js index 48dba75f5..aaa6a5c63 100644 --- a/packages/components/radios/radios.js +++ b/packages/components/radios/radios.js @@ -5,9 +5,9 @@ import { toggleConditionalInput } from '../../common' * Test at http://0.0.0.0:3000/components/radios/conditional.html */ -export default () => { +export default ({ scope = document } = {}) => { // Radio input HTMLElements inside a conditional form group - const radioInputs = document.querySelectorAll('.nhsuk-radios--conditional .nhsuk-radios__input') + const radioInputs = scope.querySelectorAll('.nhsuk-radios--conditional .nhsuk-radios__input') /** * Update all conditional reveals to match checked state diff --git a/packages/components/select/_select.scss b/packages/components/select/_select.scss index 533b10aad..7f61cc13c 100644 --- a/packages/components/select/_select.scss +++ b/packages/components/select/_select.scss @@ -7,7 +7,7 @@ border: $nhsuk-border-width-form-element solid $nhsuk-form-border-color; box-sizing: border-box; - height: 40px; + min-height: 40px; max-width: 100%; padding: nhsuk-spacing(1); diff --git a/packages/components/tables/README.md b/packages/components/tables/README.md index 8134ec22a..5d48b479d 100644 --- a/packages/components/tables/README.md +++ b/packages/components/tables/README.md @@ -199,35 +199,35 @@ Find out more about the table component and when to use it in the [NHS digital s - Age 3 to 5 months (weighing more than 5kg) + Age 3 to 5 months (weighing more than 5kg) - How much? 2.5ml + 2.5ml - How often? Max 3 times in 24 hours + Max 3 times in 24 hours - Age 6 to 11 months + 6 to 11 months - How much? 2.5l + 2.5l - How often? Max 3 to 4 times in 24 hours + Max 3 to 4 times in 24 hours - Age 1 to 3 years + 1 to 3 years - How much? 5ml + 5ml - How often? Max 3 times in 24 hours + Max 3 times in 24 hours diff --git a/packages/components/tables/template.njk b/packages/components/tables/template.njk index 1199529cc..0c000b7eb 100644 --- a/packages/components/tables/template.njk +++ b/packages/components/tables/template.njk @@ -31,7 +31,7 @@ {%- if params.responsive %} {%- for cell in row %} - {{cell.header}} {{ cell.html | safe if cell.html else cell.text }} + {{ cell.html | safe if cell.html else cell.text }} {%- endfor %} {%- else %} diff --git a/packages/components/tabs/tabs.js b/packages/components/tabs/tabs.js index 75f5bbf9e..6c87bbc16 100644 --- a/packages/components/tabs/tabs.js +++ b/packages/components/tabs/tabs.js @@ -315,8 +315,8 @@ class Tabs { * Tabs({responsive: false}); * Tabs({namespace: 'my-custom-namespace'}); // Alters classes allowing alternative css */ -export default ({ namespace = 'nhsuk-tabs', responsive = true, historyEnabled = true } = {}) => { - const tabs = document.querySelectorAll(`[data-module="${namespace}"]`) +export default ({ namespace = 'nhsuk-tabs', responsive = true, historyEnabled = true, scope = document } = {}) => { + const tabs = scope.querySelectorAll(`[data-module="${namespace}"]`) tabs.forEach((el) => { new Tabs(el, namespace, responsive, historyEnabled).init() }) diff --git a/packages/core/README.md b/packages/core/README.md index 00b97c193..e90beb9d1 100644 --- a/packages/core/README.md +++ b/packages/core/README.md @@ -234,6 +234,8 @@ Hide elements visually but keep it in the DOM, useful for screen readers. The default `@font-face`, "Frutiger", is loaded from `https://assets.nhs.uk`. The host for the fonts can be overridden or disabled entirely. +NHS England has a licence for the Frutiger webfont that the NHS website team can use. All other NHS England teams and other NHS organisations **must** have their own licence with Monotype. + - `$nhsuk-fonts-path`: base URL to load fonts from (e.g. `/fonts/`; trailing slash required) - `$nhsuk-include-font-face`: set to false to disable the inclusion of the `@font-face` definition entirely diff --git a/packages/core/generic/_font-face.scss b/packages/core/generic/_font-face.scss index 074167f8a..57b5a7a6b 100644 --- a/packages/core/generic/_font-face.scss +++ b/packages/core/generic/_font-face.scss @@ -4,7 +4,8 @@ // NHS uses the Frutiger font, it was originally made // for print, but we've had to adapt for web. -// https://assets.nhs.uk/fonts/nhsuk-fonts-1.3.0.css +// NHS England has a licence for the Frutiger webfont that the NHS website team can use. +// All other NHS England teams and other NHS organisations must have their own licence with Monotype. /* stylelint-disable indentation */ diff --git a/packages/core/settings/_colours.scss b/packages/core/settings/_colours.scss index c3a5df2dd..89a37dc36 100644 --- a/packages/core/settings/_colours.scss +++ b/packages/core/settings/_colours.scss @@ -103,6 +103,8 @@ $color_transparent_nhsuk-blue-50: rgba($color_shade_nhsuk-blue-50, 0.1); $nhsuk-text-color: $color_nhsuk-black; $nhsuk-secondary-text-color: $color_nhsuk-grey-1; $nhsuk-print-text-color: $color_nhsuk-black; +$nhsuk-footer-link-text-color: #003087; +$nhsuk-footer-copyright-text-color: #231f20; // Links $nhsuk-link-color: $color_nhsuk-blue; diff --git a/packages/core/styles/_icons.scss b/packages/core/styles/_icons.scss index 5d94ab180..a05fa7ceb 100644 --- a/packages/core/styles/_icons.scss +++ b/packages/core/styles/_icons.scss @@ -48,15 +48,12 @@ } .nhsuk-icon__chevron-down { - fill: $color_nhsuk-blue; - -moz-transform: rotate(180deg); - -ms-transform: rotate(180deg); - -o-transform: rotate(180deg); - -webkit-transform: rotate(180deg); - transform: rotate(180deg); - path { - fill: $color_nhsuk-white; - } + fill: $color_nhsuk-white; + height: 24px; + position: absolute; + right: 4px; + transform: rotate(90deg); + width: 24px; } .nhsuk-icon__chevron-up { diff --git a/packages/core/styles/_lists.scss b/packages/core/styles/_lists.scss index eb52b3e07..07556cccc 100644 --- a/packages/core/styles/_lists.scss +++ b/packages/core/styles/_lists.scss @@ -23,6 +23,12 @@ list-style-type: none; margin-top: 0; padding-left: 0; + + // Add a top margin and remove bottom margin for nested lists + %nhsuk-list { + @include nhsuk-responsive-margin(2, "top"); + margin-bottom: 0; + } } %nhsuk-list > li { diff --git a/packages/core/tools/_mixins.scss b/packages/core/tools/_mixins.scss index 1eb3fc529..6febbbde5 100644 --- a/packages/core/tools/_mixins.scss +++ b/packages/core/tools/_mixins.scss @@ -248,89 +248,6 @@ } } -// -// Toggle button mixin -// used to toggle content -// -// Usage: @include toggle-button(); -// See components/header -// -// 1. Remove inner border on buttons for Firefox, see -// https://github.com/necolas/normalize.css/issues/393 -// 2. !important overrides focus style border: 0; -// - -@mixin toggle-button() { - background-color: transparent; - border: 1px solid $color_nhsuk-white; - border-radius: $nhsuk-border-radius; - color: $color_nhsuk-white; - cursor: pointer; - - &::-moz-focus-inner { - border: 0; // [1] // - } - - &:hover { - background-color: $color_shade_nhsuk-blue-35; - border-color: $color_nhsuk-grey-5; - box-shadow: none; - } - - &:focus { - border: 1px solid $nhsuk-focus-color !important; /* stylelint-disable-line declaration-no-important */ /* [2] */ - } - - &:active, - &.is-active { - background-color: $color_shade_nhsuk-blue-50; - border-color: $color_nhsuk-grey-5; - color: $color_nhsuk-grey-5; - } -} - -// -// Close button mixin -// used to close a content area -// -// Usage: @include close-button(); -// See components/header -// -// 1. Custom height and width of form items -// 2. Custom height and width of svg icons -// 3. Remove inner border on buttons for Firefox, see -// https://github.com/necolas/normalize.css/issues/393 -// - -@mixin close-button() { - background-color: transparent; - border: 0; - cursor: pointer; - height: 40px; // [1] // - padding: 0; - width: 40px; // [1] // - - .nhsuk-icon__close { - fill: $color_nhsuk-blue; - height: 40px; // [2] // - width: 40px; // [2] // - } - - &::-moz-focus-inner { - border: 0; // [3] // - } - - &:hover { - .nhsuk-icon__close { - fill: $nhsuk-secondary-button-hover-color; - } - } - - &:focus { - @include nhsuk-focused-text; - } -} - // // Remove margin mobile mixin, removes left and right // margin at tablet breakpoint. diff --git a/packages/nhsuk.js b/packages/nhsuk.js index 6334b30a3..f3638a347 100644 --- a/packages/nhsuk.js +++ b/packages/nhsuk.js @@ -1,25 +1,38 @@ // Components -import Button from './components/button/button' -import CharacterCount from './components/character-count/character-count' -import Checkboxes from './components/checkboxes/checkboxes' -import Details from './components/details/details' -import ErrorSummary from './components/error-summary/error-summary' -import Header from './components/header/header' -import Radios from './components/radios/radios' -import SkipLink from './components/skip-link/skip-link' -import Tabs from './components/tabs/tabs' +import initButton from './components/button/button' +import initCharacterCount from './components/character-count/character-count' +import initCheckboxes from './components/checkboxes/checkboxes' +import initDetails from './components/details/details' +import initErrorSummary from './components/error-summary/error-summary' +import initHeader from './components/header/header' +import initRadios from './components/radios/radios' +import initSkipLink from './components/skip-link/skip-link' +import initTabs from './components/tabs/tabs' import './polyfills' +/** + * Use this function to initialise nhsuk-frontend components within a + * given scope. This function is called by default with the document + * element, but you can call it again later with a new DOM element + * containing nhsuk-frontend components which you wish to initialise. + * + * @param {HTMLElement} scope + */ +export function initAll(scope) { + initButton({ scope }) + initCharacterCount({ scope }) + initCheckboxes({ scope }) + initDetails({ scope }) + initErrorSummary({ scope }) + initRadios({ scope }) + initTabs({ scope }) +} + // Initialize components document.addEventListener('DOMContentLoaded', () => { - CharacterCount() - Button() - Checkboxes() - Details() - ErrorSummary() - Header() - Radios() - SkipLink() - Tabs() + initHeader() + initSkipLink() + + initAll(document) }) diff --git a/packages/nhsuk.scss b/packages/nhsuk.scss index 07bdd5016..9c347aadc 100644 --- a/packages/nhsuk.scss +++ b/packages/nhsuk.scss @@ -16,6 +16,10 @@ @import "components/fieldset/fieldset"; @import "components/footer/footer"; @import "components/header/header"; +@import "components/header/header-organisation"; +@import "components/header/header-service"; +@import "components/header/header-transactional"; +@import "components/header/header-white"; @import "components/hero/hero"; @import "components/hint/hint"; @import "components/images/images"; diff --git a/sonar-project.properties b/sonar-project.properties new file mode 100644 index 000000000..43466a098 --- /dev/null +++ b/sonar-project.properties @@ -0,0 +1,24 @@ +# SonarQube properties +sonar.projectKey=nhsuk-frontend +sonar.organization=nhsdigital + +# Project language +sonar.language=js + +# Encoding of the source code. Default is default system encoding +sonar.sourceEncoding=UTF-8 + +# Add file exclusions +sonar.exclusions=reports/** + +# Add coverage exclusions +sonar.coverage.exclusions=**/*.config.js,**/coverage/**,**/*check-report.html + +# Adding the dependency-check parameter +sonar.dependencyCheck.htmlReportPath=reports/dependency-check/dependency-check-report.html + +# Encoding of the source code. Default is default system encoding +sonar.sourceEncoding=UTF-8 + +# Adding the coverage analysis parameter +sonar.javascript.lcov.reportPaths=./coverage/lcov.info \ No newline at end of file diff --git a/tests/backstop/backstop.js b/tests/backstop/backstop.js index a2f0cd979..92c41d2b6 100644 --- a/tests/backstop/backstop.js +++ b/tests/backstop/backstop.js @@ -197,9 +197,13 @@ module.exports = { url: `${TEST_URL}/details/expander-group.html`, }, { - label: 'Footer', + label: 'Footer (default)', url: `${TEST_URL}/footer/index.html`, }, + { + label: 'Footer (columns)', + url: `${TEST_URL}/footer/footer-in-columns.html`, + }, { label: 'Fieldset', url: `${TEST_URL}/fieldset/index.html`, @@ -213,9 +217,17 @@ module.exports = { url: `${TEST_URL}/fieldset/with-inputs.html`, }, { - label: 'Header', + label: 'Header (default)', url: `${TEST_URL}/header/index.html`, }, + { + label: 'Header with navigation', + url: `${TEST_URL}/header/header-navigation.html`, + }, + { + label: 'Header with search', + url: `${TEST_URL}/header/header-search.html`, + }, { label: 'Header with logo only', url: `${TEST_URL}/header/header-logo.html`, @@ -228,17 +240,21 @@ module.exports = { label: 'Header with a service name, search and navigation', url: `${TEST_URL}/header/header-service-name-with-nav.html`, }, - { - label: 'Header transactional', - url: `${TEST_URL}/header/header-transactional.html`, - }, { label: 'Header transactional with service name', url: `${TEST_URL}/header/header-transactional-service-name.html`, }, { - label: 'Header with navigation', - url: `${TEST_URL}/header/header-navigation.html`, + label: 'Header organisational', + url: `${TEST_URL}/header/header-org.html`, + }, + { + label: 'Header organisational with white header', + url: `${TEST_URL}/header/header-org-white.html`, + }, + { + label: 'Header organisational with white header and navigation', + url: `${TEST_URL}/header/header-org-white-nav.html`, }, { clickSelector: '#toggle-menu', @@ -262,39 +278,6 @@ module.exports = { }, ], }, - { - label: 'Header with search', - url: `${TEST_URL}/header/header-search.html`, - }, - { - clickSelector: '#toggle-search', - label: 'Header with search open', - url: `${TEST_URL}/header/header-search.html`, - viewports: [ - { - height: 568, - label: 'iPhone 5/SE', - width: 320, - }, - { - height: 667, - label: 'iPhone 6-8', - width: 375, - }, - ], - }, - { - label: 'Header organisational', - url: `${TEST_URL}/header/header-org.html`, - }, - { - label: 'Header organisational with white header', - url: `${TEST_URL}/header/header-org-white.html`, - }, - { - label: 'Header organisational with white header and navigation', - url: `${TEST_URL}/header/header-org-white-nav.html`, - }, { label: 'Hero', url: `${TEST_URL}/hero/index.html`, @@ -319,6 +302,10 @@ module.exports = { label: 'Input', url: `${TEST_URL}/input/index.html`, }, + { + label: 'Input with autocomplete attribute', + url: `${TEST_URL}/input/autocomplete.html`, + }, { label: 'Input with hint text', url: `${TEST_URL}/input/hint.html`, @@ -336,6 +323,27 @@ module.exports = { label: 'Input with width modifier', url: `${TEST_URL}/input/custom-width.html`, }, + { + label: 'Input with prefix', + url: `${TEST_URL}/input/prefix.html`, + }, + { + label: 'Input with suffix', + url: `${TEST_URL}/input/suffix.html`, + }, + { + label: 'Input with prefix and suffix', + url: `${TEST_URL}/input/prefix-and-suffix.html`, + }, + { + label: 'Input with error message, prefix and suffix', + url: `${TEST_URL}/input/error-and-prefix-and-suffix.html`, + }, + { + clickSelector: '#input-with-error-message-and-prefix-and-suffix', + label: 'Input with error message, prefix and suffix - focused', + url: `${TEST_URL}/input/error.html`, + }, { label: 'Inset text', url: `${TEST_URL}/inset-text/index.html`, diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Action_link_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Action_link_0_document_2_iPad.png index 8aaed7e88..ba353647e 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Action_link_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Action_link_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Action_link_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Action_link_0_document_3_Surface_iPad_Pro.png index 76e5123b0..c3cc3b25d 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Action_link_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Action_link_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Back_link_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Back_link_0_document_0_iPhone_5_SE.png index e2585fffb..748ffbc29 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Back_link_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Back_link_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Back_link_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Back_link_0_document_1_iPhone_6-8.png index 2a65dc607..d6a5b9ee6 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Back_link_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Back_link_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Back_link_as_button_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Back_link_as_button_0_document_0_iPhone_5_SE.png index e2585fffb..748ffbc29 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Back_link_as_button_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Back_link_as_button_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Back_link_as_button_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Back_link_as_button_0_document_1_iPhone_6-8.png index 2a65dc607..d6a5b9ee6 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Back_link_as_button_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Back_link_as_button_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Breadcrumb_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Breadcrumb_0_document_0_iPhone_5_SE.png index 84a550f27..d88d8828b 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Breadcrumb_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Breadcrumb_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Breadcrumb_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Breadcrumb_0_document_1_iPhone_6-8.png index d21272a15..50e6dc850 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Breadcrumb_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Breadcrumb_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Breadcrumb_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Breadcrumb_0_document_2_iPad.png index 307223df6..955b08dd6 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Breadcrumb_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Breadcrumb_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Breadcrumb_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Breadcrumb_0_document_3_Surface_iPad_Pro.png index 1de19e41e..b4b4a1a44 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Breadcrumb_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Breadcrumb_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_0_document_0_iPhone_5_SE.png index 27e8a4a44..2b2eb4396 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_0_document_1_iPhone_6-8.png index e5dd2c93d..adc7334ea 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_0_document_2_iPad.png index 18a9b54da..e6f90b2f9 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_0_document_3_Surface_iPad_Pro.png index b7715c4d8..3e62b9b96 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_as_a_link_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_as_a_link_0_document_0_iPhone_5_SE.png index 4a749efe8..7ac17378c 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_as_a_link_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_as_a_link_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_as_a_link_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_as_a_link_0_document_1_iPhone_6-8.png index 529e55edf..226a77fe9 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_as_a_link_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_as_a_link_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_click_0_document_0_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_click_0_document_0_Surface_iPad_Pro.png new file mode 100644 index 000000000..9f616db12 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_click_0_document_0_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_disabled_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_disabled_0_document_0_iPhone_5_SE.png index d0152ed8c..58b90e099 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_disabled_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_disabled_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_disabled_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_disabled_0_document_1_iPhone_6-8.png index a3f764842..69227fdc0 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_disabled_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_disabled_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_reverse_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_reverse_0_document_0_iPhone_5_SE.png index e4d816d1f..8cd814187 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_reverse_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_reverse_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_reverse_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_reverse_0_document_1_iPhone_6-8.png index 96ba577a7..bd2c26fce 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_reverse_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_reverse_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_reverse_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_reverse_0_document_2_iPad.png index 7c0ae54e9..6ddaf077b 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_reverse_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_reverse_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_reverse_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_reverse_0_document_3_Surface_iPad_Pro.png index b7fd34f73..5f0e9c045 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_reverse_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_reverse_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_secondary_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_secondary_0_document_0_iPhone_5_SE.png index a42fc7f57..df9d59eaa 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_secondary_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_secondary_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_secondary_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_secondary_0_document_1_iPhone_6-8.png index e5a4e8805..124429c9b 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_secondary_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Button_secondary_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Basic_card_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Basic_card_0_document_0_iPhone_5_SE.png index d4e005b6f..31a36bcd6 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Basic_card_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Basic_card_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Basic_card_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Basic_card_0_document_1_iPhone_6-8.png index 9aa3df8e7..1da87519f 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Basic_card_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Basic_card_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Basic_card_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Basic_card_0_document_2_iPad.png index 88628c1f5..ff7c7bc77 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Basic_card_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Basic_card_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Basic_card_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Basic_card_0_document_3_Surface_iPad_Pro.png index 648a7dc87..493bfd11c 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Basic_card_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Basic_card_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_group_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_group_0_document_0_iPhone_5_SE.png index 26d734615..2cf157717 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_group_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_group_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_group_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_group_0_document_1_iPhone_6-8.png index 058dad892..4ca2d0047 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_group_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_group_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_group_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_group_0_document_2_iPad.png index fc6a9a3a6..ea3fa9037 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_group_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_group_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_group_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_group_0_document_3_Surface_iPad_Pro.png index 0928d516f..ab030ba83 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_group_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_group_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_with_image_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_with_image_0_document_0_iPhone_5_SE.png index 13680f852..5fc934a19 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_with_image_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_with_image_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_with_image_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_with_image_0_document_1_iPhone_6-8.png index c2ecd181d..16b293d5f 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_with_image_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_with_image_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_with_image_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_with_image_0_document_2_iPad.png index 6a2a5dabe..386199211 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_with_image_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_with_image_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_with_image_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_with_image_0_document_3_Surface_iPad_Pro.png index 38a68b7b8..8f3b6fd68 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_with_image_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Card_with_image_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Clickable_card_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Clickable_card_0_document_0_iPhone_5_SE.png index 0a09cded7..d810c220d 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Clickable_card_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Clickable_card_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Clickable_card_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Clickable_card_0_document_1_iPhone_6-8.png index 10a095e50..21c1c2301 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Clickable_card_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Clickable_card_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Clickable_card_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Clickable_card_0_document_2_iPad.png index f58bc4a91..2cb404dd4 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Clickable_card_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Clickable_card_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Clickable_card_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Clickable_card_0_document_3_Surface_iPad_Pro.png index ebf02134d..f0e972ee4 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Clickable_card_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Card_-_Clickable_card_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Emergency_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Emergency_0_document_0_iPhone_5_SE.png index 0d3cf0f00..176557991 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Emergency_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Emergency_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Emergency_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Emergency_0_document_1_iPhone_6-8.png index 6b9f7a92d..c8288e0ce 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Emergency_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Emergency_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Emergency_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Emergency_0_document_2_iPad.png index c8415539e..7292f54b2 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Emergency_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Emergency_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Emergency_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Emergency_0_document_3_Surface_iPad_Pro.png index 445a06f0c..2efba40f1 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Emergency_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Emergency_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Non_urgent_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Non_urgent_0_document_0_iPhone_5_SE.png index 0cb31cdd0..51dbc905c 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Non_urgent_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Non_urgent_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Non_urgent_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Non_urgent_0_document_1_iPhone_6-8.png index 5ce3acfba..77b3135c0 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Non_urgent_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Non_urgent_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Non_urgent_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Non_urgent_0_document_2_iPad.png index b3e1fddc4..7f7479269 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Non_urgent_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Non_urgent_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Non_urgent_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Non_urgent_0_document_3_Surface_iPad_Pro.png index 28b0ac358..564388dc1 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Non_urgent_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Non_urgent_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Urgent_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Urgent_0_document_0_iPhone_5_SE.png index 659e43293..1a7c49b22 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Urgent_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Urgent_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Urgent_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Urgent_0_document_1_iPhone_6-8.png index a3307adc9..3fb235917 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Urgent_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Urgent_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Urgent_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Urgent_0_document_2_iPad.png index f658726e1..2078b64c8 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Urgent_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Urgent_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Urgent_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Urgent_0_document_3_Surface_iPad_Pro.png index 6ca5ae1bf..4655b9bf1 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Urgent_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Care_card_-_Urgent_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_characters_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_characters_0_document_0_iPhone_5_SE.png index b984963b7..5bdf547cc 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_characters_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_characters_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_characters_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_characters_0_document_1_iPhone_6-8.png index b6341d253..ac69d51df 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_characters_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_characters_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_characters_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_characters_0_document_2_iPad.png index 7b75f1cd1..6164021ea 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_characters_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_characters_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_characters_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_characters_0_document_3_Surface_iPad_Pro.png index d7c41d9c8..d3ee369fc 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_characters_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_characters_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_words_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_words_0_document_0_iPhone_5_SE.png index ac01aeda8..e2e30151c 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_words_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_words_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_words_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_words_0_document_1_iPhone_6-8.png index 2ef5cc0c6..8b96f4391 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_words_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_words_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_words_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_words_0_document_2_iPad.png index 40362998a..f46583002 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_words_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_words_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_words_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_words_0_document_3_Surface_iPad_Pro.png index 01f4a9b6e..6a2a2de9b 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_words_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_max_words_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_with_threshold_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_with_threshold_0_document_0_iPhone_5_SE.png index 20d4f8a76..a1f7fefb6 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_with_threshold_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_with_threshold_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_with_threshold_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_with_threshold_0_document_1_iPhone_6-8.png index 0d13646cd..eae6708cd 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_with_threshold_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_with_threshold_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_with_threshold_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_with_threshold_0_document_2_iPad.png index 7a64782ee..04159a839 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_with_threshold_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_with_threshold_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_with_threshold_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_with_threshold_0_document_3_Surface_iPad_Pro.png index 97a217b70..bf8f53ed9 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_with_threshold_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Character_Count_-_with_threshold_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_0_document_0_iPhone_5_SE.png index 15c5b9c5e..3b5f5a188 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_0_document_1_iPhone_6-8.png index 58cd93578..16b2024bd 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_0_document_2_iPad.png index 865ad5947..f242845e5 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_0_document_3_Surface_iPad_Pro.png index 7051f9e81..d7903c8d9 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_disabled_item_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_disabled_item_0_document_0_iPhone_5_SE.png index 6819644a1..8ffdd7d51 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_disabled_item_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_disabled_item_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_disabled_item_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_disabled_item_0_document_1_iPhone_6-8.png index f21b86a29..6057ab34e 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_disabled_item_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_disabled_item_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_error_message_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_error_message_0_document_0_iPhone_5_SE.png index 4dad3f4bf..56cc562a6 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_error_message_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_error_message_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_error_message_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_error_message_0_document_1_iPhone_6-8.png index 9dbcff235..cb36529cd 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_error_message_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_error_message_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_error_message_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_error_message_0_document_2_iPad.png index fdf463975..81c932e00 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_error_message_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_error_message_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_error_message_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_error_message_0_document_3_Surface_iPad_Pro.png index 7ae54e5c0..2f7d91e47 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_error_message_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_error_message_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_hint_text_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_hint_text_0_document_0_iPhone_5_SE.png index f18fcc6f1..07dea1c9f 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_hint_text_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_hint_text_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_hint_text_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_hint_text_0_document_1_iPhone_6-8.png index e018e0977..1628cddcf 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_hint_text_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_hint_text_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_hint_text_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_hint_text_0_document_2_iPad.png index 6125b8f3e..2a583dadb 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_hint_text_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_hint_text_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_hint_text_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_hint_text_0_document_3_Surface_iPad_Pro.png index 5fda228e8..45ec2ea1c 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_hint_text_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_hint_text_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_legend_as_page_heading_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_legend_as_page_heading_0_document_0_iPhone_5_SE.png index dc12f56ae..0c36cfde4 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_legend_as_page_heading_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_legend_as_page_heading_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_legend_as_page_heading_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_legend_as_page_heading_0_document_1_iPhone_6-8.png index 3148161fd..6b559f54d 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_legend_as_page_heading_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_legend_as_page_heading_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_legend_as_page_heading_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_legend_as_page_heading_0_document_2_iPad.png index ec8afd9fe..54e0b8816 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_legend_as_page_heading_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_legend_as_page_heading_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_legend_as_page_heading_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_legend_as_page_heading_0_document_3_Surface_iPad_Pro.png index d39f93544..b77521d1e 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_legend_as_page_heading_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_legend_as_page_heading_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_none_of_the_above_option_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_none_of_the_above_option_0_document_0_iPhone_5_SE.png index da5e8dbff..f22a33b3f 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_none_of_the_above_option_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_none_of_the_above_option_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_none_of_the_above_option_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_none_of_the_above_option_0_document_1_iPhone_6-8.png index 4bf2ef6a2..17df617f3 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_none_of_the_above_option_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_none_of_the_above_option_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_none_of_the_above_option_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_none_of_the_above_option_0_document_2_iPad.png index 94f5e977f..f20e7ac55 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_none_of_the_above_option_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_none_of_the_above_option_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_none_of_the_above_option_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_none_of_the_above_option_0_document_3_Surface_iPad_Pro.png index 649d7dd7f..75b84790a 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_none_of_the_above_option_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Checkboxes_with_none_of_the_above_option_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Contents_list_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Contents_list_0_document_0_iPhone_5_SE.png index 1ab29de36..2afa3c512 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Contents_list_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Contents_list_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Contents_list_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Contents_list_0_document_1_iPhone_6-8.png index b0fbee7ff..2b9fc82af 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Contents_list_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Contents_list_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Contents_list_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Contents_list_0_document_2_iPad.png index 720dcf2f2..65641102a 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Contents_list_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Contents_list_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Contents_list_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Contents_list_0_document_3_Surface_iPad_Pro.png index c1d19fd2f..62032f937 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Contents_list_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Contents_list_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_0_document_0_iPhone_5_SE.png index 4fbaeff9b..5afc331ec 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_0_document_1_iPhone_6-8.png index 60951661d..7d7d7084f 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_0_document_2_iPad.png index 1d581cd39..ef569f87d 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_0_document_3_Surface_iPad_Pro.png index b6f57ab3a..6669bc9f8 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_with_multiple_errors_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_with_multiple_errors_0_document_0_iPhone_5_SE.png index 9cd30bde6..6f0ffc220 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_with_multiple_errors_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_with_multiple_errors_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_with_multiple_errors_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_with_multiple_errors_0_document_1_iPhone_6-8.png index 7839dabb0..a1482c79c 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_with_multiple_errors_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_with_multiple_errors_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_with_multiple_errors_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_with_multiple_errors_0_document_2_iPad.png index ba9265fb3..0f3c4f5b8 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_with_multiple_errors_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_with_multiple_errors_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_with_multiple_errors_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_with_multiple_errors_0_document_3_Surface_iPad_Pro.png index 3f6070d85..71c358552 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_with_multiple_errors_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Date_input_with_multiple_errors_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Do__Dont_list_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Do__Dont_list_0_document_0_iPhone_5_SE.png index 13c9707c1..f9aa69248 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Do__Dont_list_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Do__Dont_list_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Do__Dont_list_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Do__Dont_list_0_document_1_iPhone_6-8.png index 44a5a7f60..2ea5731c8 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Do__Dont_list_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Do__Dont_list_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Do__Dont_list_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Do__Dont_list_0_document_2_iPad.png index 20ff897d7..80279e45f 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Do__Dont_list_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Do__Dont_list_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Do__Dont_list_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Do__Dont_list_0_document_3_Surface_iPad_Pro.png index c457f2ba4..6f25bdb9d 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Do__Dont_list_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Do__Dont_list_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_message_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_message_0_document_0_iPhone_5_SE.png index 7cdefbb30..b845063c4 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_message_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_message_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_message_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_message_0_document_1_iPhone_6-8.png index 8d7e7d31e..c79ea3cb9 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_message_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_message_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_message_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_message_0_document_2_iPad.png index 75bd4f4b9..51d1b21f1 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_message_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_message_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_message_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_message_0_document_3_Surface_iPad_Pro.png index 497ebe1a1..57c379ceb 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_message_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_message_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_0_document_0_iPhone_5_SE.png index 66998240e..5747871df 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_0_document_1_iPhone_6-8.png index ea0902e10..e20f68360 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_0_document_2_iPad.png index 6df8926c9..660bd43cd 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_0_document_3_Surface_iPad_Pro.png index 9c3820f94..f3e54cdca 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_a_radio_field_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_a_radio_field_0_document_0_iPhone_5_SE.png index 29ef2039b..49a83835b 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_a_radio_field_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_a_radio_field_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_a_radio_field_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_a_radio_field_0_document_1_iPhone_6-8.png index a8af80798..6d313a836 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_a_radio_field_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_a_radio_field_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_a_radio_field_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_a_radio_field_0_document_2_iPad.png index 6f7380187..7ccc45e0b 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_a_radio_field_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_a_radio_field_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_a_radio_field_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_a_radio_field_0_document_3_Surface_iPad_Pro.png index 2bc475723..c438a8264 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_a_radio_field_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_a_radio_field_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_an_input_field_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_an_input_field_0_document_0_iPhone_5_SE.png index 77c87f5a0..b807fd98f 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_an_input_field_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_an_input_field_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_an_input_field_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_an_input_field_0_document_1_iPhone_6-8.png index be8243eeb..3f9a2b386 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_an_input_field_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_an_input_field_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_an_input_field_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_an_input_field_0_document_2_iPad.png index bc7e87bc8..013791241 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_an_input_field_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_an_input_field_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_an_input_field_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_an_input_field_0_document_3_Surface_iPad_Pro.png index 74ac97706..c76b46c11 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_an_input_field_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Error_summary_with_link_to_an_input_field_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_0_document_0_iPhone_5_SE.png index 20334f487..788a58951 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_0_document_1_iPhone_6-8.png index 7879eb1b2..ef75489a5 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_0_document_3_Surface_iPad_Pro.png index afa5c2bd7..c6ead76ee 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_as_page_heading_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_as_page_heading_0_document_0_iPhone_5_SE.png index 7a314bf00..017c98a82 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_as_page_heading_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_as_page_heading_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_as_page_heading_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_as_page_heading_0_document_1_iPhone_6-8.png index 854d2e602..72457835f 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_as_page_heading_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_as_page_heading_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_as_page_heading_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_as_page_heading_0_document_2_iPad.png index 52359fd25..58b0e6534 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_as_page_heading_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_as_page_heading_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_as_page_heading_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_as_page_heading_0_document_3_Surface_iPad_Pro.png index f6fd57ffe..9f8ba81f1 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_as_page_heading_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_as_page_heading_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_with_inputs_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_with_inputs_0_document_0_iPhone_5_SE.png index 38d6f5bbd..5a9bea36f 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_with_inputs_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_with_inputs_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_with_inputs_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_with_inputs_0_document_1_iPhone_6-8.png index c60754e94..43f696300 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_with_inputs_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_with_inputs_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_with_inputs_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_with_inputs_0_document_2_iPad.png index 925aa4c99..6fa1c6695 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_with_inputs_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_with_inputs_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_with_inputs_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_with_inputs_0_document_3_Surface_iPad_Pro.png index 15cd2a892..0ae2f6d56 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_with_inputs_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Fieldset_with_inputs_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_columns_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_columns_0_document_0_iPhone_5_SE.png new file mode 100644 index 000000000..e35358e2c Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_columns_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_columns_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_columns_0_document_1_iPhone_6-8.png new file mode 100644 index 000000000..790c1f468 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_columns_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_columns_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_columns_0_document_2_iPad.png new file mode 100644 index 000000000..cb149fddf Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_columns_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_columns_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_columns_0_document_3_Surface_iPad_Pro.png new file mode 100644 index 000000000..a77ff7a19 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_columns_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_default_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_default_0_document_0_iPhone_5_SE.png new file mode 100644 index 000000000..60b7dd99d Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_default_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_default_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_default_0_document_1_iPhone_6-8.png new file mode 100644 index 000000000..08e70b8fc Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_default_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_default_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_default_0_document_2_iPad.png new file mode 100644 index 000000000..18a7a32a2 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_default_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_default_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_default_0_document_3_Surface_iPad_Pro.png new file mode 100644 index 000000000..af6d061db Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_default_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_without_bottom_border_columns_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_without_bottom_border_columns_0_document_0_iPhone_5_SE.png new file mode 100644 index 000000000..e35358e2c Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_without_bottom_border_columns_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_without_bottom_border_columns_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_without_bottom_border_columns_0_document_1_iPhone_6-8.png new file mode 100644 index 000000000..790c1f468 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_without_bottom_border_columns_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_without_bottom_border_columns_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_without_bottom_border_columns_0_document_2_iPad.png new file mode 100644 index 000000000..cb149fddf Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_without_bottom_border_columns_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_without_bottom_border_columns_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_without_bottom_border_columns_0_document_3_Surface_iPad_Pro.png new file mode 100644 index 000000000..a77ff7a19 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_without_bottom_border_columns_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_without_bottom_border_default_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_without_bottom_border_default_0_document_0_iPhone_5_SE.png new file mode 100644 index 000000000..da63c0803 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_without_bottom_border_default_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_without_bottom_border_default_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_without_bottom_border_default_0_document_1_iPhone_6-8.png new file mode 100644 index 000000000..d722c2a32 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_without_bottom_border_default_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_without_bottom_border_default_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_without_bottom_border_default_0_document_2_iPad.png new file mode 100644 index 000000000..42e5057a0 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_without_bottom_border_default_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_without_bottom_border_default_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_without_bottom_border_default_0_document_3_Surface_iPad_Pro.png new file mode 100644 index 000000000..be577e2e6 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Footer_without_bottom_border_default_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_default_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_default_0_document_0_iPhone_5_SE.png new file mode 100644 index 000000000..44be54faf Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_default_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_default_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_default_0_document_1_iPhone_6-8.png new file mode 100644 index 000000000..bab041c0c Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_default_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_default_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_default_0_document_2_iPad.png new file mode 100644 index 000000000..144821211 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_default_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_default_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_default_0_document_3_Surface_iPad_Pro.png new file mode 100644 index 000000000..f75ba6381 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_default_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_0_document_0_iPhone_5_SE.png index de8fc0518..4809905b8 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_0_document_1_iPhone_6-8.png index 50195885b..24dab4e0c 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_0_document_2_iPad.png index 19ac91a2e..84ee4b1e1 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_0_document_3_Surface_iPad_Pro.png index 846735ad4..d457cb508 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_0_document_0_iPhone_5_SE.png index 4ce1c1fad..c86167a0e 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_0_document_1_iPhone_6-8.png index bb0404dbd..05569a975 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_0_document_2_iPad.png index ecab7ac48..f1491738d 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_0_document_3_Surface_iPad_Pro.png index ec1b63bef..8cb862ce8 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_and_navigation_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_and_navigation_0_document_0_iPhone_5_SE.png index 4ce1c1fad..eff068fb3 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_and_navigation_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_and_navigation_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_and_navigation_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_and_navigation_0_document_1_iPhone_6-8.png index bb0404dbd..31c9910c8 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_and_navigation_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_and_navigation_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_and_navigation_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_and_navigation_0_document_2_iPad.png index ecab7ac48..675283fab 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_and_navigation_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_and_navigation_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_and_navigation_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_and_navigation_0_document_3_Surface_iPad_Pro.png index 3be4c2c1d..b666cf6fd 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_and_navigation_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_organisational_with_white_header_and_navigation_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_transactional_with_service_name_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_transactional_with_service_name_0_document_0_iPhone_5_SE.png index c8180ca60..1283e46d2 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_transactional_with_service_name_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_transactional_with_service_name_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_transactional_with_service_name_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_transactional_with_service_name_0_document_1_iPhone_6-8.png index d57abd04f..b2b74b1ab 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_transactional_with_service_name_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_transactional_with_service_name_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_transactional_with_service_name_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_transactional_with_service_name_0_document_2_iPad.png index 4e2c373ec..0df4b88c3 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_transactional_with_service_name_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_transactional_with_service_name_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_transactional_with_service_name_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_transactional_with_service_name_0_document_3_Surface_iPad_Pro.png index 1d73d78e1..bfb88ba93 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_transactional_with_service_name_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_transactional_with_service_name_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_0_document_0_iPhone_5_SE.png index ece7cd03c..f0e01a0d0 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_0_document_1_iPhone_6-8.png index 146f4e93b..071755153 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_0_document_2_iPad.png index 989cfbd8a..38504fbc1 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_0_document_3_Surface_iPad_Pro.png index c4149a8fd..c4361de78 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_search_and_navigation_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_search_and_navigation_0_document_0_iPhone_5_SE.png index 2345cd9cb..eadb3c540 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_search_and_navigation_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_search_and_navigation_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_search_and_navigation_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_search_and_navigation_0_document_1_iPhone_6-8.png index 374f837f5..f47c8dcbc 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_search_and_navigation_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_search_and_navigation_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_search_and_navigation_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_search_and_navigation_0_document_2_iPad.png index 2186e709d..be37ead0d 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_search_and_navigation_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_search_and_navigation_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_search_and_navigation_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_search_and_navigation_0_document_3_Surface_iPad_Pro.png index 080f2febb..9d51b9024 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_search_and_navigation_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_a_service_name_search_and_navigation_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_logo_only_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_logo_only_0_document_0_iPhone_5_SE.png index 766479e01..9a5bc7f36 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_logo_only_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_logo_only_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_logo_only_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_logo_only_0_document_1_iPhone_6-8.png index 24906ee66..5d1ec01c9 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_logo_only_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_logo_only_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_logo_only_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_logo_only_0_document_2_iPad.png index c9d05ce51..28fbdd8af 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_logo_only_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_logo_only_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_logo_only_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_logo_only_0_document_3_Surface_iPad_Pro.png index f85e4e5f9..c0b42811a 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_logo_only_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_logo_only_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_navigation_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_navigation_0_document_0_iPhone_5_SE.png index db3981e7f..d24ce3ddb 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_navigation_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_navigation_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_navigation_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_navigation_0_document_1_iPhone_6-8.png index dacbc46f9..a023cff2c 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_navigation_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_navigation_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_navigation_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_navigation_0_document_2_iPad.png index a46108040..a114d1faf 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_navigation_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_navigation_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_navigation_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_navigation_0_document_3_Surface_iPad_Pro.png index 89cf51aad..77322f4de 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_navigation_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_navigation_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_search_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_search_0_document_0_iPhone_5_SE.png index 2466882cf..d08db65f6 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_search_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_search_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_search_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_search_0_document_1_iPhone_6-8.png index b181ecedb..582fdc905 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_search_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_search_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_search_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_search_0_document_2_iPad.png index a3e000d25..6824ffb97 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_search_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_search_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_search_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_search_0_document_3_Surface_iPad_Pro.png index 7b58d1353..9d3be2a55 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_search_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Header_with_search_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_0_document_0_iPhone_5_SE.png index 960a7c728..077fb89bb 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_0_document_1_iPhone_6-8.png index 1f1fbf94f..12e632555 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_0_document_2_iPad.png index 3a059e878..594f65f50 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_0_document_3_Surface_iPad_Pro.png index 4e5a40e5f..7923a2fbb 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_with_image_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_with_image_0_document_2_iPad.png index 11062ccdd..a4ff48343 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_with_image_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_with_image_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_with_image_and_content_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_with_image_and_content_0_document_0_iPhone_5_SE.png index 09b507ec3..69fbc8339 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_with_image_and_content_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_with_image_and_content_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_with_image_and_content_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_with_image_and_content_0_document_1_iPhone_6-8.png index 4e4d174c6..d4cfc2d33 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_with_image_and_content_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_with_image_and_content_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_with_image_and_content_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_with_image_and_content_0_document_2_iPad.png index b3adccb55..4fc7daf20 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_with_image_and_content_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_with_image_and_content_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_with_image_and_content_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_with_image_and_content_0_document_3_Surface_iPad_Pro.png index 8cb535bfb..85817e329 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_with_image_and_content_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Hero_with_image_and_content_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Hint_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Hint_0_document_0_iPhone_5_SE.png index 88f71491b..0be290363 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Hint_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Hint_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Hint_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Hint_0_document_1_iPhone_6-8.png index 7771c87f7..699422acb 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Hint_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Hint_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Hint_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Hint_0_document_2_iPad.png index 559dc406d..79fc02003 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Hint_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Hint_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Hint_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Hint_0_document_3_Surface_iPad_Pro.png index b1fcdef30..dbf49660a 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Hint_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Hint_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Images_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Images_0_document_0_iPhone_5_SE.png index 8905b7981..9a2f84080 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Images_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Images_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Images_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Images_0_document_1_iPhone_6-8.png index 7d83b24f2..8c0889714 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Images_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Images_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Images_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Images_0_document_2_iPad.png index 5c114dc06..9a7896e25 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Images_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Images_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Images_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Images_0_document_3_Surface_iPad_Pro.png index 5b9d16d37..3221888bb 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Images_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Images_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_0_document_0_iPhone_5_SE.png index ead5cb87e..04ba25378 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_0_document_1_iPhone_6-8.png index 407219e4f..dfe1093e6 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_0_document_2_iPad.png index 0d12a4606..de6aab0fd 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_0_document_3_Surface_iPad_Pro.png index 6be7ccc00..ce7887901 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_autocomplete_attribute_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_autocomplete_attribute_0_document_0_iPhone_5_SE.png new file mode 100644 index 000000000..1290e0929 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_autocomplete_attribute_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_autocomplete_attribute_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_autocomplete_attribute_0_document_1_iPhone_6-8.png new file mode 100644 index 000000000..ea25e078b Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_autocomplete_attribute_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_autocomplete_attribute_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_autocomplete_attribute_0_document_2_iPad.png new file mode 100644 index 000000000..d9db7bbe6 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_autocomplete_attribute_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_autocomplete_attribute_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_autocomplete_attribute_0_document_3_Surface_iPad_Pro.png new file mode 100644 index 000000000..3137fa0bf Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_autocomplete_attribute_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_0_document_0_iPhone_5_SE.png index 08052deb2..340873c65 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_0_document_1_iPhone_6-8.png index 98fe6bd68..be1411cb0 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_0_document_2_iPad.png index 847fb8a79..dd8a324bd 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_0_document_3_Surface_iPad_Pro.png index 566bd7ab4..ce775d344 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_prefix_and_suffix_-_focused_0__0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_prefix_and_suffix_-_focused_0__0_iPhone_5_SE.png new file mode 100644 index 000000000..25deaa434 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_prefix_and_suffix_-_focused_0__0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_prefix_and_suffix_-_focused_0__1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_prefix_and_suffix_-_focused_0__1_iPhone_6-8.png new file mode 100644 index 000000000..25deaa434 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_prefix_and_suffix_-_focused_0__1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_prefix_and_suffix_-_focused_0__2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_prefix_and_suffix_-_focused_0__2_iPad.png new file mode 100644 index 000000000..25deaa434 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_prefix_and_suffix_-_focused_0__2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_prefix_and_suffix_-_focused_0__3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_prefix_and_suffix_-_focused_0__3_Surface_iPad_Pro.png new file mode 100644 index 000000000..25deaa434 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_prefix_and_suffix_-_focused_0__3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_prefix_and_suffix_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_prefix_and_suffix_0_document_0_iPhone_5_SE.png new file mode 100644 index 000000000..84fc05262 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_prefix_and_suffix_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_prefix_and_suffix_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_prefix_and_suffix_0_document_1_iPhone_6-8.png new file mode 100644 index 000000000..93234b818 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_prefix_and_suffix_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_prefix_and_suffix_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_prefix_and_suffix_0_document_2_iPad.png new file mode 100644 index 000000000..403deeb8b Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_prefix_and_suffix_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_prefix_and_suffix_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_prefix_and_suffix_0_document_3_Surface_iPad_Pro.png new file mode 100644 index 000000000..a835afbba Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_error_message_prefix_and_suffix_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_hint_text_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_hint_text_0_document_0_iPhone_5_SE.png index d8682f1be..35413c6b4 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_hint_text_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_hint_text_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_hint_text_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_hint_text_0_document_1_iPhone_6-8.png index 26c37effd..536598b84 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_hint_text_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_hint_text_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_hint_text_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_hint_text_0_document_2_iPad.png index aaf5c0fc4..7aa9dd1b3 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_hint_text_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_hint_text_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_hint_text_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_hint_text_0_document_3_Surface_iPad_Pro.png index be8bdd36f..4d7778a3b 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_hint_text_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_hint_text_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_prefix_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_prefix_0_document_0_iPhone_5_SE.png new file mode 100644 index 000000000..c9fa6d468 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_prefix_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_prefix_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_prefix_0_document_1_iPhone_6-8.png new file mode 100644 index 000000000..6133f4dec Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_prefix_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_prefix_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_prefix_0_document_2_iPad.png new file mode 100644 index 000000000..3683f22a9 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_prefix_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_prefix_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_prefix_0_document_3_Surface_iPad_Pro.png new file mode 100644 index 000000000..cd35e4138 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_prefix_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_prefix_and_suffix_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_prefix_and_suffix_0_document_0_iPhone_5_SE.png new file mode 100644 index 000000000..369907917 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_prefix_and_suffix_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_prefix_and_suffix_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_prefix_and_suffix_0_document_1_iPhone_6-8.png new file mode 100644 index 000000000..645bb4dbf Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_prefix_and_suffix_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_prefix_and_suffix_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_prefix_and_suffix_0_document_2_iPad.png new file mode 100644 index 000000000..84f33349c Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_prefix_and_suffix_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_prefix_and_suffix_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_prefix_and_suffix_0_document_3_Surface_iPad_Pro.png new file mode 100644 index 000000000..1de5114b7 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_prefix_and_suffix_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_suffix_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_suffix_0_document_0_iPhone_5_SE.png new file mode 100644 index 000000000..e750065f5 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_suffix_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_suffix_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_suffix_0_document_1_iPhone_6-8.png new file mode 100644 index 000000000..b28f11865 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_suffix_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_suffix_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_suffix_0_document_2_iPad.png new file mode 100644 index 000000000..b141ad37c Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_suffix_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_suffix_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_suffix_0_document_3_Surface_iPad_Pro.png new file mode 100644 index 000000000..6ee483c96 Binary files /dev/null and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_suffix_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_width_modifier_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_width_modifier_0_document_0_iPhone_5_SE.png index 096c28b66..6f5ea70c2 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_width_modifier_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_width_modifier_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_width_modifier_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_width_modifier_0_document_1_iPhone_6-8.png index 7bbf910e6..2d272cc28 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_width_modifier_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_width_modifier_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_width_modifier_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_width_modifier_0_document_2_iPad.png index aad5f929b..74767a8b6 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_width_modifier_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_width_modifier_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_width_modifier_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_width_modifier_0_document_3_Surface_iPad_Pro.png index 1cc1f2151..3c37d0f78 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_width_modifier_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Input_with_width_modifier_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Inset_text_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Inset_text_0_document_0_iPhone_5_SE.png index 79f1c809b..746fa1553 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Inset_text_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Inset_text_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Inset_text_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Inset_text_0_document_1_iPhone_6-8.png index f1f05850b..8a9ad267e 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Inset_text_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Inset_text_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Inset_text_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Inset_text_0_document_2_iPad.png index 44b8796c5..8e9927e2b 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Inset_text_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Inset_text_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Inset_text_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Inset_text_0_document_3_Surface_iPad_Pro.png index 3af04d110..95d731c32 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Inset_text_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Inset_text_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_0_document_0_iPhone_5_SE.png index 81ecf6fca..cc431e6c3 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_0_document_1_iPhone_6-8.png index 3a3e0c658..dea577836 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_0_document_2_iPad.png index 007046ab6..e382fe485 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_0_document_3_Surface_iPad_Pro.png index 9f25a4a66..1fcea9a9a 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_as_page_heading_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_as_page_heading_0_document_0_iPhone_5_SE.png index fc4a93f35..57e65f78d 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_as_page_heading_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_as_page_heading_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_as_page_heading_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_as_page_heading_0_document_1_iPhone_6-8.png index 1e5d649cc..a30de3442 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_as_page_heading_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_as_page_heading_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_as_page_heading_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_as_page_heading_0_document_2_iPad.png index ec79c3b71..bc53679c3 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_as_page_heading_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_as_page_heading_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_as_page_heading_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_as_page_heading_0_document_3_Surface_iPad_Pro.png index 170d50955..f7909f128 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_as_page_heading_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_as_page_heading_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_with_bold_text_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_with_bold_text_0_document_0_iPhone_5_SE.png index d30b2e61f..fe6705b08 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_with_bold_text_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_with_bold_text_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_with_bold_text_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_with_bold_text_0_document_1_iPhone_6-8.png index 1ebb97891..cd8f6a9cc 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_with_bold_text_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_with_bold_text_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_with_bold_text_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_with_bold_text_0_document_2_iPad.png index f4b019520..397c325e8 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_with_bold_text_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_with_bold_text_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_with_bold_text_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_with_bold_text_0_document_3_Surface_iPad_Pro.png index 7f4e8a629..71bf3f0b8 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_with_bold_text_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Label_with_bold_text_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Pagination_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Pagination_0_document_0_iPhone_5_SE.png index 7ab958532..06410b00a 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Pagination_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Pagination_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Pagination_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Pagination_0_document_1_iPhone_6-8.png index 457555ef4..e9f44a28d 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Pagination_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Pagination_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Pagination_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Pagination_0_document_2_iPad.png index b79a0e61f..626530a2d 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Pagination_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Pagination_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Pagination_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Pagination_0_document_3_Surface_iPad_Pro.png index a85b4139d..ee3080fa9 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Pagination_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Pagination_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_0_document_0_iPhone_5_SE.png index ebb1abd58..12f7c7ff7 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_0_document_1_iPhone_6-8.png index ae5a06c0a..a53fcbae5 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_0_document_2_iPad.png index bd76ebd81..dadd96b78 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_0_document_3_Surface_iPad_Pro.png index 64a8627e2..fee115090 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_disabled_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_disabled_0_document_0_iPhone_5_SE.png index 7c66ae1bb..8db7646a7 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_disabled_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_disabled_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_disabled_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_disabled_0_document_1_iPhone_6-8.png index bab5cac3a..d03308a10 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_disabled_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_disabled_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_disabled_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_disabled_0_document_2_iPad.png index cb8781caf..f168d43a5 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_disabled_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_disabled_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_disabled_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_disabled_0_document_3_Surface_iPad_Pro.png index fd7955ef6..d9078d4f4 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_disabled_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_disabled_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_inline_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_inline_0_document_0_iPhone_5_SE.png index ebb1abd58..12f7c7ff7 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_inline_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_inline_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_inline_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_inline_0_document_1_iPhone_6-8.png index ae5a06c0a..a53fcbae5 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_inline_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_inline_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_inline_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_inline_0_document_2_iPad.png index 85a1cd2f9..dfcd7c933 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_inline_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_inline_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_inline_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_inline_0_document_3_Surface_iPad_Pro.png index c35ce4618..098d7c049 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_inline_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_inline_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_a_divider_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_a_divider_0_document_0_iPhone_5_SE.png index 8aee8521f..d816d7948 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_a_divider_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_a_divider_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_a_divider_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_a_divider_0_document_1_iPhone_6-8.png index 5ed57ebb9..c3109ba5f 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_a_divider_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_a_divider_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_a_divider_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_a_divider_0_document_2_iPad.png index 110bc3cb3..0030bd59a 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_a_divider_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_a_divider_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_a_divider_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_a_divider_0_document_3_Surface_iPad_Pro.png index 996efd1bd..483992053 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_a_divider_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_a_divider_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_0_document_0_iPhone_5_SE.png index a363ff3a8..5aff3a8da 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_0_document_1_iPhone_6-8.png index 18db98963..1dbafac5a 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_0_document_2_iPad.png index 3fb665179..28355f23f 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_0_document_3_Surface_iPad_Pro.png index eeac446cf..d47b224e0 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_and_error_message_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_and_error_message_0_document_0_iPhone_5_SE.png index 0f082bb76..2400fc6c1 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_and_error_message_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_and_error_message_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_and_error_message_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_and_error_message_0_document_1_iPhone_6-8.png index 78d982af4..3e7ce0c62 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_and_error_message_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_and_error_message_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_and_error_message_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_and_error_message_0_document_2_iPad.png index 1c18bae92..9eacd8cdb 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_and_error_message_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_and_error_message_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_and_error_message_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_and_error_message_0_document_3_Surface_iPad_Pro.png index 2e38d3a7a..07a293222 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_and_error_message_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_with_hint_text_and_error_message_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_without_fieldset_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_without_fieldset_0_document_0_iPhone_5_SE.png index 23a191764..2bad9c4f0 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_without_fieldset_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_without_fieldset_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_without_fieldset_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_without_fieldset_0_document_1_iPhone_6-8.png index ab3581175..f6c585630 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_without_fieldset_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Radios_without_fieldset_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Responsive_table_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Responsive_table_0_document_0_iPhone_5_SE.png index 2657fc5f8..35b9133ba 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Responsive_table_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Responsive_table_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Responsive_table_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Responsive_table_0_document_1_iPhone_6-8.png index a7c5b2115..3c8d6f6ca 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Responsive_table_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Responsive_table_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Responsive_table_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Responsive_table_0_document_2_iPad.png index 79cd9d685..b47620cfd 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Responsive_table_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Responsive_table_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Responsive_table_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Responsive_table_0_document_3_Surface_iPad_Pro.png index 32d90d210..cddc2da1a 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Responsive_table_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Responsive_table_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_0_document_0_iPhone_5_SE.png index 8d5914ccd..44f1cb749 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_0_document_1_iPhone_6-8.png index 5617369e4..67e686c36 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_0_document_2_iPad.png index a02fffb56..df21b95de 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_0_document_3_Surface_iPad_Pro.png index 28aa0fb00..b5f6ed8f0 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_with_hint_text_and_error_message_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_with_hint_text_and_error_message_0_document_0_iPhone_5_SE.png index 84638d20c..4bbb3158f 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_with_hint_text_and_error_message_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_with_hint_text_and_error_message_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_with_hint_text_and_error_message_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_with_hint_text_and_error_message_0_document_1_iPhone_6-8.png index 0bf31d2a3..385e90c34 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_with_hint_text_and_error_message_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_with_hint_text_and_error_message_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_with_hint_text_and_error_message_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_with_hint_text_and_error_message_0_document_2_iPad.png index 64627e975..b92cffb8d 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_with_hint_text_and_error_message_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_with_hint_text_and_error_message_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_with_hint_text_and_error_message_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_with_hint_text_and_error_message_0_document_3_Surface_iPad_Pro.png index a6e56583c..0eb2fd89d 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_with_hint_text_and_error_message_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Select_with_hint_text_and_error_message_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_0_document_0_iPhone_5_SE.png index 5e02c9032..485006f1d 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_0_document_1_iPhone_6-8.png index 134dea4b3..73da7d6e2 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_0_document_2_iPad.png index 12e2de546..3eed50fd2 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_0_document_3_Surface_iPad_Pro.png index 96d6af149..332b97549 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_actions_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_actions_0_document_0_iPhone_5_SE.png index 78987ec93..0a43dd5b7 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_actions_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_actions_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_actions_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_actions_0_document_1_iPhone_6-8.png index 07e525a48..f99c4e526 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_actions_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_actions_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_actions_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_actions_0_document_2_iPad.png index febdbe6f2..a1929269b 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_actions_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_actions_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_actions_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_actions_0_document_3_Surface_iPad_Pro.png index 30488d15a..25f586a53 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_actions_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_actions_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_border_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_border_0_document_0_iPhone_5_SE.png index 5ddd1a9a3..57a99fabe 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_border_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_border_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_border_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_border_0_document_1_iPhone_6-8.png index 9a65dbe9e..1c204dea5 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_border_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_border_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_border_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_border_0_document_2_iPad.png index 46a9f82c9..48d6ad3ee 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_border_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_border_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_border_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_border_0_document_3_Surface_iPad_Pro.png index 974a19e41..d5828d306 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_border_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Summary_list_without_border_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_0_document_0_iPhone_5_SE.png index 81417ae97..917190061 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_0_document_1_iPhone_6-8.png index 356c0404e..fb3ad248d 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_0_document_2_iPad.png index 5673d1e85..5afc1c51f 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_0_document_3_Surface_iPad_Pro.png index 76ce7aaa6..23943bd50 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_as_panel_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_as_panel_0_document_0_iPhone_5_SE.png index 83ec21685..57ed55431 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_as_panel_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_as_panel_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_as_panel_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_as_panel_0_document_1_iPhone_6-8.png index 354f41026..83ce77d3a 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_as_panel_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_as_panel_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_as_panel_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_as_panel_0_document_2_iPad.png index 63e880f64..8684e000c 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_as_panel_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_as_panel_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_as_panel_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_as_panel_0_document_3_Surface_iPad_Pro.png index 4dede9385..bea5d9332 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_as_panel_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Table_as_panel_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Tabs_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Tabs_0_document_0_iPhone_5_SE.png index c83868a31..1d4b2e68a 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Tabs_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Tabs_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Tabs_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Tabs_0_document_1_iPhone_6-8.png index c2db4ddf0..723e948db 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Tabs_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Tabs_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Tabs_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Tabs_0_document_2_iPad.png index ee91b290a..0cdfe54a4 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Tabs_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Tabs_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Tabs_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Tabs_0_document_3_Surface_iPad_Pro.png index df5bbfd10..129a3c2dc 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Tabs_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Tabs_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Tag_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Tag_0_document_0_iPhone_5_SE.png index 4443f3810..f6281d544 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Tag_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Tag_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Tag_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Tag_0_document_1_iPhone_6-8.png index 5985e3352..e4acf63fc 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Tag_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Tag_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Tag_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Tag_0_document_2_iPad.png index 44db3f4f5..dfa6cca71 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Tag_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Tag_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Tag_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Tag_0_document_3_Surface_iPad_Pro.png index bcb30658d..31293e010 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Tag_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Tag_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_0_document_0_iPhone_5_SE.png index 20d4f8a76..a1f7fefb6 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_0_document_1_iPhone_6-8.png index 0d13646cd..eae6708cd 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_0_document_2_iPad.png index 7a64782ee..04159a839 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_0_document_3_Surface_iPad_Pro.png index 97a217b70..bf8f53ed9 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_with_error_message_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_with_error_message_0_document_0_iPhone_5_SE.png index a00d675d6..4592519db 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_with_error_message_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_with_error_message_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_with_error_message_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_with_error_message_0_document_1_iPhone_6-8.png index f812bda99..fcc2177d8 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_with_error_message_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_with_error_message_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_with_error_message_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_with_error_message_0_document_2_iPad.png index 383a7654c..bdf2e3a66 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_with_error_message_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_with_error_message_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_with_error_message_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_with_error_message_0_document_3_Surface_iPad_Pro.png index f1bb7a6cc..c97562345 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_with_error_message_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Textarea_with_error_message_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_0_document_0_iPhone_5_SE.png index 3c65c15c0..64b454d00 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_0_document_1_iPhone_6-8.png index b3a0f132c..011636497 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_0_document_2_iPad.png index 1eaaa389d..6be8d521d 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_0_document_3_Surface_iPad_Pro.png index 32552cad0..94e5a9854 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_with_custom_heading_0_document_0_iPhone_5_SE.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_with_custom_heading_0_document_0_iPhone_5_SE.png index 012b52157..411a6c84e 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_with_custom_heading_0_document_0_iPhone_5_SE.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_with_custom_heading_0_document_0_iPhone_5_SE.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_with_custom_heading_0_document_1_iPhone_6-8.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_with_custom_heading_0_document_1_iPhone_6-8.png index 40df178fa..c116ea8c3 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_with_custom_heading_0_document_1_iPhone_6-8.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_with_custom_heading_0_document_1_iPhone_6-8.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_with_custom_heading_0_document_2_iPad.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_with_custom_heading_0_document_2_iPad.png index a15864b0c..85035655b 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_with_custom_heading_0_document_2_iPad.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_with_custom_heading_0_document_2_iPad.png differ diff --git a/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_with_custom_heading_0_document_3_Surface_iPad_Pro.png b/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_with_custom_heading_0_document_3_Surface_iPad_Pro.png index c495cca72..a5afbc34d 100644 Binary files a/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_with_custom_heading_0_document_3_Surface_iPad_Pro.png and b/tests/backstop/bitmaps_reference/nhsuk-frontend_Warning_callout_with_custom_heading_0_document_3_Surface_iPad_Pro.png differ diff --git a/tests/integration/jsdom/header.test.js b/tests/integration/jsdom/header.test.js new file mode 100644 index 000000000..2c9847abb --- /dev/null +++ b/tests/integration/jsdom/header.test.js @@ -0,0 +1,171 @@ +import Header from '../../../packages/components/header/header.js' + +describe('Header class', () => { + beforeEach(() => { + document.body.innerHTML = ` +
    +
    +
  • Health A-Z
  • +
  • NHS services
  • +
  • Live Well
  • +
  • Mental health
  • +
  • Care and support
  • +
  • Pregnancy
  • +
  • Home
  • +
  • More
  • +
    +
    +
    +
    + ` + }) + + it('Should create navigation elements in the DOM', async () => { + // Call the Header initialization function + await Header() + + // Ensure the navigation elements are created in the DOM + expect(document.querySelector('.nhsuk-navigation')).not.toBeNull() + }) + + it('Should toggle mobile menu visibility', async () => { + const toggleButton = document.querySelector('.nhsuk-header__menu-toggle') + let mobileMenuList = document.querySelector('.nhsuk-mobile-menu-container ul') + // Call the Header initialization function + await Header() + + mobileMenuList = document.querySelector('.nhsuk-mobile-menu-container ul') + // Initially, the menu should be closed + expect(mobileMenuList.classList.contains('nhsuk-header__drop-down--hidden')).toBe(true) + + // Open the mobile menu + toggleButton.click() + + expect(mobileMenuList.classList.contains('nhsuk-header__drop-down--hidden')).toBe(false) + + // Close the mobile menu + toggleButton.click() + + expect(mobileMenuList.classList.contains('nhsuk-header__drop-down--hidden')).toBe(true) + }) + + it('Should close menu when escape key is pressed', async () => { + //define a event for the escape key + const escapeKeyEvent = new KeyboardEvent('keydown', { + key: 'Escape', + code: 'Escape', + keyCode: 27, + which: 27, + charCode: 27 + }) + const toggleButton = document.querySelector('.nhsuk-header__menu-toggle') + + await Header() + + //Expect the menu to be hidden initially + expect( + document.querySelector('.nhsuk-header__drop-down').classList.contains('nhsuk-header__drop-down--hidden') + ).toBe(true) + + //Toogle the menu - open it + toggleButton.click() + expect( + document.querySelector('.nhsuk-header__drop-down').classList.contains('nhsuk-header__drop-down--hidden') + ).toBe(false) + + //Press the escape key to close it + document.dispatchEvent(escapeKeyEvent) + expect( + document.querySelector('.nhsuk-header__drop-down').classList.contains('nhsuk-header__drop-down--hidden') + ).toBe(true) + }) + + it('Should setup the Mobile Menu Container during initialization', async () => { + const mobileMenuContainer = document.querySelector('.nhsuk-mobile-menu-container') + expect(mobileMenuContainer.childElementCount).toBe(0) + await Header() + expect(mobileMenuContainer.childElementCount).toBeGreaterThan(0) + }) + + it('Should setup the Mobile Menu List during initialization', async () => { + //Initially there won't be any ul elements inside the container- it gets added in the setupMobileMenu method + let mobileMenuList = document.querySelector('.nhsuk-mobile-menu-container ul') + + //So we expect that to be null until it gets created + expect(mobileMenuList).toBe(null) + + // Call the Header initialization function + await Header() + + //We update the variable to hold the ul element from the container that has been created + mobileMenuList = document.querySelector('.nhsuk-mobile-menu-container ul') + + expect(mobileMenuList).not.toBeNull() + expect(mobileMenuList.classList).toContain('nhsuk-header__drop-down') + expect(mobileMenuList.classList).toContain('nhsuk-header__drop-down--hidden') + }) + + it('Should not update navigation when the available space is enough for all elements', async () => { + const mobileMenuToggleButton = document.querySelector('.nhsuk-header__menu-toggle') + const mobileMenuContainer = document.querySelector('.nhsuk-mobile-menu-container') + const navigationElement = document.querySelector('.nhsuk-navigation') + const navigationList = document.querySelector('.nhsuk-header__navigation-list') + let mobileMenuList = document.querySelector('.nhsuk-mobile-menu-container ul') + + // Spy on offsetWidth property for navigation element + const navigationOffsetWidthSpy = jest.spyOn(HTMLElement.prototype, 'offsetWidth', 'get') + // Mock offsetWidth for navigation element + navigationOffsetWidthSpy.mockImplementation(function () { + if (this === navigationElement) { + return 1000 // Mock navigation element offsetWidth + } + return 50 // Mock children offsetWidth + }) + + await Header() + + // breakpoints will be [50,100,150,200,250,300,350,400] + // the available space - navigation offsetWidth - will be greater than the last element from the breakpoints array + // meaning we don't need the mobile menu to get any items from the navigation + expect(mobileMenuToggleButton.classList.contains('nhsuk-header__menu-toggle--visible')).toBe(false) + expect(mobileMenuContainer.classList.contains('nhsuk-mobile-menu-container--visible')).toBe(false) + + mobileMenuList = document.querySelector('.nhsuk-mobile-menu-container ul') + expect(mobileMenuList.children).toHaveLength(0) + expect(navigationList.children).toHaveLength(8) + + navigationOffsetWidthSpy.mockRestore() + }) + + it('Should update navigation when the available space is not enough for all elements', async () => { + const mobileMenuToggleButton = document.querySelector('.nhsuk-header__menu-toggle') + const mobileMenuContainer = document.querySelector('.nhsuk-mobile-menu-container') + const navigationElement = document.querySelector('.nhsuk-navigation') + const navigationList = document.querySelector('.nhsuk-header__navigation-list') + let mobileMenuList = document.querySelector('.nhsuk-mobile-menu-container ul') + + // Spy on offsetWidth property for navigation element + const navigationOffsetWidthSpy = jest.spyOn(HTMLElement.prototype, 'offsetWidth', 'get') + // Mock offsetWidth for navigation element + navigationOffsetWidthSpy.mockImplementation(function () { + if (this === navigationElement) { + return 700 // Mock navigation element offsetWidth + } + return 100 // Mock children offsetWidth + }) + + await Header() + + // breakpoints will be [100,200,300,400,500,600,700,800] + // the available space - navigation offsetWidth - will be smaller than the last element from the breakpoints array + // meaning we need the mobile menu to get 1 item from the navigation + expect(mobileMenuToggleButton.classList.contains('nhsuk-header__menu-toggle--visible')).toBe(true) + expect(mobileMenuContainer.classList.contains('nhsuk-mobile-menu-container--visible')).toBe(true) + + mobileMenuList = document.querySelector('.nhsuk-mobile-menu-container ul') + expect(mobileMenuList.children).toHaveLength(1) + expect(navigationList.children).toHaveLength(7) + + navigationOffsetWidthSpy.mockRestore() + }) +}) diff --git a/tests/integration/jsdom/searchToggle.test.js b/tests/integration/jsdom/searchToggle.test.js deleted file mode 100644 index 363df28b5..000000000 --- a/tests/integration/jsdom/searchToggle.test.js +++ /dev/null @@ -1,98 +0,0 @@ -import SearchToggle from '../../../packages/components/header/searchToggle' - -const toggleButtonHtml = - '' -const closeButtonHtml = - '' -const searchContainerHtml = '' -const menuSearchContainerHtml = '
    ' - -// DOM Elements to be set -let toggleButton -let closeButton -let searchContainer -let menuSearchContainer - -// Helper to set DOM Elements -const initTest = (html) => { - document.body.innerHTML = html || toggleButtonHtml + closeButtonHtml + searchContainerHtml + menuSearchContainerHtml - toggleButton = document.querySelector('#toggle-search') - closeButton = document.querySelector('#close-search') - searchContainer = document.querySelector('#wrap-search') - menuSearchContainer = document.querySelector('#content-header') - SearchToggle() -} - -describe('NHS.UK menuToggle()', () => { - describe('Does not throw an error', () => { - it('if no document exists', () => { - SearchToggle() - }) - it('if no toggleButton exists', () => { - initTest(closeButtonHtml + searchContainerHtml + menuSearchContainerHtml) - expect(toggleButton).toBeNull() - expect(closeButton).toBeDefined() - expect(searchContainerHtml).toBeDefined() - expect(menuSearchContainerHtml).toBeDefined() - }) - - it('if no closeButton exists', () => { - initTest(toggleButtonHtml + searchContainerHtml + menuSearchContainerHtml) - expect(toggleButton).toBeDefined() - expect(closeButton).toBeNull() - expect(searchContainerHtml).toBeDefined() - expect(menuSearchContainerHtml).toBeDefined() - }) - - it('if no searchContainerHtml exists', () => { - initTest(toggleButtonHtml + closeButtonHtml + menuSearchContainerHtml) - expect(toggleButton).toBeDefined() - expect(closeButton).toBeDefined() - expect(searchContainer).toBeNull() - expect(menuSearchContainer).toBeDefined() - }) - - it('if no menuSearchContainerHtml exists', () => { - initTest(toggleButtonHtml + closeButtonHtml + searchContainerHtml) - expect(toggleButton).toBeDefined() - expect(closeButton).toBeDefined() - expect(searchContainer).toBeDefined() - expect(menuSearchContainer).toBeNull() - }) - }) - - describe('Adds correct classes and attributes to elements', () => { - it('when toggleButton is clicked for the first time', () => { - initTest() - toggleButton.click() - expect(toggleButton.getAttribute('aria-expanded')).toEqual('true') - expect(toggleButton.classList.contains('is-active')).toEqual(true) - expect(searchContainer.classList.contains('js-show')).toEqual(true) - expect(menuSearchContainer.classList.contains('js-show')).toEqual(true) - }) - - it('when toggleButton is clicked twice', () => { - initTest() - toggleButton.click() - expect(toggleButton.getAttribute('aria-expanded')).toEqual('true') - expect(searchContainer.classList.contains('js-show')).toEqual(true) - expect(menuSearchContainer.classList.contains('js-show')).toEqual(true) - toggleButton.click() - expect(toggleButton.getAttribute('aria-expanded')).toEqual('false') - expect(searchContainer.classList.contains('js-show')).toEqual(false) - expect(menuSearchContainer.classList.contains('js-show')).toEqual(false) - }) - - it('when toggleButton is clicked then closeButton is clicked', () => { - initTest() - toggleButton.click() - expect(toggleButton.getAttribute('aria-expanded')).toEqual('true') - expect(searchContainer.classList.contains('js-show')).toEqual(true) - expect(menuSearchContainer.classList.contains('js-show')).toEqual(true) - closeButton.click() - expect(toggleButton.getAttribute('aria-expanded')).toEqual('false') - expect(searchContainer.classList.contains('js-show')).toEqual(false) - expect(menuSearchContainer.classList.contains('js-show')).toEqual(false) - }) - }) -}) diff --git a/tests/linters/.htmlhintrc b/tests/linters/.htmlhintrc index ac1ce47e4..55633c2a4 100644 --- a/tests/linters/.htmlhintrc +++ b/tests/linters/.htmlhintrc @@ -73,7 +73,6 @@ "attr-no-duplication": true, "tag-pair": true, "spec-char-escape": true, - "doctype-first": true, "tag-self-close": false, "title-require": true, "attr-value-not-empty": false, @@ -84,6 +83,5 @@ "id-class-value": false, "inline-script-disabled": true, "inline-style-disabled": false, - "space-tab-mixed-disabled": "space2", "style-disabled": true }