From 02a142a3534fd68dcc83ec237ad6984d87c87a3a Mon Sep 17 00:00:00 2001 From: Adam Skoufis Date: Tue, 4 Jun 2024 10:47:28 +1000 Subject: [PATCH] Remove storybook CLI commands and dependencies, provide minimal config for storybook --- .changeset/chilled-tips-clean.md | 29 + .changeset/curly-crews-wait.md | 36 + .changeset/dull-colts-fetch.md | 24 + .eslintignore | 3 +- .gitignore | 1 + .prettierignore | 5 +- docs/docs/api.md | 10 - docs/docs/configuration.md | 34 - docs/docs/faq.md | 4 +- docs/docs/storybook.md | 143 +- fixtures/assertion-removal/.eslintignore | 2 - fixtures/assertion-removal/.gitignore | 2 - fixtures/assertion-removal/.prettierignore | 2 - fixtures/braid-design-system/.eslintignore | 2 - fixtures/braid-design-system/.gitignore | 2 - fixtures/braid-design-system/.prettierignore | 2 - fixtures/configure/sku.config.ts | 1 - fixtures/custom-src-paths/.eslintignore | 2 - fixtures/custom-src-paths/.gitignore | 2 - fixtures/custom-src-paths/.prettierignore | 2 - fixtures/jest-test/jest.config.js | 4 +- fixtures/library-build/.eslintignore | 2 - fixtures/library-build/.gitignore | 2 - fixtures/library-build/.prettierignore | 2 - fixtures/library-file/.eslintignore | 2 - fixtures/library-file/.gitignore | 2 - fixtures/library-file/.prettierignore | 2 - fixtures/lint-format/.eslintignore | 2 - fixtures/lint-format/.gitignore | 2 - fixtures/lint-format/.prettierignore | 2 - fixtures/multiple-routes/.eslintignore | 2 - fixtures/multiple-routes/.gitignore | 2 - fixtures/multiple-routes/.prettierignore | 2 - fixtures/public-path/.eslintignore | 2 - fixtures/public-path/.gitignore | 2 - fixtures/public-path/.prettierignore | 2 - fixtures/react-css-modules/.eslintignore | 2 - fixtures/react-css-modules/.gitignore | 2 - fixtures/react-css-modules/.prettierignore | 2 - fixtures/sku-test/.eslintignore | 2 - fixtures/sku-test/.gitignore | 2 - fixtures/sku-test/.prettierignore | 2 - fixtures/sku-webpack-plugin/package.json | 5 +- fixtures/sku-with-https/.eslintignore | 2 - fixtures/sku-with-https/.gitignore | 2 - fixtures/sku-with-https/.prettierignore | 2 - fixtures/source-maps/.eslintignore | 2 - fixtures/source-maps/.gitignore | 2 - fixtures/source-maps/.prettierignore | 2 - fixtures/ssr-hello-world/.eslintignore | 2 - fixtures/ssr-hello-world/.gitignore | 2 - fixtures/ssr-hello-world/.prettierignore | 2 - fixtures/storybook-config/.eslintignore | 4 +- fixtures/storybook-config/.gitignore | 3 +- fixtures/storybook-config/.prettierignore | 4 +- fixtures/storybook-config/.storybook/main.ts | 19 + .../storybook-config/.storybook/preview.tsx | 2 +- fixtures/storybook-config/package.json | 7 +- ...{sku.storybook.config.ts => sku.config.ts} | 7 +- .../src/TestComponent.stories.tsx | 2 +- fixtures/styling/.eslintignore | 4 +- fixtures/styling/.gitignore | 4 +- fixtures/styling/.prettierignore | 4 +- fixtures/styling/.storybook/main.ts | 22 + fixtures/styling/package.json | 4 + fixtures/styling/sku.config.ts | 5 +- .../src/components/BlueBlock.stories.tsx | 2 +- fixtures/translations/.eslintignore | 4 +- fixtures/translations/.gitignore | 4 +- fixtures/translations/.prettierignore | 4 +- fixtures/typescript-css-modules/.eslintignore | 2 - fixtures/typescript-css-modules/.gitignore | 2 - .../typescript-css-modules/.prettierignore | 2 - packages/sku/@storybook/react/index.ts | 4 - packages/sku/config/jest/index.js | 7 + packages/sku/config/storybook/index.d.ts | 4 + packages/sku/config/storybook/index.js | 88 +- packages/sku/context/configSchema.js | 13 - packages/sku/context/defaultSkuConfig.js | 4 - packages/sku/context/index.js | 5 - packages/sku/lib/configure.js | 6 - packages/sku/lib/storybook.js | 36 - packages/sku/package.json | 12 +- packages/sku/scripts/build-storybook.js | 29 - packages/sku/scripts/storybook.js | 24 - packages/sku/sku-types.d.ts | 34 - pnpm-lock.yaml | 1588 ++++++++--------- test-utils/package.json | 1 + test-utils/process.ts | 6 +- test-utils/storybook.js | 7 +- tests/__snapshots__/configure.test.ts.snap | 8 - tests/assertion-removal.test.ts | 2 + tests/braid-design-system.test.js | 1 - tests/configure.test.ts | 4 - tests/package.json | 2 + tests/storybook-config.test.js | 52 +- tests/styling.test.ts | 32 +- 97 files changed, 1075 insertions(+), 1382 deletions(-) create mode 100644 .changeset/chilled-tips-clean.md create mode 100644 .changeset/curly-crews-wait.md create mode 100644 .changeset/dull-colts-fetch.md create mode 100644 fixtures/storybook-config/.storybook/main.ts rename fixtures/storybook-config/{sku.storybook.config.ts => sku.config.ts} (73%) create mode 100644 fixtures/styling/.storybook/main.ts delete mode 100644 packages/sku/@storybook/react/index.ts create mode 100644 packages/sku/config/jest/index.js create mode 100644 packages/sku/config/storybook/index.d.ts delete mode 100644 packages/sku/lib/storybook.js delete mode 100644 packages/sku/scripts/build-storybook.js delete mode 100644 packages/sku/scripts/storybook.js diff --git a/.changeset/chilled-tips-clean.md b/.changeset/chilled-tips-clean.md new file mode 100644 index 000000000..60c2bba70 --- /dev/null +++ b/.changeset/chilled-tips-clean.md @@ -0,0 +1,29 @@ +--- +'sku': major +--- + +Remove `storybook` CLI commands + +**BREAKING CHANGE** + +`sku` no longer provides the `sku storybook` and `sku build-storybook` CLI commands. Please migrate to [the official Storybook CLI][storybook cli]: + +**MIGRATION GUIDE**: + +```sh +pnpm install -D storybook +``` + +```diff +// package.json +{ + "scripts": { +- "storybook": "sku storybook", ++ "storybook": "storybook dev", +- "build:storybook": "sku build-storybook" ++ "storybook-build": "storybook build" + } +} +``` + +[storybook cli]: https://storybook.js.org/docs/cli/ diff --git a/.changeset/curly-crews-wait.md b/.changeset/curly-crews-wait.md new file mode 100644 index 000000000..8b3156176 --- /dev/null +++ b/.changeset/curly-crews-wait.md @@ -0,0 +1,36 @@ +--- +'sku': major +--- + +Remove automatic configuration of Storybook + +**BREAKING CHANGE** + +Sku no longer configures your `.storybook/main.ts` file for you. If you are using Storybook, you will need to configure it yourself. See the [Storybook docs] for more information. + +**MIGRATION GUIDE**: + +Minimal Storybook configuration: + +```ts +// .storybook/main.ts +import { babel, webpackFinal } from 'sku/config/storybook'; +import type { StorybookConfig } from '@storybook/react-webpack5'; + +export default { + stories: ['../src/**/*.stories.tsx'], + framework: '@storybook/react-webpack5', + core: { + builder: { + name: '@storybook/builder-webpack5', + options: { + fsCache: true, // For faster startup times after the first `storybook dev` + }, + }, + }, + babel, + webpackFinal, +} satisfies StorybookConfig; +``` + +[storybook docs]: https://seek-oss.github.io/sku/#/./docs/storybook diff --git a/.changeset/dull-colts-fetch.md b/.changeset/dull-colts-fetch.md new file mode 100644 index 000000000..d0760b92e --- /dev/null +++ b/.changeset/dull-colts-fetch.md @@ -0,0 +1,24 @@ +--- +'sku': major +--- + +Remove Storybook dependencies and `@storybook/react` entrypoint + +**BREAKING CHANGE** + +Sku no longer installs Storybook dependencies. Additionally, it no longer provides the `sku/@storybook/react` entrypoint. If you are using Storybook, you will need to install the dependencies yourself. See the [Storybook docs] for more information. + +**MIGRATION GUIDE**: + +```sh +pnpm install -D storybook @storybook/react @storybook/react-webpack5 +``` + +```diff +// MyComponent.stories.tsx + +-import type { Meta } from 'sku/@storybook/react'; ++import type { Meta } from '@storybook/react'; +``` + +[storybook docs]: https://seek-oss.github.io/sku/#/./docs/storybook diff --git a/.eslintignore b/.eslintignore index 0c3fa4063..13598c5da 100644 --- a/.eslintignore +++ b/.eslintignore @@ -3,9 +3,8 @@ node_modules coverage/ dist/ dist-build/ -dist-playroom/ dist-start/ -dist-storybook/ +storybook-static/ report/ template/ test/test-cases/*/* diff --git a/.gitignore b/.gitignore index 8952f4172..e7a7b7638 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,5 @@ dist/ dist-build/ dist-ssr/ dist-start/ +storybook-static/ yarn.lock diff --git a/.prettierignore b/.prettierignore index 8edb6c2ec..9621e310f 100644 --- a/.prettierignore +++ b/.prettierignore @@ -4,10 +4,9 @@ coverage/ dist/ dist-ssr/ dist-build/ -dist-playroom/ dist-start/ -dist-storybook/ +storybook-static/ report/ template/ .changeset/*.md -CHANGELOG.md \ No newline at end of file +CHANGELOG.md diff --git a/docs/docs/api.md b/docs/docs/api.md index 9967e240f..f617c769e 100644 --- a/docs/docs/api.md +++ b/docs/docs/api.md @@ -22,16 +22,6 @@ Example: import { loadableReady } from 'sku/@loadable/component'; ``` -## `sku/@storybook/react` - -A re-export of the `@storybook/react` package, which `sku` provides as a dependency. - -Example: - -```ts -import type { StoryObj } from 'sku/@storybook/react'; -``` - ## `sku/config/jest` A jest preset for consuming `sku`'s Jest configuration. diff --git a/docs/docs/configuration.md b/docs/docs/configuration.md index 2bce7a384..df82da290 100644 --- a/docs/docs/configuration.md +++ b/docs/docs/configuration.md @@ -423,40 +423,6 @@ Default: `['./src']` An array of directories holding your app's source code. By default, sku expects your source code to be in a directory named `src` in the root of your project. Use this option if your source code needs to be arranged differently. -## storybookAddons - -type `Array` - -Default: `[]` - -An array of storybook addons to use. - -## storybookPort - -type `number` - -Default: `8081` - -The port to host storybook on when running `sku storybook`. - -## storybookStoryStore - -type `boolean` - -Default: `true` - -Allows disabling Storybook's `storyStoreV7` feature flag. -This will result in all stories being loaded upfront instead of on demand. -Disabling this feature will allow stories that use the deprecated `storiesOf` API to work, however it's highly recommended to migrate off `storiesOf` to the Component Story Format (CSF) instead. - -## storybookTarget - -type `string` - -Default: `dist-storybook` - -The directory `sku build-storybook` will output files to. - ## supportedBrowsers type `browserslist-query` diff --git a/docs/docs/faq.md b/docs/docs/faq.md index fb392b657..c60848d7b 100644 --- a/docs/docs/faq.md +++ b/docs/docs/faq.md @@ -2,12 +2,12 @@ ## Why isn't X working? -If you're having issues with sku please contact the _#sku-support_ channel for help. However, you can try the following to resolve common issues. +If you're having issues with sku please contact the _#sku-support_ channel for help. +You can also try the following to resolve common issues: - Remove any direct dependencies that may clash with sku. If you're unsure you can ask in _#sku-support_. The usual suspects are: - `jest` and `jest-cli` - Any thing `babel` related - `webpack` or any `webpack` loaders/plugins that sku already provides - - `storybook` - `typescript` - `prettier` and `eslint` diff --git a/docs/docs/storybook.md b/docs/docs/storybook.md index 353af6f59..b70552749 100644 --- a/docs/docs/storybook.md +++ b/docs/docs/storybook.md @@ -1,88 +1,75 @@ # [Storybook](https://storybook.js.org/) -## Start Storybook +This page will guide you through the process of setting up Storybook in your project. +The configuration outlined on this page should work for most projects, but you may customize it further to suit your needs. -Running `sku storybook` will open up a local component explorer, displaying all component instances declared in files named `*.stories.js` (or `.ts`, or `.tsx`), for example: +## Installing Storybook Dependencies -```tsx -import Button from './Button'; +To set up Storybook, you will need to install the following dev dependencies: -import type { Meta } from 'sku/@storybook/react'; - -export default { - title: 'Button', - component: Button, -} satisfies Meta; - -export const Primary = () => ; - -export const Secondary = () => ; +```sh +pnpm install -D storybook @storybook/react @storybook/react-webpack5 ``` -_**NOTE:** To access the Storybook API, you should import from `sku/@storybook/...`, since your project isn't depending on Storybook packages directly._ - -## Configuration +## Configuring Storybook Storybook can be configured by creating specially-named files inside the `.storybook` folder of your app. -Take a look at the [Storybook configuration docs] for all the ways to customize your Storybook. - -_**NOTE:** sku maintains control of the `main.js` configuration file as it is critical to ensuring compatibility between Storybook and your app. -If you have a valid use case for customizing this file, please reach out in [`#sku-support`]._ - -[Storybook configuration docs]: https://storybook.js.org/docs/react/configure/overview -[`#sku-support`]: https://seekchat.slack.com/channels/sku-support - -### Addons - -There are no storybook addons configured by default in sku but they can be added through the `storybookAddons` option in `sku.config.ts`. +Take a look at the [Storybook configuration docs] for all the ways to customize Storybook. -For example, if you want to use `@storybook/addon-essentials`, first install the addon. - -```bash -yarn add --dev @storybook/addon-essentials -``` - -Then add it to your `sku.config.ts`. +Here's an example of a minimal, sku-compatible Storybook configuration: ```ts +// .storybook/main.ts +import { babel, webpackFinal } from 'sku/config/storybook'; +import type { StorybookConfig } from '@storybook/react-webpack5'; + export default { - storybookAddons: ['@storybook/addon-essentials'], -} satisfies SkuConfig; + stories: ['../src/**/*.stories.tsx'], + framework: '@storybook/react-webpack5', + core: { + builder: { + name: '@storybook/builder-webpack5', + options: { + fsCache: true, // For faster startup times after the first `storybook dev` + }, + }, + }, + babel, + webpackFinal, +} satisfies StorybookConfig; ``` -### Story Rendering +> We strongly recommend using the `babel` and `webpackFinal` configurations provided by `sku`. +> These configurations are designed to work well with `sku` and are tested as part of `sku`'s integration tests. +> While you are free use alternative configurations, we cannot provide any guarantees that Storybook will work correctly in all cases. -Story rendering can be customized globally by creating a `.storybook/preview.js` (or `.ts`, or `.tsx`) file. +If you want to typecheck the files within the `.storybook` directory, you will need to add them to your [`tsconfig.json`'s `include`][tsconfig include] field. +This is necessary because the implicit default value of `include` is `['**/*']`, which does not include any directories prefixed with `.`, such as `.storybook`. -```tsx -import 'braid-design-system/reset'; +This can be done via [`sku`'s `dangerouslySetTSConfig` configuration option][dangerouslySetTSConfig]: -import apac from 'braid-design-system/themes/apac'; -import { BraidProvider } from 'braid-design-system'; - -import React from 'react'; - -import type { Preview } from 'sku/@storybook/react'; +```ts +// sku.config.ts +import type { SkuConfig } from 'sku'; -// This will wrap every story in a BraidProvider export default { - decorators: [ - (Story) => ( - - - - ), - ], -} satisfies Preview; + dangerouslySetTSConfig: (config) => ({ + ...config, + include: [ + '**/*', // Implicit default value if `include` is not set and `files` is not set + '.storybook/*', // 👈 Add this line + ], + }), +} satisfies SkuConfig; ``` -See [the Storybook docs][storybook preview.js] for more info. - -[storybook preview.js]: https://storybook.js.org/docs/react/configure/overview#configure-story-rendering +[Storybook configuration docs]: https://storybook.js.org/docs/react/configure/overview +[tsconfig include]: https://www.typescriptlang.org/tsconfig/#include +[dangerouslySetTSConfig]: ./docs/configuration.md#dangerouslysettsconfig -### DevServer Middleware +## DevServer Middleware -When running `sku storybook`, if you want to run your [`devServerMiddleware`][devserver middleware] at the same time, add a `middleware.js` file to the `.storybook` folder and export it: +When running `storybook dev`, if you want to run your [`devServerMiddleware`][devserver middleware] at the same time, add a `middleware.js` file to the `.storybook` folder and re-export your middleware inside it: ```js // .storybook/middleware.js @@ -92,37 +79,3 @@ export default devServerMiddleware; ``` [devserver middleware]: ./docs/extra-features.md#devserver-middleware - -### Storybook Port - -By default, Storybook runs on port `8081`. -If you'd like to use a different port, you can provide it via the `storybookPort` option in `sku.config.ts`: - -```ts -export default { - storybookPort: 9000, -} satisfies SkuConfig; -``` - -## Build Storybook - -To build your Storybook, first add the following npm script: - -```json -{ - "scripts": { - "build-storybook": "sku build-storybook" - } -} -``` - -Then run `npm run build-storybook`. - -By default, Storybook assets are generated in the `dist-storybook` directory in your project root folder. -If you would like to specify a custom target directory, you can provide it via the `storybookTarget` option in `sku.config.ts`: - -```ts -export default { - storybookTarget: './dist/storybook', -} satisfies SkuConfig; -``` diff --git a/fixtures/assertion-removal/.eslintignore b/fixtures/assertion-removal/.eslintignore index 7a576a584..13e3df1d6 100644 --- a/fixtures/assertion-removal/.eslintignore +++ b/fixtures/assertion-removal/.eslintignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/fixtures/assertion-removal/.gitignore b/fixtures/assertion-removal/.gitignore index 3fb13a590..c65292cfc 100644 --- a/fixtures/assertion-removal/.gitignore +++ b/fixtures/assertion-removal/.gitignore @@ -2,9 +2,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ tsconfig.json diff --git a/fixtures/assertion-removal/.prettierignore b/fixtures/assertion-removal/.prettierignore index 7a576a584..13e3df1d6 100644 --- a/fixtures/assertion-removal/.prettierignore +++ b/fixtures/assertion-removal/.prettierignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/fixtures/braid-design-system/.eslintignore b/fixtures/braid-design-system/.eslintignore index 7a576a584..13e3df1d6 100644 --- a/fixtures/braid-design-system/.eslintignore +++ b/fixtures/braid-design-system/.eslintignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/fixtures/braid-design-system/.gitignore b/fixtures/braid-design-system/.gitignore index 3fb13a590..c65292cfc 100644 --- a/fixtures/braid-design-system/.gitignore +++ b/fixtures/braid-design-system/.gitignore @@ -2,9 +2,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ tsconfig.json diff --git a/fixtures/braid-design-system/.prettierignore b/fixtures/braid-design-system/.prettierignore index 7a576a584..13e3df1d6 100644 --- a/fixtures/braid-design-system/.prettierignore +++ b/fixtures/braid-design-system/.prettierignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/fixtures/configure/sku.config.ts b/fixtures/configure/sku.config.ts index a74bcec7b..c49e57dc2 100644 --- a/fixtures/configure/sku.config.ts +++ b/fixtures/configure/sku.config.ts @@ -2,7 +2,6 @@ import type { SkuConfig } from 'sku'; export default { target: 'foo/bar', - storybookTarget: 'storybook/foobar', dangerouslySetESLintConfig: (config) => { config.rules = config.rules || {}; config.rules['no-console'] = 0; diff --git a/fixtures/custom-src-paths/.eslintignore b/fixtures/custom-src-paths/.eslintignore index 7a576a584..13e3df1d6 100644 --- a/fixtures/custom-src-paths/.eslintignore +++ b/fixtures/custom-src-paths/.eslintignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/fixtures/custom-src-paths/.gitignore b/fixtures/custom-src-paths/.gitignore index 3fb13a590..c65292cfc 100644 --- a/fixtures/custom-src-paths/.gitignore +++ b/fixtures/custom-src-paths/.gitignore @@ -2,9 +2,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ tsconfig.json diff --git a/fixtures/custom-src-paths/.prettierignore b/fixtures/custom-src-paths/.prettierignore index 7a576a584..13e3df1d6 100644 --- a/fixtures/custom-src-paths/.prettierignore +++ b/fixtures/custom-src-paths/.prettierignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/fixtures/jest-test/jest.config.js b/fixtures/jest-test/jest.config.js index 6d5c038d8..aa28edea2 100644 --- a/fixtures/jest-test/jest.config.js +++ b/fixtures/jest-test/jest.config.js @@ -1,4 +1,6 @@ +const { preset } = require('sku/config/jest'); + /** @type {import('jest').Config} */ module.exports = { - preset: 'sku/config/jest', + preset, }; diff --git a/fixtures/library-build/.eslintignore b/fixtures/library-build/.eslintignore index 7a576a584..13e3df1d6 100644 --- a/fixtures/library-build/.eslintignore +++ b/fixtures/library-build/.eslintignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/fixtures/library-build/.gitignore b/fixtures/library-build/.gitignore index 3fb13a590..c65292cfc 100644 --- a/fixtures/library-build/.gitignore +++ b/fixtures/library-build/.gitignore @@ -2,9 +2,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ tsconfig.json diff --git a/fixtures/library-build/.prettierignore b/fixtures/library-build/.prettierignore index 7a576a584..13e3df1d6 100644 --- a/fixtures/library-build/.prettierignore +++ b/fixtures/library-build/.prettierignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/fixtures/library-file/.eslintignore b/fixtures/library-file/.eslintignore index 7a576a584..13e3df1d6 100644 --- a/fixtures/library-file/.eslintignore +++ b/fixtures/library-file/.eslintignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/fixtures/library-file/.gitignore b/fixtures/library-file/.gitignore index 3fb13a590..c65292cfc 100644 --- a/fixtures/library-file/.gitignore +++ b/fixtures/library-file/.gitignore @@ -2,9 +2,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ tsconfig.json diff --git a/fixtures/library-file/.prettierignore b/fixtures/library-file/.prettierignore index 7a576a584..13e3df1d6 100644 --- a/fixtures/library-file/.prettierignore +++ b/fixtures/library-file/.prettierignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/fixtures/lint-format/.eslintignore b/fixtures/lint-format/.eslintignore index 7a576a584..13e3df1d6 100644 --- a/fixtures/lint-format/.eslintignore +++ b/fixtures/lint-format/.eslintignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/fixtures/lint-format/.gitignore b/fixtures/lint-format/.gitignore index 9137a2a3c..84ec47377 100644 --- a/fixtures/lint-format/.gitignore +++ b/fixtures/lint-format/.gitignore @@ -2,9 +2,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ tsconfig.json diff --git a/fixtures/lint-format/.prettierignore b/fixtures/lint-format/.prettierignore index 7a576a584..13e3df1d6 100644 --- a/fixtures/lint-format/.prettierignore +++ b/fixtures/lint-format/.prettierignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/fixtures/multiple-routes/.eslintignore b/fixtures/multiple-routes/.eslintignore index 7a576a584..13e3df1d6 100644 --- a/fixtures/multiple-routes/.eslintignore +++ b/fixtures/multiple-routes/.eslintignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/fixtures/multiple-routes/.gitignore b/fixtures/multiple-routes/.gitignore index 3fb13a590..c65292cfc 100644 --- a/fixtures/multiple-routes/.gitignore +++ b/fixtures/multiple-routes/.gitignore @@ -2,9 +2,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ tsconfig.json diff --git a/fixtures/multiple-routes/.prettierignore b/fixtures/multiple-routes/.prettierignore index 7a576a584..13e3df1d6 100644 --- a/fixtures/multiple-routes/.prettierignore +++ b/fixtures/multiple-routes/.prettierignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/fixtures/public-path/.eslintignore b/fixtures/public-path/.eslintignore index 2c5fc0c3f..8048f3185 100644 --- a/fixtures/public-path/.eslintignore +++ b/fixtures/public-path/.eslintignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/static/ report/ # end managed by sku diff --git a/fixtures/public-path/.gitignore b/fixtures/public-path/.gitignore index bde9f522f..a957c43de 100644 --- a/fixtures/public-path/.gitignore +++ b/fixtures/public-path/.gitignore @@ -2,9 +2,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/static/ report/ tsconfig.json diff --git a/fixtures/public-path/.prettierignore b/fixtures/public-path/.prettierignore index 2c5fc0c3f..8048f3185 100644 --- a/fixtures/public-path/.prettierignore +++ b/fixtures/public-path/.prettierignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/static/ report/ # end managed by sku diff --git a/fixtures/react-css-modules/.eslintignore b/fixtures/react-css-modules/.eslintignore index 7a576a584..13e3df1d6 100644 --- a/fixtures/react-css-modules/.eslintignore +++ b/fixtures/react-css-modules/.eslintignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/fixtures/react-css-modules/.gitignore b/fixtures/react-css-modules/.gitignore index 3fb13a590..c65292cfc 100644 --- a/fixtures/react-css-modules/.gitignore +++ b/fixtures/react-css-modules/.gitignore @@ -2,9 +2,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ tsconfig.json diff --git a/fixtures/react-css-modules/.prettierignore b/fixtures/react-css-modules/.prettierignore index 7a576a584..13e3df1d6 100644 --- a/fixtures/react-css-modules/.prettierignore +++ b/fixtures/react-css-modules/.prettierignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/fixtures/sku-test/.eslintignore b/fixtures/sku-test/.eslintignore index 7a576a584..13e3df1d6 100644 --- a/fixtures/sku-test/.eslintignore +++ b/fixtures/sku-test/.eslintignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/fixtures/sku-test/.gitignore b/fixtures/sku-test/.gitignore index 3fb13a590..c65292cfc 100644 --- a/fixtures/sku-test/.gitignore +++ b/fixtures/sku-test/.gitignore @@ -2,9 +2,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ tsconfig.json diff --git a/fixtures/sku-test/.prettierignore b/fixtures/sku-test/.prettierignore index 7a576a584..13e3df1d6 100644 --- a/fixtures/sku-test/.prettierignore +++ b/fixtures/sku-test/.prettierignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/fixtures/sku-webpack-plugin/package.json b/fixtures/sku-webpack-plugin/package.json index 916b35a05..0db2214b9 100644 --- a/fixtures/sku-webpack-plugin/package.json +++ b/fixtures/sku-webpack-plugin/package.json @@ -11,7 +11,10 @@ "babel-loader": "^9.1.2", "mini-css-extract-plugin": "^2.6.1", "html-webpack-plugin": "^5.3.2", - "sku": "workspace:*" + "sku": "workspace:*", + "webpack": "^5.52.0", + "webpack-cli": "^5.0.0", + "webpack-dev-server": "^5.0.2" }, "skuSkipValidatePeerDeps": true } diff --git a/fixtures/sku-with-https/.eslintignore b/fixtures/sku-with-https/.eslintignore index 7a576a584..13e3df1d6 100644 --- a/fixtures/sku-with-https/.eslintignore +++ b/fixtures/sku-with-https/.eslintignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/fixtures/sku-with-https/.gitignore b/fixtures/sku-with-https/.gitignore index d27b1f163..3bf8c3e4a 100644 --- a/fixtures/sku-with-https/.gitignore +++ b/fixtures/sku-with-https/.gitignore @@ -3,9 +3,7 @@ .eslintrc .prettierrc .ssl -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ tsconfig.json diff --git a/fixtures/sku-with-https/.prettierignore b/fixtures/sku-with-https/.prettierignore index 7a576a584..13e3df1d6 100644 --- a/fixtures/sku-with-https/.prettierignore +++ b/fixtures/sku-with-https/.prettierignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/fixtures/source-maps/.eslintignore b/fixtures/source-maps/.eslintignore index 7a576a584..13e3df1d6 100644 --- a/fixtures/source-maps/.eslintignore +++ b/fixtures/source-maps/.eslintignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/fixtures/source-maps/.gitignore b/fixtures/source-maps/.gitignore index 3fb13a590..c65292cfc 100644 --- a/fixtures/source-maps/.gitignore +++ b/fixtures/source-maps/.gitignore @@ -2,9 +2,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ tsconfig.json diff --git a/fixtures/source-maps/.prettierignore b/fixtures/source-maps/.prettierignore index 7a576a584..13e3df1d6 100644 --- a/fixtures/source-maps/.prettierignore +++ b/fixtures/source-maps/.prettierignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/fixtures/ssr-hello-world/.eslintignore b/fixtures/ssr-hello-world/.eslintignore index 21f104661..42d5caea3 100644 --- a/fixtures/ssr-hello-world/.eslintignore +++ b/fixtures/ssr-hello-world/.eslintignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ dist-build/ -dist-storybook/ report/ # end managed by sku diff --git a/fixtures/ssr-hello-world/.gitignore b/fixtures/ssr-hello-world/.gitignore index 5eecb9133..0d6b7d499 100644 --- a/fixtures/ssr-hello-world/.gitignore +++ b/fixtures/ssr-hello-world/.gitignore @@ -2,10 +2,8 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ dist-build/ -dist-storybook/ report/ tsconfig.json # end managed by sku diff --git a/fixtures/ssr-hello-world/.prettierignore b/fixtures/ssr-hello-world/.prettierignore index 21f104661..42d5caea3 100644 --- a/fixtures/ssr-hello-world/.prettierignore +++ b/fixtures/ssr-hello-world/.prettierignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ dist-build/ -dist-storybook/ report/ # end managed by sku diff --git a/fixtures/storybook-config/.eslintignore b/fixtures/storybook-config/.eslintignore index 7a576a584..2d383f122 100644 --- a/fixtures/storybook-config/.eslintignore +++ b/fixtures/storybook-config/.eslintignore @@ -1,11 +1,11 @@ +storybook-static/ + # managed by sku *.less.d.ts .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/fixtures/storybook-config/.gitignore b/fixtures/storybook-config/.gitignore index 278b927fe..e2da4bf88 100644 --- a/fixtures/storybook-config/.gitignore +++ b/fixtures/storybook-config/.gitignore @@ -1,13 +1,12 @@ node_modules npm-debug.log +storybook-static/ # managed by sku .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ tsconfig.json diff --git a/fixtures/storybook-config/.prettierignore b/fixtures/storybook-config/.prettierignore index 7a576a584..2d383f122 100644 --- a/fixtures/storybook-config/.prettierignore +++ b/fixtures/storybook-config/.prettierignore @@ -1,11 +1,11 @@ +storybook-static/ + # managed by sku *.less.d.ts .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/fixtures/storybook-config/.storybook/main.ts b/fixtures/storybook-config/.storybook/main.ts new file mode 100644 index 000000000..08a0efffb --- /dev/null +++ b/fixtures/storybook-config/.storybook/main.ts @@ -0,0 +1,19 @@ +import type { StorybookConfig } from '@storybook/react-webpack5'; +import { babel, webpackFinal } from 'sku/config/storybook'; + +export default { + stories: ['../src/**/*.stories.tsx'], + framework: '@storybook/react-webpack5', + core: { + builder: { + name: '@storybook/builder-webpack5', + options: { + fsCache: true, + }, + }, + disableTelemetry: true, + }, + addons: ['@storybook/addon-webpack5-compiler-babel'], + babel, + webpackFinal, +} satisfies StorybookConfig; diff --git a/fixtures/storybook-config/.storybook/preview.tsx b/fixtures/storybook-config/.storybook/preview.tsx index 57fe89090..e5d0a216a 100644 --- a/fixtures/storybook-config/.storybook/preview.tsx +++ b/fixtures/storybook-config/.storybook/preview.tsx @@ -3,7 +3,7 @@ import 'braid-design-system/reset'; import { BraidProvider, Text } from 'braid-design-system'; import apac from 'braid-design-system/themes/apac'; -import type { Preview } from 'sku/@storybook/react'; +import type { Preview } from '@storybook/react'; export default { decorators: [ diff --git a/fixtures/storybook-config/package.json b/fixtures/storybook-config/package.json index 212999fda..66302f5b8 100644 --- a/fixtures/storybook-config/package.json +++ b/fixtures/storybook-config/package.json @@ -7,11 +7,14 @@ "react-dom": "^18.2.0" }, "devDependencies": { - "@storybook/addon-controls": "^7.0.0", + "@storybook/addon-webpack5-compiler-babel": "^3.0.3", + "@storybook/react": "^8.1.5", + "@storybook/react-webpack5": "^8.1.5", "@types/react": "^18.2.3", "@types/react-dom": "^18.2.3", "@vanilla-extract/css": "^1.0.0", - "sku": "workspace:*" + "sku": "workspace:*", + "storybook": "^8.1.5" }, "skuSkipValidatePeerDeps": true } diff --git a/fixtures/storybook-config/sku.storybook.config.ts b/fixtures/storybook-config/sku.config.ts similarity index 73% rename from fixtures/storybook-config/sku.storybook.config.ts rename to fixtures/storybook-config/sku.config.ts index fe8b37e7b..9ee31371e 100644 --- a/fixtures/storybook-config/sku.storybook.config.ts +++ b/fixtures/storybook-config/sku.config.ts @@ -4,11 +4,12 @@ const skuConfig: SkuConfig = { clientEntry: 'src/client.tsx', renderEntry: 'src/render.tsx', environments: ['development', 'production'], - storybookPort: 8089, orderImports: true, devServerMiddleware: './dev-middleware.js', - storybookAddons: ['@storybook/addon-controls'], - storybookStoryStore: false, + dangerouslySetTSConfig: (config) => ({ + ...config, + include: ['**/*', '.storybook/*'], + }), }; export default skuConfig; diff --git a/fixtures/storybook-config/src/TestComponent.stories.tsx b/fixtures/storybook-config/src/TestComponent.stories.tsx index 8681a752d..f5b2f73cf 100644 --- a/fixtures/storybook-config/src/TestComponent.stories.tsx +++ b/fixtures/storybook-config/src/TestComponent.stories.tsx @@ -1,4 +1,4 @@ -import type { Meta, StoryObj } from 'sku/@storybook/react'; +import type { Meta, StoryObj } from '@storybook/react'; import { TestComponent } from './TestComponent'; diff --git a/fixtures/styling/.eslintignore b/fixtures/styling/.eslintignore index 7a576a584..2d383f122 100644 --- a/fixtures/styling/.eslintignore +++ b/fixtures/styling/.eslintignore @@ -1,11 +1,11 @@ +storybook-static/ + # managed by sku *.less.d.ts .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/fixtures/styling/.gitignore b/fixtures/styling/.gitignore index 3fb13a590..fa8719480 100644 --- a/fixtures/styling/.gitignore +++ b/fixtures/styling/.gitignore @@ -1,10 +1,10 @@ +storybook-static/ + # managed by sku .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ tsconfig.json diff --git a/fixtures/styling/.prettierignore b/fixtures/styling/.prettierignore index 7a576a584..2d383f122 100644 --- a/fixtures/styling/.prettierignore +++ b/fixtures/styling/.prettierignore @@ -1,11 +1,11 @@ +storybook-static/ + # managed by sku *.less.d.ts .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/fixtures/styling/.storybook/main.ts b/fixtures/styling/.storybook/main.ts new file mode 100644 index 000000000..19a9a71cf --- /dev/null +++ b/fixtures/styling/.storybook/main.ts @@ -0,0 +1,22 @@ +import type { StorybookConfig } from '@storybook/react-webpack5'; +import { babel, webpackFinal } from 'sku/config/storybook'; + +export default { + stories: ['../src/**/*.stories.tsx'], + framework: { + name: '@storybook/react-webpack5', + options: {}, + }, + core: { + builder: { + name: '@storybook/builder-webpack5', + options: { + fsCache: true, + }, + }, + disableTelemetry: true, + }, + addons: ['@storybook/addon-webpack5-compiler-babel'], + babel, + webpackFinal, +} satisfies StorybookConfig; diff --git a/fixtures/styling/package.json b/fixtures/styling/package.json index f23dba48e..797511a5f 100644 --- a/fixtures/styling/package.json +++ b/fixtures/styling/package.json @@ -8,9 +8,13 @@ }, "devDependencies": { "@sku-private/test-utils": "workspace:*", + "@storybook/addon-webpack5-compiler-babel": "^3.0.3", + "@storybook/react": "^8.1.5", + "@storybook/react-webpack5": "^8.1.5", "@types/react": "^18.2.3", "@types/react-dom": "^18.2.3", "@vanilla-extract/css": "^1.0.0", + "storybook": "^8.1.5", "dedent": "^1.5.1", "sku": "workspace:*" }, diff --git a/fixtures/styling/sku.config.ts b/fixtures/styling/sku.config.ts index 4e4e9d86f..53b224eb9 100644 --- a/fixtures/styling/sku.config.ts +++ b/fixtures/styling/sku.config.ts @@ -6,8 +6,11 @@ export default { clientEntry: 'src/client.tsx', renderEntry: 'src/render.tsx', port: 8205, - storybookPort: 8090, publicPath: '/styling', target: 'dist', dangerouslySetWebpackConfig: (config) => makeStableHashes(config), + dangerouslySetTSConfig: (config) => ({ + ...config, + include: ['**/*', '.storybook/*'], + }), } satisfies SkuConfig; diff --git a/fixtures/styling/src/components/BlueBlock.stories.tsx b/fixtures/styling/src/components/BlueBlock.stories.tsx index e5b53da8e..1ff1de70c 100644 --- a/fixtures/styling/src/components/BlueBlock.stories.tsx +++ b/fixtures/styling/src/components/BlueBlock.stories.tsx @@ -1,4 +1,4 @@ -import type { Meta, StoryObj } from 'sku/@storybook/react'; +import type { Meta, StoryObj } from '@storybook/react'; import BlueBlock from './BlueBlock'; diff --git a/fixtures/translations/.eslintignore b/fixtures/translations/.eslintignore index 6fc2dea4d..d46dde8bf 100644 --- a/fixtures/translations/.eslintignore +++ b/fixtures/translations/.eslintignore @@ -4,9 +4,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-ssr/ -dist-storybook/ +dist/ report/ # end managed by sku diff --git a/fixtures/translations/.gitignore b/fixtures/translations/.gitignore index ab32e561b..c31f61784 100644 --- a/fixtures/translations/.gitignore +++ b/fixtures/translations/.gitignore @@ -5,10 +5,8 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-ssr/ -dist-storybook/ +dist/ report/ tsconfig.json # end managed by sku diff --git a/fixtures/translations/.prettierignore b/fixtures/translations/.prettierignore index 1ef8de787..ade7c8b36 100644 --- a/fixtures/translations/.prettierignore +++ b/fixtures/translations/.prettierignore @@ -6,9 +6,7 @@ translations.ts .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-ssr/ -dist-storybook/ +dist/ report/ # end managed by sku diff --git a/fixtures/typescript-css-modules/.eslintignore b/fixtures/typescript-css-modules/.eslintignore index 7a576a584..13e3df1d6 100644 --- a/fixtures/typescript-css-modules/.eslintignore +++ b/fixtures/typescript-css-modules/.eslintignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/fixtures/typescript-css-modules/.gitignore b/fixtures/typescript-css-modules/.gitignore index 3fb13a590..c65292cfc 100644 --- a/fixtures/typescript-css-modules/.gitignore +++ b/fixtures/typescript-css-modules/.gitignore @@ -2,9 +2,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ tsconfig.json diff --git a/fixtures/typescript-css-modules/.prettierignore b/fixtures/typescript-css-modules/.prettierignore index 7a576a584..13e3df1d6 100644 --- a/fixtures/typescript-css-modules/.prettierignore +++ b/fixtures/typescript-css-modules/.prettierignore @@ -3,9 +3,7 @@ .eslintcache .eslintrc .prettierrc -.storybook/main.js coverage/ -dist-storybook/ dist/ report/ # end managed by sku diff --git a/packages/sku/@storybook/react/index.ts b/packages/sku/@storybook/react/index.ts deleted file mode 100644 index f3aebb5f1..000000000 --- a/packages/sku/@storybook/react/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -// This is provided so consumers can import `sku/@storybook/react`, -// since they don't depend on `@storybook/react` directly. - -export * from '@storybook/react'; diff --git a/packages/sku/config/jest/index.js b/packages/sku/config/jest/index.js new file mode 100644 index 000000000..4eae96568 --- /dev/null +++ b/packages/sku/config/jest/index.js @@ -0,0 +1,7 @@ +// @ts-check + +const preset = './node_modules/sku/config/jest/jest-preset.js'; + +module.exports = { + preset, +}; diff --git a/packages/sku/config/storybook/index.d.ts b/packages/sku/config/storybook/index.d.ts new file mode 100644 index 000000000..3438fc126 --- /dev/null +++ b/packages/sku/config/storybook/index.d.ts @@ -0,0 +1,4 @@ +import type { StorybookConfig } from '@storybook/react-webpack5'; + +export const webpackFinal: NonNullable; +export const babel: NonNullable; diff --git a/packages/sku/config/storybook/index.js b/packages/sku/config/storybook/index.js index 7af4a3db1..38a68b746 100644 --- a/packages/sku/config/storybook/index.js +++ b/packages/sku/config/storybook/index.js @@ -3,73 +3,29 @@ * https://github.com/storybookjs/storybook/pull/23018 */ -const fs = require('node:fs'); -const path = require('node:path'); -const { - paths, - storybookAddons, - storybookStoryStore, -} = require('../../context'); - const makeStorybookWebpackConfig = require('./storybookWebpackConfig'); +const createBabelConfig = require('../babel/babelConfig'); -/** @type {import("@storybook/react-webpack5").StorybookConfig} */ -module.exports = { - stories: paths.src - .filter((srcPath) => fs.statSync(srcPath).isDirectory()) - .map((srcPath) => path.join(srcPath, '**/*.stories.@(js|ts|tsx)')), - addons: storybookAddons, - framework: { - // Storybook looks for a `/preset` entrypoint on the framework package, - // so we give it the dirname of the resolved path to package.json - // https://github.com/storybookjs/storybook/blob/aecfa1791f982bef6a06b51d20df3e31dd82b5b4/code/lib/core-common/src/utils/validate-config.ts#L34 - name: path.dirname( - require.resolve('@storybook/react-webpack5/package.json'), - ), - options: {}, - }, - core: { - builder: { - name: require.resolve('@storybook/builder-webpack5'), - options: { - fsCache: true, - }, - }, - disableTelemetry: true, - }, - features: { - storyStoreV7: storybookStoryStore, - }, - // sku storybook -> configType === 'DEVELOPMENT' - // sku build-storybook -> configType === 'PRODUCTION' - webpackFinal: (config, { configType }) => - makeStorybookWebpackConfig(config, { - isDevServer: configType === 'DEVELOPMENT', - }), - babel: (config) => ({ - ...config, - presets: [ - // Includes `@babel/preset-react` - ...config.presets, +/** @typedef {import("@storybook/react-webpack5").StorybookConfig} StorybookConfig */ + +/** @type {NonNullable} */ +const webpackFinal = (config, { configType }) => + makeStorybookWebpackConfig(config, { + // sku storybook -> configType === 'DEVELOPMENT' + // sku build-storybook -> configType === 'PRODUCTION' + isDevServer: configType === 'DEVELOPMENT', + }); - // Storybook as of 7.0 no longer handles babel stuff for you (other than react) - // We need to configure TypeScript support ourselves, if we want it - // https://github.com/storybookjs/storybook/issues/22357#issuecomment-1532548058 - [ - require.resolve('@babel/preset-env'), - { - targets: { - chrome: 100, - }, - }, - ], - [ - require.resolve('@babel/preset-typescript'), - { - allExtensions: true, - isTSX: true, - }, - ], - ], - }), +/** @type {NonNullable} */ +const babel = () => { + return createBabelConfig({ + target: 'browser', + lang: 'ts', + browserslist: ['chrome > 122'], + }); +}; + +module.exports = { + webpackFinal, + babel, }; diff --git a/packages/sku/context/configSchema.js b/packages/sku/context/configSchema.js index 1c93fdf8c..30113d051 100644 --- a/packages/sku/context/configSchema.js +++ b/packages/sku/context/configSchema.js @@ -107,19 +107,6 @@ module.exports = validator.compile({ serverPort: { type: 'number', }, - storybookPort: { - type: 'number', - }, - storybookTarget: { - type: 'string', - }, - storybookAddons: { - type: 'array', - items: 'string', - }, - storybookStoryStore: { - type: 'boolean', - }, target: { type: 'string', }, diff --git a/packages/sku/context/defaultSkuConfig.js b/packages/sku/context/defaultSkuConfig.js index 200044f0c..d405d8756 100644 --- a/packages/sku/context/defaultSkuConfig.js +++ b/packages/sku/context/defaultSkuConfig.js @@ -23,10 +23,6 @@ module.exports = { serverPort: 8181, target: 'dist', setupTests: null, - storybookPort: 8081, - storybookTarget: 'dist-storybook', - storybookAddons: [], - storybookStoryStore: true, initialPath: null, public: 'public', publicPath: '/', diff --git a/packages/sku/context/index.js b/packages/sku/context/index.js index f3842fd81..7f1c01628 100644 --- a/packages/sku/context/index.js +++ b/packages/sku/context/index.js @@ -175,7 +175,6 @@ const paths = { relativeTarget: skuConfig.target, publicPath: isStartScript ? '/' : publicPath, setupTests: getSetupTests(skuConfig.setupTests), - storybookTarget: getPathFromCwd(skuConfig.storybookTarget), }; module.exports = { @@ -190,10 +189,6 @@ module.exports = { libraryName: skuConfig.libraryName, libraryFile: skuConfig.libraryFile, isLibrary: Boolean(skuConfig.libraryEntry), - storybookPort: skuConfig.storybookPort, - storybookTarget: skuConfig.storybookTarget, - storybookAddons: skuConfig.storybookAddons, - storybookStoryStore: skuConfig.storybookStoryStore, polyfills: skuConfig.polyfills, initialPath, webpackDecorator: skuConfig.dangerouslySetWebpackConfig, diff --git a/packages/sku/lib/configure.js b/packages/sku/lib/configure.js index af882c061..802b1d79c 100755 --- a/packages/sku/lib/configure.js +++ b/packages/sku/lib/configure.js @@ -14,7 +14,6 @@ const prettierConfig = require('../config/prettier/prettierConfig'); const eslintConfig = require('../config/eslint/eslintConfig'); const createTSConfig = require('../config/typescript/tsconfig.js'); const getCertificate = require('./certificate'); -const { storybookMainConfigPath } = require('./storybook'); const managedConfigBanner = require('./managedConfigBanner.js'); const coverageFolder = 'coverage'; @@ -36,17 +35,12 @@ module.exports = async () => { const webpackTargetDirectory = addSep( paths.target.replace(addSep(cwd()), ''), ); - const storybookTargetDirectory = addSep( - paths.storybookTarget.replace(addSep(cwd()), ''), - ); const gitIgnorePatterns = [ // Ignore webpack bundle report output addSep(bundleReportFolder), addSep(coverageFolder), webpackTargetDirectory, - storybookTargetDirectory, - storybookMainConfigPath, ]; // Generate ESLint configuration diff --git a/packages/sku/lib/storybook.js b/packages/sku/lib/storybook.js deleted file mode 100644 index 78c892373..000000000 --- a/packages/sku/lib/storybook.js +++ /dev/null @@ -1,36 +0,0 @@ -// @ts-check -const path = require('node:path'); -const fs = require('node:fs/promises'); -const debug = require('debug'); - -const log = debug('sku:storybook'); - -const managedConfigBanner = require('./managedConfigBanner'); - -// Since this config will be in the user's project, we can use ESM -// Spread `storybookConfig` to prevent warning -// https://github.com/storybookjs/storybook/issues/23675 -const mainConfigFileContents = `${managedConfigBanner} -import storybookConfig from 'sku/config/storybook'; - -export default { ...storybookConfig }; -`; - -const storybookMainConfigPath = '.storybook/main.js'; -const storybookConfigDirectory = path.dirname(storybookMainConfigPath); - -const setUpStorybookConfigDirectory = async () => { - await fs.mkdir(storybookConfigDirectory, { recursive: true }); - log( - `Created '${path.resolve( - storybookConfigDirectory, - )}' directory if it didn't exist`, - ); - - await fs.writeFile(storybookMainConfigPath, mainConfigFileContents); - log( - `Wrote storybook config file to '${path.resolve(storybookMainConfigPath)}'`, - ); -}; - -module.exports = { setUpStorybookConfigDirectory, storybookMainConfigPath }; diff --git a/packages/sku/package.json b/packages/sku/package.json index 3c262eae5..3de6c43c7 100644 --- a/packages/sku/package.json +++ b/packages/sku/package.json @@ -25,7 +25,13 @@ }, "homepage": "https://github.com/seek-oss/sku#readme", "peerDependencies": { - "react": "^16.14.0 || ^17.0.0 || ^18.0.0" + "react": "^16.14.0 || ^17.0.0 || ^18.0.0", + "@storybook/react-webpack5": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@storybook/react-webpack5": { + "optional": true + } }, "dependencies": { "@antfu/ni": "^0.21.8", @@ -43,10 +49,6 @@ "@loadable/webpack-plugin": "^5.14.0", "@manypkg/find-root": "^2.2.0", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.12", - "@storybook/builder-webpack5": "^7.0.17", - "@storybook/cli": "^7.0.17", - "@storybook/react": "^7.0.17", - "@storybook/react-webpack5": "^7.0.17", "@types/jest": "^29.0.0", "@types/loadable__component": "^5.13.1", "@vanilla-extract/jest-transform": "^1.1.0", diff --git a/packages/sku/scripts/build-storybook.js b/packages/sku/scripts/build-storybook.js deleted file mode 100644 index ed10e250d..000000000 --- a/packages/sku/scripts/build-storybook.js +++ /dev/null @@ -1,29 +0,0 @@ -// First, ensure the build is running in production mode -process.env.NODE_ENV = 'production'; - -const { rm } = require('node:fs/promises'); -const { argv, config } = require('../config/args'); -const gracefulSpawn = require('../lib/gracefulSpawn'); -const { storybookTarget } = require('../context'); -const buildStorybookPath = require.resolve('@storybook/cli/bin/index'); -const { runVocabCompile } = require('../lib/runVocab'); -const { setUpStorybookConfigDirectory } = require('../lib/storybook'); - -(async () => { - await runVocabCompile(); - await rm(storybookTarget, { recursive: true, force: true }); - await setUpStorybookConfigDirectory(); - - argv.push('build'); - argv.push('--output-dir', storybookTarget); - argv.push('--quiet'); - - const storybookProcess = gracefulSpawn(buildStorybookPath, argv, { - stdio: 'inherit', - env: { ...process.env, SKU_CONFIG: config }, - }); - - storybookProcess.on('exit', (exitCode) => { - process.exit(exitCode); - }); -})(); diff --git a/packages/sku/scripts/storybook.js b/packages/sku/scripts/storybook.js deleted file mode 100644 index bedaaab5c..000000000 --- a/packages/sku/scripts/storybook.js +++ /dev/null @@ -1,24 +0,0 @@ -const { argv, config } = require('../config/args'); -const gracefulSpawn = require('../lib/gracefulSpawn'); -const { storybookPort } = require('../context'); -const startStorybookPath = require.resolve('@storybook/cli/bin/index'); -const { watchVocabCompile } = require('../lib/runVocab'); -const { setUpStorybookConfigDirectory } = require('../lib/storybook'); - -// Unshift args to allow pushing --ci as an arg during storybook-config tests -argv.unshift('--port', storybookPort); -argv.unshift('dev'); - -(async () => { - await watchVocabCompile(); - await setUpStorybookConfigDirectory(); - - const storybookProcess = gracefulSpawn(startStorybookPath, argv, { - stdio: 'inherit', - env: { ...process.env, SKU_CONFIG: config }, - }); - - storybookProcess.on('exit', (exitCode) => { - process.exit(exitCode); - }); -})(); diff --git a/packages/sku/sku-types.d.ts b/packages/sku/sku-types.d.ts index f9611aaf9..baa3c9e2f 100644 --- a/packages/sku/sku-types.d.ts +++ b/packages/sku/sku-types.d.ts @@ -386,40 +386,6 @@ export interface SkuConfig { */ srcPaths?: string[]; - /** - * An array of storybook addons to use. - * - * @default [] - * @link https://seek-oss.github.io/sku/#/./docs/configuration?id=storybookaddons - */ - storybookAddons?: string[]; - - /** - * The port to host storybook on when running `sku storybook`. - * - * @default 8081 - * @link https://seek-oss.github.io/sku/#/./docs/configuration?id=storybookport - */ - storybookPort?: number; - - /** - * Allows disabling Storybook's `storyStoreV7` feature flag. This will result in all stories being - * loaded upfront instead of on demand. Disabling this feature will allow stories that use the - * deprecated `storiesOf` API to work, however it's highly recommended to migrate off `storiesOf` - * to the Component Story Format (CSF) instead. - * @default true - * @link https://seek-oss.github.io/sku/#/./docs/configuration?id=storybookStoryStore - */ - storybookStoryStore?: boolean; - - /** - * The directory `sku build-storybook` will output files to. - * - * @default 'dist-storybook' - * @link https://seek-oss.github.io/sku/#/./docs/configuration?id=storybooktarget - */ - storybookTarget?: string; - /** * The `browserslist` query describing the apps browser support policy. * diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4040723ef..abba5ea51 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -306,16 +306,25 @@ importers: devDependencies: babel-loader: specifier: ^9.1.2 - version: 9.1.3(@babel/core@7.24.6)(webpack@5.91.0(@swc/core@1.5.24)) + version: 9.1.3(@babel/core@7.24.6)(webpack@5.91.0(@swc/core@1.5.24)(webpack-cli@5.1.4)) html-webpack-plugin: specifier: ^5.3.2 - version: 5.6.0(webpack@5.91.0(@swc/core@1.5.24)) + version: 5.6.0(webpack@5.91.0(@swc/core@1.5.24)(webpack-cli@5.1.4)) mini-css-extract-plugin: specifier: ^2.6.1 - version: 2.9.0(webpack@5.91.0(@swc/core@1.5.24)) + version: 2.9.0(webpack@5.91.0(@swc/core@1.5.24)(webpack-cli@5.1.4)) sku: specifier: workspace:* version: link:../../packages/sku + webpack: + specifier: ^5.52.0 + version: 5.91.0(@swc/core@1.5.24)(webpack-cli@5.1.4) + webpack-cli: + specifier: ^5.0.0 + version: 5.1.4(webpack-dev-server@5.0.4)(webpack@5.91.0) + webpack-dev-server: + specifier: ^5.0.2 + version: 5.0.4(debug@4.3.5)(webpack-cli@5.1.4)(webpack@5.91.0) fixtures/sku-with-https: dependencies: @@ -386,9 +395,15 @@ importers: specifier: ^18.2.0 version: 18.3.1(react@18.3.1) devDependencies: - '@storybook/addon-controls': - specifier: ^7.0.0 - version: 7.6.19(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/addon-webpack5-compiler-babel': + specifier: ^3.0.3 + version: 3.0.3(webpack@5.91.0(@swc/core@1.5.24)(esbuild@0.19.12)) + '@storybook/react': + specifier: ^8.1.5 + version: 8.1.5(prettier@3.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.3.3) + '@storybook/react-webpack5': + specifier: ^8.1.5 + version: 8.1.5(@swc/core@1.5.24)(esbuild@0.19.12)(prettier@3.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.3.3) '@types/react': specifier: ^18.2.3 version: 18.3.3 @@ -401,6 +416,9 @@ importers: sku: specifier: workspace:* version: link:../../packages/sku + storybook: + specifier: ^8.1.5 + version: 8.1.5(@babel/preset-env@7.24.6(@babel/core@7.24.6))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) fixtures/styling: dependencies: @@ -417,6 +435,15 @@ importers: '@sku-private/test-utils': specifier: workspace:* version: link:../../test-utils + '@storybook/addon-webpack5-compiler-babel': + specifier: ^3.0.3 + version: 3.0.3(webpack@5.91.0(@swc/core@1.5.24)(esbuild@0.19.12)) + '@storybook/react': + specifier: ^8.1.5 + version: 8.1.5(prettier@3.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.3.3) + '@storybook/react-webpack5': + specifier: ^8.1.5 + version: 8.1.5(@swc/core@1.5.24)(esbuild@0.19.12)(prettier@3.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.3.3) '@types/react': specifier: ^18.2.3 version: 18.3.3 @@ -432,6 +459,9 @@ importers: sku: specifier: workspace:* version: link:../../packages/sku + storybook: + specifier: ^8.1.5 + version: 8.1.5(@babel/preset-env@7.24.6(@babel/core@7.24.6))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) fixtures/translations: dependencies: @@ -542,18 +572,9 @@ importers: '@pmmmwh/react-refresh-webpack-plugin': specifier: ^0.5.12 version: 0.5.14(react-refresh@0.14.2)(type-fest@2.19.0)(webpack-dev-server@5.0.4(debug@4.3.5)(webpack@5.91.0(@swc/core@1.5.24)(esbuild@0.19.12)))(webpack-hot-middleware@2.26.1)(webpack@5.91.0(@swc/core@1.5.24)(esbuild@0.19.12)) - '@storybook/builder-webpack5': - specifier: ^7.0.17 - version: 7.6.19(esbuild@0.19.12)(typescript@5.3.3) - '@storybook/cli': - specifier: ^7.0.17 - version: 7.6.19 - '@storybook/react': - specifier: ^7.0.17 - version: 7.6.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.3.3) '@storybook/react-webpack5': - specifier: ^7.0.17 - version: 7.6.19(@babel/core@7.24.6)(@swc/core@1.5.24)(esbuild@0.19.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(type-fest@2.19.0)(typescript@5.3.3)(webpack-dev-server@5.0.4(debug@4.3.5)(webpack@5.91.0(@swc/core@1.5.24)(esbuild@0.19.12)))(webpack-hot-middleware@2.26.1) + specifier: ^7.0.0 || ^8.0.0 + version: 8.1.5(@swc/core@1.5.24)(esbuild@0.19.12)(prettier@3.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.3.3) '@types/jest': specifier: ^29.0.0 version: 29.5.12 @@ -840,6 +861,9 @@ importers: test-utils: dependencies: + '@types/wait-on': + specifier: 5.3.4 + version: 5.3.4 css: specifier: ^3.0.0 version: 3.0.0 @@ -936,6 +960,12 @@ importers: '@sku-private/test-utils': specifier: workspace:* version: link:../test-utils + '@types/cross-spawn': + specifier: ^6.0.3 + version: 6.0.6 + cross-spawn: + specifier: ^7.0.3 + version: 7.0.3 dedent: specifier: ^1.5.1 version: 1.5.3(babel-plugin-macros@3.1.0) @@ -2190,21 +2220,6 @@ packages: peerDependencies: eslint: '>= 7.0.0' - '@floating-ui/core@1.6.2': - resolution: {integrity: sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==} - - '@floating-ui/dom@1.6.5': - resolution: {integrity: sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==} - - '@floating-ui/react-dom@2.1.0': - resolution: {integrity: sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@floating-ui/utils@0.2.2': - resolution: {integrity: sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==} - '@formatjs/ecma402-abstract@2.0.0': resolution: {integrity: sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==} @@ -2358,9 +2373,6 @@ packages: peerDependencies: tslib: '2' - '@juggle/resize-observer@3.4.0': - resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} - '@leichtgewicht/ip-codec@2.0.5': resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} @@ -2436,6 +2448,7 @@ packages: '@pmmmwh/react-refresh-webpack-plugin@0.5.14': resolution: {integrity: sha512-kmivGoNIyf4MolK7HoxvmIoR/J1ccM8iEShIlYzG27CdBmWsJEWNTwzocnlCkiF4iOSoWhf1QoQt71VGwq9r6Q==} engines: {node: '>= 10.13'} + deprecated: this version contains a critical bug which might crash the error overlay, please upgrade to v0.5.15 peerDependencies: '@types/webpack': 4.x || 5.x react-refresh: '>=0.10.0 <1.0.0' @@ -2470,314 +2483,6 @@ packages: engines: {node: '>=18'} hasBin: true - '@radix-ui/number@1.0.1': - resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==} - - '@radix-ui/primitive@1.0.1': - resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} - - '@radix-ui/react-arrow@1.0.3': - resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-collection@1.0.3': - resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-compose-refs@1.0.1': - resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-context@1.0.1': - resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-direction@1.0.1': - resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-dismissable-layer@1.0.4': - resolution: {integrity: sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-focus-guards@1.0.1': - resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-focus-scope@1.0.3': - resolution: {integrity: sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-id@1.0.1': - resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-popper@1.1.2': - resolution: {integrity: sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-portal@1.0.3': - resolution: {integrity: sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-primitive@1.0.3': - resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-roving-focus@1.0.4': - resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-select@1.2.2': - resolution: {integrity: sha512-zI7McXr8fNaSrUY9mZe4x/HC0jTLY9fWNhO1oLWYMQGDXuV4UCivIGTxwioSzO0ZCYX9iSLyWmAh/1TOmX3Cnw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-separator@1.0.3': - resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-slot@1.0.2': - resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-toggle-group@1.0.4': - resolution: {integrity: sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-toggle@1.0.3': - resolution: {integrity: sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-toolbar@1.0.4': - resolution: {integrity: sha512-tBgmM/O7a07xbaEkYJWYTXkIdU/1pW4/KZORR43toC/4XWyBCURK0ei9kMUdp+gTPPKBgYLxXmRSH1EVcIDp8Q==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-use-callback-ref@1.0.1': - resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-controllable-state@1.0.1': - resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-escape-keydown@1.0.3': - resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-layout-effect@1.0.1': - resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-previous@1.0.1': - resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-rect@1.0.1': - resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-size@1.0.1': - resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-visually-hidden@1.0.3': - resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/rect@1.0.1': - resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} - '@remix-run/router@1.16.1': resolution: {integrity: sha512-es2g3dq6Nb07iFxGk5GuHN20RwBZOsuDQN7izWIisUcv9r+d2C5jQxqmgkdebXgReWfiyUabcki6Fg77mSNrig==} engines: {node: '>=14.0.0'} @@ -2878,24 +2583,26 @@ packages: resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} engines: {node: '>=6'} + '@sindresorhus/merge-streams@2.3.0': + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} + engines: {node: '>=18'} + '@sinonjs/commons@3.0.1': resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} '@sinonjs/fake-timers@10.3.0': resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - '@storybook/addon-controls@7.6.19': - resolution: {integrity: sha512-cl6PCNEwihDjuWIUsKTyDNKk+/IE4J3oMbSY5AZV/9Z0jJbpMV2shVm5DMZm5LhCCVcu5obWcxCIa4FMIMJAMQ==} - - '@storybook/blocks@7.6.19': - resolution: {integrity: sha512-/c/bVQRmyRPoviJhPrFdLfubRcrnZWTwkjxsCvrOTJ/UDOyEl0t/H8yY1mGq7KWWTdbIznnZWhAIofHnH4/Esw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@storybook/addon-webpack5-compiler-babel@3.0.3': + resolution: {integrity: sha512-rVQTTw+oxJltbVKaejIWSHwVKOBJs3au21f/pYXhV0aiNgNhxEa3vr79t/j0j8ox8uJtzM8XYOb7FlkvGfHlwQ==} + engines: {node: '>=18'} '@storybook/builder-manager@7.6.19': resolution: {integrity: sha512-Dt5OLh97xeWh4h2mk9uG0SbCxBKHPhIiHLHAKEIDzIZBdwUhuyncVNDPHW2NlXM+S7U0/iKs2tw05waqh2lHvg==} + '@storybook/builder-manager@8.1.5': + resolution: {integrity: sha512-wDiHLV+UPaUN+765WwXkocVRB2QnJ61CjLHbpWaLiJvryFJt+JQ6nAvgSalCRnZxI046ztbS9T6okhpFI011IA==} + '@storybook/builder-webpack5@7.6.19': resolution: {integrity: sha512-PeP66orYG0tWoWeOGNcCDKtk/kpDBFfosViCkd0Pxb6c2MtvjOuHSGWGB/9AI3hjodsoe5p9xo/SqGf7lDzpoA==} peerDependencies: @@ -2904,24 +2611,39 @@ packages: typescript: optional: true + '@storybook/builder-webpack5@8.1.5': + resolution: {integrity: sha512-gGVlApa0JVu0q7Ws37Kubh9e8wDKoJh23DXGIeK3EHVloL2XU9+wgP2NcUoiySvTIKPtDB7Zljg1/BXgqeOJ4w==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@storybook/channels@7.6.19': resolution: {integrity: sha512-2JGh+i95GwjtjqWqhtEh15jM5ifwbRGmXeFqkY7dpdHH50EEWafYHr2mg3opK3heVDwg0rJ/VBptkmshloXuvA==} + '@storybook/channels@8.1.5': + resolution: {integrity: sha512-R+puP4tWYzQUbpIp8sX6U5oI+ZUevVOaFxXGaAN3PRXjIRC38oKTVWzj/G6GdziVFzN6rDn+JsYPmiRMYo1sYg==} + '@storybook/cli@7.6.19': resolution: {integrity: sha512-7OVy7nPgkLfgivv6/dmvoyU6pKl9EzWFk+g9izyQHiM/jS8jOiEyn6akG8Ebj6k5pWslo5lgiXUSW+cEEZUnqQ==} hasBin: true + '@storybook/cli@8.1.5': + resolution: {integrity: sha512-VEYluZEMleNEnD5wTD90KTh03pwjvQwEEmzHAJQJdLbWTAcgBxZ3Gb45nbUPauSqBL+HdJx0QXF8Ielk+iBttw==} + hasBin: true + '@storybook/client-logger@7.6.19': resolution: {integrity: sha512-oGzOxbmLmciSIfd5gsxDzPmX8DttWhoYdPKxjMuCuWLTO2TWpkCWp1FTUMWO72mm/6V/FswT/aqpJJBBvdZ3RQ==} + '@storybook/client-logger@8.1.5': + resolution: {integrity: sha512-zd+aENXnOHsxBATppELmhw/UywLzCxQjz/8i/xkUjeTRB4Ggp0hJlOUdJUEdIJz631ydyytfvM70ktBj9gMl1w==} + '@storybook/codemod@7.6.19': resolution: {integrity: sha512-bmHE0iEEgWZ65dXCmasd+GreChjPiWkXu2FEa0cJmNz/PqY12GsXGls4ke1TkNTj4gdSZnbtJxbclPZZnib2tQ==} - '@storybook/components@7.6.19': - resolution: {integrity: sha512-8Zw/RQ4crzKkUR7ojxvRIj8vktKiBBO8Nq93qv4JfDqDWrcR7cro0hOlZgmZmrzbFunBBt6WlsNNO6nVP7R4Xw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@storybook/codemod@8.1.5': + resolution: {integrity: sha512-eGoYozT2XPfsIFrzm4cJo9tRTX0yuK1y4uTYmKvnomezHu5kiY8qo2fUzQa5DHxiAzRDTpGlQTzb0PsxHOxYoA==} '@storybook/core-client@7.6.19': resolution: {integrity: sha512-F0V9nzcEnj6DIpnw2ilrxsV4d9ibyyQS+Wi2uQtXy+wCQQm9PeBVqrOywjXAY2F9pcoftXOaepfhp8jrxX4MXw==} @@ -2929,39 +2651,78 @@ packages: '@storybook/core-common@7.6.19': resolution: {integrity: sha512-njwpGzFJrfbJr/AFxGP8KMrfPfxN85KOfSlxYnQwRm5Z0H1D/lT33LhEBf5m37gaGawHeG7KryxO6RvaioMt2Q==} + '@storybook/core-common@8.1.5': + resolution: {integrity: sha512-1QDOT6KPZ9KV7Gs1yyqzvSwGBmNSUB33gckUldSBF4aqP+tZ7W5JIQ6/YTtp3V02sEokZGdL9Ud4LczQxTgy3A==} + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true + '@storybook/core-events@7.6.19': resolution: {integrity: sha512-K/W6Uvum0ocZSgjbi8hiotpe+wDEHDZlvN+KlPqdh9ae9xDK8aBNBq9IelCoqM+uKO1Zj+dDfSQds7CD781DJg==} + '@storybook/core-events@8.1.5': + resolution: {integrity: sha512-fgwbrHoLtSX6kfmamTGJqD+KfuEgun8cc4mWKZK094ByaqbSjhnOyeYO1sfVk8qst7QTFlOfhLAUe4cz1z149A==} + '@storybook/core-server@7.6.19': resolution: {integrity: sha512-7mKL73Wv5R2bEl0kJ6QJ9bOu5YY53Idu24QgvTnUdNsQazp2yUONBNwHIrNDnNEXm8SfCi4Mc9o0mmNRMIoiRA==} + '@storybook/core-server@8.1.5': + resolution: {integrity: sha512-y16W2sg5KIHG6qgbd+a0nBUYHAgiUpPDFF7cdcIpbeOIoqFn+6ECp93MVefukumiSj3sQiJFU/tSm2A8apGltw==} + '@storybook/core-webpack@7.6.19': resolution: {integrity: sha512-Ezvn54hFN99qwP8kDOQa7/IEk2V3NyJys2eg0Afqz1cy9Uc3SkL7U7hQorKOHr5+66dsryNDfJdPzM1YMKFMBQ==} + '@storybook/core-webpack@8.1.5': + resolution: {integrity: sha512-yXixldqg6gGT0OGWuWd52YZycgTrqiPlVHsi91SPtQJSaj3YRS2cM/Giq+gPTE0Zb9+Izq8QEnkyr8B4MfvGbQ==} + '@storybook/csf-tools@7.6.19': resolution: {integrity: sha512-8Vzia3cHhDdGHuS3XKXJReCRxmfRq3vmTm/Te9yKZnPSAsC58CCKcMh8FNEFJ44vxYF9itKTkRutjGs+DprKLQ==} + '@storybook/csf-tools@8.1.5': + resolution: {integrity: sha512-jOfUo0arlaG4LlsdWaRfZCS0I1FhUnkf06ThzRBrrp8mFAPtOpf9iW16J3fYMS5vAdE/v+Z1RxuTRich4/JGdQ==} + '@storybook/csf@0.1.7': resolution: {integrity: sha512-53JeLZBibjQxi0Ep+/AJTfxlofJlxy1jXcSKENlnKxHjWEYyHQCumMP5yTFjf7vhNnMjEpV3zx6t23ssFiGRyw==} '@storybook/docs-mdx@0.1.0': resolution: {integrity: sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg==} + '@storybook/docs-mdx@3.1.0-next.0': + resolution: {integrity: sha512-t4syFIeSyufieNovZbLruPt2DmRKpbwL4fERCZ1MifWDRIORCKLc4NCEHy+IqvIqd71/SJV2k4B51nF7vlJfmQ==} + '@storybook/docs-tools@7.6.19': resolution: {integrity: sha512-JuwV6wtm7Hb7Kb5ValChfxy4J7XngfrSQNpvwsDCSBNVcQUv2y843hvclpa26Ptfr/c7zpUX8r9FGSaMDy+2aQ==} + '@storybook/docs-tools@8.1.5': + resolution: {integrity: sha512-zlHv8fi1Bw8RbjkGGBJoO/RbM41bwxU1kV76TPQUyqQmzqPRsHi3zt+8bdddQLNrC6rhTF+Cj3yEdPfTZrB0aA==} + '@storybook/global@5.0.0': resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - '@storybook/manager-api@7.6.19': - resolution: {integrity: sha512-dVCx1Q+HZEA4U08XqYljiG88BeS3I3ahnPAQLZAeWQXQRkoc9G2jMgLNPKYPIqEtq7Xrn6SRlFMIofhwWrwZpg==} + '@storybook/icons@1.2.9': + resolution: {integrity: sha512-cOmylsz25SYXaJL/gvTk/dl3pyk7yBFRfeXTsHvTA3dfhoU/LWSq0NKL9nM7WBasJyn6XPSGnLS4RtKXLw5EUg==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@storybook/manager-api@8.1.5': + resolution: {integrity: sha512-iVP7FOKDf9L7zWCb8C2XeZjWSILS3hHeNwILvd9YSX9dg9du41kJYahsAHxDCR/jp/gv0ZM/V0vuHzi+naVPkQ==} '@storybook/manager@7.6.19': resolution: {integrity: sha512-fZWQcf59x4P0iiBhrL74PZrqKJAPuk9sWjP8BIkGbf8wTZtUunbY5Sv4225fOL4NLJbuX9/RYLUPoxQ3nucGHA==} + '@storybook/manager@8.1.5': + resolution: {integrity: sha512-qMYwD1cXW0hJ3pMmdMlbsqktVBlsjsqwMH5PBzAN4FoWiCQ/yHeAnDXRUgFFaLcORS72h9H/cQuJ+p//RdeURg==} + '@storybook/node-logger@7.6.19': resolution: {integrity: sha512-2g29QC44Zl1jKY37DmQ0/dO7+VSKnGgPI/x0mwVwQffypSapxH3rwLLT5Q5XLHeFyD+fhRu5w9Cj4vTGynJgpA==} + '@storybook/node-logger@8.1.5': + resolution: {integrity: sha512-9qwPX/uGhdHaVjeVUSwJUSbKX7g9goyhGYdKVuCEyl7vHR9Kp7Zkag2sEHmVdd9ixTea3jk2GZQEbnBDNQNGnw==} + '@storybook/preset-react-webpack@7.6.19': resolution: {integrity: sha512-WvfDE4upH7jmisx5XOn4E07p9Fm8YJn4Aywc9vYM1jqQ8A1lEH8VSC1KR6dPfdmGr94jRscQkD6fjs9sUNTdrw==} engines: {node: '>=16.0.0'} @@ -2976,12 +2737,29 @@ packages: typescript: optional: true + '@storybook/preset-react-webpack@8.1.5': + resolution: {integrity: sha512-OiizVxDT5b7dORO8IYtNjQnrke+vgRgRPw/JSfIzWoYakDCFgui86BZ4Zx/1eecztXtQOem4bOfc7GLep5VkpA==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@storybook/preview-api@7.6.19': resolution: {integrity: sha512-04hdMSQucroJT4dBjQzRd7ZwH2hij8yx2nm5qd4HYGkd1ORkvlH6GOLph4XewNJl5Um3xfzFQzBhvkqvG0WaCQ==} + '@storybook/preview-api@8.1.5': + resolution: {integrity: sha512-pv0aT5WbnSYR7KWQgy3jLfuBM0ocYG6GTcmZLREW5554oiBPHhzNFv+ZrBI47RzbrbFxq1h5dj4v8lkEcKIrbA==} + '@storybook/preview@7.6.19': resolution: {integrity: sha512-VqRPua2koOQTOteB+VvuKNXFYQ7IDEopaPpj9Nx+3kom+bqp0hWdAysWcm6CtKN2GGzBQm+5PvGibMNdawsaVg==} + '@storybook/preview@8.1.5': + resolution: {integrity: sha512-8qNzK/5fCjfWcup5w3UxJXMAUp4+iOdh+vO+vDIJWSbPXRPtuarSM/tv/12N7hz/zvCpGLGBql0BE+oyC0bmhw==} + '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0': resolution: {integrity: sha512-KUqXC3oa9JuQ0kZJLBhVdS4lOneKTOopnNBK4tUAgoxWQ3u/IjzdueZjFr7gyBrXMoU6duutk3RQR9u8ZpYJ4Q==} peerDependencies: @@ -2994,6 +2772,12 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@storybook/react-dom-shim@8.1.5': + resolution: {integrity: sha512-eyHSngIBHeFT4vVkQTN2+c/mSKCPrb8uPpWbrc3ihGBKvL/656erWNmiUVnY3zuQvCBPz2q2Vy3v2Pr+nvfOTw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + '@storybook/react-webpack5@7.6.19': resolution: {integrity: sha512-QPnDv5eimvgc0zBIvc1H49iBUfZhs0hhrs9eO0+rAC6sIo5BiDcX9nQJZEuamRPVuLjqoRByj6vUpqGI25zASg==} engines: {node: '>=16.0.0'} @@ -3008,6 +2792,17 @@ packages: typescript: optional: true + '@storybook/react-webpack5@8.1.5': + resolution: {integrity: sha512-XWHfSco08KmwjBbxFxi1WuG5bMipPkdJEUGyJqqqcVAP6BPFeYsO0PPai9CRJHlFSdQ3MGyUdY/Wy42JmRUocg==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + typescript: '>= 4.2.x' + peerDependenciesMeta: + typescript: + optional: true + '@storybook/react@7.6.19': resolution: {integrity: sha512-uKShAAp1/pRki1YnRjBveH/jAD3f8V0W2WP1LxTQqnKVFkl01mTbDZ/9ZIK6rVTSILUlmsk3fwsNyRbOKVgBGQ==} engines: {node: '>=16.0.0'} @@ -3019,21 +2814,43 @@ packages: typescript: optional: true - '@storybook/router@7.6.19': - resolution: {integrity: sha512-q2/AvY8rG0znFEfbg50OIhkS5yQ6OmyzdCdztoEsDDdsbq87YPmsDj7k8Op1EkTa2T5CB8XhBOCQDtcj7gUUtg==} + '@storybook/react@8.1.5': + resolution: {integrity: sha512-Yr0Z1FQPKFnc3jI7UbNYyi5K6zoFRZlac7xzBMT4q+bUtl0g3fmYTDFisCwK8I30qE6r01EjzNvaTU75PqXkMw==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + typescript: '>= 4.2.x' + peerDependenciesMeta: + typescript: + optional: true + + '@storybook/router@8.1.5': + resolution: {integrity: sha512-DCwvAswlbLhQu6REPV04XNRhtPvsrRqHjMHKzjlfs+qYJWY7Egkofy05qlegqjkMDve33czfnRGBm0C16IydkA==} '@storybook/telemetry@7.6.19': resolution: {integrity: sha512-rA5xum4I36M57iiD3uzmW0MOdpl0vEpHWBSAa5hK0a0ALPeY9TgAsQlI/0dSyNYJ/K7aczEEN6d4qm1NC4u10A==} - '@storybook/theming@7.6.19': - resolution: {integrity: sha512-sAho13MmtA80ctOaLn8lpkQBsPyiqSdLcOPH5BWFhatQzzBQCpTAKQk+q/xGju8bNiPZ+yQBaBzbN8SfX8ceCg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@storybook/telemetry@8.1.5': + resolution: {integrity: sha512-QbB1Ox7oBaCvIF2TacFjPLi1XYeHxSPeZUuFXeE+tSMdvvWZzYLnXfj/oISmV6Q+X5VZfyJVMrZ2LfeW9CuFNg==} + + '@storybook/theming@8.1.5': + resolution: {integrity: sha512-E4z1t49fMbVvd/t2MSL0Ecp5zbqsU/QfWBX/eorJ+m+Xc9skkwwG5qf/FnP9x4RZ9KaX8U8+862t0eafVvf4Tw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true '@storybook/types@7.6.19': resolution: {integrity: sha512-DeGYrRPRMGTVfT7o2rEZtRzyLT2yKTI2exgpnxbwPWEFAduZCSfzBrcBXZ/nb5B0pjA9tUNWls1YzGkJGlkhpg==} + '@storybook/types@8.1.5': + resolution: {integrity: sha512-/PfAZh1xtXN2MvAZZKpiL/nPkC3bZj8BQ7P7z5a/aQarP+y7qdXuoitYQ6oOH3rkaiYywmkWzA/y4iW70KXLKg==} + '@swc/core-darwin-arm64@1.5.24': resolution: {integrity: sha512-M7oLOcC0sw+UTyAuL/9uyB9GeO4ZpaBbH76JSH6g1m0/yg7LYJZGRmplhDmwVSDAR5Fq4Sjoi1CksmmGkgihGA==} engines: {node: '>=10'} @@ -3180,6 +2997,9 @@ packages: '@types/detect-port@1.3.5': resolution: {integrity: sha512-Rf3/lB9WkDfIL9eEKaSYKc+1L/rNVYBjThk22JTqQw0YozXarX8YljFAz+HCoC6h4B4KwCMsBPZHaFezwT4BNA==} + '@types/diff@5.2.1': + resolution: {integrity: sha512-uxpcuwWJGhe2AR1g8hD9F5OYGCqjqWnBUQFD8gMZsDbv8oPHzxJF6iMO6n8Tk0AdzlxoaaoQhOYlIg/PukVU8g==} + '@types/doctrine@0.0.3': resolution: {integrity: sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA==} @@ -3255,9 +3075,6 @@ packages: '@types/loadable__component@5.13.9': resolution: {integrity: sha512-QWOtIkwZqHNdQj3nixQ8oyihQiTMKZLk/DNuvNxMSbTfxf47w+kqcbnxlUeBgAxdOtW0Dh48dTAIp83iJKtnrQ==} - '@types/lodash@4.17.4': - resolution: {integrity: sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ==} - '@types/mime-types@2.1.4': resolution: {integrity: sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==} @@ -3339,6 +3156,9 @@ packages: '@types/tough-cookie@4.0.5': resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + '@types/wait-on@5.3.4': + resolution: {integrity: sha512-EBsPjFMrFlMbbUFf9D1Fp+PAB2TwmUn7a3YtHyD9RLuTIk1jDd8SxXVAoez2Ciy+8Jsceo2MYEYZzJ/DvorOKw==} + '@types/which@3.0.4': resolution: {integrity: sha512-liyfuo/106JdlgSchJzXEQCVArk0CvevqPote8F8HgWgJ3dRCcTHgJIsLDuee0kxk/mhbInzIZk3QWSZJ8R+2w==} @@ -3750,10 +3570,6 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - aria-hidden@1.2.4: - resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} - engines: {node: '>=10'} - aria-query@5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} @@ -4422,6 +4238,10 @@ packages: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} + crypto-random-string@4.0.0: + resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} + engines: {node: '>=12'} + css-declaration-sorter@7.2.0: resolution: {integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==} engines: {node: ^14 || ^16 || >=18} @@ -4746,6 +4566,10 @@ packages: resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} engines: {node: '>=0.3.1'} + diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + engines: {node: '>=0.3.1'} + diffable-html@5.0.0: resolution: {integrity: sha512-BymfWdoIv53XDp/sINPyngxiyJr7ygmAoUN7nIlPC7E+jiLvPdVIZteG4btCaB5Nyf8CMyMxp8r4Vi2r1FtSsA==} @@ -5607,6 +5431,10 @@ packages: resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + globby@14.0.1: + resolution: {integrity: sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==} + engines: {node: '>=18'} + globby@6.1.0: resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==} engines: {node: '>=0.10.0'} @@ -6712,12 +6540,6 @@ packages: map-or-similar@1.5.0: resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} - markdown-to-jsx@7.4.7: - resolution: {integrity: sha512-0+ls1IQZdU6cwM1yu0ZjjiVWYtkbExSyUIFU2ZeDIFuZM1W42Mh4OlJ4nb4apX4H8smxDHRdFaoIVJGwfv5hkg==} - engines: {node: '>= 10'} - peerDependencies: - react: '>= 0.14.0' - marked@1.2.9: resolution: {integrity: sha512-H8lIX2SvyitGX+TRdtS06m1jHMijKN/XjfH6Ooii9fvxMlh8QdqBfBDkGUpMWH2kQNrtixjzYUa3SH8ROTgRRw==} engines: {node: '>= 8.16.2'} @@ -7293,6 +7115,10 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + path-type@5.0.0: + resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} + engines: {node: '>=12'} + pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} @@ -7598,6 +7424,11 @@ packages: engines: {node: '>=10.13.0'} hasBin: true + prettier@3.3.0: + resolution: {integrity: sha512-J9odKxERhCQ10OC2yb93583f6UnYutOeiV5i0zEDS7UGTdUt0u+y8erxl3lBKvwo/JHyyoEdXjwp4dke9oyZ/g==} + engines: {node: '>=14'} + hasBin: true + pretty-error@4.0.0: resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} @@ -7743,12 +7574,6 @@ packages: peerDependencies: react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - react-colorful@5.6.1: - resolution: {integrity: sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - react-docgen-typescript@2.2.2: resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} peerDependencies: @@ -7835,16 +7660,6 @@ packages: '@types/react': optional: true - react-remove-scroll@2.5.5: - resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - react-router-dom@6.23.1: resolution: {integrity: sha512-utP+K+aSTtEdbWpC+4gxhdlPFwuEfDKq8ZrPFU65bbRJY+l706qjR7yaidBpo3MSeA/fzwbXWbKBI6ftOnP3OQ==} engines: {node: '>=14.0.0'} @@ -8368,6 +8183,10 @@ packages: store2@2.14.3: resolution: {integrity: sha512-4QcZ+yx7nzEFiV4BMLnr/pRa5HYzNITX2ri0Zh6sT9EyQHbBHacC6YigllUPU9X3D0f/22QCgfokpKs52YRrUg==} + storybook@8.1.5: + resolution: {integrity: sha512-v4o8AfTvxWpdGa9Pa9x8EAmqbN5yJc+2fW8b6ZaCsDOTh2t5Y3EUHbIzdtvX+1Gb6ALsOs5e2Q9GlCAzjz+WNQ==} + hasBin: true + stream-shift@1.0.3: resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} @@ -8554,6 +8373,10 @@ packages: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} engines: {node: '>=8'} + temp-dir@3.0.0: + resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} + engines: {node: '>=14.16'} + temp@0.8.4: resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} engines: {node: '>=6.0.0'} @@ -8562,6 +8385,10 @@ packages: resolution: {integrity: sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==} engines: {node: '>=10'} + tempy@3.1.0: + resolution: {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==} + engines: {node: '>=14.16'} + term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} @@ -8638,9 +8465,6 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - tocbot@4.28.2: - resolution: {integrity: sha512-/MaSa9xI6mIo84IxqqliSCtPlH0oy7sLcY9s26qPMyH/2CxtZ2vNAXYlIdEQ7kjAkCQnc0rbLygf//F5c663oQ==} - toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} @@ -8691,6 +8515,10 @@ packages: tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} @@ -8743,6 +8571,10 @@ packages: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} + type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} @@ -8811,10 +8643,18 @@ packages: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + unique-string@2.0.0: resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} engines: {node: '>=8'} + unique-string@3.0.0: + resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} + engines: {node: '>=12'} + universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} @@ -8875,12 +8715,6 @@ packages: '@types/react': optional: true - use-resize-observer@9.1.0: - resolution: {integrity: sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow==} - peerDependencies: - react: 16.8.0 - 18 - react-dom: 16.8.0 - 18 - use-sidecar@1.1.2: resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} @@ -10562,23 +10396,6 @@ snapshots: eslint: 8.57.0 globals: 13.24.0 - '@floating-ui/core@1.6.2': - dependencies: - '@floating-ui/utils': 0.2.2 - - '@floating-ui/dom@1.6.5': - dependencies: - '@floating-ui/core': 1.6.2 - '@floating-ui/utils': 0.2.2 - - '@floating-ui/react-dom@2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@floating-ui/dom': 1.6.5 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@floating-ui/utils@0.2.2': {} - '@formatjs/ecma402-abstract@2.0.0': dependencies: '@formatjs/intl-localematcher': 0.5.4 @@ -10844,8 +10661,6 @@ snapshots: dependencies: tslib: 2.6.2 - '@juggle/resize-observer@3.4.0': {} - '@leichtgewicht/ip-codec@2.0.5': {} '@ljharb/through@2.3.13': @@ -10964,315 +10779,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@radix-ui/number@1.0.1': - dependencies: - '@babel/runtime': 7.24.6 - - '@radix-ui/primitive@1.0.1': - dependencies: - '@babel/runtime': 7.24.6 - - '@radix-ui/react-arrow@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.6 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-collection@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.6 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-compose-refs@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.6 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-context@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.6 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-direction@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.6 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.6 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-focus-guards@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.6 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-focus-scope@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.6 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-id@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.6 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-popper@1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.6 - '@floating-ui/react-dom': 2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/rect': 1.0.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-portal@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.6 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.6 - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.6 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-select@1.2.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.6 - '@radix-ui/number': 1.0.1 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - aria-hidden: 1.2.4 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.5.5(@types/react@18.3.3)(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-separator@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.6 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-slot@1.0.2(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.6 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.6 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-toggle@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.6 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-toolbar@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.6 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-separator': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-toggle-group': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.6 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.6 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.6 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.6 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-previous@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.6 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-rect@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.6 - '@radix-ui/rect': 1.0.1 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-size@1.0.1(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.6 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.24.6 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/rect@1.0.1': - dependencies: - '@babel/runtime': 7.24.6 - '@remix-run/router@1.16.1': {} '@rollup/rollup-android-arm-eabi@4.18.0': @@ -11335,6 +10841,8 @@ snapshots: '@sindresorhus/is@0.14.0': {} + '@sindresorhus/merge-streams@2.3.0': {} + '@sinonjs/commons@3.0.1': dependencies: type-detect: 4.0.8 @@ -11343,51 +10851,13 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 - '@storybook/addon-controls@7.6.19(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/addon-webpack5-compiler-babel@3.0.3(webpack@5.91.0(@swc/core@1.5.24)(esbuild@0.19.12))': dependencies: - '@storybook/blocks': 7.6.19(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - lodash: 4.17.21 - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - encoding - - react - - react-dom - - supports-color - - '@storybook/blocks@7.6.19(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@storybook/channels': 7.6.19 - '@storybook/client-logger': 7.6.19 - '@storybook/components': 7.6.19(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/core-events': 7.6.19 - '@storybook/csf': 0.1.7 - '@storybook/docs-tools': 7.6.19 - '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.6.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/preview-api': 7.6.19 - '@storybook/theming': 7.6.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/types': 7.6.19 - '@types/lodash': 4.17.4 - color-convert: 2.0.1 - dequal: 2.0.3 - lodash: 4.17.21 - markdown-to-jsx: 7.4.7(react@18.3.1) - memoizerific: 1.11.3 - polished: 4.3.1 - react: 18.3.1 - react-colorful: 5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-dom: 18.3.1(react@18.3.1) - telejson: 7.2.0 - tocbot: 4.28.2 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 + '@babel/core': 7.24.6 + babel-loader: 9.1.3(@babel/core@7.24.6)(webpack@5.91.0(@swc/core@1.5.24)(esbuild@0.19.12)) transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - encoding - supports-color + - webpack '@storybook/builder-manager@7.6.19': dependencies: @@ -11411,6 +10881,27 @@ snapshots: - encoding - supports-color + '@storybook/builder-manager@8.1.5(prettier@3.3.0)': + dependencies: + '@fal-works/esbuild-plugin-global-externals': 2.1.2 + '@storybook/core-common': 8.1.5(prettier@3.3.0) + '@storybook/manager': 8.1.5 + '@storybook/node-logger': 8.1.5 + '@types/ejs': 3.1.5 + '@yarnpkg/esbuild-plugin-pnp': 3.0.0-rc.15(esbuild@0.19.12) + browser-assert: 1.2.1 + ejs: 3.1.10 + esbuild: 0.19.12 + esbuild-plugin-alias: 0.2.1 + express: 4.19.2 + fs-extra: 11.2.0 + process: 0.11.10 + util: 0.12.5 + transitivePeerDependencies: + - encoding + - prettier + - supports-color + '@storybook/builder-webpack5@7.6.19(esbuild@0.19.12)(typescript@5.3.3)': dependencies: '@babel/core': 7.24.6 @@ -11462,6 +10953,54 @@ snapshots: - uglify-js - webpack-cli + '@storybook/builder-webpack5@8.1.5(@swc/core@1.5.24)(esbuild@0.19.12)(prettier@3.3.0)(typescript@5.3.3)': + dependencies: + '@storybook/channels': 8.1.5 + '@storybook/client-logger': 8.1.5 + '@storybook/core-common': 8.1.5(prettier@3.3.0) + '@storybook/core-events': 8.1.5 + '@storybook/core-webpack': 8.1.5(prettier@3.3.0) + '@storybook/node-logger': 8.1.5 + '@storybook/preview': 8.1.5 + '@storybook/preview-api': 8.1.5 + '@types/node': 18.19.33 + '@types/semver': 7.5.8 + browser-assert: 1.2.1 + case-sensitive-paths-webpack-plugin: 2.4.0 + cjs-module-lexer: 1.3.1 + constants-browserify: 1.0.0 + css-loader: 6.11.0(webpack@5.91.0(@swc/core@1.5.24)(esbuild@0.19.12)) + es-module-lexer: 1.5.3 + express: 4.19.2 + fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.3.3)(webpack@5.91.0(@swc/core@1.5.24)(esbuild@0.19.12)) + fs-extra: 11.2.0 + html-webpack-plugin: 5.6.0(webpack@5.91.0(@swc/core@1.5.24)(esbuild@0.19.12)) + magic-string: 0.30.10 + path-browserify: 1.0.1 + process: 0.11.10 + semver: 7.6.2 + style-loader: 3.3.4(webpack@5.91.0(@swc/core@1.5.24)(esbuild@0.19.12)) + terser-webpack-plugin: 5.3.10(@swc/core@1.5.24)(esbuild@0.19.12)(webpack@5.91.0(@swc/core@1.5.24)(esbuild@0.19.12)) + ts-dedent: 2.2.0 + url: 0.11.3 + util: 0.12.5 + util-deprecate: 1.0.2 + webpack: 5.91.0(@swc/core@1.5.24)(esbuild@0.19.12) + webpack-dev-middleware: 6.1.3(webpack@5.91.0(@swc/core@1.5.24)(esbuild@0.19.12)) + webpack-hot-middleware: 2.26.1 + webpack-virtual-modules: 0.5.0 + optionalDependencies: + typescript: 5.3.3 + transitivePeerDependencies: + - '@rspack/core' + - '@swc/core' + - encoding + - esbuild + - prettier + - supports-color + - uglify-js + - webpack-cli + '@storybook/channels@7.6.19': dependencies: '@storybook/client-logger': 7.6.19 @@ -11471,6 +11010,14 @@ snapshots: telejson: 7.2.0 tiny-invariant: 1.3.3 + '@storybook/channels@8.1.5': + dependencies: + '@storybook/client-logger': 8.1.5 + '@storybook/core-events': 8.1.5 + '@storybook/global': 5.0.0 + telejson: 7.2.0 + tiny-invariant: 1.3.3 + '@storybook/cli@7.6.19': dependencies: '@babel/core': 7.24.6 @@ -11519,10 +11066,61 @@ snapshots: - supports-color - utf-8-validate + '@storybook/cli@8.1.5(@babel/preset-env@7.24.6(@babel/core@7.24.6))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/core': 7.24.6 + '@babel/types': 7.24.6 + '@ndelangen/get-tarball': 3.0.9 + '@storybook/codemod': 8.1.5 + '@storybook/core-common': 8.1.5(prettier@3.3.0) + '@storybook/core-events': 8.1.5 + '@storybook/core-server': 8.1.5(prettier@3.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/csf-tools': 8.1.5 + '@storybook/node-logger': 8.1.5 + '@storybook/telemetry': 8.1.5(prettier@3.3.0) + '@storybook/types': 8.1.5 + '@types/semver': 7.5.8 + '@yarnpkg/fslib': 2.10.3 + '@yarnpkg/libzip': 2.3.0 + chalk: 4.1.2 + commander: 6.2.1 + cross-spawn: 7.0.3 + detect-indent: 6.1.0 + envinfo: 7.13.0 + execa: 5.1.1 + find-up: 5.0.0 + fs-extra: 11.2.0 + get-npm-tarball-url: 2.1.0 + giget: 1.2.3 + globby: 14.0.1 + jscodeshift: 0.15.2(@babel/preset-env@7.24.6(@babel/core@7.24.6)) + leven: 3.1.0 + ora: 5.4.1 + prettier: 3.3.0 + prompts: 2.4.2 + read-pkg-up: 7.0.1 + semver: 7.6.2 + strip-json-comments: 3.1.1 + tempy: 3.1.0 + tiny-invariant: 1.3.3 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - '@babel/preset-env' + - bufferutil + - encoding + - react + - react-dom + - supports-color + - utf-8-validate + '@storybook/client-logger@7.6.19': dependencies: '@storybook/global': 5.0.0 + '@storybook/client-logger@8.1.5': + dependencies: + '@storybook/global': 5.0.0 + '@storybook/codemod@7.6.19': dependencies: '@babel/core': 7.24.6 @@ -11542,23 +11140,25 @@ snapshots: transitivePeerDependencies: - supports-color - '@storybook/components@7.6.19(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/codemod@8.1.5': dependencies: - '@radix-ui/react-select': 1.2.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/client-logger': 7.6.19 + '@babel/core': 7.24.6 + '@babel/preset-env': 7.24.6(@babel/core@7.24.6) + '@babel/types': 7.24.6 '@storybook/csf': 0.1.7 - '@storybook/global': 5.0.0 - '@storybook/theming': 7.6.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/types': 7.6.19 - memoizerific: 1.11.3 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - use-resize-observer: 9.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - util-deprecate: 1.0.2 + '@storybook/csf-tools': 8.1.5 + '@storybook/node-logger': 8.1.5 + '@storybook/types': 8.1.5 + '@types/cross-spawn': 6.0.6 + cross-spawn: 7.0.3 + globby: 14.0.1 + jscodeshift: 0.15.2(@babel/preset-env@7.24.6(@babel/core@7.24.6)) + lodash: 4.17.21 + prettier: 3.3.0 + recast: 0.23.9 + tiny-invariant: 1.3.3 transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' + - supports-color '@storybook/core-client@7.6.19': dependencies: @@ -11594,10 +11194,52 @@ snapshots: - encoding - supports-color + '@storybook/core-common@8.1.5(prettier@3.3.0)': + dependencies: + '@storybook/core-events': 8.1.5 + '@storybook/csf-tools': 8.1.5 + '@storybook/node-logger': 8.1.5 + '@storybook/types': 8.1.5 + '@yarnpkg/fslib': 2.10.3 + '@yarnpkg/libzip': 2.3.0 + chalk: 4.1.2 + cross-spawn: 7.0.3 + esbuild: 0.19.12 + esbuild-register: 3.5.0(esbuild@0.19.12) + execa: 5.1.1 + file-system-cache: 2.3.0 + find-cache-dir: 3.3.2 + find-up: 5.0.0 + fs-extra: 11.2.0 + glob: 10.4.1 + handlebars: 4.7.8 + lazy-universal-dotenv: 4.0.0 + node-fetch: 2.7.0 + picomatch: 2.3.1 + pkg-dir: 5.0.0 + prettier-fallback: prettier@3.3.0 + pretty-hrtime: 1.0.3 + resolve-from: 5.0.0 + semver: 7.6.2 + tempy: 3.1.0 + tiny-invariant: 1.3.3 + ts-dedent: 2.2.0 + util: 0.12.5 + optionalDependencies: + prettier: 3.3.0 + transitivePeerDependencies: + - encoding + - supports-color + '@storybook/core-events@7.6.19': dependencies: ts-dedent: 2.2.0 + '@storybook/core-events@8.1.5': + dependencies: + '@storybook/csf': 0.1.7 + ts-dedent: 2.2.0 + '@storybook/core-server@7.6.19': dependencies: '@aw-web-design/x-default-browser': 1.4.126 @@ -11647,6 +11289,63 @@ snapshots: - supports-color - utf-8-validate + '@storybook/core-server@8.1.5(prettier@3.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@aw-web-design/x-default-browser': 1.4.126 + '@babel/core': 7.24.6 + '@babel/parser': 7.24.6 + '@discoveryjs/json-ext': 0.5.7 + '@storybook/builder-manager': 8.1.5(prettier@3.3.0) + '@storybook/channels': 8.1.5 + '@storybook/core-common': 8.1.5(prettier@3.3.0) + '@storybook/core-events': 8.1.5 + '@storybook/csf': 0.1.7 + '@storybook/csf-tools': 8.1.5 + '@storybook/docs-mdx': 3.1.0-next.0 + '@storybook/global': 5.0.0 + '@storybook/manager': 8.1.5 + '@storybook/manager-api': 8.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/node-logger': 8.1.5 + '@storybook/preview-api': 8.1.5 + '@storybook/telemetry': 8.1.5(prettier@3.3.0) + '@storybook/types': 8.1.5 + '@types/detect-port': 1.3.5 + '@types/diff': 5.2.1 + '@types/node': 18.19.33 + '@types/pretty-hrtime': 1.0.3 + '@types/semver': 7.5.8 + better-opn: 3.0.2 + chalk: 4.1.2 + cli-table3: 0.6.5 + compression: 1.7.4 + detect-port: 1.6.1 + diff: 5.2.0 + express: 4.19.2 + fs-extra: 11.2.0 + globby: 14.0.1 + ip: 2.0.1 + lodash: 4.17.21 + open: 8.4.2 + pretty-hrtime: 1.0.3 + prompts: 2.4.2 + read-pkg-up: 7.0.1 + semver: 7.6.2 + telejson: 7.2.0 + tiny-invariant: 1.3.3 + ts-dedent: 2.2.0 + util: 0.12.5 + util-deprecate: 1.0.2 + watchpack: 2.4.1 + ws: 8.17.0 + transitivePeerDependencies: + - bufferutil + - encoding + - prettier + - react + - react-dom + - supports-color + - utf-8-validate + '@storybook/core-webpack@7.6.19': dependencies: '@storybook/core-common': 7.6.19 @@ -11658,6 +11357,18 @@ snapshots: - encoding - supports-color + '@storybook/core-webpack@8.1.5(prettier@3.3.0)': + dependencies: + '@storybook/core-common': 8.1.5(prettier@3.3.0) + '@storybook/node-logger': 8.1.5 + '@storybook/types': 8.1.5 + '@types/node': 18.19.33 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - encoding + - prettier + - supports-color + '@storybook/csf-tools@7.6.19': dependencies: '@babel/generator': 7.24.6 @@ -11672,12 +11383,28 @@ snapshots: transitivePeerDependencies: - supports-color + '@storybook/csf-tools@8.1.5': + dependencies: + '@babel/generator': 7.24.6 + '@babel/parser': 7.24.6 + '@babel/traverse': 7.24.6 + '@babel/types': 7.24.6 + '@storybook/csf': 0.1.7 + '@storybook/types': 8.1.5 + fs-extra: 11.2.0 + recast: 0.23.9 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - supports-color + '@storybook/csf@0.1.7': dependencies: type-fest: 2.19.0 '@storybook/docs-mdx@0.1.0': {} + '@storybook/docs-mdx@3.1.0-next.0': {} + '@storybook/docs-tools@7.6.19': dependencies: '@storybook/core-common': 7.6.19 @@ -11691,18 +11418,39 @@ snapshots: - encoding - supports-color + '@storybook/docs-tools@8.1.5(prettier@3.3.0)': + dependencies: + '@storybook/core-common': 8.1.5(prettier@3.3.0) + '@storybook/core-events': 8.1.5 + '@storybook/preview-api': 8.1.5 + '@storybook/types': 8.1.5 + '@types/doctrine': 0.0.3 + assert: 2.1.0 + doctrine: 3.0.0 + lodash: 4.17.21 + transitivePeerDependencies: + - encoding + - prettier + - supports-color + '@storybook/global@5.0.0': {} - '@storybook/manager-api@7.6.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/icons@1.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@storybook/channels': 7.6.19 - '@storybook/client-logger': 7.6.19 - '@storybook/core-events': 7.6.19 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@storybook/manager-api@8.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@storybook/channels': 8.1.5 + '@storybook/client-logger': 8.1.5 + '@storybook/core-events': 8.1.5 '@storybook/csf': 0.1.7 '@storybook/global': 5.0.0 - '@storybook/router': 7.6.19 - '@storybook/theming': 7.6.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/types': 7.6.19 + '@storybook/icons': 1.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/router': 8.1.5 + '@storybook/theming': 8.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/types': 8.1.5 dequal: 2.0.3 lodash: 4.17.21 memoizerific: 1.11.3 @@ -11715,8 +11463,12 @@ snapshots: '@storybook/manager@7.6.19': {} + '@storybook/manager@8.1.5': {} + '@storybook/node-logger@7.6.19': {} + '@storybook/node-logger@8.1.5': {} + '@storybook/preset-react-webpack@7.6.19(@babel/core@7.24.6)(@swc/core@1.5.24)(esbuild@0.19.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(type-fest@2.19.0)(typescript@5.3.3)(webpack-dev-server@5.0.4(debug@4.3.5)(webpack@5.91.0(@swc/core@1.5.24)(esbuild@0.19.12)))(webpack-hot-middleware@2.26.1)': dependencies: '@babel/preset-flow': 7.24.6(@babel/core@7.24.6) @@ -11755,6 +11507,36 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve + '@storybook/preset-react-webpack@8.1.5(@swc/core@1.5.24)(esbuild@0.19.12)(prettier@3.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.3.3)': + dependencies: + '@storybook/core-webpack': 8.1.5(prettier@3.3.0) + '@storybook/docs-tools': 8.1.5(prettier@3.3.0) + '@storybook/node-logger': 8.1.5 + '@storybook/react': 8.1.5(prettier@3.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.3.3) + '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.3.3)(webpack@5.91.0(@swc/core@1.5.24)(esbuild@0.19.12)) + '@types/node': 18.19.33 + '@types/semver': 7.5.8 + find-up: 5.0.0 + fs-extra: 11.2.0 + magic-string: 0.30.10 + react: 18.3.1 + react-docgen: 7.0.3 + react-dom: 18.3.1(react@18.3.1) + resolve: 1.22.8 + semver: 7.6.2 + tsconfig-paths: 4.2.0 + webpack: 5.91.0(@swc/core@1.5.24)(esbuild@0.19.12) + optionalDependencies: + typescript: 5.3.3 + transitivePeerDependencies: + - '@swc/core' + - encoding + - esbuild + - prettier + - supports-color + - uglify-js + - webpack-cli + '@storybook/preview-api@7.6.19': dependencies: '@storybook/channels': 7.6.19 @@ -11772,8 +11554,27 @@ snapshots: ts-dedent: 2.2.0 util-deprecate: 1.0.2 + '@storybook/preview-api@8.1.5': + dependencies: + '@storybook/channels': 8.1.5 + '@storybook/client-logger': 8.1.5 + '@storybook/core-events': 8.1.5 + '@storybook/csf': 0.1.7 + '@storybook/global': 5.0.0 + '@storybook/types': 8.1.5 + '@types/qs': 6.9.15 + dequal: 2.0.3 + lodash: 4.17.21 + memoizerific: 1.11.3 + qs: 6.12.1 + tiny-invariant: 1.3.3 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + '@storybook/preview@7.6.19': {} + '@storybook/preview@8.1.5': {} + '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.3.3)(webpack@5.91.0(@swc/core@1.5.24)(esbuild@0.19.12))': dependencies: debug: 4.3.5(supports-color@8.1.1) @@ -11793,6 +11594,11 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + '@storybook/react-dom-shim@8.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + '@storybook/react-webpack5@7.6.19(@babel/core@7.24.6)(@swc/core@1.5.24)(esbuild@0.19.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(type-fest@2.19.0)(typescript@5.3.3)(webpack-dev-server@5.0.4(debug@4.3.5)(webpack@5.91.0(@swc/core@1.5.24)(esbuild@0.19.12)))(webpack-hot-middleware@2.26.1)': dependencies: '@storybook/builder-webpack5': 7.6.19(esbuild@0.19.12)(typescript@5.3.3) @@ -11820,6 +11626,27 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve + '@storybook/react-webpack5@8.1.5(@swc/core@1.5.24)(esbuild@0.19.12)(prettier@3.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.3.3)': + dependencies: + '@storybook/builder-webpack5': 8.1.5(@swc/core@1.5.24)(esbuild@0.19.12)(prettier@3.3.0)(typescript@5.3.3) + '@storybook/preset-react-webpack': 8.1.5(@swc/core@1.5.24)(esbuild@0.19.12)(prettier@3.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.3.3) + '@storybook/react': 8.1.5(prettier@3.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.3.3) + '@storybook/types': 8.1.5 + '@types/node': 18.19.33 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + typescript: 5.3.3 + transitivePeerDependencies: + - '@rspack/core' + - '@swc/core' + - encoding + - esbuild + - prettier + - supports-color + - uglify-js + - webpack-cli + '@storybook/react@7.6.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.3.3)': dependencies: '@storybook/client-logger': 7.6.19 @@ -11851,9 +11678,41 @@ snapshots: - encoding - supports-color - '@storybook/router@7.6.19': + '@storybook/react@8.1.5(prettier@3.3.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.3.3)': dependencies: - '@storybook/client-logger': 7.6.19 + '@storybook/client-logger': 8.1.5 + '@storybook/docs-tools': 8.1.5(prettier@3.3.0) + '@storybook/global': 5.0.0 + '@storybook/preview-api': 8.1.5 + '@storybook/react-dom-shim': 8.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/types': 8.1.5 + '@types/escodegen': 0.0.6 + '@types/estree': 0.0.51 + '@types/node': 18.19.33 + acorn: 7.4.1 + acorn-jsx: 5.3.2(acorn@7.4.1) + acorn-walk: 7.2.0 + escodegen: 2.1.0 + html-tags: 3.3.1 + lodash: 4.17.21 + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-element-to-jsx-string: 15.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + semver: 7.6.2 + ts-dedent: 2.2.0 + type-fest: 2.19.0 + util-deprecate: 1.0.2 + optionalDependencies: + typescript: 5.3.3 + transitivePeerDependencies: + - encoding + - prettier + - supports-color + + '@storybook/router@8.1.5': + dependencies: + '@storybook/client-logger': 8.1.5 memoizerific: 1.11.3 qs: 6.12.1 @@ -11871,12 +11730,28 @@ snapshots: - encoding - supports-color - '@storybook/theming@7.6.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/telemetry@8.1.5(prettier@3.3.0)': + dependencies: + '@storybook/client-logger': 8.1.5 + '@storybook/core-common': 8.1.5(prettier@3.3.0) + '@storybook/csf-tools': 8.1.5 + chalk: 4.1.2 + detect-package-manager: 2.0.1 + fetch-retry: 5.0.6 + fs-extra: 11.2.0 + read-pkg-up: 7.0.1 + transitivePeerDependencies: + - encoding + - prettier + - supports-color + + '@storybook/theming@8.1.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.3.1) - '@storybook/client-logger': 7.6.19 + '@storybook/client-logger': 8.1.5 '@storybook/global': 5.0.0 memoizerific: 1.11.3 + optionalDependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -11887,6 +11762,12 @@ snapshots: '@types/express': 4.17.21 file-system-cache: 2.3.0 + '@storybook/types@8.1.5': + dependencies: + '@storybook/channels': 8.1.5 + '@types/express': 4.17.21 + file-system-cache: 2.3.0 + '@swc/core-darwin-arm64@1.5.24': optional: true @@ -12028,6 +11909,8 @@ snapshots: '@types/detect-port@1.3.5': {} + '@types/diff@5.2.1': {} + '@types/doctrine@0.0.3': {} '@types/doctrine@0.0.9': {} @@ -12113,8 +11996,6 @@ snapshots: dependencies: '@types/react': 18.3.3 - '@types/lodash@4.17.4': {} - '@types/mime-types@2.1.4': {} '@types/mime@1.3.5': {} @@ -12194,6 +12075,10 @@ snapshots: '@types/tough-cookie@4.0.5': {} + '@types/wait-on@5.3.4': + dependencies: + '@types/node': 18.19.33 + '@types/which@3.0.4': {} '@types/ws@8.5.10': @@ -12596,6 +12481,11 @@ snapshots: esbuild: 0.18.20 tslib: 2.6.2 + '@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15(esbuild@0.19.12)': + dependencies: + esbuild: 0.19.12 + tslib: 2.6.2 + '@yarnpkg/fslib@2.10.3': dependencies: '@yarnpkg/libzip': 2.3.0 @@ -12743,10 +12633,6 @@ snapshots: argparse@2.0.1: {} - aria-hidden@1.2.4: - dependencies: - tslib: 2.6.2 - aria-query@5.1.3: dependencies: deep-equal: 2.2.3 @@ -12917,12 +12803,12 @@ snapshots: schema-utils: 4.2.0 webpack: 5.91.0(@swc/core@1.5.24)(esbuild@0.19.12) - babel-loader@9.1.3(@babel/core@7.24.6)(webpack@5.91.0(@swc/core@1.5.24)): + babel-loader@9.1.3(@babel/core@7.24.6)(webpack@5.91.0(@swc/core@1.5.24)(webpack-cli@5.1.4)): dependencies: '@babel/core': 7.24.6 find-cache-dir: 4.0.0 schema-utils: 4.2.0 - webpack: 5.91.0(@swc/core@1.5.24) + webpack: 5.91.0(@swc/core@1.5.24)(webpack-cli@5.1.4) babel-plugin-add-react-displayname@0.0.5: {} @@ -13584,6 +13470,10 @@ snapshots: crypto-random-string@2.0.0: {} + crypto-random-string@4.0.0: + dependencies: + type-fest: 1.4.0 + css-declaration-sorter@7.2.0(postcss@8.4.38): dependencies: postcss: 8.4.38 @@ -13925,6 +13815,8 @@ snapshots: diff@3.5.0: {} + diff@5.2.0: {} + diffable-html@5.0.0: dependencies: htmlparser2: 3.10.1 @@ -15176,6 +15068,15 @@ snapshots: merge2: 1.4.1 slash: 4.0.0 + globby@14.0.1: + dependencies: + '@sindresorhus/merge-streams': 2.3.0 + fast-glob: 3.3.2 + ignore: 5.3.1 + path-type: 5.0.0 + slash: 5.1.0 + unicorn-magic: 0.1.0 + globby@6.1.0: dependencies: array-union: 1.0.2 @@ -15331,7 +15232,7 @@ snapshots: optionalDependencies: webpack: 5.91.0(@swc/core@1.5.24)(esbuild@0.19.12) - html-webpack-plugin@5.6.0(webpack@5.91.0(@swc/core@1.5.24)): + html-webpack-plugin@5.6.0(webpack@5.91.0(@swc/core@1.5.24)(webpack-cli@5.1.4)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -15339,7 +15240,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - webpack: 5.91.0(@swc/core@1.5.24) + webpack: 5.91.0(@swc/core@1.5.24)(webpack-cli@5.1.4) htmlparser2@3.10.1: dependencies: @@ -16532,10 +16433,6 @@ snapshots: map-or-similar@1.5.0: {} - markdown-to-jsx@7.4.7(react@18.3.1): - dependencies: - react: 18.3.1 - marked@1.2.9: {} mdn-data@2.0.28: {} @@ -16622,11 +16519,11 @@ snapshots: tapable: 2.2.1 webpack: 5.91.0(@swc/core@1.5.24)(esbuild@0.19.12) - mini-css-extract-plugin@2.9.0(webpack@5.91.0(@swc/core@1.5.24)): + mini-css-extract-plugin@2.9.0(webpack@5.91.0(@swc/core@1.5.24)(webpack-cli@5.1.4)): dependencies: schema-utils: 4.2.0 tapable: 2.2.1 - webpack: 5.91.0(@swc/core@1.5.24) + webpack: 5.91.0(@swc/core@1.5.24)(webpack-cli@5.1.4) minimalistic-assert@1.0.1: {} @@ -17073,6 +16970,8 @@ snapshots: path-type@4.0.0: {} + path-type@5.0.0: {} + pathe@1.1.2: {} peek-stream@1.1.3: @@ -17344,6 +17243,8 @@ snapshots: prettier@2.8.8: {} + prettier@3.3.0: {} + pretty-error@4.0.0: dependencies: lodash: 4.17.21 @@ -17525,11 +17426,6 @@ snapshots: '@babel/runtime': 7.24.6 react: 18.3.1 - react-colorful@5.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-docgen-typescript@2.2.2(typescript@5.3.3): dependencies: typescript: 5.3.3 @@ -17630,17 +17526,6 @@ snapshots: optionalDependencies: '@types/react': 18.3.3 - react-remove-scroll@2.5.5(@types/react@18.3.3)(react@18.3.1): - dependencies: - react: 18.3.1 - react-remove-scroll-bar: 2.3.6(@types/react@18.3.3)(react@18.3.1) - react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) - tslib: 2.6.2 - use-callback-ref: 1.3.2(@types/react@18.3.3)(react@18.3.1) - use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - react-router-dom@6.23.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@remix-run/router': 1.16.1 @@ -18371,6 +18256,18 @@ snapshots: store2@2.14.3: {} + storybook@8.1.5(@babel/preset-env@7.24.6(@babel/core@7.24.6))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@storybook/cli': 8.1.5(@babel/preset-env@7.24.6(@babel/core@7.24.6))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + transitivePeerDependencies: + - '@babel/preset-env' + - bufferutil + - encoding + - react + - react-dom + - supports-color + - utf-8-validate + stream-shift@1.0.3: {} stream-transform@2.1.3: @@ -18594,6 +18491,8 @@ snapshots: temp-dir@2.0.0: {} + temp-dir@3.0.0: {} + temp@0.8.4: dependencies: rimraf: 2.6.3 @@ -18606,6 +18505,13 @@ snapshots: type-fest: 0.16.0 unique-string: 2.0.0 + tempy@3.1.0: + dependencies: + is-stream: 3.0.0 + temp-dir: 3.0.0 + type-fest: 2.19.0 + unique-string: 3.0.0 + term-size@2.2.1: {} terser-webpack-plugin@5.3.10(@swc/core@1.5.24)(esbuild@0.19.12)(webpack@5.91.0(@swc/core@1.5.24)(esbuild@0.19.12)): @@ -18692,8 +18598,6 @@ snapshots: dependencies: is-number: 7.0.0 - tocbot@4.28.2: {} - toidentifier@1.0.1: {} totalist@3.0.1: {} @@ -18736,6 +18640,12 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + tslib@1.14.1: {} tslib@2.6.2: {} @@ -18775,6 +18685,8 @@ snapshots: type-fest@0.8.1: {} + type-fest@1.4.0: {} + type-fest@2.19.0: {} type-is@1.6.18: @@ -18852,10 +18764,16 @@ snapshots: unicode-property-aliases-ecmascript@2.1.0: {} + unicorn-magic@0.1.0: {} + unique-string@2.0.0: dependencies: crypto-random-string: 2.0.0 + unique-string@3.0.0: + dependencies: + crypto-random-string: 4.0.0 + universalify@0.1.2: {} universalify@0.2.0: {} @@ -18920,12 +18838,6 @@ snapshots: optionalDependencies: '@types/react': 18.3.3 - use-resize-observer@9.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - '@juggle/resize-observer': 3.4.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - use-sidecar@1.1.2(@types/react@18.3.3)(react@18.3.1): dependencies: detect-node-es: 1.1.0 diff --git a/test-utils/package.json b/test-utils/package.json index e2a57c6d3..247d55af0 100644 --- a/test-utils/package.json +++ b/test-utils/package.json @@ -2,6 +2,7 @@ "name": "@sku-private/test-utils", "private": true, "dependencies": { + "@types/wait-on": "5.3.4", "css": "^3.0.0", "diffable-html": "^5.0.0", "git-diff": "^2.0.6", diff --git a/test-utils/process.ts b/test-utils/process.ts index 0b1db72a3..9e7b06833 100644 --- a/test-utils/process.ts +++ b/test-utils/process.ts @@ -7,10 +7,10 @@ import { type ChildProcess, type ExecFileOptions, } from 'node:child_process'; -import gracefulSpawn from 'sku/lib/gracefulSpawn'; +import gracefulSpawn from '../packages/sku/lib/gracefulSpawn'; const execFile = promisify(_execFile); -const skuBin = require.resolve('sku/bin/sku.js'); +const skuBin = require.resolve('../packages/sku/bin/sku.js'); export const run = async ( file: string, @@ -90,7 +90,7 @@ export async function runSkuScriptInDir( }; // When starting a dev server, return a hook to the running process - if (/^(start|storybook|serve)/.test(script)) { + if (/^(start|serve)/.test(script)) { return gracefulSpawn(skuBin, [script, ...(args || [])], { stdio: 'inherit', ...processOptions, diff --git a/test-utils/storybook.js b/test-utils/storybook.js index 26a112629..4469e60ce 100644 --- a/test-utils/storybook.js +++ b/test-utils/storybook.js @@ -23,21 +23,18 @@ export const getStoryPage = async (storyIframeUrl) => { export const getStoryFrame = async (storybookUrl) => { const storybookPage = await browser.newPage(); storybookPage.setDefaultNavigationTimeout(10_000); + await storybookPage.goto(storybookUrl, { waitUntil: 'load' }); - await storybookPage.goto(storybookUrl, { waitUntil: ['load'] }); - + // Ensure default story is activated const firstStoryButton = await storybookPage.waitForSelector( '#storybook-explorer-menu button', { timeout: 10_000 }, ); - - // Ensure default story is activated await firstStoryButton.click(); const iframeElement = await storybookPage.waitForSelector( '#storybook-preview-iframe', ); - const storyFrame = await iframeElement.contentFrame(); if (!storyFrame) { diff --git a/tests/__snapshots__/configure.test.ts.snap b/tests/__snapshots__/configure.test.ts.snap index 913335ab7..30aa8f4cf 100644 --- a/tests/__snapshots__/configure.test.ts.snap +++ b/tests/__snapshots__/configure.test.ts.snap @@ -6,11 +6,9 @@ exports[`configure custom should generate $ignore 1`] = ` ".eslintcache", ".eslintrc", ".prettierrc", - ".storybook/main.js", "coverage/", "foo/bar/", "report/", - "storybook/foobar/", ] `; @@ -20,11 +18,9 @@ exports[`configure custom should generate $ignore 2`] = ` ".eslintcache", ".eslintrc", ".prettierrc", - ".storybook/main.js", "coverage/", "foo/bar/", "report/", - "storybook/foobar/", ] `; @@ -34,9 +30,7 @@ exports[`configure default should generate $ignore 1`] = ` ".eslintcache", ".eslintrc", ".prettierrc", - ".storybook/main.js", "coverage/", - "dist-storybook/", "dist/", "report/", ] @@ -48,9 +42,7 @@ exports[`configure default should generate $ignore 2`] = ` ".eslintcache", ".eslintrc", ".prettierrc", - ".storybook/main.js", "coverage/", - "dist-storybook/", "dist/", "report/", ] diff --git a/tests/assertion-removal.test.ts b/tests/assertion-removal.test.ts index cb0d7c06b..6c74507a2 100644 --- a/tests/assertion-removal.test.ts +++ b/tests/assertion-removal.test.ts @@ -36,7 +36,9 @@ describe('assertion-removal', () => { it('should not contain "assert" or "invariant" in production', async () => { const appPage = await browser.newPage(); const response = await appPage.goto(url, { waitUntil: 'networkidle0' }); + const sourceHtml = await response?.text(); + expect(sourceHtml).toContain( 'It rendered without throwing an assertion error', ); diff --git a/tests/braid-design-system.test.js b/tests/braid-design-system.test.js index 79e00736a..c58cc97cf 100644 --- a/tests/braid-design-system.test.js +++ b/tests/braid-design-system.test.js @@ -15,7 +15,6 @@ const distDir = path.resolve(appDir, 'dist'); function getLocalUrl(site) { const host = site === 'jobStreet' ? 'dev.jobstreet.com' : 'dev.seek.com.au'; - return `http://${host}:${skuConfig.port}`; } diff --git a/tests/configure.test.ts b/tests/configure.test.ts index e04fc260b..973b77d22 100644 --- a/tests/configure.test.ts +++ b/tests/configure.test.ts @@ -78,9 +78,7 @@ describe('configure', () => { ".eslintcache", ".eslintrc", ".prettierrc", - ".storybook/main.js", "coverage/", - "dist-storybook/", "dist/", "report/", "tsconfig.json", @@ -144,11 +142,9 @@ describe('configure', () => { ".eslintcache", ".eslintrc", ".prettierrc", - ".storybook/main.js", "coverage/", "foo/bar/", "report/", - "storybook/foobar/", "tsconfig.json", ] `); diff --git a/tests/package.json b/tests/package.json index 8e71e8010..d730a3bc6 100644 --- a/tests/package.json +++ b/tests/package.json @@ -32,6 +32,8 @@ "@sku-fixtures/translations": "workspace:*", "@sku-fixtures/typescript-css-modules": "workspace:*", "@sku-private/test-utils": "workspace:*", + "@types/cross-spawn": "^6.0.3", + "cross-spawn": "^7.0.3", "dedent": "^1.5.1", "jsonc-parser": "^3.0.0", "node-fetch": "^2.6.9", diff --git a/tests/storybook-config.test.js b/tests/storybook-config.test.js index 16e6e832b..518d82585 100644 --- a/tests/storybook-config.test.js +++ b/tests/storybook-config.test.js @@ -1,47 +1,49 @@ +const gracefulSpawn = require('../packages/sku/lib/gracefulSpawn'); const path = require('node:path'); +const { sync: spawnSync } = require('cross-spawn'); const { - runSkuScriptInDir, waitForUrls, startAssetServer, getStoryFrame, - getTextContentFromFrameOrPage, getStoryPage, + getTextContentFromFrameOrPage, } = require('@sku-private/test-utils'); const fetch = require('node-fetch'); -const skuConfigFileName = 'sku.storybook.config.ts'; +const skuConfigFileName = 'sku.config.ts'; const appDir = path.dirname( require.resolve(`@sku-fixtures/storybook-config/${skuConfigFileName}`), ); -const storybookDistDir = path.resolve(appDir, 'dist-storybook'); - -const { default: skuConfig } = require(`${appDir}/sku.storybook.config.ts`); - // NOTE: Puppeteer renders in a small enough window that it may trigger a breakpoint that alters the // font size of an element describe('storybook-config', () => { describe('storybook', () => { - const storybookBaseUrl = `http://localhost:${skuConfig.storybookPort}`; + const port = 8089; + const storybookBaseUrl = `http://localhost:${port}`; const middlewareUrl = `${storybookBaseUrl}/test-middleware`; const storyIframePath = '/iframe.html?viewMode=story&id=testcomponent--default'; + const storyIframeUrl = `${storybookBaseUrl}${storyIframePath}`; + /** @type {ChildProcess} */ let server; /** @type {import("puppeteer").Page} */ let storyPage; beforeAll(async () => { - server = await runSkuScriptInDir('storybook', appDir, [ - '--ci', - '--quiet', - '--config', - skuConfigFileName, - ]); + server = gracefulSpawn( + 'pnpm', + ['storybook', 'dev', '--ci', '--quiet', '--port', port.toString()], + { + cwd: appDir, + stdio: 'inherit', + }, + ); await waitForUrls(storyIframeUrl, middlewareUrl); storyPage = await getStoryPage(storyIframeUrl); - }, 200000); + }, 100000); afterAll(async () => { await server.kill(); @@ -96,25 +98,29 @@ describe('storybook-config', () => { }); describe('build-storybook', () => { + jest.retryTimes(3, { logErrorsBeforeRetry: true }); + const assetServerPort = 4232; - const assetServerUrl = `http://localhost:${assetServerPort}`; + const storybookUrl = `http://localhost:${assetServerPort}`; + const storybookDistDir = path.resolve(appDir, 'storybook-static'); let closeStorybookServer; /** @type {import("puppeteer").Frame} */ let storyFrame; beforeAll(async () => { - await runSkuScriptInDir('build-storybook', appDir, [ - '--config', - skuConfigFileName, - ]); + spawnSync('pnpm', ['storybook', 'build', '--quiet'], { + cwd: appDir, + stdio: 'inherit', + }); + closeStorybookServer = await startAssetServer( assetServerPort, storybookDistDir, ); - await waitForUrls(assetServerUrl); - storyFrame = await getStoryFrame(assetServerUrl); - }, 200000); + await waitForUrls(storybookUrl); + storyFrame = await getStoryFrame(storybookUrl); + }, 100000); afterAll(() => { closeStorybookServer(); diff --git a/tests/styling.test.ts b/tests/styling.test.ts index fcd78cb16..e0df14652 100644 --- a/tests/styling.test.ts +++ b/tests/styling.test.ts @@ -6,10 +6,12 @@ import { waitForUrls, runSkuScriptInDir, getAppSnapshot, - getTextContentFromFrameOrPage, getStoryPage, + getTextContentFromFrameOrPage, } from '@sku-private/test-utils'; import type { ChildProcess } from 'node:child_process'; +import gracefulSpawn from '../packages/sku/lib/gracefulSpawn'; +import skuConfig from '../fixtures/styling/sku.config.ts'; const appDir = path.dirname( require.resolve('@sku-fixtures/styling/sku.config.ts'), @@ -17,13 +19,8 @@ const appDir = path.dirname( const distDir = path.resolve(appDir, 'dist'); const srcDir = path.resolve(appDir, 'src'); -// eslint-disable-next-line @typescript-eslint/no-var-requires -const { default: skuConfig } = require(`${appDir}/sku.config.ts`); - assert(skuConfig.port, 'sku config has port'); -assert(skuConfig.storybookPort, 'sku config has storybookPort'); const devServerUrl = `http://localhost:${skuConfig.port}`; - const cssTypes = ['.less.d.ts']; describe('styling', () => { @@ -90,15 +87,28 @@ describe('styling', () => { let server: ChildProcess; let storyPage: Page; - const storybookBaseUrl = `http://localhost:${skuConfig.storybookPort}`; + const storybookPort = 8090; + const storybookBaseUrl = `http://localhost:${storybookPort}`; const storyIframePath = '/iframe.html?viewMode=story&id=blueblock--default'; + const storyIframeUrl = `${storybookBaseUrl}${storyIframePath}`; beforeAll(async () => { - server = await runSkuScriptInDir('storybook', appDir, [ - '--ci', - '--quiet', - ]); + server = gracefulSpawn( + 'pnpm', + [ + 'storybook', + 'dev', + '--ci', + '--quiet', + '--port', + storybookPort.toString(), + ], + { + cwd: appDir, + stdio: 'inherit', + }, + ); await waitForUrls(storyIframeUrl); storyPage = await getStoryPage(storyIframeUrl); }, 200000);