diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 65fd37f44..3c268ee47 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -6,9 +6,36 @@ name: Run Tests on: [push, pull_request] jobs: + call_run_tests-react-18: + uses: yext/slapshot-reusable-workflows/.github/workflows/run_tests.yml@v1 + with: + node_matrix: '["16.x", "18.x"]' + secrets: + MAPBOX_API_KEY: ${{ secrets.MAPBOX_API_KEY }} + call_run_tests-react-17: uses: yext/slapshot-reusable-workflows/.github/workflows/run_tests.yml@v1 with: + # We have to install these swc libraries manually because + # the post install script doesn't seem to run properly + # after we install specific versions of packages. + # More info at https://github.com/swc-project/swc/issues/5616#issuecomment-1651214641 + build_script: | + npm i \ + react@^17.0.2 \ + react-dom@^17.0.2 \ + @testing-library/react@^12.1.3 \ + @testing-library/react-hooks@^8.0.0 + npm install --save-optional \ + "@swc/core-linux-arm-gnueabihf" \ + "@swc/core-linux-arm64-gnu" \ + "@swc/core-linux-arm64-musl" \ + "@swc/core-linux-x64-gnu" \ + "@swc/core-linux-x64-musl" \ + "@swc/core-win32-arm64-msvc" \ + "@swc/core-win32-ia32-msvc" \ + "@swc/core-win32-x64-msvc" + npm run build node_matrix: '["16.x", "18.x"]' secrets: MAPBOX_API_KEY: ${{ secrets.MAPBOX_API_KEY }} @@ -17,7 +44,20 @@ jobs: uses: yext/slapshot-reusable-workflows/.github/workflows/run_tests.yml@v1 with: build_script: | - npm i -D react@16.14 react-dom@16.14 + npm i \ + react@^16.14 \ + react-dom@^16.14 \ + @testing-library/react@^12.1.3 \ + @testing-library/react-hooks@^8.0.0 + npm install --save-optional \ + "@swc/core-linux-arm-gnueabihf" \ + "@swc/core-linux-arm64-gnu" \ + "@swc/core-linux-arm64-musl" \ + "@swc/core-linux-x64-gnu" \ + "@swc/core-linux-x64-musl" \ + "@swc/core-win32-arm64-msvc" \ + "@swc/core-win32-ia32-msvc" \ + "@swc/core-win32-x64-msvc" npm run build node_matrix: '["16.x", "18.x"]' secrets: diff --git a/.storybook/main.ts b/.storybook/main.ts index 57050f3dd..afd57a7db 100644 --- a/.storybook/main.ts +++ b/.storybook/main.ts @@ -1,4 +1,5 @@ import type { StorybookConfig } from '@storybook/react-webpack5'; +import React from 'react'; const config: StorybookConfig = { stories: [ @@ -39,7 +40,8 @@ const config: StorybookConfig = { './SearchCore': require.resolve('../tests/__fixtures__/core/SearchCore.ts'), '../utils/location-operations': require.resolve('../tests/__fixtures__/utils/location-operations.ts') }, - } + }, + ...(!React.version.startsWith('18') && { externals: ["react-dom/client"] }) }), env: (config) => { diff --git a/.storybook/snapshots/__snapshots__/mapboxmap--custom-pin.png b/.storybook/snapshots/__snapshots__/mapboxmap--custom-pin.png index c47525c72..fdddcd74e 100644 Binary files a/.storybook/snapshots/__snapshots__/mapboxmap--custom-pin.png and b/.storybook/snapshots/__snapshots__/mapboxmap--custom-pin.png differ diff --git a/.storybook/snapshots/__snapshots__/mapboxmap--custom-render-pin.png b/.storybook/snapshots/__snapshots__/mapboxmap--custom-render-pin.png new file mode 100644 index 000000000..fdddcd74e Binary files /dev/null and b/.storybook/snapshots/__snapshots__/mapboxmap--custom-render-pin.png differ diff --git a/.storybook/snapshots/__snapshots__/mapboxmap--multiple-pins.png b/.storybook/snapshots/__snapshots__/mapboxmap--multiple-pins.png index ab1674080..ede3191c0 100644 Binary files a/.storybook/snapshots/__snapshots__/mapboxmap--multiple-pins.png and b/.storybook/snapshots/__snapshots__/mapboxmap--multiple-pins.png differ diff --git a/.storybook/snapshots/__snapshots__/mapboxmap--primary.png b/.storybook/snapshots/__snapshots__/mapboxmap--primary.png index c56f83409..84cb61c4e 100644 Binary files a/.storybook/snapshots/__snapshots__/mapboxmap--primary.png and b/.storybook/snapshots/__snapshots__/mapboxmap--primary.png differ diff --git a/THIRD-PARTY-NOTICES b/THIRD-PARTY-NOTICES index c74c079d1..4ea74aaa4 100644 --- a/THIRD-PARTY-NOTICES +++ b/THIRD-PARTY-NOTICES @@ -328,36 +328,6 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------- -The following NPM packages may be included in this product: - - - @reach/auto-id@0.18.0 - - @reach/utils@0.18.0 - -These packages each contain the following license and notice below: - -The MIT License (MIT) - -Copyright (c) 2018-2022, React Training LLC - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ------------ - The following NPM package may be included in this product: - @react-aria/ssr@3.8.0 @@ -2777,7 +2747,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI The following NPM package may be included in this product: - - nanoid@3.3.6 + - nanoid@3.3.7 This package contains the following license and notice below: @@ -3195,7 +3165,7 @@ OTHER DEALINGS IN THE SOFTWARE. The following NPM package may be included in this product: - - postcss@8.4.30 + - postcss@8.4.35 This package contains the following license and notice below: @@ -3357,40 +3327,39 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI The following NPM package may be included in this product: - - react-collapsed@3.6.0 + - react-collapsed@4.1.2 This package contains the following license and notice below: -MIT License +The MIT License (MIT) -Copyright (c) 2019-2020 Rogin Farrer +Copyright (c) 2019-2023, Rogin Farrer -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------- The following NPM packages may be included in this product: - - react-dom@17.0.2 + - react-dom@18.2.0 - react-is@16.13.1 - - react@17.0.2 - - scheduler@0.20.2 + - react@18.2.0 + - scheduler@0.23.0 - use-sync-external-store@1.2.0 These packages each contain the following license and notice below: diff --git a/docs/search-ui-react.mapboxmap.md b/docs/search-ui-react.mapboxmap.md index a465ba1e2..17d5810fa 100644 --- a/docs/search-ui-react.mapboxmap.md +++ b/docs/search-ui-react.mapboxmap.md @@ -9,14 +9,14 @@ A component that renders a map with markers to show result locations using Mapbo **Signature:** ```typescript -declare function MapboxMap({ mapboxAccessToken, mapboxOptions, PinComponent, getCoordinate, onDrag }: MapboxMapProps): JSX.Element; +declare function MapboxMap({ mapboxAccessToken, mapboxOptions, PinComponent, renderPin, getCoordinate, onDrag }: MapboxMapProps): JSX.Element; ``` ## Parameters | Parameter | Type | Description | | --- | --- | --- | -| { mapboxAccessToken, mapboxOptions, PinComponent, getCoordinate, onDrag } | [MapboxMapProps](./search-ui-react.mapboxmapprops.md)<T> | | +| { mapboxAccessToken, mapboxOptions, PinComponent, renderPin, getCoordinate, onDrag } | [MapboxMapProps](./search-ui-react.mapboxmapprops.md)<T> | | **Returns:** diff --git a/docs/search-ui-react.mapboxmapprops.md b/docs/search-ui-react.mapboxmapprops.md index 186ce9d6b..c347b8cc4 100644 --- a/docs/search-ui-react.mapboxmapprops.md +++ b/docs/search-ui-react.mapboxmapprops.md @@ -20,5 +20,6 @@ interface MapboxMapProps | [mapboxAccessToken](./search-ui-react.mapboxmapprops.mapboxaccesstoken.md) | | string | Mapbox access token. | | [mapboxOptions?](./search-ui-react.mapboxmapprops.mapboxoptions.md) | | Omit<mapboxgl.MapboxOptions, 'container'> | _(Optional)_ Interface for map customization derived from Mapbox GL's Map options. | | [onDrag?](./search-ui-react.mapboxmapprops.ondrag.md) | | [OnDragHandler](./search-ui-react.ondraghandler.md) | _(Optional)_ A function which is called when user drag the map. | -| [PinComponent?](./search-ui-react.mapboxmapprops.pincomponent.md) | | [PinComponent](./search-ui-react.pincomponent.md)<T> | _(Optional)_ Custom Pin component to render for markers on the map. By default, the built-in marker image from Mapbox GL is used. | +| [PinComponent?](./search-ui-react.mapboxmapprops.pincomponent.md) | | [PinComponent](./search-ui-react.pincomponent.md)<T> | _(Optional)_ Custom Pin component to render for markers on the map. By default, the built-in marker image from Mapbox GL is used. This prop should not be used with [renderPin](./search-ui-react.mapboxmapprops.renderpin.md). If both are provided, only PinComponent will be used. | +| [renderPin?](./search-ui-react.mapboxmapprops.renderpin.md) | | (props: [PinComponentProps](./search-ui-react.pincomponentprops.md)<T> & { container: HTMLElement; }) => void | _(Optional)_ Render function for a custom marker on the map. This function takes in an HTML element and is responible for rendering the pin into that element, which will be used as the marker. By default, the built-in marker image from Mapbox GL is used. This prop should not be used with [PinComponent](./search-ui-react.mapboxmapprops.pincomponent.md). If both are provided, only PinComponent will be used. | diff --git a/docs/search-ui-react.mapboxmapprops.pincomponent.md b/docs/search-ui-react.mapboxmapprops.pincomponent.md index e6022b268..b1c127f01 100644 --- a/docs/search-ui-react.mapboxmapprops.pincomponent.md +++ b/docs/search-ui-react.mapboxmapprops.pincomponent.md @@ -4,7 +4,7 @@ ## MapboxMapProps.PinComponent property -Custom Pin component to render for markers on the map. By default, the built-in marker image from Mapbox GL is used. +Custom Pin component to render for markers on the map. By default, the built-in marker image from Mapbox GL is used. This prop should not be used with [renderPin](./search-ui-react.mapboxmapprops.renderpin.md). If both are provided, only PinComponent will be used. **Signature:** diff --git a/docs/search-ui-react.mapboxmapprops.renderpin.md b/docs/search-ui-react.mapboxmapprops.renderpin.md new file mode 100644 index 000000000..f32e915bd --- /dev/null +++ b/docs/search-ui-react.mapboxmapprops.renderpin.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [@yext/search-ui-react](./search-ui-react.md) > [MapboxMapProps](./search-ui-react.mapboxmapprops.md) > [renderPin](./search-ui-react.mapboxmapprops.renderpin.md) + +## MapboxMapProps.renderPin property + +Render function for a custom marker on the map. This function takes in an HTML element and is responible for rendering the pin into that element, which will be used as the marker. By default, the built-in marker image from Mapbox GL is used. This prop should not be used with [PinComponent](./search-ui-react.mapboxmapprops.pincomponent.md). If both are provided, only PinComponent will be used. + +**Signature:** + +```typescript +renderPin?: (props: PinComponentProps & { + container: HTMLElement; + }) => void; +``` diff --git a/docs/search-ui-react.md b/docs/search-ui-react.md index e0acb9338..a96ec274f 100644 --- a/docs/search-ui-react.md +++ b/docs/search-ui-react.md @@ -26,7 +26,7 @@ | [HierarchicalFacets({ searchOnChange, collapsible, defaultExpanded, includedFieldIds, customCssClasses, delimiter, showMoreLimit })](./search-ui-react.hierarchicalfacets.md) | A component that displays hierarchical facets, in a tree level structure, applicable to the current vertical search. | | [isCtaData(data)](./search-ui-react.isctadata.md) | Type guard for CtaData. | | [LocationBias({ geolocationOptions, customCssClasses })](./search-ui-react.locationbias.md) | A React Component which displays and collects location information in order to bias searches. | -| [MapboxMap({ mapboxAccessToken, mapboxOptions, PinComponent, getCoordinate, onDrag })](./search-ui-react.mapboxmap.md) | A component that renders a map with markers to show result locations using Mapbox GL. | +| [MapboxMap({ mapboxAccessToken, mapboxOptions, PinComponent, renderPin, getCoordinate, onDrag })](./search-ui-react.mapboxmap.md) | A component that renders a map with markers to show result locations using Mapbox GL. | | [NumericalFacet(props)](./search-ui-react.numericalfacet.md) | A component that displays a single numerical facet. Use this to override the default rendering. | | [NumericalFacets({ searchOnChange, includedFieldIds, getFilterDisplayName, inputPrefix, customCssClasses, ...filterGroupProps })](./search-ui-react.numericalfacets.md) | A component that displays numerical facets applicable to the current vertical search. | | [Pagination(props)](./search-ui-react.pagination.md) | Renders a component that divide a series of vertical results into chunks across multiple pages and enable user to navigate between those pages. | @@ -142,6 +142,7 @@ | [OnDragHandler](./search-ui-react.ondraghandler.md) | A function which is called when user drag the map. | | [onSearchFunc](./search-ui-react.onsearchfunc.md) | The interface of a function which is called on a search. | | [PinComponent](./search-ui-react.pincomponent.md) | A functional component that can be used to render a custom marker on the map. | +| [PinComponentProps](./search-ui-react.pincomponentprops.md) | Props for rendering a custom marker on the map. | | [RenderEntityPreviews](./search-ui-react.renderentitypreviews.md) | The type of a functional React component which renders entity previews using a map of vertical key to the corresponding VerticalResults data. | | [SectionComponent](./search-ui-react.sectioncomponent.md) | A component that can be used to render a section template for vertical results. | | [StaticFilterOptionConfig](./search-ui-react.staticfilteroptionconfig.md) | The configuration data for a field value static filter option. | diff --git a/docs/search-ui-react.pincomponent.md b/docs/search-ui-react.pincomponent.md index 45fa47893..ee49a76a3 100644 --- a/docs/search-ui-react.pincomponent.md +++ b/docs/search-ui-react.pincomponent.md @@ -9,9 +9,7 @@ A functional component that can be used to render a custom marker on the map. **Signature:** ```typescript -type PinComponent = (props: { - index: number; - mapbox: mapboxgl.Map; - result: Result; -}) => JSX.Element; +type PinComponent = (props: PinComponentProps) => JSX.Element; ``` +**References:** [PinComponentProps](./search-ui-react.pincomponentprops.md) + diff --git a/docs/search-ui-react.pincomponentprops.md b/docs/search-ui-react.pincomponentprops.md new file mode 100644 index 000000000..bf8ca9c2a --- /dev/null +++ b/docs/search-ui-react.pincomponentprops.md @@ -0,0 +1,17 @@ + + +[Home](./index.md) > [@yext/search-ui-react](./search-ui-react.md) > [PinComponentProps](./search-ui-react.pincomponentprops.md) + +## PinComponentProps type + +Props for rendering a custom marker on the map. + +**Signature:** + +```typescript +type PinComponentProps = { + index: number; + mapbox: mapboxgl.Map; + result: Result; +}; +``` diff --git a/etc/search-ui-react.api.md b/etc/search-ui-react.api.md index 76865d2a1..188d7529e 100644 --- a/etc/search-ui-react.api.md +++ b/etc/search-ui-react.api.md @@ -418,7 +418,7 @@ export interface LocationBiasProps { } // @public -export function MapboxMap({ mapboxAccessToken, mapboxOptions, PinComponent, getCoordinate, onDrag }: MapboxMapProps): JSX.Element; +export function MapboxMap({ mapboxAccessToken, mapboxOptions, PinComponent, renderPin, getCoordinate, onDrag }: MapboxMapProps): JSX.Element; // @public export interface MapboxMapProps { @@ -427,6 +427,9 @@ export interface MapboxMapProps { mapboxOptions?: Omit; onDrag?: OnDragHandler; PinComponent?: PinComponent; + renderPin?: (props: PinComponentProps & { + container: HTMLElement; + }) => void; } // @public @@ -511,11 +514,14 @@ export interface PaginationProps { } // @public -export type PinComponent = (props: { +export type PinComponent = (props: PinComponentProps) => JSX.Element; + +// @public +export type PinComponentProps = { index: number; mapbox: mapboxgl_2.Map; result: Result; -}) => JSX.Element; +}; // @public export interface RangeInputCssClasses { diff --git a/package-lock.json b/package-lock.json index 18b9af387..ed8d99a4b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,6 @@ "version": "1.4.1", "license": "BSD-3-Clause", "dependencies": { - "@reach/auto-id": "^0.18.0", "@restart/ui": "^1.0.1", "@tailwindcss/forms": "^0.5.0", "@yext/analytics": "^0.6.5", @@ -18,7 +17,7 @@ "lodash-es": "^4.17.21", "mapbox-gl": "^2.9.2", "prop-types": "^15.8.1", - "react-collapsed": "3.6.0", + "react-collapsed": "^4.1.2", "recent-searches": "^1.0.5", "tailwind-merge": "^1.3.0", "use-isomorphic-layout-effect": "^1.1.2" @@ -43,9 +42,8 @@ "@storybook/test-runner": "^0.15.2", "@storybook/testing-library": "^0.2.1", "@testing-library/jest-dom": "^5.16.1", - "@testing-library/react": "^12.1.3", - "@testing-library/react-hooks": "^8.0.0", - "@testing-library/user-event": "^13.5.0", + "@testing-library/react": "^14.2.1", + "@testing-library/user-event": "^14.5.2", "@types/classnames": "^2.3.1", "@types/jest": "^29.1.0", "@types/jest-image-snapshot": "^6.2.3", @@ -67,18 +65,19 @@ "jest-environment-jsdom": "^29.1.1", "jest-image-snapshot": "^6.2.0", "msw": "^0.36.8", - "react": "^17.0.2", - "react-dom": "^17.0.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", "storybook": "^7.4.5", "tailwindcss": "^3.0.23", "ts-jest": "^29.1.1", "tsup": "^8.0.1", - "typescript": "^5.2.2" + "typescript": "^5.2.2", + "util": "^0.12.5" }, "peerDependencies": { "@yext/search-headless-react": "^2.4.0", - "react": "^16.14 || ^17", - "react-dom": "^16.14 || ^17" + "react": "^16.14 || ^17 || ^18", + "react-dom": "^16.14 || ^17 || ^18" } }, "node_modules/@ampproject/remapping": { @@ -2782,40 +2781,6 @@ "react-dom": "^18.2.0" } }, - "node_modules/@etchteam/storybook-addon-status/node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "dev": true, - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@etchteam/storybook-addon-status/node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "dev": true, - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - }, - "peerDependencies": { - "react": "^18.2.0" - } - }, - "node_modules/@etchteam/storybook-addon-status/node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "dev": true, - "dependencies": { - "loose-envify": "^1.1.0" - } - }, "node_modules/@fal-works/esbuild-plugin-global-externals": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz", @@ -2823,31 +2788,31 @@ "dev": true }, "node_modules/@floating-ui/core": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz", - "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", + "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", "dev": true, "dependencies": { - "@floating-ui/utils": "^0.1.3" + "@floating-ui/utils": "^0.2.1" } }, "node_modules/@floating-ui/dom": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", - "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz", + "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==", "dev": true, "dependencies": { - "@floating-ui/core": "^1.4.2", - "@floating-ui/utils": "^0.1.3" + "@floating-ui/core": "^1.0.0", + "@floating-ui/utils": "^0.2.0" } }, "node_modules/@floating-ui/react-dom": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.2.tgz", - "integrity": "sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz", + "integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==", "dev": true, "dependencies": { - "@floating-ui/dom": "^1.5.1" + "@floating-ui/dom": "^1.6.1" }, "peerDependencies": { "react": ">=16.8.0", @@ -2855,9 +2820,9 @@ } }, "node_modules/@floating-ui/utils": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.4.tgz", - "integrity": "sha512-qprfWkn82Iw821mcKofJ5Pk9wgioHicxcQMxx+5zt5GSKoqdWvgG5AxVmpmUUjzTLPVSH5auBrhI93Deayn/DA==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", + "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==", "dev": true }, "node_modules/@hapi/hoek": { @@ -5074,27 +5039,6 @@ "@babel/runtime": "^7.13.10" } }, - "node_modules/@reach/auto-id": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@reach/auto-id/-/auto-id-0.18.0.tgz", - "integrity": "sha512-XwY1IwhM7mkHZFghhjiqjQ6dstbOdpbFLdggeke75u8/8icT8uEHLbovFUgzKjy9qPvYwZIB87rLiR8WdtOXCg==", - "dependencies": { - "@reach/utils": "0.18.0" - }, - "peerDependencies": { - "react": "^16.8.0 || 17.x", - "react-dom": "^16.8.0 || 17.x" - } - }, - "node_modules/@reach/auto-id/node_modules/@reach/utils": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@reach/utils/-/utils-0.18.0.tgz", - "integrity": "sha512-KdVMdpTgDyK8FzdKO9SCpiibuy/kbv3pwgfXshTI6tEcQT1OOwj7BAksnzGC0rPz0UholwC+AgkqEl3EJX3M1A==", - "peerDependencies": { - "react": "^16.8.0 || 17.x", - "react-dom": "^16.8.0 || 17.x" - } - }, "node_modules/@react-aria/ssr": { "version": "3.8.0", "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.8.0.tgz", @@ -5475,28 +5419,53 @@ } } }, - "node_modules/@storybook/addon-actions": { + "node_modules/@storybook/addon-a11y/node_modules/@storybook/components": { "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.4.5.tgz", - "integrity": "sha512-FkjJWmPN/+duLSkRwfa2bwlwjKfY6yCXYn7CRzn3rb64B8f50NB79zAgVLHjkJh9l6T3DIlWtol6vqPHj1aRpw==", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.5.tgz", + "integrity": "sha512-boskkfvMBB8CFYY9+1ofFNyKrdWXTY/ghzt7oK80dz6f2Eseo/WXK3OsCdCq5vWbLRCdbgJ8zXG8pAFi4yBsxA==", "dev": true, "dependencies": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addon-a11y/node_modules/@storybook/manager-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", + "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", + "dev": true, + "dependencies": { + "@storybook/channels": "7.4.5", "@storybook/client-logger": "7.4.5", - "@storybook/components": "7.4.5", "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.4.5", - "@storybook/preview-api": "7.4.5", + "@storybook/router": "7.4.5", "@storybook/theming": "7.4.5", "@storybook/types": "7.4.5", "dequal": "^2.0.2", "lodash": "^4.17.21", - "polished": "^4.2.2", - "prop-types": "^15.7.2", - "react-inspector": "^6.0.0", + "memoizerific": "^1.11.3", + "semver": "^7.3.7", + "store2": "^2.14.2", "telejson": "^7.2.0", - "ts-dedent": "^2.0.0", - "uuid": "^9.0.0" + "ts-dedent": "^2.0.0" }, "funding": { "type": "opencollective", @@ -5505,14 +5474,72 @@ "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addon-a11y/node_modules/@storybook/theming": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", + "dev": true, + "dependencies": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.4.5", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addon-a11y/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@storybook/addon-actions": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.6.15.tgz", + "integrity": "sha512-2Jfvbahe/tmq1iNnNxmcP0JnX0rqCuijjXXai9yMDV3koIMawn6t88MPVrdcso5ch/fxE45522nZqA3SZJbM4g==", + "dev": true, + "dependencies": { + "@storybook/core-events": "7.6.15", + "@storybook/global": "^5.0.0", + "@types/uuid": "^9.0.1", + "dequal": "^2.0.2", + "polished": "^4.2.2", + "uuid": "^9.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/addon-actions/node_modules/@storybook/core-events": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.6.15.tgz", + "integrity": "sha512-i4YnjGecbpGyrFe0340sPhQ9QjZZEBqvMy6kF4XWt6DYLHxZmsTj1HEdvxVl4Ej7V49Vw0Dm8MepJ1d4Y8MKrQ==", + "dev": true, + "dependencies": { + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, "node_modules/@storybook/addon-backgrounds": { @@ -5549,6 +5576,98 @@ } } }, + "node_modules/@storybook/addon-backgrounds/node_modules/@storybook/components": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.5.tgz", + "integrity": "sha512-boskkfvMBB8CFYY9+1ofFNyKrdWXTY/ghzt7oK80dz6f2Eseo/WXK3OsCdCq5vWbLRCdbgJ8zXG8pAFi4yBsxA==", + "dev": true, + "dependencies": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addon-backgrounds/node_modules/@storybook/manager-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", + "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", + "dev": true, + "dependencies": { + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "semver": "^7.3.7", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addon-backgrounds/node_modules/@storybook/theming": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", + "dev": true, + "dependencies": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.4.5", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addon-backgrounds/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@storybook/addon-controls": { "version": "7.4.5", "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.4.5.tgz", @@ -5585,6 +5704,98 @@ } } }, + "node_modules/@storybook/addon-controls/node_modules/@storybook/components": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.5.tgz", + "integrity": "sha512-boskkfvMBB8CFYY9+1ofFNyKrdWXTY/ghzt7oK80dz6f2Eseo/WXK3OsCdCq5vWbLRCdbgJ8zXG8pAFi4yBsxA==", + "dev": true, + "dependencies": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addon-controls/node_modules/@storybook/manager-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", + "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", + "dev": true, + "dependencies": { + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "semver": "^7.3.7", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addon-controls/node_modules/@storybook/theming": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", + "dev": true, + "dependencies": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.4.5", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addon-controls/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@storybook/addon-coverage": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/@storybook/addon-coverage/-/addon-coverage-0.0.9.tgz", @@ -5632,10 +5843,56 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/@storybook/addon-docs/node_modules/@storybook/components": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.5.tgz", + "integrity": "sha512-boskkfvMBB8CFYY9+1ofFNyKrdWXTY/ghzt7oK80dz6f2Eseo/WXK3OsCdCq5vWbLRCdbgJ8zXG8pAFi4yBsxA==", + "dev": true, + "dependencies": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addon-docs/node_modules/@storybook/theming": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", + "dev": true, + "dependencies": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.4.5", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/@storybook/addon-docs/node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -5659,9 +5916,9 @@ } }, "node_modules/@storybook/addon-docs/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "engines": { "node": ">= 10.0.0" @@ -5697,6 +5954,138 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-actions": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.4.5.tgz", + "integrity": "sha512-FkjJWmPN/+duLSkRwfa2bwlwjKfY6yCXYn7CRzn3rb64B8f50NB79zAgVLHjkJh9l6T3DIlWtol6vqPHj1aRpw==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "7.4.5", + "@storybook/components": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/global": "^5.0.0", + "@storybook/manager-api": "7.4.5", + "@storybook/preview-api": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "polished": "^4.2.2", + "prop-types": "^15.7.2", + "react-inspector": "^6.0.0", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0", + "uuid": "^9.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/components": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.5.tgz", + "integrity": "sha512-boskkfvMBB8CFYY9+1ofFNyKrdWXTY/ghzt7oK80dz6f2Eseo/WXK3OsCdCq5vWbLRCdbgJ8zXG8pAFi4yBsxA==", + "dev": true, + "dependencies": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/manager-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", + "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", + "dev": true, + "dependencies": { + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "semver": "^7.3.7", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/theming": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", + "dev": true, + "dependencies": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.4.5", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@storybook/addon-highlight": { "version": "7.4.5", "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.4.5.tgz", @@ -5749,22 +6138,22 @@ } } }, - "node_modules/@storybook/addon-links": { + "node_modules/@storybook/addon-interactions/node_modules/@storybook/components": { "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-7.4.5.tgz", - "integrity": "sha512-eKczq3U5KfPLaxMUzzVQQrGVtzDshUmrSEEuWKf9ZbK3mh5yVuagIBb88edgUX58vZ3TJMvqQzq1+BtUoPHQ6Q==", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.5.tgz", + "integrity": "sha512-boskkfvMBB8CFYY9+1ofFNyKrdWXTY/ghzt7oK80dz6f2Eseo/WXK3OsCdCq5vWbLRCdbgJ8zXG8pAFi4yBsxA==", "dev": true, "dependencies": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", "@storybook/client-logger": "7.4.5", - "@storybook/core-events": "7.4.5", "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.4.5", - "@storybook/preview-api": "7.4.5", - "@storybook/router": "7.4.5", + "@storybook/theming": "7.4.5", "@storybook/types": "7.4.5", - "prop-types": "^15.7.2", - "ts-dedent": "^2.0.0" + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" }, "funding": { "type": "opencollective", @@ -5773,30 +6162,29 @@ "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } } }, - "node_modules/@storybook/addon-measure": { + "node_modules/@storybook/addon-interactions/node_modules/@storybook/manager-api": { "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.4.5.tgz", - "integrity": "sha512-FQGZniTH67nC1YPR4ep0p+isgxwLaNAmIAyCZWXPRTkZssIrnXVwNgi0A2QkHdxZvxj8yXGFTOVXLWEPT9YvFQ==", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", + "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", "dev": true, "dependencies": { + "@storybook/channels": "7.4.5", "@storybook/client-logger": "7.4.5", - "@storybook/components": "7.4.5", "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.4.5", - "@storybook/preview-api": "7.4.5", + "@storybook/router": "7.4.5", + "@storybook/theming": "7.4.5", "@storybook/types": "7.4.5", - "tiny-invariant": "^1.3.1" + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "semver": "^7.3.7", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" }, "funding": { "type": "opencollective", @@ -5805,30 +6193,18 @@ "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } } }, - "node_modules/@storybook/addon-outline": { + "node_modules/@storybook/addon-interactions/node_modules/@storybook/theming": { "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.4.5.tgz", - "integrity": "sha512-eOH9BZzpehUz5FXD98OLnWgzmBFMvEB2kFfw5JiO7IRx7Fan80fx/WDQuMSNDOgLBCTTvsZ4TBMMXZHpw91WAw==", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", "dev": true, "dependencies": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", "@storybook/client-logger": "7.4.5", - "@storybook/components": "7.4.5", - "@storybook/core-events": "7.4.5", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.4.5", - "@storybook/preview-api": "7.4.5", - "@storybook/types": "7.4.5", - "ts-dedent": "^2.0.0" + "memoizerific": "^1.11.3" }, "funding": { "type": "opencollective", @@ -5837,27 +6213,39 @@ "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addon-interactions/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/@storybook/addon-toolbars": { + "node_modules/@storybook/addon-links": { "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.4.5.tgz", - "integrity": "sha512-PZlwUTIdQ18de3zNb+627VSF4UrCGIXDdikyO9O5j2Cd0xfr5uhS6tgQ+3AT0DfUj0UIkKxilwcAt+agpNyicA==", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-7.4.5.tgz", + "integrity": "sha512-eKczq3U5KfPLaxMUzzVQQrGVtzDshUmrSEEuWKf9ZbK3mh5yVuagIBb88edgUX58vZ3TJMvqQzq1+BtUoPHQ6Q==", "dev": true, "dependencies": { "@storybook/client-logger": "7.4.5", - "@storybook/components": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", "@storybook/manager-api": "7.4.5", "@storybook/preview-api": "7.4.5", - "@storybook/theming": "7.4.5" + "@storybook/router": "7.4.5", + "@storybook/types": "7.4.5", + "prop-types": "^15.7.2", + "ts-dedent": "^2.0.0" }, "funding": { "type": "opencollective", @@ -5876,21 +6264,27 @@ } } }, - "node_modules/@storybook/addon-viewport": { + "node_modules/@storybook/addon-links/node_modules/@storybook/manager-api": { "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.4.5.tgz", - "integrity": "sha512-SBLnUMIztVrqJ0fRCsVg9KZ29APLIxqAvTsYHF3twy5KB2naeCFuX3K9LxSH7vbROI6zHEfnPduz/Ykyvu9yUg==", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", + "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", "dev": true, "dependencies": { + "@storybook/channels": "7.4.5", "@storybook/client-logger": "7.4.5", - "@storybook/components": "7.4.5", "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.4.5", - "@storybook/preview-api": "7.4.5", + "@storybook/router": "7.4.5", "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", - "prop-types": "^15.7.2" + "semver": "^7.3.7", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" }, "funding": { "type": "opencollective", @@ -5899,25 +6293,18 @@ "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } } }, - "node_modules/@storybook/addons": { + "node_modules/@storybook/addon-links/node_modules/@storybook/theming": { "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-7.4.5.tgz", - "integrity": "sha512-jmdQf39XhwVi8d0J99qpk51fOAwNhYlCtVctvFWPX4qC1cq1d1pxLmTb5OBV2VHQ11BKwlKLzA7coiOgAQmNRg==", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", "dev": true, "dependencies": { - "@storybook/manager-api": "7.4.5", - "@storybook/preview-api": "7.4.5", - "@storybook/types": "7.4.5" + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.4.5", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" }, "funding": { "type": "opencollective", @@ -5928,14 +6315,35 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/api": { + "node_modules/@storybook/addon-links/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@storybook/addon-measure": { "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-7.4.5.tgz", - "integrity": "sha512-NpdW54D/fG0QOHtzjMDEG9+zKjmdq1GdsfVX2YEA7s9vq9FTKpnhNSifphEmDEKzwIm64euRj7FEz8mUPbh27Q==", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.4.5.tgz", + "integrity": "sha512-FQGZniTH67nC1YPR4ep0p+isgxwLaNAmIAyCZWXPRTkZssIrnXVwNgi0A2QkHdxZvxj8yXGFTOVXLWEPT9YvFQ==", "dev": true, "dependencies": { "@storybook/client-logger": "7.4.5", - "@storybook/manager-api": "7.4.5" + "@storybook/components": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/global": "^5.0.0", + "@storybook/manager-api": "7.4.5", + "@storybook/preview-api": "7.4.5", + "@storybook/types": "7.4.5", + "tiny-invariant": "^1.3.1" }, "funding": { "type": "opencollective", @@ -5954,34 +6362,21 @@ } } }, - "node_modules/@storybook/blocks": { + "node_modules/@storybook/addon-measure/node_modules/@storybook/components": { "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.4.5.tgz", - "integrity": "sha512-FhAIkCT2HrzJcKsC3mL5+uG3GrbS23mYAT1h3iyPjCliZzxfCCI9UCMUXqYx4Z/FmAGJgpsQQXiBFZuoTHO9aQ==", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.5.tgz", + "integrity": "sha512-boskkfvMBB8CFYY9+1ofFNyKrdWXTY/ghzt7oK80dz6f2Eseo/WXK3OsCdCq5vWbLRCdbgJ8zXG8pAFi4yBsxA==", "dev": true, "dependencies": { - "@storybook/channels": "7.4.5", + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", "@storybook/client-logger": "7.4.5", - "@storybook/components": "7.4.5", - "@storybook/core-events": "7.4.5", "@storybook/csf": "^0.1.0", - "@storybook/docs-tools": "7.4.5", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.4.5", - "@storybook/preview-api": "7.4.5", "@storybook/theming": "7.4.5", "@storybook/types": "7.4.5", - "@types/lodash": "^4.14.167", - "color-convert": "^2.0.1", - "dequal": "^2.0.2", - "lodash": "^4.17.21", - "markdown-to-jsx": "^7.1.8", "memoizerific": "^1.11.3", - "polished": "^4.2.2", - "react-colorful": "^5.1.2", - "telejson": "^7.2.0", - "tocbot": "^4.20.1", - "ts-dedent": "^2.0.0", + "use-resize-observer": "^9.1.0", "util-deprecate": "^1.0.2" }, "funding": { @@ -5993,137 +6388,86 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/blocks/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==", + "node_modules/@storybook/addon-measure/node_modules/@storybook/manager-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", + "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "semver": "^7.3.7", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" }, - "engines": { - "node": ">=7.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/blocks/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/@storybook/builder-manager": { + "node_modules/@storybook/addon-measure/node_modules/@storybook/theming": { "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.4.5.tgz", - "integrity": "sha512-Jhql8iZgK9cxDmG9NSTejsj5FptHni2TBa5Sea2Uz1NIBQ0OpzNdUfYVX6TN/PEq3QrWXTrAEKPqsL2qGjOrxw==", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", "dev": true, "dependencies": { - "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@storybook/core-common": "7.4.5", - "@storybook/manager": "7.4.5", - "@storybook/node-logger": "7.4.5", - "@types/ejs": "^3.1.1", - "@types/find-cache-dir": "^3.2.1", - "@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10", - "browser-assert": "^1.2.1", - "ejs": "^3.1.8", - "esbuild": "^0.18.0", - "esbuild-plugin-alias": "^0.2.1", - "express": "^4.17.3", - "find-cache-dir": "^3.0.0", - "fs-extra": "^11.1.0", - "process": "^0.11.10", - "util": "^0.12.4" + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.4.5", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/builder-manager/node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" }, - "engines": { - "node": ">=14.14" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/builder-manager/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/@storybook/addon-measure/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { - "universalify": "^2.0.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@storybook/builder-manager/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, "engines": { - "node": ">= 10.0.0" + "node": ">=10" } }, - "node_modules/@storybook/builder-webpack5": { + "node_modules/@storybook/addon-outline": { "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-7.4.5.tgz", - "integrity": "sha512-XSZLZ2kNlZaOJ3i2uZ9vI25cJkmQhmTVHPER+FPKM/yliqsQj7p2P9zYz/Mn0LepUheK1Y+aWWiead1r2DnNMg==", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.4.5.tgz", + "integrity": "sha512-eOH9BZzpehUz5FXD98OLnWgzmBFMvEB2kFfw5JiO7IRx7Fan80fx/WDQuMSNDOgLBCTTvsZ4TBMMXZHpw91WAw==", "dev": true, "dependencies": { - "@babel/core": "^7.22.9", - "@storybook/addons": "7.4.5", - "@storybook/channels": "7.4.5", - "@storybook/client-api": "7.4.5", "@storybook/client-logger": "7.4.5", "@storybook/components": "7.4.5", - "@storybook/core-common": "7.4.5", "@storybook/core-events": "7.4.5", - "@storybook/core-webpack": "7.4.5", "@storybook/global": "^5.0.0", "@storybook/manager-api": "7.4.5", - "@storybook/node-logger": "7.4.5", - "@storybook/preview": "7.4.5", "@storybook/preview-api": "7.4.5", - "@storybook/router": "7.4.5", - "@storybook/store": "7.4.5", - "@storybook/theming": "7.4.5", - "@swc/core": "^1.3.49", - "@types/node": "^16.0.0", - "@types/semver": "^7.3.4", - "babel-loader": "^9.0.0", - "babel-plugin-named-exports-order": "^0.0.2", - "browser-assert": "^1.2.1", - "case-sensitive-paths-webpack-plugin": "^2.4.0", - "constants-browserify": "^1.0.0", - "css-loader": "^6.7.1", - "express": "^4.17.3", - "fork-ts-checker-webpack-plugin": "^8.0.0", - "fs-extra": "^11.1.0", - "html-webpack-plugin": "^5.5.0", - "path-browserify": "^1.0.1", - "process": "^0.11.10", - "semver": "^7.3.7", - "style-loader": "^3.3.1", - "swc-loader": "^0.2.3", - "terser-webpack-plugin": "^5.3.1", - "ts-dedent": "^2.0.0", - "url": "^0.11.0", - "util": "^0.12.4", - "util-deprecate": "^1.0.2", - "webpack": "5", - "webpack-dev-middleware": "^6.1.1", - "webpack-hot-middleware": "^2.25.1", - "webpack-virtual-modules": "^0.5.0" + "@storybook/types": "7.4.5", + "ts-dedent": "^2.0.0" }, "funding": { "type": "opencollective", @@ -6134,18 +6478,642 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { - "typescript": { + "react": { + "optional": true + }, + "react-dom": { "optional": true } } }, - "node_modules/@storybook/builder-webpack5/node_modules/@types/node": { - "version": "16.18.54", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.54.tgz", - "integrity": "sha512-oTmGy68gxZZ21FhTJVVvZBYpQHEBZxHKTsGshobMqm9qWpbqdZsA5jvsuPZcHu0KwpmLrOHWPdEfg7XDpNT9UA==", + "node_modules/@storybook/addon-outline/node_modules/@storybook/components": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.5.tgz", + "integrity": "sha512-boskkfvMBB8CFYY9+1ofFNyKrdWXTY/ghzt7oK80dz6f2Eseo/WXK3OsCdCq5vWbLRCdbgJ8zXG8pAFi4yBsxA==", + "dev": true, + "dependencies": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addon-outline/node_modules/@storybook/manager-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", + "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", + "dev": true, + "dependencies": { + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "semver": "^7.3.7", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addon-outline/node_modules/@storybook/theming": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", + "dev": true, + "dependencies": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.4.5", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addon-outline/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@storybook/addon-toolbars": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.4.5.tgz", + "integrity": "sha512-PZlwUTIdQ18de3zNb+627VSF4UrCGIXDdikyO9O5j2Cd0xfr5uhS6tgQ+3AT0DfUj0UIkKxilwcAt+agpNyicA==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "7.4.5", + "@storybook/components": "7.4.5", + "@storybook/manager-api": "7.4.5", + "@storybook/preview-api": "7.4.5", + "@storybook/theming": "7.4.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/@storybook/addon-toolbars/node_modules/@storybook/components": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.5.tgz", + "integrity": "sha512-boskkfvMBB8CFYY9+1ofFNyKrdWXTY/ghzt7oK80dz6f2Eseo/WXK3OsCdCq5vWbLRCdbgJ8zXG8pAFi4yBsxA==", + "dev": true, + "dependencies": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addon-toolbars/node_modules/@storybook/manager-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", + "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", + "dev": true, + "dependencies": { + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "semver": "^7.3.7", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addon-toolbars/node_modules/@storybook/theming": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", + "dev": true, + "dependencies": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.4.5", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addon-toolbars/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@storybook/addon-viewport": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.4.5.tgz", + "integrity": "sha512-SBLnUMIztVrqJ0fRCsVg9KZ29APLIxqAvTsYHF3twy5KB2naeCFuX3K9LxSH7vbROI6zHEfnPduz/Ykyvu9yUg==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "7.4.5", + "@storybook/components": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/global": "^5.0.0", + "@storybook/manager-api": "7.4.5", + "@storybook/preview-api": "7.4.5", + "@storybook/theming": "7.4.5", + "memoizerific": "^1.11.3", + "prop-types": "^15.7.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/@storybook/addon-viewport/node_modules/@storybook/components": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.5.tgz", + "integrity": "sha512-boskkfvMBB8CFYY9+1ofFNyKrdWXTY/ghzt7oK80dz6f2Eseo/WXK3OsCdCq5vWbLRCdbgJ8zXG8pAFi4yBsxA==", + "dev": true, + "dependencies": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addon-viewport/node_modules/@storybook/manager-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", + "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", + "dev": true, + "dependencies": { + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "semver": "^7.3.7", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addon-viewport/node_modules/@storybook/theming": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", + "dev": true, + "dependencies": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.4.5", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addon-viewport/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@storybook/addons": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-7.4.5.tgz", + "integrity": "sha512-jmdQf39XhwVi8d0J99qpk51fOAwNhYlCtVctvFWPX4qC1cq1d1pxLmTb5OBV2VHQ11BKwlKLzA7coiOgAQmNRg==", + "dev": true, + "dependencies": { + "@storybook/manager-api": "7.4.5", + "@storybook/preview-api": "7.4.5", + "@storybook/types": "7.4.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addons/node_modules/@storybook/manager-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", + "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", + "dev": true, + "dependencies": { + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "semver": "^7.3.7", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addons/node_modules/@storybook/theming": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", + "dev": true, + "dependencies": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.4.5", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addons/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@storybook/api": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-7.6.15.tgz", + "integrity": "sha512-5JuJI75h7QCKn6Sm1rhVCatKtKcuZCR4hb5b3Ef11xQ3I9bYOtEP403K9xSKe4OcJWBYhIYGqVNSBgeNOa5jCg==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "7.6.15", + "@storybook/manager-api": "7.6.15" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/api/node_modules/@storybook/client-logger": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.6.15.tgz", + "integrity": "sha512-n+K8IqnombqiQNnywVovS+lK61tvv/XSfgPt0cgvoF/hJZB0VDOMRjWsV+v9qQpj1TQEl1lLWeJwZMthTWupJA==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/blocks": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.4.5.tgz", + "integrity": "sha512-FhAIkCT2HrzJcKsC3mL5+uG3GrbS23mYAT1h3iyPjCliZzxfCCI9UCMUXqYx4Z/FmAGJgpsQQXiBFZuoTHO9aQ==", + "dev": true, + "dependencies": { + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/components": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/docs-tools": "7.4.5", + "@storybook/global": "^5.0.0", + "@storybook/manager-api": "7.4.5", + "@storybook/preview-api": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "@types/lodash": "^4.14.167", + "color-convert": "^2.0.1", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.1.8", + "memoizerific": "^1.11.3", + "polished": "^4.2.2", + "react-colorful": "^5.1.2", + "telejson": "^7.2.0", + "tocbot": "^4.20.1", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/blocks/node_modules/@storybook/components": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.5.tgz", + "integrity": "sha512-boskkfvMBB8CFYY9+1ofFNyKrdWXTY/ghzt7oK80dz6f2Eseo/WXK3OsCdCq5vWbLRCdbgJ8zXG8pAFi4yBsxA==", + "dev": true, + "dependencies": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/blocks/node_modules/@storybook/manager-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", + "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", + "dev": true, + "dependencies": { + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "semver": "^7.3.7", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/blocks/node_modules/@storybook/theming": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", + "dev": true, + "dependencies": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.4.5", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/blocks/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/@storybook/blocks/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/@storybook/builder-webpack5/node_modules/fs-extra": { + "node_modules/@storybook/blocks/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@storybook/builder-manager": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.4.5.tgz", + "integrity": "sha512-Jhql8iZgK9cxDmG9NSTejsj5FptHni2TBa5Sea2Uz1NIBQ0OpzNdUfYVX6TN/PEq3QrWXTrAEKPqsL2qGjOrxw==", + "dev": true, + "dependencies": { + "@fal-works/esbuild-plugin-global-externals": "^2.1.2", + "@storybook/core-common": "7.4.5", + "@storybook/manager": "7.4.5", + "@storybook/node-logger": "7.4.5", + "@types/ejs": "^3.1.1", + "@types/find-cache-dir": "^3.2.1", + "@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10", + "browser-assert": "^1.2.1", + "ejs": "^3.1.8", + "esbuild": "^0.18.0", + "esbuild-plugin-alias": "^0.2.1", + "express": "^4.17.3", + "find-cache-dir": "^3.0.0", + "fs-extra": "^11.1.0", + "process": "^0.11.10", + "util": "^0.12.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/builder-manager/node_modules/fs-extra": { "version": "11.1.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", @@ -6159,6 +7127,189 @@ "node": ">=14.14" } }, + "node_modules/@storybook/builder-manager/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@storybook/builder-manager/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@storybook/builder-webpack5": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-7.4.5.tgz", + "integrity": "sha512-XSZLZ2kNlZaOJ3i2uZ9vI25cJkmQhmTVHPER+FPKM/yliqsQj7p2P9zYz/Mn0LepUheK1Y+aWWiead1r2DnNMg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.22.9", + "@storybook/addons": "7.4.5", + "@storybook/channels": "7.4.5", + "@storybook/client-api": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/components": "7.4.5", + "@storybook/core-common": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/core-webpack": "7.4.5", + "@storybook/global": "^5.0.0", + "@storybook/manager-api": "7.4.5", + "@storybook/node-logger": "7.4.5", + "@storybook/preview": "7.4.5", + "@storybook/preview-api": "7.4.5", + "@storybook/router": "7.4.5", + "@storybook/store": "7.4.5", + "@storybook/theming": "7.4.5", + "@swc/core": "^1.3.49", + "@types/node": "^16.0.0", + "@types/semver": "^7.3.4", + "babel-loader": "^9.0.0", + "babel-plugin-named-exports-order": "^0.0.2", + "browser-assert": "^1.2.1", + "case-sensitive-paths-webpack-plugin": "^2.4.0", + "constants-browserify": "^1.0.0", + "css-loader": "^6.7.1", + "express": "^4.17.3", + "fork-ts-checker-webpack-plugin": "^8.0.0", + "fs-extra": "^11.1.0", + "html-webpack-plugin": "^5.5.0", + "path-browserify": "^1.0.1", + "process": "^0.11.10", + "semver": "^7.3.7", + "style-loader": "^3.3.1", + "swc-loader": "^0.2.3", + "terser-webpack-plugin": "^5.3.1", + "ts-dedent": "^2.0.0", + "url": "^0.11.0", + "util": "^0.12.4", + "util-deprecate": "^1.0.2", + "webpack": "5", + "webpack-dev-middleware": "^6.1.1", + "webpack-hot-middleware": "^2.25.1", + "webpack-virtual-modules": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/@storybook/components": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.5.tgz", + "integrity": "sha512-boskkfvMBB8CFYY9+1ofFNyKrdWXTY/ghzt7oK80dz6f2Eseo/WXK3OsCdCq5vWbLRCdbgJ8zXG8pAFi4yBsxA==", + "dev": true, + "dependencies": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/@storybook/manager-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", + "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", + "dev": true, + "dependencies": { + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "semver": "^7.3.7", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/@storybook/theming": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", + "dev": true, + "dependencies": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.4.5", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/@types/node": { + "version": "16.18.80", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.80.tgz", + "integrity": "sha512-vFxJ1Iyl7A0+xB0uW1r1v504yItKZLdqg/VZELUZ4H02U0bXAgBisSQ8Erf0DMruNFz9ggoiEv6T8Ll9bTg8Jw==", + "dev": true + }, + "node_modules/@storybook/builder-webpack5/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/@storybook/builder-webpack5/node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -6172,9 +7323,9 @@ } }, "node_modules/@storybook/builder-webpack5/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -6187,9 +7338,9 @@ } }, "node_modules/@storybook/builder-webpack5/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "engines": { "node": ">= 10.0.0" @@ -6456,28 +7607,185 @@ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, - "engines": { - "node": ">= 10.0.0" + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@storybook/client-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-7.4.5.tgz", + "integrity": "sha512-8gUglsmlGNA0U9Ec/GJDOrqRfSIjm7uJJrq7TrmvfkLTLR1diYpoIljoXyNHU+Nhk/ebUiQkzflqzYKNzbkcYw==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "7.4.5", + "@storybook/preview-api": "7.4.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/client-logger": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.4.5.tgz", + "integrity": "sha512-Bn6eTAjhPDUfLpvuxhKkpDpOtkadfkSmkBNBZRu3r0Dzk2J1nNyKV5K6D8dOU4PFVof4z/gXYj5bktT29jKsmw==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/codemod": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.4.5.tgz", + "integrity": "sha512-gyI2xliSv4vvnfNQN+0e3tRmT7beiq8q8iGjcBtpOhA2xrStyCR7PjbOfLXtRx2I/b50MDZMRTcckzeM3BLoWQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "@babel/types": "^7.22.5", + "@storybook/csf": "^0.1.0", + "@storybook/csf-tools": "7.4.5", + "@storybook/node-logger": "7.4.5", + "@storybook/types": "7.4.5", + "@types/cross-spawn": "^6.0.2", + "cross-spawn": "^7.0.3", + "globby": "^11.0.2", + "jscodeshift": "^0.14.0", + "lodash": "^4.17.21", + "prettier": "^2.8.0", + "recast": "^0.23.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/components": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.6.15.tgz", + "integrity": "sha512-xD+maP7+C9HeZXi2vJ+uK9hXN4S4spP4uDj9pyZ9yViKb+ztEO6WpovUMT8WRQ0mMegWyLXkx3zqu43hZvXM1g==", + "dev": true, + "dependencies": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.6.15", + "@storybook/csf": "^0.1.2", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.6.15", + "@storybook/types": "7.6.15", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/components/node_modules/@storybook/channels": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.6.15.tgz", + "integrity": "sha512-UPDYRzGkygYFa8QUpEiumWrvZm4u4RKVzgiBt9C4RmHORqkkZzL9LXhaZJp2SmIz1ND5gx6KR5ze8ZnAdwxxoQ==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "7.6.15", + "@storybook/core-events": "7.6.15", + "@storybook/global": "^5.0.0", + "qs": "^6.10.0", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/components/node_modules/@storybook/client-logger": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.6.15.tgz", + "integrity": "sha512-n+K8IqnombqiQNnywVovS+lK61tvv/XSfgPt0cgvoF/hJZB0VDOMRjWsV+v9qQpj1TQEl1lLWeJwZMthTWupJA==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/components/node_modules/@storybook/core-events": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.6.15.tgz", + "integrity": "sha512-i4YnjGecbpGyrFe0340sPhQ9QjZZEBqvMy6kF4XWt6DYLHxZmsTj1HEdvxVl4Ej7V49Vw0Dm8MepJ1d4Y8MKrQ==", + "dev": true, + "dependencies": { + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/components/node_modules/@storybook/types": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.6.15.tgz", + "integrity": "sha512-tLH0lK6SXECSfMpKin9bge+7XiHZII17n6jc9ZI1TfSBZJyq3M6VzWh2r1C2lC97FlkcKXjIwM3n8h1xNjnI+A==", + "dev": true, + "dependencies": { + "@storybook/channels": "7.6.15", + "@types/babel__core": "^7.0.0", + "@types/express": "^4.7.0", + "file-system-cache": "2.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/core-client": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.6.15.tgz", + "integrity": "sha512-jwWol+zo+ItKBzPm9i80bEL6seHMsV0wKSaViVMQ4TqHtEbNeFE8sFEc2NTr18VNBnQOdlQPnEWmdboXBUrGcA==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "7.6.15", + "@storybook/preview-api": "7.6.15" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/client-api": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-7.4.5.tgz", - "integrity": "sha512-8gUglsmlGNA0U9Ec/GJDOrqRfSIjm7uJJrq7TrmvfkLTLR1diYpoIljoXyNHU+Nhk/ebUiQkzflqzYKNzbkcYw==", + "node_modules/@storybook/core-client/node_modules/@storybook/channels": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.6.15.tgz", + "integrity": "sha512-UPDYRzGkygYFa8QUpEiumWrvZm4u4RKVzgiBt9C4RmHORqkkZzL9LXhaZJp2SmIz1ND5gx6KR5ze8ZnAdwxxoQ==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.4.5", - "@storybook/preview-api": "7.4.5" + "@storybook/client-logger": "7.6.15", + "@storybook/core-events": "7.6.15", + "@storybook/global": "^5.0.0", + "qs": "^6.10.0", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/client-logger": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.4.5.tgz", - "integrity": "sha512-Bn6eTAjhPDUfLpvuxhKkpDpOtkadfkSmkBNBZRu3r0Dzk2J1nNyKV5K6D8dOU4PFVof4z/gXYj5bktT29jKsmw==", + "node_modules/@storybook/core-client/node_modules/@storybook/client-logger": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.6.15.tgz", + "integrity": "sha512-n+K8IqnombqiQNnywVovS+lK61tvv/XSfgPt0cgvoF/hJZB0VDOMRjWsV+v9qQpj1TQEl1lLWeJwZMthTWupJA==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0" @@ -6487,66 +7795,55 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/codemod": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.4.5.tgz", - "integrity": "sha512-gyI2xliSv4vvnfNQN+0e3tRmT7beiq8q8iGjcBtpOhA2xrStyCR7PjbOfLXtRx2I/b50MDZMRTcckzeM3BLoWQ==", + "node_modules/@storybook/core-client/node_modules/@storybook/core-events": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.6.15.tgz", + "integrity": "sha512-i4YnjGecbpGyrFe0340sPhQ9QjZZEBqvMy6kF4XWt6DYLHxZmsTj1HEdvxVl4Ej7V49Vw0Dm8MepJ1d4Y8MKrQ==", "dev": true, "dependencies": { - "@babel/core": "^7.22.9", - "@babel/preset-env": "^7.22.9", - "@babel/types": "^7.22.5", - "@storybook/csf": "^0.1.0", - "@storybook/csf-tools": "7.4.5", - "@storybook/node-logger": "7.4.5", - "@storybook/types": "7.4.5", - "@types/cross-spawn": "^6.0.2", - "cross-spawn": "^7.0.3", - "globby": "^11.0.2", - "jscodeshift": "^0.14.0", - "lodash": "^4.17.21", - "prettier": "^2.8.0", - "recast": "^0.23.1" + "ts-dedent": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/components": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.5.tgz", - "integrity": "sha512-boskkfvMBB8CFYY9+1ofFNyKrdWXTY/ghzt7oK80dz6f2Eseo/WXK3OsCdCq5vWbLRCdbgJ8zXG8pAFi4yBsxA==", + "node_modules/@storybook/core-client/node_modules/@storybook/preview-api": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.6.15.tgz", + "integrity": "sha512-2KN9vlizF6sFlYsJEGnFqcQaJXs4TTdawC1VazVdtaMSHANDxxDu8F1cP+u7lpPH3DkNZUmTGQDBYfYY9xR0eQ==", "dev": true, "dependencies": { - "@radix-ui/react-select": "^1.2.2", - "@radix-ui/react-toolbar": "^1.0.4", - "@storybook/client-logger": "7.4.5", - "@storybook/csf": "^0.1.0", + "@storybook/channels": "7.6.15", + "@storybook/client-logger": "7.6.15", + "@storybook/core-events": "7.6.15", + "@storybook/csf": "^0.1.2", "@storybook/global": "^5.0.0", - "@storybook/theming": "7.4.5", - "@storybook/types": "7.4.5", + "@storybook/types": "7.6.15", + "@types/qs": "^6.9.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", - "use-resize-observer": "^9.1.0", + "qs": "^6.10.0", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/core-client": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.4.5.tgz", - "integrity": "sha512-d/qiCUZeOKY0HX/YmomxlccxJ2NKC3ttRrAsAXzJGypClKabv20X+qbeO/E7Kp5UQxIEJx1wuwJPcnlCvjgPDA==", + "node_modules/@storybook/core-client/node_modules/@storybook/types": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.6.15.tgz", + "integrity": "sha512-tLH0lK6SXECSfMpKin9bge+7XiHZII17n6jc9ZI1TfSBZJyq3M6VzWh2r1C2lC97FlkcKXjIwM3n8h1xNjnI+A==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.4.5", - "@storybook/preview-api": "7.4.5" + "@storybook/channels": "7.6.15", + "@types/babel__core": "^7.0.0", + "@types/express": "^4.7.0", + "file-system-cache": "2.3.0" }, "funding": { "type": "opencollective", @@ -6837,141 +8134,620 @@ "node": ">=8" } }, - "node_modules/@storybook/core-common/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "node_modules/@storybook/core-common/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@storybook/core-events": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.4.5.tgz", + "integrity": "sha512-Jzy/adSC95saYCZlgXE5j7jmiMLAXYpnBFBxEtBdXwSWEBb0zt21n1nyWBEAv9s/k2gqDXlPHKHeL5Mn6y40zA==", + "dev": true, + "dependencies": { + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/core-server": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.4.5.tgz", + "integrity": "sha512-cW+Qx9Ls823577bd/s9Kv4M1MdKS8mkk6/+nYbwtAwH3hkdlb077rlk/ue0X4O9NZmCrtaJ84KNrBkeDUdFyLQ==", + "dev": true, + "dependencies": { + "@aw-web-design/x-default-browser": "1.4.126", + "@discoveryjs/json-ext": "^0.5.3", + "@storybook/builder-manager": "7.4.5", + "@storybook/channels": "7.4.5", + "@storybook/core-common": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/csf-tools": "7.4.5", + "@storybook/docs-mdx": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/manager": "7.4.5", + "@storybook/node-logger": "7.4.5", + "@storybook/preview-api": "7.4.5", + "@storybook/telemetry": "7.4.5", + "@storybook/types": "7.4.5", + "@types/detect-port": "^1.3.0", + "@types/node": "^16.0.0", + "@types/pretty-hrtime": "^1.0.0", + "@types/semver": "^7.3.4", + "better-opn": "^3.0.2", + "chalk": "^4.1.0", + "cli-table3": "^0.6.1", + "compression": "^1.7.4", + "detect-port": "^1.3.0", + "express": "^4.17.3", + "fs-extra": "^11.1.0", + "globby": "^11.0.2", + "ip": "^2.0.0", + "lodash": "^4.17.21", + "open": "^8.4.0", + "pretty-hrtime": "^1.0.3", + "prompts": "^2.4.0", + "read-pkg-up": "^7.0.1", + "semver": "^7.3.7", + "serve-favicon": "^2.5.0", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1", + "ts-dedent": "^2.0.0", + "util": "^0.12.4", + "util-deprecate": "^1.0.2", + "watchpack": "^2.2.0", + "ws": "^8.2.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/core-server/node_modules/@types/node": { + "version": "16.18.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.54.tgz", + "integrity": "sha512-oTmGy68gxZZ21FhTJVVvZBYpQHEBZxHKTsGshobMqm9qWpbqdZsA5jvsuPZcHu0KwpmLrOHWPdEfg7XDpNT9UA==", + "dev": true + }, + "node_modules/@storybook/core-server/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/@storybook/core-server/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/@storybook/core-server/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/@storybook/core-server/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/@storybook/core-server/node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@storybook/core-server/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/core-server/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@storybook/core-server/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@storybook/core-server/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/core-server/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@storybook/core-webpack": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-7.4.5.tgz", + "integrity": "sha512-W4F5/BE6Q/1hbdseSRlhi4BGIKWp0CuU9UwCL2uF4zqcDOd9QdbntUq9wAw4DpRsonQjpbnzJABlNeh7MPxPMw==", + "dev": true, + "dependencies": { + "@storybook/core-common": "7.4.5", + "@storybook/node-logger": "7.4.5", + "@storybook/types": "7.4.5", + "@types/node": "^16.0.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/core-webpack/node_modules/@types/node": { + "version": "16.18.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.54.tgz", + "integrity": "sha512-oTmGy68gxZZ21FhTJVVvZBYpQHEBZxHKTsGshobMqm9qWpbqdZsA5jvsuPZcHu0KwpmLrOHWPdEfg7XDpNT9UA==", + "dev": true + }, + "node_modules/@storybook/csf": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.2.tgz", + "integrity": "sha512-ePrvE/pS1vsKR9Xr+o+YwdqNgHUyXvg+1Xjx0h9LrVx7Zq4zNe06pd63F5EvzTbCbJsHj7GHr9tkiaqm7U8WRA==", + "dev": true, + "dependencies": { + "type-fest": "^2.19.0" + } + }, + "node_modules/@storybook/csf-plugin": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.4.5.tgz", + "integrity": "sha512-8p3AnwIm3xXtQhiF7OQ0rBiP/Pn5OCMHRiT4FytRnNimGaw7gxRZ2xzM608QZHQ4A8rHfmgoM2FTwgxdC15ulA==", + "dev": true, + "dependencies": { + "@storybook/csf-tools": "7.4.5", + "unplugin": "^1.3.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/csf-tools": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.4.5.tgz", + "integrity": "sha512-xbm5HGYvlwF0Efivx37v9rO7Exel1/Tdb/Yv/vXn4D/hQeljNVLNz4Bomfy4EQ207rRsrGDSOHEhLUbHDimnxg==", + "dev": true, + "dependencies": { + "@babel/generator": "^7.22.9", + "@babel/parser": "^7.22.7", + "@babel/traverse": "^7.22.8", + "@babel/types": "^7.22.5", + "@storybook/csf": "^0.1.0", + "@storybook/types": "7.4.5", + "fs-extra": "^11.1.0", + "recast": "^0.23.1", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/csf-tools/node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@storybook/csf-tools/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@storybook/csf-tools/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@storybook/csf/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@storybook/docs-mdx": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@storybook/docs-mdx/-/docs-mdx-0.1.0.tgz", + "integrity": "sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg==", + "dev": true + }, + "node_modules/@storybook/docs-tools": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.4.5.tgz", + "integrity": "sha512-ctK+yGb2nvWISSvCCzj3ZhDaAb7I2BLjbxuBGTyNPvl4V9UQ9LBYzdJwR50q+DfscxdwSHMSOE/0OnzmJdaSJA==", + "dev": true, + "dependencies": { + "@storybook/core-common": "7.4.5", + "@storybook/preview-api": "7.4.5", + "@storybook/types": "7.4.5", + "@types/doctrine": "^0.0.3", + "doctrine": "^3.0.0", + "lodash": "^4.17.21" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/global": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz", + "integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==", + "dev": true + }, + "node_modules/@storybook/instrumenter": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-7.4.5.tgz", + "integrity": "sha512-VLFOcmG75QhWa7MtmfEybIJEz5oT2Ry8xAy/pIVhQwyBaeW0kRT0MHWkixRTtWQmJs/78FmHE3FlgMnqpa5JoA==", + "dev": true, + "dependencies": { + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/global": "^5.0.0", + "@storybook/preview-api": "7.4.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/manager": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.4.5.tgz", + "integrity": "sha512-yoqVktWzzC0f8cXsxErOEUfT+VFfWV/W7soytIPQuJFqNaq+BqR5A7WCeoY7BIv3mdpRjo4GKwerCsgoHYeHhg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/manager-api": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.6.15.tgz", + "integrity": "sha512-cPBsXcnJiaO3QyaEum2JgdihYea3cI03FeV35JdrBYLIelT4oqbYFnzjznsFg9+Ia9iAbz7aOBNyyRsWnC/UKw==", + "dev": true, + "dependencies": { + "@storybook/channels": "7.6.15", + "@storybook/client-logger": "7.6.15", + "@storybook/core-events": "7.6.15", + "@storybook/csf": "^0.1.2", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.6.15", + "@storybook/theming": "7.6.15", + "@storybook/types": "7.6.15", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/manager-api/node_modules/@storybook/channels": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.6.15.tgz", + "integrity": "sha512-UPDYRzGkygYFa8QUpEiumWrvZm4u4RKVzgiBt9C4RmHORqkkZzL9LXhaZJp2SmIz1ND5gx6KR5ze8ZnAdwxxoQ==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "7.6.15", + "@storybook/core-events": "7.6.15", + "@storybook/global": "^5.0.0", + "qs": "^6.10.0", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/manager-api/node_modules/@storybook/client-logger": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.6.15.tgz", + "integrity": "sha512-n+K8IqnombqiQNnywVovS+lK61tvv/XSfgPt0cgvoF/hJZB0VDOMRjWsV+v9qQpj1TQEl1lLWeJwZMthTWupJA==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/manager-api/node_modules/@storybook/core-events": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.6.15.tgz", + "integrity": "sha512-i4YnjGecbpGyrFe0340sPhQ9QjZZEBqvMy6kF4XWt6DYLHxZmsTj1HEdvxVl4Ej7V49Vw0Dm8MepJ1d4Y8MKrQ==", + "dev": true, + "dependencies": { + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/manager-api/node_modules/@storybook/router": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.6.15.tgz", + "integrity": "sha512-5yhXXoVZ1iKUgeZoO8PGqBclrLgoJisxIYVK/Y1iJMXZ2ZvwUiTswLALT6lu97tSrcoBVxmqSghg0+U0YEU4Fg==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "7.6.15", + "memoizerific": "^1.11.3", + "qs": "^6.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/manager-api/node_modules/@storybook/types": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.6.15.tgz", + "integrity": "sha512-tLH0lK6SXECSfMpKin9bge+7XiHZII17n6jc9ZI1TfSBZJyq3M6VzWh2r1C2lC97FlkcKXjIwM3n8h1xNjnI+A==", + "dev": true, + "dependencies": { + "@storybook/channels": "7.6.15", + "@types/babel__core": "^7.0.0", + "@types/express": "^4.7.0", + "file-system-cache": "2.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/mdx2-csf": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@storybook/mdx2-csf/-/mdx2-csf-1.1.0.tgz", + "integrity": "sha512-TXJJd5RAKakWx4BtpwvSNdgTDkKM6RkXU8GK34S/LhidQ5Pjz3wcnqb0TxEkfhK/ztbP8nKHqXFwLfa2CYkvQw==", + "dev": true + }, + "node_modules/@storybook/node-logger": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.4.5.tgz", + "integrity": "sha512-fJSykphbryuEYj1qihbaTH5oOzD4NkptRxyf2uyBrpgkr5tCTq9d7GHheqaBuIdi513dsjlcIR7z5iHxW7ZD+Q==", "dev": true, - "engines": { - "node": ">= 10.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-events": { + "node_modules/@storybook/postinstall": { "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.4.5.tgz", - "integrity": "sha512-Jzy/adSC95saYCZlgXE5j7jmiMLAXYpnBFBxEtBdXwSWEBb0zt21n1nyWBEAv9s/k2gqDXlPHKHeL5Mn6y40zA==", + "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.4.5.tgz", + "integrity": "sha512-MWRjnKkUpEe2VkHNNpv3zkuMvxM2Zu9DMxFENQaEmhqUHkIFh5klfFwzhSBRexVLzIh7DA1p7mntIpY5A6lh+Q==", "dev": true, - "dependencies": { - "ts-dedent": "^2.0.0" - }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-server": { + "node_modules/@storybook/preset-react-webpack": { "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.4.5.tgz", - "integrity": "sha512-cW+Qx9Ls823577bd/s9Kv4M1MdKS8mkk6/+nYbwtAwH3hkdlb077rlk/ue0X4O9NZmCrtaJ84KNrBkeDUdFyLQ==", + "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-7.4.5.tgz", + "integrity": "sha512-8mYHag0sGOHCjPHdEuLPM8U/FTCBIp5LaTxmpkJcNs/LprzSDI6OFWqbe+q8X7qkAL2Iz1YyqrYb4NgweqpZiA==", "dev": true, "dependencies": { - "@aw-web-design/x-default-browser": "1.4.126", - "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-manager": "7.4.5", - "@storybook/channels": "7.4.5", - "@storybook/core-common": "7.4.5", - "@storybook/core-events": "7.4.5", - "@storybook/csf": "^0.1.0", - "@storybook/csf-tools": "7.4.5", - "@storybook/docs-mdx": "^0.1.0", - "@storybook/global": "^5.0.0", - "@storybook/manager": "7.4.5", + "@babel/preset-flow": "^7.22.5", + "@babel/preset-react": "^7.22.5", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.5", + "@storybook/core-webpack": "7.4.5", + "@storybook/docs-tools": "7.4.5", "@storybook/node-logger": "7.4.5", - "@storybook/preview-api": "7.4.5", - "@storybook/telemetry": "7.4.5", - "@storybook/types": "7.4.5", - "@types/detect-port": "^1.3.0", + "@storybook/react": "7.4.5", + "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", "@types/node": "^16.0.0", - "@types/pretty-hrtime": "^1.0.0", "@types/semver": "^7.3.4", - "better-opn": "^3.0.2", - "chalk": "^4.1.0", - "cli-table3": "^0.6.1", - "compression": "^1.7.4", - "detect-port": "^1.3.0", - "express": "^4.17.3", + "babel-plugin-add-react-displayname": "^0.0.5", + "babel-plugin-react-docgen": "^4.2.1", "fs-extra": "^11.1.0", - "globby": "^11.0.2", - "ip": "^2.0.0", - "lodash": "^4.17.21", - "open": "^8.4.0", - "pretty-hrtime": "^1.0.3", - "prompts": "^2.4.0", - "read-pkg-up": "^7.0.1", + "react-refresh": "^0.11.0", "semver": "^7.3.7", - "serve-favicon": "^2.5.0", - "telejson": "^7.2.0", - "tiny-invariant": "^1.3.1", - "ts-dedent": "^2.0.0", - "util": "^0.12.4", - "util-deprecate": "^1.0.2", - "watchpack": "^2.2.0", - "ws": "^8.2.3" + "webpack": "5" + }, + "engines": { + "node": ">=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "@babel/core": "^7.22.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "typescript": { + "optional": true + } } }, - "node_modules/@storybook/core-server/node_modules/@types/node": { - "version": "16.18.54", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.54.tgz", - "integrity": "sha512-oTmGy68gxZZ21FhTJVVvZBYpQHEBZxHKTsGshobMqm9qWpbqdZsA5jvsuPZcHu0KwpmLrOHWPdEfg7XDpNT9UA==", - "dev": true - }, - "node_modules/@storybook/core-server/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==", + "node_modules/@storybook/preset-react-webpack/node_modules/@storybook/core-client": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.4.5.tgz", + "integrity": "sha512-d/qiCUZeOKY0HX/YmomxlccxJ2NKC3ttRrAsAXzJGypClKabv20X+qbeO/E7Kp5UQxIEJx1wuwJPcnlCvjgPDA==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "@storybook/client-logger": "7.4.5", + "@storybook/preview-api": "7.4.5" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-server/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@storybook/preset-react-webpack/node_modules/@storybook/react": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.4.5.tgz", + "integrity": "sha512-Tiylrs3uFO8QSvH1w3ueSxlAgh2fteH0edRVKaX01M/h47+QqEiZqq/dYkVDvLHngF+CCCwE3OY8nNe6L14Xkw==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@storybook/client-logger": "7.4.5", + "@storybook/core-client": "7.4.5", + "@storybook/docs-tools": "7.4.5", + "@storybook/global": "^5.0.0", + "@storybook/preview-api": "7.4.5", + "@storybook/react-dom-shim": "7.4.5", + "@storybook/types": "7.4.5", + "@types/escodegen": "^0.0.6", + "@types/estree": "^0.0.51", + "@types/node": "^16.0.0", + "acorn": "^7.4.1", + "acorn-jsx": "^5.3.1", + "acorn-walk": "^7.2.0", + "escodegen": "^2.1.0", + "html-tags": "^3.1.0", + "lodash": "^4.17.21", + "prop-types": "^15.7.2", + "react-element-to-jsx-string": "^15.0.0", + "ts-dedent": "^2.0.0", + "type-fest": "~2.19", + "util-deprecate": "^1.0.2" }, "engines": { - "node": ">=10" + "node": ">=16.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@storybook/core-server/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" + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, - "engines": { - "node": ">=7.0.0" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@storybook/core-server/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==", + "node_modules/@storybook/preset-react-webpack/node_modules/@types/node": { + "version": "16.18.80", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.80.tgz", + "integrity": "sha512-vFxJ1Iyl7A0+xB0uW1r1v504yItKZLdqg/VZELUZ4H02U0bXAgBisSQ8Erf0DMruNFz9ggoiEv6T8Ll9bTg8Jw==", "dev": true }, - "node_modules/@storybook/core-server/node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "node_modules/@storybook/preset-react-webpack/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -6982,16 +8758,7 @@ "node": ">=14.14" } }, - "node_modules/@storybook/core-server/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/core-server/node_modules/jsonfile": { + "node_modules/@storybook/preset-react-webpack/node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", @@ -7003,10 +8770,10 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/@storybook/core-server/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/@storybook/preset-react-webpack/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -7018,130 +8785,248 @@ "node": ">=10" } }, - "node_modules/@storybook/core-server/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@storybook/preset-react-webpack/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/core-server/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "node_modules/@storybook/preset-react-webpack/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "engines": { "node": ">= 10.0.0" } }, - "node_modules/@storybook/core-webpack": { + "node_modules/@storybook/preview": { "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-7.4.5.tgz", - "integrity": "sha512-W4F5/BE6Q/1hbdseSRlhi4BGIKWp0CuU9UwCL2uF4zqcDOd9QdbntUq9wAw4DpRsonQjpbnzJABlNeh7MPxPMw==", + "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.4.5.tgz", + "integrity": "sha512-hCVFoPJP0d7vFCJKaWEsDMa6LcRFcEikQ8Cy6Vo+trS8xXwvwE+vIBqyuPozl4O/MYD9iOlzjgZFNwaUUgX0Jg==", "dev": true, - "dependencies": { - "@storybook/core-common": "7.4.5", - "@storybook/node-logger": "7.4.5", - "@storybook/types": "7.4.5", - "@types/node": "^16.0.0", - "ts-dedent": "^2.0.0" - }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-webpack/node_modules/@types/node": { - "version": "16.18.54", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.54.tgz", - "integrity": "sha512-oTmGy68gxZZ21FhTJVVvZBYpQHEBZxHKTsGshobMqm9qWpbqdZsA5jvsuPZcHu0KwpmLrOHWPdEfg7XDpNT9UA==", - "dev": true - }, - "node_modules/@storybook/csf": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.1.tgz", - "integrity": "sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==", + "node_modules/@storybook/preview-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.4.5.tgz", + "integrity": "sha512-6xXQZPyilkGVddfZBI7tMbMMgOyIoZTYgTnwSPTMsXxO0f0TvtNDmGdwhn0I1nREHKfiQGpcQe6gwddEMnGtSg==", "dev": true, "dependencies": { - "type-fest": "^2.19.0" + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/types": "7.4.5", + "@types/qs": "^6.9.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/csf-plugin": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.4.5.tgz", - "integrity": "sha512-8p3AnwIm3xXtQhiF7OQ0rBiP/Pn5OCMHRiT4FytRnNimGaw7gxRZ2xzM608QZHQ4A8rHfmgoM2FTwgxdC15ulA==", + "node_modules/@storybook/react": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.6.15.tgz", + "integrity": "sha512-oJMSh4iTGu6OqCmj0LhkuPyMkxGMTCoohN4HcDpXd96jCSyWotVebRsg9xm5ddB7f54e6DY4XDoGH0WnVoR23g==", "dev": true, "dependencies": { - "@storybook/csf-tools": "7.4.5", - "unplugin": "^1.3.1" + "@storybook/client-logger": "7.6.15", + "@storybook/core-client": "7.6.15", + "@storybook/docs-tools": "7.6.15", + "@storybook/global": "^5.0.0", + "@storybook/preview-api": "7.6.15", + "@storybook/react-dom-shim": "7.6.15", + "@storybook/types": "7.6.15", + "@types/escodegen": "^0.0.6", + "@types/estree": "^0.0.51", + "@types/node": "^18.0.0", + "acorn": "^7.4.1", + "acorn-jsx": "^5.3.1", + "acorn-walk": "^7.2.0", + "escodegen": "^2.1.0", + "html-tags": "^3.1.0", + "lodash": "^4.17.21", + "prop-types": "^15.7.2", + "react-element-to-jsx-string": "^15.0.0", + "ts-dedent": "^2.0.0", + "type-fest": "~2.19", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@storybook/csf-tools": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.4.5.tgz", - "integrity": "sha512-xbm5HGYvlwF0Efivx37v9rO7Exel1/Tdb/Yv/vXn4D/hQeljNVLNz4Bomfy4EQ207rRsrGDSOHEhLUbHDimnxg==", + "node_modules/@storybook/react-docgen-typescript-plugin": { + "version": "1.0.6--canary.9.0c3f3b7.0", + "resolved": "https://registry.npmjs.org/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.6--canary.9.0c3f3b7.0.tgz", + "integrity": "sha512-KUqXC3oa9JuQ0kZJLBhVdS4lOneKTOopnNBK4tUAgoxWQ3u/IjzdueZjFr7gyBrXMoU6duutk3RQR9u8ZpYJ4Q==", "dev": true, "dependencies": { - "@babel/generator": "^7.22.9", - "@babel/parser": "^7.22.7", - "@babel/traverse": "^7.22.8", - "@babel/types": "^7.22.5", - "@storybook/csf": "^0.1.0", - "@storybook/types": "7.4.5", - "fs-extra": "^11.1.0", - "recast": "^0.23.1", - "ts-dedent": "^2.0.0" + "debug": "^4.1.1", + "endent": "^2.0.1", + "find-cache-dir": "^3.3.1", + "flat-cache": "^3.0.4", + "micromatch": "^4.0.2", + "react-docgen-typescript": "^2.2.2", + "tslib": "^2.0.0" }, + "peerDependencies": { + "typescript": ">= 4.x", + "webpack": ">= 4" + } + }, + "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@storybook/react-dom-shim": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.4.5.tgz", + "integrity": "sha512-/hGe8yuiWbT7L3ZsllmJPgxT9MEQE3k23FhliyKx6IGHsWoYaEsPYPZ9tygqtKY8RpqqMUKWz8+kbO79zUxaoQ==", + "dev": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/csf-tools/node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "node_modules/@storybook/react-webpack5": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-7.4.5.tgz", + "integrity": "sha512-2IgGuj/s6mZZoK22i7IfSSpkE00m1t/o9+C7Vxw+m79N/cyMbfmxuNJJATV9NZMrBd65UKACTitolM+ZneqB5Q==", "dev": true, "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "@storybook/builder-webpack5": "7.4.5", + "@storybook/preset-react-webpack": "7.4.5", + "@storybook/react": "7.4.5", + "@types/node": "^16.0.0" }, "engines": { - "node": ">=14.14" + "node": ">=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "@babel/core": "^7.22.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "typescript": "*" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "typescript": { + "optional": true + } } }, - "node_modules/@storybook/csf-tools/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/@storybook/react-webpack5/node_modules/@storybook/core-client": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.4.5.tgz", + "integrity": "sha512-d/qiCUZeOKY0HX/YmomxlccxJ2NKC3ttRrAsAXzJGypClKabv20X+qbeO/E7Kp5UQxIEJx1wuwJPcnlCvjgPDA==", "dev": true, "dependencies": { - "universalify": "^2.0.0" + "@storybook/client-logger": "7.4.5", + "@storybook/preview-api": "7.4.5" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/csf-tools/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "node_modules/@storybook/react-webpack5/node_modules/@storybook/react": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.4.5.tgz", + "integrity": "sha512-Tiylrs3uFO8QSvH1w3ueSxlAgh2fteH0edRVKaX01M/h47+QqEiZqq/dYkVDvLHngF+CCCwE3OY8nNe6L14Xkw==", "dev": true, + "dependencies": { + "@storybook/client-logger": "7.4.5", + "@storybook/core-client": "7.4.5", + "@storybook/docs-tools": "7.4.5", + "@storybook/global": "^5.0.0", + "@storybook/preview-api": "7.4.5", + "@storybook/react-dom-shim": "7.4.5", + "@storybook/types": "7.4.5", + "@types/escodegen": "^0.0.6", + "@types/estree": "^0.0.51", + "@types/node": "^16.0.0", + "acorn": "^7.4.1", + "acorn-jsx": "^5.3.1", + "acorn-walk": "^7.2.0", + "escodegen": "^2.1.0", + "html-tags": "^3.1.0", + "lodash": "^4.17.21", + "prop-types": "^15.7.2", + "react-element-to-jsx-string": "^15.0.0", + "ts-dedent": "^2.0.0", + "type-fest": "~2.19", + "util-deprecate": "^1.0.2" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@storybook/csf/node_modules/type-fest": { + "node_modules/@storybook/react-webpack5/node_modules/@types/node": { + "version": "16.18.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.54.tgz", + "integrity": "sha512-oTmGy68gxZZ21FhTJVVvZBYpQHEBZxHKTsGshobMqm9qWpbqdZsA5jvsuPZcHu0KwpmLrOHWPdEfg7XDpNT9UA==", + "dev": true + }, + "node_modules/@storybook/react-webpack5/node_modules/type-fest": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", @@ -7153,85 +9038,145 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/docs-mdx": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@storybook/docs-mdx/-/docs-mdx-0.1.0.tgz", - "integrity": "sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg==", - "dev": true + "node_modules/@storybook/react/node_modules/@storybook/channels": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.6.15.tgz", + "integrity": "sha512-UPDYRzGkygYFa8QUpEiumWrvZm4u4RKVzgiBt9C4RmHORqkkZzL9LXhaZJp2SmIz1ND5gx6KR5ze8ZnAdwxxoQ==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "7.6.15", + "@storybook/core-events": "7.6.15", + "@storybook/global": "^5.0.0", + "qs": "^6.10.0", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } }, - "node_modules/@storybook/docs-tools": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.4.5.tgz", - "integrity": "sha512-ctK+yGb2nvWISSvCCzj3ZhDaAb7I2BLjbxuBGTyNPvl4V9UQ9LBYzdJwR50q+DfscxdwSHMSOE/0OnzmJdaSJA==", + "node_modules/@storybook/react/node_modules/@storybook/client-logger": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.6.15.tgz", + "integrity": "sha512-n+K8IqnombqiQNnywVovS+lK61tvv/XSfgPt0cgvoF/hJZB0VDOMRjWsV+v9qQpj1TQEl1lLWeJwZMthTWupJA==", "dev": true, "dependencies": { - "@storybook/core-common": "7.4.5", - "@storybook/preview-api": "7.4.5", - "@storybook/types": "7.4.5", - "@types/doctrine": "^0.0.3", - "doctrine": "^3.0.0", - "lodash": "^4.17.21" + "@storybook/global": "^5.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/global": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz", - "integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==", - "dev": true + "node_modules/@storybook/react/node_modules/@storybook/core-common": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.6.15.tgz", + "integrity": "sha512-VGmcLJ5U1r1s8/YnLbKcyB4GnNL+/sZIPqwlcSKzDXO76HoVFv1kywf7PbASote7P3gdhLSxBdg95LH2bdIbmw==", + "dev": true, + "dependencies": { + "@storybook/core-events": "7.6.15", + "@storybook/node-logger": "7.6.15", + "@storybook/types": "7.6.15", + "@types/find-cache-dir": "^3.2.1", + "@types/node": "^18.0.0", + "@types/node-fetch": "^2.6.4", + "@types/pretty-hrtime": "^1.0.0", + "chalk": "^4.1.0", + "esbuild": "^0.18.0", + "esbuild-register": "^3.5.0", + "file-system-cache": "2.3.0", + "find-cache-dir": "^3.0.0", + "find-up": "^5.0.0", + "fs-extra": "^11.1.0", + "glob": "^10.0.0", + "handlebars": "^4.7.7", + "lazy-universal-dotenv": "^4.0.0", + "node-fetch": "^2.0.0", + "picomatch": "^2.3.0", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } }, - "node_modules/@storybook/instrumenter": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-7.4.5.tgz", - "integrity": "sha512-VLFOcmG75QhWa7MtmfEybIJEz5oT2Ry8xAy/pIVhQwyBaeW0kRT0MHWkixRTtWQmJs/78FmHE3FlgMnqpa5JoA==", + "node_modules/@storybook/react/node_modules/@storybook/core-events": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.6.15.tgz", + "integrity": "sha512-i4YnjGecbpGyrFe0340sPhQ9QjZZEBqvMy6kF4XWt6DYLHxZmsTj1HEdvxVl4Ej7V49Vw0Dm8MepJ1d4Y8MKrQ==", + "dev": true, + "dependencies": { + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/react/node_modules/@storybook/docs-tools": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.6.15.tgz", + "integrity": "sha512-npZEaI9Wpn9uJcRXFElqyiRw8bSxt95mLywPiEEGMT2kE5FfXM8d5Uj5O64kzoXdRI9IhRPEEZZidOtA/UInfQ==", "dev": true, "dependencies": { - "@storybook/channels": "7.4.5", - "@storybook/client-logger": "7.4.5", - "@storybook/core-events": "7.4.5", - "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.4.5" + "@storybook/core-common": "7.6.15", + "@storybook/preview-api": "7.6.15", + "@storybook/types": "7.6.15", + "@types/doctrine": "^0.0.3", + "assert": "^2.1.0", + "doctrine": "^3.0.0", + "lodash": "^4.17.21" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/manager": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.4.5.tgz", - "integrity": "sha512-yoqVktWzzC0f8cXsxErOEUfT+VFfWV/W7soytIPQuJFqNaq+BqR5A7WCeoY7BIv3mdpRjo4GKwerCsgoHYeHhg==", + "node_modules/@storybook/react/node_modules/@storybook/node-logger": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.6.15.tgz", + "integrity": "sha512-C+sCvRjR+5uVU3VTrfyv7/RlPBxesAjIucUAK0keGyIZ7sFQYCPdkm4m/C4s+TcubgAzVvuoUHlRrSppdA7WzQ==", "dev": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/manager-api": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", - "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", + "node_modules/@storybook/react/node_modules/@storybook/preview-api": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.6.15.tgz", + "integrity": "sha512-2KN9vlizF6sFlYsJEGnFqcQaJXs4TTdawC1VazVdtaMSHANDxxDu8F1cP+u7lpPH3DkNZUmTGQDBYfYY9xR0eQ==", "dev": true, "dependencies": { - "@storybook/channels": "7.4.5", - "@storybook/client-logger": "7.4.5", - "@storybook/core-events": "7.4.5", - "@storybook/csf": "^0.1.0", + "@storybook/channels": "7.6.15", + "@storybook/client-logger": "7.6.15", + "@storybook/core-events": "7.6.15", + "@storybook/csf": "^0.1.2", "@storybook/global": "^5.0.0", - "@storybook/router": "7.4.5", - "@storybook/theming": "7.4.5", - "@storybook/types": "7.4.5", + "@storybook/types": "7.6.15", + "@types/qs": "^6.9.5", "dequal": "^2.0.2", "lodash": "^4.17.21", "memoizerific": "^1.11.3", - "semver": "^7.3.7", - "store2": "^2.14.2", - "telejson": "^7.2.0", - "ts-dedent": "^2.0.0" + "qs": "^6.10.0", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/react/node_modules/@storybook/react-dom-shim": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.6.15.tgz", + "integrity": "sha512-2+X0HIxIyvjfSKVyGGjSJJLEFJ2ox7Rr8FjlMiRo5QfoOJhohZuWH7p4Lw7JMwm5PotnjrwlfsZI3cCilYJeYA==", + "dev": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -7241,101 +9186,116 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/manager-api/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/@storybook/react/node_modules/@storybook/types": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.6.15.tgz", + "integrity": "sha512-tLH0lK6SXECSfMpKin9bge+7XiHZII17n6jc9ZI1TfSBZJyq3M6VzWh2r1C2lC97FlkcKXjIwM3n8h1xNjnI+A==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" + "@storybook/channels": "7.6.15", + "@types/babel__core": "^7.0.0", + "@types/express": "^4.7.0", + "file-system-cache": "2.3.0" }, - "bin": { - "semver": "bin/semver.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/react/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": ">=10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@storybook/mdx2-csf": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@storybook/mdx2-csf/-/mdx2-csf-1.1.0.tgz", - "integrity": "sha512-TXJJd5RAKakWx4BtpwvSNdgTDkKM6RkXU8GK34S/LhidQ5Pjz3wcnqb0TxEkfhK/ztbP8nKHqXFwLfa2CYkvQw==", - "dev": true + "node_modules/@storybook/react/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/@storybook/node-logger": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.4.5.tgz", - "integrity": "sha512-fJSykphbryuEYj1qihbaTH5oOzD4NkptRxyf2uyBrpgkr5tCTq9d7GHheqaBuIdi513dsjlcIR7z5iHxW7ZD+Q==", + "node_modules/@storybook/react/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": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@storybook/postinstall": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.4.5.tgz", - "integrity": "sha512-MWRjnKkUpEe2VkHNNpv3zkuMvxM2Zu9DMxFENQaEmhqUHkIFh5klfFwzhSBRexVLzIh7DA1p7mntIpY5A6lh+Q==", + "node_modules/@storybook/react/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, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@storybook/preset-react-webpack": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-7.4.5.tgz", - "integrity": "sha512-8mYHag0sGOHCjPHdEuLPM8U/FTCBIp5LaTxmpkJcNs/LprzSDI6OFWqbe+q8X7qkAL2Iz1YyqrYb4NgweqpZiA==", + "node_modules/@storybook/react/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/@storybook/react/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": { - "@babel/preset-flow": "^7.22.5", - "@babel/preset-react": "^7.22.5", - "@pmmmwh/react-refresh-webpack-plugin": "^0.5.5", - "@storybook/core-webpack": "7.4.5", - "@storybook/docs-tools": "7.4.5", - "@storybook/node-logger": "7.4.5", - "@storybook/react": "7.4.5", - "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", - "@types/node": "^16.0.0", - "@types/semver": "^7.3.4", - "babel-plugin-add-react-displayname": "^0.0.5", - "babel-plugin-react-docgen": "^4.2.1", - "fs-extra": "^11.1.0", - "react-refresh": "^0.11.0", - "semver": "^7.3.7", - "webpack": "5" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@storybook/react/node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, - "peerDependencies": { - "@babel/core": "^7.22.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "engines": { + "node": ">=14" }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "typescript": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@storybook/preset-react-webpack/node_modules/@types/node": { - "version": "16.18.54", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.54.tgz", - "integrity": "sha512-oTmGy68gxZZ21FhTJVVvZBYpQHEBZxHKTsGshobMqm9qWpbqdZsA5jvsuPZcHu0KwpmLrOHWPdEfg7XDpNT9UA==", - "dev": true - }, - "node_modules/@storybook/preset-react-webpack/node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "node_modules/@storybook/react/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -7346,7 +9306,38 @@ "node": ">=14.14" } }, - "node_modules/@storybook/preset-react-webpack/node_modules/jsonfile": { + "node_modules/@storybook/react/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/@storybook/react/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/react/node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", @@ -7358,196 +9349,102 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/@storybook/preset-react-webpack/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/@storybook/react/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": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "p-locate": "^5.0.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/preset-react-webpack/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "node_modules/@storybook/react/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@storybook/preview": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.4.5.tgz", - "integrity": "sha512-hCVFoPJP0d7vFCJKaWEsDMa6LcRFcEikQ8Cy6Vo+trS8xXwvwE+vIBqyuPozl4O/MYD9iOlzjgZFNwaUUgX0Jg==", - "dev": true, + "node": ">=16 || 14 >=14.17" + }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@storybook/preview-api": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.4.5.tgz", - "integrity": "sha512-6xXQZPyilkGVddfZBI7tMbMMgOyIoZTYgTnwSPTMsXxO0f0TvtNDmGdwhn0I1nREHKfiQGpcQe6gwddEMnGtSg==", + "node_modules/@storybook/react/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": { - "@storybook/channels": "7.4.5", - "@storybook/client-logger": "7.4.5", - "@storybook/core-events": "7.4.5", - "@storybook/csf": "^0.1.0", - "@storybook/global": "^5.0.0", - "@storybook/types": "7.4.5", - "@types/qs": "^6.9.5", - "dequal": "^2.0.2", - "lodash": "^4.17.21", - "memoizerific": "^1.11.3", - "qs": "^6.10.0", - "synchronous-promise": "^2.0.15", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/react": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.4.5.tgz", - "integrity": "sha512-Tiylrs3uFO8QSvH1w3ueSxlAgh2fteH0edRVKaX01M/h47+QqEiZqq/dYkVDvLHngF+CCCwE3OY8nNe6L14Xkw==", + "node_modules/@storybook/react/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": { - "@storybook/client-logger": "7.4.5", - "@storybook/core-client": "7.4.5", - "@storybook/docs-tools": "7.4.5", - "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.4.5", - "@storybook/react-dom-shim": "7.4.5", - "@storybook/types": "7.4.5", - "@types/escodegen": "^0.0.6", - "@types/estree": "^0.0.51", - "@types/node": "^16.0.0", - "acorn": "^7.4.1", - "acorn-jsx": "^5.3.1", - "acorn-walk": "^7.2.0", - "escodegen": "^2.1.0", - "html-tags": "^3.1.0", - "lodash": "^4.17.21", - "prop-types": "^15.7.2", - "react-element-to-jsx-string": "^15.0.0", - "ts-dedent": "^2.0.0", - "type-fest": "~2.19", - "util-deprecate": "^1.0.2" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/react-docgen-typescript-plugin": { - "version": "1.0.6--canary.9.0c3f3b7.0", - "resolved": "https://registry.npmjs.org/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.6--canary.9.0c3f3b7.0.tgz", - "integrity": "sha512-KUqXC3oa9JuQ0kZJLBhVdS4lOneKTOopnNBK4tUAgoxWQ3u/IjzdueZjFr7gyBrXMoU6duutk3RQR9u8ZpYJ4Q==", + "node_modules/@storybook/react/node_modules/pkg-dir": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", "dev": true, "dependencies": { - "debug": "^4.1.1", - "endent": "^2.0.1", - "find-cache-dir": "^3.3.1", - "flat-cache": "^3.0.4", - "micromatch": "^4.0.2", - "react-docgen-typescript": "^2.2.2", - "tslib": "^2.0.0" + "find-up": "^5.0.0" }, - "peerDependencies": { - "typescript": ">= 4.x", - "webpack": ">= 4" + "engines": { + "node": ">=10" } }, - "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/@storybook/react-dom-shim": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.4.5.tgz", - "integrity": "sha512-/hGe8yuiWbT7L3ZsllmJPgxT9MEQE3k23FhliyKx6IGHsWoYaEsPYPZ9tygqtKY8RpqqMUKWz8+kbO79zUxaoQ==", + "node_modules/@storybook/react/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">=14" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@storybook/react-webpack5": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-7.4.5.tgz", - "integrity": "sha512-2IgGuj/s6mZZoK22i7IfSSpkE00m1t/o9+C7Vxw+m79N/cyMbfmxuNJJATV9NZMrBd65UKACTitolM+ZneqB5Q==", + "node_modules/@storybook/react/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "@storybook/builder-webpack5": "7.4.5", - "@storybook/preset-react-webpack": "7.4.5", - "@storybook/react": "7.4.5", - "@types/node": "^16.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "@babel/core": "^7.22.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", - "typescript": "*" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "typescript": { - "optional": true - } + "node": ">=8" } }, - "node_modules/@storybook/react-webpack5/node_modules/@types/node": { - "version": "16.18.54", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.54.tgz", - "integrity": "sha512-oTmGy68gxZZ21FhTJVVvZBYpQHEBZxHKTsGshobMqm9qWpbqdZsA5jvsuPZcHu0KwpmLrOHWPdEfg7XDpNT9UA==", - "dev": true - }, - "node_modules/@storybook/react/node_modules/@types/node": { - "version": "16.18.54", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.54.tgz", - "integrity": "sha512-oTmGy68gxZZ21FhTJVVvZBYpQHEBZxHKTsGshobMqm9qWpbqdZsA5jvsuPZcHu0KwpmLrOHWPdEfg7XDpNT9UA==", - "dev": true - }, "node_modules/@storybook/react/node_modules/type-fest": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", @@ -7560,6 +9457,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@storybook/react/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/@storybook/router": { "version": "7.4.5", "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.4.5.tgz", @@ -7853,25 +9759,6 @@ "ts-dedent": "^2.2.0" } }, - "node_modules/@storybook/testing-library/node_modules/@testing-library/dom": { - "version": "9.3.3", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.3.tgz", - "integrity": "sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/runtime": "^7.12.5", - "@types/aria-query": "^5.0.1", - "aria-query": "5.1.3", - "chalk": "^4.1.0", - "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.5.0", - "pretty-format": "^27.0.2" - }, - "engines": { - "node": ">=14" - } - }, "node_modules/@storybook/testing-library/node_modules/@testing-library/user-event": { "version": "14.4.3", "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.4.3.tgz", @@ -7885,90 +9772,14 @@ "@testing-library/dom": ">=7.21.4" } }, - "node_modules/@storybook/testing-library/node_modules/@types/aria-query": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.2.tgz", - "integrity": "sha512-PHKZuMN+K5qgKIWhBodXzQslTo5P+K/6LqeKXS6O/4liIDdZqaX5RXrCK++LAw+y/nptN48YmUMFiQHRSWYwtQ==", - "dev": true - }, - "node_modules/@storybook/testing-library/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/@storybook/testing-library/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/@storybook/testing-library/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/@storybook/testing-library/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/@storybook/testing-library/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/testing-library/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@storybook/theming": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", - "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.6.15.tgz", + "integrity": "sha512-9PpsHAbUf6o0w33/P3mnb7QheTmfGlTYCismj5HMM1O2/zY0kQK9XcG9W+Cyvu56D/lFC19fz9YHQY8W4AbfnQ==", "dev": true, "dependencies": { "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.4.5", + "@storybook/client-logger": "7.6.15", "@storybook/global": "^5.0.0", "memoizerific": "^1.11.3" }, @@ -7981,6 +9792,19 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/@storybook/theming/node_modules/@storybook/client-logger": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.6.15.tgz", + "integrity": "sha512-n+K8IqnombqiQNnywVovS+lK61tvv/XSfgPt0cgvoF/hJZB0VDOMRjWsV+v9qQpj1TQEl1lLWeJwZMthTWupJA==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, "node_modules/@storybook/types": { "version": "7.4.5", "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.4.5.tgz", @@ -8052,9 +9876,9 @@ } }, "node_modules/@swc/counter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.1.tgz", - "integrity": "sha512-xVRaR4u9hcYjFvcSg71Lz5Bo4//CyjAAfMxa7UsaDSYxAshflUkVJWiyVWrfxC59z2kP1IzI4/1BEpnhI9o3Mw==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", "dev": true }, "node_modules/@swc/helpers": { @@ -8104,21 +9928,22 @@ } }, "node_modules/@testing-library/dom": { - "version": "8.11.3", - "integrity": "sha512-9LId28I+lx70wUiZjLvi1DB/WT2zGOxUh46glrSNMaWVx849kKAluezVzZrXJfTKKoQTmEOutLes/bHg4Bj3aA==", + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.4.tgz", + "integrity": "sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==", "dev": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", - "@types/aria-query": "^4.2.0", - "aria-query": "^5.0.0", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", "chalk": "^4.1.0", "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.4.4", + "lz-string": "^1.5.0", "pretty-format": "^27.0.2" }, "engines": { - "node": ">=12" + "node": ">=14" } }, "node_modules/@testing-library/dom/node_modules/ansi-styles": { @@ -8268,62 +10093,30 @@ } }, "node_modules/@testing-library/react": { - "version": "12.1.3", - "integrity": "sha512-oCULRXWRrBtC9m6G/WohPo1GLcLesH7T4fuKzRAKn1CWVu9BzXtqLXDDTA6KhFNNtRwLtfSMr20HFl+Qrdrvmg==", + "version": "14.2.1", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.2.1.tgz", + "integrity": "sha512-sGdjws32ai5TLerhvzThYFbpnF9XtL65Cjf+gB0Dhr29BGqK+mAeN7SURSdu+eqgET4ANcWoC7FQpkaiGvBr+A==", "dev": true, "dependencies": { "@babel/runtime": "^7.12.5", - "@testing-library/dom": "^8.0.0", - "@types/react-dom": "*" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "react": "*", - "react-dom": "*" - } - }, - "node_modules/@testing-library/react-hooks": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@testing-library/react-hooks/-/react-hooks-8.0.0.tgz", - "integrity": "sha512-uZqcgtcUUtw7Z9N32W13qQhVAD+Xki2hxbTR461MKax8T6Jr8nsUvZB+vcBTkzY2nFvsUet434CsgF0ncW2yFw==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.12.5", - "react-error-boundary": "^3.1.0" + "@testing-library/dom": "^9.0.0", + "@types/react-dom": "^18.0.0" }, "engines": { - "node": ">=12" + "node": ">=14" }, "peerDependencies": { - "@types/react": "^16.9.0 || ^17.0.0", - "react": "^16.9.0 || ^17.0.0", - "react-dom": "^16.9.0 || ^17.0.0", - "react-test-renderer": "^16.9.0 || ^17.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "react-dom": { - "optional": true - }, - "react-test-renderer": { - "optional": true - } + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, "node_modules/@testing-library/user-event": { - "version": "13.5.0", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz", - "integrity": "sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==", + "version": "14.5.2", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", + "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", "dev": true, - "dependencies": { - "@babel/runtime": "^7.12.5" - }, "engines": { - "node": ">=10", + "node": ">=12", "npm": ">=6" }, "peerDependencies": { @@ -8345,8 +10138,9 @@ "dev": true }, "node_modules/@types/aria-query": { - "version": "4.2.2", - "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", "dev": true }, "node_modules/@types/babel__core": { @@ -8693,9 +10487,9 @@ } }, "node_modules/@types/mdx": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.8.tgz", - "integrity": "sha512-r7/zWe+f9x+zjXqGxf821qz++ld8tp6Z4jUS6qmPZUXH6tfh4riXOhAqb12tWGWAevCFtMt1goLWkQMqIJKpsA==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.11.tgz", + "integrity": "sha512-HM5bwOaIQJIQbAYfax35HCKxx7a3KrK3nBtIqJgSOitivTD1y3oW9P3rxY9RkXYPUk7y/AjAohfHKmFpGE79zw==", "dev": true }, "node_modules/@types/mime": { @@ -8711,9 +10505,13 @@ "dev": true }, "node_modules/@types/node": { - "version": "17.0.10", - "integrity": "sha512-S/3xB4KzyFxYGCppyDt68yzBU9ysL88lSdIah4D6cptdcltc4NCPCAMc0+PCpg/lLIyC7IPvj2Z52OJWeIUkog==", - "dev": true + "version": "18.19.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.15.tgz", + "integrity": "sha512-AMZ2UWx+woHNfM11PyAEQmfSxi05jm9OlkxczuHeEqmvwPkYj6MWv44gbzDPefYOLysTOFyI3ziiy2ONmUZfpA==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/node-fetch": { "version": "2.6.6", @@ -8780,12 +10578,12 @@ } }, "node_modules/@types/react-dom": { - "version": "17.0.21", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.21.tgz", - "integrity": "sha512-3rQEFUNUUz2MYiRwJJj6UekcW7rFLOtmK7ajQP7qJpjNdggInl3I/xM4I3Hq1yYPdCGVMgax1gZsB7BBTtayXg==", + "version": "18.2.19", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.19.tgz", + "integrity": "sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==", "dev": true, "dependencies": { - "@types/react": "^17" + "@types/react": "*" } }, "node_modules/@types/scheduler": { @@ -8857,9 +10655,15 @@ "dev": true }, "node_modules/@types/unist": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.8.tgz", - "integrity": "sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==", + "dev": true + }, + "node_modules/@types/uuid": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", "dev": true }, "node_modules/@types/wait-on": { @@ -9830,6 +11634,19 @@ "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", "dev": true }, + "node_modules/assert": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" + } + }, "node_modules/ast-types": { "version": "0.16.1", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", @@ -11001,9 +12818,9 @@ "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" }, "node_modules/clean-css": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", - "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "dev": true, "dependencies": { "source-map": "~0.6.0" @@ -11531,19 +13348,19 @@ } }, "node_modules/css-loader": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", - "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz", + "integrity": "sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==", "dev": true, "dependencies": { "icss-utils": "^5.1.0", - "postcss": "^8.4.21", + "postcss": "^8.4.33", "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.3", - "postcss-modules-scope": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.4", + "postcss-modules-scope": "^3.1.1", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.2.0", - "semver": "^7.3.8" + "semver": "^7.5.4" }, "engines": { "node": ">= 12.13.0" @@ -11553,13 +13370,22 @@ "url": "https://opencollective.com/webpack" }, "peerDependencies": { + "@rspack/core": "0.x || 1.x", "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, "node_modules/css-loader/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -14516,9 +16342,9 @@ } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -14543,9 +16369,9 @@ } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "engines": { "node": ">= 10.0.0" @@ -15492,9 +17318,9 @@ } }, "node_modules/html-webpack-plugin": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", - "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", + "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", "dev": true, "dependencies": { "@types/html-minifier-terser": "^6.0.0", @@ -15511,7 +17337,16 @@ "url": "https://opencollective.com/html-webpack-plugin" }, "peerDependencies": { + "@rspack/core": "0.x || 1.x", "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, "node_modules/htmlparser2": { @@ -19917,9 +21752,9 @@ } }, "node_modules/markdown-to-jsx": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.3.2.tgz", - "integrity": "sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.4.1.tgz", + "integrity": "sha512-GbrbkTnHp9u6+HqbPRFJbObi369AgJNXi/sGqq5HRsoZW063xR1XDCaConqq+whfEIAlzB1YPnOgsPc7B7bc/A==", "dev": true, "engines": { "node": ">= 10" @@ -20323,9 +22158,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "funding": [ { "type": "github", @@ -21372,9 +23207,9 @@ } }, "node_modules/postcss": { - "version": "8.4.30", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.30.tgz", - "integrity": "sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==", + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", "funding": [ { "type": "opencollective", @@ -21390,7 +23225,7 @@ } ], "dependencies": { - "nanoid": "^3.3.6", + "nanoid": "^3.3.7", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -21483,9 +23318,9 @@ } }, "node_modules/postcss-modules-local-by-default": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", - "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz", + "integrity": "sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==", "dev": true, "dependencies": { "icss-utils": "^5.0.0", @@ -21500,9 +23335,9 @@ } }, "node_modules/postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz", + "integrity": "sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==", "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.4" @@ -21998,27 +23833,26 @@ } }, "node_modules/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" }, "engines": { "node": ">=0.10.0" } }, "node_modules/react-collapsed": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/react-collapsed/-/react-collapsed-3.6.0.tgz", - "integrity": "sha512-QqtogOGl5hM9L7j7rlMCYxm4jD8Ovr8voqyYS1g5ltADhUNvxbbgtJ5MwRiajJ0DmYFOZHShpnSPz4wvJaOiKA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/react-collapsed/-/react-collapsed-4.1.2.tgz", + "integrity": "sha512-vusqVnW/VbFCKJx29KNTnjJrwCbV7k3bB/FiO9/0Fj7JNoNarkU1xU7yK4FZHqPW0Q2izB7o6fYzG16zgdDNMQ==", "dependencies": { "tiny-warning": "^1.0.3" }, "peerDependencies": { - "react": "^16.8 || ^17", - "react-dom": "^16.8 || ^17" + "react": "^16.9.0 || ^17 || ^18", + "react-dom": "^16.9.0 || ^17 || ^18" } }, "node_modules/react-colorful": { @@ -22083,16 +23917,15 @@ "dev": true }, "node_modules/react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", "dependencies": { "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" + "scheduler": "^0.23.0" }, "peerDependencies": { - "react": "17.0.2" + "react": "^18.2.0" } }, "node_modules/react-element-to-jsx-string": { @@ -22125,22 +23958,6 @@ "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", "dev": true }, - "node_modules/react-error-boundary": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz", - "integrity": "sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.12.5" - }, - "engines": { - "node": ">=10", - "npm": ">=6" - }, - "peerDependencies": { - "react": ">=16.13.1" - } - }, "node_modules/react-inspector": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/react-inspector/-/react-inspector-6.0.2.tgz", @@ -22420,19 +24237,6 @@ "node": ">= 4" } }, - "node_modules/recast/node_modules/assert": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", - "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "is-nan": "^1.3.2", - "object-is": "^1.1.5", - "object.assign": "^4.1.4", - "util": "^0.12.5" - } - }, "node_modules/recast/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -22954,12 +24758,11 @@ } }, "node_modules/scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" } }, "node_modules/schema-utils": { @@ -23655,9 +25458,9 @@ } }, "node_modules/style-loader": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.3.tgz", - "integrity": "sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", + "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", "dev": true, "engines": { "node": ">= 12.13.0" @@ -23751,10 +25554,13 @@ } }, "node_modules/swc-loader": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.3.tgz", - "integrity": "sha512-D1p6XXURfSPleZZA/Lipb3A8pZ17fP4NObZvFCDjK/OKljroqDpPmsBdTraWhVBqUNpcWBQY1imWdoPScRlQ7A==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.6.tgz", + "integrity": "sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==", "dev": true, + "dependencies": { + "@swc/counter": "^0.1.3" + }, "peerDependencies": { "@swc/core": "^1.2.147", "webpack": ">=2" @@ -24241,9 +26047,9 @@ } }, "node_modules/tocbot": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/tocbot/-/tocbot-4.21.1.tgz", - "integrity": "sha512-IfajhBTeg0HlMXu1f+VMbPef05QpDTsZ9X2Yn1+8npdaXsXg/+wrm9Ze1WG5OS1UDC3qJ5EQN/XOZ3gfXjPFCw==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/tocbot/-/tocbot-4.25.0.tgz", + "integrity": "sha512-kE5wyCQJ40hqUaRVkyQ4z5+4juzYsv/eK+aqD97N62YH0TxFhzJvo22RUQQZdO3YnXAk42ZOfOpjVdy+Z0YokA==", "dev": true }, "node_modules/toidentifier": { @@ -24701,6 +26507,12 @@ "react": ">=16.14.0" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -24810,21 +26622,21 @@ } }, "node_modules/unplugin": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.5.0.tgz", - "integrity": "sha512-9ZdRwbh/4gcm1JTOkp9lAkIDrtOyOxgHmY7cjuwI8L/2RTikMcVG25GsZwNAgRuap3iDw2jeq7eoqtAsz5rW3A==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.7.1.tgz", + "integrity": "sha512-JqzORDAPxxs8ErLV4x+LL7bk5pk3YlcWqpSNsIkAZj972KzFZLClc/ekppahKkOczGkwIG6ElFgdOgOlK4tXZw==", "dev": true, "dependencies": { - "acorn": "^8.10.0", + "acorn": "^8.11.3", "chokidar": "^3.5.3", "webpack-sources": "^3.2.3", - "webpack-virtual-modules": "^0.5.0" + "webpack-virtual-modules": "^0.6.1" } }, "node_modules/unplugin/node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -24833,6 +26645,12 @@ "node": ">=0.4.0" } }, + "node_modules/unplugin/node_modules/webpack-virtual-modules": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.1.tgz", + "integrity": "sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==", + "dev": true + }, "node_modules/untildify": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", @@ -24907,9 +26725,9 @@ "dev": true }, "node_modules/use-callback-ref": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", - "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.1.tgz", + "integrity": "sha512-Lg4Vx1XZQauB42Hw3kK7JM6yjVjgFmFC5/Ab797s79aARomD2nEErc4mCgM8EZrARLmmbWpi5DGCadmK50DcAQ==", "dev": true, "dependencies": { "tslib": "^2.0.0" @@ -27602,36 +29420,6 @@ "lodash": "^4.17.21", "react": "18.2.0", "react-dom": "^18.2.0" - }, - "dependencies": { - "react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "dev": true, - "requires": { - "loose-envify": "^1.1.0" - } - }, - "react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "dev": true, - "requires": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - } - }, - "scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "dev": true, - "requires": { - "loose-envify": "^1.1.0" - } - } } }, "@fal-works/esbuild-plugin-global-externals": { @@ -27641,37 +29429,37 @@ "dev": true }, "@floating-ui/core": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz", - "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", + "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", "dev": true, "requires": { - "@floating-ui/utils": "^0.1.3" + "@floating-ui/utils": "^0.2.1" } }, "@floating-ui/dom": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", - "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz", + "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==", "dev": true, "requires": { - "@floating-ui/core": "^1.4.2", - "@floating-ui/utils": "^0.1.3" + "@floating-ui/core": "^1.0.0", + "@floating-ui/utils": "^0.2.0" } }, "@floating-ui/react-dom": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.2.tgz", - "integrity": "sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz", + "integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==", "dev": true, "requires": { - "@floating-ui/dom": "^1.5.1" + "@floating-ui/dom": "^1.6.1" } }, "@floating-ui/utils": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.4.tgz", - "integrity": "sha512-qprfWkn82Iw821mcKofJ5Pk9wgioHicxcQMxx+5zt5GSKoqdWvgG5AxVmpmUUjzTLPVSH5auBrhI93Deayn/DA==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", + "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==", "dev": true }, "@hapi/hoek": { @@ -29217,22 +31005,6 @@ "@babel/runtime": "^7.13.10" } }, - "@reach/auto-id": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@reach/auto-id/-/auto-id-0.18.0.tgz", - "integrity": "sha512-XwY1IwhM7mkHZFghhjiqjQ6dstbOdpbFLdggeke75u8/8icT8uEHLbovFUgzKjy9qPvYwZIB87rLiR8WdtOXCg==", - "requires": { - "@reach/utils": "0.18.0" - }, - "dependencies": { - "@reach/utils": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@reach/utils/-/utils-0.18.0.tgz", - "integrity": "sha512-KdVMdpTgDyK8FzdKO9SCpiibuy/kbv3pwgfXshTI6tEcQT1OOwj7BAksnzGC0rPz0UholwC+AgkqEl3EJX3M1A==", - "requires": {} - } - } - }, "@react-aria/ssr": { "version": "3.8.0", "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.8.0.tgz", @@ -29480,30 +31252,95 @@ "axe-core": "^4.2.0", "lodash": "^4.17.21", "react-resize-detector": "^7.1.2" + }, + "dependencies": { + "@storybook/components": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.5.tgz", + "integrity": "sha512-boskkfvMBB8CFYY9+1ofFNyKrdWXTY/ghzt7oK80dz6f2Eseo/WXK3OsCdCq5vWbLRCdbgJ8zXG8pAFi4yBsxA==", + "dev": true, + "requires": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/manager-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", + "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", + "dev": true, + "requires": { + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "semver": "^7.3.7", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/theming": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", + "dev": true, + "requires": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.4.5", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + } + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "@storybook/addon-actions": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.4.5.tgz", - "integrity": "sha512-FkjJWmPN/+duLSkRwfa2bwlwjKfY6yCXYn7CRzn3rb64B8f50NB79zAgVLHjkJh9l6T3DIlWtol6vqPHj1aRpw==", + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.6.15.tgz", + "integrity": "sha512-2Jfvbahe/tmq1iNnNxmcP0JnX0rqCuijjXXai9yMDV3koIMawn6t88MPVrdcso5ch/fxE45522nZqA3SZJbM4g==", "dev": true, "requires": { - "@storybook/client-logger": "7.4.5", - "@storybook/components": "7.4.5", - "@storybook/core-events": "7.4.5", + "@storybook/core-events": "7.6.15", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.4.5", - "@storybook/preview-api": "7.4.5", - "@storybook/theming": "7.4.5", - "@storybook/types": "7.4.5", + "@types/uuid": "^9.0.1", "dequal": "^2.0.2", - "lodash": "^4.17.21", "polished": "^4.2.2", - "prop-types": "^15.7.2", - "react-inspector": "^6.0.0", - "telejson": "^7.2.0", - "ts-dedent": "^2.0.0", "uuid": "^9.0.0" + }, + "dependencies": { + "@storybook/core-events": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.6.15.tgz", + "integrity": "sha512-i4YnjGecbpGyrFe0340sPhQ9QjZZEBqvMy6kF4XWt6DYLHxZmsTj1HEdvxVl4Ej7V49Vw0Dm8MepJ1d4Y8MKrQ==", + "dev": true, + "requires": { + "ts-dedent": "^2.0.0" + } + } } }, "@storybook/addon-backgrounds": { @@ -29522,6 +31359,70 @@ "@storybook/types": "7.4.5", "memoizerific": "^1.11.3", "ts-dedent": "^2.0.0" + }, + "dependencies": { + "@storybook/components": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.5.tgz", + "integrity": "sha512-boskkfvMBB8CFYY9+1ofFNyKrdWXTY/ghzt7oK80dz6f2Eseo/WXK3OsCdCq5vWbLRCdbgJ8zXG8pAFi4yBsxA==", + "dev": true, + "requires": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/manager-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", + "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", + "dev": true, + "requires": { + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "semver": "^7.3.7", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/theming": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", + "dev": true, + "requires": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.4.5", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + } + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "@storybook/addon-controls": { @@ -29542,6 +31443,70 @@ "@storybook/types": "7.4.5", "lodash": "^4.17.21", "ts-dedent": "^2.0.0" + }, + "dependencies": { + "@storybook/components": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.5.tgz", + "integrity": "sha512-boskkfvMBB8CFYY9+1ofFNyKrdWXTY/ghzt7oK80dz6f2Eseo/WXK3OsCdCq5vWbLRCdbgJ8zXG8pAFi4yBsxA==", + "dev": true, + "requires": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/manager-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", + "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", + "dev": true, + "requires": { + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "semver": "^7.3.7", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/theming": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", + "dev": true, + "requires": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.4.5", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + } + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "@storybook/addon-coverage": { @@ -29583,10 +31548,40 @@ "ts-dedent": "^2.0.0" }, "dependencies": { + "@storybook/components": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.5.tgz", + "integrity": "sha512-boskkfvMBB8CFYY9+1ofFNyKrdWXTY/ghzt7oK80dz6f2Eseo/WXK3OsCdCq5vWbLRCdbgJ8zXG8pAFi4yBsxA==", + "dev": true, + "requires": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/theming": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", + "dev": true, + "requires": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.4.5", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + } + }, "fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -29605,9 +31600,9 @@ } }, "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true } } @@ -29632,6 +31627,94 @@ "@storybook/node-logger": "7.4.5", "@storybook/preview-api": "7.4.5", "ts-dedent": "^2.0.0" + }, + "dependencies": { + "@storybook/addon-actions": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.4.5.tgz", + "integrity": "sha512-FkjJWmPN/+duLSkRwfa2bwlwjKfY6yCXYn7CRzn3rb64B8f50NB79zAgVLHjkJh9l6T3DIlWtol6vqPHj1aRpw==", + "dev": true, + "requires": { + "@storybook/client-logger": "7.4.5", + "@storybook/components": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/global": "^5.0.0", + "@storybook/manager-api": "7.4.5", + "@storybook/preview-api": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "polished": "^4.2.2", + "prop-types": "^15.7.2", + "react-inspector": "^6.0.0", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0", + "uuid": "^9.0.0" + } + }, + "@storybook/components": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.5.tgz", + "integrity": "sha512-boskkfvMBB8CFYY9+1ofFNyKrdWXTY/ghzt7oK80dz6f2Eseo/WXK3OsCdCq5vWbLRCdbgJ8zXG8pAFi4yBsxA==", + "dev": true, + "requires": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/manager-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", + "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", + "dev": true, + "requires": { + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "semver": "^7.3.7", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/theming": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", + "dev": true, + "requires": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.4.5", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + } + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "@storybook/addon-highlight": { @@ -29664,6 +31747,70 @@ "jest-mock": "^27.0.6", "polished": "^4.2.2", "ts-dedent": "^2.2.0" + }, + "dependencies": { + "@storybook/components": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.5.tgz", + "integrity": "sha512-boskkfvMBB8CFYY9+1ofFNyKrdWXTY/ghzt7oK80dz6f2Eseo/WXK3OsCdCq5vWbLRCdbgJ8zXG8pAFi4yBsxA==", + "dev": true, + "requires": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/manager-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", + "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", + "dev": true, + "requires": { + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "semver": "^7.3.7", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/theming": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", + "dev": true, + "requires": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.4.5", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + } + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "@storybook/addon-links": { @@ -29682,6 +31829,52 @@ "@storybook/types": "7.4.5", "prop-types": "^15.7.2", "ts-dedent": "^2.0.0" + }, + "dependencies": { + "@storybook/manager-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", + "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", + "dev": true, + "requires": { + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "semver": "^7.3.7", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/theming": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", + "dev": true, + "requires": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.4.5", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + } + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "@storybook/addon-measure": { @@ -29698,6 +31891,70 @@ "@storybook/preview-api": "7.4.5", "@storybook/types": "7.4.5", "tiny-invariant": "^1.3.1" + }, + "dependencies": { + "@storybook/components": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.5.tgz", + "integrity": "sha512-boskkfvMBB8CFYY9+1ofFNyKrdWXTY/ghzt7oK80dz6f2Eseo/WXK3OsCdCq5vWbLRCdbgJ8zXG8pAFi4yBsxA==", + "dev": true, + "requires": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/manager-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", + "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", + "dev": true, + "requires": { + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "semver": "^7.3.7", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/theming": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", + "dev": true, + "requires": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.4.5", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + } + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "@storybook/addon-outline": { @@ -29714,6 +31971,70 @@ "@storybook/preview-api": "7.4.5", "@storybook/types": "7.4.5", "ts-dedent": "^2.0.0" + }, + "dependencies": { + "@storybook/components": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.5.tgz", + "integrity": "sha512-boskkfvMBB8CFYY9+1ofFNyKrdWXTY/ghzt7oK80dz6f2Eseo/WXK3OsCdCq5vWbLRCdbgJ8zXG8pAFi4yBsxA==", + "dev": true, + "requires": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/manager-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", + "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", + "dev": true, + "requires": { + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "semver": "^7.3.7", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/theming": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", + "dev": true, + "requires": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.4.5", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + } + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "@storybook/addon-toolbars": { @@ -29727,6 +32048,70 @@ "@storybook/manager-api": "7.4.5", "@storybook/preview-api": "7.4.5", "@storybook/theming": "7.4.5" + }, + "dependencies": { + "@storybook/components": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.5.tgz", + "integrity": "sha512-boskkfvMBB8CFYY9+1ofFNyKrdWXTY/ghzt7oK80dz6f2Eseo/WXK3OsCdCq5vWbLRCdbgJ8zXG8pAFi4yBsxA==", + "dev": true, + "requires": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/manager-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", + "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", + "dev": true, + "requires": { + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "semver": "^7.3.7", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/theming": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", + "dev": true, + "requires": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.4.5", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + } + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "@storybook/addon-viewport": { @@ -29744,6 +32129,70 @@ "@storybook/theming": "7.4.5", "memoizerific": "^1.11.3", "prop-types": "^15.7.2" + }, + "dependencies": { + "@storybook/components": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.5.tgz", + "integrity": "sha512-boskkfvMBB8CFYY9+1ofFNyKrdWXTY/ghzt7oK80dz6f2Eseo/WXK3OsCdCq5vWbLRCdbgJ8zXG8pAFi4yBsxA==", + "dev": true, + "requires": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/manager-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", + "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", + "dev": true, + "requires": { + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "semver": "^7.3.7", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/theming": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", + "dev": true, + "requires": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.4.5", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + } + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "@storybook/addons": { @@ -29755,16 +32204,73 @@ "@storybook/manager-api": "7.4.5", "@storybook/preview-api": "7.4.5", "@storybook/types": "7.4.5" + }, + "dependencies": { + "@storybook/manager-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", + "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", + "dev": true, + "requires": { + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "semver": "^7.3.7", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/theming": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", + "dev": true, + "requires": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.4.5", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + } + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "@storybook/api": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-7.4.5.tgz", - "integrity": "sha512-NpdW54D/fG0QOHtzjMDEG9+zKjmdq1GdsfVX2YEA7s9vq9FTKpnhNSifphEmDEKzwIm64euRj7FEz8mUPbh27Q==", + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-7.6.15.tgz", + "integrity": "sha512-5JuJI75h7QCKn6Sm1rhVCatKtKcuZCR4hb5b3Ef11xQ3I9bYOtEP403K9xSKe4OcJWBYhIYGqVNSBgeNOa5jCg==", "dev": true, "requires": { - "@storybook/client-logger": "7.4.5", - "@storybook/manager-api": "7.4.5" + "@storybook/client-logger": "7.6.15", + "@storybook/manager-api": "7.6.15" + }, + "dependencies": { + "@storybook/client-logger": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.6.15.tgz", + "integrity": "sha512-n+K8IqnombqiQNnywVovS+lK61tvv/XSfgPt0cgvoF/hJZB0VDOMRjWsV+v9qQpj1TQEl1lLWeJwZMthTWupJA==", + "dev": true, + "requires": { + "@storybook/global": "^5.0.0" + } + } } }, "@storybook/blocks": { @@ -29798,6 +32304,59 @@ "util-deprecate": "^1.0.2" }, "dependencies": { + "@storybook/components": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.5.tgz", + "integrity": "sha512-boskkfvMBB8CFYY9+1ofFNyKrdWXTY/ghzt7oK80dz6f2Eseo/WXK3OsCdCq5vWbLRCdbgJ8zXG8pAFi4yBsxA==", + "dev": true, + "requires": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/manager-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", + "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", + "dev": true, + "requires": { + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "semver": "^7.3.7", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/theming": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", + "dev": true, + "requires": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.4.5", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -29812,6 +32371,15 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } } } }, @@ -29920,16 +32488,69 @@ "webpack-virtual-modules": "^0.5.0" }, "dependencies": { + "@storybook/components": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.5.tgz", + "integrity": "sha512-boskkfvMBB8CFYY9+1ofFNyKrdWXTY/ghzt7oK80dz6f2Eseo/WXK3OsCdCq5vWbLRCdbgJ8zXG8pAFi4yBsxA==", + "dev": true, + "requires": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/manager-api": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", + "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", + "dev": true, + "requires": { + "@storybook/channels": "7.4.5", + "@storybook/client-logger": "7.4.5", + "@storybook/core-events": "7.4.5", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.4.5", + "@storybook/theming": "7.4.5", + "@storybook/types": "7.4.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "semver": "^7.3.7", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/theming": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", + "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", + "dev": true, + "requires": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.4.5", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + } + }, "@types/node": { - "version": "16.18.54", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.54.tgz", - "integrity": "sha512-oTmGy68gxZZ21FhTJVVvZBYpQHEBZxHKTsGshobMqm9qWpbqdZsA5jvsuPZcHu0KwpmLrOHWPdEfg7XDpNT9UA==", + "version": "16.18.80", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.80.tgz", + "integrity": "sha512-vFxJ1Iyl7A0+xB0uW1r1v504yItKZLdqg/VZELUZ4H02U0bXAgBisSQ8Erf0DMruNFz9ggoiEv6T8Ll9bTg8Jw==", "dev": true }, "fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -29948,18 +32569,18 @@ } }, "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "requires": { "lru-cache": "^6.0.0" } }, "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true } } @@ -30199,31 +32820,145 @@ } }, "@storybook/components": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.4.5.tgz", - "integrity": "sha512-boskkfvMBB8CFYY9+1ofFNyKrdWXTY/ghzt7oK80dz6f2Eseo/WXK3OsCdCq5vWbLRCdbgJ8zXG8pAFi4yBsxA==", + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.6.15.tgz", + "integrity": "sha512-xD+maP7+C9HeZXi2vJ+uK9hXN4S4spP4uDj9pyZ9yViKb+ztEO6WpovUMT8WRQ0mMegWyLXkx3zqu43hZvXM1g==", "dev": true, "requires": { "@radix-ui/react-select": "^1.2.2", "@radix-ui/react-toolbar": "^1.0.4", - "@storybook/client-logger": "7.4.5", - "@storybook/csf": "^0.1.0", + "@storybook/client-logger": "7.6.15", + "@storybook/csf": "^0.1.2", "@storybook/global": "^5.0.0", - "@storybook/theming": "7.4.5", - "@storybook/types": "7.4.5", + "@storybook/theming": "7.6.15", + "@storybook/types": "7.6.15", "memoizerific": "^1.11.3", "use-resize-observer": "^9.1.0", "util-deprecate": "^1.0.2" + }, + "dependencies": { + "@storybook/channels": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.6.15.tgz", + "integrity": "sha512-UPDYRzGkygYFa8QUpEiumWrvZm4u4RKVzgiBt9C4RmHORqkkZzL9LXhaZJp2SmIz1ND5gx6KR5ze8ZnAdwxxoQ==", + "dev": true, + "requires": { + "@storybook/client-logger": "7.6.15", + "@storybook/core-events": "7.6.15", + "@storybook/global": "^5.0.0", + "qs": "^6.10.0", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1" + } + }, + "@storybook/client-logger": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.6.15.tgz", + "integrity": "sha512-n+K8IqnombqiQNnywVovS+lK61tvv/XSfgPt0cgvoF/hJZB0VDOMRjWsV+v9qQpj1TQEl1lLWeJwZMthTWupJA==", + "dev": true, + "requires": { + "@storybook/global": "^5.0.0" + } + }, + "@storybook/core-events": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.6.15.tgz", + "integrity": "sha512-i4YnjGecbpGyrFe0340sPhQ9QjZZEBqvMy6kF4XWt6DYLHxZmsTj1HEdvxVl4Ej7V49Vw0Dm8MepJ1d4Y8MKrQ==", + "dev": true, + "requires": { + "ts-dedent": "^2.0.0" + } + }, + "@storybook/types": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.6.15.tgz", + "integrity": "sha512-tLH0lK6SXECSfMpKin9bge+7XiHZII17n6jc9ZI1TfSBZJyq3M6VzWh2r1C2lC97FlkcKXjIwM3n8h1xNjnI+A==", + "dev": true, + "requires": { + "@storybook/channels": "7.6.15", + "@types/babel__core": "^7.0.0", + "@types/express": "^4.7.0", + "file-system-cache": "2.3.0" + } + } } }, "@storybook/core-client": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.4.5.tgz", - "integrity": "sha512-d/qiCUZeOKY0HX/YmomxlccxJ2NKC3ttRrAsAXzJGypClKabv20X+qbeO/E7Kp5UQxIEJx1wuwJPcnlCvjgPDA==", + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.6.15.tgz", + "integrity": "sha512-jwWol+zo+ItKBzPm9i80bEL6seHMsV0wKSaViVMQ4TqHtEbNeFE8sFEc2NTr18VNBnQOdlQPnEWmdboXBUrGcA==", "dev": true, "requires": { - "@storybook/client-logger": "7.4.5", - "@storybook/preview-api": "7.4.5" + "@storybook/client-logger": "7.6.15", + "@storybook/preview-api": "7.6.15" + }, + "dependencies": { + "@storybook/channels": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.6.15.tgz", + "integrity": "sha512-UPDYRzGkygYFa8QUpEiumWrvZm4u4RKVzgiBt9C4RmHORqkkZzL9LXhaZJp2SmIz1ND5gx6KR5ze8ZnAdwxxoQ==", + "dev": true, + "requires": { + "@storybook/client-logger": "7.6.15", + "@storybook/core-events": "7.6.15", + "@storybook/global": "^5.0.0", + "qs": "^6.10.0", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1" + } + }, + "@storybook/client-logger": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.6.15.tgz", + "integrity": "sha512-n+K8IqnombqiQNnywVovS+lK61tvv/XSfgPt0cgvoF/hJZB0VDOMRjWsV+v9qQpj1TQEl1lLWeJwZMthTWupJA==", + "dev": true, + "requires": { + "@storybook/global": "^5.0.0" + } + }, + "@storybook/core-events": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.6.15.tgz", + "integrity": "sha512-i4YnjGecbpGyrFe0340sPhQ9QjZZEBqvMy6kF4XWt6DYLHxZmsTj1HEdvxVl4Ej7V49Vw0Dm8MepJ1d4Y8MKrQ==", + "dev": true, + "requires": { + "ts-dedent": "^2.0.0" + } + }, + "@storybook/preview-api": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.6.15.tgz", + "integrity": "sha512-2KN9vlizF6sFlYsJEGnFqcQaJXs4TTdawC1VazVdtaMSHANDxxDu8F1cP+u7lpPH3DkNZUmTGQDBYfYY9xR0eQ==", + "dev": true, + "requires": { + "@storybook/channels": "7.6.15", + "@storybook/client-logger": "7.6.15", + "@storybook/core-events": "7.6.15", + "@storybook/csf": "^0.1.2", + "@storybook/global": "^5.0.0", + "@storybook/types": "7.6.15", + "@types/qs": "^6.9.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/types": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.6.15.tgz", + "integrity": "sha512-tLH0lK6SXECSfMpKin9bge+7XiHZII17n6jc9ZI1TfSBZJyq3M6VzWh2r1C2lC97FlkcKXjIwM3n8h1xNjnI+A==", + "dev": true, + "requires": { + "@storybook/channels": "7.6.15", + "@types/babel__core": "^7.0.0", + "@types/express": "^4.7.0", + "file-system-cache": "2.3.0" + } + } } }, "@storybook/core-common": { @@ -30608,9 +33343,9 @@ } }, "@storybook/csf": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.1.tgz", - "integrity": "sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.2.tgz", + "integrity": "sha512-ePrvE/pS1vsKR9Xr+o+YwdqNgHUyXvg+1Xjx0h9LrVx7Zq4zNe06pd63F5EvzTbCbJsHj7GHr9tkiaqm7U8WRA==", "dev": true, "requires": { "type-fest": "^2.19.0" @@ -30726,35 +33461,80 @@ "dev": true }, "@storybook/manager-api": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.4.5.tgz", - "integrity": "sha512-8Hdh5Tutet8xRy2fAknczfvpshz09eVnLd8m34vcFceUOYvEnvDbWerufhlEzovsF4v7U32uqbDHKdKTamWEQQ==", + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.6.15.tgz", + "integrity": "sha512-cPBsXcnJiaO3QyaEum2JgdihYea3cI03FeV35JdrBYLIelT4oqbYFnzjznsFg9+Ia9iAbz7aOBNyyRsWnC/UKw==", "dev": true, "requires": { - "@storybook/channels": "7.4.5", - "@storybook/client-logger": "7.4.5", - "@storybook/core-events": "7.4.5", - "@storybook/csf": "^0.1.0", + "@storybook/channels": "7.6.15", + "@storybook/client-logger": "7.6.15", + "@storybook/core-events": "7.6.15", + "@storybook/csf": "^0.1.2", "@storybook/global": "^5.0.0", - "@storybook/router": "7.4.5", - "@storybook/theming": "7.4.5", - "@storybook/types": "7.4.5", + "@storybook/router": "7.6.15", + "@storybook/theming": "7.6.15", + "@storybook/types": "7.6.15", "dequal": "^2.0.2", "lodash": "^4.17.21", "memoizerific": "^1.11.3", - "semver": "^7.3.7", "store2": "^2.14.2", "telejson": "^7.2.0", "ts-dedent": "^2.0.0" }, "dependencies": { - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "@storybook/channels": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.6.15.tgz", + "integrity": "sha512-UPDYRzGkygYFa8QUpEiumWrvZm4u4RKVzgiBt9C4RmHORqkkZzL9LXhaZJp2SmIz1ND5gx6KR5ze8ZnAdwxxoQ==", "dev": true, "requires": { - "lru-cache": "^6.0.0" + "@storybook/client-logger": "7.6.15", + "@storybook/core-events": "7.6.15", + "@storybook/global": "^5.0.0", + "qs": "^6.10.0", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1" + } + }, + "@storybook/client-logger": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.6.15.tgz", + "integrity": "sha512-n+K8IqnombqiQNnywVovS+lK61tvv/XSfgPt0cgvoF/hJZB0VDOMRjWsV+v9qQpj1TQEl1lLWeJwZMthTWupJA==", + "dev": true, + "requires": { + "@storybook/global": "^5.0.0" + } + }, + "@storybook/core-events": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.6.15.tgz", + "integrity": "sha512-i4YnjGecbpGyrFe0340sPhQ9QjZZEBqvMy6kF4XWt6DYLHxZmsTj1HEdvxVl4Ej7V49Vw0Dm8MepJ1d4Y8MKrQ==", + "dev": true, + "requires": { + "ts-dedent": "^2.0.0" + } + }, + "@storybook/router": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.6.15.tgz", + "integrity": "sha512-5yhXXoVZ1iKUgeZoO8PGqBclrLgoJisxIYVK/Y1iJMXZ2ZvwUiTswLALT6lu97tSrcoBVxmqSghg0+U0YEU4Fg==", + "dev": true, + "requires": { + "@storybook/client-logger": "7.6.15", + "memoizerific": "^1.11.3", + "qs": "^6.10.0" + } + }, + "@storybook/types": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.6.15.tgz", + "integrity": "sha512-tLH0lK6SXECSfMpKin9bge+7XiHZII17n6jc9ZI1TfSBZJyq3M6VzWh2r1C2lC97FlkcKXjIwM3n8h1xNjnI+A==", + "dev": true, + "requires": { + "@storybook/channels": "7.6.15", + "@types/babel__core": "^7.0.0", + "@types/express": "^4.7.0", + "file-system-cache": "2.3.0" } } } @@ -30801,16 +33581,55 @@ "webpack": "5" }, "dependencies": { + "@storybook/core-client": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.4.5.tgz", + "integrity": "sha512-d/qiCUZeOKY0HX/YmomxlccxJ2NKC3ttRrAsAXzJGypClKabv20X+qbeO/E7Kp5UQxIEJx1wuwJPcnlCvjgPDA==", + "dev": true, + "requires": { + "@storybook/client-logger": "7.4.5", + "@storybook/preview-api": "7.4.5" + } + }, + "@storybook/react": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.4.5.tgz", + "integrity": "sha512-Tiylrs3uFO8QSvH1w3ueSxlAgh2fteH0edRVKaX01M/h47+QqEiZqq/dYkVDvLHngF+CCCwE3OY8nNe6L14Xkw==", + "dev": true, + "requires": { + "@storybook/client-logger": "7.4.5", + "@storybook/core-client": "7.4.5", + "@storybook/docs-tools": "7.4.5", + "@storybook/global": "^5.0.0", + "@storybook/preview-api": "7.4.5", + "@storybook/react-dom-shim": "7.4.5", + "@storybook/types": "7.4.5", + "@types/escodegen": "^0.0.6", + "@types/estree": "^0.0.51", + "@types/node": "^16.0.0", + "acorn": "^7.4.1", + "acorn-jsx": "^5.3.1", + "acorn-walk": "^7.2.0", + "escodegen": "^2.1.0", + "html-tags": "^3.1.0", + "lodash": "^4.17.21", + "prop-types": "^15.7.2", + "react-element-to-jsx-string": "^15.0.0", + "ts-dedent": "^2.0.0", + "type-fest": "~2.19", + "util-deprecate": "^1.0.2" + } + }, "@types/node": { - "version": "16.18.54", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.54.tgz", - "integrity": "sha512-oTmGy68gxZZ21FhTJVVvZBYpQHEBZxHKTsGshobMqm9qWpbqdZsA5jvsuPZcHu0KwpmLrOHWPdEfg7XDpNT9UA==", + "version": "16.18.80", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.80.tgz", + "integrity": "sha512-vFxJ1Iyl7A0+xB0uW1r1v504yItKZLdqg/VZELUZ4H02U0bXAgBisSQ8Erf0DMruNFz9ggoiEv6T8Ll9bTg8Jw==", "dev": true }, "fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -30829,18 +33648,24 @@ } }, "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "requires": { "lru-cache": "^6.0.0" } }, + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true + }, "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true } } @@ -30874,21 +33699,21 @@ } }, "@storybook/react": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.4.5.tgz", - "integrity": "sha512-Tiylrs3uFO8QSvH1w3ueSxlAgh2fteH0edRVKaX01M/h47+QqEiZqq/dYkVDvLHngF+CCCwE3OY8nNe6L14Xkw==", + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.6.15.tgz", + "integrity": "sha512-oJMSh4iTGu6OqCmj0LhkuPyMkxGMTCoohN4HcDpXd96jCSyWotVebRsg9xm5ddB7f54e6DY4XDoGH0WnVoR23g==", "dev": true, "requires": { - "@storybook/client-logger": "7.4.5", - "@storybook/core-client": "7.4.5", - "@storybook/docs-tools": "7.4.5", + "@storybook/client-logger": "7.6.15", + "@storybook/core-client": "7.6.15", + "@storybook/docs-tools": "7.6.15", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.4.5", - "@storybook/react-dom-shim": "7.4.5", - "@storybook/types": "7.4.5", + "@storybook/preview-api": "7.6.15", + "@storybook/react-dom-shim": "7.6.15", + "@storybook/types": "7.6.15", "@types/escodegen": "^0.0.6", "@types/estree": "^0.0.51", - "@types/node": "^16.0.0", + "@types/node": "^18.0.0", "acorn": "^7.4.1", "acorn-jsx": "^5.3.1", "acorn-walk": "^7.2.0", @@ -30902,17 +33727,305 @@ "util-deprecate": "^1.0.2" }, "dependencies": { - "@types/node": { - "version": "16.18.54", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.54.tgz", - "integrity": "sha512-oTmGy68gxZZ21FhTJVVvZBYpQHEBZxHKTsGshobMqm9qWpbqdZsA5jvsuPZcHu0KwpmLrOHWPdEfg7XDpNT9UA==", + "@storybook/channels": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.6.15.tgz", + "integrity": "sha512-UPDYRzGkygYFa8QUpEiumWrvZm4u4RKVzgiBt9C4RmHORqkkZzL9LXhaZJp2SmIz1ND5gx6KR5ze8ZnAdwxxoQ==", + "dev": true, + "requires": { + "@storybook/client-logger": "7.6.15", + "@storybook/core-events": "7.6.15", + "@storybook/global": "^5.0.0", + "qs": "^6.10.0", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1" + } + }, + "@storybook/client-logger": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.6.15.tgz", + "integrity": "sha512-n+K8IqnombqiQNnywVovS+lK61tvv/XSfgPt0cgvoF/hJZB0VDOMRjWsV+v9qQpj1TQEl1lLWeJwZMthTWupJA==", + "dev": true, + "requires": { + "@storybook/global": "^5.0.0" + } + }, + "@storybook/core-common": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.6.15.tgz", + "integrity": "sha512-VGmcLJ5U1r1s8/YnLbKcyB4GnNL+/sZIPqwlcSKzDXO76HoVFv1kywf7PbASote7P3gdhLSxBdg95LH2bdIbmw==", + "dev": true, + "requires": { + "@storybook/core-events": "7.6.15", + "@storybook/node-logger": "7.6.15", + "@storybook/types": "7.6.15", + "@types/find-cache-dir": "^3.2.1", + "@types/node": "^18.0.0", + "@types/node-fetch": "^2.6.4", + "@types/pretty-hrtime": "^1.0.0", + "chalk": "^4.1.0", + "esbuild": "^0.18.0", + "esbuild-register": "^3.5.0", + "file-system-cache": "2.3.0", + "find-cache-dir": "^3.0.0", + "find-up": "^5.0.0", + "fs-extra": "^11.1.0", + "glob": "^10.0.0", + "handlebars": "^4.7.7", + "lazy-universal-dotenv": "^4.0.0", + "node-fetch": "^2.0.0", + "picomatch": "^2.3.0", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/core-events": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.6.15.tgz", + "integrity": "sha512-i4YnjGecbpGyrFe0340sPhQ9QjZZEBqvMy6kF4XWt6DYLHxZmsTj1HEdvxVl4Ej7V49Vw0Dm8MepJ1d4Y8MKrQ==", + "dev": true, + "requires": { + "ts-dedent": "^2.0.0" + } + }, + "@storybook/docs-tools": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.6.15.tgz", + "integrity": "sha512-npZEaI9Wpn9uJcRXFElqyiRw8bSxt95mLywPiEEGMT2kE5FfXM8d5Uj5O64kzoXdRI9IhRPEEZZidOtA/UInfQ==", + "dev": true, + "requires": { + "@storybook/core-common": "7.6.15", + "@storybook/preview-api": "7.6.15", + "@storybook/types": "7.6.15", + "@types/doctrine": "^0.0.3", + "assert": "^2.1.0", + "doctrine": "^3.0.0", + "lodash": "^4.17.21" + } + }, + "@storybook/node-logger": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.6.15.tgz", + "integrity": "sha512-C+sCvRjR+5uVU3VTrfyv7/RlPBxesAjIucUAK0keGyIZ7sFQYCPdkm4m/C4s+TcubgAzVvuoUHlRrSppdA7WzQ==", + "dev": true + }, + "@storybook/preview-api": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.6.15.tgz", + "integrity": "sha512-2KN9vlizF6sFlYsJEGnFqcQaJXs4TTdawC1VazVdtaMSHANDxxDu8F1cP+u7lpPH3DkNZUmTGQDBYfYY9xR0eQ==", + "dev": true, + "requires": { + "@storybook/channels": "7.6.15", + "@storybook/client-logger": "7.6.15", + "@storybook/core-events": "7.6.15", + "@storybook/csf": "^0.1.2", + "@storybook/global": "^5.0.0", + "@storybook/types": "7.6.15", + "@types/qs": "^6.9.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/react-dom-shim": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.6.15.tgz", + "integrity": "sha512-2+X0HIxIyvjfSKVyGGjSJJLEFJ2ox7Rr8FjlMiRo5QfoOJhohZuWH7p4Lw7JMwm5PotnjrwlfsZI3cCilYJeYA==", + "dev": true, + "requires": {} + }, + "@storybook/types": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.6.15.tgz", + "integrity": "sha512-tLH0lK6SXECSfMpKin9bge+7XiHZII17n6jc9ZI1TfSBZJyq3M6VzWh2r1C2lC97FlkcKXjIwM3n8h1xNjnI+A==", + "dev": true, + "requires": { + "@storybook/channels": "7.6.15", + "@types/babel__core": "^7.0.0", + "@types/express": "^4.7.0", + "file-system-cache": "2.3.0" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "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, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, + "fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "requires": { + "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" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "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, + "requires": { + "p-locate": "^5.0.0" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "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, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "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, + "requires": { + "p-limit": "^3.0.2" + } + }, + "pkg-dir": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "dev": true, + "requires": { + "find-up": "^5.0.0" + } + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, "type-fest": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true } } }, @@ -30958,11 +34071,56 @@ "@types/node": "^16.0.0" }, "dependencies": { + "@storybook/core-client": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.4.5.tgz", + "integrity": "sha512-d/qiCUZeOKY0HX/YmomxlccxJ2NKC3ttRrAsAXzJGypClKabv20X+qbeO/E7Kp5UQxIEJx1wuwJPcnlCvjgPDA==", + "dev": true, + "requires": { + "@storybook/client-logger": "7.4.5", + "@storybook/preview-api": "7.4.5" + } + }, + "@storybook/react": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.4.5.tgz", + "integrity": "sha512-Tiylrs3uFO8QSvH1w3ueSxlAgh2fteH0edRVKaX01M/h47+QqEiZqq/dYkVDvLHngF+CCCwE3OY8nNe6L14Xkw==", + "dev": true, + "requires": { + "@storybook/client-logger": "7.4.5", + "@storybook/core-client": "7.4.5", + "@storybook/docs-tools": "7.4.5", + "@storybook/global": "^5.0.0", + "@storybook/preview-api": "7.4.5", + "@storybook/react-dom-shim": "7.4.5", + "@storybook/types": "7.4.5", + "@types/escodegen": "^0.0.6", + "@types/estree": "^0.0.51", + "@types/node": "^16.0.0", + "acorn": "^7.4.1", + "acorn-jsx": "^5.3.1", + "acorn-walk": "^7.2.0", + "escodegen": "^2.1.0", + "html-tags": "^3.1.0", + "lodash": "^4.17.21", + "prop-types": "^15.7.2", + "react-element-to-jsx-string": "^15.0.0", + "ts-dedent": "^2.0.0", + "type-fest": "~2.19", + "util-deprecate": "^1.0.2" + } + }, "@types/node": { "version": "16.18.54", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.54.tgz", "integrity": "sha512-oTmGy68gxZZ21FhTJVVvZBYpQHEBZxHKTsGshobMqm9qWpbqdZsA5jvsuPZcHu0KwpmLrOHWPdEfg7XDpNT9UA==", "dev": true + }, + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true } } }, @@ -31186,96 +34344,36 @@ "ts-dedent": "^2.2.0" }, "dependencies": { - "@testing-library/dom": { - "version": "9.3.3", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.3.tgz", - "integrity": "sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/runtime": "^7.12.5", - "@types/aria-query": "^5.0.1", - "aria-query": "5.1.3", - "chalk": "^4.1.0", - "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.5.0", - "pretty-format": "^27.0.2" - } - }, "@testing-library/user-event": { "version": "14.4.3", "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.4.3.tgz", "integrity": "sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q==", "dev": true, "requires": {} - }, - "@types/aria-query": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.2.tgz", - "integrity": "sha512-PHKZuMN+K5qgKIWhBodXzQslTo5P+K/6LqeKXS6O/4liIDdZqaX5RXrCK++LAw+y/nptN48YmUMFiQHRSWYwtQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } } } }, "@storybook/theming": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.5.tgz", - "integrity": "sha512-QSIJDIMzOegzlhubIBaYIovf4mlf+AVL0SmQOskPS8GZ6s9t77yUUI6gZTEjO+S4eB3djXRsfTTijQ8+z4XmRA==", + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.6.15.tgz", + "integrity": "sha512-9PpsHAbUf6o0w33/P3mnb7QheTmfGlTYCismj5HMM1O2/zY0kQK9XcG9W+Cyvu56D/lFC19fz9YHQY8W4AbfnQ==", "dev": true, "requires": { "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.4.5", + "@storybook/client-logger": "7.6.15", "@storybook/global": "^5.0.0", "memoizerific": "^1.11.3" + }, + "dependencies": { + "@storybook/client-logger": { + "version": "7.6.15", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.6.15.tgz", + "integrity": "sha512-n+K8IqnombqiQNnywVovS+lK61tvv/XSfgPt0cgvoF/hJZB0VDOMRjWsV+v9qQpj1TQEl1lLWeJwZMthTWupJA==", + "dev": true, + "requires": { + "@storybook/global": "^5.0.0" + } + } } }, "@storybook/types": { @@ -31318,9 +34416,9 @@ "optional": true }, "@swc/counter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.1.tgz", - "integrity": "sha512-xVRaR4u9hcYjFvcSg71Lz5Bo4//CyjAAfMxa7UsaDSYxAshflUkVJWiyVWrfxC59z2kP1IzI4/1BEpnhI9o3Mw==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", "dev": true }, "@swc/helpers": { @@ -31363,17 +34461,18 @@ } }, "@testing-library/dom": { - "version": "8.11.3", - "integrity": "sha512-9LId28I+lx70wUiZjLvi1DB/WT2zGOxUh46glrSNMaWVx849kKAluezVzZrXJfTKKoQTmEOutLes/bHg4Bj3aA==", + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.4.tgz", + "integrity": "sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==", "dev": true, "requires": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", - "@types/aria-query": "^4.2.0", - "aria-query": "^5.0.0", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", "chalk": "^4.1.0", "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.4.4", + "lz-string": "^1.5.0", "pretty-format": "^27.0.2" }, "dependencies": { @@ -31484,33 +34583,22 @@ } }, "@testing-library/react": { - "version": "12.1.3", - "integrity": "sha512-oCULRXWRrBtC9m6G/WohPo1GLcLesH7T4fuKzRAKn1CWVu9BzXtqLXDDTA6KhFNNtRwLtfSMr20HFl+Qrdrvmg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.12.5", - "@testing-library/dom": "^8.0.0", - "@types/react-dom": "*" - } - }, - "@testing-library/react-hooks": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@testing-library/react-hooks/-/react-hooks-8.0.0.tgz", - "integrity": "sha512-uZqcgtcUUtw7Z9N32W13qQhVAD+Xki2hxbTR461MKax8T6Jr8nsUvZB+vcBTkzY2nFvsUet434CsgF0ncW2yFw==", + "version": "14.2.1", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.2.1.tgz", + "integrity": "sha512-sGdjws32ai5TLerhvzThYFbpnF9XtL65Cjf+gB0Dhr29BGqK+mAeN7SURSdu+eqgET4ANcWoC7FQpkaiGvBr+A==", "dev": true, "requires": { "@babel/runtime": "^7.12.5", - "react-error-boundary": "^3.1.0" + "@testing-library/dom": "^9.0.0", + "@types/react-dom": "^18.0.0" } }, "@testing-library/user-event": { - "version": "13.5.0", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz", - "integrity": "sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==", + "version": "14.5.2", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", + "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", "dev": true, - "requires": { - "@babel/runtime": "^7.12.5" - } + "requires": {} }, "@tootallnate/once": { "version": "2.0.0", @@ -31524,8 +34612,9 @@ "dev": true }, "@types/aria-query": { - "version": "4.2.2", - "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", "dev": true }, "@types/babel__core": { @@ -31857,9 +34946,9 @@ } }, "@types/mdx": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.8.tgz", - "integrity": "sha512-r7/zWe+f9x+zjXqGxf821qz++ld8tp6Z4jUS6qmPZUXH6tfh4riXOhAqb12tWGWAevCFtMt1goLWkQMqIJKpsA==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.11.tgz", + "integrity": "sha512-HM5bwOaIQJIQbAYfax35HCKxx7a3KrK3nBtIqJgSOitivTD1y3oW9P3rxY9RkXYPUk7y/AjAohfHKmFpGE79zw==", "dev": true }, "@types/mime": { @@ -31875,9 +34964,13 @@ "dev": true }, "@types/node": { - "version": "17.0.10", - "integrity": "sha512-S/3xB4KzyFxYGCppyDt68yzBU9ysL88lSdIah4D6cptdcltc4NCPCAMc0+PCpg/lLIyC7IPvj2Z52OJWeIUkog==", - "dev": true + "version": "18.19.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.15.tgz", + "integrity": "sha512-AMZ2UWx+woHNfM11PyAEQmfSxi05jm9OlkxczuHeEqmvwPkYj6MWv44gbzDPefYOLysTOFyI3ziiy2ONmUZfpA==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } }, "@types/node-fetch": { "version": "2.6.6", @@ -31944,12 +35037,12 @@ } }, "@types/react-dom": { - "version": "17.0.21", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.21.tgz", - "integrity": "sha512-3rQEFUNUUz2MYiRwJJj6UekcW7rFLOtmK7ajQP7qJpjNdggInl3I/xM4I3Hq1yYPdCGVMgax1gZsB7BBTtayXg==", + "version": "18.2.19", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.19.tgz", + "integrity": "sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==", "dev": true, "requires": { - "@types/react": "^17" + "@types/react": "*" } }, "@types/scheduler": { @@ -32021,9 +35114,15 @@ "dev": true }, "@types/unist": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.8.tgz", - "integrity": "sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==", + "dev": true + }, + "@types/uuid": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", "dev": true }, "@types/wait-on": { @@ -32758,6 +35857,19 @@ "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", "dev": true }, + "assert": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" + } + }, "ast-types": { "version": "0.16.1", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", @@ -33607,9 +36719,9 @@ "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" }, "clean-css": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", - "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "dev": true, "requires": { "source-map": "~0.6.0" @@ -34032,25 +37144,25 @@ } }, "css-loader": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", - "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz", + "integrity": "sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==", "dev": true, "requires": { "icss-utils": "^5.1.0", - "postcss": "^8.4.21", + "postcss": "^8.4.33", "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.3", - "postcss-modules-scope": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.4", + "postcss-modules-scope": "^3.1.1", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.2.0", - "semver": "^7.3.8" + "semver": "^7.5.4" }, "dependencies": { "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -36205,9 +39317,9 @@ } }, "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -36223,9 +39335,9 @@ } }, "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true } } @@ -36920,9 +40032,9 @@ "dev": true }, "html-webpack-plugin": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", - "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", + "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", "dev": true, "requires": { "@types/html-minifier-terser": "^6.0.0", @@ -40200,9 +43312,9 @@ } }, "markdown-to-jsx": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.3.2.tgz", - "integrity": "sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.4.1.tgz", + "integrity": "sha512-GbrbkTnHp9u6+HqbPRFJbObi369AgJNXi/sGqq5HRsoZW063xR1XDCaConqq+whfEIAlzB1YPnOgsPc7B7bc/A==", "dev": true, "requires": {} }, @@ -40496,9 +43608,9 @@ } }, "nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" }, "natural-compare": { "version": "1.4.0", @@ -41296,11 +44408,11 @@ } }, "postcss": { - "version": "8.4.30", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.30.tgz", - "integrity": "sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==", + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", "requires": { - "nanoid": "^3.3.6", + "nanoid": "^3.3.7", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } @@ -41349,9 +44461,9 @@ "requires": {} }, "postcss-modules-local-by-default": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", - "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz", + "integrity": "sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==", "dev": true, "requires": { "icss-utils": "^5.0.0", @@ -41360,9 +44472,9 @@ } }, "postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz", + "integrity": "sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.4" @@ -41731,18 +44843,17 @@ } }, "react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" } }, "react-collapsed": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/react-collapsed/-/react-collapsed-3.6.0.tgz", - "integrity": "sha512-QqtogOGl5hM9L7j7rlMCYxm4jD8Ovr8voqyYS1g5ltADhUNvxbbgtJ5MwRiajJ0DmYFOZHShpnSPz4wvJaOiKA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/react-collapsed/-/react-collapsed-4.1.2.tgz", + "integrity": "sha512-vusqVnW/VbFCKJx29KNTnjJrwCbV7k3bB/FiO9/0Fj7JNoNarkU1xU7yK4FZHqPW0Q2izB7o6fYzG16zgdDNMQ==", "requires": { "tiny-warning": "^1.0.3" } @@ -41797,13 +44908,12 @@ "requires": {} }, "react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", "requires": { "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" + "scheduler": "^0.23.0" } }, "react-element-to-jsx-string": { @@ -41831,15 +44941,6 @@ } } }, - "react-error-boundary": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz", - "integrity": "sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.12.5" - } - }, "react-inspector": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/react-inspector/-/react-inspector-6.0.2.tgz", @@ -42056,19 +45157,6 @@ "tslib": "^2.0.1" }, "dependencies": { - "assert": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", - "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "is-nan": "^1.3.2", - "object-is": "^1.1.5", - "object.assign": "^4.1.4", - "util": "^0.12.5" - } - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -42463,12 +45551,11 @@ } }, "scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" } }, "schema-utils": { @@ -43033,9 +46120,9 @@ "dev": true }, "style-loader": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.3.tgz", - "integrity": "sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", + "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", "dev": true, "requires": {} }, @@ -43097,11 +46184,13 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, "swc-loader": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.3.tgz", - "integrity": "sha512-D1p6XXURfSPleZZA/Lipb3A8pZ17fP4NObZvFCDjK/OKljroqDpPmsBdTraWhVBqUNpcWBQY1imWdoPScRlQ7A==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.6.tgz", + "integrity": "sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==", "dev": true, - "requires": {} + "requires": { + "@swc/counter": "^0.1.3" + } }, "symbol-tree": { "version": "3.2.4", @@ -43475,9 +46564,9 @@ } }, "tocbot": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/tocbot/-/tocbot-4.21.1.tgz", - "integrity": "sha512-IfajhBTeg0HlMXu1f+VMbPef05QpDTsZ9X2Yn1+8npdaXsXg/+wrm9Ze1WG5OS1UDC3qJ5EQN/XOZ3gfXjPFCw==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/tocbot/-/tocbot-4.25.0.tgz", + "integrity": "sha512-kE5wyCQJ40hqUaRVkyQ4z5+4juzYsv/eK+aqD97N62YH0TxFhzJvo22RUQQZdO3YnXAk42ZOfOpjVdy+Z0YokA==", "dev": true }, "toidentifier": { @@ -43792,6 +46881,12 @@ "integrity": "sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ==", "requires": {} }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -43868,21 +46963,27 @@ "dev": true }, "unplugin": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.5.0.tgz", - "integrity": "sha512-9ZdRwbh/4gcm1JTOkp9lAkIDrtOyOxgHmY7cjuwI8L/2RTikMcVG25GsZwNAgRuap3iDw2jeq7eoqtAsz5rW3A==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.7.1.tgz", + "integrity": "sha512-JqzORDAPxxs8ErLV4x+LL7bk5pk3YlcWqpSNsIkAZj972KzFZLClc/ekppahKkOczGkwIG6ElFgdOgOlK4tXZw==", "dev": true, "requires": { - "acorn": "^8.10.0", + "acorn": "^8.11.3", "chokidar": "^3.5.3", "webpack-sources": "^3.2.3", - "webpack-virtual-modules": "^0.5.0" + "webpack-virtual-modules": "^0.6.1" }, "dependencies": { "acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true + }, + "webpack-virtual-modules": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.1.tgz", + "integrity": "sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==", "dev": true } } @@ -43940,9 +47041,9 @@ } }, "use-callback-ref": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", - "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.1.tgz", + "integrity": "sha512-Lg4Vx1XZQauB42Hw3kK7JM6yjVjgFmFC5/Ab797s79aARomD2nEErc4mCgM8EZrARLmmbWpi5DGCadmK50DcAQ==", "dev": true, "requires": { "tslib": "^2.0.0" diff --git a/package.json b/package.json index a58d17bfb..bd0dab93c 100644 --- a/package.json +++ b/package.json @@ -75,9 +75,8 @@ "@storybook/test-runner": "^0.15.2", "@storybook/testing-library": "^0.2.1", "@testing-library/jest-dom": "^5.16.1", - "@testing-library/react": "^12.1.3", - "@testing-library/react-hooks": "^8.0.0", - "@testing-library/user-event": "^13.5.0", + "@testing-library/react": "^14.2.1", + "@testing-library/user-event": "^14.5.2", "@types/classnames": "^2.3.1", "@types/jest": "^29.1.0", "@types/jest-image-snapshot": "^6.2.3", @@ -99,18 +98,19 @@ "jest-environment-jsdom": "^29.1.1", "jest-image-snapshot": "^6.2.0", "msw": "^0.36.8", - "react": "^17.0.2", - "react-dom": "^17.0.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", "storybook": "^7.4.5", "tailwindcss": "^3.0.23", "ts-jest": "^29.1.1", "tsup": "^8.0.1", - "typescript": "^5.2.2" + "typescript": "^5.2.2", + "util": "^0.12.5" }, "peerDependencies": { "@yext/search-headless-react": "^2.4.0", - "react": "^16.14 || ^17", - "react-dom": "^16.14 || ^17" + "react": "^16.14 || ^17 || ^18", + "react-dom": "^16.14 || ^17 || ^18" }, "jest": { "bail": 0, @@ -153,7 +153,6 @@ "restoreMocks": true }, "dependencies": { - "@reach/auto-id": "^0.18.0", "@restart/ui": "^1.0.1", "@tailwindcss/forms": "^0.5.0", "@yext/analytics": "^0.6.5", @@ -162,7 +161,7 @@ "lodash-es": "^4.17.21", "mapbox-gl": "^2.9.2", "prop-types": "^15.8.1", - "react-collapsed": "3.6.0", + "react-collapsed": "^4.1.2", "recent-searches": "^1.0.5", "tailwind-merge": "^1.3.0", "use-isomorphic-layout-effect": "^1.1.2" diff --git a/src/components/Dropdown/Dropdown.tsx b/src/components/Dropdown/Dropdown.tsx index 9e2c00c41..b01fd9b0e 100644 --- a/src/components/Dropdown/Dropdown.tsx +++ b/src/components/Dropdown/Dropdown.tsx @@ -16,13 +16,10 @@ import { FocusContext, FocusContextType } from './FocusContext'; import { ScreenReader } from '../ScreenReader'; import { recursivelyMapChildren } from '../utils/recursivelyMapChildren'; import { DropdownItem, DropdownItemProps, DropdownItemWithIndex } from './DropdownItem'; -import useIsomorphicLayoutEffect from 'use-isomorphic-layout-effect'; -import { useId } from '@reach/auto-id'; +import { useLayoutEffect } from '../../hooks/useLayoutEffect'; +import { useId } from '../../hooks/useId'; const useRootClose = typeof useRootClosePkg === 'function' ? useRootClosePkg : useRootClosePkg['default']; -const useLayoutEffect = typeof useIsomorphicLayoutEffect === 'function' - ? useIsomorphicLayoutEffect - : useIsomorphicLayoutEffect['default']; interface DropdownItemData { value: string, diff --git a/src/components/Filters/CheckboxOption.tsx b/src/components/Filters/CheckboxOption.tsx index 561501675..87843d2d0 100644 --- a/src/components/Filters/CheckboxOption.tsx +++ b/src/components/Filters/CheckboxOption.tsx @@ -3,9 +3,10 @@ import React, { useCallback, useEffect, useMemo } from 'react'; import { useFiltersContext } from './FiltersContext'; import { useFilterGroupContext } from './FilterGroupContext'; import { useComposedCssClasses } from '../../hooks'; -import { findSelectableFieldValueFilter } from '../../utils/filterutils'; +import { findSelectableFieldValueFilter, isNumberRangeValue, getDefaultFilterDisplayName } from '../../utils/filterutils'; import classNames from 'classnames'; -import { useId } from '@reach/auto-id'; +import { useId } from '../../hooks/useId'; + /** * The configuration data for a field value filter option. * @@ -117,7 +118,12 @@ export function CheckboxOption(props: CheckboxOptionProps): JSX.Element | null { const isSelected = existingStoredFilter ? existingStoredFilter.selected : false; - const labelText = resultsCount ? `${displayName} (${resultsCount})` : displayName; + const displayNameString = isNumberRangeValue(displayName) + ? getDefaultFilterDisplayName(displayName) + : displayName.toString(); + const labelText = resultsCount + ? `${displayNameString} (${resultsCount})` + : displayNameString; const inputClasses = classNames(cssClasses.input, { [cssClasses.input___disabled ?? '']: isOptionsDisabled diff --git a/src/components/Filters/FilterGroupContext.ts b/src/components/Filters/FilterGroupContext.ts index 979e56f5a..bb524a2ad 100644 --- a/src/components/Filters/FilterGroupContext.ts +++ b/src/components/Filters/FilterGroupContext.ts @@ -1,5 +1,7 @@ import { createContext, useContext } from 'react'; -import { UseCollapseOutput } from 'react-collapsed/dist/types'; +import { useCollapse } from 'react-collapsed'; + +type UseCollapseOutput = ReturnType; /** * FilterGroupContext is responsible for searchable filters and collapsible filter groups. diff --git a/src/components/Filters/FilterGroupProvider.tsx b/src/components/Filters/FilterGroupProvider.tsx index aea8cc368..27885f518 100644 --- a/src/components/Filters/FilterGroupProvider.tsx +++ b/src/components/Filters/FilterGroupProvider.tsx @@ -1,5 +1,5 @@ import React, { PropsWithChildren, useMemo, useState } from 'react'; -import useCollapse from 'react-collapsed'; +import { useCollapse } from 'react-collapsed'; import { FilterGroupContext } from './FilterGroupContext'; /** diff --git a/src/components/Filters/RangeInput.tsx b/src/components/Filters/RangeInput.tsx index f3c0f3ea6..06e9f8cad 100644 --- a/src/components/Filters/RangeInput.tsx +++ b/src/components/Filters/RangeInput.tsx @@ -2,7 +2,7 @@ import { Matcher, NumberRangeValue, useSearchActions, useSearchState } from '@ye import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { useFilterGroupContext } from './FilterGroupContext'; import { useComposedCssClasses } from '../../hooks'; -import { clearStaticRangeFilters, findSelectableFieldValueFilter, getSelectableFieldValueFilters, parseNumberRangeInput } from '../../utils/filterutils'; +import { getDefaultFilterDisplayName, clearStaticRangeFilters, findSelectableFieldValueFilter, getSelectableFieldValueFilters, parseNumberRangeInput } from '../../utils/filterutils'; import { executeSearch } from '../../utils'; import classNames from 'classnames'; import { useFiltersContext } from './FiltersContext'; @@ -242,22 +242,6 @@ export function RangeInput(props: RangeInputProps): JSX.Element | null { ); } -/** - * Creates the filter's display name based on the number range. - */ -function getDefaultFilterDisplayName(numberRange: NumberRangeValue) { - const start = numberRange.start; - const end = numberRange.end; - - if (start && end) { - return `${start.value} - ${end.value}`; - } else if (start && !end) { - return `Over ${start.value}`; - } else if (end && !start) { - return `Up to ${end.value}`; - } - return ''; -} /** * Returns true only if the provided string passes the numeric validation. diff --git a/src/components/MapboxMap.tsx b/src/components/MapboxMap.tsx index 623975a3f..d86ef3b9c 100644 --- a/src/components/MapboxMap.tsx +++ b/src/components/MapboxMap.tsx @@ -5,15 +5,25 @@ import { useDebouncedFunction } from '../hooks/useDebouncedFunction'; import ReactDOM from 'react-dom'; /** - * A functional component that can be used to render a custom marker on the map. + * Props for rendering a custom marker on the map. * * @public */ -export type PinComponent = (props: { +export type PinComponentProps = { + /** The index of the pin. */ index: number, + /** The Mapbox map. */ mapbox: mapboxgl.Map, + /** The search result corresponding to the pin. */ result: Result -}) => JSX.Element; +}; + +/** + * A functional component that can be used to render a custom marker on the map. + * + * @public + */ +export type PinComponent = (props: PinComponentProps) => JSX.Element; /** * A function use to derive a result's coordinate. @@ -55,8 +65,21 @@ export interface MapboxMapProps { /** * Custom Pin component to render for markers on the map. * By default, the built-in marker image from Mapbox GL is used. + * This prop should not be used with + * {@link MapboxMapProps.renderPin | renderPin}. If both are provided, + * only PinComponent will be used. */ PinComponent?: PinComponent, + /** + * Render function for a custom marker on the map. This function takes in an + * HTML element and is responible for rendering the pin into that element, + * which will be used as the marker. + * By default, the built-in marker image from Mapbox GL is used. + * This prop should not be used with + * {@link MapboxMapProps.PinComponent | PinComponent}. If both are provided, + * only PinComponent will be used. + */ + renderPin?: (props: PinComponentProps & { container: HTMLElement }) => void, /** * A function to derive a result's coordinate for the corresponding marker's location on the map. * By default, "yextDisplayCoordinate" field is used as the result's display coordinate. @@ -89,6 +112,7 @@ export function MapboxMap({ mapboxAccessToken, mapboxOptions, PinComponent, + renderPin, getCoordinate = getDefaultCoordinate, onDrag }: MapboxMapProps): JSX.Element { @@ -136,12 +160,20 @@ export function MapboxMap({ const el = document.createElement('div'); const markerOptions: mapboxgl.MarkerOptions = {}; if (PinComponent) { + if (renderPin) { + console.warn( + 'Found both PinComponent and renderPin props. Using PinComponent.' + ); + } ReactDOM.render(, el); markerOptions.element = el; + } else if (renderPin) { + renderPin({ index: i, mapbox, result, container: el }); + markerOptions.element = el; } const marker = new mapboxgl.Marker(markerOptions) .setLngLat({ lat: latitude, lng: longitude }) diff --git a/src/components/ThumbsFeedback.tsx b/src/components/ThumbsFeedback.tsx index 3b239b411..9a304821d 100644 --- a/src/components/ThumbsFeedback.tsx +++ b/src/components/ThumbsFeedback.tsx @@ -2,10 +2,7 @@ import { useSearchState } from '@yext/search-headless-react'; import React, { useCallback, useState } from 'react'; import { ThumbIcon } from '../icons/ThumbIcon'; import { useComposedCssClasses } from '../hooks'; -import useIsomorphicLayoutEffect from 'use-isomorphic-layout-effect'; -const useLayoutEffect = typeof useIsomorphicLayoutEffect === 'function' - ? useIsomorphicLayoutEffect - : useIsomorphicLayoutEffect['default']; +import { useLayoutEffect } from '../hooks/useLayoutEffect'; /** * Analytics event types for quality feedback. diff --git a/src/components/index.ts b/src/components/index.ts index 8ee06ebca..a5c8101a8 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -160,6 +160,7 @@ export { export { MapboxMap, PinComponent, + PinComponentProps, MapboxMapProps, OnDragHandler, CoordinateGetter, diff --git a/src/hooks/useId.ts b/src/hooks/useId.ts new file mode 100644 index 000000000..daa443db8 --- /dev/null +++ b/src/hooks/useId.ts @@ -0,0 +1,61 @@ +// Copied with minor modifications from +// https://github.com/reach/reach-ui/blob/dev/packages/auto-id/src/reach-auto-id.ts + +import React, { useEffect, useState } from "react"; +import { useLayoutEffect } from "./useLayoutEffect"; + +let serverHandoffComplete = false; +let id = 0; +function genId(): string { + ++id; + return id.toString(); +} + +// Workaround for https://github.com/webpack/webpack/issues/14814 +// https://github.com/eps1lon/material-ui/blob/8d5f135b4d7a58253a99ab56dce4ac8de61f5dc1/packages/mui-utils/src/useId.ts#L21 +const maybeReactUseId: undefined | (() => string) = (React as any)[ + "useId".toString() +]; + +/** + * useId + * + * Autogenerate IDs to facilitate WAI-ARIA and server rendering. + * + * Note: The returned ID will initially be empty string and will update after a + * component mounts. + * + * @see Docs https://reach.tech/auto-id + */ + +export function useId(): string { + if (maybeReactUseId !== undefined) { + return maybeReactUseId(); + } + + // If this instance isn't part of the initial render, we don't have to do the + // double render/patch-up dance. We can just generate the ID and return it. + const initialId = (serverHandoffComplete ? genId() : ''); + const [id, setId] = useState(initialId); + + useLayoutEffect(() => { + if (id === '') { + // Patch the ID after render. We do this in `useLayoutEffect` to avoid any + // rendering flicker, though it'll make the first render slower (unlikely + // to matter, but you're welcome to measure your app and let us know if + // it's a problem). + setId(genId()); + } + }, [id]); + + useEffect(() => { + if (serverHandoffComplete === false) { + // Flag all future uses of `useId` to skip the update dance. This is in + // `useEffect` because it goes after `useLayoutEffect`, ensuring we don't + // accidentally bail out of the patch-up dance prematurely. + serverHandoffComplete = true; + } + }, []); + + return id; +} diff --git a/src/hooks/useLayoutEffect.ts b/src/hooks/useLayoutEffect.ts new file mode 100644 index 000000000..1a9214b83 --- /dev/null +++ b/src/hooks/useLayoutEffect.ts @@ -0,0 +1,5 @@ +import useIsomorphicLayoutEffect from 'use-isomorphic-layout-effect'; + +export const useLayoutEffect = typeof useIsomorphicLayoutEffect === 'function' + ? useIsomorphicLayoutEffect + : useIsomorphicLayoutEffect['default']; diff --git a/src/utils/filterutils.tsx b/src/utils/filterutils.tsx index 4d6dbffed..dcefdc97f 100644 --- a/src/utils/filterutils.tsx +++ b/src/utils/filterutils.tsx @@ -171,3 +171,20 @@ export function getSelectableFieldValueFilters( return undefined; }).filter((s): s is SelectableFieldValueFilter => !!s); } + +/** + * Creates the filter's display name based on the number range. + */ +export function getDefaultFilterDisplayName(numberRange: NumberRangeValue) { + const start = numberRange.start; + const end = numberRange.end; + + if (start && end) { + return `${start.value} - ${end.value}`; + } else if (start && !end) { + return `Over ${start.value}`; + } else if (end && !start) { + return `Up to ${end.value}`; + } + return ''; +} diff --git a/test-site/package-lock.json b/test-site/package-lock.json index 00574d4c5..c5fd416d2 100644 --- a/test-site/package-lock.json +++ b/test-site/package-lock.json @@ -20,8 +20,8 @@ "devDependencies": { "@types/mapbox-gl": "^2.7.6", "@types/node": "^16.11.26", - "@types/react": "^17.0.42", - "@types/react-dom": "^17.0.14", + "@types/react": "^18.2.55", + "@types/react-dom": "^18.2.0", "@types/uuid": "^8.3.4", "autoprefixer": "^10.4.4", "eslint-config-react-app": "file:../node_modules/eslint-config-react-app", @@ -36,7 +36,6 @@ "version": "1.4.1", "license": "BSD-3-Clause", "dependencies": { - "@reach/auto-id": "^0.18.0", "@restart/ui": "^1.0.1", "@tailwindcss/forms": "^0.5.0", "@yext/analytics": "^0.6.5", @@ -45,7 +44,7 @@ "lodash-es": "^4.17.21", "mapbox-gl": "^2.9.2", "prop-types": "^15.8.1", - "react-collapsed": "3.6.0", + "react-collapsed": "^4.1.2", "recent-searches": "^1.0.5", "tailwind-merge": "^1.3.0", "use-isomorphic-layout-effect": "^1.1.2" @@ -70,9 +69,8 @@ "@storybook/test-runner": "^0.15.2", "@storybook/testing-library": "^0.2.1", "@testing-library/jest-dom": "^5.16.1", - "@testing-library/react": "^12.1.3", - "@testing-library/react-hooks": "^8.0.0", - "@testing-library/user-event": "^13.5.0", + "@testing-library/react": "^14.2.1", + "@testing-library/user-event": "^14.5.2", "@types/classnames": "^2.3.1", "@types/jest": "^29.1.0", "@types/jest-image-snapshot": "^6.2.3", @@ -94,18 +92,19 @@ "jest-environment-jsdom": "^29.1.1", "jest-image-snapshot": "^6.2.0", "msw": "^0.36.8", - "react": "^17.0.2", - "react-dom": "^17.0.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", "storybook": "^7.4.5", "tailwindcss": "^3.0.23", "ts-jest": "^29.1.1", "tsup": "^8.0.1", - "typescript": "^5.2.2" + "typescript": "^5.2.2", + "util": "^0.12.5" }, "peerDependencies": { "@yext/search-headless-react": "^2.4.0", - "react": "^16.14 || ^17", - "react-dom": "^16.14 || ^17" + "react": "^16.14 || ^17 || ^18", + "react-dom": "^16.14 || ^17 || ^18" } }, "../node_modules/eslint-config-react-app": { @@ -4059,9 +4058,9 @@ "dev": true }, "node_modules/@types/react": { - "version": "17.0.52", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.52.tgz", - "integrity": "sha512-vwk8QqVODi0VaZZpDXQCmEmiOuyjEFPY7Ttaw5vjM112LOq37yz1CDJGrRJwA1fYEq4Iitd5rnjd1yWAc/bT+A==", + "version": "18.2.55", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.55.tgz", + "integrity": "sha512-Y2Tz5P4yz23brwm2d7jNon39qoAtMMmalOQv6+fEFt1mT+FcM3D841wDpoUvFXhaYenuROCy3FZYqdTjM7qVyA==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -4069,12 +4068,12 @@ } }, "node_modules/@types/react-dom": { - "version": "17.0.18", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.18.tgz", - "integrity": "sha512-rLVtIfbwyur2iFKykP2w0pl/1unw26b5td16d5xMgp7/yjTHomkyxPYChFoCr/FtEX1lN9wY6lFj1qvKdS5kDw==", + "version": "18.2.19", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.19.tgz", + "integrity": "sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==", "dev": true, "dependencies": { - "@types/react": "^17" + "@types/react": "*" } }, "node_modules/@types/resolve": { @@ -21655,9 +21654,9 @@ "dev": true }, "@types/react": { - "version": "17.0.52", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.52.tgz", - "integrity": "sha512-vwk8QqVODi0VaZZpDXQCmEmiOuyjEFPY7Ttaw5vjM112LOq37yz1CDJGrRJwA1fYEq4Iitd5rnjd1yWAc/bT+A==", + "version": "18.2.55", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.55.tgz", + "integrity": "sha512-Y2Tz5P4yz23brwm2d7jNon39qoAtMMmalOQv6+fEFt1mT+FcM3D841wDpoUvFXhaYenuROCy3FZYqdTjM7qVyA==", "requires": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -21665,12 +21664,12 @@ } }, "@types/react-dom": { - "version": "17.0.18", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.18.tgz", - "integrity": "sha512-rLVtIfbwyur2iFKykP2w0pl/1unw26b5td16d5xMgp7/yjTHomkyxPYChFoCr/FtEX1lN9wY6lFj1qvKdS5kDw==", + "version": "18.2.19", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.19.tgz", + "integrity": "sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==", "dev": true, "requires": { - "@types/react": "^17" + "@types/react": "*" } }, "@types/resolve": { @@ -21970,7 +21969,6 @@ "@etchteam/storybook-addon-status": "^4.2.4", "@microsoft/api-documenter": "^7.23.14", "@microsoft/api-extractor": "^7.38.5", - "@reach/auto-id": "^0.18.0", "@reduxjs/toolkit": "^1.8.6", "@restart/ui": "^1.0.1", "@storybook/addon-a11y": "^7.4.5", @@ -21985,9 +21983,8 @@ "@storybook/testing-library": "^0.2.1", "@tailwindcss/forms": "^0.5.0", "@testing-library/jest-dom": "^5.16.1", - "@testing-library/react": "^12.1.3", - "@testing-library/react-hooks": "^8.0.0", - "@testing-library/user-event": "^13.5.0", + "@testing-library/react": "^14.2.1", + "@testing-library/user-event": "^14.5.2", "@types/classnames": "^2.3.1", "@types/jest": "^29.1.0", "@types/jest-image-snapshot": "^6.2.3", @@ -22015,9 +22012,9 @@ "mapbox-gl": "^2.9.2", "msw": "^0.36.8", "prop-types": "^15.8.1", - "react": "^17.0.2", - "react-collapsed": "3.6.0", - "react-dom": "^17.0.2", + "react": "^18.2.0", + "react-collapsed": "^4.1.2", + "react-dom": "^18.2.0", "recent-searches": "^1.0.5", "storybook": "^7.4.5", "tailwind-merge": "^1.3.0", @@ -22025,7 +22022,8 @@ "ts-jest": "^29.1.1", "tsup": "^8.0.1", "typescript": "^5.2.2", - "use-isomorphic-layout-effect": "^1.1.2" + "use-isomorphic-layout-effect": "^1.1.2", + "util": "^0.12.5" }, "dependencies": { "eslint-config-react-app": { diff --git a/test-site/package.json b/test-site/package.json index 39fdeb050..aa41b21e7 100644 --- a/test-site/package.json +++ b/test-site/package.json @@ -15,8 +15,8 @@ "devDependencies": { "@types/mapbox-gl": "^2.7.6", "@types/node": "^16.11.26", - "@types/react": "^17.0.42", - "@types/react-dom": "^17.0.14", + "@types/react": "^18.2.55", + "@types/react-dom": "^18.2.0", "@types/uuid": "^8.3.4", "autoprefixer": "^10.4.4", "eslint-config-react-app": "file:../node_modules/eslint-config-react-app", diff --git a/test-site/src/index.tsx b/test-site/src/index.tsx index 6363218ca..a48d8ff93 100644 --- a/test-site/src/index.tsx +++ b/test-site/src/index.tsx @@ -1,12 +1,13 @@ -import React from 'react'; -import ReactDOM from 'react-dom'; +import { StrictMode } from 'react'; +import { createRoot } from 'react-dom/client'; import './index.css'; import 'mapbox-gl/dist/mapbox-gl.css'; import App from './App'; -ReactDOM.render( - - - , - document.getElementById('root') +const container = document.getElementById('root'); +const root = createRoot(container!); +root.render( + + + ); diff --git a/tests/__fixtures__/data/filtercontext.ts b/tests/__fixtures__/data/filtercontext.ts index 677ad59cb..438dbd76e 100644 --- a/tests/__fixtures__/data/filtercontext.ts +++ b/tests/__fixtures__/data/filtercontext.ts @@ -1,6 +1,5 @@ import { FiltersContextType } from '../../../src/components/Filters/FiltersContext'; import { SelectableFieldValueFilter } from '../../../src/models/SelectableFieldValueFilter'; -import { FilterGroupContextType } from '../../../src/components/Filters/FilterGroupContext'; import { Matcher } from '@yext/search-headless-react'; const selectableFilter: SelectableFieldValueFilter = { @@ -21,28 +20,3 @@ export const filterContextValueDisabled: FiltersContextType = { applyFilters: () => null, filters: [selectableFilter] }; - -export const filterGroupContextValue: FilterGroupContextType = { - searchValue: '', - fieldId: '123', - setSearchValue: () => null, - getCollapseProps: () => ({ - id: 'id', - onTransitionEnd: () => null, - style: {}, - 'aria-hidden': 'false' - }), - getToggleProps: () => ({ - disabled: false, - type: 'button', - role: 'role', - id: 'id', - 'aria-controls': 'element', - 'aria-expanded': 'true', - tabIndex: 0, - onClick: () => null - }), - isExpanded: true, - isOptionsDisabled: false, - setIsOptionsDisabled: () => null -}; diff --git a/tests/__setup__/setup-env.ts b/tests/__setup__/setup-env.ts index db963a3cc..3893ddb9f 100644 --- a/tests/__setup__/setup-env.ts +++ b/tests/__setup__/setup-env.ts @@ -1,5 +1,8 @@ import '@testing-library/jest-dom'; import { server } from './server'; +import { TextEncoder} from 'util'; + +global.TextEncoder = TextEncoder; beforeAll(() => server.listen()); afterEach(() => server.resetHandlers()); diff --git a/tests/__utils__/mocks.ts b/tests/__utils__/mocks.ts index 00f5efaca..b3f7271d4 100644 --- a/tests/__utils__/mocks.ts +++ b/tests/__utils__/mocks.ts @@ -63,4 +63,19 @@ export function mockAnswersHooks({ mockedUtils && mockAnswersUtils(mockedUtils); mockedState && mockAnswersState(mockedState); mockedActions && mockSearchActions(mockedActions); -} \ No newline at end of file +} + +const originalConsoleError = console.error.bind(console.error); + +export function ignoreLinkClickErrors() { + jest.spyOn(global.console, 'error') + .mockImplementation((msg, ...params) => { + /** + * Suppress errors about 'navigation' not being defined in jsdom when + * clicking on links. + */ + if (!msg.toString().match(/Error: Not implemented: navigation/)) { + originalConsoleError(msg, ...params); + } + }); +}; diff --git a/tests/__utils__/renderReact.ts b/tests/__utils__/renderReact.ts new file mode 100644 index 000000000..70f58887d --- /dev/null +++ b/tests/__utils__/renderReact.ts @@ -0,0 +1,17 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; + +export function renderReact(children: JSX.Element, container: Element) { + try { + if (!React.version.startsWith('18')) { + throw new Error('Using React <18. Skip createRoot rendering.'); + } + // @ts-ignore + import('react-dom/client').then(({ createRoot }) => { + const root = createRoot(container); + root.render(children); + }); + } catch { + ReactDOM.render(children, container); + } +} diff --git a/tests/components/AppliedFilters.test.tsx b/tests/components/AppliedFilters.test.tsx index f1478ab17..59f5525d6 100644 --- a/tests/components/AppliedFilters.test.tsx +++ b/tests/components/AppliedFilters.test.tsx @@ -126,35 +126,35 @@ describe('AppliedFilters', () => { expect(screen.queryByText(staticFilterDisplayName)).toBeFalsy(); }); - it('The "X" button for an applied static filter deselects the filter option', () => { + it('The "X" button for an applied static filter deselects the filter option', async () => { const actions = spyOnActions(); render(); const removeFilterButton = screen.getByRole('button', { name: 'Remove "Yext Sites" filter' }); - userEvent.click(removeFilterButton); + await userEvent.click(removeFilterButton); expect(actions.setFilterOption).toHaveBeenCalledWith(expect.objectContaining({ selected: false })); }); - it('The "X" button for an applied facet deselects the facet option', () => { + it('The "X" button for an applied facet deselects the facet option', async () => { const actions = spyOnActions(); render(); const removeFilterButton = screen.getByRole('button', { name: 'Remove "Yext Reviews" filter' }); - userEvent.click(removeFilterButton); + await userEvent.click(removeFilterButton); const isSelected = actions.setFacetOption.mock.calls[0][2]; expect(isSelected).toBe(false); }); - it('The clear all button unselects all filters', () => { + it('The clear all button unselects all filters', async () => { const actions = spyOnActions(); render(); const clearAllButton = screen.getByRole('button', { name: 'Clear All' }); - userEvent.click(clearAllButton); + await userEvent.click(clearAllButton); expect(actions.resetFacets).toHaveBeenCalled(); expect(actions.setStaticFilters).toHaveBeenCalledWith(expect.not.objectContaining({ selected: true })); @@ -235,7 +235,7 @@ describe('AppliedFilters with hierarchical facets', () => { expect(filterPills[1]).toHaveAttribute('aria-label', 'Remove "steinsgate" filter'); }); - it('removing a hierarchical applied filter removes the facet and all descendants in the hierarchy', () => { + it('removing a hierarchical applied filter removes the facet and all descendants in the hierarchy', async () => { mockFiltersState({ facets: [ createHierarchicalFacet([ @@ -261,7 +261,7 @@ describe('AppliedFilters with hierarchical facets', () => { expect(filterPills).toHaveLength(3); const fruitButton = screen.getByLabelText('Remove "food" filter'); - userEvent.click(fruitButton); + await userEvent.click(fruitButton); expect(actions.setFacetOption).toHaveBeenCalledTimes(2); expect(actions.setFacetOption).toHaveBeenCalledWith( @@ -276,7 +276,7 @@ describe('AppliedFilters with hierarchical facets', () => { ); }); - it('removing a hierarchical applied filter selects its parent', () => { + it('removing a hierarchical applied filter selects its parent', async () => { mockFiltersState({ facets: [ createHierarchicalFacet([ @@ -294,7 +294,7 @@ describe('AppliedFilters with hierarchical facets', () => { expect(filterPills).toHaveLength(3); const fruitButton = screen.getByLabelText('Remove "banana" filter'); - userEvent.click(fruitButton); + await userEvent.click(fruitButton); expect(actions.setFacetOption).toHaveBeenCalledWith( 'hier', diff --git a/tests/components/DirectAnswer.test.tsx b/tests/components/DirectAnswer.test.tsx index 9fcb9cdbc..c05439229 100644 --- a/tests/components/DirectAnswer.test.tsx +++ b/tests/components/DirectAnswer.test.tsx @@ -2,7 +2,7 @@ import { render, screen } from '@testing-library/react'; import { DirectAnswerState } from '@yext/search-headless-react'; import { useAnalytics } from '../../src/hooks/useAnalytics'; import { DirectAnswer } from '../../src/components/DirectAnswer'; -import { RecursivePartial, mockAnswersState } from '../__utils__/mocks'; +import { RecursivePartial, ignoreLinkClickErrors, mockAnswersState } from '../__utils__/mocks'; import { fieldValueDAState, featuredSnippetDAState } from '../__fixtures__/data/directanswers'; import userEvent from '@testing-library/user-event'; import React from 'react'; @@ -33,10 +33,11 @@ describe('Featured snippet direct answer analytics', () => { }); function runAnalyticsTestSuite() { - it('reports link click analytics', () => { + it('reports link click analytics', async () => { render(); + ignoreLinkClickErrors(); const link = screen.getByRole('link'); - userEvent.click(link); + await userEvent.click(link); expect(useAnalytics()?.report).toHaveBeenCalledTimes(1); expect(useAnalytics()?.report).toHaveBeenCalledWith(expect.objectContaining({ type: 'CTA_CLICK', @@ -46,10 +47,10 @@ function runAnalyticsTestSuite() { })); }); - it('reports THUMBS_UP feedback', () => { + it('reports THUMBS_UP feedback', async () => { render(); const thumbsUp = screen.queryAllByRole('button')[0]; - userEvent.click(thumbsUp); + await userEvent.click(thumbsUp); expect(useAnalytics()?.report).toHaveBeenCalledTimes(1); expect(useAnalytics()?.report).toHaveBeenCalledWith(expect.objectContaining({ type: 'THUMBS_UP', @@ -59,10 +60,10 @@ function runAnalyticsTestSuite() { })); }); - it('reports THUMBS_DOWN feedback', () => { + it('reports THUMBS_DOWN feedback', async () => { render(); const thumbsDown = screen.queryAllByRole('button')[1]; - userEvent.click(thumbsDown); + await userEvent.click(thumbsDown); expect(useAnalytics()?.report).toHaveBeenCalledTimes(1); expect(useAnalytics()?.report).toHaveBeenCalledWith(expect.objectContaining({ type: 'THUMBS_DOWN', diff --git a/tests/components/Dropdown.test.tsx b/tests/components/Dropdown.test.tsx index 4f3da4ad9..6bb0fa9a1 100644 --- a/tests/components/Dropdown.test.tsx +++ b/tests/components/Dropdown.test.tsx @@ -1,3 +1,4 @@ +import React from 'react'; import { render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { Dropdown, DropdownProps } from '../../src/components/Dropdown/Dropdown'; @@ -5,7 +6,6 @@ import { DropdownInput } from '../../src/components/Dropdown/DropdownInput'; import { DropdownMenu } from '../../src/components/Dropdown/DropdownMenu'; import { DropdownItem } from '../../src/components/Dropdown/DropdownItem'; import { testSSR } from '../ssr/utils'; -import React from 'react'; describe('Dropdown', () => { it('renders identical content between the server and the client.', () => { @@ -21,7 +21,7 @@ describe('Dropdown', () => { ); }); - it('can toggle hide/display', () => { + it('can toggle hide/display', async () => { const mockedOnToggleFn = jest.fn(); const dropdownProps: DropdownProps = { screenReaderText: 'screen reader text here', @@ -44,22 +44,22 @@ describe('Dropdown', () => { expect(screen.queryByText('item1')).toBeNull(); // display when click into dropdown input - userEvent.click(screen.getByRole('textbox')); + await userEvent.click(screen.getByRole('textbox')); expect(screen.getByText('item1')).toBeDefined(); expect(mockedOnToggleFn).toBeCalledWith(true, '', '', -1, undefined); // hidden when click elsewhere outside of dropdown component - userEvent.click(screen.getByText('external div')); + await userEvent.click(screen.getByText('external div')); expect(screen.queryByText('item1')).toBeNull(); expect(mockedOnToggleFn).toBeCalledWith(false, '', '', -1, undefined); // display when tab into dropdown input - userEvent.tab(); + await userEvent.tab(); expect(screen.getByText('item1')).toBeDefined(); expect(mockedOnToggleFn).toBeCalledWith(true, '', '', -1, undefined); }); - it('handles arrowkey navigation properly and focuses on the option and input text', () => { + it('handles arrowkey navigation properly and focuses on the option and input text', async () => { const dropdownProps: DropdownProps = { screenReaderText: 'screen reader text here' }; @@ -74,19 +74,19 @@ describe('Dropdown', () => { ); const inputNode = screen.getByRole('textbox'); - userEvent.click(inputNode); + await userEvent.click(inputNode); const itemNode = screen.getByText('item1'); - userEvent.keyboard('{arrowdown}'); + await userEvent.keyboard('{arrowdown}'); expect(itemNode.className).toContain('FocusedItem1'); expect(inputNode).toHaveValue('item1'); - userEvent.keyboard('{arrowup}'); + await userEvent.keyboard('{arrowup}'); expect(itemNode.className).not.toContain('FocusedItem1'); expect(inputNode).not.toHaveValue('item1'); }); - it('handles tab navigation properly and focuses on the option and input text', () => { + it('handles tab navigation properly and focuses on the option and input text', async () => { const dropdownProps: DropdownProps = { screenReaderText: 'screen reader text here' }; @@ -101,19 +101,19 @@ describe('Dropdown', () => { ); const inputNode = screen.getByRole('textbox'); - userEvent.click(inputNode); + await userEvent.click(inputNode); const itemNode = screen.getByText('item1'); - userEvent.keyboard('{Tab}'); + await userEvent.keyboard('{Tab}'); expect(itemNode.className).toContain('FocusedItem1'); expect(inputNode).toHaveValue('item1'); - userEvent.keyboard('{Shift}{Tab}'); + await userEvent.keyboard('{Shift>}{Tab}{/Shift}'); expect(itemNode.className).not.toContain('FocusedItem1'); expect(inputNode).not.toHaveValue('item1'); }); - it('closes the dropdown menu when tabbing on last option', () => { + it('closes the dropdown menu when tabbing on last option', async () => { const mockedOnToggleFn = jest.fn(); const dropdownProps: DropdownProps = { screenReaderText: 'screen reader text here', @@ -130,13 +130,13 @@ describe('Dropdown', () => { ); const inputNode = screen.getByRole('textbox'); - userEvent.click(inputNode); - userEvent.keyboard('{Tab}{Tab}'); + await userEvent.click(inputNode); + await userEvent.keyboard('{Tab}{Tab}'); expect(mockedOnToggleFn).toHaveBeenLastCalledWith(false, '', 'item1', 0, undefined); }); - it('selects when an option is focused and enter is pressed', () => { + it('selects when an option is focused and enter is pressed', async () => { const mockedOnSelectFn = jest.fn(); const dropdownProps: DropdownProps = { screenReaderText: 'screen reader text here', @@ -153,12 +153,12 @@ describe('Dropdown', () => { ); const inputNode = screen.getByRole('textbox'); - userEvent.click(inputNode); + await userEvent.click(inputNode); expect(screen.getByTestId('item1')).toBeDefined(); expect(inputNode).toHaveValue(''); - userEvent.keyboard('{arrowdown}'); - userEvent.keyboard('{enter}'); + await userEvent.keyboard('{arrowdown}'); + await userEvent.keyboard('{enter}'); expect(inputNode).toHaveValue('item1'); expect(screen.queryByTestId('item1')).toBeNull(); @@ -166,7 +166,7 @@ describe('Dropdown', () => { expect(mockedOnSelectFn).toHaveBeenCalledWith('item1', 0, undefined); }); - it('selects an option on click', () => { + it('selects an option on click', async () => { const mockedOnSelectFn = jest.fn(); const mockedOnClickFn = jest.fn(); const dropdownProps: DropdownProps = { @@ -184,12 +184,12 @@ describe('Dropdown', () => { ); const inputNode = screen.getByRole('textbox'); - userEvent.click(inputNode); + await userEvent.click(inputNode); expect(screen.getByTestId('item1')).toBeDefined(); expect(inputNode).toHaveValue(''); - userEvent.keyboard('{arrowdown}'); - userEvent.click(screen.getByTestId('item1')); + await userEvent.keyboard('{arrowdown}'); + await userEvent.click(screen.getByTestId('item1')); expect(inputNode).toHaveValue('item1'); expect(screen.queryByTestId('item1')).toBeNull(); @@ -199,7 +199,7 @@ describe('Dropdown', () => { expect(mockedOnSelectFn).toHaveBeenCalledWith('item1', 0, undefined); }); - it('selects when an option is focused on toggle', () => { + it('selects when an option is focused on toggle', async () => { const mockedOnToggleFn = jest.fn(); const dropdownProps: DropdownProps = { screenReaderText: 'screen reader text here', @@ -219,13 +219,13 @@ describe('Dropdown', () => { ); const inputNode = screen.getByRole('textbox'); - userEvent.click(inputNode); + await userEvent.click(inputNode); expect(screen.getByTestId('item1')).toBeDefined(); expect(inputNode).toHaveValue(''); - userEvent.keyboard('i'); - userEvent.keyboard('{arrowdown}'); - userEvent.click(screen.getByText('external div')); + await userEvent.keyboard('i'); + await userEvent.keyboard('{arrowdown}'); + await userEvent.click(screen.getByText('external div')); expect(inputNode).toHaveValue('item1'); expect(screen.queryByTestId('item1')).toBeNull(); @@ -233,7 +233,7 @@ describe('Dropdown', () => { expect(mockedOnToggleFn).toHaveBeenCalledWith(false, 'i', 'item1', 0, undefined); }); - it('updates options when user provide new input', () => { + it('updates options when user provide new input', async () => { const mockedOnChangeFn = jest.fn(); const dropdownProps: DropdownProps = { screenReaderText: 'screen reader text here' @@ -249,17 +249,17 @@ describe('Dropdown', () => { ); const inputNode = screen.getByRole('textbox'); - userEvent.click(inputNode); + await userEvent.click(inputNode); const itemNode = screen.getByText('item1'); expect(itemNode).toBeDefined(); expect(inputNode).toHaveValue(''); - userEvent.keyboard('{arrowdown}'); + await userEvent.keyboard('{arrowdown}'); expect(itemNode.className).toContain('FocusedItem1'); expect(inputNode).toHaveValue('item1'); const userInput = ' someText'; - userEvent.type(inputNode, userInput); + await userEvent.type(inputNode, userInput); expect(inputNode).toHaveValue('item1' + userInput); expect(mockedOnChangeFn).toBeCalledTimes(userInput.length); expect(mockedOnChangeFn).toHaveBeenCalledWith('item1' + userInput); @@ -267,7 +267,7 @@ describe('Dropdown', () => { expect(itemNode.className).not.toContain('FocusedItem1'); }); - it('submits on "Enter" in the input box', () => { + it('submits on "Enter" in the input box', async () => { const mockedOnSubmitFn = jest.fn(); const mockedOnSelectFn = jest.fn(); const dropdownProps: DropdownProps = { @@ -285,8 +285,8 @@ describe('Dropdown', () => { ); const inputNode = screen.getByRole('textbox'); - userEvent.type(inputNode, 'someText'); - userEvent.keyboard('{enter}'); + await userEvent.type(inputNode, 'someText'); + await userEvent.keyboard('{enter}'); expect(inputNode).toHaveValue('someText'); expect(mockedOnSelectFn).toBeCalledTimes(0); @@ -295,7 +295,7 @@ describe('Dropdown', () => { expect(screen.queryByText('item1')).toBeNull(); }); - it('prevents submission if submission criteria failed', () => { + it('prevents submission if submission criteria failed', async () => { const mockedSubmitCriteriaFn = jest.fn().mockImplementation(() => false); const mockedOnSubmitFn = jest.fn(); const dropdownProps: DropdownProps = { @@ -315,8 +315,8 @@ describe('Dropdown', () => { ); const inputNode = screen.getByRole('textbox'); - userEvent.type(inputNode, 'someText'); - userEvent.keyboard('{enter}'); + await userEvent.type(inputNode, 'someText'); + await userEvent.keyboard('{enter}'); expect(inputNode).toHaveValue('someText'); expect(mockedSubmitCriteriaFn).toBeCalledTimes(1); @@ -326,7 +326,7 @@ describe('Dropdown', () => { }); }); describe('Always Select Option', () => { - it('clicking out without interacting with dropdown does not select a filter', () => { + it('clicking out without interacting with dropdown does not select a filter', async () => { const mockedOnSelectFn = jest.fn(); const dropdownProps: DropdownProps = { screenReaderText: 'screen reader text here', @@ -347,12 +347,12 @@ describe('Always Select Option', () => { ); const inputNode = screen.getByRole('textbox'); - userEvent.click(inputNode); + await userEvent.click(inputNode); expect(screen.getByTestId('item1')).toBeDefined(); expect(inputNode).toHaveValue(''); - userEvent.keyboard('i'); - userEvent.click(screen.getByText('external div')); + await userEvent.keyboard('i'); + await userEvent.click(screen.getByText('external div')); expect(inputNode).toHaveValue('i'); expect(screen.queryByTestId('item1')).toBeNull(); diff --git a/tests/components/Facets.test.tsx b/tests/components/Facets.test.tsx index e19406477..3a757b86b 100644 --- a/tests/components/Facets.test.tsx +++ b/tests/components/Facets.test.tsx @@ -164,7 +164,7 @@ describe('Facets', () => { expect(screen.queryByText(facet.displayName)).toBeNull(); }); - it('Clicking a facet option executes a search by default', () => { + it('Clicking a facet option executes a search by default', async () => { mockAnswersState({ ...mockedState, filters: { facets: [DisplayableFacets[0]] } @@ -178,12 +178,12 @@ describe('Facets', () => { ); expect(coffeeCheckbox.checked).toBeFalsy(); - userEvent.click(coffeeCheckbox); + await userEvent.click(coffeeCheckbox); expectFacetOptionSet(actions, facet.fieldId, facet.options[0], true); expect(actions.executeVerticalQuery).toBeCalled(); }); - it('Clicking a facet option does not execute a search when searchOnChange is false', () => { + it('Clicking a facet option does not execute a search when searchOnChange is false', async () => { mockAnswersState({ ...mockedState, filters: { facets: [DisplayableFacets[0]] } @@ -197,7 +197,7 @@ describe('Facets', () => { ); expect(coffeeCheckbox.checked).toBeFalsy(); - userEvent.click(coffeeCheckbox); + await userEvent.click(coffeeCheckbox); expectFacetOptionSet(actions, facet.fieldId, facet.options[0], true); expect(actions.executeVerticalQuery).not.toBeCalled(); }); diff --git a/tests/components/FeaturedSnippetDirectAnswer.test.tsx b/tests/components/FeaturedSnippetDirectAnswer.test.tsx index 76c617560..bee24acf4 100644 --- a/tests/components/FeaturedSnippetDirectAnswer.test.tsx +++ b/tests/components/FeaturedSnippetDirectAnswer.test.tsx @@ -4,6 +4,7 @@ import { FeaturedSnippetDirectAnswer } from '../../src/components/FeaturedSnippe import { featuredSnippetDAState } from '../__fixtures__/data/directanswers'; import userEvent from '@testing-library/user-event'; import React from 'react'; +import { ignoreLinkClickErrors } from '../__utils__/mocks'; const featuredSnippetDAResult = featuredSnippetDAState.result as FeaturedSnippetDirectAnswerType; @@ -33,13 +34,14 @@ describe('FeaturedSnippet direct answer', () => { expect(directAnswerLink).toHaveAttribute('href', '[landingPageUrl]'); }); - it('executes readMoreClickHandler when click on "Read more about" link', () => { + it('executes readMoreClickHandler when click on "Read more about" link', async () => { const readMoreClickHandler = jest.fn(); render(); - userEvent.click(screen.getByRole('link', { name: '[relatedResult.name]' })); + ignoreLinkClickErrors(); + await userEvent.click(screen.getByRole('link', { name: '[relatedResult.name]' })); expect(readMoreClickHandler).toHaveBeenCalledTimes(1); }); diff --git a/tests/components/FieldValueDirectAnswer.test.tsx b/tests/components/FieldValueDirectAnswer.test.tsx index d948ddf2b..b7327c399 100644 --- a/tests/components/FieldValueDirectAnswer.test.tsx +++ b/tests/components/FieldValueDirectAnswer.test.tsx @@ -10,18 +10,21 @@ import userEvent from '@testing-library/user-event'; import { fieldValueDAState } from '../__fixtures__/data/directanswers'; import { UnknownFieldTypeDisplayComponent } from '../../src/components/DirectAnswer'; import React from 'react'; +import { ignoreLinkClickErrors } from '../__utils__/mocks'; const fieldValueDAResult = fieldValueDAState.result as FieldValueDirectAnswerType; describe('FieldValue direct answer', () => { - - it('executes viewDetailsClickHandler when click on "View Details" link', () => { + it('executes viewDetailsClickHandler when click on "View Details" link', async () => { const viewDetailsClickHandler = jest.fn(); render( ); - userEvent.click(screen.getByRole('link', { name: 'View Details' })); + ignoreLinkClickErrors(); + const viewDetailsLink = screen.getByRole('link', { name: 'View Details' }); + await userEvent.click(viewDetailsLink); + expect(viewDetailsClickHandler).toHaveBeenCalledTimes(1); }); diff --git a/tests/components/FilterSearch.test.tsx b/tests/components/FilterSearch.test.tsx index f0fffe3a6..e3273af03 100644 --- a/tests/components/FilterSearch.test.tsx +++ b/tests/components/FilterSearch.test.tsx @@ -1,5 +1,5 @@ import { FilterSearch, FilterSearchProps } from '../../src/components/FilterSearch'; -import { render, RenderResult, screen, waitFor } from '@testing-library/react'; +import { render, RenderResult, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import * as searchOperations from '../../src/utils/search-operations'; import { @@ -57,6 +57,15 @@ const mockedStateWithMultipleFilters: Partial = { } }; +function renderFilterSearch( + props: FilterSearchProps = { searchFields: searchFieldsProp }, + state = mockedState +): RenderResult { + return render( + + ); +} + describe('search with section labels', () => { it('renders the filter search bar, "Filter" label, and default placeholder text', () => { renderFilterSearch({ searchFields: searchFieldsProp, label: 'Filter' }); @@ -79,15 +88,11 @@ describe('search with section labels', () => { renderFilterSearch(); const searchBarElement = screen.getByRole('textbox'); - userEvent.type(searchBarElement, 'na'); - await waitFor(() => { - expect(searchBarElement).toHaveValue('na'); - }); + await userEvent.type(searchBarElement, 'na'); + expect(searchBarElement).toHaveValue('na'); - userEvent.type(searchBarElement, '{backspace}'); - await waitFor(() => { - expect(searchBarElement).toHaveValue('n'); - }); + await userEvent.type(searchBarElement, '{backspace}'); + expect(searchBarElement).toHaveValue('n'); }); it('triggers a filter search every time a character is typed or backspaced', async () => { @@ -102,15 +107,11 @@ describe('search with section labels', () => { fieldApiName: 'name' }]; - userEvent.type(searchBarElement, 'na'); - await waitFor(() => { - expect(executeFilterSearch).toHaveBeenLastCalledWith('na', false, expectedFilterSearchFields); - }); + await userEvent.type(searchBarElement, 'na'); + expect(executeFilterSearch).toHaveBeenLastCalledWith('na', false, expectedFilterSearchFields); - userEvent.type(searchBarElement, '{backspace}'); - await waitFor(() => { - expect(executeFilterSearch).toHaveBeenLastCalledWith('n', false, expectedFilterSearchFields); - }); + await userEvent.type(searchBarElement, '{backspace}'); + expect(executeFilterSearch).toHaveBeenLastCalledWith('n', false, expectedFilterSearchFields); expect(executeFilterSearch).toHaveBeenCalledTimes(3); }); @@ -121,10 +122,8 @@ describe('search with section labels', () => { renderFilterSearch(); const searchBarElement = screen.getByRole('textbox'); - userEvent.type(searchBarElement, '{backspace}'); - await waitFor(() => { - expect(searchBarElement).toHaveValue(''); - }); + await userEvent.type(searchBarElement, '{backspace}'); + expect(searchBarElement).toHaveValue(''); expect(executeFilterSearch).toHaveBeenCalledTimes(0); }); @@ -135,14 +134,12 @@ describe('search with section labels', () => { .mockResolvedValue(labeledFilterSearchResponse); const searchBarElement = screen.getByRole('textbox'); - userEvent.type(searchBarElement, 'n'); - await waitFor(() => { - expect(executeFilterSearch).toHaveBeenCalled(); - }); - await waitFor(() => { - const autocompleteSection = screen.getByText('First name'); - expect(autocompleteSection).toBeDefined(); - }); + await userEvent.type(searchBarElement, 'n'); + expect(executeFilterSearch).toHaveBeenCalled(); + + const autocompleteSection = screen.getByText('First name'); + expect(autocompleteSection).toBeDefined(); + }); it('input value stays the same when a user selects a filter', async () => { @@ -152,11 +149,11 @@ describe('search with section labels', () => { renderFilterSearch(); const searchBarElement = screen.getByRole('textbox'); - userEvent.type(searchBarElement, 'n'); - await waitFor(() => screen.findByText('first name 1')); + await userEvent.type(searchBarElement, 'n'); + await screen.findByText('first name 1'); - userEvent.type(searchBarElement, '{arrowdown}'); - await waitFor(() => expect(executeFilterSearch).toHaveBeenCalled()); + await userEvent.type(searchBarElement, '{arrowdown}'); + expect(executeFilterSearch).toHaveBeenCalled(); expect(searchBarElement).toHaveValue('n'); }); @@ -168,38 +165,35 @@ describe('search with section labels', () => { const setFilterOption = jest.spyOn(SearchHeadless.prototype, 'setFilterOption'); const searchBarElement = screen.getByRole('textbox'); - userEvent.type(searchBarElement, 'n'); - await waitFor(() => expect(executeFilterSearch).toHaveBeenCalled()); - await waitFor(() => screen.findByText('first name 1')); - userEvent.type(searchBarElement, '{enter}'); - await waitFor(() => { - expect(setFilterOption).toBeCalledWith({ - filter: { - kind: 'fieldValue', - fieldId: 'name', - matcher: Matcher.Equals, - value: 'first name 1' - }, - displayName: 'first name 1', - selected: true - }); + await userEvent.type(searchBarElement, 'n'); + expect(executeFilterSearch).toHaveBeenCalled(); + await screen.findByText('first name 1'); + await userEvent.type(searchBarElement, '{enter}'); + expect(setFilterOption).toBeCalledWith({ + filter: { + kind: 'fieldValue', + fieldId: 'name', + matcher: Matcher.Equals, + value: 'first name 1' + }, + displayName: 'first name 1', + selected: true }); - userEvent.clear(searchBarElement); - userEvent.type(searchBarElement, 'n'); - await waitFor(() => screen.findByText('first name 2')); - userEvent.type(searchBarElement, '{arrowdown}{enter}'); - await waitFor(() => { - expect(setFilterOption).toBeCalledWith({ - filter: { - kind: 'fieldValue', - fieldId: 'name', - matcher: Matcher.Equals, - value: 'first name 1' - }, - selected: false - }); + await userEvent.clear(searchBarElement); + await userEvent.type(searchBarElement, 'n'); + await screen.findByText('first name 2'); + await userEvent.type(searchBarElement, '{arrowdown}{enter}'); + expect(setFilterOption).toBeCalledWith({ + filter: { + kind: 'fieldValue', + fieldId: 'name', + matcher: Matcher.Equals, + value: 'first name 1' + }, + selected: false }); + expect(setFilterOption).toBeCalledWith({ filter: { kind: 'fieldValue', @@ -252,21 +246,20 @@ describe('search with section labels', () => { const searchBarElement = screen.getByRole('textbox'); userEvent.clear(searchBarElement); - userEvent.type(searchBarElement, 'n'); - await waitFor(() => expect(executeFilterSearch).toHaveBeenCalled()); - await waitFor(() => screen.findByText('first name 1')); - userEvent.type(searchBarElement, '{enter}'); - await waitFor(() => { - expect(setFilterOption).toBeCalledWith({ - filter: { - kind: 'fieldValue', - fieldId: 'name', - matcher: Matcher.Equals, - value: 'Real Person' - }, - selected: false - }); + await userEvent.type(searchBarElement, 'n'); + expect(executeFilterSearch).toHaveBeenCalled(); + await screen.findByText('first name 1'); + await userEvent.type(searchBarElement, '{enter}'); + expect(setFilterOption).toBeCalledWith({ + filter: { + kind: 'fieldValue', + fieldId: 'name', + matcher: Matcher.Equals, + value: 'Real Person' + }, + selected: false }); + expect(setFilterOption).toBeCalledWith({ filter: { kind: 'fieldValue', @@ -291,20 +284,18 @@ describe('search with section labels', () => { const searchBarElement = screen.getByRole('textbox'); userEvent.clear(searchBarElement); - userEvent.type(searchBarElement, 'n'); - await waitFor(() => expect(executeFilterSearch).toHaveBeenCalled()); - await waitFor(() => screen.findByText('first name 1')); - userEvent.type(searchBarElement, '{enter}'); - await waitFor(() => { - expect(setFilterOption).toBeCalledWith({ - filter: { - kind: 'fieldValue', - fieldId: 'name', - matcher: Matcher.Equals, - value: 'Real Person' - }, - selected: false - }); + await userEvent.type(searchBarElement, 'n'); + expect(executeFilterSearch).toHaveBeenCalled(); + await screen.findByText('first name 1'); + await userEvent.type(searchBarElement, '{enter}'); + expect(setFilterOption).toBeCalledWith({ + filter: { + kind: 'fieldValue', + fieldId: 'name', + matcher: Matcher.Equals, + value: 'Real Person' + }, + selected: false }); expect(setFilterOption).toBeCalledWith({ filter: { @@ -340,13 +331,12 @@ describe('search with section labels', () => { renderFilterSearch({ searchFields: searchFieldsProp, onSelect: mockedOnSelect }); const searchBarElement = screen.getByRole('textbox'); - userEvent.type(searchBarElement, 'n'); - await waitFor(() => screen.findByText('first name 1')); + await userEvent.type(searchBarElement, 'n'); + await screen.findByText('first name 1'); + + await userEvent.type(searchBarElement, '{enter}'); + expect(executeFilterSearch).toHaveBeenCalled(); - userEvent.type(searchBarElement, '{enter}'); - await waitFor(() => { - expect(executeFilterSearch).toHaveBeenCalled(); - }); expect(mockedOnSelect).toBeCalled(); expect(setFilterOption).not.toBeCalled(); }); @@ -416,20 +406,18 @@ describe('search with section labels', () => { const searchBarElement = screen.getByRole('textbox'); userEvent.clear(searchBarElement); - userEvent.type(searchBarElement, 'f'); - await waitFor(() => expect(executeFilterSearch).toHaveBeenCalled()); - await waitFor(() => screen.findByText('first name 1')); - userEvent.type(searchBarElement, '{enter}'); - await waitFor(() => { - expect(setFilterOption).toBeCalledWith({ - filter: { - kind: 'fieldValue', - fieldId: 'builtin.region', - matcher: Matcher.Equals, - value: 'VA' - }, - selected: false - }); + await userEvent.type(searchBarElement, 'f'); + expect(executeFilterSearch).toHaveBeenCalled(); + await screen.findByText('first name 1'); + await userEvent.type(searchBarElement, '{enter}'); + expect(setFilterOption).toBeCalledWith({ + filter: { + kind: 'fieldValue', + fieldId: 'builtin.region', + matcher: Matcher.Equals, + value: 'VA' + }, + selected: false }); expect(setFilterOption).toBeCalledWith({ filter: { @@ -479,9 +467,9 @@ describe('search with section labels', () => { renderFilterSearch({ searchFields: searchFieldsProp, searchOnSelect: true }); const searchBarElement = screen.getByRole('textbox'); - userEvent.type(searchBarElement, 'n'); - await waitFor(() => expect(executeFilterSearch).toHaveBeenCalled()); - await waitFor(() => screen.findByText('first name 1')); + await userEvent.type(searchBarElement, 'n'); + expect(executeFilterSearch).toHaveBeenCalled(); + await screen.findByText('first name 1'); const expectedSetFilterOptionParam = { filter: { @@ -495,10 +483,8 @@ describe('search with section labels', () => { }; const expectedSetOffsetParam = 0; - userEvent.type(searchBarElement, '{enter}'); - await waitFor(() => { - expect(setFilterOption).toBeCalledWith(expectedSetFilterOptionParam); - }); + await userEvent.type(searchBarElement, '{enter}'); + expect(setFilterOption).toBeCalledWith(expectedSetFilterOptionParam); expect(setOffset).toBeCalledWith(expectedSetOffsetParam); expect(resetFacets).toBeCalled(); @@ -519,11 +505,10 @@ describe('search with section labels', () => { renderFilterSearch({ searchFields: searchFieldsProp, searchOnSelect: true }); const searchBarElement = screen.getByRole('textbox'); - userEvent.type(searchBarElement, 'n{enter}'); + await userEvent.type(searchBarElement, 'n{enter}'); + + expect(setFilterOption).not.toBeCalled(); - await waitFor(() => { - expect(setFilterOption).not.toBeCalled(); - }); expect(setOffset).not.toBeCalled(); expect(resetFacets).not.toBeCalled(); expect(mockExecuteSearch).not.toBeCalled(); @@ -540,9 +525,10 @@ describe('search with section labels', () => { renderFilterSearch({ searchFields: searchFieldsProp, searchOnSelect: true }); const searchBarElement = screen.getByRole('textbox'); - userEvent.type(searchBarElement, 'n'); - await waitFor(() => expect(executeFilterSearch).toHaveBeenCalled()); - const autocompleteSuggestion = await waitFor(() => screen.findByText('first name 1')); + await userEvent.type(searchBarElement, 'n'); + expect(executeFilterSearch).toHaveBeenCalled(); + const autocompleteSuggestion = await screen.findByText('first name 1'); + const expectedSetFilterOptionParam = { filter: { @@ -556,7 +542,7 @@ describe('search with section labels', () => { }; const expectedSetOffsetParam = 0; - userEvent.click(autocompleteSuggestion); + await userEvent.click(autocompleteSuggestion); expect(setFilterOption).toBeCalledWith(expectedSetFilterOptionParam); expect(setOffset).toBeCalledWith(expectedSetOffsetParam); expect(resetFacets).toBeCalled(); @@ -586,13 +572,12 @@ describe('search with section labels', () => { }); const searchBarElement = screen.getByRole('textbox'); - userEvent.type(searchBarElement, 'n'); - await waitFor(() => screen.findByText('first name 1')); + await userEvent.type(searchBarElement, 'n'); + await screen.findByText('first name 1'); + + await userEvent.type(searchBarElement, '{enter}'); + expect(executeFilterSearch).toHaveBeenCalled(); - userEvent.type(searchBarElement, '{enter}'); - await waitFor(() => { - expect(executeFilterSearch).toHaveBeenCalled(); - }); expect(mockedOnSelect).toBeCalled(); expect(setFilterOption).not.toBeCalled(); expect(mockExecuteSearch).not.toBeCalled(); @@ -614,13 +599,12 @@ describe('search with section labels', () => { renderFilterSearch({ searchFields: searchFieldsProp, searchOnSelect: false }); const searchBarElement = screen.getByRole('textbox'); - userEvent.type(searchBarElement, 'n'); - await waitFor(() => screen.findByText('first name 1')); + await userEvent.type(searchBarElement, 'n'); + await screen.findByText('first name 1'); + + await userEvent.type(searchBarElement, '{enter}'); + expect(executeFilterSearch).toHaveBeenCalled(); - userEvent.type(searchBarElement, '{enter}'); - await waitFor(() => { - expect(executeFilterSearch).toHaveBeenCalled(); - }); expect(setFilterOption).toBeCalledWith({ filter: { kind: 'fieldValue', @@ -647,10 +631,9 @@ describe('search without section labels', () => { const searchBarElement = screen.getByRole('textbox'); - userEvent.type(searchBarElement, 'n'); - await waitFor(() => { - expect(executeFilterSearch).toHaveBeenCalled(); - }); + await userEvent.type(searchBarElement, 'n'); + expect(executeFilterSearch).toHaveBeenCalled(); + const autocompleteSuggestion = screen.getByText('first name 1'); expect(autocompleteSuggestion).toBeDefined(); }); @@ -661,11 +644,10 @@ describe('search without section labels', () => { .mockResolvedValue(unlabeledFilterSearchResponse); renderFilterSearch(); const inputNode = screen.getByRole('textbox'); - userEvent.type(inputNode, 'n'); - await waitFor(() => { - expect(executeFilterSearch).toHaveBeenCalled(); - }); - userEvent.keyboard('{enter}'); + await userEvent.type(inputNode, 'n'); + expect(executeFilterSearch).toHaveBeenCalled(); + + await userEvent.keyboard('{enter}'); expect(inputNode).toHaveValue('first name 1'); }); @@ -674,8 +656,8 @@ describe('search without section labels', () => { const executeFilterSearch = jest .spyOn(SearchHeadless.prototype, 'executeFilterSearch'); renderFilterSearch({ searchFields: searchFieldsProp, onDropdownInputChange: mockedOnDropdownInputChange}); - userEvent.type(screen.getByRole('textbox'), 'a'); - await waitFor(() => expect(mockedOnDropdownInputChange).toHaveBeenCalledTimes(1)); + await userEvent.type(screen.getByRole('textbox'), 'a'); + expect(mockedOnDropdownInputChange).toHaveBeenCalledTimes(1); expect(executeFilterSearch).toHaveBeenCalledTimes(0); }) }); @@ -689,15 +671,13 @@ describe('screen reader', () => { const searchBarElement = screen.getByRole('textbox'); - userEvent.type(searchBarElement, 'n'); - await waitFor(() => { - expect(executeFilterSearch).toHaveBeenCalled(); - }); + await userEvent.type(searchBarElement, 'n'); + expect(executeFilterSearch).toHaveBeenCalled(); + const expectedScreenReaderMessage = '2 First name autocomplete options found. 1 Last name autocomplete option found.'; - await waitFor(() => { - const screenReaderMessage = screen.getByText(expectedScreenReaderMessage); - expect(screenReaderMessage).toBeDefined(); - }); + + const screenReaderMessage = screen.getByText(expectedScreenReaderMessage); + expect(screenReaderMessage).toBeDefined(); }); it('renders ScreenReader messages without section labels', async () => { @@ -708,15 +688,13 @@ describe('screen reader', () => { const searchBarElement = screen.getByRole('textbox'); - userEvent.type(searchBarElement, 'n'); - await waitFor(() => { - expect(executeFilterSearch).toHaveBeenCalled(); - }); + await userEvent.type(searchBarElement, 'n'); + expect(executeFilterSearch).toHaveBeenCalled(); + const expectedScreenReaderMessage = '3 autocomplete options found.'; - await waitFor(() => { - const screenReaderMessage = screen.getByText(expectedScreenReaderMessage); - expect(screenReaderMessage).toBeDefined(); - }); + const screenReaderMessage = screen.getByText(expectedScreenReaderMessage); + + expect(screenReaderMessage).toBeDefined(); }); it('renders 0 results ScreenReader message when there are no results', async () => { @@ -726,26 +704,16 @@ describe('screen reader', () => { renderFilterSearch(); const searchBarElement = screen.getByRole('textbox'); - userEvent.type(searchBarElement, 'n'); - await waitFor(() => { - expect(executeFilterSearch).toHaveBeenCalled(); - }); + await userEvent.type(searchBarElement, 'n'); + expect(executeFilterSearch).toHaveBeenCalled(); + const expectedScreenReaderMessage = '0 autocomplete options found.'; - await waitFor(() => { - const screenReaderMessage = screen.getByText(expectedScreenReaderMessage); - expect(screenReaderMessage).toBeDefined(); - }); + const screenReaderMessage = screen.getByText(expectedScreenReaderMessage); + + expect(screenReaderMessage).toBeDefined(); }); }); -function renderFilterSearch( - props: FilterSearchProps = { searchFields: searchFieldsProp }, - state = mockedState -): RenderResult { - return render( - - ); -} it('clears input when old filters are removed', async () => { const setFilterOption = jest.spyOn(SearchHeadless.prototype, 'setFilterOption'); @@ -783,27 +751,22 @@ it('clears input when old filters are removed', async () => { ); const searchBarElement = screen.getByRole('textbox'); - userEvent.type(searchBarElement, 'first name 1'); + expect(searchBarElement).toHaveValue(''); + await userEvent.type(searchBarElement, 'first name 1'); + expect(await screen.findByRole('textbox')).toHaveDisplayValue('first name 1'); - userEvent.type(searchBarElement, '{enter}'); + await userEvent.type(searchBarElement, '{enter}'); - await waitFor(() => { - expect(executeFilterSearch).toHaveBeenCalled(); - }); + expect(executeFilterSearch).toHaveBeenCalled(); - await waitFor(() => { - expect(setFilterOption).toHaveBeenCalledWith({ ...deselectedFilter, selected: true }); - }); + expect(setFilterOption).toHaveBeenCalledWith({ ...deselectedFilter, selected: true }); const mockDeselectButton = screen.getByRole('button'); - userEvent.click(mockDeselectButton); + await userEvent.click(mockDeselectButton); - await waitFor(() => { - expect(setFilterOption).toBeCalledWith(deselectedFilter); - }); - await waitFor(() => { - expect(searchBarElement).toHaveValue(''); - }); + expect(setFilterOption).toBeCalledWith(deselectedFilter); + + expect(searchBarElement).toHaveValue(''); }); it('toggling the dropdown does not change selected filters', async () => { @@ -823,17 +786,13 @@ it('toggling the dropdown does not change selected filters', async () => { const searchBarElement = screen.getByRole('textbox'); const externalDiv = screen.getByText('external div'); - userEvent.type(searchBarElement, 'first name 1'); + await userEvent.type(searchBarElement, 'first name 1'); expect(await screen.findByRole('textbox')).toHaveDisplayValue('first name 1'); - userEvent.type(searchBarElement, '{enter}'); + await userEvent.type(searchBarElement, '{enter}'); - await waitFor(() => { - expect(executeFilterSearch).toHaveBeenCalled(); - }); + expect(executeFilterSearch).toHaveBeenCalled(); - await waitFor(() => { - expect(setFilterOption).toBeCalledTimes(1); - }); + expect(setFilterOption).toBeCalledTimes(1); userEvent.click(searchBarElement); userEvent.click(externalDiv); diff --git a/tests/components/Geolocation.test.tsx b/tests/components/Geolocation.test.tsx index f4015f474..f9a61e713 100644 --- a/tests/components/Geolocation.test.tsx +++ b/tests/components/Geolocation.test.tsx @@ -1,4 +1,4 @@ -import { render, screen, waitFor } from '@testing-library/react'; +import { render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { Geolocation } from '../../src/components/Geolocation'; import { Matcher, SelectableStaticFilter, State } from '@yext/search-headless-react'; @@ -139,10 +139,9 @@ describe('custom click handler', () => { const mockedHandleClickFn = jest.fn(); const actions = spyOnActions(); render(); - clickUpdateLocation(); - await waitFor(() => { - expect(mockedHandleClickFn).toHaveBeenCalledWith(newGeoPosition); - }); + await clickUpdateLocation(); + + expect(mockedHandleClickFn).toHaveBeenCalledWith(newGeoPosition); expect(actions.executeVerticalQuery).not.toBeCalled(); }); @@ -151,10 +150,9 @@ describe('custom click handler', () => { jest.spyOn(locationOperations, 'getUserLocation').mockRejectedValue('mocked error!'); const mockedHandleClickFn = jest.fn(); render(); - clickUpdateLocation(); - await waitFor(() => { - expect(consoleWarnSpy).toBeCalledWith('mocked error!'); - }); + await clickUpdateLocation(); + + expect(consoleWarnSpy).toBeCalledWith('mocked error!'); expect(mockedHandleClickFn).not.toBeCalled(); }); }); @@ -163,31 +161,27 @@ describe('default click handler', () => { it('sets a location filter using provided radius', async () => { const actions = spyOnActions(); render(); - clickUpdateLocation(); + await clickUpdateLocation(); const expectedLocationFilter: SelectableStaticFilter = createLocationFilter(10 * 1609.344); - await waitFor(() => { - expect(actions.setStaticFilters).toBeCalledWith([expectedLocationFilter]); - }); + expect(actions.setStaticFilters).toBeCalledWith([expectedLocationFilter]); }); it('sets a location filter with user\'s coordinates in static filters state when clicked', async () => { const actions = spyOnActions(); render(); - clickUpdateLocation(); + await clickUpdateLocation(); const expectedLocationFilter: SelectableStaticFilter = createLocationFilter(); expect(locationOperations.getUserLocation).toBeCalled(); - await waitFor(() => { - expect(actions.setStaticFilters).toBeCalledWith([expectedLocationFilter]); - }); + expect(actions.setStaticFilters).toBeCalledWith([expectedLocationFilter]); }); it('replaces existing location filters with a new location filter in static filters state', async () => { mockAnswersState(mockedStateWithFilters); const actions = spyOnActions(); render(); - clickUpdateLocation(); + await clickUpdateLocation(); const expectedStaticFilters = [ { @@ -202,32 +196,26 @@ describe('default click handler', () => { }, createLocationFilter() ]; - await waitFor(() => { - expect(actions.setStaticFilters).toBeCalledWith(expectedStaticFilters); - }); + expect(actions.setStaticFilters).toBeCalledWith(expectedStaticFilters); }); it('sets a location filter using a larger radius than provided value due to low accuracy of user coordinate', async () => { jest.spyOn(locationOperations, 'getUserLocation').mockResolvedValue(newGeoPositionWithLowAccuracy); const actions = spyOnActions(); render(); - clickUpdateLocation(); + await clickUpdateLocation(); const accuracy = newGeoPositionWithLowAccuracy.coords.accuracy; const expectedLocationFilter: SelectableStaticFilter = createLocationFilter(accuracy); - await waitFor(() => { - expect(actions.setStaticFilters).toBeCalledWith([expectedLocationFilter]); - }); + expect(actions.setStaticFilters).toBeCalledWith([expectedLocationFilter]); }); it('executes a new search when clicked', async () => { const actions = spyOnActions(); render(); - clickUpdateLocation(); + await clickUpdateLocation(); - await waitFor(() => { - expect(actions.executeVerticalQuery).toBeCalled(); - }); + expect(actions.executeVerticalQuery).toBeCalled(); }); it('does not execute default handleClick when error occurs from collecting user\'s location', async () => { @@ -235,18 +223,18 @@ describe('default click handler', () => { jest.spyOn(locationOperations, 'getUserLocation').mockRejectedValue('mocked error!'); const actions = spyOnActions(); render(); - clickUpdateLocation(); - await waitFor(() => { - expect(consoleWarnSpy).toBeCalledWith('mocked error!'); - }); + await clickUpdateLocation(); + + expect(consoleWarnSpy).toBeCalledWith('mocked error!'); + expect(actions.setStaticFilters).not.toBeCalled(); expect(actions.executeVerticalQuery).not.toBeCalled(); }); }); -function clickUpdateLocation() { +async function clickUpdateLocation() { const updateLocationButton = screen.getByRole('button'); - userEvent.click(updateLocationButton); + await userEvent.click(updateLocationButton); } function createLocationFilter(radius: number = 50 * 1609.344): SelectableStaticFilter { diff --git a/tests/components/HierarchicalFacetContent.test.tsx b/tests/components/HierarchicalFacetContent.test.tsx index 4e591b5ac..401172ce5 100644 --- a/tests/components/HierarchicalFacetContent.test.tsx +++ b/tests/components/HierarchicalFacetContent.test.tsx @@ -65,38 +65,38 @@ describe('HierarchicalFacetsContent', () => { expect(screen.getByRole('button', { name: /banana/i })).toBeTruthy(); expect(screen.getByRole('button', { name: /apple/i })).toBeTruthy(); }); - it('Clicking the currently selected option deselects it and selects its parent', () => { + it('Clicking the currently selected option deselects it and selects its parent', async () => { const actions = spyOnActions(); render(mockHierarchicalFacet()); const bananaButton = screen.getByRole('button', { name: /banana/i }); - userEvent.click(bananaButton); + await userEvent.click(bananaButton); expectFacetOptionSet(actions, { value: 'food > fruit > banana', selected: false }); expectFacetOptionSet(actions, { value: 'food > fruit', selected: true }); }); - it('Clicking a non-selected option selects it and deselects its siblings', () => { + it('Clicking a non-selected option selects it and deselects its siblings', async () => { const actions = spyOnActions(); render(mockHierarchicalFacet()); const appleButton = screen.getByRole('button', { name: /apple/i }); - userEvent.click(appleButton); + await userEvent.click(appleButton); expectFacetOptionSet(actions, { value: 'food > fruit > apple', selected: true }); expectFacetOptionSet(actions, { value: 'food > fruit > banana', selected: false }); }); it('Clicking the current category with a selected child selects the category and deselects the ' + - 'child', () => { + 'child', async () => { const actions = spyOnActions(); render(mockHierarchicalFacet()); const currentCategoryButton = screen.getAllByRole('button', { name: /fruit/i })[1]; - userEvent.click(currentCategoryButton); + await userEvent.click(currentCategoryButton); expectFacetOptionSet(actions, { value: 'food > fruit', selected: true }); expectFacetOptionSet(actions, { value: 'food > fruit > banana', selected: false }); }); - it('Clicking a selected current category deselects it and selects its parent', () => { + it('Clicking a selected current category deselects it and selects its parent', async () => { const facets = [ createHierarchicalFacet([ 'food', @@ -115,17 +115,17 @@ describe('HierarchicalFacetsContent', () => { render(mockHierarchicalFacet()); const currentCategoryButton = screen.getAllByRole('button', { name: /fruit/i })[1]; - userEvent.click(currentCategoryButton); + await userEvent.click(currentCategoryButton); expectFacetOptionSet(actions, { value: 'food > fruit', selected: false }); expectFacetOptionSet(actions, { value: 'food', selected: true }); }); - it('Clicking a parent category selects it and deselects its children', () => { + it('Clicking a parent category selects it and deselects its children', async () => { const actions = spyOnActions(); render(mockHierarchicalFacet()); const parentCategoryButton = screen.getByRole('button', { name: /food/i }); - userEvent.click(parentCategoryButton); + await userEvent.click(parentCategoryButton); expectFacetOptionSet(actions, { value: 'food', selected: true }); expectFacetOptionSet(actions, { value: 'food > fruit', selected: false }); diff --git a/tests/components/HierarchicalFacets.test.tsx b/tests/components/HierarchicalFacets.test.tsx index 0bd1c915c..ef83c6208 100644 --- a/tests/components/HierarchicalFacets.test.tsx +++ b/tests/components/HierarchicalFacets.test.tsx @@ -66,7 +66,7 @@ describe('Hierarchical facets', () => { expect(screen.getByRole('button', { name: /apple/i })).toBeTruthy(); }); - it('Clicking the currently selected option deselects it and selects its parent', () => { + it('Clicking the currently selected option deselects it and selects its parent', async () => { mockFiltersState({ facets: [ createHierarchicalFacet([ @@ -82,12 +82,12 @@ describe('Hierarchical facets', () => { render(); const bananaButton = screen.getByRole('button', { name: /banana/i }); - userEvent.click(bananaButton); + await userEvent.click(bananaButton); expectFacetOptionSet(actions, { value: 'food > fruit > banana', selected: false }); expectFacetOptionSet(actions, { value: 'food > fruit', selected: true }); }); - it('Clicking a non-selected option selects it and deselects its siblings', () => { + it('Clicking a non-selected option selects it and deselects its siblings', async () => { mockFiltersState({ facets: [ createHierarchicalFacet([ @@ -103,12 +103,12 @@ describe('Hierarchical facets', () => { render(); const appleButton = screen.getByRole('button', { name: /apple/i }); - userEvent.click(appleButton); + await userEvent.click(appleButton); expectFacetOptionSet(actions, { value: 'food > fruit > apple', selected: true }); expectFacetOptionSet(actions, { value: 'food > fruit > banana', selected: false }); }); - it('Clicking the current category with a selected child selects the category and deselects the child', () => { + it('Clicking the current category with a selected child selects the category and deselects the child', async () => { mockFiltersState({ facets: [ createHierarchicalFacet([ @@ -124,13 +124,13 @@ describe('Hierarchical facets', () => { render(); const currentCategoryButton = screen.getByRole('button', { name: /fruit/i }); - userEvent.click(currentCategoryButton); + await userEvent.click(currentCategoryButton); expectFacetOptionSet(actions, { value: 'food > fruit', selected: true }); expectFacetOptionSet(actions, { value: 'food > fruit > banana', selected: false }); }); - it('Clicking a selected current category deselects it and selects its parent', () => { + it('Clicking a selected current category deselects it and selects its parent', async () => { mockFiltersState({ facets: [ createHierarchicalFacet([ @@ -146,12 +146,12 @@ describe('Hierarchical facets', () => { render(); const currentCategoryButton = screen.getByRole('button', { name: /fruit/i }); - userEvent.click(currentCategoryButton); + await userEvent.click(currentCategoryButton); expectFacetOptionSet(actions, { value: 'food > fruit', selected: false }); expectFacetOptionSet(actions, { value: 'food', selected: true }); }); - it('Clicking a parent category selects it and deselects its children', () => { + it('Clicking a parent category selects it and deselects its children', async () => { mockFiltersState({ facets: [ createHierarchicalFacet([ @@ -167,7 +167,7 @@ describe('Hierarchical facets', () => { render(); const parentCategoryButton = screen.getByRole('button', { name: /food/i }); - userEvent.click(parentCategoryButton); + await userEvent.click(parentCategoryButton); expectFacetOptionSet(actions, { value: 'food', selected: true }); expectFacetOptionSet(actions, { value: 'food > fruit', selected: false }); diff --git a/tests/components/LocationBias.test.tsx b/tests/components/LocationBias.test.tsx index 75012df12..39fd12b7a 100644 --- a/tests/components/LocationBias.test.tsx +++ b/tests/components/LocationBias.test.tsx @@ -1,4 +1,4 @@ -import { render, screen, waitFor } from '@testing-library/react'; +import { render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { LocationBias } from '../../src/components/LocationBias'; import { State, LocationBiasMethod, LocationBias as LocationBiasType } from '@yext/search-headless-react'; @@ -85,7 +85,7 @@ it('renders the proper text (location DisplayName, method, and update btn)', () it('calls setUserLocation with coordinates returned by getUserLocation as params when update location is clicked', async () => { const actions = spyOnActions(); render(); - clickUpdateLocation(); + await clickUpdateLocation(); const expectedCoordinates = { latitude: newGeoPosition.coords.latitude, @@ -93,9 +93,7 @@ it('calls setUserLocation with coordinates returned by getUserLocation as params }; expect(locationOperations.getUserLocation).toBeCalled(); - await waitFor(() => { - expect(actions.setUserLocation).toBeCalledWith(expectedCoordinates); - }); + expect(actions.setUserLocation).toBeCalledWith(expectedCoordinates); }); it('updates rendered DisplayName if location changes and update button is clicked', async () => { @@ -105,11 +103,9 @@ it('updates rendered DisplayName if location changes and update button is clicke expect(locationNameElement).toBeDefined(); mockAnswersState(mockedStateNyIP); - clickUpdateLocation(); + await clickUpdateLocation(); - await waitFor(() => { - expect(searchOperations.executeSearch).toBeCalled(); - }); + expect(searchOperations.executeSearch).toBeCalled(); const newExpectedLocationName = mockedStateNyIP.location.locationBias.displayName; const newLocationNameElement = screen.getByText(newExpectedLocationName); @@ -138,7 +134,7 @@ it('renders nothing if there is no display name', () => { expect(container).toBeEmptyDOMElement(); }); -function clickUpdateLocation() { +async function clickUpdateLocation() { const updateLocationButton = screen.getByRole('button', { name: 'Update your location' }); - userEvent.click(updateLocationButton); + await userEvent.click(updateLocationButton); } diff --git a/tests/components/MapboxMap.stories.tsx b/tests/components/MapboxMap.stories.tsx index ff8ef5dd3..9d7421fdb 100644 --- a/tests/components/MapboxMap.stories.tsx +++ b/tests/components/MapboxMap.stories.tsx @@ -7,6 +7,7 @@ import { generateMockedHeadless } from '../__fixtures__/search-headless'; import { MapboxMap, MapboxMapProps } from '../../src/components/MapboxMap'; import { MapPin } from '../../test-site/src/components/MapPin'; import { Location } from '../../test-site/src/pages/LocationsPage'; +import { renderReact } from '../__utils__/renderReact'; import { locationVerticalSingle, locationVerticalMultiple } from '../__fixtures__/data/mapbox'; import React from 'react'; @@ -20,6 +21,9 @@ const meta: Meta = { PinComponent: { control: false, }, + renderPin: { + control: false, + }, }, args: { mapboxAccessToken: process.env.REACT_APP_MAPBOX_API_KEY, @@ -59,3 +63,18 @@ CustomPin.play = async ({ canvasElement }) => { fireEvent.click(mapPin); await canvas.findByText('title1'); }; + +export const CustomRenderPin: StoryFn> = Template.bind({}); + +CustomRenderPin.args = { + renderPin: (props) => renderReact(, props.container), +}; + +CustomRenderPin.play = async ({ canvasElement }) => { + const canvas = within(canvasElement); + const mapPin = await canvas.findByLabelText('Show pin details', undefined, { + timeout: 30000 + }); + fireEvent.click(mapPin); + await canvas.findByText('title1'); +}; diff --git a/tests/components/MapboxMap.test.tsx b/tests/components/MapboxMap.test.tsx index 96aed70e9..06cc66adb 100644 --- a/tests/components/MapboxMap.test.tsx +++ b/tests/components/MapboxMap.test.tsx @@ -113,3 +113,24 @@ it('registers "onDrag" callback to Mapbox\'s event listener for "drag to pan" in jest.advanceTimersByTime(100); //debounce time expect(onDragFn).toBeCalledTimes(1); }); + +it('uses PinComponent and logs warning if both PinComponent and renderPin are provided', () => { + mockAnswersState(mockedStateDefaultCoordinate); + jest.spyOn(Marker.prototype, 'setLngLat').mockReturnValue(Marker.prototype); + const PinComponent = jest.fn().mockImplementation(() => null); + const renderPin = jest.fn(); + const warnSpy = jest.spyOn(console, 'warn').mockImplementation(); + + render(); + + expect(warnSpy).toBeCalledTimes(1); + expect(warnSpy).toBeCalledWith( + 'Found both PinComponent and renderPin props. Using PinComponent.' + ); + expect(PinComponent).toBeCalledTimes(1); + expect(renderPin).not.toBeCalled(); +}); diff --git a/tests/components/NumericalFacetContent.test.tsx b/tests/components/NumericalFacetContent.test.tsx index 192a8868f..f5dfd2eca 100644 --- a/tests/components/NumericalFacetContent.test.tsx +++ b/tests/components/NumericalFacetContent.test.tsx @@ -68,7 +68,7 @@ describe('NumericalFacetContent', () => { }); }); - it('Clicking a selected number range facet option checkbox unselects it', () => { + it('Clicking a selected number range facet option checkbox unselects it', async () => { const actions = spyOnActions(); render(mockNumericalFacet()); @@ -76,11 +76,11 @@ describe('NumericalFacetContent', () => { screen.getByLabelText(numericalFacet.options[0].displayName); expect(expensiveCheckbox.checked).toBeTruthy(); - userEvent.click(expensiveCheckbox); + await userEvent.click(expensiveCheckbox); expectFacetOptionSet(actions, numericalFacet.fieldId, numericalFacet.options[0], false); }); - it('Clicking an unselected number range facet option checkbox selects it', () => { + it('Clicking an unselected number range facet option checkbox selects it', async () => { const actions = spyOnActions(); render(mockNumericalFacet()); @@ -88,11 +88,11 @@ describe('NumericalFacetContent', () => { screen.getByLabelText(numericalFacet.options[1].displayName); expect(cheapCheckbox.checked).toBeFalsy(); - userEvent.click(cheapCheckbox); + await userEvent.click(cheapCheckbox); expectFacetOptionSet(actions, numericalFacet.fieldId, numericalFacet.options[1], true); }); - it('getFilterDisplayName field works as expected', () => { + it('getFilterDisplayName field works as expected', async () => { const facets = [{ ...numericalFacet, options: numericalFacet.options.map(o => ({ ...o, selected: false })) @@ -108,9 +108,9 @@ describe('NumericalFacetContent', () => { render(mockNumericalFacet( { fieldId: numericalFacet.fieldId, getFilterDisplayName: getFilterDisplayName })); - userEvent.type(screen.getByPlaceholderText('Min'), '1'); - userEvent.type(screen.getByPlaceholderText('Max'), '5'); - userEvent.click(screen.getByText('Apply')); + await userEvent.type(screen.getByPlaceholderText('Min'), '1'); + await userEvent.type(screen.getByPlaceholderText('Max'), '5'); + await userEvent.click(screen.getByText('Apply')); const expectedSelectableFilter: SelectableStaticFilter = { displayName: 'start-1 end-5', diff --git a/tests/components/NumericalFacets.test.tsx b/tests/components/NumericalFacets.test.tsx index e016be83b..f8dba7a1d 100644 --- a/tests/components/NumericalFacets.test.tsx +++ b/tests/components/NumericalFacets.test.tsx @@ -63,7 +63,7 @@ describe('NumericalFacets', () => { }); }); - it('Clicking a selected number range facet option checkbox unselects it', () => { + it('Clicking a selected number range facet option checkbox unselects it', async () => { const actions = spyOnActions(); render(); @@ -71,11 +71,11 @@ describe('NumericalFacets', () => { const expensiveCheckbox: HTMLInputElement = screen.getByLabelText(priceFacet.options[0].displayName); expect(expensiveCheckbox.checked).toBeTruthy(); - userEvent.click(expensiveCheckbox); + await userEvent.click(expensiveCheckbox); expectFacetOptionSet(actions, priceFacet.fieldId, priceFacet.options[0], false); }); - it('Clicking an unselected number range facet option checkbox selects it', () => { + it('Clicking an unselected number range facet option checkbox selects it', async () => { const actions = spyOnActions(); render(); @@ -83,11 +83,11 @@ describe('NumericalFacets', () => { const cheapCheckbox: HTMLInputElement = screen.getByLabelText(priceFacet.options[1].displayName); expect(cheapCheckbox.checked).toBeFalsy(); - userEvent.click(cheapCheckbox); + await userEvent.click(cheapCheckbox); expectFacetOptionSet(actions, priceFacet.fieldId, priceFacet.options[1], true); }); - it('getFilterDisplayName field works as expected', () => { + it('getFilterDisplayName field works as expected', async () => { const displayableFacets = [{ ...DisplayableFacets[1], options: DisplayableFacets[1].options.map(o => ({ ...o, selected: false })) @@ -103,9 +103,9 @@ describe('NumericalFacets', () => { }; const actions = spyOnActions(); render(); - userEvent.type(screen.getByPlaceholderText('Min'), '1'); - userEvent.type(screen.getByPlaceholderText('Max'), '5'); - userEvent.click(screen.getByText('Apply')); + await userEvent.type(screen.getByPlaceholderText('Min'), '1'); + await userEvent.type(screen.getByPlaceholderText('Max'), '5'); + await userEvent.click(screen.getByText('Apply')); const expectedSelectableFilter: SelectableStaticFilter = { displayName: 'start-1 end-5', diff --git a/tests/components/Pagination.test.tsx b/tests/components/Pagination.test.tsx index e6ca8b220..74c055d03 100644 --- a/tests/components/Pagination.test.tsx +++ b/tests/components/Pagination.test.tsx @@ -142,7 +142,7 @@ describe('results are returned from search', () => { expect(screen.getByText('...')).toBeDefined(); }); - it('checks that navigation buttons trigger a new search', () => { + it('checks that navigation buttons trigger a new search', async () => { const mockedResultsCount = 5; const mockedVerticalSearchState: VerticalSearchState = { resultsCount: mockedResultsCount, @@ -155,7 +155,7 @@ describe('results are returned from search', () => { render(); // navigate to the last results page - userEvent.click(screen.getByText(`${mockedResultsCount}`)); + await userEvent.click(screen.getByText(`${mockedResultsCount}`)); expect(actions.setOffset).toHaveBeenCalledWith(mockedResultsCount - 1); expect(actions.executeVerticalQuery).toHaveBeenCalledTimes(1); }); diff --git a/tests/components/RangeInput.stories.tsx b/tests/components/RangeInput.stories.tsx index 7aa55f7ac..c76c4fc17 100644 --- a/tests/components/RangeInput.stories.tsx +++ b/tests/components/RangeInput.stories.tsx @@ -3,9 +3,9 @@ import { RangeInput, RangeInputProps } from '../../src/components/Filters/RangeI import { SearchHeadlessContext } from '@yext/search-headless-react'; import { generateMockedHeadless } from '../__fixtures__/search-headless'; import { FiltersContext } from '../../src/components/Filters/FiltersContext'; -import { FilterGroupContext } from '../../src/components/Filters/FilterGroupContext'; +import { FilterGroupProvider } from '../../src/components/Filters/FilterGroupProvider'; import { userEvent, within } from '@storybook/testing-library'; -import { filterContextValue, filterContextValueDisabled, filterGroupContextValue } from '../__fixtures__/data/filtercontext'; +import { filterContextValue, filterContextValueDisabled } from '../__fixtures__/data/filtercontext'; import React from 'react'; const meta: Meta = { @@ -18,9 +18,9 @@ const meta: Meta = { }, decorators: [(Story) => ( - + - + )] }; diff --git a/tests/components/RangeInput.test.tsx b/tests/components/RangeInput.test.tsx index f22bafe7d..c5eb51c3e 100644 --- a/tests/components/RangeInput.test.tsx +++ b/tests/components/RangeInput.test.tsx @@ -1,11 +1,11 @@ import userEvent from '@testing-library/user-event'; import { State } from '@yext/search-headless-react'; -import { render, screen, waitFor } from '@testing-library/react'; +import { render, screen } from '@testing-library/react'; import { RangeInput } from '../../src/components/Filters'; import { mockAnswersHooks, spyOnActions } from '../__utils__/mocks'; import { FiltersContext, FiltersContextType } from '../../src/components/Filters/FiltersContext'; -import { FilterGroupContext } from '../../src/components/Filters/FilterGroupContext'; -import { filterContextValue, filterContextValueDisabled, filterGroupContextValue } from '../__fixtures__/data/filtercontext'; +import { filterContextValue, filterContextValueDisabled } from '../__fixtures__/data/filtercontext'; +import { FilterGroupProvider } from '../../src/components/Filters/FilterGroupProvider'; import React from 'react'; const mockedState: Partial = { @@ -44,13 +44,11 @@ describe('Renders correctly for min input', () => { renderRangeInput(filterContextValue); const actions = spyOnActions(); const minTextbox = screen.getAllByRole('textbox')[0]; - userEvent.type(minTextbox, '10'); - await waitFor(() => { - expect(minTextbox).toHaveValue('10'); - }); + await userEvent.type(minTextbox, '10'); + expect(minTextbox).toHaveValue('10'); expect(screen.getByText('Clear min and max')).toBeDefined(); expect(screen.getByText('Apply')).toBeDefined(); - userEvent.click(screen.getByText('Apply')); + await userEvent.click(screen.getByText('Apply')); expect(actions.setFilterOption).toHaveBeenCalledWith({ displayName: 'Over 10', selected: true, @@ -72,11 +70,10 @@ describe('Renders correctly for min input', () => { renderRangeInput(filterContextValue); const actions = spyOnActions(); const minTextbox = screen.getAllByRole('textbox')[0]; - userEvent.type(minTextbox, '10'); - await waitFor(() => { - expect(minTextbox).toHaveValue('10'); - }); - userEvent.click(screen.getByText('Clear min and max')); + await userEvent.type(minTextbox, '10'); + expect(minTextbox).toHaveValue('10'); + + await userEvent.click(screen.getByText('Clear min and max')); expect(minTextbox).toHaveValue(''); expect(actions.setFilterOption).toHaveBeenCalledWith({ displayName: 'Over 10', @@ -105,13 +102,11 @@ describe('Renders correctly for max input', () => { renderRangeInput(filterContextValue); const actions = spyOnActions(); const maxTextbox = screen.getAllByRole('textbox')[1]; - userEvent.type(maxTextbox, '20'); - await waitFor(() => { - expect(maxTextbox).toHaveValue('20'); - }); + await userEvent.type(maxTextbox, '20'); + expect(maxTextbox).toHaveValue('20'); expect(screen.getByText('Clear min and max')).toBeDefined(); expect(screen.getByText('Apply')).toBeDefined(); - userEvent.click(screen.getByText('Apply')); + await userEvent.click(screen.getByText('Apply')); expect(actions.setFilterOption).toHaveBeenCalledWith({ displayName: 'Up to 20', selected: true, @@ -133,11 +128,10 @@ describe('Renders correctly for max input', () => { renderRangeInput(filterContextValue); const actions = spyOnActions(); const maxTextbox = screen.getAllByRole('textbox')[1]; - userEvent.type(maxTextbox, '20'); - await waitFor(() => { - expect(maxTextbox).toHaveValue('20'); - }); - userEvent.click(screen.getByText('Clear min and max')); + await userEvent.type(maxTextbox, '20'); + expect(maxTextbox).toHaveValue('20'); + + await userEvent.click(screen.getByText('Clear min and max')); expect(maxTextbox).toHaveValue(''); expect(actions.setFilterOption).toHaveBeenCalledWith({ displayName: 'Up to 20', @@ -166,15 +160,13 @@ describe('Renders correctly for min and max inputs', () => { renderRangeInput(filterContextValue); const actions = spyOnActions(); const [minTextbox, maxTextbox] = screen.getAllByRole('textbox'); - userEvent.type(minTextbox, '10'); - userEvent.type(maxTextbox, '20'); - await waitFor(() => { - expect(minTextbox).toHaveValue('10'); - }); + await userEvent.type(minTextbox, '10'); + await userEvent.type(maxTextbox, '20'); + expect(minTextbox).toHaveValue('10'); expect(maxTextbox).toHaveValue('20'); expect(screen.getByText('Apply')).toBeDefined(); expect(screen.getByText('Clear min and max')).toBeDefined(); - userEvent.click(screen.getByText('Apply')); + await userEvent.click(screen.getByText('Apply')); expect(actions.setFilterOption).toHaveBeenCalledWith({ displayName: '10 - 20', selected: true, @@ -200,13 +192,12 @@ describe('Renders correctly for min and max inputs', () => { renderRangeInput(filterContextValue); const actions = spyOnActions(); const [minTextbox, maxTextbox] = screen.getAllByRole('textbox'); - userEvent.type(minTextbox, '10'); - userEvent.type(maxTextbox, '20'); - await waitFor(() => { - expect(minTextbox).toHaveValue('10'); - }); + await userEvent.type(minTextbox, '10'); + await userEvent.type(maxTextbox, '20'); + + expect(minTextbox).toHaveValue('10'); expect(maxTextbox).toHaveValue('20'); - userEvent.click(screen.getByText('Clear min and max')); + await userEvent.click(screen.getByText('Clear min and max')); expect(minTextbox).toHaveValue(''); expect(maxTextbox).toHaveValue(''); expect(actions.setFilterOption).toHaveBeenCalledWith({ @@ -233,12 +224,11 @@ describe('Renders correctly for min and max inputs', () => { it('renders correctly when input range is invalid and no filter is set in state', async () => { renderRangeInput(filterContextValue); const [minTextbox, maxTextbox] = screen.getAllByRole('textbox'); - userEvent.type(minTextbox, '20'); - userEvent.type(maxTextbox, '10'); + await userEvent.type(minTextbox, '20'); + await userEvent.type(maxTextbox, '10'); const actions = spyOnActions(); - await waitFor(() => { - expect(minTextbox).toHaveValue('20'); - }); + + expect(minTextbox).toHaveValue('20'); expect(maxTextbox).toHaveValue('10'); expect(screen.getByText('Invalid range')).toBeDefined(); expect(actions.setFilterOption).toHaveBeenCalledTimes(0); @@ -256,10 +246,10 @@ it('renders correctly when disabled', () => { function renderRangeInput(filtersContextValue: FiltersContextType) { return ( render( - + - ) + ) ); } diff --git a/tests/components/SearchBar.test.tsx b/tests/components/SearchBar.test.tsx index 5febe58ac..28d68ed91 100644 --- a/tests/components/SearchBar.test.tsx +++ b/tests/components/SearchBar.test.tsx @@ -1,5 +1,5 @@ import { SearchIntent, QuerySource, SearchCore, SearchHeadlessContext, State } from '@yext/search-headless-react'; -import { render, screen, waitFor } from '@testing-library/react'; +import { render, screen } from '@testing-library/react'; import { SearchBar } from '../../src/components/SearchBar'; import userEvent from '@testing-library/user-event'; import { generateMockedHeadless } from '../__fixtures__/search-headless'; @@ -48,7 +48,7 @@ describe('SearchBar', () => { expect(screen.queryByText('query suggestion 1')).not.toBeInTheDocument(); expect(screen.queryByText('query suggestion 2')).not.toBeInTheDocument(); - userEvent.click(screen.getByRole('textbox')); + await userEvent.click(screen.getByRole('textbox')); expect(await screen.findByText('query suggestion 1')).toBeInTheDocument(); expect(await screen.findByText('query suggestion 2')).toBeInTheDocument(); expect(mockedUniversalAutocomplete).toBeCalledTimes(1); @@ -75,7 +75,7 @@ describe('SearchBar', () => { expect(screen.queryByText('query suggestion 1')).not.toBeInTheDocument(); expect(screen.queryByText('query suggestion 2')).not.toBeInTheDocument(); - userEvent.click(screen.getByRole('textbox')); + await userEvent.click(screen.getByRole('textbox')); expect(await screen.findByText('query suggestion 1')).toBeInTheDocument(); expect(await screen.findByText('query suggestion 2')).toBeInTheDocument(); expect(mockedVerticalAutocomplete).toBeCalledTimes(1); @@ -102,10 +102,10 @@ describe('SearchBar', () => { ); - userEvent.click(screen.getByRole('textbox')); + await userEvent.click(screen.getByRole('textbox')); expect(await screen.findByText('query suggestion 1')).toBeInTheDocument(); expect(screen.queryByText('query suggestion 2')).not.toBeInTheDocument(); - userEvent.type(screen.getByRole('textbox'), 't'); + await userEvent.type(screen.getByRole('textbox'), 't'); expect(await screen.findByText('query suggestion 2')).toBeInTheDocument(); expect(screen.queryByText('query suggestion 1')).not.toBeInTheDocument(); expect(mockedUniversalAutocomplete).toBeCalledTimes(2); @@ -122,15 +122,15 @@ describe('SearchBar', () => { ); - userEvent.click(screen.getByRole('textbox')); + await userEvent.click(screen.getByRole('textbox')); expect(await screen.findByText('query suggestion 1')).toBeInTheDocument(); - userEvent.keyboard('{arrowdown}'); - userEvent.keyboard('{enter}'); + await userEvent.keyboard('{arrowdown}'); + await userEvent.keyboard('{enter}'); expect(await screen.findByRole('textbox')).toHaveDisplayValue('query suggestion 1'); - await waitFor(() => expect(mockedUniversalSearch).toHaveBeenCalledTimes(1)); - await waitFor(() => expect(mockedUniversalSearch).toHaveBeenCalledWith(expect.objectContaining({ + expect(mockedUniversalSearch).toHaveBeenCalledTimes(1) + expect(mockedUniversalSearch).toHaveBeenCalledWith(expect.objectContaining({ query: 'query suggestion 1' - }))); + })); }); }); @@ -156,7 +156,7 @@ describe('SearchBar', () => { ); - userEvent.click(screen.getByRole('textbox')); + await userEvent.click(screen.getByRole('textbox')); expect(await screen.findByText('query suggestion')).toBeInTheDocument(); expect(await screen.findByText('in verticalKey1')).toBeInTheDocument(); expect(await screen.findByText('in verticalKey2')).toBeInTheDocument(); @@ -168,7 +168,7 @@ describe('SearchBar', () => { ); - userEvent.click(screen.getByRole('textbox')); + await userEvent.click(screen.getByRole('textbox')); expect(await screen.findByText('query suggestion')).toBeInTheDocument(); expect(screen.queryByText('in verticalKey1')).not.toBeInTheDocument(); expect(screen.queryByText('in verticalKey2')).not.toBeInTheDocument(); @@ -183,7 +183,7 @@ describe('SearchBar', () => { }}/> ); - userEvent.click(screen.getByRole('textbox')); + await userEvent.click(screen.getByRole('textbox')); expect(await screen.findByText('query suggestion')).toBeInTheDocument(); expect(await screen.findByText('in Vertical One')).toBeInTheDocument(); expect(await screen.findByText('in Vertical Two')).toBeInTheDocument(); @@ -196,9 +196,9 @@ describe('SearchBar', () => { ); - userEvent.click(screen.getByRole('textbox')); + await userEvent.click(screen.getByRole('textbox')); expect(await screen.findByText('in verticalKey1')).toBeInTheDocument(); - userEvent.click(screen.getByText('in verticalKey1')); + await userEvent.click(screen.getByText('in verticalKey1')); expect(mockedOnSelectVerticalLink).toBeCalledTimes(1); expect(mockedOnSelectVerticalLink).toHaveBeenCalledWith({ verticalLink: { @@ -217,12 +217,12 @@ describe('SearchBar', () => { ); - userEvent.type(screen.getByRole('textbox'), 'yext'); - userEvent.keyboard('{enter}'); - userEvent.clear(screen.getByRole('textbox')); - userEvent.type(screen.getByRole('textbox'), 'answers'); - userEvent.keyboard('{enter}'); - userEvent.clear(screen.getByRole('textbox')); + await userEvent.type(screen.getByRole('textbox'), 'yext'); + await userEvent.keyboard('{enter}'); + await userEvent.clear(screen.getByRole('textbox')); + await userEvent.type(screen.getByRole('textbox'), 'answers'); + await userEvent.keyboard('{enter}'); + await userEvent.clear(screen.getByRole('textbox')); expect(await screen.findByText('answers')).toBeInTheDocument(); expect(await screen.findByText('yext')).toBeInTheDocument(); }); @@ -233,13 +233,13 @@ describe('SearchBar', () => { ); - userEvent.type(screen.getByRole('textbox'), 'yext'); - userEvent.keyboard('{enter}'); - userEvent.clear(screen.getByRole('textbox')); + await userEvent.type(screen.getByRole('textbox'), 'yext'); + await userEvent.keyboard('{enter}'); + await userEvent.clear(screen.getByRole('textbox')); expect(await screen.findByText('yext')).toBeInTheDocument(); - userEvent.type(screen.getByRole('textbox'), 'answers'); - userEvent.keyboard('{enter}'); - userEvent.clear(screen.getByRole('textbox')); + await userEvent.type(screen.getByRole('textbox'), 'answers'); + await userEvent.keyboard('{enter}'); + await userEvent.clear(screen.getByRole('textbox')); expect(await screen.findByText('answers')).toBeInTheDocument(); expect(screen.queryByText('yext')).not.toBeInTheDocument(); }); @@ -251,10 +251,10 @@ describe('SearchBar', () => { ); - userEvent.type(screen.getByRole('textbox'), 'yext'); - userEvent.keyboard('{enter}'); + await userEvent.type(screen.getByRole('textbox'), 'yext'); + await userEvent.keyboard('{enter}'); expect(await screen.findByRole('textbox')).toHaveDisplayValue('yext'); - userEvent.clear(screen.getByRole('textbox')); + await userEvent.clear(screen.getByRole('textbox')); expect(await screen.findByRole('textbox')).toHaveDisplayValue(''); expect(screen.queryByText('yext')).not.toBeInTheDocument(); }); @@ -268,8 +268,8 @@ describe('SearchBar', () => { ); const mockedUniversalSearch = jest.spyOn(SearchCore.prototype, 'universalSearch'); const submitSearchButton = screen.getByRole('button', { name: 'Submit Search' }); - userEvent.click(submitSearchButton); - await waitFor(() => expect(mockedUniversalSearch).toHaveBeenCalledTimes(1)); + await userEvent.click(submitSearchButton); + expect(mockedUniversalSearch).toHaveBeenCalledTimes(1); }); it('clear button deletes text in input element', async () => { @@ -278,10 +278,10 @@ describe('SearchBar', () => { ); - userEvent.type(screen.getByRole('textbox'), 'yext'); + await userEvent.type(screen.getByRole('textbox'), 'yext'); expect(await screen.findByRole('textbox')).toHaveDisplayValue('yext'); const clearSearchButton = screen.getByRole('button', { name: 'Clear the search bar' }); - userEvent.click(clearSearchButton); + await userEvent.click(clearSearchButton); expect(await screen.findByRole('textbox')).toHaveDisplayValue(''); }); @@ -293,15 +293,15 @@ describe('SearchBar', () => { ); const mockedUniversalSearch = jest.spyOn(SearchCore.prototype, 'universalSearch'); - userEvent.type(screen.getByRole('textbox'), 'yext'); + await userEvent.type(screen.getByRole('textbox'), 'yext'); const submitSearchButton = screen.getByRole('button', { name: 'Submit Search' }); - userEvent.click(submitSearchButton); - await waitFor(() => expect(mockedOnSearch).toHaveBeenCalledTimes(1)); - await waitFor(() => expect(mockedOnSearch).toHaveBeenCalledWith({ + await userEvent.click(submitSearchButton); + expect(mockedOnSearch).toHaveBeenCalledTimes(1); + expect(mockedOnSearch).toHaveBeenCalledWith({ verticalKey: '', query: 'yext' - })); - await waitFor(() => expect(mockedUniversalSearch).toHaveBeenCalledTimes(0)); + }); + expect(mockedUniversalSearch).toHaveBeenCalledTimes(0); }); describe('executes search with near me location handling', () => { @@ -324,12 +324,11 @@ describe('SearchBar', () => { ); const submitSearchButton = screen.getByRole('button', { name: 'Submit Search' }); - userEvent.click(submitSearchButton); - await waitFor(() => expect(mockedUniversalSearch) + await userEvent.click(submitSearchButton); + expect(mockedUniversalSearch) .toHaveBeenCalledWith(expect.objectContaining({ location: userLocation - })) - ); + })); }); it('search with near me location handling using nagivator.geolocation API', async () => { @@ -356,12 +355,11 @@ describe('SearchBar', () => { ); const submitSearchButton = screen.getByRole('button', { name: 'Submit Search' }); - userEvent.click(submitSearchButton); - await waitFor(() => expect(mockedUniversalSearch) + await userEvent.click(submitSearchButton); + expect(mockedUniversalSearch) .toHaveBeenCalledWith(expect.objectContaining({ location: userLocation - })) - ); + })); }); }); @@ -387,10 +385,10 @@ describe('SearchBar', () => { ); - userEvent.click(screen.getByRole('textbox')); + await userEvent.click(screen.getByRole('textbox')); expect(await screen.findByText('query suggestion')).toBeInTheDocument(); - userEvent.keyboard('{arrowdown}'); - userEvent.keyboard('{enter}'); + await userEvent.keyboard('{arrowdown}'); + await userEvent.keyboard('{enter}'); expect(await screen.findByRole('textbox')).toHaveDisplayValue('query suggestion'); expect(mockedReport).toHaveBeenCalledTimes(1); expect(mockedReport).toHaveBeenCalledWith({ @@ -413,7 +411,7 @@ describe('SearchBar', () => { ); const clearSearchButton = screen.getByRole('button', { name: 'Clear the search bar' }); - userEvent.click(clearSearchButton); + await userEvent.click(clearSearchButton); expect(await screen.findByRole('textbox')).toHaveDisplayValue(''); expect(mockedReport).toHaveBeenCalledTimes(1); expect(mockedReport).toHaveBeenCalledWith({ @@ -452,7 +450,7 @@ describe('SearchBar', () => { ); - userEvent.click(screen.getByRole('textbox')); + await userEvent.click(screen.getByRole('textbox')); expect(await screen.findByText( '2 autocomplete suggestions found.' )).toBeInTheDocument(); @@ -464,9 +462,9 @@ describe('SearchBar', () => { ); - userEvent.type(screen.getByRole('textbox'), 'yext'); - userEvent.keyboard('{enter}'); - userEvent.click(screen.getByRole('textbox')); + await userEvent.type(screen.getByRole('textbox'), 'yext'); + await userEvent.keyboard('{enter}'); + await userEvent.click(screen.getByRole('textbox')); expect(await screen.findByText( '1 recent search found.' )).toBeInTheDocument(); diff --git a/tests/components/SpellCheck.test.tsx b/tests/components/SpellCheck.test.tsx index 826b5ad74..addb1947b 100644 --- a/tests/components/SpellCheck.test.tsx +++ b/tests/components/SpellCheck.test.tsx @@ -49,7 +49,7 @@ describe('SpellCheck', () => { expect(label).toEqual(mockedState.spellCheck?.correctedQuery); }); - it('Fires onClick when provided', () => { + it('Fires onClick when provided', async () => { const props = { onClick: jest.fn() }; @@ -57,7 +57,7 @@ describe('SpellCheck', () => { const actions = spyOnActions(); render(); - userEvent.click(screen.getByRole('button')); + await userEvent.click(screen.getByRole('button')); const verticalKey = mockedState.vertical?.verticalKey; const correctedQuery = mockedState.spellCheck?.correctedQuery; @@ -65,10 +65,10 @@ describe('SpellCheck', () => { expect(onClick).toHaveBeenCalledWith({ correctedQuery, verticalKey }); }); - it('Fires executeSearch when no onClick is provided', () => { + it('Fires executeSearch when no onClick is provided', async () => { const actions = spyOnActions(); render(); - userEvent.click(screen.getByRole('button')); + await userEvent.click(screen.getByRole('button')); const correctedQuery = mockedState.spellCheck?.correctedQuery; expect(actions.setQuery).toHaveBeenCalledWith(correctedQuery); diff --git a/tests/components/StandardFacetContent.test.tsx b/tests/components/StandardFacetContent.test.tsx index 7cbac090b..46447f074 100644 --- a/tests/components/StandardFacetContent.test.tsx +++ b/tests/components/StandardFacetContent.test.tsx @@ -80,7 +80,7 @@ describe('StandardFacetContent', () => { expect(coffeeLabelAndCount).toBeNull(); }); - it('Clicking an unselected facet option label selects it', () => { + it('Clicking an unselected facet option label selects it', async() => { const actions = spyOnActions(); render(mockStandardFacet()); @@ -90,11 +90,11 @@ describe('StandardFacetContent', () => { expect(coffeeCheckbox.checked).toBeFalsy(); const coffeeLabel = screen.getByText(labelText); - userEvent.click(coffeeLabel); + await userEvent.click(coffeeLabel); expectFacetOptionSet(actions, standardFacet.fieldId, coffeeFacetOption, true); }); - it('Clicking a selected facet option checkbox unselects it', () => { + it('Clicking a selected facet option checkbox unselects it', async() => { const actions = spyOnActions(); render(mockStandardFacet()); @@ -102,7 +102,7 @@ describe('StandardFacetContent', () => { getOptionLabelTextWithCount(standardFacet.options[1])); expect(teaCheckbox.checked).toBeTruthy(); - userEvent.click(teaCheckbox); + await userEvent.click(teaCheckbox); expectFacetOptionSet(actions, standardFacet.fieldId, standardFacet.options[1], false); }); }); diff --git a/tests/components/StandardFacets.test.tsx b/tests/components/StandardFacets.test.tsx index c6de8cecc..ade0ace6b 100644 --- a/tests/components/StandardFacets.test.tsx +++ b/tests/components/StandardFacets.test.tsx @@ -63,7 +63,7 @@ describe('StandardFacets', () => { }); }); - it('Clicking an unselected facet option checkbox selects it', () => { + it('Clicking an unselected facet option checkbox selects it', async () => { const actions = spyOnActions(); render(); @@ -73,7 +73,7 @@ describe('StandardFacets', () => { ); expect(coffeeCheckbox.checked).toBeFalsy(); - userEvent.click(coffeeCheckbox); + await userEvent.click(coffeeCheckbox); expectFacetOptionSet(actions, productFacet.fieldId, productFacet.options[0], true); }); @@ -90,7 +90,7 @@ describe('StandardFacets', () => { expect(coffeeLabelAndCount).toBeNull(); }); - it('Clicking an unselected facet option label selects it', () => { + it('Clicking an unselected facet option label selects it', async () => { const actions = spyOnActions(); render(); @@ -101,11 +101,11 @@ describe('StandardFacets', () => { expect(coffeeCheckbox.checked).toBeFalsy(); const coffeeLabel = screen.getByText(labelText); - userEvent.click(coffeeLabel); + await userEvent.click(coffeeLabel); expectFacetOptionSet(actions, productFacet.fieldId, coffeeFacetOption, true); }); - it('Clicking a selected facet option checkbox unselects it', () => { + it('Clicking a selected facet option checkbox unselects it', async () => { const actions = spyOnActions(); render(); @@ -114,11 +114,11 @@ describe('StandardFacets', () => { getOptionLabelTextWithCount(productFacet.options[1])); expect(teaCheckbox.checked).toBeTruthy(); - userEvent.click(teaCheckbox); + await userEvent.click(teaCheckbox); expectFacetOptionSet(actions, productFacet.fieldId, productFacet.options[1], false); }); - it('Clicking a facet option executes a search when searchOnChange is true', () => { + it('Clicking a facet option executes a search when searchOnChange is true', async () => { const actions = spyOnActions(); render(); @@ -128,12 +128,12 @@ describe('StandardFacets', () => { ); expect(coffeeCheckbox.checked).toBeFalsy(); - userEvent.click(coffeeCheckbox); + await userEvent.click(coffeeCheckbox); expectFacetOptionSet(actions, productFacet.fieldId, productFacet.options[0], true); expect(actions.executeVerticalQuery).toBeCalled(); }); - it('Clicking a facet option does not execute a search when searchOnChange is false', () => { + it('Clicking a facet option does not execute a search when searchOnChange is false', async () => { const actions = spyOnActions(); render(); @@ -143,7 +143,7 @@ describe('StandardFacets', () => { ); expect(coffeeCheckbox.checked).toBeFalsy(); - userEvent.click(coffeeCheckbox); + await userEvent.click(coffeeCheckbox); expectFacetOptionSet(actions, productFacet.fieldId, productFacet.options[0], true); expect(actions.executeVerticalQuery).not.toBeCalled(); }); diff --git a/tests/components/StaticFilters.test.tsx b/tests/components/StaticFilters.test.tsx index 018d1c4f0..3e58d394c 100644 --- a/tests/components/StaticFilters.test.tsx +++ b/tests/components/StaticFilters.test.tsx @@ -1,3 +1,4 @@ +import React from 'react'; import { render, screen } from '@testing-library/react'; import { SearchActions, State } from '@yext/search-headless-react'; import { mockAnswersHooks, spyOnActions } from '../__utils__/mocks'; @@ -6,7 +7,6 @@ import userEvent from '@testing-library/user-event'; import { StaticFilters } from '../../src/components'; import { staticFilters, staticFiltersProps } from '../__fixtures__/data/filters'; import { testSSR } from '../ssr/utils'; -import React from 'react'; const mockedState: Partial = { filters: { @@ -58,7 +58,7 @@ describe('Static Filters', () => { expect(screen.getByText('Clifford')).toBeDefined(); }); - it('Clicking an unselected filter option checkbox selects it', () => { + it('Clicking an unselected filter option checkbox selects it', async () => { const actions = spyOnActions(); render(); @@ -68,11 +68,11 @@ describe('Static Filters', () => { ); expect(martyCheckbox.checked).toBeFalsy(); - userEvent.click(martyCheckbox); + await userEvent.click(martyCheckbox); expectFilterOptionSet(actions, staticFiltersProps.fieldId, martyFilter, true); }); - it('Clicking a selected filter option checkbox unselects it', () => { + it('Clicking a selected filter option checkbox unselects it', async () => { const actions = spyOnActions(); render(); @@ -80,7 +80,7 @@ describe('Static Filters', () => { const bleeckerCheckbox: HTMLInputElement = screen.getByLabelText(bleeckerFilter.value.toString()); expect(bleeckerCheckbox.checked).toBeTruthy(); - userEvent.click(bleeckerCheckbox); + await userEvent.click(bleeckerCheckbox); expectFilterOptionSet(actions, staticFiltersProps.fieldId, bleeckerFilter, false); }); @@ -129,31 +129,31 @@ describe('Static Filters', () => { expect(screen.getByRole('checkbox', { name: 'Clifford' })).toBeDefined(); }); - it('Search input is added when searchable is true', () => { + it('Search input is added when searchable is true', async () => { render(); const searchInput = screen.getByRole('textbox'); expect(searchInput).toBeDefined(); expect(screen.getAllByRole('checkbox')).toHaveLength(4); - userEvent.type(searchInput, 'dog'); + await userEvent.type(searchInput, 'dog'); expect(screen.queryByRole('checkbox')).toBeNull(); }); - it('Clicking a filter option executes a search when searchOnChange is true', () => { + it('Clicking a filter option executes a search when searchOnChange is true', async () => { const actions = spyOnActions(); render(); const martyCheckbox: HTMLInputElement = screen.getByLabelText('MARTY!'); - userEvent.click(martyCheckbox); + await userEvent.click(martyCheckbox); expect(actions.executeVerticalQuery).toBeCalled(); }); - it('Clicking a filter option does not execute a search when searchOnChange is false', () => { + it('Clicking a filter option does not execute a search when searchOnChange is false', async () => { const actions = spyOnActions(); render(); const martyCheckbox: HTMLInputElement = screen.getByLabelText('MARTY!'); - userEvent.click(martyCheckbox); + await userEvent.click(martyCheckbox); expect(actions.executeVerticalQuery).not.toBeCalled(); }); }); diff --git a/tests/hooks/getRenderHook.ts b/tests/hooks/getRenderHook.ts new file mode 100644 index 000000000..bacc162b6 --- /dev/null +++ b/tests/hooks/getRenderHook.ts @@ -0,0 +1,12 @@ +function getRenderHook() { + try { + // Attempt to import testing-library/react-hooks + const testingLibraryHooks = require('@testing-library/react-hooks'); + return testingLibraryHooks.renderHook; + } catch (error) { + // Fallback to using testing-library/react + return require('@testing-library/react').renderHook; + } +} + +export const renderHook = getRenderHook(); diff --git a/tests/hooks/useComposedCssClasses.test.ts b/tests/hooks/useComposedCssClasses.test.ts index 97e57424a..23431b548 100644 --- a/tests/hooks/useComposedCssClasses.test.ts +++ b/tests/hooks/useComposedCssClasses.test.ts @@ -1,5 +1,5 @@ import { useComposedCssClasses } from '../../src/hooks/useComposedCssClasses'; -import { renderHook } from '@testing-library/react-hooks'; +import { renderHook } from './getRenderHook'; import * as tailwindMerge from 'tailwind-merge'; describe('when there are no custom classes', () => { diff --git a/tests/hooks/useRecentSearches.test.tsx b/tests/hooks/useRecentSearches.test.tsx index 2ac618754..6350bf036 100644 --- a/tests/hooks/useRecentSearches.test.tsx +++ b/tests/hooks/useRecentSearches.test.tsx @@ -1,5 +1,5 @@ import { useRecentSearches } from '../../src/hooks/useRecentSearches'; -import { renderHook } from '@testing-library/react-hooks'; +import { renderHook } from './getRenderHook'; import { act } from '@testing-library/react'; beforeEach(() => { diff --git a/tests/hooks/useSynchronizedRequest.test.tsx b/tests/hooks/useSynchronizedRequest.test.tsx index a76f54da5..9d7a61519 100644 --- a/tests/hooks/useSynchronizedRequest.test.tsx +++ b/tests/hooks/useSynchronizedRequest.test.tsx @@ -1,6 +1,5 @@ import { useSynchronizedRequest } from '../../src/hooks/useSynchronizedRequest'; -import { renderHook } from '@testing-library/react-hooks'; -import { waitFor } from '@testing-library/react'; +import { renderHook } from './getRenderHook'; it('returns an updated execute request function with the same reference', async () => { let requestFunction = async () => 0; @@ -9,17 +8,13 @@ it('returns an updated execute request function with the same reference', async ); const oldReturnedRequestFunction = result.current[1]; - await waitFor(async () => { - expect(await oldReturnedRequestFunction()).toBe(0); - }); + expect(await oldReturnedRequestFunction()).toBe(0); requestFunction = async () => 1; rerender(); const newReturnedRequestFunction = result.current[1]; - await waitFor(async () => { - expect(await newReturnedRequestFunction()).toBe(1); - }); + expect(await newReturnedRequestFunction()).toBe(1); expect(oldReturnedRequestFunction).toBe(newReturnedRequestFunction); }); @@ -34,19 +29,15 @@ it('uses a new error function while returning same execute request reference', a ); const oldReturnedRequestFunction = result.current[1]; - oldReturnedRequestFunction(); - await waitFor(() => { - expect(mockedErrorFunction).toBeCalledTimes(1); - }); + await oldReturnedRequestFunction(); + expect(mockedErrorFunction).toBeCalledTimes(1); mockedErrorFunction = jest.fn().mockReturnValue(1); rerender(); const newReturnedRequestFunction = result.current[1]; - newReturnedRequestFunction(); - await waitFor(() => { - expect(mockedErrorFunction).toBeCalledTimes(1); - }); + await newReturnedRequestFunction(); + expect(mockedErrorFunction).toBeCalledTimes(1); expect(oldReturnedRequestFunction).toBe(newReturnedRequestFunction); }); \ No newline at end of file