diff --git a/README.md b/README.md index 7233a9175a4..87c6e9dec78 100644 --- a/README.md +++ b/README.md @@ -87,9 +87,17 @@ that we're gaining out of the community. So please support us in any way possibl ## Migration -Check our migration docs for breaking changes +### From DB UI Core or DB UI Elements to DB UI Mono -1. [Alpha ➡ Beta](https://github.com/db-ui/mono/tree/main/docs) (0.0.x➡0.x.x) +We're providing a detailed migration for each component next to the documentation of each component: + + +### In between DB UI Mono versions + +Check our migration docs for breaking changes: + +1. [Alpha ➡ Beta](https://github.com/db-ui/mono/tree/main/docs/migration/alpha-beta.md) (0.0.x➡0.x.x) +2. [v0.2 ➡ v0.3](https://github.com/db-ui/mono/tree/main/docs/migration/v0.2.x-to-v0.3.x.md) ## How to start develop / contribute diff --git a/__snapshots__/card/showcase/chromium-highContrast/DBCard-should-match-screenshot-1/DBCard-should-match-screenshot.png b/__snapshots__/card/showcase/chromium-highContrast/DBCard-should-match-screenshot-1/DBCard-should-match-screenshot.png index af12e2b6d61..cc81c41d03e 100644 Binary files a/__snapshots__/card/showcase/chromium-highContrast/DBCard-should-match-screenshot-1/DBCard-should-match-screenshot.png and b/__snapshots__/card/showcase/chromium-highContrast/DBCard-should-match-screenshot-1/DBCard-should-match-screenshot.png differ diff --git a/__snapshots__/card/showcase/chromium/DBCard-should-match-screenshot-1/DBCard-should-match-screenshot.png b/__snapshots__/card/showcase/chromium/DBCard-should-match-screenshot-1/DBCard-should-match-screenshot.png index 92e8abef31d..6fd49a8eb58 100644 Binary files a/__snapshots__/card/showcase/chromium/DBCard-should-match-screenshot-1/DBCard-should-match-screenshot.png and b/__snapshots__/card/showcase/chromium/DBCard-should-match-screenshot-1/DBCard-should-match-screenshot.png differ diff --git a/__snapshots__/card/showcase/firefox/DBCard-should-match-screenshot-1/DBCard-should-match-screenshot.png b/__snapshots__/card/showcase/firefox/DBCard-should-match-screenshot-1/DBCard-should-match-screenshot.png index c008332af4e..4271cea00c7 100644 Binary files a/__snapshots__/card/showcase/firefox/DBCard-should-match-screenshot-1/DBCard-should-match-screenshot.png and b/__snapshots__/card/showcase/firefox/DBCard-should-match-screenshot-1/DBCard-should-match-screenshot.png differ diff --git a/__snapshots__/card/showcase/mobile-chrome/DBCard-should-match-screenshot-1/DBCard-should-match-screenshot.png b/__snapshots__/card/showcase/mobile-chrome/DBCard-should-match-screenshot-1/DBCard-should-match-screenshot.png index c45a35cf549..6dc2721119e 100644 Binary files a/__snapshots__/card/showcase/mobile-chrome/DBCard-should-match-screenshot-1/DBCard-should-match-screenshot.png and b/__snapshots__/card/showcase/mobile-chrome/DBCard-should-match-screenshot-1/DBCard-should-match-screenshot.png differ diff --git a/__snapshots__/card/showcase/mobile-safari/DBCard-should-match-screenshot-1/DBCard-should-match-screenshot.png b/__snapshots__/card/showcase/mobile-safari/DBCard-should-match-screenshot-1/DBCard-should-match-screenshot.png index 24357a57141..f359d0552e3 100644 Binary files a/__snapshots__/card/showcase/mobile-safari/DBCard-should-match-screenshot-1/DBCard-should-match-screenshot.png and b/__snapshots__/card/showcase/mobile-safari/DBCard-should-match-screenshot-1/DBCard-should-match-screenshot.png differ diff --git a/__snapshots__/card/showcase/webkit/DBCard-should-match-screenshot-1/DBCard-should-match-screenshot.png b/__snapshots__/card/showcase/webkit/DBCard-should-match-screenshot-1/DBCard-should-match-screenshot.png index 73ed4e6ffcc..650c3b36741 100644 Binary files a/__snapshots__/card/showcase/webkit/DBCard-should-match-screenshot-1/DBCard-should-match-screenshot.png and b/__snapshots__/card/showcase/webkit/DBCard-should-match-screenshot-1/DBCard-should-match-screenshot.png differ diff --git a/__snapshots__/divider/patternhub/divider-properties-should-match-screenshot.png b/__snapshots__/divider/patternhub/divider-properties-should-match-screenshot.png index e50d1307a3a..458e3e1a7ee 100644 Binary files a/__snapshots__/divider/patternhub/divider-properties-should-match-screenshot.png and b/__snapshots__/divider/patternhub/divider-properties-should-match-screenshot.png differ diff --git a/__snapshots__/drawer/showcase/chromium-highContrast/DBDrawer-should-match-screenshot-1/DBDrawer-should-match-screenshot.png b/__snapshots__/drawer/showcase/chromium-highContrast/DBDrawer-should-match-screenshot-1/DBDrawer-should-match-screenshot.png index 502a693660f..699dd84375d 100644 Binary files a/__snapshots__/drawer/showcase/chromium-highContrast/DBDrawer-should-match-screenshot-1/DBDrawer-should-match-screenshot.png and b/__snapshots__/drawer/showcase/chromium-highContrast/DBDrawer-should-match-screenshot-1/DBDrawer-should-match-screenshot.png differ diff --git a/__snapshots__/drawer/showcase/chromium/DBDrawer-should-match-screenshot-1/DBDrawer-should-match-screenshot.png b/__snapshots__/drawer/showcase/chromium/DBDrawer-should-match-screenshot-1/DBDrawer-should-match-screenshot.png index fd5bdbc1ae0..10803607fbf 100644 Binary files a/__snapshots__/drawer/showcase/chromium/DBDrawer-should-match-screenshot-1/DBDrawer-should-match-screenshot.png and b/__snapshots__/drawer/showcase/chromium/DBDrawer-should-match-screenshot-1/DBDrawer-should-match-screenshot.png differ diff --git a/__snapshots__/drawer/showcase/firefox/DBDrawer-should-match-screenshot-1/DBDrawer-should-match-screenshot.png b/__snapshots__/drawer/showcase/firefox/DBDrawer-should-match-screenshot-1/DBDrawer-should-match-screenshot.png index 96a9a99cbb6..ec1d5999f46 100644 Binary files a/__snapshots__/drawer/showcase/firefox/DBDrawer-should-match-screenshot-1/DBDrawer-should-match-screenshot.png and b/__snapshots__/drawer/showcase/firefox/DBDrawer-should-match-screenshot-1/DBDrawer-should-match-screenshot.png differ diff --git a/__snapshots__/drawer/showcase/mobile-chrome/DBDrawer-should-match-screenshot-1/DBDrawer-should-match-screenshot.png b/__snapshots__/drawer/showcase/mobile-chrome/DBDrawer-should-match-screenshot-1/DBDrawer-should-match-screenshot.png index 7e24949b239..e38f588dae0 100644 Binary files a/__snapshots__/drawer/showcase/mobile-chrome/DBDrawer-should-match-screenshot-1/DBDrawer-should-match-screenshot.png and b/__snapshots__/drawer/showcase/mobile-chrome/DBDrawer-should-match-screenshot-1/DBDrawer-should-match-screenshot.png differ diff --git a/__snapshots__/drawer/showcase/mobile-safari/DBDrawer-should-match-screenshot-1/DBDrawer-should-match-screenshot.png b/__snapshots__/drawer/showcase/mobile-safari/DBDrawer-should-match-screenshot-1/DBDrawer-should-match-screenshot.png index 8172fef6aed..d1439d4fc97 100644 Binary files a/__snapshots__/drawer/showcase/mobile-safari/DBDrawer-should-match-screenshot-1/DBDrawer-should-match-screenshot.png and b/__snapshots__/drawer/showcase/mobile-safari/DBDrawer-should-match-screenshot-1/DBDrawer-should-match-screenshot.png differ diff --git a/__snapshots__/drawer/showcase/webkit/DBDrawer-should-match-screenshot-1/DBDrawer-should-match-screenshot.png b/__snapshots__/drawer/showcase/webkit/DBDrawer-should-match-screenshot-1/DBDrawer-should-match-screenshot.png index 3daa7cdb939..0cf3665329a 100644 Binary files a/__snapshots__/drawer/showcase/webkit/DBDrawer-should-match-screenshot-1/DBDrawer-should-match-screenshot.png and b/__snapshots__/drawer/showcase/webkit/DBDrawer-should-match-screenshot-1/DBDrawer-should-match-screenshot.png differ diff --git a/__snapshots__/input/showcase/chromium-highContrast/DBInput-should-match-screenshot-1/DBInput-should-match-screenshot.png b/__snapshots__/input/showcase/chromium-highContrast/DBInput-should-match-screenshot-1/DBInput-should-match-screenshot.png index 64311df908a..767e345f869 100644 Binary files a/__snapshots__/input/showcase/chromium-highContrast/DBInput-should-match-screenshot-1/DBInput-should-match-screenshot.png and b/__snapshots__/input/showcase/chromium-highContrast/DBInput-should-match-screenshot-1/DBInput-should-match-screenshot.png differ diff --git a/__snapshots__/input/showcase/chromium/DBInput-should-match-screenshot-1/DBInput-should-match-screenshot.png b/__snapshots__/input/showcase/chromium/DBInput-should-match-screenshot-1/DBInput-should-match-screenshot.png index 9fc51c58d8c..f1f22bb753e 100644 Binary files a/__snapshots__/input/showcase/chromium/DBInput-should-match-screenshot-1/DBInput-should-match-screenshot.png and b/__snapshots__/input/showcase/chromium/DBInput-should-match-screenshot-1/DBInput-should-match-screenshot.png differ diff --git a/__snapshots__/input/showcase/firefox/DBInput-should-match-screenshot-1/DBInput-should-match-screenshot.png b/__snapshots__/input/showcase/firefox/DBInput-should-match-screenshot-1/DBInput-should-match-screenshot.png index c8fcf1184e1..9c0879f0c63 100644 Binary files a/__snapshots__/input/showcase/firefox/DBInput-should-match-screenshot-1/DBInput-should-match-screenshot.png and b/__snapshots__/input/showcase/firefox/DBInput-should-match-screenshot-1/DBInput-should-match-screenshot.png differ diff --git a/__snapshots__/input/showcase/mobile-chrome/DBInput-should-match-screenshot-1/DBInput-should-match-screenshot.png b/__snapshots__/input/showcase/mobile-chrome/DBInput-should-match-screenshot-1/DBInput-should-match-screenshot.png index 4cdec40b5b0..3c60420b7db 100644 Binary files a/__snapshots__/input/showcase/mobile-chrome/DBInput-should-match-screenshot-1/DBInput-should-match-screenshot.png and b/__snapshots__/input/showcase/mobile-chrome/DBInput-should-match-screenshot-1/DBInput-should-match-screenshot.png differ diff --git a/__snapshots__/input/showcase/mobile-safari/DBInput-should-match-screenshot-1/DBInput-should-match-screenshot.png b/__snapshots__/input/showcase/mobile-safari/DBInput-should-match-screenshot-1/DBInput-should-match-screenshot.png index 15a6e213b8a..4abc63df4ce 100644 Binary files a/__snapshots__/input/showcase/mobile-safari/DBInput-should-match-screenshot-1/DBInput-should-match-screenshot.png and b/__snapshots__/input/showcase/mobile-safari/DBInput-should-match-screenshot-1/DBInput-should-match-screenshot.png differ diff --git a/__snapshots__/input/showcase/webkit/DBInput-should-match-screenshot-1/DBInput-should-match-screenshot.png b/__snapshots__/input/showcase/webkit/DBInput-should-match-screenshot-1/DBInput-should-match-screenshot.png index 933e2a37d56..95615c343c6 100644 Binary files a/__snapshots__/input/showcase/webkit/DBInput-should-match-screenshot-1/DBInput-should-match-screenshot.png and b/__snapshots__/input/showcase/webkit/DBInput-should-match-screenshot-1/DBInput-should-match-screenshot.png differ diff --git a/__snapshots__/popover/showcase/chromium-highContrast/DBPopover-should-match-screenshot-1/DBPopover-should-match-screenshot.png b/__snapshots__/popover/showcase/chromium-highContrast/DBPopover-should-match-screenshot-1/DBPopover-should-match-screenshot.png index ee47aa2efb9..a35693b00db 100644 Binary files a/__snapshots__/popover/showcase/chromium-highContrast/DBPopover-should-match-screenshot-1/DBPopover-should-match-screenshot.png and b/__snapshots__/popover/showcase/chromium-highContrast/DBPopover-should-match-screenshot-1/DBPopover-should-match-screenshot.png differ diff --git a/__snapshots__/popover/showcase/chromium/DBPopover-should-match-screenshot-1/DBPopover-should-match-screenshot.png b/__snapshots__/popover/showcase/chromium/DBPopover-should-match-screenshot-1/DBPopover-should-match-screenshot.png index 6214289725d..189f3d357e0 100644 Binary files a/__snapshots__/popover/showcase/chromium/DBPopover-should-match-screenshot-1/DBPopover-should-match-screenshot.png and b/__snapshots__/popover/showcase/chromium/DBPopover-should-match-screenshot-1/DBPopover-should-match-screenshot.png differ diff --git a/__snapshots__/popover/showcase/firefox/DBPopover-should-match-screenshot-1/DBPopover-should-match-screenshot.png b/__snapshots__/popover/showcase/firefox/DBPopover-should-match-screenshot-1/DBPopover-should-match-screenshot.png index 070c950bfae..db6d3ff5a0f 100644 Binary files a/__snapshots__/popover/showcase/firefox/DBPopover-should-match-screenshot-1/DBPopover-should-match-screenshot.png and b/__snapshots__/popover/showcase/firefox/DBPopover-should-match-screenshot-1/DBPopover-should-match-screenshot.png differ diff --git a/__snapshots__/popover/showcase/mobile-chrome/DBPopover-should-match-screenshot-1/DBPopover-should-match-screenshot.png b/__snapshots__/popover/showcase/mobile-chrome/DBPopover-should-match-screenshot-1/DBPopover-should-match-screenshot.png index a712ecd7e2e..c5034dada37 100644 Binary files a/__snapshots__/popover/showcase/mobile-chrome/DBPopover-should-match-screenshot-1/DBPopover-should-match-screenshot.png and b/__snapshots__/popover/showcase/mobile-chrome/DBPopover-should-match-screenshot-1/DBPopover-should-match-screenshot.png differ diff --git a/__snapshots__/popover/showcase/mobile-safari/DBPopover-should-match-screenshot-1/DBPopover-should-match-screenshot.png b/__snapshots__/popover/showcase/mobile-safari/DBPopover-should-match-screenshot-1/DBPopover-should-match-screenshot.png index f006c2fdaa0..7a005846b30 100644 Binary files a/__snapshots__/popover/showcase/mobile-safari/DBPopover-should-match-screenshot-1/DBPopover-should-match-screenshot.png and b/__snapshots__/popover/showcase/mobile-safari/DBPopover-should-match-screenshot-1/DBPopover-should-match-screenshot.png differ diff --git a/__snapshots__/popover/showcase/webkit/DBPopover-should-match-screenshot-1/DBPopover-should-match-screenshot.png b/__snapshots__/popover/showcase/webkit/DBPopover-should-match-screenshot-1/DBPopover-should-match-screenshot.png index 01b1fdae26e..6173a91fd2f 100644 Binary files a/__snapshots__/popover/showcase/webkit/DBPopover-should-match-screenshot-1/DBPopover-should-match-screenshot.png and b/__snapshots__/popover/showcase/webkit/DBPopover-should-match-screenshot-1/DBPopover-should-match-screenshot.png differ diff --git a/__snapshots__/section/showcase/chromium-highContrast/DBSection-should-match-screenshot-1/DBSection-should-match-screenshot.png b/__snapshots__/section/showcase/chromium-highContrast/DBSection-should-match-screenshot-1/DBSection-should-match-screenshot.png index 9ca3277d0d5..05a2f2f98dd 100644 Binary files a/__snapshots__/section/showcase/chromium-highContrast/DBSection-should-match-screenshot-1/DBSection-should-match-screenshot.png and b/__snapshots__/section/showcase/chromium-highContrast/DBSection-should-match-screenshot-1/DBSection-should-match-screenshot.png differ diff --git a/__snapshots__/section/showcase/chromium/DBSection-should-match-screenshot-1/DBSection-should-match-screenshot.png b/__snapshots__/section/showcase/chromium/DBSection-should-match-screenshot-1/DBSection-should-match-screenshot.png index 20cded139f1..54adb8a1b48 100644 Binary files a/__snapshots__/section/showcase/chromium/DBSection-should-match-screenshot-1/DBSection-should-match-screenshot.png and b/__snapshots__/section/showcase/chromium/DBSection-should-match-screenshot-1/DBSection-should-match-screenshot.png differ diff --git a/__snapshots__/section/showcase/firefox/DBSection-should-match-screenshot-1/DBSection-should-match-screenshot.png b/__snapshots__/section/showcase/firefox/DBSection-should-match-screenshot-1/DBSection-should-match-screenshot.png index 9b31a1bdb7f..6cf6d83aaba 100644 Binary files a/__snapshots__/section/showcase/firefox/DBSection-should-match-screenshot-1/DBSection-should-match-screenshot.png and b/__snapshots__/section/showcase/firefox/DBSection-should-match-screenshot-1/DBSection-should-match-screenshot.png differ diff --git a/__snapshots__/section/showcase/mobile-chrome/DBSection-should-match-screenshot-1/DBSection-should-match-screenshot.png b/__snapshots__/section/showcase/mobile-chrome/DBSection-should-match-screenshot-1/DBSection-should-match-screenshot.png index b5499276ac7..c2df759c1df 100644 Binary files a/__snapshots__/section/showcase/mobile-chrome/DBSection-should-match-screenshot-1/DBSection-should-match-screenshot.png and b/__snapshots__/section/showcase/mobile-chrome/DBSection-should-match-screenshot-1/DBSection-should-match-screenshot.png differ diff --git a/__snapshots__/section/showcase/mobile-safari/DBSection-should-match-screenshot-1/DBSection-should-match-screenshot.png b/__snapshots__/section/showcase/mobile-safari/DBSection-should-match-screenshot-1/DBSection-should-match-screenshot.png index 364fc31e014..bb1d14b2dad 100644 Binary files a/__snapshots__/section/showcase/mobile-safari/DBSection-should-match-screenshot-1/DBSection-should-match-screenshot.png and b/__snapshots__/section/showcase/mobile-safari/DBSection-should-match-screenshot-1/DBSection-should-match-screenshot.png differ diff --git a/__snapshots__/section/showcase/webkit/DBSection-should-match-screenshot-1/DBSection-should-match-screenshot.png b/__snapshots__/section/showcase/webkit/DBSection-should-match-screenshot-1/DBSection-should-match-screenshot.png index 24c51f21161..c3aab7171a7 100644 Binary files a/__snapshots__/section/showcase/webkit/DBSection-should-match-screenshot-1/DBSection-should-match-screenshot.png and b/__snapshots__/section/showcase/webkit/DBSection-should-match-screenshot-1/DBSection-should-match-screenshot.png differ diff --git a/docs/how-to-develop-a-component.md b/docs/how-to-develop-a-component.md index a3f26aca581..883e4e063f8 100644 --- a/docs/how-to-develop-a-component.md +++ b/docs/how-to-develop-a-component.md @@ -118,7 +118,7 @@ We have multiple tests you should update: To run all tests/update the screenshots you need `Docker`. More information here: `e2e/README.md`. -## Manually Accessibility Review +## Manual audit conducted by accessibility experts After creating a component and writing all test, we need some manually third party accessibility review to prove that the component is stable. This process is internal and will be handled by a team specialized in accessibility testing. During this process you should track the progress of this manual test inside `showcases/shared/_accessibility-review.json`. diff --git a/docs/research/multi-select.md b/docs/research/multi-select.md new file mode 100644 index 00000000000..33817cb4b56 --- /dev/null +++ b/docs/research/multi-select.md @@ -0,0 +1,30 @@ +# DEV Research multi-select + +## Overview + +| Design System | Component | Comment | +| --------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| [Atlassian Design System](https://bitbucket.org/atlassian/atlaskit/src/master/) | [multi-select](https://atlassian.design/components/select/examples#multi-select) | tags with divs + `input` (no filter) with `aria-autocomplete="list"` `aria-expanded="false"` `aria-haspopup="true"` `role="combobox"` + creates dropdown in dom on click | +| [Bootstrap](https://github.com/twbs/bootstrap) | ❌ | -- | +| [GitHub Primer](https://github.com/primer/css) | [selectpanel](https://primer.style/components/selectpanel/react/alpha) | tags inside button as `span` + button with `aria-expanded="false"` + extra container with filter input and checkbox group | +| [GitLab Pajamas](https://gitlab.com/gitlab-org/gitlab-services/design.gitlab.com) | [dropdown-combobox](https://design.gitlab.com/components/dropdown-combobox) | tags inside button as `span` + `button` with `aria-haspopup="listbox"` + extra container with filter input and list buttons | +| [HP Enterprise Grommet](https://github.com/grommet/grommet) | [selectmultiple](https://v2.grommet.io/selectmultiple) | tags inside input as `text` + input + extra container with filter input and checkbox group | +| [IBM Carbon](https://github.com/carbon-design-system/carbon) | [multi-select](https://react.carbondesignsystem.com/?path=/docs/components-multiselect--overview) | tags with remove button + `button` or `input` with `aria-haspopup="listbox"` + extra container checkbox group | +| [Material UI](https://github.com/mui/material-ui) | [Combobox](https://mui.com/material-ui/react-autocomplete/) | tags with remove button + `input` with `aria-expanded` &`role=combobox` + extra container list buttons | +| [MongoDB.design](https://github.com/mongodb/design) | [combobox](https://www.mongodb.design/component/combobox/live-example) | tags with remove button (tabable) + `input` with `aria-expanded` &`role=combobox` + extra container checkbox group | +| [Porsche Design System](https://github.com/porsche-design-system/porsche-design-system) | [multi-select](https://designsystem.porsche.com/v3/components/multi-select/examples) | tags inside input as `text` + input with filter + extra container and checkbox group | +| [SBB Lyne](https://github.com/lyne-design-system/lyne-components) | [multi-select](https://lyne-storybook.app.sbb.ch/?path=/story/elements-sbb-select--multiple-select) | only divs + extra container and checkbox group | +| [Shopify Polaris](https://github.com/Shopify/polaris) | [combobox](https://polaris.shopify.com/components/selection-and-input/combobox?example=combobox-with-multi-select-and-vertical-content) | ags with remove button (tabable) + `input` with `aria-expanded` &`role=combobox` + extra container checkbox group | +| [SNCF Design System](https://gitlab.com/SNCF/wcs) | [multi-select](https://designmetier-bootstrap.sncf.fr/docs/4.3/components/select/#multiple) | sr-only `select` + extra container with list buttons | +| [Telefonica Mistica](https://github.com/Telefonica/mistica-web) | ❌ | -- | +| [Telekom Scale](https://github.com/telekom/scale) | ❌ | -- | +| [Washington Post Design System](https://build.washingtonpost.com/) | ❌ | -- | + +## Conclusion + +- Often named [Combobox](https://component.gallery/components/combobox/) or Autocomplete or Autosuggest +- [combobox_role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/combobox_role) +- [combobox example w3](https://www.w3.org/WAI/ARIA/apg/patterns/combobox/) + +We should work with the button + checkbox approach. Maybe we can replace `button` with `details` + `summary`. Furthermore, out filtering (search inout) will be inside the dropdown/menu (see design). We may use `DBSelectOptionType` for the checkboxes to reflect groups etc. +Tags should be our `DBTag` with close function or a `span` based on the props we should change it like this variant="tags|overflow|amount". diff --git a/docs/scripts/component-research/design-systems.js b/docs/scripts/component-research/design-systems.js index a9cc65006dd..5657155f686 100644 --- a/docs/scripts/component-research/design-systems.js +++ b/docs/scripts/component-research/design-systems.js @@ -3,27 +3,6 @@ * @type {[{ name: string, componentUrl: string, url: string}]} */ export const designSystems = [ - { - name: 'W3C APG Patterns', - url: 'https://www.w3.org/WAI/ARIA/apg/', - componentUrl: 'https://www.w3.org/WAI/ARIA/apg/patterns/' - }, - { - name: 'Inclusive components by Heydon Pickering', - url: 'https://inclusive-components.design/', - componentUrl: 'https://inclusive-components.design/#components' - }, - { - name: 'Barrierefreie Gestaltung von User Interface-Elementen', - url: 'https://handreichungen.bfit-bund.de/barrierefreie-uie/', - componentUrl: - 'https://handreichungen.bfit-bund.de/barrierefreie-uie/0.4/zusammengesetzte_bedienelemente.html' - }, - { - name: 'Open UI', - url: 'https://open-ui.org/', - componentUrl: 'https://open-ui.org/' - }, { name: 'Telekom Scale', url: 'https://github.com/telekom/scale', @@ -62,11 +41,6 @@ export const designSystems = [ url: 'https://build.washingtonpost.com/', componentUrl: 'https://build.washingtonpost.com/components/accordion' }, - { - name: 'GOV.UK Design System', - url: 'https://design-system.service.gov.uk/', - componentUrl: 'https://design-system.service.gov.uk/components/' - }, { name: 'HP Enterprise Grommet', url: 'https://github.com/grommet/grommet', @@ -103,17 +77,6 @@ export const designSystems = [ componentUrl: 'https://brandfactory.telefonica.com/d/iSp7b1DkYygv/n-a#/components/overview' }, - { - name: 'Audi Design System', - url: 'https://www.audi.com/ci/en/guides/user-interface.html', - componentUrl: - 'https://www.audi.com/ci/en/guides/user-interface/components.html' - }, - { - name: 'DHL Design System', - url: 'https://www.dpdhl-brands.com/en/dhl/buttons', - componentUrl: 'https://www.dpdhl-brands.com/en/dhl/buttons' - }, { name: 'Bootstrap', url: 'https://github.com/twbs/bootstrap', diff --git a/e2e/package.json b/e2e/package.json index f2d2297a66c..99e52c407cf 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -23,7 +23,7 @@ "test:vue-showcase": "npm run test:e2e --workspace=vue-showcase" }, "devDependencies": { - "@playwright/test": "1.46.0", + "@playwright/test": "1.46.1", "cpr": "3.0.1", "cross-env": "^7.0.3", "dotenv": "^16.0.3", diff --git a/output/react/package.json b/output/react/package.json index 2a23b649fa8..48375651bdf 100644 --- a/output/react/package.json +++ b/output/react/package.json @@ -26,8 +26,8 @@ "tsc": "tsc -p . --sourceMap false" }, "devDependencies": { - "@playwright/experimental-ct-react": "1.46.0", - "@types/react": "^18.3.3", + "@playwright/experimental-ct-react": "1.46.1", + "@types/react": "^18.3.4", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/output/vue/package.json b/output/vue/package.json index 715b88b9667..83bd2b0ecd5 100644 --- a/output/vue/package.json +++ b/output/vue/package.json @@ -38,15 +38,15 @@ "test:components": "playwright test -c playwright.config.ts" }, "dependencies": { - "vue": "^3.4.37" + "vue": "^3.4.38" }, "devDependencies": { - "@playwright/experimental-ct-vue": "1.46.0", + "@playwright/experimental-ct-vue": "1.46.1", "@vitejs/plugin-vue": "^5.1.2", "replace-in-file": "^8.1.0", "tsx": "^4.17.0", "typescript": "^5.4.5", - "vite": "^5.4.0", + "vite": "^5.4.2", "vue-tsc": "^2.0.29" }, "publishConfig": { diff --git a/package-lock.json b/package-lock.json index 24ca263bdb4..b764ab9637b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,13 +17,13 @@ "e2e" ], "devDependencies": { - "@axe-core/playwright": "^4.9.1", + "@axe-core/playwright": "^4.10.0", "@commitlint/cli": "19.4.0", "@commitlint/config-conventional": "19.2.2", "@double-great/stylelint-a11y": "3.0.2", "@guidepup/guidepup": "0.22.3", "@guidepup/playwright": "^0.14.0", - "@playwright/test": "1.46.0", + "@playwright/test": "1.46.1", "@types/fs-extra": "^11.0.4", "accessibility-checker": "^3.1.74", "adm-zip": "0.5.15", @@ -35,9 +35,9 @@ "fs-extra": "^11.2.0", "glob": "^11.0.0", "http-server": "14.1.1", - "husky": "9.1.4", + "husky": "9.1.5", "jscpd": "^4.0.5", - "lint-staged": "^15.2.8", + "lint-staged": "^15.2.9", "markdownlint-cli": "^0.41.0", "npm-run-all": "4.1.5", "postcss": "^8.4.41", @@ -47,7 +47,7 @@ "prettier-plugin-sh": "^0.14.0", "replace-in-file": "^8.1.0", "rimraf": "6.0.1", - "stylelint": "16.8.1", + "stylelint": "16.8.2", "stylelint-config-sass-guidelines": "12.0.0", "stylelint-config-standard": "^36.0.0", "stylelint-use-logical": "2.1.2", @@ -72,7 +72,7 @@ "output/*" ], "devDependencies": { - "@playwright/test": "1.46.0", + "@playwright/test": "1.46.1", "cpr": "3.0.1", "cross-env": "^7.0.3", "dotenv": "^16.0.3", @@ -2239,12 +2239,12 @@ } }, "node_modules/@axe-core/playwright": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.9.1.tgz", - "integrity": "sha512-8m4WZbZq7/aq7ZY5IG8GqV+ZdvtGn/iJdom+wBg+iv/3BAOBIfNQtIu697a41438DzEEyptXWmC3Xl5Kx/o9/g==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.10.0.tgz", + "integrity": "sha512-kEr3JPEVUSnKIYp/egV2jvFj+chIjCjPp3K3zlpJMza/CB3TFw8UZNbI9agEC2uMz4YbgAOyzlbUy0QS+OofFA==", "dev": true, "dependencies": { - "axe-core": "~4.9.1" + "axe-core": "~4.10.0" }, "peerDependencies": { "playwright-core": ">= 1.0.0" @@ -4860,7 +4860,7 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz", "integrity": "sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==", - "devOptional": true, + "dev": true, "funding": [ { "type": "github", @@ -4882,7 +4882,7 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz", "integrity": "sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==", - "devOptional": true, + "dev": true, "funding": [ { "type": "github", @@ -4901,7 +4901,7 @@ "version": "2.1.13", "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz", "integrity": "sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==", - "devOptional": true, + "dev": true, "funding": [ { "type": "github", @@ -4927,9 +4927,9 @@ "dev": true }, "node_modules/@csstools/selector-specificity": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz", - "integrity": "sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-4.0.0.tgz", + "integrity": "sha512-189nelqtPd8++phaHNwYovKZI0FOzH1vQEE3QhHHkNIGrg5fSs9CbYP3RvfEH5geztnIA9Jwq91wyOIwAW5JIQ==", "devOptional": true, "funding": [ { @@ -4942,10 +4942,10 @@ } ], "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" }, "peerDependencies": { - "postcss-selector-parser": "^6.0.13" + "postcss-selector-parser": "^6.1.0" } }, "node_modules/@db-ui/components": { @@ -5030,9 +5030,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.0.tgz", - "integrity": "sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", + "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", "cpu": [ "ppc64" ], @@ -5045,9 +5045,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.0.tgz", - "integrity": "sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", + "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", "cpu": [ "arm" ], @@ -5060,9 +5060,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.0.tgz", - "integrity": "sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", + "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", "cpu": [ "arm64" ], @@ -5075,9 +5075,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.0.tgz", - "integrity": "sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", + "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", "cpu": [ "x64" ], @@ -5090,9 +5090,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.0.tgz", - "integrity": "sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", + "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", "cpu": [ "arm64" ], @@ -5105,9 +5105,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.0.tgz", - "integrity": "sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", + "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", "cpu": [ "x64" ], @@ -5120,9 +5120,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.0.tgz", - "integrity": "sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", + "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", "cpu": [ "arm64" ], @@ -5135,9 +5135,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.0.tgz", - "integrity": "sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", + "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", "cpu": [ "x64" ], @@ -5150,9 +5150,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.0.tgz", - "integrity": "sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", + "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", "cpu": [ "arm" ], @@ -5165,9 +5165,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.0.tgz", - "integrity": "sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", + "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", "cpu": [ "arm64" ], @@ -5180,9 +5180,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.0.tgz", - "integrity": "sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", + "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", "cpu": [ "ia32" ], @@ -5195,9 +5195,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.0.tgz", - "integrity": "sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", + "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", "cpu": [ "loong64" ], @@ -5210,9 +5210,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.0.tgz", - "integrity": "sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", + "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", "cpu": [ "mips64el" ], @@ -5225,9 +5225,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.0.tgz", - "integrity": "sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", + "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", "cpu": [ "ppc64" ], @@ -5240,9 +5240,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.0.tgz", - "integrity": "sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", + "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", "cpu": [ "riscv64" ], @@ -5255,9 +5255,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.0.tgz", - "integrity": "sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", + "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", "cpu": [ "s390x" ], @@ -5270,9 +5270,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.0.tgz", - "integrity": "sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", + "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", "cpu": [ "x64" ], @@ -5285,9 +5285,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.0.tgz", - "integrity": "sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", + "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", "cpu": [ "x64" ], @@ -5300,9 +5300,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.0.tgz", - "integrity": "sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", + "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", "cpu": [ "arm64" ], @@ -5315,9 +5315,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.0.tgz", - "integrity": "sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", + "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", "cpu": [ "x64" ], @@ -5330,9 +5330,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.0.tgz", - "integrity": "sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", + "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", "cpu": [ "x64" ], @@ -5345,9 +5345,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.0.tgz", - "integrity": "sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", + "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", "cpu": [ "arm64" ], @@ -5360,9 +5360,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.0.tgz", - "integrity": "sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", + "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", "cpu": [ "ia32" ], @@ -5375,9 +5375,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.0.tgz", - "integrity": "sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", + "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", "cpu": [ "x64" ], @@ -5426,10 +5426,10 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.17.0.tgz", - "integrity": "sha512-A68TBu6/1mHHuc5YJL0U0VVeGNiklLAL6rRmhTCP2B5XjWLMnrX+HkO+IAXyHvks5cyyY1jjK5ITPQ1HGS2EVA==", - "devOptional": true, + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.17.1.tgz", + "integrity": "sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==", + "dev": true, "dependencies": { "@eslint/object-schema": "^2.1.4", "debug": "^4.3.1", @@ -5443,7 +5443,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", - "devOptional": true, + "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -5466,7 +5466,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "devOptional": true, + "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -5482,13 +5482,22 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "devOptional": true + "dev": true + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "devOptional": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } }, "node_modules/@eslint/object-schema": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", - "devOptional": true, + "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -5569,7 +5578,7 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "deprecated": "Use @eslint/config-array instead", - "dev": true, + "devOptional": true, "dependencies": { "@humanwhocodes/object-schema": "^2.0.2", "debug": "^4.3.1", @@ -5597,13 +5606,13 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "deprecated": "Use @eslint/object-schema instead", - "dev": true + "devOptional": true }, "node_modules/@humanwhocodes/retry": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz", "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==", - "devOptional": true, + "dev": true, "engines": { "node": ">=18.18" }, @@ -5613,9 +5622,9 @@ } }, "node_modules/@iframe-resizer/child": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@iframe-resizer/child/-/child-5.2.3.tgz", - "integrity": "sha512-YzwCZkbFMPn7OPmkb9om3/SoEn+BBrPUFfpwWqkuPR5IagWdcRARWBaBhazcTNNIdXDbkCdzA5Y38S4dqnSIiw==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@iframe-resizer/child/-/child-5.2.4.tgz", + "integrity": "sha512-4dWgCLgc5d1j9rpNeIXEnVFf1Eoi4/6/g+2Un7589OFOIlXt57jrnDfp5ZOwAVjQ16GBleiFH54WWB/ikFHJJA==", "dev": true, "funding": { "type": "individual", @@ -5623,9 +5632,9 @@ } }, "node_modules/@iframe-resizer/core": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@iframe-resizer/core/-/core-5.2.3.tgz", - "integrity": "sha512-xvE+d0gQatCqKEayPgvPVqXHqpNuqdjsgvnAxPP9mmgxEfmvGK0VVMvSnt4QtixK5Hxhl6129p+BkyPotXietQ==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@iframe-resizer/core/-/core-5.2.4.tgz", + "integrity": "sha512-axabR3S6zWHTGIWD3BBjzRY2UKJgZWN1xLuG788+tI4MlAkTCyeXydIQaG89xy+F4aUwkrVRabY81VN6u/7Ziw==", "dev": true, "funding": { "type": "individual", @@ -5633,12 +5642,12 @@ } }, "node_modules/@iframe-resizer/jquery": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@iframe-resizer/jquery/-/jquery-5.2.3.tgz", - "integrity": "sha512-6hqeqcN0gfqLGWg3V7oM8nqXoNZji4NWhp/2nQsl6jxVlSpIBs3ov5rLgS/Jh6JqRA//emepBFsUryB1xvrSKA==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@iframe-resizer/jquery/-/jquery-5.2.4.tgz", + "integrity": "sha512-C7s4egUFNYROhZ2ajMOHOoiRofGY4uknuYZuM1xa2pHrHTuKs3zRiwsgM2q3TsCtdNoCRY9sI8M6kU9svMciMA==", "dev": true, "dependencies": { - "@iframe-resizer/core": "5.2.3" + "@iframe-resizer/core": "5.2.4" }, "funding": { "type": "individual", @@ -5646,12 +5655,12 @@ } }, "node_modules/@iframe-resizer/parent": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@iframe-resizer/parent/-/parent-5.2.3.tgz", - "integrity": "sha512-ERiGbuoBnsLUT2QJMkFf224dPTF4rkGQVwDvviVNljMZJCHc0cK9nV3rk86KcqeFozzQe2bItVt9tI6s7tucAA==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@iframe-resizer/parent/-/parent-5.2.4.tgz", + "integrity": "sha512-qJXUNiIpk1dRDMRL/XjjC5JQJ8BtONzFmctzZIxCSm6NZ3yxyJntmQfuOwiZWLW4bWVSocSEN5B1HKemyF5L/A==", "dev": true, "dependencies": { - "@iframe-resizer/core": "5.2.3" + "@iframe-resizer/core": "5.2.4" }, "funding": { "type": "individual", @@ -6760,14 +6769,109 @@ } }, "node_modules/@next/env": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.5.tgz", - "integrity": "sha512-/zZGkrTOsraVfYjGP8uM0p6r0BDT6xWpkjdVbcz66PJVSpwXX3yNiRycxAuDfBKGWBrZBXRuK/YVlkNgxHGwmA==" + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.6.tgz", + "integrity": "sha512-bs5DFKV+08EjWrl8EB+KKqev1ZTNONH1vFCaHh911aaB362NnP32UDTbE9VQhyiAgbFqJsfDkSxFERNDDb3j0g==" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.6.tgz", + "integrity": "sha512-d3+p4AjIYmhqzYHhhmkRYYN6ZU35TwZAKX08xKRfnHkz72KhWL2kxMFsDptpZs5e8bBGdepn7vn1+9DaF8iX+A==", + "dev": true, + "dependencies": { + "glob": "10.3.10" + } + }, + "node_modules/@next/eslint-plugin-next/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@next/eslint-plugin-next/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@next/eslint-plugin-next/node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/@next/eslint-plugin-next/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "node_modules/@next/eslint-plugin-next/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@next/eslint-plugin-next/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/@next/mdx": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/mdx/-/mdx-14.2.5.tgz", - "integrity": "sha512-AROhSdXQg0/jt55iqxVSJqp9oaCyXwRe44/I17c77gDshZ6ex7VKBZDH0GljaxZ0Y4mScYUbFJJEh42Xw4X4Dg==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@next/mdx/-/mdx-14.2.6.tgz", + "integrity": "sha512-59jhA506DXouG5T1lUjG8TAYGIQNia6hDuDgRIJwWfOEzgDvIOZHL3/oUGFH9BS2/Y75a9y0l65Lz0aMvUEWeg==", "dev": true, "dependencies": { "source-map": "^0.7.0" @@ -6786,9 +6890,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.5.tgz", - "integrity": "sha512-/9zVxJ+K9lrzSGli1///ujyRfon/ZneeZ+v4ptpiPoOU+GKZnm8Wj8ELWU1Pm7GHltYRBklmXMTUqM/DqQ99FQ==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.6.tgz", + "integrity": "sha512-BtJZb+hYXGaVJJivpnDoi3JFVn80SHKCiiRUW3kk1SY6UCUy5dWFFSbh+tGi5lHAughzeduMyxbLt3pspvXNSg==", "cpu": [ "arm64" ], @@ -6801,9 +6905,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.5.tgz", - "integrity": "sha512-vXHOPCwfDe9qLDuq7U1OYM2wUY+KQ4Ex6ozwsKxp26BlJ6XXbHleOUldenM67JRyBfVjv371oneEvYd3H2gNSA==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.6.tgz", + "integrity": "sha512-ZHRbGpH6KHarzm6qEeXKSElSXh8dS2DtDPjQt3IMwY8QVk7GbdDYjvV4NgSnDA9huGpGgnyy3tH8i5yHCqVkiQ==", "cpu": [ "x64" ], @@ -6816,9 +6920,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.5.tgz", - "integrity": "sha512-vlhB8wI+lj8q1ExFW8lbWutA4M2ZazQNvMWuEDqZcuJJc78iUnLdPPunBPX8rC4IgT6lIx/adB+Cwrl99MzNaA==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.6.tgz", + "integrity": "sha512-O4HqUEe3ZvKshXHcDUXn1OybN4cSZg7ZdwHJMGCXSUEVUqGTJVsOh17smqilIjooP/sIJksgl+1kcf2IWMZWHg==", "cpu": [ "arm64" ], @@ -6831,9 +6935,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.5.tgz", - "integrity": "sha512-NpDB9NUR2t0hXzJJwQSGu1IAOYybsfeB+LxpGsXrRIb7QOrYmidJz3shzY8cM6+rO4Aojuef0N/PEaX18pi9OA==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.6.tgz", + "integrity": "sha512-xUcdhr2hfalG8RDDGSFxQ75yOG894UlmFS4K2M0jLrUhauRBGOtUOxoDVwiIIuZQwZ3Y5hDsazNjdYGB0cQ9yQ==", "cpu": [ "arm64" ], @@ -6846,9 +6950,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.5.tgz", - "integrity": "sha512-8XFikMSxWleYNryWIjiCX+gU201YS+erTUidKdyOVYi5qUQo/gRxv/3N1oZFCgqpesN6FPeqGM72Zve+nReVXQ==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.6.tgz", + "integrity": "sha512-InosKxw8UMcA/wEib5n2QttwHSKHZHNSbGcMepBM0CTcNwpxWzX32KETmwbhKod3zrS8n1vJ+DuJKbL9ZAB0Ag==", "cpu": [ "x64" ], @@ -6861,9 +6965,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.5.tgz", - "integrity": "sha512-6QLwi7RaYiQDcRDSU/os40r5o06b5ue7Jsk5JgdRBGGp8l37RZEh9JsLSM8QF0YDsgcosSeHjglgqi25+m04IQ==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.6.tgz", + "integrity": "sha512-d4QXfJmt5pGJ7cG8qwxKSBnO5AXuKAFYxV7qyDRHnUNvY/dgDh+oX292gATpB2AAHgjdHd5ks1wXxIEj6muLUQ==", "cpu": [ "x64" ], @@ -6876,9 +6980,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.5.tgz", - "integrity": "sha512-1GpG2VhbspO+aYoMOQPQiqc/tG3LzmsdBH0LhnDS3JrtDx2QmzXe0B6mSZZiN3Bq7IOMXxv1nlsjzoS1+9mzZw==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.6.tgz", + "integrity": "sha512-AlgIhk4/G+PzOG1qdF1b05uKTMsuRatFlFzAi5G8RZ9h67CVSSuZSbqGHbJDlcV1tZPxq/d4G0q6qcHDKWf4aQ==", "cpu": [ "arm64" ], @@ -6891,9 +6995,9 @@ } }, "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.5.tgz", - "integrity": "sha512-Igh9ZlxwvCDsu6438FXlQTHlRno4gFpJzqPjSIBZooD22tKeI4fE/YMRoHVJHmrQ2P5YL1DoZ0qaOKkbeFWeMg==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.6.tgz", + "integrity": "sha512-hNukAxq7hu4o5/UjPp5jqoBEtrpCbOmnUqZSKNJG8GrUVzfq0ucdhQFVrHcLRMvQcwqqDh1a5AJN9ORnNDpgBQ==", "cpu": [ "ia32" ], @@ -6906,9 +7010,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.5.tgz", - "integrity": "sha512-tEQ7oinq1/CjSG9uSTerca3v4AZ+dFa+4Yu6ihaG8Ud8ddqLQgFGcnwYls13H5X5CPDPZJdYxyeMui6muOLd4g==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.6.tgz", + "integrity": "sha512-NANtw+ead1rSDK1jxmzq3TYkl03UNK2KHqUYf1nIhNci6NkeqBD4s1njSzYGIlSHxCK+wSaL8RXZm4v+NF/pMw==", "cpu": [ "x64" ], @@ -10028,13 +10132,13 @@ } }, "node_modules/@playwright/experimental-ct-core": { - "version": "1.46.0", - "resolved": "https://registry.npmjs.org/@playwright/experimental-ct-core/-/experimental-ct-core-1.46.0.tgz", - "integrity": "sha512-4bHw+P0ub0A/B6tbiqLQFwvaR+wsH5fE2yt1rxWg/dtE8uGhqEeAav9TX7j4PmILM86R3Le21h94wdDIHyeJBA==", + "version": "1.46.1", + "resolved": "https://registry.npmjs.org/@playwright/experimental-ct-core/-/experimental-ct-core-1.46.1.tgz", + "integrity": "sha512-vmRVmrQZ8mEHCbyrSB/l4hPcz95DCgFY7lCr8jKaY+dresap5WzxgHs2l2c/mNjiS5rFR6BnxKvqhCt0BBIKeA==", "dev": true, "dependencies": { - "playwright": "1.46.0", - "playwright-core": "1.46.0", + "playwright": "1.46.1", + "playwright-core": "1.46.1", "vite": "^5.2.8" }, "engines": { @@ -10042,12 +10146,12 @@ } }, "node_modules/@playwright/experimental-ct-react": { - "version": "1.46.0", - "resolved": "https://registry.npmjs.org/@playwright/experimental-ct-react/-/experimental-ct-react-1.46.0.tgz", - "integrity": "sha512-BSEfTBes2ljEQZxmtPpEQi8ZJns+B9F5h226Fk4/DdJbvueriEcJa4uls6KRIScSX8gd27Vg3P9T/buxW2BvjA==", + "version": "1.46.1", + "resolved": "https://registry.npmjs.org/@playwright/experimental-ct-react/-/experimental-ct-react-1.46.1.tgz", + "integrity": "sha512-MTOpiVrooq5gMwh0v6OazW4udTbUqVCDQVNX0d20u3+q8Frl9pO522eDHdEQ4bWTOknmyDyTQlXyK6GWlKHjqQ==", "dev": true, "dependencies": { - "@playwright/experimental-ct-core": "1.46.0", + "@playwright/experimental-ct-core": "1.46.1", "@vitejs/plugin-react": "^4.2.1" }, "bin": { @@ -10058,12 +10162,12 @@ } }, "node_modules/@playwright/experimental-ct-vue": { - "version": "1.46.0", - "resolved": "https://registry.npmjs.org/@playwright/experimental-ct-vue/-/experimental-ct-vue-1.46.0.tgz", - "integrity": "sha512-aRU6h+xcNXLPTblj7MR2/Ppsrferh7B/ET01MycibLMS26KUR442D+j/+B9JCCOp+k+fnHNLOEN9ZgMzHasRxQ==", + "version": "1.46.1", + "resolved": "https://registry.npmjs.org/@playwright/experimental-ct-vue/-/experimental-ct-vue-1.46.1.tgz", + "integrity": "sha512-2Vpgo6jowbdMsqNsBjhdUyxCxTsxqZyv15ntSza4UCEPyS0E9aIkqj+Jjssgfb72fhV2QrM4wg+VR9600pED8g==", "dev": true, "dependencies": { - "@playwright/experimental-ct-core": "1.46.0", + "@playwright/experimental-ct-core": "1.46.1", "@vitejs/plugin-vue": "^4.2.1" }, "bin": { @@ -10087,12 +10191,12 @@ } }, "node_modules/@playwright/test": { - "version": "1.46.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.46.0.tgz", - "integrity": "sha512-/QYft5VArOrGRP5pgkrfKksqsKA6CEFyGQ/gjNe6q0y4tZ1aaPfq4gIjudr1s3D+pXyrPRdsy4opKDrjBabE5w==", + "version": "1.46.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.46.1.tgz", + "integrity": "sha512-Fq6SwLujA/DOIvNC2EL/SojJnkKf/rAwJ//APpJJHRyMi1PdKrY3Az+4XNQ51N4RTbItbIByQ0jgd1tayq1aeA==", "devOptional": true, "dependencies": { - "playwright": "1.46.0" + "playwright": "1.46.1" }, "bin": { "playwright": "cli.js" @@ -10162,9 +10266,9 @@ } }, "node_modules/@remix-run/router": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.19.0.tgz", - "integrity": "sha512-zDICCLKEwbVYTS6TjYaWtHXxkdoUvD/QXvyVZjGCsWz5vyH7aFeONlPffPdW+Y/t6KT0MgXb2Mfjun9YpWN1dA==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.19.1.tgz", + "integrity": "sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg==", "engines": { "node": ">=14.0.0" } @@ -10411,9 +10515,9 @@ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.1.tgz", - "integrity": "sha512-lncuC4aHicncmbORnx+dUaAgzee9cm/PbIqgWz1PpXuwc+sa1Ct83tnqUDy/GFKleLiN7ZIeytM6KJ4cAn1SxA==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.0.tgz", + "integrity": "sha512-WTWD8PfoSAJ+qL87lE7votj3syLavxunWhzCnx3XFxFiI/BA/r3X7MUM8dVrH8rb2r4AiO8jJsr3ZjdaftmnfA==", "cpu": [ "arm" ], @@ -10423,9 +10527,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.1.tgz", - "integrity": "sha512-F/tkdw0WSs4ojqz5Ovrw5r9odqzFjb5LIgHdHZG65dFI1lWTWRVy32KDJLKRISHgJvqUeUhdIvy43fX41znyDg==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.0.tgz", + "integrity": "sha512-a1sR2zSK1B4eYkiZu17ZUZhmUQcKjk2/j9Me2IDjk1GHW7LB5Z35LEzj9iJch6gtUfsnvZs1ZNyDW2oZSThrkA==", "cpu": [ "arm64" ], @@ -10435,9 +10539,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.1.tgz", - "integrity": "sha512-vk+ma8iC1ebje/ahpxpnrfVQJibTMyHdWpOGZ3JpQ7Mgn/3QNHmPq7YwjZbIE7km73dH5M1e6MRRsnEBW7v5CQ==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.0.tgz", + "integrity": "sha512-zOnKWLgDld/svhKO5PD9ozmL6roy5OQ5T4ThvdYZLpiOhEGY+dp2NwUmxK0Ld91LrbjrvtNAE0ERBwjqhZTRAA==", "cpu": [ "arm64" ], @@ -10447,9 +10551,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.1.tgz", - "integrity": "sha512-IgpzXKauRe1Tafcej9STjSSuG0Ghu/xGYH+qG6JwsAUxXrnkvNHcq/NL6nz1+jzvWAnQkuAJ4uIwGB48K9OCGA==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.0.tgz", + "integrity": "sha512-7doS8br0xAkg48SKE2QNtMSFPFUlRdw9+votl27MvT46vo44ATBmdZdGysOevNELmZlfd+NEa0UYOA8f01WSrg==", "cpu": [ "x64" ], @@ -10459,9 +10563,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.1.tgz", - "integrity": "sha512-P9bSiAUnSSM7EmyRK+e5wgpqai86QOSv8BwvkGjLwYuOpaeomiZWifEos517CwbG+aZl1T4clSE1YqqH2JRs+g==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.0.tgz", + "integrity": "sha512-pWJsfQjNWNGsoCq53KjMtwdJDmh/6NubwQcz52aEwLEuvx08bzcy6tOUuawAOncPnxz/3siRtd8hiQ32G1y8VA==", "cpu": [ "arm" ], @@ -10471,9 +10575,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.1.tgz", - "integrity": "sha512-5RnjpACoxtS+aWOI1dURKno11d7krfpGDEn19jI8BuWmSBbUC4ytIADfROM1FZrFhQPSoP+KEa3NlEScznBTyQ==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.0.tgz", + "integrity": "sha512-efRIANsz3UHZrnZXuEvxS9LoCOWMGD1rweciD6uJQIx2myN3a8Im1FafZBzh7zk1RJ6oKcR16dU3UPldaKd83w==", "cpu": [ "arm" ], @@ -10483,9 +10587,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.1.tgz", - "integrity": "sha512-8mwmGD668m8WaGbthrEYZ9CBmPug2QPGWxhJxh/vCgBjro5o96gL04WLlg5BA233OCWLqERy4YUzX3bJGXaJgQ==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.0.tgz", + "integrity": "sha512-ZrPhydkTVhyeGTW94WJ8pnl1uroqVHM3j3hjdquwAcWnmivjAwOYjTEAuEDeJvGX7xv3Z9GAvrBkEzCgHq9U1w==", "cpu": [ "arm64" ], @@ -10495,9 +10599,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.1.tgz", - "integrity": "sha512-dJX9u4r4bqInMGOAQoGYdwDP8lQiisWb9et+T84l2WXk41yEej8v2iGKodmdKimT8cTAYt0jFb+UEBxnPkbXEQ==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.0.tgz", + "integrity": "sha512-cfaupqd+UEFeURmqNP2eEvXqgbSox/LHOyN9/d2pSdV8xTrjdg3NgOFJCtc1vQ/jEke1qD0IejbBfxleBPHnPw==", "cpu": [ "arm64" ], @@ -10507,9 +10611,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.1.tgz", - "integrity": "sha512-V72cXdTl4EI0x6FNmho4D502sy7ed+LuVW6Ym8aI6DRQ9hQZdp5sj0a2usYOlqvFBNKQnLQGwmYnujo2HvjCxQ==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.0.tgz", + "integrity": "sha512-ZKPan1/RvAhrUylwBXC9t7B2hXdpb/ufeu22pG2psV7RN8roOfGurEghw1ySmX/CmDDHNTDDjY3lo9hRlgtaHg==", "cpu": [ "ppc64" ], @@ -10519,9 +10623,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.1.tgz", - "integrity": "sha512-f+pJih7sxoKmbjghrM2RkWo2WHUW8UbfxIQiWo5yeCaCM0TveMEuAzKJte4QskBp1TIinpnRcxkquY+4WuY/tg==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.0.tgz", + "integrity": "sha512-H1eRaCwd5E8eS8leiS+o/NqMdljkcb1d6r2h4fKSsCXQilLKArq6WS7XBLDu80Yz+nMqHVFDquwcVrQmGr28rg==", "cpu": [ "riscv64" ], @@ -10531,9 +10635,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.1.tgz", - "integrity": "sha512-qb1hMMT3Fr/Qz1OKovCuUM11MUNLUuHeBC2DPPAWUYYUAOFWaxInaTwTQmc7Fl5La7DShTEpmYwgdt2hG+4TEg==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.0.tgz", + "integrity": "sha512-zJ4hA+3b5tu8u7L58CCSI0A9N1vkfwPhWd/puGXwtZlsB5bTkwDNW/+JCU84+3QYmKpLi+XvHdmrlwUwDA6kqw==", "cpu": [ "s390x" ], @@ -10543,9 +10647,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.1.tgz", - "integrity": "sha512-7O5u/p6oKUFYjRbZkL2FLbwsyoJAjyeXHCU3O4ndvzg2OFO2GinFPSJFGbiwFDaCFc+k7gs9CF243PwdPQFh5g==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.0.tgz", + "integrity": "sha512-e2hrvElFIh6kW/UNBQK/kzqMNY5mO+67YtEh9OA65RM5IJXYTWiXjX6fjIiPaqOkBthYF1EqgiZ6OXKcQsM0hg==", "cpu": [ "x64" ], @@ -10555,9 +10659,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.1.tgz", - "integrity": "sha512-pDLkYITdYrH/9Cv/Vlj8HppDuLMDUBmgsM0+N+xLtFd18aXgM9Nyqupb/Uw+HeidhfYg2lD6CXvz6CjoVOaKjQ==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.0.tgz", + "integrity": "sha512-1vvmgDdUSebVGXWX2lIcgRebqfQSff0hMEkLJyakQ9JQUbLDkEaMsPTLOmyccyC6IJ/l3FZuJbmrBw/u0A0uCQ==", "cpu": [ "x64" ], @@ -10567,9 +10671,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.1.tgz", - "integrity": "sha512-W2ZNI323O/8pJdBGil1oCauuCzmVd9lDmWBBqxYZcOqWD6aWqJtVBQ1dFrF4dYpZPks6F+xCZHfzG5hYlSHZ6g==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.0.tgz", + "integrity": "sha512-s5oFkZ/hFcrlAyBTONFY1TWndfyre1wOMwU+6KCpm/iatybvrRgmZVM+vCFwxmC5ZhdlgfE0N4XorsDpi7/4XQ==", "cpu": [ "arm64" ], @@ -10579,9 +10683,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.1.tgz", - "integrity": "sha512-ELfEX1/+eGZYMaCIbK4jqLxO1gyTSOIlZr6pbC4SRYFaSIDVKOnZNMdoZ+ON0mrFDp4+H5MhwNC1H/AhE3zQLg==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.0.tgz", + "integrity": "sha512-G9+TEqRnAA6nbpqyUqgTiopmnfgnMkR3kMukFBDsiyy23LZvUCpiUwjTRx6ezYCjJODXrh52rBR9oXvm+Fp5wg==", "cpu": [ "ia32" ], @@ -10591,9 +10695,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.1.tgz", - "integrity": "sha512-yjk2MAkQmoaPYCSu35RLJ62+dz358nE83VfTePJRp8CG7aMg25mEJYpXFiD+NcevhX8LxD5OP5tktPXnXN7GDw==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.0.tgz", + "integrity": "sha512-2jsCDZwtQvRhejHLfZ1JY6w6kEuEtfF9nzYsZxzSlNVKDX+DpsDJ+Rbjkm74nvg2rdx0gwBS+IMdvwJuq3S9pQ==", "cpu": [ "x64" ], @@ -10621,6 +10725,12 @@ "fsevents": "~2.3.2" } }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz", + "integrity": "sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==", + "dev": true + }, "node_modules/@schematics/angular": { "version": "17.3.8", "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-17.3.8.tgz", @@ -11376,11 +11486,11 @@ } }, "node_modules/@types/node": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.1.0.tgz", - "integrity": "sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw==", + "version": "22.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.0.tgz", + "integrity": "sha512-DkFrJOe+rfdHTqqMg0bSNlGlQ85hSoh2TPzZyhHsXnMtligRWpxUySiyw8FY14ITt24HVCiQPWxS3KO/QlGmWg==", "dependencies": { - "undici-types": "~6.13.0" + "undici-types": "~6.19.2" } }, "node_modules/@types/node-forge": { @@ -11428,9 +11538,9 @@ "dev": true }, "node_modules/@types/react": { - "version": "18.3.3", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", - "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==", + "version": "18.3.4", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.4.tgz", + "integrity": "sha512-J7W30FTdfCxDDjmfRM+/JqLHBIyl7xUIp9kwK637FGmY7+mkSFSe6L4jpZzhj5QMfLssSDP4/i75AKkrdC7/Jw==", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -11537,6 +11647,93 @@ "@types/node": "*" } }, + "node_modules/@typescript-eslint/parser": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.2.0.tgz", + "integrity": "sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.2.0", + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/typescript-estree": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.2.0.tgz", + "integrity": "sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.2.0", + "@typescript-eslint/visitor-keys": "7.2.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.2.0.tgz", + "integrity": "sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz", + "integrity": "sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.2.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/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/@typescript-eslint/scope-manager": { "version": "7.16.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.16.1.tgz", @@ -11723,7 +11920,7 @@ "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 + "devOptional": true }, "node_modules/@unhead/dom": { "version": "1.9.16", @@ -12203,52 +12400,41 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.4.37", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.37.tgz", - "integrity": "sha512-ZDDT/KiLKuCRXyzWecNzC5vTcubGz4LECAtfGPENpo0nrmqJHwuWtRLxk/Sb9RAKtR9iFflFycbkjkY+W/PZUQ==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.38.tgz", + "integrity": "sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==", "dependencies": { "@babel/parser": "^7.24.7", - "@vue/shared": "3.4.37", - "entities": "^5.0.0", + "@vue/shared": "3.4.38", + "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.0" } }, - "node_modules/@vue/compiler-core/node_modules/entities": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-5.0.0.tgz", - "integrity": "sha512-BeJFvFRJddxobhvEdm5GqHzRV/X+ACeuw0/BuuxsCh1EUZcAIz8+kYmBp/LrQuloy6K1f3a0M7+IhmZ7QnkISA==", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/@vue/compiler-core/node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" }, "node_modules/@vue/compiler-dom": { - "version": "3.4.37", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.37.tgz", - "integrity": "sha512-rIiSmL3YrntvgYV84rekAtU/xfogMUJIclUMeIKEtVBFngOL3IeZHhsH3UaFEgB5iFGpj6IW+8YuM/2Up+vVag==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.38.tgz", + "integrity": "sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==", "dependencies": { - "@vue/compiler-core": "3.4.37", - "@vue/shared": "3.4.37" + "@vue/compiler-core": "3.4.38", + "@vue/shared": "3.4.38" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.4.37", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.37.tgz", - "integrity": "sha512-vCfetdas40Wk9aK/WWf8XcVESffsbNkBQwS5t13Y/PcfqKfIwJX2gF+82th6dOpnpbptNMlMjAny80li7TaCIg==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.38.tgz", + "integrity": "sha512-s5QfZ+9PzPh3T5H4hsQDJtI8x7zdJaew/dCGgqZ2630XdzaZ3AD8xGZfBqpT8oaD/p2eedd+pL8tD5vvt5ZYJQ==", "dependencies": { "@babel/parser": "^7.24.7", - "@vue/compiler-core": "3.4.37", - "@vue/compiler-dom": "3.4.37", - "@vue/compiler-ssr": "3.4.37", - "@vue/shared": "3.4.37", + "@vue/compiler-core": "3.4.38", + "@vue/compiler-dom": "3.4.38", + "@vue/compiler-ssr": "3.4.38", + "@vue/shared": "3.4.38", "estree-walker": "^2.0.2", "magic-string": "^0.30.10", "postcss": "^8.4.40", @@ -12269,12 +12455,12 @@ } }, "node_modules/@vue/compiler-ssr": { - "version": "3.4.37", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.37.tgz", - "integrity": "sha512-TyAgYBWrHlFrt4qpdACh8e9Ms6C/AZQ6A6xLJaWrCL8GCX5DxMzxyeFAEMfU/VFr4tylHm+a2NpfJpcd7+20XA==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.38.tgz", + "integrity": "sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw==", "dependencies": { - "@vue/compiler-dom": "3.4.37", - "@vue/shared": "3.4.37" + "@vue/compiler-dom": "3.4.38", + "@vue/shared": "3.4.38" } }, "node_modules/@vue/compiler-vue2": { @@ -12376,49 +12562,49 @@ } }, "node_modules/@vue/reactivity": { - "version": "3.4.37", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.37.tgz", - "integrity": "sha512-UmdKXGx0BZ5kkxPqQr3PK3tElz6adTey4307NzZ3whZu19i5VavYal7u2FfOmAzlcDVgE8+X0HZ2LxLb/jgbYw==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.38.tgz", + "integrity": "sha512-4vl4wMMVniLsSYYeldAKzbk72+D3hUnkw9z8lDeJacTxAkXeDAP1uE9xr2+aKIN0ipOL8EG2GPouVTH6yF7Gnw==", "dependencies": { - "@vue/shared": "3.4.37" + "@vue/shared": "3.4.38" } }, "node_modules/@vue/runtime-core": { - "version": "3.4.37", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.37.tgz", - "integrity": "sha512-MNjrVoLV/sirHZoD7QAilU1Ifs7m/KJv4/84QVbE6nyAZGQNVOa1HGxaOzp9YqCG+GpLt1hNDC4RbH+KtanV7w==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.38.tgz", + "integrity": "sha512-21z3wA99EABtuf+O3IhdxP0iHgkBs1vuoCAsCKLVJPEjpVqvblwBnTj42vzHRlWDCyxu9ptDm7sI2ZMcWrQqlA==", "dependencies": { - "@vue/reactivity": "3.4.37", - "@vue/shared": "3.4.37" + "@vue/reactivity": "3.4.38", + "@vue/shared": "3.4.38" } }, "node_modules/@vue/runtime-dom": { - "version": "3.4.37", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.37.tgz", - "integrity": "sha512-Mg2EwgGZqtwKrqdL/FKMF2NEaOHuH+Ks9TQn3DHKyX//hQTYOun+7Tqp1eo0P4Ds+SjltZshOSRq6VsU0baaNg==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.38.tgz", + "integrity": "sha512-afZzmUreU7vKwKsV17H1NDThEEmdYI+GCAK/KY1U957Ig2NATPVjCROv61R19fjZNzMmiU03n79OMnXyJVN0UA==", "dependencies": { - "@vue/reactivity": "3.4.37", - "@vue/runtime-core": "3.4.37", - "@vue/shared": "3.4.37", + "@vue/reactivity": "3.4.38", + "@vue/runtime-core": "3.4.38", + "@vue/shared": "3.4.38", "csstype": "^3.1.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.4.37", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.37.tgz", - "integrity": "sha512-jZ5FAHDR2KBq2FsRUJW6GKDOAG9lUTX8aBEGq4Vf6B/35I9fPce66BornuwmqmKgfiSlecwuOb6oeoamYMohkg==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.38.tgz", + "integrity": "sha512-NggOTr82FbPEkkUvBm4fTGcwUY8UuTsnWC/L2YZBmvaQ4C4Jl/Ao4HHTB+l7WnFCt5M/dN3l0XLuyjzswGYVCA==", "dependencies": { - "@vue/compiler-ssr": "3.4.37", - "@vue/shared": "3.4.37" + "@vue/compiler-ssr": "3.4.38", + "@vue/shared": "3.4.38" }, "peerDependencies": { - "vue": "3.4.37" + "vue": "3.4.38" } }, "node_modules/@vue/shared": { - "version": "3.4.37", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.37.tgz", - "integrity": "sha512-nIh8P2fc3DflG8+5Uw8PT/1i17ccFn0xxN/5oE9RfV5SVnd7G0XEFRwakrnNFE/jlS95fpGXDVG5zDETS26nmg==" + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.38.tgz", + "integrity": "sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==" }, "node_modules/@webassemblyjs/ast": { "version": "1.12.1", @@ -12999,6 +13185,15 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, + "node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, "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", @@ -13074,6 +13269,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": 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.findlastindex": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", @@ -13130,6 +13345,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/arraybuffer.prototype.slice": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", @@ -13200,6 +13431,12 @@ "node": ">=4" } }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true + }, "node_modules/ast-walker-scope": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/ast-walker-scope/-/ast-walker-scope-0.6.1.tgz", @@ -13308,9 +13545,9 @@ } }, "node_modules/axe-core": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.9.1.tgz", - "integrity": "sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.0.tgz", + "integrity": "sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==", "dev": true, "engines": { "node": ">=4" @@ -13327,6 +13564,15 @@ "proxy-from-env": "^1.1.0" } }, + "node_modules/axobject-query": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", + "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, "node_modules/b4a": { "version": "1.6.6", "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", @@ -13899,9 +14145,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz", - "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==", + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", "funding": [ { "type": "opencollective", @@ -13917,9 +14163,9 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001640", - "electron-to-chromium": "^1.4.820", - "node-releases": "^2.0.14", + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", "update-browserslist-db": "^1.1.0" }, "bin": { @@ -14244,9 +14490,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001642", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz", - "integrity": "sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==", + "version": "1.0.30001651", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", + "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", "funding": [ { "type": "opencollective", @@ -15672,11 +15918,11 @@ } }, "node_modules/cssnano": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.0.4.tgz", - "integrity": "sha512-rQgpZra72iFjiheNreXn77q1haS2GEy69zCMbu4cpXCFPMQF+D4Ik5V7ktMzUF/sA7xCIgcqHwGPnCD+0a1vHg==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.0.5.tgz", + "integrity": "sha512-Aq0vqBLtpTT5Yxj+hLlLfNPFuRQCDIjx5JQAhhaedQKLNDvDGeVziF24PS+S1f0Z5KCxWvw0QVI3VNHNBITxVQ==", "dependencies": { - "cssnano-preset-default": "^7.0.4", + "cssnano-preset-default": "^7.0.5", "lilconfig": "^3.1.2" }, "engines": { @@ -15691,40 +15937,40 @@ } }, "node_modules/cssnano-preset-default": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.4.tgz", - "integrity": "sha512-jQ6zY9GAomQX7/YNLibMEsRZguqMUGuupXcEk2zZ+p3GUxwCAsobqPYE62VrJ9qZ0l9ltrv2rgjwZPBIFIjYtw==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.5.tgz", + "integrity": "sha512-Jbzja0xaKwc5JzxPQoc+fotKpYtWEu4wQLMQe29CM0FjjdRjA4omvbGHl2DTGgARKxSTpPssBsok+ixv8uTBqw==", "dependencies": { - "browserslist": "^4.23.1", + "browserslist": "^4.23.3", "css-declaration-sorter": "^7.2.0", "cssnano-utils": "^5.0.0", - "postcss-calc": "^10.0.0", - "postcss-colormin": "^7.0.1", - "postcss-convert-values": "^7.0.2", - "postcss-discard-comments": "^7.0.1", - "postcss-discard-duplicates": "^7.0.0", + "postcss-calc": "^10.0.1", + "postcss-colormin": "^7.0.2", + "postcss-convert-values": "^7.0.3", + "postcss-discard-comments": "^7.0.2", + "postcss-discard-duplicates": "^7.0.1", "postcss-discard-empty": "^7.0.0", "postcss-discard-overridden": "^7.0.0", - "postcss-merge-longhand": "^7.0.2", - "postcss-merge-rules": "^7.0.2", + "postcss-merge-longhand": "^7.0.3", + "postcss-merge-rules": "^7.0.3", "postcss-minify-font-values": "^7.0.0", "postcss-minify-gradients": "^7.0.0", - "postcss-minify-params": "^7.0.1", - "postcss-minify-selectors": "^7.0.2", + "postcss-minify-params": "^7.0.2", + "postcss-minify-selectors": "^7.0.3", "postcss-normalize-charset": "^7.0.0", "postcss-normalize-display-values": "^7.0.0", "postcss-normalize-positions": "^7.0.0", "postcss-normalize-repeat-style": "^7.0.0", "postcss-normalize-string": "^7.0.0", "postcss-normalize-timing-functions": "^7.0.0", - "postcss-normalize-unicode": "^7.0.1", + "postcss-normalize-unicode": "^7.0.2", "postcss-normalize-url": "^7.0.0", "postcss-normalize-whitespace": "^7.0.0", "postcss-ordered-values": "^7.0.1", - "postcss-reduce-initial": "^7.0.1", + "postcss-reduce-initial": "^7.0.2", "postcss-reduce-transforms": "^7.0.0", "postcss-svgo": "^7.0.1", - "postcss-unique-selectors": "^7.0.1" + "postcss-unique-selectors": "^7.0.2" }, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" @@ -15907,6 +16153,12 @@ "which": "bin/which" } }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, "node_modules/dargs": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz", @@ -16089,6 +16341,38 @@ "integrity": "sha512-aWS3UIVH+NPGCD1kki+DCU9Dua032iSsO43LqQpcs4R3+dVv7tX0qBGjiVHJHjplsoUM2XRO/KB92glqc68awg==", "dev": true }, + "node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -16505,7 +16789,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, + "devOptional": true, "dependencies": { "esutils": "^2.0.2" }, @@ -16683,9 +16967,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.828", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.828.tgz", - "integrity": "sha512-QOIJiWpQJDHAVO4P58pwb133Cwee0nbvy/MV1CwzZVGpkH1RX33N3vsaWRCpR6bF63AAq366neZrRTu7Qlsbbw==" + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.6.tgz", + "integrity": "sha512-jwXWsM5RPf6j9dPYzaorcBSUg6AiqocPEyMpkchkvntaH9HGfOOMZwxMJjDY/XEs3T5dM7uyH1VhRMkqUU9qVw==" }, "node_modules/emoji-regex": { "version": "9.2.2", @@ -16927,6 +17211,51 @@ "node": ">= 0.4" } }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-module-lexer": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", @@ -16992,9 +17321,9 @@ "dev": true }, "node_modules/esbuild": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.0.tgz", - "integrity": "sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", + "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -17003,30 +17332,30 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.23.0", - "@esbuild/android-arm": "0.23.0", - "@esbuild/android-arm64": "0.23.0", - "@esbuild/android-x64": "0.23.0", - "@esbuild/darwin-arm64": "0.23.0", - "@esbuild/darwin-x64": "0.23.0", - "@esbuild/freebsd-arm64": "0.23.0", - "@esbuild/freebsd-x64": "0.23.0", - "@esbuild/linux-arm": "0.23.0", - "@esbuild/linux-arm64": "0.23.0", - "@esbuild/linux-ia32": "0.23.0", - "@esbuild/linux-loong64": "0.23.0", - "@esbuild/linux-mips64el": "0.23.0", - "@esbuild/linux-ppc64": "0.23.0", - "@esbuild/linux-riscv64": "0.23.0", - "@esbuild/linux-s390x": "0.23.0", - "@esbuild/linux-x64": "0.23.0", - "@esbuild/netbsd-x64": "0.23.0", - "@esbuild/openbsd-arm64": "0.23.0", - "@esbuild/openbsd-x64": "0.23.0", - "@esbuild/sunos-x64": "0.23.0", - "@esbuild/win32-arm64": "0.23.0", - "@esbuild/win32-ia32": "0.23.0", - "@esbuild/win32-x64": "0.23.0" + "@esbuild/aix-ppc64": "0.23.1", + "@esbuild/android-arm": "0.23.1", + "@esbuild/android-arm64": "0.23.1", + "@esbuild/android-x64": "0.23.1", + "@esbuild/darwin-arm64": "0.23.1", + "@esbuild/darwin-x64": "0.23.1", + "@esbuild/freebsd-arm64": "0.23.1", + "@esbuild/freebsd-x64": "0.23.1", + "@esbuild/linux-arm": "0.23.1", + "@esbuild/linux-arm64": "0.23.1", + "@esbuild/linux-ia32": "0.23.1", + "@esbuild/linux-loong64": "0.23.1", + "@esbuild/linux-mips64el": "0.23.1", + "@esbuild/linux-ppc64": "0.23.1", + "@esbuild/linux-riscv64": "0.23.1", + "@esbuild/linux-s390x": "0.23.1", + "@esbuild/linux-x64": "0.23.1", + "@esbuild/netbsd-x64": "0.23.1", + "@esbuild/openbsd-arm64": "0.23.1", + "@esbuild/openbsd-x64": "0.23.1", + "@esbuild/sunos-x64": "0.23.1", + "@esbuild/win32-arm64": "0.23.1", + "@esbuild/win32-ia32": "0.23.1", + "@esbuild/win32-x64": "0.23.1" } }, "node_modules/esbuild-wasm": { @@ -17098,37 +17427,41 @@ } }, "node_modules/eslint": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.7.0.tgz", - "integrity": "sha512-FzJ9D/0nGiCGBf8UXO/IGLTgLVzIxze1zpfA8Ton2mjLovXdAPlYDv+MQDcqj3TmrhAGYfOpz9RfR+ent0AgAw==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "devOptional": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.11.0", - "@eslint/config-array": "^0.17.0", - "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.7.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", - "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", + "@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": "^8.0.2", - "eslint-visitor-keys": "^4.0.0", - "espree": "^10.1.0", - "esquery": "^1.5.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", - "file-entry-cache": "^8.0.0", + "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", @@ -17142,10 +17475,10 @@ "eslint": "bin/eslint.js" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://eslint.org/donate" + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-compat-utils": { @@ -17163,6 +17496,32 @@ "eslint": ">=6.0.0" } }, + "node_modules/eslint-config-next": { + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.6.tgz", + "integrity": "sha512-z0URA5LO6y8lS/YLN0EDW/C4LEkDODjJzA37dvLVdzCPzuewjzTe1os5g3XclZAZrQ8X8hPaSMQ2JuVWwMmrTA==", + "dev": true, + "dependencies": { + "@next/eslint-plugin-next": "14.2.6", + "@rushstack/eslint-patch": "^1.3.3", + "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" + }, + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/eslint-config-prettier": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", @@ -17285,6 +17644,31 @@ "ms": "^2.1.1" } }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", + "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" + } + }, "node_modules/eslint-module-utils": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", @@ -17505,6 +17889,97 @@ "node": ">=0.8.0" } }, + "node_modules/eslint-plugin-import": { + "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, + "dependencies": { + "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.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.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" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz", + "integrity": "sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==", + "dev": true, + "dependencies": { + "aria-query": "~5.1.3", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.9.1", + "axobject-query": "~3.1.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.19", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, "node_modules/eslint-plugin-n": { "version": "17.9.0", "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.9.0.tgz", @@ -17626,6 +18101,88 @@ "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, + "node_modules/eslint-plugin-react": { + "version": "7.35.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz", + "integrity": "sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.19", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.0", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.11", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/eslint-plugin-unicorn": { "version": "54.0.0", "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-54.0.0.tgz", @@ -17666,16 +18223,16 @@ "dev": true }, "node_modules/eslint-scope": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz", - "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "devOptional": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -17712,7 +18269,7 @@ "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==", - "devOptional": true, + "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -17720,13 +18277,27 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/@eslint/js": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.7.0.tgz", - "integrity": "sha512-ChuWDQenef8OSFnvuxv0TCVxEwmu3+hPNKvM9B34qpM0rDRbjL8t5QkQeHHeAfsKQjuH9wS82WeCi1J/owatng==", + "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==", "devOptional": 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": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/ajv": { @@ -17794,6 +18365,35 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "devOptional": true }, + "node_modules/eslint/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==", + "devOptional": 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==", + "devOptional": 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/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -17810,6 +18410,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "devOptional": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -17870,6 +18485,18 @@ "node": ">=8" } }, + "node_modules/eslint/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==", + "devOptional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint/node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -17899,7 +18526,7 @@ "version": "10.1.0", "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", - "devOptional": true, + "dev": true, "dependencies": { "acorn": "^8.12.0", "acorn-jsx": "^5.3.2", @@ -18489,15 +19116,15 @@ } }, "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "devOptional": true, "dependencies": { - "flat-cache": "^4.0.0" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">=16.0.0" + "node": "^10.12.0 || >=12.0.0" } }, "node_modules/file-type": { @@ -18685,16 +19312,54 @@ } }, "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "devOptional": true, "dependencies": { "flatted": "^3.2.9", - "keyv": "^4.5.4" + "keyv": "^4.5.3", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=16" + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flat-cache/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "devOptional": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "devOptional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/flatted": { @@ -19412,7 +20077,7 @@ "version": "14.0.0", "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "devOptional": true, + "dev": true, "engines": { "node": ">=18" }, @@ -19861,7 +20526,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "devOptional": true }, "node_modules/gzip-size": { "version": "7.0.0", @@ -20510,9 +21175,9 @@ } }, "node_modules/husky": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.4.tgz", - "integrity": "sha512-bho94YyReb4JV7LYWRWxZ/xr6TtOTt8cMfmQ39MQYJ7f/YE268s3GdghGwi+y4zAeqewE5zYLvuhV0M0ijsDEA==", + "version": "9.1.5", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.5.tgz", + "integrity": "sha512-rowAVRUBfI0b4+niA4SJMhfQwc107VLkBUgEYYAOQAbqDCnra1nYh83hF/MDmhYs9t9n1E3DuKOrs2LYNC+0Ag==", "dev": true, "bin": { "husky": "bin.js" @@ -20775,14 +21440,14 @@ "dev": true }, "node_modules/iframe-resizer": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/iframe-resizer/-/iframe-resizer-5.2.3.tgz", - "integrity": "sha512-PdHPVFLJ668j5FindSa8VkokEHkezJ8rCxi3RHNqE/NDsv7jWtSvhQ9FvgU2n/eDRviF2uMy/EZ4lFv2cSUo+Q==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/iframe-resizer/-/iframe-resizer-5.2.4.tgz", + "integrity": "sha512-txvuX+Evq5PWN6mpOfCsF7gGl3wxPfc4ZWQ031IzWRAu5svdIUoIzpE4pIRYaDg7TXIo7BKKguDNcgPBLAUskg==", "dev": true, "dependencies": { - "@iframe-resizer/child": "5.2.3", - "@iframe-resizer/jquery": "5.2.3", - "@iframe-resizer/parent": "5.2.3" + "@iframe-resizer/child": "5.2.4", + "@iframe-resizer/jquery": "5.2.4", + "@iframe-resizer/parent": "5.2.4" }, "funding": { "type": "individual", @@ -20790,9 +21455,9 @@ } }, "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "engines": { "node": ">= 4" } @@ -21132,6 +21797,22 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-array-buffer": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", @@ -21154,6 +21835,21 @@ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "devOptional": true }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", @@ -21317,6 +22013,18 @@ "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-fullwidth-code-point": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", @@ -21329,6 +22037,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-get-set-prop": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-get-set-prop/-/is-get-set-prop-1.0.0.tgz", @@ -21569,6 +22292,18 @@ "lower-case": "^1.1.0" } }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", @@ -21719,6 +22454,18 @@ "node": ">=0.10.0" } }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-shared-array-buffer": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", @@ -21849,6 +22596,18 @@ "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", "dev": true }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -21861,6 +22620,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-what": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", @@ -21972,6 +22747,19 @@ "semver": "bin/semver.js" } }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, "node_modules/jackspeak": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.1.tgz", @@ -22286,6 +23074,21 @@ "promise": "^7.0.1" } }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, "node_modules/jszip": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", @@ -22387,6 +23190,24 @@ "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==" }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/launch-editor": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.0.tgz", @@ -22790,9 +23611,9 @@ } }, "node_modules/lint-staged": { - "version": "15.2.8", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.8.tgz", - "integrity": "sha512-PUWFf2zQzsd9EFU+kM1d7UP+AZDbKFKuj+9JNVTBkhUFhbg4MAt6WfyMMwBfM4lYqd4D2Jwac5iuTu9rVj4zCQ==", + "version": "15.2.9", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.9.tgz", + "integrity": "sha512-BZAt8Lk3sEnxw7tfxM7jeZlPRuT4M68O0/CwZhhaw6eeWu0Lz5eERE3m386InivXB64fp/mDID452h48tvKlRQ==", "dev": true, "dependencies": { "chalk": "~5.3.0", @@ -25469,11 +26290,11 @@ } }, "node_modules/next": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/next/-/next-14.2.5.tgz", - "integrity": "sha512-0f8aRfBVL+mpzfBjYfQuLWh2WyAwtJXCRfkPF4UJ5qd2YwrHczsrSzXU4tRMV0OAxR8ZJZWPFn6uhSC56UTsLA==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.6.tgz", + "integrity": "sha512-57Su7RqXs5CBKKKOagt8gPhMM3CpjgbeQhrtei2KLAA1vTNm7jfKS+uDARkSW8ZETUflDCBIsUKGSyQdRs4U4g==", "dependencies": { - "@next/env": "14.2.5", + "@next/env": "14.2.6", "@swc/helpers": "0.5.5", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", @@ -25488,15 +26309,15 @@ "node": ">=18.17.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "14.2.5", - "@next/swc-darwin-x64": "14.2.5", - "@next/swc-linux-arm64-gnu": "14.2.5", - "@next/swc-linux-arm64-musl": "14.2.5", - "@next/swc-linux-x64-gnu": "14.2.5", - "@next/swc-linux-x64-musl": "14.2.5", - "@next/swc-win32-arm64-msvc": "14.2.5", - "@next/swc-win32-ia32-msvc": "14.2.5", - "@next/swc-win32-x64-msvc": "14.2.5" + "@next/swc-darwin-arm64": "14.2.6", + "@next/swc-darwin-x64": "14.2.6", + "@next/swc-linux-arm64-gnu": "14.2.6", + "@next/swc-linux-arm64-musl": "14.2.6", + "@next/swc-linux-x64-gnu": "14.2.6", + "@next/swc-linux-x64-musl": "14.2.6", + "@next/swc-win32-arm64-msvc": "14.2.6", + "@next/swc-win32-ia32-msvc": "14.2.6", + "@next/swc-win32-x64-msvc": "14.2.6" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", @@ -27067,9 +27888,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==" }, "node_modules/node-sarif-builder": { "version": "2.0.3", @@ -27751,6 +28572,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -27778,6 +28615,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/object.fromentries": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", @@ -28977,12 +29828,12 @@ } }, "node_modules/playwright": { - "version": "1.46.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.46.0.tgz", - "integrity": "sha512-XYJ5WvfefWONh1uPAUAi0H2xXV5S3vrtcnXe6uAOgdGi3aSpqOSXX08IAjXW34xitfuOJsvXU5anXZxPSEQiJw==", + "version": "1.46.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.46.1.tgz", + "integrity": "sha512-oPcr1yqoXLCkgKtD5eNUPLiN40rYEM39odNpIb6VE6S7/15gJmA1NzVv6zJYusV0e7tzvkU/utBFNa/Kpxmwng==", "devOptional": true, "dependencies": { - "playwright-core": "1.46.0" + "playwright-core": "1.46.1" }, "bin": { "playwright": "cli.js" @@ -28995,9 +29846,9 @@ } }, "node_modules/playwright-core": { - "version": "1.46.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.46.0.tgz", - "integrity": "sha512-9Y/d5UIwuJk8t3+lhmMSAJyNP1BUC/DqP3cQJDQQL/oWqAiuPTLgy7Q5dzglmTLwcBRdetzgNM/gni7ckfTr6A==", + "version": "1.46.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.46.1.tgz", + "integrity": "sha512-h9LqIQaAv+CYvWzsZ+h3RsrqCStkBHlgo6/TJlFst3cOTlLghBQlJwPOZKQJTKNaD3QIB7aAVQ+gfWbN3NXB7A==", "devOptional": true, "bin": { "playwright-core": "cli.js" @@ -29099,11 +29950,11 @@ } }, "node_modules/postcss-calc": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.0.0.tgz", - "integrity": "sha512-OmjhudoNTP0QleZCwl1i6NeBwN+5MZbY5ersLZz69mjJiDVv/p57RjRuKDkHeDWr4T+S97wQfsqRTNoDHB2e3g==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.0.1.tgz", + "integrity": "sha512-pp1Z3FxtxA+xHAoWXcOXgnBN1WPu4ZiJ5LWGjKyf9MMreagAsaTUtnqFK1y1sHhyJddAkYTPu6XSuLgb3oYCjw==", "dependencies": { - "postcss-selector-parser": "^6.0.16", + "postcss-selector-parser": "^6.1.1", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -29143,11 +29994,11 @@ } }, "node_modules/postcss-colormin": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.1.tgz", - "integrity": "sha512-uszdT0dULt3FQs47G5UHCduYK+FnkLYlpu1HpWu061eGsKZ7setoG7kA+WC9NQLsOJf69D5TxGHgnAdRgylnFQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.2.tgz", + "integrity": "sha512-YntRXNngcvEvDbEjTdRWGU606eZvB5prmHG4BF0yLmVpamXbpsRJzevyy6MZVyuecgzI2AWAlvFi8DAeCqwpvA==", "dependencies": { - "browserslist": "^4.23.1", + "browserslist": "^4.23.3", "caniuse-api": "^3.0.0", "colord": "^2.9.3", "postcss-value-parser": "^4.2.0" @@ -29160,11 +30011,11 @@ } }, "node_modules/postcss-convert-values": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.2.tgz", - "integrity": "sha512-MuZIF6HJ4izko07Q0TgW6pClalI4al6wHRNPkFzqQdwAwG7hPn0lA58VZdxyb2Vl5AYjJ1piO+jgF9EnTjQwQQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.3.tgz", + "integrity": "sha512-yJhocjCs2SQer0uZ9lXTMOwDowbxvhwFVrZeS6NPEij/XXthl73ggUmfwVvJM+Vaj5gtCKJV1jiUu4IhAUkX/Q==", "dependencies": { - "browserslist": "^4.23.1", + "browserslist": "^4.23.3", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -29175,11 +30026,11 @@ } }, "node_modules/postcss-discard-comments": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.1.tgz", - "integrity": "sha512-GVrQxUOhmle1W6jX2SvNLt4kmN+JYhV7mzI6BMnkAWR9DtVvg8e67rrV0NfdWhn7x1zxvzdWkMBPdBDCls+uwQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.2.tgz", + "integrity": "sha512-/Hje9Ls1IYcB9duELO/AyDUJI6aQVY3h5Rj1ziXgaLYCTi1iVBLnjg/TS0D6NszR/kDG6I86OwLmAYe+bvJjiQ==", "dependencies": { - "postcss-selector-parser": "^6.1.0" + "postcss-selector-parser": "^6.1.1" }, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" @@ -29189,9 +30040,9 @@ } }, "node_modules/postcss-discard-duplicates": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.0.tgz", - "integrity": "sha512-bAnSuBop5LpAIUmmOSsuvtKAAKREB6BBIYStWUTGq8oG5q9fClDMMuY8i4UPI/cEcDx2TN+7PMnXYIId20UVDw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.1.tgz", + "integrity": "sha512-oZA+v8Jkpu1ct/xbbrntHRsfLGuzoP+cpt0nJe5ED2FQF8n8bJtn7Bo28jSmBYwqgqnqkuSXJfSUEE7if4nClQ==", "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" }, @@ -29297,12 +30148,12 @@ "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==" }, "node_modules/postcss-merge-longhand": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.2.tgz", - "integrity": "sha512-06vrW6ZWi9qeP7KMS9fsa9QW56+tIMW55KYqF7X3Ccn+NI2pIgPV6gFfvXTMQ05H90Y5DvnCDPZ2IuHa30PMUg==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.3.tgz", + "integrity": "sha512-8waYomFxshdv6M9Em3QRM9MettRLDRcH2JQi2l0Z1KlYD/vhal3gbkeSES0NuACXOlZBB0V/B0AseHZaklzWOA==", "dependencies": { "postcss-value-parser": "^4.2.0", - "stylehacks": "^7.0.2" + "stylehacks": "^7.0.3" }, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" @@ -29312,14 +30163,14 @@ } }, "node_modules/postcss-merge-rules": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.2.tgz", - "integrity": "sha512-VAR47UNvRsdrTHLe7TV1CeEtF9SJYR5ukIB9U4GZyZOptgtsS20xSxy+k5wMrI3udST6O1XuIn7cjQkg7sDAAw==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.3.tgz", + "integrity": "sha512-2eSas2p3voPxNfdI5sQrvIkMaeUHpVc3EezgVs18hz/wRTQAC9U99tp9j3W5Jx9/L3qHkEDvizEx/LdnmumIvQ==", "dependencies": { - "browserslist": "^4.23.1", + "browserslist": "^4.23.3", "caniuse-api": "^3.0.0", "cssnano-utils": "^5.0.0", - "postcss-selector-parser": "^6.1.0" + "postcss-selector-parser": "^6.1.1" }, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" @@ -29359,11 +30210,11 @@ } }, "node_modules/postcss-minify-params": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.1.tgz", - "integrity": "sha512-e+Xt8xErSRPgSRFxHeBCSxMiO8B8xng7lh8E0A5ep1VfwYhY8FXhu4Q3APMjgx9YDDbSp53IBGENrzygbUvgUQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.2.tgz", + "integrity": "sha512-nyqVLu4MFl9df32zTsdcLqCFfE/z2+f8GE1KHPxWOAmegSo6lpV2GNy5XQvrzwbLmiU7d+fYay4cwto1oNdAaQ==", "dependencies": { - "browserslist": "^4.23.1", + "browserslist": "^4.23.3", "cssnano-utils": "^5.0.0", "postcss-value-parser": "^4.2.0" }, @@ -29375,12 +30226,12 @@ } }, "node_modules/postcss-minify-selectors": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-7.0.2.tgz", - "integrity": "sha512-dCzm04wqW1uqLmDZ41XYNBJfjgps3ZugDpogAmJXoCb5oCiTzIX4oPXXKxDpTvWOnKxQKR4EbV4ZawJBLcdXXA==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-7.0.3.tgz", + "integrity": "sha512-SxTgUQSgBk6wEqzQZKEv1xQYIp9UBju6no9q+npohzSdhuSICQdkqmD1UMKkZWItS3olJSJMDDEY9WOJ5oGJew==", "dependencies": { "cssesc": "^3.0.0", - "postcss-selector-parser": "^6.1.0" + "postcss-selector-parser": "^6.1.1" }, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" @@ -29530,11 +30381,11 @@ } }, "node_modules/postcss-normalize-unicode": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.1.tgz", - "integrity": "sha512-PTPGdY9xAkTw+8ZZ71DUePb7M/Vtgkbbq+EoI33EuyQEzbKemEQMhe5QSr0VP5UfZlreANDPxSfcdSprENcbsg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.2.tgz", + "integrity": "sha512-ztisabK5C/+ZWBdYC+Y9JCkp3M9qBv/XFvDtSw0d/XwfT3UaKeW/YTm/MD/QrPNxuecia46vkfEhewjwcYFjkg==", "dependencies": { - "browserslist": "^4.23.1", + "browserslist": "^4.23.3", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -29588,11 +30439,11 @@ } }, "node_modules/postcss-reduce-initial": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.1.tgz", - "integrity": "sha512-0JDUSV4bGB5FGM5g8MkS+rvqKukJZ7OTHw/lcKn7xPNqeaqJyQbUO8/dJpvyTpaVwPsd3Uc33+CfNzdVowp2WA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.2.tgz", + "integrity": "sha512-pOnu9zqQww7dEKf62Nuju6JgsW2V0KRNBHxeKohU+JkHd/GAH5uvoObqFLqkeB2n20mr6yrlWDvo5UBU5GnkfA==", "dependencies": { - "browserslist": "^4.23.1", + "browserslist": "^4.23.3", "caniuse-api": "^3.0.0" }, "engines": { @@ -29643,9 +30494,9 @@ } }, "node_modules/postcss-resolve-nested-selector": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.4.tgz", - "integrity": "sha512-R6vHqZWgVnTAPq0C+xjyHfEZqfIYboCBVSy24MjxEDm+tIh1BU4O6o7DP7AA7kHzf136d+Qc5duI4tlpHjixDw==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", + "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==", "devOptional": true }, "node_modules/postcss-safe-parser": { @@ -29701,9 +30552,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", - "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -29728,11 +30579,11 @@ } }, "node_modules/postcss-unique-selectors": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-7.0.1.tgz", - "integrity": "sha512-MH7QE/eKUftTB5ta40xcHLl7hkZjgDFydpfTK+QWXeHxghVt3VoPqYL5/G+zYZPPIs+8GuqFXSTgxBSoB1RZtQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-7.0.2.tgz", + "integrity": "sha512-CjSam+7Vf8cflJQsHrMS0P2hmy9u0+n/P001kb5eAszLmhjMqrt/i5AqQuNFihhViwDvEAezqTmXqaYXL2ugMw==", "dependencies": { - "postcss-selector-parser": "^6.1.0" + "postcss-selector-parser": "^6.1.1" }, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" @@ -30715,11 +31566,11 @@ } }, "node_modules/react-router": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.26.0.tgz", - "integrity": "sha512-wVQq0/iFYd3iZ9H2l3N3k4PL8EEHcb0XlU2Na8nEwmiXgIUElEH6gaJDtUQxJ+JFzmIXaQjfdpcGWaM6IoQGxg==", + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.26.1.tgz", + "integrity": "sha512-kIwJveZNwp7teQRI5QmwWo39A5bXRyqpH0COKKmPnyD2vBvDwgFXSqDUYtt1h+FEyfnE8eXr7oe0MxRzVwCcvQ==", "dependencies": { - "@remix-run/router": "1.19.0" + "@remix-run/router": "1.19.1" }, "engines": { "node": ">=14.0.0" @@ -30729,12 +31580,12 @@ } }, "node_modules/react-router-dom": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.26.0.tgz", - "integrity": "sha512-RRGUIiDtLrkX3uYcFiCIxKFWMcWQGMojpYZfcstc63A1+sSnVgILGIm9gNUA6na3Fm1QuPGSBQH2EMbAZOnMsQ==", + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.26.1.tgz", + "integrity": "sha512-veut7m41S1fLql4pLhxeSW3jlqs+4MtjRLj0xvuCEXsxusJCbs6I8yn9BxzzDX2XDgafrccY6hwjmd/bL54tFw==", "dependencies": { - "@remix-run/router": "1.19.0", - "react-router": "6.26.0" + "@remix-run/router": "1.19.1", + "react-router": "6.26.1" }, "engines": { "node": ">=14.0.0" @@ -31175,6 +32026,27 @@ "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", "dev": true }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/regedit": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/regedit/-/regedit-5.1.2.tgz", @@ -31704,9 +32576,9 @@ } }, "node_modules/rollup": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.1.tgz", - "integrity": "sha512-Elx2UT8lzxxOXMpy5HWQGZqkrQOtrVDDa/bm9l10+U4rQnVzbL/LgZ4NOM1MPIDyHk69W4InuYDF5dzRh4Kw1A==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.0.tgz", + "integrity": "sha512-vo+S/lfA2lMS7rZ2Qoubi6I5hwZwzXeUIctILZLbHI+laNtvhhOIon2S1JksA5UEDQ7l3vberd0fxK44lTYjbQ==", "dependencies": { "@types/estree": "1.0.5" }, @@ -31718,22 +32590,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.18.1", - "@rollup/rollup-android-arm64": "4.18.1", - "@rollup/rollup-darwin-arm64": "4.18.1", - "@rollup/rollup-darwin-x64": "4.18.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.18.1", - "@rollup/rollup-linux-arm-musleabihf": "4.18.1", - "@rollup/rollup-linux-arm64-gnu": "4.18.1", - "@rollup/rollup-linux-arm64-musl": "4.18.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.18.1", - "@rollup/rollup-linux-riscv64-gnu": "4.18.1", - "@rollup/rollup-linux-s390x-gnu": "4.18.1", - "@rollup/rollup-linux-x64-gnu": "4.18.1", - "@rollup/rollup-linux-x64-musl": "4.18.1", - "@rollup/rollup-win32-arm64-msvc": "4.18.1", - "@rollup/rollup-win32-ia32-msvc": "4.18.1", - "@rollup/rollup-win32-x64-msvc": "4.18.1", + "@rollup/rollup-android-arm-eabi": "4.21.0", + "@rollup/rollup-android-arm64": "4.21.0", + "@rollup/rollup-darwin-arm64": "4.21.0", + "@rollup/rollup-darwin-x64": "4.21.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.0", + "@rollup/rollup-linux-arm-musleabihf": "4.21.0", + "@rollup/rollup-linux-arm64-gnu": "4.21.0", + "@rollup/rollup-linux-arm64-musl": "4.21.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.0", + "@rollup/rollup-linux-riscv64-gnu": "4.21.0", + "@rollup/rollup-linux-s390x-gnu": "4.21.0", + "@rollup/rollup-linux-x64-gnu": "4.21.0", + "@rollup/rollup-linux-x64-musl": "4.21.0", + "@rollup/rollup-win32-arm64-msvc": "4.21.0", + "@rollup/rollup-win32-ia32-msvc": "4.21.0", + "@rollup/rollup-win32-x64-msvc": "4.21.0", "fsevents": "~2.3.2" } }, @@ -32880,6 +33752,18 @@ "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==" }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/stream-slicer": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/stream-slicer/-/stream-slicer-0.0.6.tgz", @@ -33017,6 +33901,42 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, + "node_modules/string.prototype.includes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz", + "integrity": "sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dev": 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", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/string.prototype.padend": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.6.tgz", @@ -33035,6 +33955,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, "node_modules/string.prototype.trim": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", @@ -33245,12 +34175,12 @@ } }, "node_modules/stylehacks": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.2.tgz", - "integrity": "sha512-HdkWZS9b4gbgYTdMg4gJLmm7biAUug1qTqXjS+u8X+/pUd+9Px1E+520GnOW3rST9MNsVOVpsJG+mPHNosxjOQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.3.tgz", + "integrity": "sha512-4DqtecvI/Nd+2BCvW9YEF6lhBN5UM50IJ1R3rnEAhBwbCKf4VehRf+uqvnVArnBayjYD/WtT3g0G/HSRxWfTRg==", "dependencies": { - "browserslist": "^4.23.1", - "postcss-selector-parser": "^6.1.0" + "browserslist": "^4.23.3", + "postcss-selector-parser": "^6.1.1" }, "engines": { "node": "^18.12.0 || ^20.9.0 || >=22.0" @@ -33260,9 +34190,9 @@ } }, "node_modules/stylelint": { - "version": "16.8.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.8.1.tgz", - "integrity": "sha512-O8aDyfdODSDNz/B3gW2HQ+8kv8pfhSu7ZR7xskQ93+vI6FhKKGUJMQ03Ydu+w3OvXXE0/u4hWU4hCPNOyld+OA==", + "version": "16.8.2", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.8.2.tgz", + "integrity": "sha512-fInKATippQhcSm7AB+T32GpI+626yohrg33GkFT/5jzliUw5qhlwZq2UQQwgl3HsHrf09oeARi0ZwgY/UWEv9A==", "devOptional": true, "funding": [ { @@ -33275,10 +34205,10 @@ } ], "dependencies": { - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1", - "@csstools/media-query-list-parser": "^2.1.13", - "@csstools/selector-specificity": "^3.1.1", + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0", + "@csstools/media-query-list-parser": "^3.0.0", + "@csstools/selector-specificity": "^4.0.0", "@dual-bundle/import-meta-resolve": "^4.1.0", "balanced-match": "^2.0.0", "colord": "^2.9.3", @@ -33293,7 +34223,7 @@ "globby": "^11.1.0", "globjoin": "^0.1.4", "html-tags": "^3.3.1", - "ignore": "^5.3.1", + "ignore": "^5.3.2", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", "known-css-properties": "^0.34.0", @@ -33302,10 +34232,10 @@ "micromatch": "^4.0.7", "normalize-path": "^3.0.0", "picocolors": "^1.0.1", - "postcss": "^8.4.40", - "postcss-resolve-nested-selector": "^0.1.4", + "postcss": "^8.4.41", + "postcss-resolve-nested-selector": "^0.1.6", "postcss-safe-parser": "^7.0.0", - "postcss-selector-parser": "^6.1.1", + "postcss-selector-parser": "^6.1.2", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", @@ -33418,6 +34348,70 @@ "stylelint": ">= 11 < 17" } }, + "node_modules/stylelint/node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.0.tgz", + "integrity": "sha512-20hEErXV9GEx15qRbsJVzB91ryayx1F2duHPBrfZXQAHz/dJG0u/611URpr28+sFjm3EI7U17Pj9SVA9NSAGJA==", + "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.0" + } + }, + "node_modules/stylelint/node_modules/@csstools/css-tokenizer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.0.tgz", + "integrity": "sha512-efZvfJyYrqH9hPCKtOBywlTsCXnEzAI9sLHFzUsDpBb+1bQ+bxJnwL9V2bRKv9w4cpIp75yxGeZRaVKoMQnsEg==", + "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/stylelint/node_modules/@csstools/media-query-list-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.0.tgz", + "integrity": "sha512-W0JlkUFwXjo703wt06AcaWuUcS+6x6IEDyxV6W65Sw+vLCYp+uPsrps+PXTiIfN0V1Pqj5snPzN7EYLmbz1zjg==", + "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.0" + } + }, "node_modules/stylelint/node_modules/balanced-match": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", @@ -34705,9 +35699,9 @@ } }, "node_modules/undici-types": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz", - "integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==" + "version": "6.19.6", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.6.tgz", + "integrity": "sha512-e/vggGopEfTKSvj4ihnOLTsqhrKRN3LeO6qSN/GxohhuRv8qH9bNQ4B8W7e/vFL+0XTnmHPB4/kegunZGA4Org==" }, "node_modules/unenv": { "version": "1.10.0", @@ -35460,13 +36454,13 @@ } }, "node_modules/vite": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.0.tgz", - "integrity": "sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.2.tgz", + "integrity": "sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==", "dependencies": { "esbuild": "^0.21.3", - "postcss": "^8.4.40", - "rollup": "^4.13.0" + "postcss": "^8.4.41", + "rollup": "^4.20.0" }, "bin": { "vite": "bin/vite.js" @@ -36059,15 +37053,15 @@ "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==" }, "node_modules/vue": { - "version": "3.4.37", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.37.tgz", - "integrity": "sha512-3vXvNfkKTBsSJ7JP+LyR7GBuwQuckbWvuwAid3xbqK9ppsKt/DUvfqgZ48fgOLEfpy1IacL5f8QhUVl77RaI7A==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.38.tgz", + "integrity": "sha512-f0ZgN+mZ5KFgVv9wz0f4OgVKukoXtS3nwET4c2vLBGQR50aI8G0cqbFtLlX9Yiyg3LFGBitruPHt2PxwTduJEw==", "dependencies": { - "@vue/compiler-dom": "3.4.37", - "@vue/compiler-sfc": "3.4.37", - "@vue/runtime-dom": "3.4.37", - "@vue/server-renderer": "3.4.37", - "@vue/shared": "3.4.37" + "@vue/compiler-dom": "3.4.38", + "@vue/compiler-sfc": "3.4.38", + "@vue/runtime-dom": "3.4.38", + "@vue/server-renderer": "3.4.38", + "@vue/shared": "3.4.38" }, "peerDependencies": { "typescript": "*" @@ -36631,6 +37625,50 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-builtin-type": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", + "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/which-typed-array": { "version": "1.1.15", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", @@ -36946,15 +37984,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/xo/node_modules/@eslint/js": { - "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" - } - }, "node_modules/xo/node_modules/@typescript-eslint/eslint-plugin": { "version": "7.16.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.16.1.tgz", @@ -37137,37 +38166,6 @@ "eslint": "^8.56.0" } }, - "node_modules/xo/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/xo/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/xo/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -37177,40 +38175,6 @@ "balanced-match": "^1.0.0" } }, - "node_modules/xo/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/xo/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/xo/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/xo/node_modules/enhanced-resolve": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz", @@ -37225,61 +38189,6 @@ "node": ">=0.6" } }, - "node_modules/xo/node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", - "dev": true, - "dependencies": { - "@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", - "@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.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", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "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.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/xo/node_modules/eslint-config-xo-typescript": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/eslint-config-xo-typescript/-/eslint-config-xo-typescript-5.0.0.tgz", @@ -37342,234 +38251,6 @@ "semver": "bin/semver" } }, - "node_modules/xo/node_modules/eslint-plugin-import": { - "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, - "dependencies": { - "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.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.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" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/xo/node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/xo/node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/xo/node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/xo/node_modules/eslint-scope": { - "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", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/xo/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/xo/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/xo/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/xo/node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/xo/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/xo/node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/xo/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/xo/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/xo/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/xo/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/xo/node_modules/meow": { "version": "13.2.0", "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", @@ -37582,45 +38263,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/xo/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/xo/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/xo/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/xo/node_modules/resolve": { "version": "2.0.0-next.5", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", @@ -37638,22 +38280,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/xo/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/xo/node_modules/tapable": { "version": "0.1.10", "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz", @@ -37663,18 +38289,6 @@ "node": ">=0.6" } }, - "node_modules/xo/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==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/xo/node_modules/typescript": { "version": "5.5.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", @@ -37688,18 +38302,6 @@ "node": ">=14.17" } }, - "node_modules/xo/node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -37925,8 +38527,8 @@ "version": "0.0.0", "license": "Apache-2.0", "devDependencies": { - "@playwright/experimental-ct-react": "1.46.0", - "@types/react": "^18.3.3", + "@playwright/experimental-ct-react": "1.46.1", + "@types/react": "^18.3.4", "react": "^18.3.1", "react-dom": "^18.3.1" } @@ -37936,15 +38538,15 @@ "version": "0.0.0", "license": "Apache-2.0", "dependencies": { - "vue": "^3.4.37" + "vue": "^3.4.38" }, "devDependencies": { - "@playwright/experimental-ct-vue": "1.46.0", + "@playwright/experimental-ct-vue": "1.46.1", "@vitejs/plugin-vue": "^5.1.2", "replace-in-file": "^8.1.0", "tsx": "^4.17.0", "typescript": "^5.4.5", - "vite": "^5.4.0", + "vite": "^5.4.2", "vue-tsc": "^2.0.29" } }, @@ -37969,7 +38571,7 @@ "@builder.io/mitosis-cli": "^0.3.22", "@react-docgen/cli": "^2.0.3", "cpr": "3.0.1", - "cssnano": "^7.0.4", + "cssnano": "^7.0.5", "eslint": "^9.0.0", "hygen": "^6.2.11", "lit": "^3.2.0", @@ -37978,251 +38580,20 @@ "tsx": "^4.17.0" } }, - "packages/foundations": { - "name": "@db-ui/foundations", - "version": "0.0.0", - "license": "Apache-2.0", - "bin": { - "foundations": "build/index.js" - }, - "devDependencies": { - "@csstools/normalize.css": "12.1.1", - "commander": "^12.0.0", - "cpr": "3.0.1", - "cssnano": "^7.0.4", - "dotenv": "^16.4.5", - "glob": "^11.0.0", - "nodemon": "3.1.4", - "replace-in-file": "^8.1.0", - "sass": "1.77.4", - "tsx": "^4.17.0" - } - }, - "scripts": { - "version": "0.0.0", - "devDependencies": { - "@inquirer/prompts": "5.3.8", - "glob": "^11.0.0", - "inquirer": "^10.1.8", - "replace-in-file": "^8.1.0" - } - }, - "showcases/angular-showcase": { - "version": "0.0.0", - "dependencies": { - "@angular/animations": "17.3.12", - "@angular/common": "17.3.12", - "@angular/compiler": "17.3.12", - "@angular/core": "17.3.12", - "@angular/forms": "17.3.12", - "@angular/platform-browser": "17.3.12", - "@angular/platform-browser-dynamic": "17.3.12", - "@angular/router": "17.3.12", - "rxjs": "~7.8.1", - "sa11y": "3.2.2", - "tslib": "^2.6.3", - "zone.js": "~0.14.10" - }, - "devDependencies": { - "@angular-devkit/build-angular": "17.3.8", - "@angular/cli": "17.3.8", - "@angular/compiler-cli": "17.3.12", - "ng-packagr": "17.3.0", - "typescript": "^5.4.5" - } - }, - "showcases/angular-ssr-showcase": { - "version": "0.0.0", - "dependencies": { - "@angular/animations": "17.3.12", - "@angular/common": "17.3.12", - "@angular/compiler": "17.3.12", - "@angular/core": "17.3.12", - "@angular/forms": "17.3.12", - "@angular/platform-browser": "17.3.12", - "@angular/platform-browser-dynamic": "17.3.12", - "@angular/platform-server": "17.3.12", - "@angular/router": "17.3.12", - "@angular/ssr": "17.3.8", - "express": "^4.18.2", - "rxjs": "~7.8.1", - "tslib": "^2.6.2", - "zone.js": "~0.14.10" - }, - "devDependencies": { - "@angular-devkit/build-angular": "17.3.8", - "@angular/cli": "17.3.8", - "@angular/compiler-cli": "17.3.12", - "@types/express": "^4.17.21", - "@types/node": "^22.1.0", - "cpr": "3.0.1", - "ng-packagr": "17.3.0", - "typescript": "^5.4.5" - } - }, - "showcases/next-showcase": { - "dependencies": { - "next": "*", - "react": "18.3.1", - "react-dom": "18.3.1" - }, - "devDependencies": { - "@types/node": "^22.1.0", - "@types/react": "^18.3.1", - "npm-run-all": "^4.1.5", - "open-cli": "^8.0.0", - "typescript": "^5.4.5" - }, - "engines": { - "node": ">=18" - } - }, - "showcases/nuxt-showcase": { - "version": "0.0.0", - "hasInstallScript": true, - "dependencies": { - "nuxt": "^3.12.4", - "vue": "^3.4.37", - "vue-router": "^4.4.3" - } - }, - "showcases/patternhub": { - "version": "0.1.0", - "dependencies": { - "dompurify": "3.1.6", - "highlight.js": "^11.10.0", - "next": "14.2.5", - "react": "18.3.1", - "react-archer": "^4.4.0", - "react-dom": "18.3.1", - "rehype-slug": "6.0.0", - "remark-gfm": "4.0.0" - }, - "devDependencies": { - "@mdx-js/loader": "^3.0.1", - "@mdx-js/react": "^3.0.1", - "@next/mdx": "^14.2.5", - "@types/dompurify": "3.0.5", - "@types/node": "22.1.0", - "@types/react": "18.3.3", - "@types/react-dom": "18.3.0", - "esbuild": "0.23.0", - "eslint": "8.57.0", - "eslint-config-next": "14.2.5", - "iframe-resizer": "^5.2.3", - "open-cli": "^8.0.0", - "sass": "1.77.4", - "typescript": "5.4.5" - } - }, - "showcases/patternhub/node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "dev": true, - "license": "MIT", - "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" - } - }, - "showcases/patternhub/node_modules/@eslint/js": { - "version": "8.57.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "showcases/patternhub/node_modules/@typescript-eslint/parser": { - "version": "7.2.0", + "packages/components/node_modules/@eslint/js": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.0.tgz", + "integrity": "sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/scope-manager": "7.2.0", - "@typescript-eslint/types": "7.2.0", - "@typescript-eslint/typescript-estree": "7.2.0", - "@typescript-eslint/visitor-keys": "7.2.0", - "debug": "^4.3.4" - }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "showcases/patternhub/node_modules/@typescript-eslint/scope-manager": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.2.0.tgz", - "integrity": "sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.2.0", - "@typescript-eslint/visitor-keys": "7.2.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "showcases/patternhub/node_modules/@typescript-eslint/types": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.2.0.tgz", - "integrity": "sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "showcases/patternhub/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.2.0.tgz", - "integrity": "sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.2.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "showcases/patternhub/node_modules/ajv": { + "packages/components/node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -38234,10 +38605,11 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "showcases/patternhub/node_modules/ansi-styles": { + "packages/components/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, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -38248,10 +38620,11 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "showcases/patternhub/node_modules/chalk": { + "packages/components/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, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -38263,10 +38636,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "showcases/patternhub/node_modules/color-convert": { + "packages/components/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, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -38274,46 +38648,44 @@ "node": ">=7.0.0" } }, - "showcases/patternhub/node_modules/color-name": { + "packages/components/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, - "showcases/patternhub/node_modules/eslint": { - "version": "8.57.0", + "packages/components/node_modules/eslint": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.0.tgz", + "integrity": "sha512-JfiKJrbx0506OEerjK2Y1QlldtBxkAlLxT5OEcRF8uaQ86noDe2k31Vw9rnSWv+MXZHj7OOUV/dA0AhdLFcyvA==", "dev": true, - "license": "MIT", "dependencies": { "@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", + "@eslint-community/regexpp": "^4.11.0", + "@eslint/config-array": "^0.17.1", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.9.0", "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", - "@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.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.0.2", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.1.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", @@ -38327,249 +38699,53 @@ "eslint": "bin/eslint.js" }, "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" - } - }, - "showcases/patternhub/node_modules/eslint-config-next": { - "version": "14.2.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@next/eslint-plugin-next": "14.2.5", - "@rushstack/eslint-patch": "^1.3.3", - "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-import-resolver-typescript": "^3.5.2", - "eslint-plugin-import": "^2.28.1", - "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-react": "^7.33.2", - "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" + "url": "https://eslint.org/donate" }, "peerDependencies": { - "eslint": "^7.23.0 || ^8.0.0", - "typescript": ">=3.3.1" + "jiti": "*" }, "peerDependenciesMeta": { - "typescript": { + "jiti": { "optional": true } } }, - "showcases/patternhub/node_modules/eslint-import-resolver-typescript": { - "version": "3.6.1", - "dev": true, - "license": "ISC", - "dependencies": { - "debug": "^4.3.4", - "enhanced-resolve": "^5.12.0", - "eslint-module-utils": "^2.7.4", - "fast-glob": "^3.3.1", - "get-tsconfig": "^4.5.0", - "is-core-module": "^2.11.0", - "is-glob": "^4.0.3" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*" - } - }, - "showcases/patternhub/node_modules/eslint-plugin-import": { - "version": "2.29.1", - "dev": true, - "license": "MIT", - "dependencies": { - "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.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.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" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "showcases/patternhub/node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "showcases/patternhub/node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "showcases/patternhub/node_modules/eslint-plugin-jsx-a11y": { - "version": "6.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "aria-query": "~5.1.3", - "array-includes": "^3.1.8", - "array.prototype.flatmap": "^1.3.2", - "ast-types-flow": "^0.0.8", - "axe-core": "^4.9.1", - "axobject-query": "~3.1.1", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "es-iterator-helpers": "^1.0.19", - "hasown": "^2.0.2", - "jsx-ast-utils": "^3.3.5", - "language-tags": "^1.0.9", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "safe-regex-test": "^1.0.3", - "string.prototype.includes": "^2.0.0" - }, - "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "showcases/patternhub/node_modules/eslint-plugin-react": { - "version": "7.34.3", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.2", - "array.prototype.toreversed": "^1.1.2", - "array.prototype.tosorted": "^1.1.4", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.19", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.8", - "object.fromentries": "^2.0.8", - "object.hasown": "^1.1.4", - "object.values": "^1.2.0", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.11" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "showcases/patternhub/node_modules/eslint-plugin-react-hooks": { - "version": "4.6.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, - "showcases/patternhub/node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "showcases/patternhub/node_modules/eslint-scope": { - "version": "7.2.2", + "packages/components/node_modules/eslint-scope": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz", + "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "showcases/patternhub/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "showcases/patternhub/node_modules/espree": { - "version": "9.6.1", - "dev": true, - "license": "BSD-2-Clause", - "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" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, - "showcases/patternhub/node_modules/file-entry-cache": { - "version": "6.0.1", + "packages/components/node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, - "license": "MIT", "dependencies": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16.0.0" } }, - "showcases/patternhub/node_modules/find-up": { + "packages/components/node_modules/find-up": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -38581,61 +38757,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "showcases/patternhub/node_modules/flat-cache": { - "version": "3.2.0", + "packages/components/node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, - "license": "MIT", "dependencies": { "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "showcases/patternhub/node_modules/glob": { - "version": "7.2.3", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "showcases/patternhub/node_modules/globals": { - "version": "13.24.0", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" + "keyv": "^4.5.4" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=16" } }, - "showcases/patternhub/node_modules/json-schema-traverse": { + "packages/components/node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, - "showcases/patternhub/node_modules/locate-path": { + "packages/components/node_modules/locate-path": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -38646,10 +38791,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "showcases/patternhub/node_modules/p-limit": { + "packages/components/node_modules/p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -38660,10 +38806,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "showcases/patternhub/node_modules/p-locate": { + "packages/components/node_modules/p-locate": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -38674,72 +38821,162 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "showcases/patternhub/node_modules/path-exists": { + "packages/components/node_modules/path-exists": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, - "showcases/patternhub/node_modules/resolve": { - "version": "2.0.0-next.5", + "packages/components/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "engines": { + "node": ">=10" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/foundations": { + "name": "@db-ui/foundations", + "version": "0.0.0", + "license": "Apache-2.0", "bin": { - "resolve": "bin/resolve" + "foundations": "build/index.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "devDependencies": { + "@csstools/normalize.css": "12.1.1", + "commander": "^12.0.0", + "cpr": "3.0.1", + "cssnano": "^7.0.5", + "dotenv": "^16.4.5", + "glob": "^11.0.0", + "nodemon": "3.1.4", + "replace-in-file": "^8.1.0", + "sass": "1.77.4", + "tsx": "^4.17.0" } }, - "showcases/patternhub/node_modules/rimraf": { - "version": "3.0.2", - "dev": true, - "license": "ISC", + "scripts": { + "version": "0.0.0", + "devDependencies": { + "@inquirer/prompts": "5.3.8", + "glob": "^11.0.0", + "inquirer": "^10.1.8", + "replace-in-file": "^8.1.0" + } + }, + "showcases/angular-showcase": { + "version": "0.0.0", "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "@angular/animations": "17.3.12", + "@angular/common": "17.3.12", + "@angular/compiler": "17.3.12", + "@angular/core": "17.3.12", + "@angular/forms": "17.3.12", + "@angular/platform-browser": "17.3.12", + "@angular/platform-browser-dynamic": "17.3.12", + "@angular/router": "17.3.12", + "rxjs": "~7.8.1", + "sa11y": "3.2.2", + "tslib": "^2.6.3", + "zone.js": "~0.14.10" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "devDependencies": { + "@angular-devkit/build-angular": "17.3.8", + "@angular/cli": "17.3.8", + "@angular/compiler-cli": "17.3.12", + "ng-packagr": "17.3.0", + "typescript": "^5.4.5" } }, - "showcases/patternhub/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "showcases/angular-ssr-showcase": { + "version": "0.0.0", + "dependencies": { + "@angular/animations": "17.3.12", + "@angular/common": "17.3.12", + "@angular/compiler": "17.3.12", + "@angular/core": "17.3.12", + "@angular/forms": "17.3.12", + "@angular/platform-browser": "17.3.12", + "@angular/platform-browser-dynamic": "17.3.12", + "@angular/platform-server": "17.3.12", + "@angular/router": "17.3.12", + "@angular/ssr": "17.3.8", + "express": "^4.18.2", + "rxjs": "~7.8.1", + "tslib": "^2.6.2", + "zone.js": "~0.14.10" + }, + "devDependencies": { + "@angular-devkit/build-angular": "17.3.8", + "@angular/cli": "17.3.8", + "@angular/compiler-cli": "17.3.12", + "@types/express": "^4.17.21", + "@types/node": "^22.5.0", + "cpr": "3.0.1", + "ng-packagr": "17.3.0", + "typescript": "^5.4.5" } }, - "showcases/patternhub/node_modules/type-fest": { - "version": "0.20.2", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" + "showcases/next-showcase": { + "dependencies": { + "next": "*", + "react": "18.3.1", + "react-dom": "18.3.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "devDependencies": { + "@types/node": "^22.5.0", + "@types/react": "^18.3.4", + "npm-run-all": "^4.1.5", + "open-cli": "^8.0.0", + "typescript": "^5.4.5" + }, + "engines": { + "node": ">=18" + } + }, + "showcases/nuxt-showcase": { + "version": "0.0.0", + "hasInstallScript": true, + "dependencies": { + "nuxt": "^3.12.4", + "vue": "^3.4.38", + "vue-router": "^4.4.3" } }, - "showcases/patternhub/node_modules/yocto-queue": { + "showcases/patternhub": { "version": "0.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "dompurify": "3.1.6", + "highlight.js": "^11.10.0", + "next": "14.2.6", + "react": "18.3.1", + "react-archer": "^4.4.0", + "react-dom": "18.3.1", + "rehype-slug": "6.0.0", + "remark-gfm": "4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "devDependencies": { + "@mdx-js/loader": "^3.0.1", + "@mdx-js/react": "^3.0.1", + "@next/mdx": "^14.2.6", + "@types/dompurify": "3.0.5", + "@types/node": "22.5.0", + "@types/react": "18.3.4", + "@types/react-dom": "18.3.0", + "esbuild": "0.23.1", + "eslint": "8.57.0", + "eslint-config-next": "14.2.6", + "iframe-resizer": "^5.2.4", + "open-cli": "^8.0.0", + "sass": "1.77.4", + "typescript": "5.4.5" } }, "showcases/react-showcase": { @@ -38747,16 +38984,16 @@ "dependencies": { "react": "^18.3.1", "react-dom": "^18.3.1", - "react-router-dom": "6.26.0", + "react-router-dom": "6.26.1", "sa11y": "3.2.2" }, "devDependencies": { - "@types/react": "^18.3.3", + "@types/react": "^18.3.4", "@types/react-dom": "^18.3.0", "@vitejs/plugin-react": "^4.3.1", "cross-env": "^7.0.3", "typescript": "^5.4.5", - "vite": "^5.4.0" + "vite": "^5.4.2" } }, "showcases/vanilla-showcase": { @@ -38764,21 +39001,21 @@ "devDependencies": { "cpr": "3.0.1", "npm-run-all": "4.1.5", - "vite": "^5.4.0" + "vite": "^5.4.2" } }, "showcases/vue-showcase": { "version": "0.0.0", "dependencies": { "sa11y": "3.2.2", - "vue": "^3.4.37", + "vue": "^3.4.38", "vue-router": "4.4.3" }, "devDependencies": { "@vitejs/plugin-vue": "^5.1.2", "cross-env": "^7.0.3", "typescript": "^5.4.5", - "vite": "^5.4.0", + "vite": "^5.4.2", "vue-tsc": "^2.0.29" } } diff --git a/package.json b/package.json index c2cfc313f8f..24a27663e44 100644 --- a/package.json +++ b/package.json @@ -45,13 +45,13 @@ "update:icon-fonts": "npm run update:icon-fonts --workspace=scripts" }, "devDependencies": { - "@axe-core/playwright": "^4.9.1", + "@axe-core/playwright": "^4.10.0", "@commitlint/cli": "19.4.0", "@commitlint/config-conventional": "19.2.2", "@double-great/stylelint-a11y": "3.0.2", "@guidepup/guidepup": "0.22.3", "@guidepup/playwright": "^0.14.0", - "@playwright/test": "1.46.0", + "@playwright/test": "1.46.1", "@types/fs-extra": "^11.0.4", "accessibility-checker": "^3.1.74", "adm-zip": "0.5.15", @@ -63,9 +63,9 @@ "fs-extra": "^11.2.0", "glob": "^11.0.0", "http-server": "14.1.1", - "husky": "9.1.4", + "husky": "9.1.5", "jscpd": "^4.0.5", - "lint-staged": "^15.2.8", + "lint-staged": "^15.2.9", "markdownlint-cli": "^0.41.0", "npm-run-all": "4.1.5", "postcss": "^8.4.41", @@ -75,7 +75,7 @@ "prettier-plugin-sh": "^0.14.0", "replace-in-file": "^8.1.0", "rimraf": "6.0.1", - "stylelint": "16.8.1", + "stylelint": "16.8.2", "stylelint-config-sass-guidelines": "12.0.0", "stylelint-config-standard": "^36.0.0", "stylelint-use-logical": "2.1.2", diff --git a/packages/components/README.md b/packages/components/README.md index d2932bc887a..07a5b351f84 100644 --- a/packages/components/README.md +++ b/packages/components/README.md @@ -5,7 +5,7 @@ [![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](https://makeapullrequest.com) -A library containing all styles for components of [DB UX Design System (technical components)](https://github.com/db-ui/mono). +A library containing all styles for components of [DB UX Design System v3](https://github.com/db-ui/mono). > **Note** > Furthermore we currently support these additional JavaScript frameworks, with more coming soon: diff --git a/packages/components/_templates/mitosis/new/showcases/e2e-a11y-test.ejs.t b/packages/components/_templates/mitosis/new/showcases/e2e-a11y-test.ejs.t new file mode 100644 index 00000000000..1366e5c4fec --- /dev/null +++ b/packages/components/_templates/mitosis/new/showcases/e2e-a11y-test.ejs.t @@ -0,0 +1,11 @@ +--- +to: "<%= showcases ? `../../showcases/e2e/${name}/${name}-a11y.spec.ts` : null %>" +--- +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getA11yTest } from '../default.ts'; + +test.describe('DB<%= h.changeCase.pascal(name) %>', () => { + getA11yTest({ path: '<%= name %>' }); +}); + diff --git a/packages/components/_templates/mitosis/new/showcases/e2e-test.ejs.t b/packages/components/_templates/mitosis/new/showcases/e2e-snapshot-test.ejs.t similarity index 75% rename from packages/components/_templates/mitosis/new/showcases/e2e-test.ejs.t rename to packages/components/_templates/mitosis/new/showcases/e2e-snapshot-test.ejs.t index ab99dde7a5c..a7fd2302bba 100644 --- a/packages/components/_templates/mitosis/new/showcases/e2e-test.ejs.t +++ b/packages/components/_templates/mitosis/new/showcases/e2e-snapshot-test.ejs.t @@ -1,5 +1,5 @@ --- -to: "<%= showcases ? `../../showcases/e2e/${name}/showcase-${name}.spec.ts` : null %>" +to: "<%= showcases ? `../../showcases/e2e/${name}/${name}-snapshot.spec.ts` : null %>" --- import { test } from '@playwright/test'; // @ts-expect-error - required for playwright diff --git a/packages/components/package.json b/packages/components/package.json index 4c8689556bb..ec79767d213 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -51,7 +51,7 @@ "@builder.io/mitosis-cli": "^0.3.22", "@react-docgen/cli": "^2.0.3", "cpr": "3.0.1", - "cssnano": "^7.0.4", + "cssnano": "^7.0.5", "eslint": "^9.0.0", "hygen": "^6.2.11", "lit": "^3.2.0", diff --git a/packages/components/src/components/card/card.scss b/packages/components/src/components/card/card.scss index ef079283da9..6e780766d5e 100644 --- a/packages/components/src/components/card/card.scss +++ b/packages/components/src/components/card/card.scss @@ -6,22 +6,11 @@ .db-card { @extend %default-card; + @include component.get-data-spacing(); + display: flex; flex-direction: column; - &[data-spacing="medium"] { - padding: variables.$db-spacing-fixed-md; - } - - &[data-spacing="small"], - &:not([data-spacing]) { - padding: variables.$db-spacing-fixed-sm; - } - - &[data-spacing="none"] { - padding: 0; - } - &[data-elevation-level="1"], &:not([data-elevation-level]) { background-color: colors.$db-adaptive-bg-basic-level-1-default; diff --git a/packages/components/src/components/checkbox/checkbox.lite.tsx b/packages/components/src/components/checkbox/checkbox.lite.tsx index 2990ddb59db..98b658e44b2 100644 --- a/packages/components/src/components/checkbox/checkbox.lite.tsx +++ b/packages/components/src/components/checkbox/checkbox.lite.tsx @@ -7,7 +7,7 @@ import { useStore } from '@builder.io/mitosis'; import { DBCheckboxProps, DBCheckboxState } from './model'; -import { cls, uuid } from '../../utils'; +import { cls, delay, hasVoiceOver, uuid } from '../../utils'; import { DEFAULT_INVALID_MESSAGE, DEFAULT_INVALID_MESSAGE_ID_SUFFIX, @@ -33,6 +33,7 @@ export default function DBCheckbox(props: DBCheckboxProps) { _validMessageId: this._id + DEFAULT_VALID_MESSAGE_ID_SUFFIX, _invalidMessageId: this._id + DEFAULT_INVALID_MESSAGE_ID_SUFFIX, _descByIds: '', + _voiceOverFallback: '', handleChange: (event: ChangeEvent) => { if (props.onChange) { props.onChange(event); @@ -46,11 +47,23 @@ export default function DBCheckbox(props: DBCheckboxProps) { /* For a11y reasons we need to map the correct message with the checkbox */ if (!ref?.validity.valid || props.customValidity === 'invalid') { state._descByIds = state._invalidMessageId; + if (hasVoiceOver()) { + state._voiceOverFallback = + props.invalidMessage ?? + ref?.validationMessage ?? + DEFAULT_INVALID_MESSAGE; + delay(() => (state._voiceOverFallback = ''), 1000); + } } else if ( props.customValidity === 'valid' || (ref?.validity.valid && props.required) ) { state._descByIds = state._validMessageId; + if (hasVoiceOver()) { + state._voiceOverFallback = + props.validMessage ?? DEFAULT_VALID_MESSAGE; + delay(() => (state._voiceOverFallback = ''), 1000); + } } else if (props.message) { state._descByIds = state._messageId; } else { @@ -179,6 +192,13 @@ export default function DBCheckbox(props: DBCheckboxProps) { ref?.validationMessage ?? DEFAULT_INVALID_MESSAGE} + + {/* * https://www.davidmacd.com/blog/test-aria-describedby-errormessage-aria-live.html + * Currently VoiceOver isn't supporting changes from aria-describedby. + * This is an internal Fallback */} + + {state._voiceOverFallback} + ); } diff --git a/packages/components/src/components/checkbox/checkbox.scss b/packages/components/src/components/checkbox/checkbox.scss index 8381e1824eb..2b96192e027 100644 --- a/packages/components/src/components/checkbox/checkbox.scss +++ b/packages/components/src/components/checkbox/checkbox.scss @@ -23,6 +23,8 @@ } &:checked { + --db-check-element-border-color: #{colors.$db-adaptive-on-bg-basic-emphasis-70-default}; + // Check icon @include icons.set-icon("check"); @include colors.set-current-colors( diff --git a/packages/components/src/components/divider/divider.lite.tsx b/packages/components/src/components/divider/divider.lite.tsx index fd79090d603..de430333d1f 100644 --- a/packages/components/src/components/divider/divider.lite.tsx +++ b/packages/components/src/components/divider/divider.lite.tsx @@ -20,6 +20,7 @@ export default function DBDivider(props: DBDividerProps) { data-margin={props.margin} data-variant={props.variant} data-emphasis={props.emphasis} + data-width={props.width} class={cls('db-divider', props.className)} /> ); diff --git a/packages/components/src/components/divider/divider.scss b/packages/components/src/components/divider/divider.scss index 4e7d7e51809..fdf3d726d14 100644 --- a/packages/components/src/components/divider/divider.scss +++ b/packages/components/src/components/divider/divider.scss @@ -2,25 +2,55 @@ @use "@db-ui/foundations/build/scss/helpers"; .db-divider { - &:not([data-margin="none"]) { + &:is(:not([data-margin]), [data-margin="small"]) { margin: variables.$db-spacing-fixed-sm 0; } + &[data-margin="medium"] { + margin: variables.$db-spacing-fixed-md 0; + } + + &[data-margin="large"] { + margin: variables.$db-spacing-fixed-lg 0; + } + + &[data-margin="none"] { + margin: 0; + } + &:not([data-variant="vertical"]) { @include helpers.divider(); block-size: variables.$db-border-height-3xs; - inline-size: 100%; + + &[data-width="full"] { + inline-size: 100%; + } } &[data-variant="vertical"] { @include helpers.divider("left"); - block-size: 100%; inline-size: variables.$db-border-height-3xs; - &:not([data-margin="none"]) { + &:is(:not([data-margin]), [data-margin="small"]) { margin: 0 variables.$db-spacing-fixed-sm; } + + &[data-margin="medium"] { + margin: 0 variables.$db-spacing-fixed-md; + } + + &[data-margin="large"] { + margin: 0 variables.$db-spacing-fixed-lg; + } + + &[data-margin="none"] { + margin: 0; + } + + &[data-width="full"] { + block-size: 100%; + } } } diff --git a/packages/components/src/components/divider/model.ts b/packages/components/src/components/divider/model.ts index 7a572b869e7..9aa5768824b 100644 --- a/packages/components/src/components/divider/model.ts +++ b/packages/components/src/components/divider/model.ts @@ -1,4 +1,10 @@ -import { EmphasisProps, GlobalProps, GlobalState } from '../../shared/model'; +import { + EmphasisProps, + GlobalProps, + GlobalState, + WidthProps, + MarginProps +} from '../../shared/model'; export const DividerMarginList = ['none', '_'] as const; export type DividerMarginType = (typeof DividerMarginList)[number]; @@ -13,7 +19,9 @@ export type DBDividerDefaultProps = { export type DBDividerProps = DBDividerDefaultProps & GlobalProps & - EmphasisProps; + EmphasisProps & + MarginProps & + WidthProps; export type DBDividerDefaultState = {}; diff --git a/packages/components/src/components/drawer/drawer.lite.tsx b/packages/components/src/components/drawer/drawer.lite.tsx index 0b3bab71b2d..ce6b302b0d1 100644 --- a/packages/components/src/components/drawer/drawer.lite.tsx +++ b/packages/components/src/components/drawer/drawer.lite.tsx @@ -10,7 +10,7 @@ import { import { DBDrawerProps, DBDrawerState } from './model'; import { DBButton } from '../button'; import { DEFAULT_CLOSE_BUTTON } from '../../shared/constants'; -import { cls } from '../../utils'; +import { cls, delay } from '../../utils'; useMetadata({ isAttachedToShadowDom: true @@ -54,7 +54,7 @@ export default function DBDrawer(props: DBDrawerProps) { if (dialogContainerRef) { dialogContainerRef.hidden = true; } - setTimeout(() => { + delay(() => { if (dialogContainerRef) { dialogContainerRef.hidden = false; } diff --git a/packages/components/src/components/input/input.lite.tsx b/packages/components/src/components/input/input.lite.tsx index 6f4918fdd29..494adde355c 100644 --- a/packages/components/src/components/input/input.lite.tsx +++ b/packages/components/src/components/input/input.lite.tsx @@ -7,7 +7,7 @@ import { useRef, useStore } from '@builder.io/mitosis'; -import { cls, isArrayOfStrings, uuid } from '../../utils'; +import { cls, delay, hasVoiceOver, isArrayOfStrings, uuid } from '../../utils'; import { DBInputProps, DBInputState } from './model'; import { DEFAULT_DATALIST_ID_SUFFIX, @@ -42,6 +42,7 @@ export default function DBInput(props: DBInputProps) { _dataListId: this._id + DEFAULT_DATALIST_ID_SUFFIX, _descByIds: '', _value: '', + _voiceOverFallback: '', defaultValues: { label: DEFAULT_LABEL, placeholder: ' ' @@ -69,6 +70,13 @@ export default function DBInput(props: DBInputProps) { /* For a11y reasons we need to map the correct message with the input */ if (!ref?.validity.valid || props.customValidity === 'invalid') { state._descByIds = state._invalidMessageId; + if (hasVoiceOver()) { + state._voiceOverFallback = + props.invalidMessage ?? + ref?.validationMessage ?? + DEFAULT_INVALID_MESSAGE; + delay(() => (state._voiceOverFallback = ''), 1000); + } } else if ( props.customValidity === 'valid' || (ref?.validity.valid && @@ -78,6 +86,11 @@ export default function DBInput(props: DBInputProps) { props.pattern)) ) { state._descByIds = state._validMessageId; + if (hasVoiceOver()) { + state._voiceOverFallback = + props.validMessage ?? DEFAULT_VALID_MESSAGE; + delay(() => (state._voiceOverFallback = ''), 1000); + } } else if (props.message) { state._descByIds = state._messageId; } else { @@ -230,6 +243,13 @@ export default function DBInput(props: DBInputProps) { ref?.validationMessage ?? DEFAULT_INVALID_MESSAGE} + + {/* * https://www.davidmacd.com/blog/test-aria-describedby-errormessage-aria-live.html + * Currently VoiceOver isn't supporting changes from aria-describedby. + * This is an internal Fallback */} + + {state._voiceOverFallback} + ); // jscpd:ignore-end diff --git a/packages/components/src/components/input/input.scss b/packages/components/src/components/input/input.scss index df18f1991a4..d35333f84f6 100644 --- a/packages/components/src/components/input/input.scss +++ b/packages/components/src/components/input/input.scss @@ -2,8 +2,10 @@ @use "@db-ui/foundations/build/scss/icons"; @use "@db-ui/foundations/build/scss/fonts"; @use "@db-ui/foundations/build/scss/colors"; +@use "@db-ui/foundations/build/scss/helpers"; @use "../../styles/component"; @use "../../styles/form-components"; +@use "../../styles/button-components"; $icon-padding: calc( #{form-components.$font-size-height} + #{variables.$db-spacing-fixed-sm} + #{variables.$db-spacing-fixed-xs} @@ -62,6 +64,32 @@ $icon-padding: calc( @include icons.set-icon("clock", "after"); } + &:has(input[type="file"]) { + input { + @extend %db-overwrite-font-size-sm; + + padding-block-start: variables.$db-spacing-fixed-xs; + } + + &[data-variant="floating"] { + input { + @extend %db-overwrite-font-size-xs; + + padding-block-start: calc( + #{variables.$db-spacing-fixed-md} + #{variables.$db-spacing-fixed-3xs} + ); + + &::file-selector-button { + @extend %db-overwrite-font-size-xs; + + block-size: variables.$db-sizing-xs; + padding: 0 variables.$db-spacing-fixed-xs; + margin-inline-end: variables.$db-spacing-fixed-xs; + } + } + } + } + input { position: relative; @@ -81,6 +109,27 @@ $icon-padding: calc( #{variables.$db-spacing-fixed-sm} + #{variables.$db-border-height-3xs} ); } + + &::file-selector-button { + @extend %default-interactive-component; + @extend %default-button; + @extend %db-overwrite-font-size-sm; + + color: colors.$db-adaptive-on-bg-basic-emphasis-100-default; + block-size: variables.$db-sizing-sm; + padding: variables.$db-spacing-fixed-3xs + variables.$db-spacing-fixed-sm; + margin-inline-end: variables.$db-spacing-fixed-sm; + + &:hover, + &:focus { + background-color: colors.$db-adaptive-bg-basic-transparent-hovered; + } + + &:active { + background-color: colors.$db-adaptive-bg-basic-transparent-pressed; + } + } } &:has(datalist) { diff --git a/packages/components/src/components/popover/model.ts b/packages/components/src/components/popover/model.ts index d65307977d7..30a1f27e527 100644 --- a/packages/components/src/components/popover/model.ts +++ b/packages/components/src/components/popover/model.ts @@ -28,7 +28,12 @@ export type DBPopoverProps = DBPopoverDefaultProps & GapProps & PopoverProps; -export interface DBPopoverDefaultState {} +export interface DBPopoverDefaultState { + isExpanded?: boolean; + getTrigger?: () => Element | undefined; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + handleLeave?: (event: any) => void; +} export type DBPopoverState = DBPopoverDefaultState & GlobalState & diff --git a/packages/components/src/components/popover/popover.lite.tsx b/packages/components/src/components/popover/popover.lite.tsx index d315eff3d6d..8915cb40b4e 100644 --- a/packages/components/src/components/popover/popover.lite.tsx +++ b/packages/components/src/components/popover/popover.lite.tsx @@ -18,11 +18,45 @@ export default function DBPopover(props: DBPopoverProps) { // jscpd:ignore-start const state = useStore({ initialized: false, + isExpanded: false, handleAutoPlacement: () => { + state.isExpanded = true; if (!ref) return; const article = ref.querySelector('article'); if (!article) return; handleDataOutside(article); + }, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + handleLeave: (event: any) => { + const element = event.target as HTMLElement; + const parent = element.parentNode; + if ( + !parent || + (element.parentNode.querySelector(':focus') !== element && + element.parentNode.querySelector(':focus-within') !== + element && + element.parentNode.querySelector(':hover') !== element) + ) { + state.isExpanded = false; + } + }, + getTrigger: () => { + if (ref) { + const children: Element[] = Array.from(ref.children); + if (children.length >= 2) { + const firstChild = children[0]; + if (firstChild.tagName.includes('-')) { + // this is a workaround for custom angular components + return firstChild.children?.length > 0 + ? firstChild.children[0] + : undefined; + } else { + return firstChild; + } + } + } + + return undefined; } }); @@ -32,14 +66,23 @@ export default function DBPopover(props: DBPopoverProps) { onUpdate(() => { if (ref && state.initialized) { - const children: Element[] = Array.from(ref.children); - if (children.length >= 2) { - children[0].ariaHasPopup = 'true'; + const child = state.getTrigger(); + if (child) { + child.ariaHasPopup = 'true'; } state.initialized = false; } }, [ref, state.initialized]); + onUpdate(() => { + if (ref) { + const child = state.getTrigger(); + if (child) { + child.ariaExpanded = state.isExpanded.toString(); + } + } + }, [ref, state.isExpanded]); + // jscpd:ignore-end return ( @@ -48,7 +91,9 @@ export default function DBPopover(props: DBPopoverProps) { id={props.id} class={cls('db-popover', props.className)} onFocus={() => state.handleAutoPlacement()} - onMouseEnter={() => state.handleAutoPlacement()}> + onBlur={(event: FocusEvent) => state.handleLeave(event)} + onMouseEnter={() => state.handleAutoPlacement()} + onMouseLeave={(event: MouseEvent) => state.handleLeave(event)}>
div { margin: 0 auto; diff --git a/packages/components/src/components/select/select.lite.tsx b/packages/components/src/components/select/select.lite.tsx index 6adb6394be2..78939a0ec37 100644 --- a/packages/components/src/components/select/select.lite.tsx +++ b/packages/components/src/components/select/select.lite.tsx @@ -8,7 +8,7 @@ import { useStore } from '@builder.io/mitosis'; import { DBSelectOptionType, DBSelectProps, DBSelectState } from './model'; -import { cls, uuid } from '../../utils'; +import { cls, delay, hasVoiceOver, uuid } from '../../utils'; import { DEFAULT_INVALID_MESSAGE, DEFAULT_INVALID_MESSAGE_ID_SUFFIX, @@ -47,6 +47,7 @@ export default function DBSelect(props: DBSelectProps) { _descByIds: '', _value: '', initialized: false, + _voiceOverFallback: '', handleClick: (event: ClickEvent) => { if (props.onClick) { props.onClick(event); @@ -75,11 +76,23 @@ export default function DBSelect(props: DBSelectProps) { /* For a11y reasons we need to map the correct message with the select */ if (!ref?.validity.valid || props.customValidity === 'invalid') { state._descByIds = state._invalidMessageId; + if (hasVoiceOver()) { + state._voiceOverFallback = + props.invalidMessage ?? + ref?.validationMessage ?? + DEFAULT_INVALID_MESSAGE; + delay(() => (state._voiceOverFallback = ''), 1000); + } } else if ( props.customValidity === 'valid' || (ref?.validity.valid && props.required) ) { state._descByIds = state._validMessageId; + if (hasVoiceOver()) { + state._voiceOverFallback = + props.validMessage ?? DEFAULT_VALID_MESSAGE; + delay(() => (state._voiceOverFallback = ''), 1000); + } } else if (props.message) { state._descByIds = state._messageId; } else { @@ -156,7 +169,7 @@ export default function DBSelect(props: DBSelectProps) { name={props.name} value={props.value ?? state._value} autocomplete={props.autocomplete} - onInput={(event: ChangeEvent) => + onInput={(event: ChangeEvent) => state.handleInput(event) } onClick={(event: ClickEvent) => @@ -243,6 +256,13 @@ export default function DBSelect(props: DBSelectProps) { ref?.validationMessage ?? DEFAULT_INVALID_MESSAGE} + + {/* * https://www.davidmacd.com/blog/test-aria-describedby-errormessage-aria-live.html + * Currently VoiceOver isn't supporting changes from aria-describedby. + * This is an internal Fallback */} + + {state._voiceOverFallback} + ); // jscpd:ignore-end diff --git a/packages/components/src/components/switch/switch.scss b/packages/components/src/components/switch/switch.scss index fe611e16886..e1c01883fd3 100644 --- a/packages/components/src/components/switch/switch.scss +++ b/packages/components/src/components/switch/switch.scss @@ -109,14 +109,14 @@ $checked-active-transition-size: calc( colors.$db-adaptive-bg-inverted-contrast-max-pressed ); - border-color: colors.$db-adaptive-bg-inverted-contrast-max-default; + border-color: colors.$db-adaptive-on-bg-basic-emphasis-100-default; @include helpers.hover { - border-color: colors.$db-adaptive-bg-inverted-contrast-max-hovered; + border-color: colors.$db-adaptive-on-bg-basic-emphasis-100-hovered; } @include helpers.active { - border-color: colors.$db-adaptive-bg-inverted-contrast-max-pressed; + border-color: colors.$db-adaptive-on-bg-basic-emphasis-100-pressed; } &::before { @@ -166,16 +166,16 @@ $checked-active-transition-size: calc( background-color: colors.$db-adaptive-bg-inverted-contrast-low-default; color: colors.$db-adaptive-on-bg-inverted-default; - border-color: colors.$db-adaptive-bg-inverted-contrast-low-default; + border-color: colors.$db-adaptive-on-bg-basic-emphasis-70-default; @include helpers.hover { background-color: colors.$db-adaptive-bg-inverted-contrast-low-hovered; - border-color: colors.$db-adaptive-bg-inverted-contrast-low-hovered; + border-color: colors.$db-adaptive-on-bg-basic-emphasis-70-hovered; } @include helpers.active { background-color: colors.$db-adaptive-bg-inverted-contrast-low-pressed; - border-color: colors.$db-adaptive-bg-inverted-contrast-low-pressed; + border-color: colors.$db-adaptive-on-bg-basic-emphasis-70-pressed; &::before { block-size: $checked-active-transition-size; diff --git a/packages/components/src/components/textarea/textarea.lite.tsx b/packages/components/src/components/textarea/textarea.lite.tsx index fd0dd74032d..fbf639c965a 100644 --- a/packages/components/src/components/textarea/textarea.lite.tsx +++ b/packages/components/src/components/textarea/textarea.lite.tsx @@ -8,7 +8,7 @@ import { } from '@builder.io/mitosis'; import { DBTextareaProps, DBTextareaState } from './model'; import { DBInfotext } from '../infotext'; -import { cls, uuid } from '../../utils'; +import { cls, delay, hasVoiceOver, uuid } from '../../utils'; import { DEFAULT_INVALID_MESSAGE, DEFAULT_INVALID_MESSAGE_ID_SUFFIX, @@ -40,6 +40,7 @@ export default function DBTextarea(props: DBTextareaProps) { placeholder: ' ', rows: '4' }, + _voiceOverFallback: '', handleInput: (event: InputEvent) => { if (props.onInput) { props.onInput(event); @@ -63,12 +64,24 @@ export default function DBTextarea(props: DBTextareaProps) { /* For a11y reasons we need to map the correct message with the textarea */ if (!ref?.validity.valid || props.customValidity === 'invalid') { state._descByIds = state._invalidMessageId; + if (hasVoiceOver()) { + state._voiceOverFallback = + props.invalidMessage ?? + ref?.validationMessage ?? + DEFAULT_INVALID_MESSAGE; + delay(() => (state._voiceOverFallback = ''), 1000); + } } else if ( props.customValidity === 'valid' || (ref?.validity.valid && (props.required || props.minLength || props.maxLength)) ) { state._descByIds = state._validMessageId; + if (hasVoiceOver()) { + state._voiceOverFallback = + props.validMessage ?? DEFAULT_VALID_MESSAGE; + delay(() => (state._voiceOverFallback = ''), 1000); + } } else if (props.message) { state._descByIds = state._messageId; } else { @@ -143,7 +156,7 @@ export default function DBTextarea(props: DBTextareaProps) { wrap={props.wrap} spellcheck={props.spellCheck} autocomplete={props.autocomplete} - onInput={(event: ChangeEvent) => + onInput={(event: ChangeEvent) => state.handleInput(event) } onChange={(event: ChangeEvent) => @@ -188,6 +201,13 @@ export default function DBTextarea(props: DBTextareaProps) { ref?.validationMessage ?? DEFAULT_INVALID_MESSAGE} + + {/* * https://www.davidmacd.com/blog/test-aria-describedby-errormessage-aria-live.html + * Currently VoiceOver isn't supporting changes from aria-describedby. + * This is an internal Fallback */} + + {state._voiceOverFallback} + ); // jscpd:ignore-end diff --git a/packages/components/src/shared/model.ts b/packages/components/src/shared/model.ts index 06d9dfaa316..07b83290fa4 100644 --- a/packages/components/src/shared/model.ts +++ b/packages/components/src/shared/model.ts @@ -74,6 +74,15 @@ export type SpacingProps = { */ spacing?: SpacingType; }; +export const MarginList = ['medium', 'small', 'large', 'none'] as const; +export type MarginType = (typeof MarginList)[number]; + +export type MarginProps = { + /** + * The margin attribute changes the margin of the component. + */ + margin?: MarginType; +}; export const PlacementList = [ 'left', @@ -355,6 +364,13 @@ export type FormState = { _invalidMessageId?: string; _descByIds?: string; _value?: string; + + /** + * https://www.davidmacd.com/blog/test-aria-describedby-errormessage-aria-live.html + * Currently VoiceOver isn't supporting changes from aria-describedby. + * This is an internal Fallback + */ + _voiceOverFallback?: string; }; export type InitializedState = { diff --git a/packages/components/src/styles/_component.scss b/packages/components/src/styles/_component.scss index 6b402bc79a1..1d802985af9 100644 --- a/packages/components/src/styles/_component.scss +++ b/packages/components/src/styles/_component.scss @@ -37,3 +37,35 @@ $default-disabled: 0.4; #{variables.$db-border-radius-sm} ); } + +$responsive-spacings: ( + "default": variables.$db-spacing-responsive-md, + "large": variables.$db-spacing-responsive-lg, + "medium": variables.$db-spacing-responsive-md, + "small": variables.$db-spacing-responsive-sm, + "none": 0 +); + +$default-spacings: ( + "default": variables.$db-spacing-fixed-sm, + "large": variables.$db-spacing-fixed-lg, + "medium": variables.$db-spacing-fixed-md, + "small": variables.$db-spacing-fixed-sm, + "none": 0 +); + +@mixin get-data-spacing($type: padding, $spacings: $default-spacings) { + @each $name, $spacing in $spacings { + @if ($name == "default") { + &:not([data-spacing]) { + #{$type}: $spacing; + } + + /* stylelint-disable-next-line at-rule-empty-line-before */ + } @else { + &[data-spacing="#{$name}"] { + #{$type}: $spacing; + } + } + } +} diff --git a/packages/components/src/styles/_form-components.scss b/packages/components/src/styles/_form-components.scss index 5766b184c0d..d0ddaa2eee0 100644 --- a/packages/components/src/styles/_form-components.scss +++ b/packages/components/src/styles/_form-components.scss @@ -7,6 +7,8 @@ @use "@db-ui/foundations/build/scss/helpers"; @use "component"; +@forward "visually-hidden"; + $dropdown-icon-transition: transform variables.$db-transition-straight-emotional; $dropdown-icon-transform: rotate(-180deg); @@ -264,6 +266,8 @@ $input-valid-types: "color", "date", "datetime-local", "email", "file", "hidden" label { &::after { content: "*"; + // Hiding asterisk from screenreaders, https://www.w3.org/TR/css-content-3/#alt + content: "*" / ""; padding-inline-start: variables.$db-spacing-fixed-2xs; } } @@ -415,12 +419,10 @@ $input-valid-types: "color", "date", "datetime-local", "email", "file", "hidden" --db-#{$variant}-bg-basic-transparent-pressed ); - border-color: colors.$db-adaptive-on-bg-basic-emphasis-100-default; - &:not(:checked), &:is([type="radio"]) { - border-color: var( - --db-#{$variant}-bg-inverted-contrast-high-default + --db-check-element-border-color: var( + --db-#{$variant}-on-bg-basic-emphasis-70-default ); } @@ -436,7 +438,7 @@ $input-valid-types: "color", "date", "datetime-local", "email", "file", "hidden" &:is(label), label { - color: var(--db-#{$variant}-bg-inverted-contrast-high-default); + color: var(--db-#{$variant}-on-bg-basic-emphasis-80-default); } } @@ -475,7 +477,7 @@ $input-valid-types: "color", "date", "datetime-local", "email", "file", "hidden" place-content: center center; appearance: none; aspect-ratio: 1; - border: #{$check-border-size} solid var(--db-check-element-border-color, currentColor); + border: #{$check-border-size} solid var(--db-check-element-border-color, #{colors.$db-adaptive-on-bg-basic-emphasis-100-default}); block-size: $font-size-height; // TODO: probably extract this to an overwrite or external file diff --git a/packages/components/src/styles/visually-hidden.scss b/packages/components/src/styles/visually-hidden.scss new file mode 100644 index 00000000000..6a175b4c45b --- /dev/null +++ b/packages/components/src/styles/visually-hidden.scss @@ -0,0 +1,6 @@ +@use "@db-ui/foundations/build/scss/helpers"; + +.db-visually-hidden, +[data-visually-hidden="true"] { + @extend %a11y-visually-hidden; +} diff --git a/packages/components/src/utils/index.ts b/packages/components/src/utils/index.ts index 20195b4387b..f18e961eb65 100644 --- a/packages/components/src/utils/index.ts +++ b/packages/components/src/utils/index.ts @@ -194,6 +194,14 @@ export const handleDataOutside = (el: Element): DBDataOutsidePair => { export const isArrayOfStrings = (value: unknown): value is string[] => Array.isArray(value) && value.every((item) => typeof item === 'string'); +const appleOs = ['Mac', 'iPhone', 'iPad', 'iPod']; +export const hasVoiceOver = (): boolean => + typeof window !== 'undefined' && + appleOs.some((os) => window.navigator.userAgent.includes(os)); + +export const delay = (fn: () => void, ms: number) => + new Promise(() => setTimeout(fn, ms)); + export default { filterPassingProps, cls, @@ -203,5 +211,7 @@ export default { visibleInVY, isInView, handleDataOutside, - isArrayOfStrings + isArrayOfStrings, + hasVoiceOver, + delay }; diff --git a/packages/foundations/README.md b/packages/foundations/README.md index 8ed39953297..2ac68c26982 100644 --- a/packages/foundations/README.md +++ b/packages/foundations/README.md @@ -5,7 +5,7 @@ [![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](https://makeapullrequest.com) -A library containing all tokens (colors, icons, variables, etc.) of [DB UX Design System (technical components)](https://github.com/db-ui/mono). +A library containing all tokens (colors, spacings, font formatting, etc.) and assets (fonts, icons) of [DB UX Design System v3](https://github.com/db-ui/mono). We currently support: diff --git a/packages/foundations/package.json b/packages/foundations/package.json index afdaf04c020..e6b4505bb57 100644 --- a/packages/foundations/package.json +++ b/packages/foundations/package.json @@ -43,7 +43,7 @@ "@csstools/normalize.css": "12.1.1", "commander": "^12.0.0", "cpr": "3.0.1", - "cssnano": "^7.0.4", + "cssnano": "^7.0.5", "dotenv": "^16.4.5", "glob": "^11.0.0", "nodemon": "3.1.4", diff --git a/packages/foundations/scss/helpers/_a11y.scss b/packages/foundations/scss/helpers/_a11y.scss index f382bbbf126..e7ff6b4d5ac 100644 --- a/packages/foundations/scss/helpers/_a11y.scss +++ b/packages/foundations/scss/helpers/_a11y.scss @@ -1,8 +1,17 @@ %a11y-visually-hidden { - clip: rect(0, 0, 0, 0); - block-size: 1px; - overflow: hidden; + clip: rect(0, 0, 0, 0) !important; + overflow: hidden !important; + white-space: nowrap !important; + font-size: 0 !important; + all: initial; + inset-block-start: 0 !important; + block-size: 1px !important; position: absolute !important; - white-space: nowrap; - inline-size: 1px; + inline-size: 1px !important; + border-width: 0 !important; + border-style: initial !important; + border-color: initial !important; + border-image: initial !important; + padding: 0 !important; + pointer-events: none !important; } diff --git a/packages/foundations/scss/icons/_icon-helpers.scss b/packages/foundations/scss/icons/_icon-helpers.scss index 3fe10d15d4b..414ef71e3ff 100644 --- a/packages/foundations/scss/icons/_icon-helpers.scss +++ b/packages/foundations/scss/icons/_icon-helpers.scss @@ -45,9 +45,7 @@ $default-icon-font-size: var(--db-icon-font-size, #{$default-icon-size-rem}); @mixin icon-content($icon) { content: $icon; // Hiding icon from screenreaders, https://www.w3.org/TR/css-content-3/#alt - @supports (content: ""/"") { - content: $icon / ""; - } + content: $icon / ""; } @mixin to-filled-icon($position: "before") { diff --git a/showcases/angular-showcase/src/app/components/brand/brand.component.html b/showcases/angular-showcase/src/app/components/brand/brand.component.html index 0e716d5836d..b9039fee101 100644 --- a/showcases/angular-showcase/src/app/components/brand/brand.component.html +++ b/showcases/angular-showcase/src/app/components/brand/brand.component.html @@ -12,7 +12,10 @@ > @if (exampleProps?.customLogo) { - logo + this is a fancy placeholder logo } {{ exampleName }} diff --git a/showcases/angular-showcase/src/app/components/divider/divider.component.html b/showcases/angular-showcase/src/app/components/divider/divider.component.html index cfa96df181d..f0c1c5f6820 100644 --- a/showcases/angular-showcase/src/app/components/divider/divider.component.html +++ b/showcases/angular-showcase/src/app/components/divider/divider.component.html @@ -16,6 +16,7 @@ diff --git a/showcases/angular-showcase/src/app/components/notification/notification.component.html b/showcases/angular-showcase/src/app/components/notification/notification.component.html index bbae815c675..9d2f6f60299 100644 --- a/showcases/angular-showcase/src/app/components/notification/notification.component.html +++ b/showcases/angular-showcase/src/app/components/notification/notification.component.html @@ -27,7 +27,7 @@ Placeholder } {{ exampleName }} diff --git a/showcases/angular-ssr-showcase/package.json b/showcases/angular-ssr-showcase/package.json index 107b7fa5703..b233ba152b1 100644 --- a/showcases/angular-ssr-showcase/package.json +++ b/showcases/angular-ssr-showcase/package.json @@ -32,7 +32,7 @@ "@angular/cli": "17.3.8", "@angular/compiler-cli": "17.3.12", "@types/express": "^4.17.21", - "@types/node": "^22.1.0", + "@types/node": "^22.5.0", "cpr": "3.0.1", "ng-packagr": "17.3.0", "typescript": "^5.4.5" diff --git a/showcases/e2e/accordion-item/accordion-item-a11y.spec.ts b/showcases/e2e/accordion-item/accordion-item-a11y.spec.ts new file mode 100644 index 00000000000..c571075923d --- /dev/null +++ b/showcases/e2e/accordion-item/accordion-item-a11y.spec.ts @@ -0,0 +1,7 @@ +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getA11yTest } from '../default.ts'; + +test.describe('DBAccordionItem', () => { + getA11yTest({ path: '04/accordion-item' }); +}); diff --git a/showcases/e2e/accordion-item/showcase-accordion-item.spec.ts b/showcases/e2e/accordion-item/accordion-item-snapshot.spec.ts similarity index 100% rename from showcases/e2e/accordion-item/showcase-accordion-item.spec.ts rename to showcases/e2e/accordion-item/accordion-item-snapshot.spec.ts diff --git a/showcases/e2e/accordion/accordion-a11y.spec.ts b/showcases/e2e/accordion/accordion-a11y.spec.ts new file mode 100644 index 00000000000..c870ae4bdad --- /dev/null +++ b/showcases/e2e/accordion/accordion-a11y.spec.ts @@ -0,0 +1,7 @@ +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getA11yTest } from '../default.ts'; + +test.describe('DBAccordion', () => { + getA11yTest({ path: '04/accordion' }); +}); diff --git a/showcases/e2e/accordion/showcase-accordion.spec.ts b/showcases/e2e/accordion/accordion-snapshot.spec.ts similarity index 100% rename from showcases/e2e/accordion/showcase-accordion.spec.ts rename to showcases/e2e/accordion/accordion-snapshot.spec.ts diff --git a/showcases/e2e/badge/badge-a11y.spec.ts b/showcases/e2e/badge/badge-a11y.spec.ts new file mode 100644 index 00000000000..555720951ef --- /dev/null +++ b/showcases/e2e/badge/badge-a11y.spec.ts @@ -0,0 +1,7 @@ +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getA11yTest } from '../default.ts'; + +test.describe('DBBadge', () => { + getA11yTest({ path: '06/badge' }); +}); diff --git a/showcases/e2e/badge/showcase-badge.spec.ts b/showcases/e2e/badge/badge-snapshot.spec.ts similarity index 100% rename from showcases/e2e/badge/showcase-badge.spec.ts rename to showcases/e2e/badge/badge-snapshot.spec.ts diff --git a/showcases/e2e/brand/brand-a11y.spec.ts b/showcases/e2e/brand/brand-a11y.spec.ts new file mode 100644 index 00000000000..73ed1c7ea85 --- /dev/null +++ b/showcases/e2e/brand/brand-a11y.spec.ts @@ -0,0 +1,7 @@ +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getA11yTest } from '../default.ts'; + +test.describe('DBBrand', () => { + getA11yTest({ path: '04/brand' }); +}); diff --git a/showcases/e2e/brand/showcase-brand.spec.ts b/showcases/e2e/brand/brand-snapshot.spec.ts similarity index 100% rename from showcases/e2e/brand/showcase-brand.spec.ts rename to showcases/e2e/brand/brand-snapshot.spec.ts diff --git a/showcases/e2e/button/button-a11y.spec.ts b/showcases/e2e/button/button-a11y.spec.ts new file mode 100644 index 00000000000..40c350f0819 --- /dev/null +++ b/showcases/e2e/button/button-a11y.spec.ts @@ -0,0 +1,7 @@ +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getA11yTest } from '../default.ts'; + +test.describe('DBButton', () => { + getA11yTest({ path: '02/button' }); +}); diff --git a/showcases/e2e/button/showcase-button.spec.ts b/showcases/e2e/button/button-snapshot.spec.ts similarity index 100% rename from showcases/e2e/button/showcase-button.spec.ts rename to showcases/e2e/button/button-snapshot.spec.ts diff --git a/showcases/e2e/card/card-a11y.spec.ts b/showcases/e2e/card/card-a11y.spec.ts new file mode 100644 index 00000000000..2b12f7284bf --- /dev/null +++ b/showcases/e2e/card/card-a11y.spec.ts @@ -0,0 +1,7 @@ +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getA11yTest } from '../default.ts'; + +test.describe('DBCard', () => { + getA11yTest({ path: '01/card' }); +}); diff --git a/showcases/e2e/card/showcase-card.spec.ts b/showcases/e2e/card/card-snapshot.spec.ts similarity index 100% rename from showcases/e2e/card/showcase-card.spec.ts rename to showcases/e2e/card/card-snapshot.spec.ts diff --git a/showcases/e2e/checkbox/checkbox-a11y.spec.ts b/showcases/e2e/checkbox/checkbox-a11y.spec.ts new file mode 100644 index 00000000000..1b0ca7589b2 --- /dev/null +++ b/showcases/e2e/checkbox/checkbox-a11y.spec.ts @@ -0,0 +1,9 @@ +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getA11yTest } from '../default.ts'; + +test.describe('DBCheckbox', () => { + getA11yTest({ + path: '03/checkbox' + }); +}); diff --git a/showcases/e2e/checkbox/showcase-checkbox.spec.ts b/showcases/e2e/checkbox/checkbox-snapshot.spec.ts similarity index 100% rename from showcases/e2e/checkbox/showcase-checkbox.spec.ts rename to showcases/e2e/checkbox/checkbox-snapshot.spec.ts diff --git a/showcases/e2e/default.ts b/showcases/e2e/default.ts index e33d11999b4..80013a21f2f 100644 --- a/showcases/e2e/default.ts +++ b/showcases/e2e/default.ts @@ -10,12 +10,18 @@ const density = 'regular'; export type DefaultTestType = { path: string; fixedHeight?: number; +}; + +export type DefaultSnapshotTestType = { + preScreenShot?: (page: Page) => Promise; +} & DefaultTestType; + +export type DefaultA11yTestType = { axeDisableRules?: string[]; aCheckerDisableRules?: string[]; skipA11y?: boolean; - preScreenShot?: (page: Page) => Promise; preA11y?: (page: Page) => Promise; -}; +} & DefaultTestType; export const waitForDBPage = async (page: Page) => { const dbPage = page.locator('.db-page'); @@ -48,12 +54,8 @@ const isCheckerError = (object: any): object is ICheckerError => export const getDefaultScreenshotTest = ({ path, fixedHeight, - axeDisableRules, - skipA11y, - preScreenShot, - preA11y, - aCheckerDisableRules -}: DefaultTestType) => { + preScreenShot +}: DefaultSnapshotTestType) => { test(`should match screenshot`, async ({ page }, testInfo) => { const isWebkit = testInfo.project.name === 'webkit' || @@ -93,7 +95,16 @@ export const getDefaultScreenshotTest = ({ await expect(page).toHaveScreenshot(config); }); +}; +export const getA11yTest = ({ + path, + fixedHeight, + axeDisableRules, + skipA11y, + preA11y, + aCheckerDisableRules +}: DefaultA11yTestType) => { for (const color of COLORS) { test(`should not have any A11y issues for color ${color}`, async ({ page diff --git a/showcases/e2e/divider/divider-a11y.spec.ts b/showcases/e2e/divider/divider-a11y.spec.ts new file mode 100644 index 00000000000..765130c031a --- /dev/null +++ b/showcases/e2e/divider/divider-a11y.spec.ts @@ -0,0 +1,7 @@ +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getA11yTest } from '../default.ts'; + +test.describe('DBDivider', () => { + getA11yTest({ path: '01/divider' }); +}); diff --git a/showcases/e2e/divider/showcase-divider.spec.ts b/showcases/e2e/divider/divider-snapshots.spec.ts similarity index 100% rename from showcases/e2e/divider/showcase-divider.spec.ts rename to showcases/e2e/divider/divider-snapshots.spec.ts diff --git a/showcases/e2e/drawer/showcase-drawer.spec.ts b/showcases/e2e/drawer/drawer-a11y.spec.ts similarity index 76% rename from showcases/e2e/drawer/showcase-drawer.spec.ts rename to showcases/e2e/drawer/drawer-a11y.spec.ts index c06e45514b4..a592c525523 100644 --- a/showcases/e2e/drawer/showcase-drawer.spec.ts +++ b/showcases/e2e/drawer/drawer-a11y.spec.ts @@ -1,9 +1,9 @@ import { test } from '@playwright/test'; // @ts-expect-error - required for playwright -import { getDefaultScreenshotTest } from '../default.ts'; +import { getA11yTest } from '../default.ts'; test.describe('DBDrawer', () => { - getDefaultScreenshotTest({ + getA11yTest({ path: '01/drawer', async preA11y(page) { await page.locator('main').getByRole('button').first().click(); diff --git a/showcases/e2e/drawer/drawer-snapshot.spec.ts b/showcases/e2e/drawer/drawer-snapshot.spec.ts new file mode 100644 index 00000000000..45356c0279b --- /dev/null +++ b/showcases/e2e/drawer/drawer-snapshot.spec.ts @@ -0,0 +1,9 @@ +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getDefaultScreenshotTest } from '../default.ts'; + +test.describe('DBDrawer', () => { + getDefaultScreenshotTest({ + path: '01/drawer' + }); +}); diff --git a/showcases/e2e/header/showcase-header.spec.ts b/showcases/e2e/header/header-a11y.spec.ts similarity index 59% rename from showcases/e2e/header/showcase-header.spec.ts rename to showcases/e2e/header/header-a11y.spec.ts index 4bf55284d88..4aa0f52486b 100644 --- a/showcases/e2e/header/showcase-header.spec.ts +++ b/showcases/e2e/header/header-a11y.spec.ts @@ -1,8 +1,8 @@ import { test } from '@playwright/test'; // @ts-expect-error - required for playwright -import { getDefaultScreenshotTest } from '../default.ts'; +import { getA11yTest } from '../default.ts'; test.describe('DBHeader', () => { const isAngular = process.env.showcase.startsWith('angular'); - getDefaultScreenshotTest({ path: '01/header', skipA11y: isAngular }); + getA11yTest({ path: '01/header', skipA11y: isAngular }); }); diff --git a/showcases/e2e/header/header-snapshot.spec.ts b/showcases/e2e/header/header-snapshot.spec.ts new file mode 100644 index 00000000000..c3baaec7373 --- /dev/null +++ b/showcases/e2e/header/header-snapshot.spec.ts @@ -0,0 +1,7 @@ +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getDefaultScreenshotTest } from '../default.ts'; + +test.describe('DBHeader', () => { + getDefaultScreenshotTest({ path: '01/header' }); +}); diff --git a/showcases/e2e/icon/icon-a11y.spec.ts b/showcases/e2e/icon/icon-a11y.spec.ts new file mode 100644 index 00000000000..3b6a594c60a --- /dev/null +++ b/showcases/e2e/icon/icon-a11y.spec.ts @@ -0,0 +1,7 @@ +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getA11yTest } from '../default.ts'; + +test.describe('DBIcon', () => { + getA11yTest({ path: '04/icon' }); +}); diff --git a/showcases/e2e/icon/showcase-icon.spec.ts b/showcases/e2e/icon/icon-snapshot.spec.ts similarity index 100% rename from showcases/e2e/icon/showcase-icon.spec.ts rename to showcases/e2e/icon/icon-snapshot.spec.ts diff --git a/showcases/e2e/infotext/infotext-a11y.spec.ts b/showcases/e2e/infotext/infotext-a11y.spec.ts new file mode 100644 index 00000000000..cd26a1ebf6e --- /dev/null +++ b/showcases/e2e/infotext/infotext-a11y.spec.ts @@ -0,0 +1,7 @@ +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getA11yTest } from '../default.ts'; + +test.describe('DBInfotext', () => { + getA11yTest({ path: '04/infotext' }); +}); diff --git a/showcases/e2e/infotext/showcase-infotext.spec.ts b/showcases/e2e/infotext/infotext-snapshot.spec.ts similarity index 100% rename from showcases/e2e/infotext/showcase-infotext.spec.ts rename to showcases/e2e/infotext/infotext-snapshot.spec.ts diff --git a/showcases/e2e/input/showcase-input.spec.ts b/showcases/e2e/input/input-a11y.spec.ts similarity index 82% rename from showcases/e2e/input/showcase-input.spec.ts rename to showcases/e2e/input/input-a11y.spec.ts index 71715c48e22..98979b4b568 100644 --- a/showcases/e2e/input/showcase-input.spec.ts +++ b/showcases/e2e/input/input-a11y.spec.ts @@ -1,10 +1,10 @@ import { test } from '@playwright/test'; // @ts-expect-error - required for playwright -import { getDefaultScreenshotTest } from '../default.ts'; +import { getA11yTest } from '../default.ts'; test.describe('DBInput', () => { // TODO: Currently disable till we solved https://github.com/db-ui/mono/issues/2587 - getDefaultScreenshotTest({ + getA11yTest({ path: '03/input', axeDisableRules: ['color-contrast'], aCheckerDisableRules: ['label_ref_valid'] // TODO: There is an issue with datetime-local - https://github.com/IBMa/equal-access/issues/1910 diff --git a/showcases/e2e/input/input-snapshot.spec.ts b/showcases/e2e/input/input-snapshot.spec.ts new file mode 100644 index 00000000000..bfa6472a555 --- /dev/null +++ b/showcases/e2e/input/input-snapshot.spec.ts @@ -0,0 +1,9 @@ +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getDefaultScreenshotTest } from '../default.ts'; + +test.describe('DBInput', () => { + getDefaultScreenshotTest({ + path: '03/input' + }); +}); diff --git a/showcases/e2e/link/showcase-link.spec.ts b/showcases/e2e/link/link-a11y.spec.ts similarity index 76% rename from showcases/e2e/link/showcase-link.spec.ts rename to showcases/e2e/link/link-a11y.spec.ts index fbe816224d8..791c5301003 100644 --- a/showcases/e2e/link/showcase-link.spec.ts +++ b/showcases/e2e/link/link-a11y.spec.ts @@ -1,9 +1,9 @@ import { test } from '@playwright/test'; // @ts-expect-error - required for playwright -import { getDefaultScreenshotTest } from '../default.ts'; +import { getA11yTest } from '../default.ts'; test.describe('DBLink', () => { - getDefaultScreenshotTest({ + getA11yTest({ path: '02/link', aCheckerDisableRules: ['aria_attribute_valid'] // TODO: This is a false positive -> add an issue in https://github.com/IBMa/equal-access }); diff --git a/showcases/e2e/link/link-snapshot.spec.ts b/showcases/e2e/link/link-snapshot.spec.ts new file mode 100644 index 00000000000..d7bd8f7188f --- /dev/null +++ b/showcases/e2e/link/link-snapshot.spec.ts @@ -0,0 +1,9 @@ +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getDefaultScreenshotTest } from '../default.ts'; + +test.describe('DBLink', () => { + getDefaultScreenshotTest({ + path: '02/link' + }); +}); diff --git a/showcases/e2e/navigation-item/showcase-navigation-item.spec.ts b/showcases/e2e/navigation-item/navigation-item-a11y.spec.ts similarity index 80% rename from showcases/e2e/navigation-item/showcase-navigation-item.spec.ts rename to showcases/e2e/navigation-item/navigation-item-a11y.spec.ts index 105fe21b66a..bd0f78ea65b 100644 --- a/showcases/e2e/navigation-item/showcase-navigation-item.spec.ts +++ b/showcases/e2e/navigation-item/navigation-item-a11y.spec.ts @@ -1,11 +1,11 @@ import { test } from '@playwright/test'; // @ts-expect-error - required for playwright -import { getDefaultScreenshotTest } from '../default.ts'; +import { getA11yTest } from '../default.ts'; test.describe('DBNavigationItem', () => { // Set fixed height, because of issues with angulars `ngAfterContentInit` const isAngular = process.env.showcase.startsWith('angular'); - getDefaultScreenshotTest({ + getA11yTest({ path: '05/navigation-item', fixedHeight: 1800, skipA11y: isAngular diff --git a/showcases/e2e/navigation/showcase-navigation.spec.ts b/showcases/e2e/navigation-item/navigation-item-snapshot.spec.ts similarity index 63% rename from showcases/e2e/navigation/showcase-navigation.spec.ts rename to showcases/e2e/navigation-item/navigation-item-snapshot.spec.ts index 17c3c44dcaa..b35c3bffa76 100644 --- a/showcases/e2e/navigation/showcase-navigation.spec.ts +++ b/showcases/e2e/navigation-item/navigation-item-snapshot.spec.ts @@ -2,11 +2,10 @@ import { test } from '@playwright/test'; // @ts-expect-error - required for playwright import { getDefaultScreenshotTest } from '../default.ts'; -test.describe('DBNavigation', () => { +test.describe('DBNavigationItem', () => { // Set fixed height, because of issues with angulars `ngAfterContentInit` - const isAngular = process.env.showcase.startsWith('angular'); getDefaultScreenshotTest({ - path: '05/navigation', - skipA11y: isAngular + path: '05/navigation-item', + fixedHeight: 1800 }); }); diff --git a/showcases/e2e/navigation/navigation-a11y.spec.ts b/showcases/e2e/navigation/navigation-a11y.spec.ts new file mode 100644 index 00000000000..87160dcc2c1 --- /dev/null +++ b/showcases/e2e/navigation/navigation-a11y.spec.ts @@ -0,0 +1,11 @@ +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getA11yTest } from '../default.ts'; + +test.describe('DBNavigation', () => { + const isAngular = process.env.showcase.startsWith('angular'); + getA11yTest({ + path: '05/navigation', + skipA11y: isAngular + }); +}); diff --git a/showcases/e2e/navigation/navigation-snapshot.spec.ts b/showcases/e2e/navigation/navigation-snapshot.spec.ts new file mode 100644 index 00000000000..afe76b605f7 --- /dev/null +++ b/showcases/e2e/navigation/navigation-snapshot.spec.ts @@ -0,0 +1,9 @@ +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getDefaultScreenshotTest } from '../default.ts'; + +test.describe('DBNavigation', () => { + getDefaultScreenshotTest({ + path: '05/navigation' + }); +}); diff --git a/showcases/e2e/notification/notification-a11y.spec.ts b/showcases/e2e/notification/notification-a11y.spec.ts new file mode 100644 index 00000000000..392182c0b88 --- /dev/null +++ b/showcases/e2e/notification/notification-a11y.spec.ts @@ -0,0 +1,7 @@ +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getA11yTest } from '../default.ts'; + +test.describe('DBNotification', () => { + getA11yTest({ path: '06/notification' }); +}); diff --git a/showcases/e2e/notification/showcase-notification.spec.ts b/showcases/e2e/notification/notification-snapshot.spec.ts similarity index 100% rename from showcases/e2e/notification/showcase-notification.spec.ts rename to showcases/e2e/notification/notification-snapshot.spec.ts diff --git a/showcases/e2e/popover/popover-a11y.spec.ts b/showcases/e2e/popover/popover-a11y.spec.ts new file mode 100644 index 00000000000..0e0ac53593a --- /dev/null +++ b/showcases/e2e/popover/popover-a11y.spec.ts @@ -0,0 +1,13 @@ +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getA11yTest } from '../default.ts'; +import { hoverPre } from '../fixtures/hover'; + +const selector = '.db-popover'; + +test.describe('DBPopover', () => { + getA11yTest({ + path: '01/popover', + preA11y: async (page) => hoverPre(page, selector) + }); +}); diff --git a/showcases/e2e/popover/showcase-popover.spec.ts b/showcases/e2e/popover/popover-snapshot.spec.ts similarity index 74% rename from showcases/e2e/popover/showcase-popover.spec.ts rename to showcases/e2e/popover/popover-snapshot.spec.ts index c06827ff56e..070b42702f7 100644 --- a/showcases/e2e/popover/showcase-popover.spec.ts +++ b/showcases/e2e/popover/popover-snapshot.spec.ts @@ -8,7 +8,6 @@ const selector = '.db-popover'; test.describe('DBPopover', () => { getDefaultScreenshotTest({ path: '01/popover', - preScreenShot: async (page) => hoverPre(page, selector), - preA11y: async (page) => hoverPre(page, selector) + preScreenShot: async (page) => hoverPre(page, selector) }); }); diff --git a/showcases/e2e/radio/radio-a11y.spec.ts b/showcases/e2e/radio/radio-a11y.spec.ts new file mode 100644 index 00000000000..f6c5ad2e92a --- /dev/null +++ b/showcases/e2e/radio/radio-a11y.spec.ts @@ -0,0 +1,9 @@ +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getA11yTest } from '../default.ts'; + +test.describe('DBRadio', () => { + getA11yTest({ + path: '03/radio' + }); +}); diff --git a/showcases/e2e/radio/showcase-radio.spec.ts b/showcases/e2e/radio/radio-snapshot.spec.ts similarity index 100% rename from showcases/e2e/radio/showcase-radio.spec.ts rename to showcases/e2e/radio/radio-snapshot.spec.ts diff --git a/showcases/e2e/section/section-a11y.spec.ts b/showcases/e2e/section/section-a11y.spec.ts new file mode 100644 index 00000000000..0819a384f69 --- /dev/null +++ b/showcases/e2e/section/section-a11y.spec.ts @@ -0,0 +1,7 @@ +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getA11yTest } from '../default.ts'; + +test.describe('DBSection', () => { + getA11yTest({ path: '01/section' }); +}); diff --git a/showcases/e2e/section/showcase-section.spec.ts b/showcases/e2e/section/section-snapshot.spec.ts similarity index 100% rename from showcases/e2e/section/showcase-section.spec.ts rename to showcases/e2e/section/section-snapshot.spec.ts diff --git a/showcases/e2e/select/showcase-select.spec.ts b/showcases/e2e/select/select-a11y.spec.ts similarity index 76% rename from showcases/e2e/select/showcase-select.spec.ts rename to showcases/e2e/select/select-a11y.spec.ts index dba98aea9b1..7cfb142648a 100644 --- a/showcases/e2e/select/showcase-select.spec.ts +++ b/showcases/e2e/select/select-a11y.spec.ts @@ -1,10 +1,10 @@ import { test } from '@playwright/test'; // @ts-expect-error - required for playwright -import { getDefaultScreenshotTest } from '../default.ts'; +import { getA11yTest } from '../default.ts'; test.describe('DBSelect', () => { // TODO: Currently disable till we solved https://github.com/db-ui/mono/issues/2587 - getDefaultScreenshotTest({ + getA11yTest({ path: '03/select', axeDisableRules: ['color-contrast'] }); diff --git a/showcases/e2e/select/select-snapshot.spec.ts b/showcases/e2e/select/select-snapshot.spec.ts new file mode 100644 index 00000000000..7795cd4065f --- /dev/null +++ b/showcases/e2e/select/select-snapshot.spec.ts @@ -0,0 +1,9 @@ +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getDefaultScreenshotTest } from '../default.ts'; + +test.describe('DBSelect', () => { + getDefaultScreenshotTest({ + path: '03/select' + }); +}); diff --git a/showcases/e2e/switch/showcase-switch.spec.ts b/showcases/e2e/switch/switch-a11y.spec.ts similarity index 76% rename from showcases/e2e/switch/showcase-switch.spec.ts rename to showcases/e2e/switch/switch-a11y.spec.ts index c3b74e66730..d179874a6fd 100644 --- a/showcases/e2e/switch/showcase-switch.spec.ts +++ b/showcases/e2e/switch/switch-a11y.spec.ts @@ -1,9 +1,9 @@ import { test } from '@playwright/test'; // @ts-expect-error - required for playwright -import { getDefaultScreenshotTest } from '../default.ts'; +import { getA11yTest } from '../default.ts'; test.describe('DBSwitch', () => { - getDefaultScreenshotTest({ + getA11yTest({ path: '03/switch', // It's an issue in the tool: https://github.com/IBMa/equal-access/issues/842 aCheckerDisableRules: ['aria_attribute_valid'] diff --git a/showcases/e2e/switch/switch-snapshot.spec.ts b/showcases/e2e/switch/switch-snapshot.spec.ts new file mode 100644 index 00000000000..c131282fe38 --- /dev/null +++ b/showcases/e2e/switch/switch-snapshot.spec.ts @@ -0,0 +1,9 @@ +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getDefaultScreenshotTest } from '../default.ts'; + +test.describe('DBSwitch', () => { + getDefaultScreenshotTest({ + path: '03/switch' + }); +}); diff --git a/showcases/e2e/tab-item/showcase-tab-item.spec.ts b/showcases/e2e/tab-item/tab-item-a11y.spec.ts similarity index 85% rename from showcases/e2e/tab-item/showcase-tab-item.spec.ts rename to showcases/e2e/tab-item/tab-item-a11y.spec.ts index 90c76864dcc..14fc6a8b552 100644 --- a/showcases/e2e/tab-item/showcase-tab-item.spec.ts +++ b/showcases/e2e/tab-item/tab-item-a11y.spec.ts @@ -1,11 +1,11 @@ import { test } from '@playwright/test'; // @ts-expect-error - required for playwright -import { getDefaultScreenshotTest } from '../default.ts'; +import { getA11yTest } from '../default.ts'; test.describe('DBTabItem', () => { // TODO: There might be an issue in our implementation of which elements get which roles // So we disabled "aria-allowed-role" for now - getDefaultScreenshotTest({ + getA11yTest({ path: '04/tab-item', // We need to change tabs anyway, we disable the rules for now axeDisableRules: ['aria-allowed-role'], diff --git a/showcases/e2e/tab-item/tab-item-snapshot.spec.ts b/showcases/e2e/tab-item/tab-item-snapshot.spec.ts new file mode 100644 index 00000000000..a92665fc8cf --- /dev/null +++ b/showcases/e2e/tab-item/tab-item-snapshot.spec.ts @@ -0,0 +1,9 @@ +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getDefaultScreenshotTest } from '../default.ts'; + +test.describe('DBTabItem', () => { + getDefaultScreenshotTest({ + path: '04/tab-item' + }); +}); diff --git a/showcases/e2e/tabs/showcase-tabs.spec.ts b/showcases/e2e/tabs/tabs-a11y.spec.ts similarity index 84% rename from showcases/e2e/tabs/showcase-tabs.spec.ts rename to showcases/e2e/tabs/tabs-a11y.spec.ts index 1a2b43cde6c..c91b98ca2c2 100644 --- a/showcases/e2e/tabs/showcase-tabs.spec.ts +++ b/showcases/e2e/tabs/tabs-a11y.spec.ts @@ -1,11 +1,11 @@ import { test } from '@playwright/test'; // @ts-expect-error - required for playwright -import { getDefaultScreenshotTest } from '../default.ts'; +import { getA11yTest } from '../default.ts'; test.describe('DBTabs', () => { // TODO: There might be an issue in our implementation of which elements get which roles // So we disabled "aria-allowed-role" for now - getDefaultScreenshotTest({ + getA11yTest({ path: '04/tabs', // We need to change tabs anyway, we disable the rules for now axeDisableRules: ['aria-allowed-role'], diff --git a/showcases/e2e/tabs/tabs-snapshot.spec.ts b/showcases/e2e/tabs/tabs-snapshot.spec.ts new file mode 100644 index 00000000000..3982ccbc537 --- /dev/null +++ b/showcases/e2e/tabs/tabs-snapshot.spec.ts @@ -0,0 +1,9 @@ +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getDefaultScreenshotTest } from '../default.ts'; + +test.describe('DBTabs', () => { + getDefaultScreenshotTest({ + path: '04/tabs' + }); +}); diff --git a/showcases/e2e/tag/tag-a11y.spec.ts b/showcases/e2e/tag/tag-a11y.spec.ts new file mode 100644 index 00000000000..26f0db387d7 --- /dev/null +++ b/showcases/e2e/tag/tag-a11y.spec.ts @@ -0,0 +1,9 @@ +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getA11yTest } from '../default.ts'; + +test.describe('DBTag', () => { + getA11yTest({ + path: '04/tag' + }); +}); diff --git a/showcases/e2e/tag/showcase-tag.spec.ts b/showcases/e2e/tag/tag-snapshot.spec.ts similarity index 100% rename from showcases/e2e/tag/showcase-tag.spec.ts rename to showcases/e2e/tag/tag-snapshot.spec.ts diff --git a/showcases/e2e/textarea/showcase-textarea.spec.ts b/showcases/e2e/textarea/textarea-a11y.spec.ts similarity index 84% rename from showcases/e2e/textarea/showcase-textarea.spec.ts rename to showcases/e2e/textarea/textarea-a11y.spec.ts index 23d70206ad3..5075da3956b 100644 --- a/showcases/e2e/textarea/showcase-textarea.spec.ts +++ b/showcases/e2e/textarea/textarea-a11y.spec.ts @@ -1,10 +1,10 @@ import { test } from '@playwright/test'; // @ts-expect-error - required for playwright -import { getDefaultScreenshotTest } from '../default.ts'; +import { getA11yTest } from '../default.ts'; test.describe('DBTextarea', () => { // TODO: Currently disable till we solved https://github.com/db-ui/mono/issues/2587 - getDefaultScreenshotTest({ + getA11yTest({ path: '03/textarea', axeDisableRules: ['color-contrast'], // TODO: disabled element_scrollable_tabbable it's a false-positive: https://github.com/IBMa/equal-access/issues/1911 diff --git a/showcases/e2e/textarea/textarea-snapshot.spec.ts b/showcases/e2e/textarea/textarea-snapshot.spec.ts new file mode 100644 index 00000000000..078bdfe0545 --- /dev/null +++ b/showcases/e2e/textarea/textarea-snapshot.spec.ts @@ -0,0 +1,9 @@ +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getDefaultScreenshotTest } from '../default.ts'; + +test.describe('DBTextarea', () => { + getDefaultScreenshotTest({ + path: '03/textarea' + }); +}); diff --git a/showcases/e2e/tooltip/tooltip-a11y.spec.ts b/showcases/e2e/tooltip/tooltip-a11y.spec.ts new file mode 100644 index 00000000000..302ed9a95ac --- /dev/null +++ b/showcases/e2e/tooltip/tooltip-a11y.spec.ts @@ -0,0 +1,13 @@ +import { test } from '@playwright/test'; +// @ts-expect-error - required for playwright +import { getA11yTest } from '../default.ts'; +import { hoverPre } from '../fixtures/hover'; + +const selector = '.db-tooltip'; + +test.describe('DBTooltip', () => { + getA11yTest({ + path: '04/tooltip', + preA11y: async (page) => hoverPre(page, selector) + }); +}); diff --git a/showcases/e2e/tooltip/showcase-tooltip.spec.ts b/showcases/e2e/tooltip/tooltip-snapshot.spec.ts similarity index 74% rename from showcases/e2e/tooltip/showcase-tooltip.spec.ts rename to showcases/e2e/tooltip/tooltip-snapshot.spec.ts index 4fbf8ca84a0..5ed1092957b 100644 --- a/showcases/e2e/tooltip/showcase-tooltip.spec.ts +++ b/showcases/e2e/tooltip/tooltip-snapshot.spec.ts @@ -8,7 +8,6 @@ const selector = '.db-tooltip'; test.describe('DBTooltip', () => { getDefaultScreenshotTest({ path: '04/tooltip', - preScreenShot: async (page) => hoverPre(page, selector), - preA11y: async (page) => hoverPre(page, selector) + preScreenShot: async (page) => hoverPre(page, selector) }); }); diff --git a/showcases/next-showcase/package.json b/showcases/next-showcase/package.json index bd3db7ce0da..e7aeeb7f2fa 100644 --- a/showcases/next-showcase/package.json +++ b/showcases/next-showcase/package.json @@ -17,8 +17,8 @@ "react-dom": "18.3.1" }, "devDependencies": { - "@types/node": "^22.1.0", - "@types/react": "^18.3.1", + "@types/node": "^22.5.0", + "@types/react": "^18.3.4", "npm-run-all": "^4.1.5", "open-cli": "^8.0.0", "typescript": "^5.4.5" diff --git a/showcases/nuxt-showcase/package.json b/showcases/nuxt-showcase/package.json index 1c8d742fcef..12cddaa561d 100644 --- a/showcases/nuxt-showcase/package.json +++ b/showcases/nuxt-showcase/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "nuxt": "^3.12.4", - "vue": "^3.4.37", + "vue": "^3.4.38", "vue-router": "^4.4.3" } } diff --git a/showcases/patternhub/.env b/showcases/patternhub/.env index 63495c1522e..3c0549c03b2 100644 --- a/showcases/patternhub/.env +++ b/showcases/patternhub/.env @@ -1,4 +1,4 @@ -NEXT_PUBLIC_APP_NAME=DB-UI Mono +NEXT_PUBLIC_APP_NAME=DB-UX NEXT_PUBLIC_GITHUB_VERSION_SWITCHER=true NEXT_PUBLIC_GITHUB_OWNER=db-ui NEXT_PUBLIC_GITHUB_REPO=mono diff --git a/showcases/patternhub/components/version-switcher/version-switcher.tsx b/showcases/patternhub/components/version-switcher/version-switcher.tsx index cac648bd461..3020f708399 100644 --- a/showcases/patternhub/components/version-switcher/version-switcher.tsx +++ b/showcases/patternhub/components/version-switcher/version-switcher.tsx @@ -99,7 +99,7 @@ const VersionSwitcher = () => { }, []); const handleChange = (branch: string) => { - const lastPath = router.pathname; + const lastPath = router.asPath; const isTag = branch.split('.').length === 3 && branch.startsWith('v'); window.location.replace( sanitize( diff --git a/showcases/patternhub/package.json b/showcases/patternhub/package.json index 2bdc1f1c529..3ed0969479c 100644 --- a/showcases/patternhub/package.json +++ b/showcases/patternhub/package.json @@ -25,7 +25,7 @@ "dependencies": { "dompurify": "3.1.6", "highlight.js": "^11.10.0", - "next": "14.2.5", + "next": "14.2.6", "react": "18.3.1", "react-archer": "^4.4.0", "react-dom": "18.3.1", @@ -35,15 +35,15 @@ "devDependencies": { "@mdx-js/loader": "^3.0.1", "@mdx-js/react": "^3.0.1", - "@next/mdx": "^14.2.5", + "@next/mdx": "^14.2.6", "@types/dompurify": "3.0.5", - "@types/node": "22.1.0", - "@types/react": "18.3.3", + "@types/node": "22.5.0", + "@types/react": "18.3.4", "@types/react-dom": "18.3.0", - "esbuild": "0.23.0", + "esbuild": "0.23.1", "eslint": "8.57.0", - "eslint-config-next": "14.2.5", - "iframe-resizer": "^5.2.3", + "eslint-config-next": "14.2.6", + "iframe-resizer": "^5.2.4", "open-cli": "^8.0.0", "sass": "1.77.4", "typescript": "5.4.5" diff --git a/showcases/patternhub/pages/foundations/test-table/index.tsx b/showcases/patternhub/pages/foundations/test-table/index.tsx index be525f8af3e..b9c2aeabe11 100644 --- a/showcases/patternhub/pages/foundations/test-table/index.tsx +++ b/showcases/patternhub/pages/foundations/test-table/index.tsx @@ -32,7 +32,7 @@ const tableHeaders = [ href: 'https://github.com/guidepup/guidepup' }, { - label: 'Manually accessibility review' + label: 'Manual audit conducted by accessibility experts' }, { label: 'Testing stable' diff --git a/showcases/patternhub/scripts/generate-test-table.js b/showcases/patternhub/scripts/generate-test-table.js index 58db66a3464..c5b263a6000 100644 --- a/showcases/patternhub/scripts/generate-test-table.js +++ b/showcases/patternhub/scripts/generate-test-table.js @@ -26,8 +26,11 @@ const generateTestTable = () => { const hasComponentTest = FS.existsSync( `./../../packages/components/src/components/${componentName}/${componentName}.spec.tsx` ); + const hasShowcaseVisuals = FS.existsSync( + `./../../showcases/e2e/${componentName}/${componentName}-snapshot.spec.ts` + ); const hasShowcaseTest = FS.existsSync( - `./../../showcases/e2e/${componentName}/showcase-${componentName}.spec.ts` + `./../../showcases/e2e/${componentName}/${componentName}-a11y.spec.ts` ); const hasScreenReaderTest = FS.existsSync( `./../../showcases/screen-reader/tests/${componentName}.spec.ts` @@ -37,7 +40,7 @@ const generateTestTable = () => { name: componentName, singleComponentVisuals: hasComponentTest, singleComponentAxe: hasComponentTest, - showcaseVisuals: hasShowcaseTest, + showcaseVisuals: hasShowcaseVisuals, showcaseAxe: hasShowcaseTest, showcaseAC: hasShowcaseTest, showcaseGP: hasScreenReaderTest, diff --git a/showcases/playwright.screen-reader.macos.ts b/showcases/playwright.screen-reader.macos.ts index 72ae01a5cd4..0a6017d10b8 100644 --- a/showcases/playwright.screen-reader.macos.ts +++ b/showcases/playwright.screen-reader.macos.ts @@ -4,7 +4,7 @@ import defaultScreenReaderConfig from './playwright.screen-reader'; const config: PlaywrightTestConfig = { ...defaultScreenReaderConfig, snapshotPathTemplate: - '{snapshotDir}/{testFileDir}/macos/{projectName}/{testName}{ext}', + '{snapshotDir}/{testFileDir}/macos/{projectName}/{arg}{ext}', projects: [ { name: 'webkit', diff --git a/showcases/playwright.screen-reader.windows.ts b/showcases/playwright.screen-reader.windows.ts index 5663d9c65e6..d59da3ff96e 100644 --- a/showcases/playwright.screen-reader.windows.ts +++ b/showcases/playwright.screen-reader.windows.ts @@ -4,7 +4,7 @@ import defaultScreenReaderConfig from './playwright.screen-reader'; const config: PlaywrightTestConfig = { ...defaultScreenReaderConfig, snapshotPathTemplate: - '{snapshotDir}/{testFileDir}/windows/{projectName}/{testName}{ext}', + '{snapshotDir}/{testFileDir}/windows/{projectName}/{arg}{ext}', projects: [ { name: 'chromium', diff --git a/showcases/playwright.showcase-snapshots.ts b/showcases/playwright.showcase-snapshots.ts new file mode 100644 index 00000000000..6feb8ed0475 --- /dev/null +++ b/showcases/playwright.showcase-snapshots.ts @@ -0,0 +1,9 @@ +import { type PlaywrightTestConfig } from '@playwright/test'; +import config from './playwright.config'; + +const showcaseSnapshotConfig: PlaywrightTestConfig = { + ...config, + testMatch: '*-snapshot.spec.ts' +}; + +export default showcaseSnapshotConfig; diff --git a/showcases/react-showcase/package.json b/showcases/react-showcase/package.json index 7be3d4c1312..0fa0be83051 100644 --- a/showcases/react-showcase/package.json +++ b/showcases/react-showcase/package.json @@ -9,7 +9,7 @@ "build:02_vite": "vite build", "dev": "vite --open", "preview": "npx http-server ../../build-showcases", - "regenerate:screenshots": "cross-env showcase=react-showcase npx playwright test -c ../playwright.config.ts --update-snapshots", + "regenerate:screenshots": "cross-env showcase=react-showcase npx playwright test -c ../playwright.showcase-snapshots.ts --update-snapshots", "start": "vite", "test:e2e": "cross-env showcase=react-showcase npx playwright test --config=../playwright.config.ts", "test:screen-reader:macos": "cross-env showcase=react-showcase npx playwright test --config=../playwright.screen-reader.macos.ts", @@ -18,15 +18,15 @@ "dependencies": { "react": "^18.3.1", "react-dom": "^18.3.1", - "react-router-dom": "6.26.0", + "react-router-dom": "6.26.1", "sa11y": "3.2.2" }, "devDependencies": { - "@types/react": "^18.3.3", + "@types/react": "^18.3.4", "@types/react-dom": "^18.3.0", "@vitejs/plugin-react": "^4.3.1", "cross-env": "^7.0.3", "typescript": "^5.4.5", - "vite": "^5.4.0" + "vite": "^5.4.2" } } diff --git a/showcases/react-showcase/src/components/brand/index.tsx b/showcases/react-showcase/src/components/brand/index.tsx index e2293a3709b..37ef0b87530 100644 --- a/showcases/react-showcase/src/components/brand/index.tsx +++ b/showcases/react-showcase/src/components/brand/index.tsx @@ -16,7 +16,7 @@ const getBrand = ({ src={`${ process?.env?.NEXT_PUBLIC_BASE_PATH ?? '/react-showcase' }/assets/images/placeholder.jpg`} - alt="logo" + alt="this is a fancy placeholder logo" /> )} {children} diff --git a/showcases/react-showcase/src/components/divider/index.tsx b/showcases/react-showcase/src/components/divider/index.tsx index 6a16b753050..3752ad6d11f 100644 --- a/showcases/react-showcase/src/components/divider/index.tsx +++ b/showcases/react-showcase/src/components/divider/index.tsx @@ -5,12 +5,12 @@ import { type DBDividerProps } from '../../../../../output/react/src/components/ import { getVariants } from '../data'; import { type BaseComponentProps } from '../base-component-data'; -const getDivider = ({ variant, emphasis, children }: DBDividerProps) => ( +const getDivider = ({ variant, emphasis, children, width }: DBDividerProps) => ( <> {children} - + ); diff --git a/showcases/react-showcase/src/components/notification/index.tsx b/showcases/react-showcase/src/components/notification/index.tsx index 5e801e7a450..564de10d943 100644 --- a/showcases/react-showcase/src/components/notification/index.tsx +++ b/showcases/react-showcase/src/components/notification/index.tsx @@ -27,7 +27,7 @@ const getNotification = ({ img ? ( Placeholder ) : undefined } diff --git a/showcases/screen-reader/__snapshots__/.editorconfig b/showcases/screen-reader/__snapshots__/.editorconfig new file mode 100644 index 00000000000..d7da5a26ffb --- /dev/null +++ b/showcases/screen-reader/__snapshots__/.editorconfig @@ -0,0 +1,6 @@ +# For more information about the properties used in +# this file, please see the EditorConfig documentation: +# https://editorconfig.org/ + +[*.txt] +insert_final_newline = false diff --git a/showcases/screen-reader/__snapshots__/macos/webkit/DBBadge-default-1.txt b/showcases/screen-reader/__snapshots__/macos/webkit/DBBadge-default-1.txt new file mode 100644 index 00000000000..5df1d6c1cb3 --- /dev/null +++ b/showcases/screen-reader/__snapshots__/macos/webkit/DBBadge-default-1.txt @@ -0,0 +1 @@ +["(Default) Inline","Label","LABEL SHOULD BE SET Corner - Top - Left button","Corner - Top - Left","LABEL SHOULD BE SET Corner - Center - Left button"] \ No newline at end of file diff --git a/showcases/screen-reader/__snapshots__/macos/webkit/DBBrand-default-1.txt b/showcases/screen-reader/__snapshots__/macos/webkit/DBBrand-default-1.txt new file mode 100644 index 00000000000..0221c37a5c3 --- /dev/null +++ b/showcases/screen-reader/__snapshots__/macos/webkit/DBBrand-default-1.txt @@ -0,0 +1 @@ +["(Default) With Logo","No Logo","this is a fancy placeholder logo image","Custom Logo"] \ No newline at end of file diff --git a/showcases/screen-reader/__snapshots__/macos/webkit/DBButton-should-not-have-icon-in-screen-reader-next-.txt b/showcases/screen-reader/__snapshots__/macos/webkit/DBButton-next-1.txt similarity index 100% rename from showcases/screen-reader/__snapshots__/macos/webkit/DBButton-should-not-have-icon-in-screen-reader-next-.txt rename to showcases/screen-reader/__snapshots__/macos/webkit/DBButton-next-1.txt diff --git a/showcases/screen-reader/__snapshots__/macos/webkit/DBCard-default-1.txt b/showcases/screen-reader/__snapshots__/macos/webkit/DBCard-default-1.txt new file mode 100644 index 00000000000..b14abc61c33 --- /dev/null +++ b/showcases/screen-reader/__snapshots__/macos/webkit/DBCard-default-1.txt @@ -0,0 +1 @@ +["Functional clickable","(Default) Regular clickable"] \ No newline at end of file diff --git a/showcases/screen-reader/__snapshots__/macos/webkit/DBDrawer-should-autofocus.txt b/showcases/screen-reader/__snapshots__/macos/webkit/DBDrawer-autofocus-1.txt similarity index 100% rename from showcases/screen-reader/__snapshots__/macos/webkit/DBDrawer-should-autofocus.txt rename to showcases/screen-reader/__snapshots__/macos/webkit/DBDrawer-autofocus-1.txt diff --git a/showcases/screen-reader/__snapshots__/macos/webkit/DBHeader-default-1.txt b/showcases/screen-reader/__snapshots__/macos/webkit/DBHeader-default-1.txt new file mode 100644 index 00000000000..1192ee597fe --- /dev/null +++ b/showcases/screen-reader/__snapshots__/macos/webkit/DBHeader-default-1.txt @@ -0,0 +1 @@ +["link Imprint","link Help","DBHeader","Functional navigation","list 2 items","link Functional 1 of 2","dimmed link Functional disabled 2 of 2. This item is dimmed.","end of list","end of Functional navigation","Search button","Profile button","Notification button","Help button"] \ No newline at end of file diff --git a/showcases/screen-reader/__snapshots__/macos/webkit/DBIcon-default-1.txt b/showcases/screen-reader/__snapshots__/macos/webkit/DBIcon-default-1.txt new file mode 100644 index 00000000000..4a4a74909e8 --- /dev/null +++ b/showcases/screen-reader/__snapshots__/macos/webkit/DBIcon-default-1.txt @@ -0,0 +1 @@ +["Functional","(Default) Regular"] \ No newline at end of file diff --git a/showcases/screen-reader/__snapshots__/macos/webkit/DBInfotext-default-1.txt b/showcases/screen-reader/__snapshots__/macos/webkit/DBInfotext-default-1.txt new file mode 100644 index 00000000000..4a4a74909e8 --- /dev/null +++ b/showcases/screen-reader/__snapshots__/macos/webkit/DBInfotext-default-1.txt @@ -0,0 +1 @@ +["Functional","(Default) Regular"] \ No newline at end of file diff --git a/showcases/screen-reader/__snapshots__/macos/webkit/DBInput-should-have-message-and-label-next-.txt b/showcases/screen-reader/__snapshots__/macos/webkit/DBInput-next-1.txt similarity index 100% rename from showcases/screen-reader/__snapshots__/macos/webkit/DBInput-should-have-message-and-label-next-.txt rename to showcases/screen-reader/__snapshots__/macos/webkit/DBInput-next-1.txt diff --git a/showcases/screen-reader/__snapshots__/macos/webkit/DBInput-required-1.txt b/showcases/screen-reader/__snapshots__/macos/webkit/DBInput-required-1.txt new file mode 100644 index 00000000000..28a6a206d61 --- /dev/null +++ b/showcases/screen-reader/__snapshots__/macos/webkit/DBInput-required-1.txt @@ -0,0 +1 @@ +["Label * Label* Required required edit text","TODO: Add a validMessage. Test","Test selected","Test. Fill out this field","TODO: Add a validMessage. Test"] \ No newline at end of file diff --git a/showcases/screen-reader/__snapshots__/macos/webkit/DBLink-default-1.txt b/showcases/screen-reader/__snapshots__/macos/webkit/DBLink-default-1.txt new file mode 100644 index 00000000000..d14a1b6c6e0 --- /dev/null +++ b/showcases/screen-reader/__snapshots__/macos/webkit/DBLink-default-1.txt @@ -0,0 +1 @@ +["link Enabled (Default)/Hover/Pressed","dimmed link Disabled. This item is dimmed"] \ No newline at end of file diff --git a/showcases/screen-reader/__snapshots__/macos/webkit/DBNotification-default-1.txt b/showcases/screen-reader/__snapshots__/macos/webkit/DBNotification-default-1.txt new file mode 100644 index 00000000000..c0bab0e7365 --- /dev/null +++ b/showcases/screen-reader/__snapshots__/macos/webkit/DBNotification-default-1.txt @@ -0,0 +1 @@ +["Headline","functional","Close Button button","end of article"] \ No newline at end of file diff --git a/showcases/screen-reader/__snapshots__/macos/webkit/DBPopover-opened-1.txt b/showcases/screen-reader/__snapshots__/macos/webkit/DBPopover-opened-1.txt new file mode 100644 index 00000000000..97d7c786bf6 --- /dev/null +++ b/showcases/screen-reader/__snapshots__/macos/webkit/DBPopover-opened-1.txt @@ -0,0 +1 @@ +["article","list 2 items","• Popover Custom Item 1 1 of 2","• Popover Custom Item 2 2 of 2","end of list","Functional menu pop up button","end of article","(Default) Regular menu pop up button"] \ No newline at end of file diff --git a/showcases/screen-reader/__snapshots__/macos/webkit/DBRadio-should-label-duplicated-next-.txt b/showcases/screen-reader/__snapshots__/macos/webkit/DBRadio-next-1.txt similarity index 100% rename from showcases/screen-reader/__snapshots__/macos/webkit/DBRadio-should-label-duplicated-next-.txt rename to showcases/screen-reader/__snapshots__/macos/webkit/DBRadio-next-1.txt diff --git a/showcases/screen-reader/__snapshots__/windows/chromium/DBBadge-default-1.txt b/showcases/screen-reader/__snapshots__/windows/chromium/DBBadge-default-1.txt new file mode 100644 index 00000000000..179e367ed51 --- /dev/null +++ b/showcases/screen-reader/__snapshots__/windows/chromium/DBBadge-default-1.txt @@ -0,0 +1 @@ +["(Default) Inline Label","button, LABEL SHOULD BE SET","button, Corner Top Left","Corner Top Left","button, LABEL SHOULD BE SET"] \ No newline at end of file diff --git a/showcases/screen-reader/__snapshots__/windows/chromium/DBBrand-default-1.txt b/showcases/screen-reader/__snapshots__/windows/chromium/DBBrand-default-1.txt new file mode 100644 index 00000000000..64554c14752 --- /dev/null +++ b/showcases/screen-reader/__snapshots__/windows/chromium/DBBrand-default-1.txt @@ -0,0 +1 @@ +["(Default) With Logo No Logo","graphic, this is a fancy placeholder logo","Custom Logo"] \ No newline at end of file diff --git a/showcases/screen-reader/__snapshots__/windows/chromium/DBButton-should-not-have-icon-in-screen-reader-next-.txt b/showcases/screen-reader/__snapshots__/windows/chromium/DBButton-next-1.txt similarity index 100% rename from showcases/screen-reader/__snapshots__/windows/chromium/DBButton-should-not-have-icon-in-screen-reader-next-.txt rename to showcases/screen-reader/__snapshots__/windows/chromium/DBButton-next-1.txt diff --git a/showcases/screen-reader/__snapshots__/windows/chromium/DBButton-should-not-have-icon-in-screen-reader-tab-.txt b/showcases/screen-reader/__snapshots__/windows/chromium/DBButton-tab-1.txt similarity index 100% rename from showcases/screen-reader/__snapshots__/windows/chromium/DBButton-should-not-have-icon-in-screen-reader-tab-.txt rename to showcases/screen-reader/__snapshots__/windows/chromium/DBButton-tab-1.txt diff --git a/showcases/screen-reader/__snapshots__/windows/chromium/DBCard-default-1.txt b/showcases/screen-reader/__snapshots__/windows/chromium/DBCard-default-1.txt new file mode 100644 index 00000000000..522e9098c2c --- /dev/null +++ b/showcases/screen-reader/__snapshots__/windows/chromium/DBCard-default-1.txt @@ -0,0 +1 @@ +["Functional","clickable, (Default) Regular"] \ No newline at end of file diff --git a/showcases/screen-reader/__snapshots__/windows/chromium/DBDrawer-should-autofocus.txt b/showcases/screen-reader/__snapshots__/windows/chromium/DBDrawer-autofocus-1.txt similarity index 100% rename from showcases/screen-reader/__snapshots__/windows/chromium/DBDrawer-should-autofocus.txt rename to showcases/screen-reader/__snapshots__/windows/chromium/DBDrawer-autofocus-1.txt diff --git a/showcases/screen-reader/__snapshots__/windows/chromium/DBHeader-default-1.txt b/showcases/screen-reader/__snapshots__/windows/chromium/DBHeader-default-1.txt new file mode 100644 index 00000000000..c431ecdb151 --- /dev/null +++ b/showcases/screen-reader/__snapshots__/windows/chromium/DBHeader-default-1.txt @@ -0,0 +1 @@ +["link, Imprint","link, Help","DB Header","Functional, navigation landmark, list, with 2 items, link, Functional","unavailable, link, Functional disabled","out of list, button, Search","button, Profile","button, Notification","button, Help"] \ No newline at end of file diff --git a/showcases/screen-reader/__snapshots__/windows/chromium/DBIcon-default-1.txt b/showcases/screen-reader/__snapshots__/windows/chromium/DBIcon-default-1.txt new file mode 100644 index 00000000000..86d7c720fe2 --- /dev/null +++ b/showcases/screen-reader/__snapshots__/windows/chromium/DBIcon-default-1.txt @@ -0,0 +1 @@ +["Functional(Default) Regular Expressive"] \ No newline at end of file diff --git a/showcases/screen-reader/__snapshots__/windows/chromium/DBInfotext-default-1.txt b/showcases/screen-reader/__snapshots__/windows/chromium/DBInfotext-default-1.txt new file mode 100644 index 00000000000..86d7c720fe2 --- /dev/null +++ b/showcases/screen-reader/__snapshots__/windows/chromium/DBInfotext-default-1.txt @@ -0,0 +1 @@ +["Functional(Default) Regular Expressive"] \ No newline at end of file diff --git a/showcases/screen-reader/__snapshots__/windows/chromium/DBInput-required-1.txt b/showcases/screen-reader/__snapshots__/windows/chromium/DBInput-required-1.txt new file mode 100644 index 00000000000..cde79e5eb05 --- /dev/null +++ b/showcases/screen-reader/__snapshots__/windows/chromium/DBInput-required-1.txt @@ -0,0 +1 @@ +["Label, edit, required, Required, blank","T. e. s. t. TODO: Add a valid Message","Test selected","blank. Please fill out this field.. unselected","T. e. s. t. TODO: Add a valid Message"] \ No newline at end of file diff --git a/showcases/screen-reader/__snapshots__/windows/chromium/DBInput-should-have-message-and-label-tab-.txt b/showcases/screen-reader/__snapshots__/windows/chromium/DBInput-tab-1.txt similarity index 100% rename from showcases/screen-reader/__snapshots__/windows/chromium/DBInput-should-have-message-and-label-tab-.txt rename to showcases/screen-reader/__snapshots__/windows/chromium/DBInput-tab-1.txt diff --git a/showcases/screen-reader/__snapshots__/windows/chromium/DBLink-default-1.txt b/showcases/screen-reader/__snapshots__/windows/chromium/DBLink-default-1.txt new file mode 100644 index 00000000000..ef3d724fe95 --- /dev/null +++ b/showcases/screen-reader/__snapshots__/windows/chromium/DBLink-default-1.txt @@ -0,0 +1 @@ +["link, Enabled (Default) slash Hover slash Pressed","unavailable, link, Disabled"] \ No newline at end of file diff --git a/showcases/screen-reader/__snapshots__/windows/chromium/DBNotification-default-1.txt b/showcases/screen-reader/__snapshots__/windows/chromium/DBNotification-default-1.txt new file mode 100644 index 00000000000..70ed6bd0200 --- /dev/null +++ b/showcases/screen-reader/__snapshots__/windows/chromium/DBNotification-default-1.txt @@ -0,0 +1 @@ +["Headline","functional","button, Close Button"] \ No newline at end of file diff --git a/showcases/screen-reader/__snapshots__/windows/chromium/DBPopover-opened-1.txt b/showcases/screen-reader/__snapshots__/windows/chromium/DBPopover-opened-1.txt new file mode 100644 index 00000000000..ee96aec9a28 --- /dev/null +++ b/showcases/screen-reader/__snapshots__/windows/chromium/DBPopover-opened-1.txt @@ -0,0 +1 @@ +["(Default) Regular, menu button, expanded, sub Menu","list, with 2 items, bullet Popover Custom Item 1","bullet Popover Custom Item 2","out of list, button, Popover Custom Item 3","menu button, collapsed, sub Menu, Expressive"] \ No newline at end of file diff --git a/showcases/screen-reader/__snapshots__/windows/chromium/DBRadio-should-label-duplicated-arrows-.txt b/showcases/screen-reader/__snapshots__/windows/chromium/DBRadio-arrows-1.txt similarity index 100% rename from showcases/screen-reader/__snapshots__/windows/chromium/DBRadio-should-label-duplicated-arrows-.txt rename to showcases/screen-reader/__snapshots__/windows/chromium/DBRadio-arrows-1.txt diff --git a/showcases/screen-reader/__snapshots__/windows/chromium/DBRadio-should-label-duplicated-next-.txt b/showcases/screen-reader/__snapshots__/windows/chromium/DBRadio-next-1.txt similarity index 100% rename from showcases/screen-reader/__snapshots__/windows/chromium/DBRadio-should-label-duplicated-next-.txt rename to showcases/screen-reader/__snapshots__/windows/chromium/DBRadio-next-1.txt diff --git a/showcases/screen-reader/data.ts b/showcases/screen-reader/data.ts index dad6df64834..43466cd8595 100644 --- a/showcases/screen-reader/data.ts +++ b/showcases/screen-reader/data.ts @@ -22,7 +22,11 @@ export type ScreenReaderTestType = TestType< export type DefaultTestType = { test?: ScreenReaderTestType; + /** + * Should be very short because this will be the name for the output + */ title: string; + description: string; url: string; testFn?: ( voiceOver?: VoiceOverPlaywright, diff --git a/showcases/screen-reader/default.ts b/showcases/screen-reader/default.ts index 1b6c1ff1add..51b0c3c1c98 100644 --- a/showcases/screen-reader/default.ts +++ b/showcases/screen-reader/default.ts @@ -13,20 +13,7 @@ import { type RunTestType, type ScreenReaderTestType } from './data'; - -const translations: Record = { - button: ['Schalter'], - edit: ['Eingabefeld'], - 'radio button': ['Auswahlschalter'], - blank: ['Leer'], - checked: ['aktiviert'], - ' of ': [' von '], - clickable: ['anklickbar'], - 'has auto complete': ['mit Auto Vervollständigung'], - unknown: ['Unbekannt'], - dialog: ['Dialogfeld'], - document: ['Dokument'] -}; +import { translations } from './translations'; const standardPhrases = [ 'You are currently', @@ -35,7 +22,10 @@ const standardPhrases = [ 'To click', 'To select', 'To interact', - 'Press Control' + 'Press Control', + 'To begin interacting', + 'To display a', + 'To move between items' ]; const cleanSpeakInstructions = (phraseLog: string[]): string[] => @@ -47,6 +37,8 @@ const cleanSpeakInstructions = (phraseLog: string[]): string[] => !standardPhrases.some((string) => sPhrase.includes(string)) ) .join('. ') + // We need to replace specific phrases, as they are being reported differently on localhost and within CI/CD + .replaceAll('pop-up', 'pop up') ); export const generateSnapshot = async ( @@ -134,6 +126,7 @@ export const testDefault = (defaultTestType: DefaultTestType) => { '&color=neutral-bg-basic-level-1&density=regular' }; + const trimTitleForShortSnapshotName = title.slice(0, 10); if (isWin()) { test?.(title, async ({ page, nvda }, { retry }) => { await runTest({ diff --git a/showcases/screen-reader/tests/badge.spec.ts b/showcases/screen-reader/tests/badge.spec.ts new file mode 100644 index 00000000000..00c6356d5f3 --- /dev/null +++ b/showcases/screen-reader/tests/badge.spec.ts @@ -0,0 +1,26 @@ +import { getTest, testDefault } from '../default'; + +const test = getTest(); + +test.describe('DBBadge', () => { + testDefault({ + test, + title: 'default', + description: + 'should have texts inline or as data-label attributes (next())', + url: './#/06/badge?page=placement', + async testFn(voiceOver, nvda) { + if (nvda) { + await nvda?.next(); + } + + const screenReader = voiceOver ?? nvda; + await screenReader?.clearSpokenPhraseLog(); + await screenReader?.previous(); // Badge inline + await screenReader?.next(); // Badge red + await screenReader?.next(); // Button with badge with data-label 1 + await screenReader?.next(); // Info-text + await screenReader?.next(); // Button with badge with data-label 2 + } + }); +}); diff --git a/showcases/screen-reader/tests/brand.spec.ts b/showcases/screen-reader/tests/brand.spec.ts new file mode 100644 index 00000000000..85a649466d9 --- /dev/null +++ b/showcases/screen-reader/tests/brand.spec.ts @@ -0,0 +1,28 @@ +import { getTest, testDefault } from '../default'; + +const test = getTest(); + +test.describe('DBBrand', () => { + testDefault({ + test, + title: 'default', + description: + 'should have inline texts, no icons, but the custom logo as image (next())', + url: './#/04/brand?page=variants', + async testFn(voiceOver, nvda) { + if (voiceOver) { + await voiceOver?.previous(); // Label 1 + await voiceOver?.next(); // Label 2 + await voiceOver?.next(); // Logo image + await voiceOver?.next(); // Label 3 + } else if (nvda) { + /* We don't have a focusable element, so we are initially on the browser (i) button */ + await nvda.press('Shift+Tab'); // Jump into the website + await nvda?.clearSpokenPhraseLog(); + await nvda?.previous(); // Label 1 + 2 + await nvda?.next(); // Logo image + await nvda?.next(); // Label 3 + } + } + }); +}); diff --git a/showcases/screen-reader/tests/button.spec.ts b/showcases/screen-reader/tests/button.spec.ts index b1cc99d250c..ca33ec727b1 100644 --- a/showcases/screen-reader/tests/button.spec.ts +++ b/showcases/screen-reader/tests/button.spec.ts @@ -5,7 +5,8 @@ const test = getTest(); test.describe('DBButton', () => { testDefault({ test, - title: 'should not have icon in screen reader (next())', + title: 'next()', + description: 'should not have icon in screen reader (next())', url: './#/02/button?page=content', async testFn(voiceOver, nvda) { if (nvda) { @@ -21,7 +22,8 @@ test.describe('DBButton', () => { }); testDefault({ test, - title: 'should not have icon in screen reader (tab)', + title: 'tab', + description: 'should not have icon in screen reader (tab)', url: './#/02/button?page=content', async testFn(voiceOver, nvda) { if (voiceOver) { diff --git a/showcases/screen-reader/tests/card.spec.ts b/showcases/screen-reader/tests/card.spec.ts new file mode 100644 index 00000000000..0b6b8cfb2d5 --- /dev/null +++ b/showcases/screen-reader/tests/card.spec.ts @@ -0,0 +1,23 @@ +import { getTest, testDefault } from '../default'; + +const test = getTest(); + +test.describe('DBCard', () => { + testDefault({ + test, + title: 'default', + description: 'should have texts inline (next())', + url: './#/01/card?page=density', + async testFn(voiceOver, nvda) { + if (nvda) { + /* We don't have a focusable element, so we are initially on the browser (i) button */ + await nvda.press('Shift+Tab'); // Jump into the website + } + + const screenReader = voiceOver ?? nvda; + await screenReader?.clearSpokenPhraseLog(); + await screenReader?.previous(); // Card "Functional" + await screenReader?.next(); // Card "(Default) Regular" + } + }); +}); diff --git a/showcases/screen-reader/tests/drawer.spec.ts b/showcases/screen-reader/tests/drawer.spec.ts index 28a9f4e39ff..d5b65618687 100644 --- a/showcases/screen-reader/tests/drawer.spec.ts +++ b/showcases/screen-reader/tests/drawer.spec.ts @@ -5,7 +5,8 @@ const test = getTest(); test.describe('DBDrawer', () => { testDefault({ test, - title: 'should autofocus', + title: 'autofocus', + description: 'should autofocus', url: './#/01/drawer?page=density', async testFn(voiceOver, nvda) { const screenReader = voiceOver ?? nvda; diff --git a/showcases/screen-reader/tests/header.spec.ts b/showcases/screen-reader/tests/header.spec.ts new file mode 100644 index 00000000000..f15b71425f6 --- /dev/null +++ b/showcases/screen-reader/tests/header.spec.ts @@ -0,0 +1,40 @@ +import { getTest, testDefault } from '../default'; + +const test = getTest(); + +test.describe('DBHeader', () => { + testDefault({ + test, + title: 'default', + description: + 'should have links, an inline text, a navigation with a list and links, buttons (next())', + url: './#/01/header?page=tonality', + async testFn(voiceOver, nvda) { + if (nvda) { + await nvda?.previous(); // Link "Imprint" + await nvda?.next(); // Link "Help" + await nvda?.next(); // DBHeader + await nvda?.next(); // Link "Functional" + await nvda?.next(); // Link "Functional disabled" + await nvda?.next(); // Button "Search" + await nvda?.next(); // Button "Profile" + await nvda?.next(); // Button "Notification" + await nvda?.next(); // Button "Help" + } else if (voiceOver) { + await voiceOver?.next(); // Link "Imprint" + await voiceOver?.next(); // Link "Help" + await voiceOver?.next(); // DBHeader + await voiceOver?.next(); // Navigation "Functional" + await voiceOver?.next(); // List + await voiceOver?.next(); // Link "Functional" + await voiceOver?.next(); // Link dimmed "Functional disabled" + await voiceOver?.next(); // List end + await voiceOver?.next(); // Navigation end + await voiceOver?.next(); // Button "Search" + await voiceOver?.next(); // Button "Profile" + await voiceOver?.next(); // Button "Notification" + await voiceOver?.next(); // Button "Help" + } + } + }); +}); diff --git a/showcases/screen-reader/tests/icon.spec.ts b/showcases/screen-reader/tests/icon.spec.ts new file mode 100644 index 00000000000..c3f7f921acc --- /dev/null +++ b/showcases/screen-reader/tests/icon.spec.ts @@ -0,0 +1,23 @@ +import { getTest, testDefault } from '../default'; + +const test = getTest(); + +test.describe('DBIcon', () => { + testDefault({ + test, + title: 'default', + description: 'should not mention icon (next())', + url: './#/04/icon?page=density', + async testFn(voiceOver, nvda) { + if (nvda) { + /* We don't have a focusable element, so we are initially on the browser (i) button */ + await nvda.press('Shift+Tab'); // Jump into the website -> infotext "Functional" + await nvda?.clearSpokenPhraseLog(); + await nvda?.next(); // Reading all infotext together + } else if (voiceOver) { + await voiceOver?.previous(); // Infotext "Functional" + await voiceOver?.next(); // Infotext "(Default) Regular" + } + } + }); +}); diff --git a/showcases/screen-reader/tests/infotext.spec.ts b/showcases/screen-reader/tests/infotext.spec.ts new file mode 100644 index 00000000000..7689659c4e0 --- /dev/null +++ b/showcases/screen-reader/tests/infotext.spec.ts @@ -0,0 +1,23 @@ +import { getTest, testDefault } from '../default'; + +const test = getTest(); + +test.describe('DBInfotext', () => { + testDefault({ + test, + title: 'default', + description: 'should not mention icon (next())', + url: './#/04/infotext?page=density', + async testFn(voiceOver, nvda) { + if (nvda) { + /* We don't have a focusable element, so we are initially on the browser (i) button */ + await nvda.press('Shift+Tab'); // Jump into the website -> infotext "Functional" + await nvda?.clearSpokenPhraseLog(); + await nvda?.next(); // Reading all infotext together + } else if (voiceOver) { + await voiceOver?.previous(); // Infotext "Functional" + await voiceOver?.next(); // Infotext "(Default) Regular" + } + } + }); +}); diff --git a/showcases/screen-reader/tests/input.spec.ts b/showcases/screen-reader/tests/input.spec.ts index e3a0311cc47..0c29cbccfd7 100644 --- a/showcases/screen-reader/tests/input.spec.ts +++ b/showcases/screen-reader/tests/input.spec.ts @@ -1,11 +1,12 @@ import { NVDAKeyCodeCommands } from '@guidepup/guidepup'; -import { getTest, testDefault } from '../default'; +import { generateSnapshot, getTest, testDefault } from '../default'; const test = getTest(); test.describe('DBInput', () => { testDefault({ test, - title: 'should have message and label (next())', + title: 'next()', + description: 'should have message and label (next())', url: './#/03/input?page=variant%20helper%20message', async testFn(voiceOver, nvda) { if (nvda) { @@ -21,10 +22,10 @@ test.describe('DBInput', () => { await voiceOver?.next(); } }); - // We don't test default "next" here because we will be locked inside the textarea testDefault({ test, - title: 'should have message and label (tab)', + title: 'tab', + description: 'should have message and label (tab)', url: './#/03/input?page=variant%20helper%20message', async testFn(voiceOver, nvda) { if (voiceOver) { @@ -38,4 +39,41 @@ test.describe('DBInput', () => { await nvda?.press('Tab'); } }); + testDefault({ + test, + title: 'required', + description: 'should inform user for changes', + url: './#/03/input?page=requirement', + async testFn(voiceOver, nvda) { + if (voiceOver) { + /* Goto desired input */ + await voiceOver?.next(); + await voiceOver?.next(); + await voiceOver?.clearSpokenPhraseLog(); + await voiceOver?.next(); + await voiceOver?.type('Test'); + await voiceOver?.press('Command+A'); + await voiceOver?.press('Delete'); + await voiceOver?.type('Test'); + } else { + await nvda?.press('Tab'); + await nvda?.type('Test'); + await nvda?.press('Control+A'); + await nvda?.press('Delete'); + await nvda?.type('Test'); + } + }, + async postTestFn(voiceOver, nvda, retry) { + if (nvda) { + await generateSnapshot(nvda, retry); + } else if (voiceOver) { + /* + * There is a timing issue for macOS for typing in input we clean the result + */ + await generateSnapshot(nvda, retry, (phraseLog) => + phraseLog.map((log) => log.replace('t. ', '')) + ); + } + } + }); }); diff --git a/showcases/screen-reader/tests/link.spec.ts b/showcases/screen-reader/tests/link.spec.ts new file mode 100644 index 00000000000..cdaa4cf8857 --- /dev/null +++ b/showcases/screen-reader/tests/link.spec.ts @@ -0,0 +1,18 @@ +import { getTest, testDefault } from '../default'; + +const test = getTest(); + +test.describe('DBLink', () => { + testDefault({ + test, + title: 'default', + description: + 'should not mention icon, should have link and dimmed link (next())', + url: './#/02/link?page=interaction-states', + async testFn(voiceOver, nvda) { + const screenReader = voiceOver ?? nvda; + await screenReader?.previous(); // Link "Enabled (Default)/Hover/Pressed" + await screenReader?.next(); // Link dimmed "Disabled" + } + }); +}); diff --git a/showcases/screen-reader/tests/notification.spec.ts b/showcases/screen-reader/tests/notification.spec.ts new file mode 100644 index 00000000000..57d21d7a74b --- /dev/null +++ b/showcases/screen-reader/tests/notification.spec.ts @@ -0,0 +1,26 @@ +import { getTest, testDefault } from '../default'; + +const test = getTest(); + +test.describe('DBNotification', () => { + testDefault({ + test, + title: 'default', + description: + 'should have texts inline or as data-label attributes (next())', + url: './#/06/notification?page=density', + async testFn(voiceOver, nvda) { + if (nvda) { + // Skip functional notification + await nvda?.previous(); // Headline "Headline" + await nvda?.next(); // Text "functional" + await nvda?.next(); // Button "Close" + } else if (voiceOver) { + await voiceOver?.next(); // Headline "Headline" + await voiceOver?.next(); // Text "functional" + await voiceOver?.next(); // Button "Close" + await voiceOver?.next(); // Article end + } + } + }); +}); diff --git a/showcases/screen-reader/tests/popover.spec.ts b/showcases/screen-reader/tests/popover.spec.ts new file mode 100644 index 00000000000..d50726e80ec --- /dev/null +++ b/showcases/screen-reader/tests/popover.spec.ts @@ -0,0 +1,33 @@ +import { getTest, testDefault } from '../default'; + +const test = getTest(); +test.describe('DBPopover', () => { + testDefault({ + test, + title: 'opened', + description: 'should open the popover', + url: './#/01/popover?page=density', + async testFn(voiceOver, nvda) { + if (nvda) { + await nvda?.act(); // Opening first popover + await nvda?.press('Tab'); // Tab to button inside popover + await nvda?.next(); // Navigating to default button + await nvda?.clearSpokenPhraseLog(); + await nvda?.act(); // Read button + opening second popover -> should jump to article + await nvda?.next(); // Navigating to first item of list within popover + await nvda?.next(); // Navigating to section item of list within popover + await nvda?.next(); // Navigating to button within popover + await nvda?.next(); // Navigating to next button + } else if (voiceOver) { + await voiceOver?.next(); // Opening first popover and navigating to the included "article" + await voiceOver?.next(); // Navigating to list within popover + await voiceOver?.next(); // Navigating to first item of list within popover + await voiceOver?.next(); // Navigating to section item of list within popover + await voiceOver?.next(); // Navigating to end of list within popover + await voiceOver?.next(); // Navigating to button within popover + await voiceOver?.next(); // Navigating to end of article + await voiceOver?.next(); // Navigating to next button and open next popover + } + } + }); +}); diff --git a/showcases/screen-reader/tests/radio.spec.ts b/showcases/screen-reader/tests/radio.spec.ts index 4b60359eac1..76c3661d740 100644 --- a/showcases/screen-reader/tests/radio.spec.ts +++ b/showcases/screen-reader/tests/radio.spec.ts @@ -4,7 +4,8 @@ const test = getTest(); test.describe('DBRadio', () => { testDefault({ test, - title: 'should label duplicated (next())', + title: 'next()', + description: 'should label duplicated (next())', url: './#/03/radio?page=density', async testFn(voiceOver, nvda) { if (nvda) { @@ -27,7 +28,8 @@ test.describe('DBRadio', () => { }); testDefault({ test, - title: 'should label duplicated (arrows)', + title: 'arrows', + description: 'should label duplicated (arrows)', url: './#/03/radio?page=density', async testFn(voiceOver, nvda) { if (voiceOver) { diff --git a/showcases/screen-reader/translations.ts b/showcases/screen-reader/translations.ts new file mode 100644 index 00000000000..97b264d6299 --- /dev/null +++ b/showcases/screen-reader/translations.ts @@ -0,0 +1,20 @@ +export const translations: Record = { + star: ['Stern'], + button: ['Schalter'], + edit: ['Eingabefeld'], + 'radio button': ['Auswahlschalter'], + blank: ['Leer'], + checked: ['aktiviert'], + ' of ': [' von '], + clickable: ['anklickbar'], + 'has auto complete': ['mit Auto Vervollständigung'], + required: ['erforderlich'], + 'Please fill out this field..': ['Fülle dieses Feld aus..'], + unselected: ['nicht ausgewählt'], + selected: ['ausgewählt'], + '': ['. Nummernblock eingeschaltet'], + unknown: ['Unbekannt'], + dialog: ['Dialogfeld'], + document: ['Dokument'], + unavailable: ['nicht verfügbar'] +}; diff --git a/showcases/shared/card.json b/showcases/shared/card.json index 0f51390d7b3..0c6c78d3ac6 100644 --- a/showcases/shared/card.json +++ b/showcases/shared/card.json @@ -49,15 +49,21 @@ } }, { - "name": "No Spacing", + "name": "Medium", "props": { - "spacing": "none" + "spacing": "medium" } }, { - "name": "Medium", + "name": "Large", "props": { - "spacing": "medium" + "spacing": "large" + } + }, + { + "name": "None", + "props": { + "spacing": "none" } } ] diff --git a/showcases/shared/divider.json b/showcases/shared/divider.json index b431a5ade21..3de1f8a0819 100644 --- a/showcases/shared/divider.json +++ b/showcases/shared/divider.json @@ -6,19 +6,28 @@ "name": "Functional", "style": { "width": "200px" }, "content": "", - "className": "db-density-functional" + "className": "db-density-functional", + "props": { + "width": "full" + } }, { "name": "(Default) Regular", "style": { "width": "200px" }, "content": "", - "className": "db-density-regular" + "className": "db-density-regular", + "props": { + "width": "full" + } }, { "name": "Expressive", "style": { "width": "200px" }, "content": "", - "className": "db-density-expressive" + "className": "db-density-expressive", + "props": { + "width": "full" + } } ] }, @@ -28,14 +37,18 @@ { "name": "(Default) Adaptive - Horizontal", "style": { "width": "200px" }, - "content": "" + "content": "", + "props": { + "width": "full" + } }, { "name": "Adaptive - Vertical", "style": { "height": "100px" }, "content": "", "props": { - "variant": "vertical" + "variant": "vertical", + "width": "full" } } ] @@ -46,14 +59,18 @@ { "name": "(Default) Weak", "style": { "width": "200px" }, - "content": "" + "content": "", + "props": { + "width": "full" + } }, { "name": "Strong", "style": { "width": "200px" }, "content": "", "props": { - "emphasis": "strong" + "emphasis": "strong", + "width": "full" } } ] diff --git a/showcases/shared/drawer.json b/showcases/shared/drawer.json index 76e6e51fb9a..6debb8b1bad 100644 --- a/showcases/shared/drawer.json +++ b/showcases/shared/drawer.json @@ -95,7 +95,7 @@ } }, { - "name": "No spacing", + "name": "None", "props": { "spacing": "none", "open": "open", diff --git a/showcases/shared/input.json b/showcases/shared/input.json index ca824fc8a8c..68563b3daaa 100644 --- a/showcases/shared/input.json +++ b/showcases/shared/input.json @@ -291,6 +291,13 @@ "label": "Label", "dataList": true } + }, + { + "name": "File", + "props": { + "label": "Label", + "type": "file" + } } ] }, @@ -399,6 +406,14 @@ "variant": "floating", "dataList": true } + }, + { + "name": "File", + "props": { + "label": "Label", + "type": "file", + "variant": "floating" + } } ] } diff --git a/showcases/shared/navigation-item.json b/showcases/shared/navigation-item.json index 2a0c7561851..1535a5f31d4 100644 --- a/showcases/shared/navigation-item.json +++ b/showcases/shared/navigation-item.json @@ -4,15 +4,45 @@ "examples": [ { "name": "Functional", - "className": "db-density-functional" + "className": "db-density-functional", + "children": [ + { + "name": "a", + "native": true, + "props": { + "href": "#" + }, + "content": "Functional" + } + ] }, { "name": "(Default) Regular", - "className": "db-density-regular" + "className": "db-density-regular", + "children": [ + { + "name": "a", + "native": true, + "props": { + "href": "#" + }, + "content": "(Default) Regular" + } + ] }, { "name": "Expressive", - "className": "db-density-expressive" + "className": "db-density-expressive", + "children": [ + { + "name": "a", + "native": true, + "props": { + "href": "#" + }, + "content": "Expressive" + } + ] } ] }, @@ -20,19 +50,49 @@ "name": "Interaction-States", "examples": [ { - "name": "Enabled (Default)/Hover/Pressed" + "name": "Enabled (Default)/Hover/Pressed", + "children": [ + { + "name": "a", + "native": true, + "props": { + "href": "#" + }, + "content": "Enabled (Default)/Hover/Pressed" + } + ] }, { "name": "Active", "props": { "active": true - } + }, + "children": [ + { + "name": "a", + "native": true, + "props": { + "href": "#" + }, + "content": "Active" + } + ] }, { "name": "Disabled", "props": { "disabled": true - } + }, + "children": [ + { + "name": "a", + "native": true, + "props": { + "href": "#" + }, + "content": "Disabled" + } + ] } ] }, @@ -43,26 +103,66 @@ "name": "(Default) Text", "props": { "areaPopup": false - } + }, + "children": [ + { + "name": "a", + "native": true, + "props": { + "href": "#" + }, + "content": "(Default) Text" + } + ] }, { "name": "Text - Icon (Leading)", "props": { "icon": "user" - } + }, + "children": [ + { + "name": "a", + "native": true, + "props": { + "href": "#" + }, + "content": "Text - Icon (Leading)" + } + ] }, { "name": "Text - Icons (Leading, Chevron)", "props": { "icon": "user", "areaPopup": true - } + }, + "children": [ + { + "name": "a", + "native": true, + "props": { + "href": "#" + }, + "content": "Text - Icons (Leading, Chevron)" + } + ] }, { "name": "Text - Icon (Chevron)", "props": { "areaPopup": true - } + }, + "children": [ + { + "name": "a", + "native": true, + "props": { + "href": "#" + }, + "content": "Text - Icon (Chevron)" + } + ] } ] }, @@ -71,14 +171,34 @@ "examples": [ { "name": "(Default) Auto", - "style": { "width": "400px" } + "style": { "width": "400px" }, + "children": [ + { + "name": "a", + "native": true, + "props": { + "href": "#" + }, + "content": "(Default) Auto" + } + ] }, { "name": "Full", "style": { "width": "400px" }, "props": { "width": "full" - } + }, + "children": [ + { + "name": "a", + "native": true, + "props": { + "href": "#" + }, + "content": "Full" + } + ] } ] } diff --git a/showcases/shared/navigation.json b/showcases/shared/navigation.json index 59601f52b94..5623ca1bef1 100644 --- a/showcases/shared/navigation.json +++ b/showcases/shared/navigation.json @@ -19,11 +19,20 @@ "children": [ { "name": "navigation-item", - "content": "Sub-Sub-Navi-Item 1", "slot": "sub-navigation", "props": { "active": true - } + }, + "children": [ + { + "name": "a", + "native": true, + "content": "Sub-Sub-Navi-Item 1", + "props": { + "href": "#" + } + } + ] } ] } @@ -31,7 +40,16 @@ }, { "name": "navigation-item", - "content": "Navi-Item 2" + "children": [ + { + "name": "a", + "native": true, + "content": "Navi-Item 2", + "props": { + "href": "#" + } + } + ] } ], "examples": [ diff --git a/showcases/shared/popover.json b/showcases/shared/popover.json index f4fc568f1e4..5604e317bf0 100644 --- a/showcases/shared/popover.json +++ b/showcases/shared/popover.json @@ -62,6 +62,13 @@ "id": "popover-05" } }, + { + "name": "Large", + "props": { + "spacing": "large", + "id": "popover-055" + } + }, { "name": "None", "props": { diff --git a/showcases/shared/section.json b/showcases/shared/section.json index 37ee5d9f068..9efe613cdbd 100644 --- a/showcases/shared/section.json +++ b/showcases/shared/section.json @@ -46,7 +46,10 @@ "name": "Spacing", "examples": [ { - "name": "(Default) Medium" + "name": "(Default) Medium", + "props": { + "spacing": "medium" + } }, { "name": "Large", @@ -59,6 +62,12 @@ "props": { "spacing": "small" } + }, + { + "name": "None", + "props": { + "spacing": "none" + } } ] } diff --git a/showcases/vanilla-showcase/package.json b/showcases/vanilla-showcase/package.json index 71ed04ff391..c3702cf427f 100644 --- a/showcases/vanilla-showcase/package.json +++ b/showcases/vanilla-showcase/package.json @@ -20,6 +20,6 @@ "devDependencies": { "cpr": "3.0.1", "npm-run-all": "4.1.5", - "vite": "^5.4.0" + "vite": "^5.4.2" } } diff --git a/showcases/vue-showcase/package.json b/showcases/vue-showcase/package.json index 410caf161be..ad7bf2dd3b2 100644 --- a/showcases/vue-showcase/package.json +++ b/showcases/vue-showcase/package.json @@ -13,14 +13,14 @@ }, "dependencies": { "sa11y": "3.2.2", - "vue": "^3.4.37", + "vue": "^3.4.38", "vue-router": "4.4.3" }, "devDependencies": { "@vitejs/plugin-vue": "^5.1.2", "cross-env": "^7.0.3", "typescript": "^5.4.5", - "vite": "^5.4.0", + "vite": "^5.4.2", "vue-tsc": "^2.0.29" } } diff --git a/showcases/vue-showcase/src/components/brand/Brand.vue b/showcases/vue-showcase/src/components/brand/Brand.vue index 39a50392e73..42d3583e460 100644 --- a/showcases/vue-showcase/src/components/brand/Brand.vue +++ b/showcases/vue-showcase/src/components/brand/Brand.vue @@ -14,7 +14,7 @@ import imageUrl from "/assets/images/placeholder.jpg"; logo {{ exampleName }} diff --git a/showcases/vue-showcase/src/components/divider/Divider.vue b/showcases/vue-showcase/src/components/divider/Divider.vue index 86d7b4cb174..5b435a30ad2 100644 --- a/showcases/vue-showcase/src/components/divider/Divider.vue +++ b/showcases/vue-showcase/src/components/divider/Divider.vue @@ -15,6 +15,7 @@ import { DBDivider, DBInfotext } from "../../../../../output/vue/src"; diff --git a/showcases/vue-showcase/src/components/notification/Notification.vue b/showcases/vue-showcase/src/components/notification/Notification.vue index 525d541dd17..6c2399804c9 100644 --- a/showcases/vue-showcase/src/components/notification/Notification.vue +++ b/showcases/vue-showcase/src/components/notification/Notification.vue @@ -33,7 +33,7 @@ const log = (exampleName: string) => { {{ exampleName }}