diff --git a/docs/generated/manifests/menus.json b/docs/generated/manifests/menus.json index 9c7b8ad531..03f93fbd57 100644 --- a/docs/generated/manifests/menus.json +++ b/docs/generated/manifests/menus.json @@ -9620,6 +9620,14 @@ "children": [], "isExternal": false, "disableCollapsible": false + }, + { + "id": "migrate-8", + "path": "/nx-api/storybook/generators/migrate-8", + "name": "migrate-8", + "children": [], + "isExternal": false, + "disableCollapsible": false } ], "isExternal": false, diff --git a/docs/generated/manifests/nx-api.json b/docs/generated/manifests/nx-api.json index 783da85941..f6db8ce949 100644 --- a/docs/generated/manifests/nx-api.json +++ b/docs/generated/manifests/nx-api.json @@ -2929,6 +2929,15 @@ "originalFilePath": "/packages/storybook/src/generators/migrate-7/schema.json", "path": "/nx-api/storybook/generators/migrate-7", "type": "generator" + }, + "/nx-api/storybook/generators/migrate-8": { + "description": "Migrate to Storybook version 8.", + "file": "generated/packages/storybook/generators/migrate-8.json", + "hidden": false, + "name": "migrate-8", + "originalFilePath": "/packages/storybook/src/generators/migrate-8/schema.json", + "path": "/nx-api/storybook/generators/migrate-8", + "type": "generator" } }, "path": "/nx-api/storybook" diff --git a/docs/generated/packages-metadata.json b/docs/generated/packages-metadata.json index 5d031e1607..ef779f9643 100644 --- a/docs/generated/packages-metadata.json +++ b/docs/generated/packages-metadata.json @@ -2899,6 +2899,15 @@ "originalFilePath": "/packages/storybook/src/generators/migrate-7/schema.json", "path": "storybook/generators/migrate-7", "type": "generator" + }, + { + "description": "Migrate to Storybook version 8.", + "file": "generated/packages/storybook/generators/migrate-8.json", + "hidden": false, + "name": "migrate-8", + "originalFilePath": "/packages/storybook/src/generators/migrate-8/schema.json", + "path": "storybook/generators/migrate-8", + "type": "generator" } ], "githubRoot": "https://github.com/nrwl/nx/blob/master", diff --git a/docs/generated/packages/angular/generators/component-cypress-spec.json b/docs/generated/packages/angular/generators/component-cypress-spec.json index dadc9cd563..acf3d22751 100644 --- a/docs/generated/packages/angular/generators/component-cypress-spec.json +++ b/docs/generated/packages/angular/generators/component-cypress-spec.json @@ -6,7 +6,8 @@ "$id": "NxAngularComponentCypressSpecGenerator", "type": "object", "cli": "nx", - "description": "Creates a Cypress spec for a UI component that has a story.", + "description": "Creates a Storybook Cypress spec for a UI component that has a story.", + "x-deprecated": "Use interactionTests instead. This option will be removed in v20.", "properties": { "projectName": { "type": "string", diff --git a/docs/generated/packages/angular/generators/stories.json b/docs/generated/packages/angular/generators/stories.json index ae6c602065..83000d140f 100644 --- a/docs/generated/packages/angular/generators/stories.json +++ b/docs/generated/packages/angular/generators/stories.json @@ -27,11 +27,13 @@ }, "generateCypressSpecs": { "type": "boolean", - "description": "Specifies whether to automatically generate `*.spec.ts` files in the Cypress e2e app generated by the `cypress-configure` generator." + "description": "Specifies whether to automatically generate `*.spec.ts` files in the Cypress e2e app generated by the `cypress-configure` generator.", + "x-deprecated": "Use interactionTests instead. This option will be removed in v20." }, "cypressProject": { "type": "string", - "description": "The Cypress project to generate the stories under. This is inferred from `name` by default." + "description": "The Cypress project to generate the stories under. This is inferred from `name` by default.", + "x-deprecated": "Use interactionTests instead. This option will be removed in v20." }, "skipFormat": { "description": "Skip formatting files.", diff --git a/docs/generated/packages/react/generators/component-cypress-spec.json b/docs/generated/packages/react/generators/component-cypress-spec.json index 4efc7e1b56..e559e42976 100644 --- a/docs/generated/packages/react/generators/component-cypress-spec.json +++ b/docs/generated/packages/react/generators/component-cypress-spec.json @@ -6,7 +6,8 @@ "cli": "nx", "$id": "NxReactComponentCypressSpec", "title": "Create component Cypress spec", - "description": "Create a Cypress spec for a UI component that has a story.", + "description": "Create a Storybook Cypress spec for a UI component that has a story.", + "x-deprecated": "Use interactionTests instead. This option will be removed in v20.", "type": "object", "properties": { "project": { diff --git a/docs/generated/packages/react/generators/stories.json b/docs/generated/packages/react/generators/stories.json index a0f3ef83ce..a1c0b088b1 100644 --- a/docs/generated/packages/react/generators/stories.json +++ b/docs/generated/packages/react/generators/stories.json @@ -19,11 +19,13 @@ }, "generateCypressSpecs": { "type": "boolean", - "description": "Automatically generate `*.spec.ts` files in the cypress e2e app generated by the cypress-configure generator." + "description": "Automatically generate `*.spec.ts` files in the cypress e2e app generated by the cypress-configure generator.", + "x-deprecated": "Use interactionTests instead. This option will be removed in v20." }, "cypressProject": { "type": "string", - "description": "The Cypress project to generate the stories under. This is inferred from `project` by default." + "description": "The Cypress project to generate the stories under. This is inferred from `project` by default.", + "x-deprecated": "Use interactionTests instead. This option will be removed in v20." }, "interactionTests": { "type": "boolean", diff --git a/docs/generated/packages/remix/generators/storybook-configuration.json b/docs/generated/packages/remix/generators/storybook-configuration.json index c395840685..b1a43449d3 100644 --- a/docs/generated/packages/remix/generators/storybook-configuration.json +++ b/docs/generated/packages/remix/generators/storybook-configuration.json @@ -18,12 +18,18 @@ "x-dropdown": "projects", "x-priority": "important" }, + "interactionTests": { + "type": "boolean", + "description": "Set up Storybook interaction tests.", + "x-prompt": "Do you want to set up Storybook interaction tests?", + "x-priority": "important", + "alias": ["configureTestRunner"], + "default": true + }, "configureCypress": { "type": "boolean", "description": "Run the cypress-configure generator.", - "x-prompt": "Configure a cypress e2e app to run against the storybook instance?", - "default": true, - "x-priority": "important" + "x-deprecated": "Use interactionTests instead. This option will be removed in v20." }, "generateStories": { "type": "boolean", @@ -35,9 +41,7 @@ "generateCypressSpecs": { "type": "boolean", "description": "Automatically generate test files in the Cypress E2E app generated by the `cypress-configure` generator.", - "x-prompt": "Automatically generate test files in the Cypress E2E app generated by the cypress-configure generator?", - "default": true, - "x-priority": "important" + "x-deprecated": "Use interactionTests instead. This option will be removed in v20." }, "configureStaticServe": { "type": "boolean", @@ -48,7 +52,8 @@ }, "cypressDirectory": { "type": "string", - "description": "A directory where the Cypress project will be placed. Placed at the root by default." + "description": "A directory where the Cypress project will be placed. Placed at the root by default.", + "x-deprecated": "Use interactionTests instead. This option will be removed in v20." }, "js": { "type": "boolean", diff --git a/docs/generated/packages/storybook/generators/migrate-8.json b/docs/generated/packages/storybook/generators/migrate-8.json new file mode 100644 index 0000000000..435900d965 --- /dev/null +++ b/docs/generated/packages/storybook/generators/migrate-8.json @@ -0,0 +1,36 @@ +{ + "name": "migrate-8", + "factory": "./src/generators/migrate-8/migrate-8", + "schema": { + "cli": "nx", + "title": "Migrate Storybook to version 8.", + "description": "Migrate Storybook to version 8.", + "$id": "migrate-8", + "type": "object", + "properties": { + "autoAcceptAllPrompts": { + "type": "boolean", + "description": "Say yes to all the prompts from the Storybook CLI migration scripts.", + "default": false + }, + "onlyShowListOfCommands": { + "type": "boolean", + "description": "Only show the steps that you need to follow in order to migrate. This does NOT make any changes to your code.", + "default": false + }, + "noUpgrade": { + "type": "boolean", + "description": "Skip upgrading Storybook packages. Only use this option if you are already on version 8, and you do not want the latest beta.", + "default": false + } + }, + "examplesFile": "---\ntitle: Storybook 8 Migration Generator Examples\ndescription: This page contains examples for the @nx/storybook:migrate-8 generator.\n---\n\nStorybook 8 is a major release that brings a lot of new features and improvements. You can read more about it in the [Storybook 8.0.0 release article](https://storybook.js.org/blog/storybook-8/). Apart from the new features and improvements it introduces, it also brings some breaking changes. You can read more about them in the [Storybook 8 migration docs](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#from-version-7x-to-800) and the [Storybook 8.0.0 migration guide](https://storybook.js.org/docs/react/migration-guide).\n\nYou can now migrate your existing Nx workspace with Storybook configuration to use Storybook version 8. To help you, Nx offers the `@nx/storybook:migrate-8` generator. This generator will help you migrate your existing Storybook setup to version 8.\n\n## How to use it\n\nJust call:\n\n```bash\nnpx nx g @nx/storybook:migrate-8\n```\n\n{% callout type=\"warning\" title=\"Commit your changes\" %}\nIt is advised that you start with a clean git history before running this generator, since it is going to be making lots of changes to your workspace.\n{% /callout %}\n\nYou can run this generator using the above command, without passing any options. This will start the migration process for all your projects that have Storybook configured. The logs will explain what is happening in every step, and the logs are mixed Nx and Storybook CLI logs. During the process you will be prompted by the Storybook CLI to accept the automigration scripts. You can read more about that in the next section.\n\nWhen the generator finishes, you will see a summary of the changes that were made to your workspace, and it will also create a new file, called `storybook-migration-summary.md` at the root of your project, which will contain a list of all the changes that were made to your workspace.\n\n### Accept the automigration prompts\n\nThe Storybook CLI (running through our generator) will prompt you to run some code generators and modifiers.\n\nYou can say `yes` to these prompts, which are usually the following (there may be more or less, depending on your setup,\nand depending on the latest versions of the Storybook CLI - this code is NOT managed by Nx, but by Storybook):\n\n- `mainjsFramework`: It will try to add the `framework` field in your project's `.storybook/main.js|ts` file.\n- `eslintPlugin`: installs the `eslint-plugin-storybook`\n- `newFrameworks`: removes unused dependencies (eg. `@storybook/builder-webpack5`, `@storybook/manager-webpack5`, `@storybook/builder-vite`)\n- `autodocsTrue`: adds `autodocs: true` to your project's `.storybook/main.js|ts` file\n\n### Check the result\n\nOnce the generator finishes, and the Storybook CLI automigration scripts have run, you should check the result. Examples of migrated `.storybook/main.js|ts` files would look like this:\n\n#### Full example for Angular projects\n\nHere is an example of a project-level `.storybook/main.js|ts` file for an Angular project that has been migrated to Storybook version 8:\n\n```ts {% fileName=\"apps/my-angular-app/.storybook/main.js\" %}\nconst config = {\n stories: ['../src/app/**/*.@(mdx|stories.@(js|jsx|ts|tsx)'],\n addons: ['@storybook/addon-essentials'],\n framework: {\n name: '@storybook/angular',\n options: {},\n },\n};\n\nexport default config;\n```\n\n#### Full example for React projects with Vite\n\nHere is an example of a project-level `.storybook/main.js|ts` file for a React project using Vite that has been migrated to Storybook version 8:\n\n```ts {% fileName=\"apps/my-react-app/.storybook/main.js\" %}\nconst config = {\n stories: ['../src/app/**/*.@(mdx|stories.@(js|jsx|ts|tsx)'],\n addons: ['@storybook/addon-essentials'],\n framework: {\n name: '@storybook/react-vite',\n options: {\n builder: {\n viteConfigPath: 'apps/rv1/vite.config.ts',\n },\n },\n },\n};\n\nexport default config;\n```\n\n### Make sure that all works by running Storybook\n\nYou can now use Storybook 8! 🎉\n\n```bash\nnpx nx build-storybook PROJECT_NAME\n```\n\nand\n\n```bash\nnpx nx storybook PROJECT_NAME\n```\n\n## Run the generator by automatically accepting the Storybook CLI prompts\n\nYou can run the generator with the `--autoAcceptAllPrompts` flag, which will automatically accept all the Storybook CLI prompts. This is useful if you want to run the generator in a CI environment, or if you want to run the generator in a script. Or if you are sure that you want to accept all the prompts!\n\n```bash\nnpx nx g @nx/storybook:migrate-8 --autoAcceptAllPrompts\n```\n\nThe Storybook CLI may still ask you about some things, but mostly it should just run the whole migration suite uninterrupted.\n\n## Run the migration manually\n\nNx gives you the ability to run all the migration steps one by one, manually, but still with the help of our migrator. To help you out with the commands that you need to run, Nx will print out the instructions if you run the generator with the `--onlyShowListOfCommands` flag, like this:\n\n```bash\nnpx nx g @nx/storybook:migrate-8 --onlyShowListOfCommands\n```\n\nEssentially, the way to run the migration manually is the following:\n\n1. Call the Nx generator to show you the list of commands:\n `npx nx g @nx/storybook:migrate-8 --onlyShowListOfCommands`\n2. Call the Storybook upgrade script:\n `npx storybook@latest upgrade`\n3. Call the Storybook automigrate scripts for each one of the projects using Storybook (the `@nx/storybook:migrate-8` will give you the list of all the commands)\n\n## Report any issues and bugs\n\nPlease report any issues and bugs you find [on the Nx GitHub page](https://github.com/nrwl/nx/issues/new/choose) or on the [Storybook GitHub page](https://github.com/storybookjs/storybook/issues/new/choose).\n", + "presets": [] + }, + "description": "Migrate to Storybook version 8.", + "hidden": false, + "implementation": "/packages/storybook/src/generators/migrate-8/migrate-8.ts", + "aliases": [], + "path": "/packages/storybook/src/generators/migrate-8/schema.json", + "type": "generator" +} diff --git a/docs/generated/packages/vue/generators/stories.json b/docs/generated/packages/vue/generators/stories.json index 4592237573..35d5ab5b0e 100644 --- a/docs/generated/packages/vue/generators/stories.json +++ b/docs/generated/packages/vue/generators/stories.json @@ -19,11 +19,13 @@ }, "generateCypressSpecs": { "type": "boolean", - "description": "Automatically generate `*.spec.ts` files in the cypress e2e app generated by the cypress-configure generator." + "description": "Automatically generate `*.spec.ts` files in the cypress e2e app generated by the cypress-configure generator.", + "x-deprecated": "Use interactionTests instead. This option will be removed in v20." }, "cypressProject": { "type": "string", - "description": "The Cypress project to generate the stories under. This is inferred from `project` by default." + "description": "The Cypress project to generate the stories under. This is inferred from `project` by default.", + "x-deprecated": "Use interactionTests instead. This option will be removed in v20." }, "interactionTests": { "type": "boolean", diff --git a/docs/shared/reference/sitemap.md b/docs/shared/reference/sitemap.md index e6a9853063..1e720388e7 100644 --- a/docs/shared/reference/sitemap.md +++ b/docs/shared/reference/sitemap.md @@ -675,6 +675,7 @@ - [cypress-project](/nx-api/storybook/generators/cypress-project) - [convert-to-inferred](/nx-api/storybook/generators/convert-to-inferred) - [migrate-7](/nx-api/storybook/generators/migrate-7) + - [migrate-8](/nx-api/storybook/generators/migrate-8) - [tao](/nx-api/tao) - [vite](/nx-api/vite) - [documents](/nx-api/vite/documents) diff --git a/graph/client/.storybook/main.js b/graph/client/.storybook/main.js index b32896b617..5777c521ad 100644 --- a/graph/client/.storybook/main.js +++ b/graph/client/.storybook/main.js @@ -9,7 +9,5 @@ module.exports = { name: '@storybook/react-webpack5', options: {}, }, - docs: { - autodocs: true, - }, + docs: {}, }; diff --git a/graph/client/.storybook/preview.js b/graph/client/.storybook/preview.js index db15e07bb7..1db5bb8944 100644 --- a/graph/client/.storybook/preview.js +++ b/graph/client/.storybook/preview.js @@ -22,3 +22,4 @@ export const decorators = [ ); }, ]; +export const tags = ['autodocs']; diff --git a/graph/ui-code-block/.storybook/main.ts b/graph/ui-code-block/.storybook/main.ts index dfca182122..075ebe3211 100644 --- a/graph/ui-code-block/.storybook/main.ts +++ b/graph/ui-code-block/.storybook/main.ts @@ -7,6 +7,7 @@ import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; const config: StorybookConfig = { stories: ['../src/lib/**/*.stories.@(js|jsx|ts|tsx|mdx)'], addons: ['@storybook/addon-essentials', '@storybook/addon-interactions'], + framework: { name: '@storybook/react-vite', options: {}, diff --git a/graph/ui-components/.storybook/main.js b/graph/ui-components/.storybook/main.js index 1c6781d9bd..e443e1d6da 100644 --- a/graph/ui-components/.storybook/main.js +++ b/graph/ui-components/.storybook/main.js @@ -1,11 +1,9 @@ module.exports = { - stories: ['../src/lib/**/*.stories.@(mdx|js|jsx|ts|tsx)'], + stories: ['../src/lib/**/*.@(mdx|stories.@(js|jsx|ts|tsx))'], addons: ['@storybook/addon-essentials', '@nx/react/plugins/storybook'], framework: { name: '@storybook/react-webpack5', options: {}, }, - docs: { - autodocs: true, - }, + docs: {}, }; diff --git a/graph/ui-components/.storybook/preview.js b/graph/ui-components/.storybook/preview.js index 71009fbf6b..6458fd2b53 100644 --- a/graph/ui-components/.storybook/preview.js +++ b/graph/ui-components/.storybook/preview.js @@ -1,3 +1,4 @@ import 'graph/client/.storybook/tailwind-imports.css'; export const parameters = {}; +export const tags = ['autodocs']; diff --git a/graph/ui-graph/.storybook/main.js b/graph/ui-graph/.storybook/main.js index 1c6781d9bd..98b74a9cb2 100644 --- a/graph/ui-graph/.storybook/main.js +++ b/graph/ui-graph/.storybook/main.js @@ -5,7 +5,5 @@ module.exports = { name: '@storybook/react-webpack5', options: {}, }, - docs: { - autodocs: true, - }, + docs: {}, }; diff --git a/graph/ui-graph/.storybook/preview.js b/graph/ui-graph/.storybook/preview.js index f6349dd6ed..245891b1b2 100644 --- a/graph/ui-graph/.storybook/preview.js +++ b/graph/ui-graph/.storybook/preview.js @@ -1,3 +1,4 @@ import './tailwind-imports.css'; export const parameters = {}; +export const tags = ['autodocs']; diff --git a/graph/ui-project-details/.storybook/main.ts b/graph/ui-project-details/.storybook/main.ts index 1556e24dbe..fc7261d06c 100644 --- a/graph/ui-project-details/.storybook/main.ts +++ b/graph/ui-project-details/.storybook/main.ts @@ -8,6 +8,7 @@ import { mergeConfig } from 'vite'; const config: StorybookConfig = { stories: ['../src/lib/**/*.stories.@(js|jsx|ts|tsx|mdx)'], addons: ['@storybook/addon-essentials'], + framework: { name: '@storybook/react-vite', options: {}, @@ -17,6 +18,8 @@ const config: StorybookConfig = { mergeConfig(config, { plugins: [nxViteTsPaths()], }), + + docs: {}, }; export default config; diff --git a/graph/ui-project-details/.storybook/preview.ts b/graph/ui-project-details/.storybook/preview.ts index 195b052493..98756a1850 100644 --- a/graph/ui-project-details/.storybook/preview.ts +++ b/graph/ui-project-details/.storybook/preview.ts @@ -1 +1,2 @@ import './tailwind.css'; +export const tags = ['autodocs']; diff --git a/graph/ui-theme/.storybook/main.ts b/graph/ui-theme/.storybook/main.ts index 8dcaad0fd4..b30df673d5 100644 --- a/graph/ui-theme/.storybook/main.ts +++ b/graph/ui-theme/.storybook/main.ts @@ -7,9 +7,7 @@ const config: StorybookConfig = { name: '@storybook/react-webpack5', options: {}, }, - docs: { - autodocs: true, - }, + docs: {}, }; export default config; diff --git a/graph/ui-theme/.storybook/preview.ts b/graph/ui-theme/.storybook/preview.ts index 8c8889d1a4..a7e6fafa19 100644 --- a/graph/ui-theme/.storybook/preview.ts +++ b/graph/ui-theme/.storybook/preview.ts @@ -1 +1,2 @@ import './tailwind-imports.css'; +export const tags = ['autodocs']; diff --git a/graph/ui-tooltips/.storybook/main.js b/graph/ui-tooltips/.storybook/main.js index 1c6781d9bd..98b74a9cb2 100644 --- a/graph/ui-tooltips/.storybook/main.js +++ b/graph/ui-tooltips/.storybook/main.js @@ -5,7 +5,5 @@ module.exports = { name: '@storybook/react-webpack5', options: {}, }, - docs: { - autodocs: true, - }, + docs: {}, }; diff --git a/graph/ui-tooltips/.storybook/preview.js b/graph/ui-tooltips/.storybook/preview.js index 8c8889d1a4..a7e6fafa19 100644 --- a/graph/ui-tooltips/.storybook/preview.js +++ b/graph/ui-tooltips/.storybook/preview.js @@ -1 +1,2 @@ import './tailwind-imports.css'; +export const tags = ['autodocs']; diff --git a/package.json b/package.json index 33b948acdf..2dee334502 100644 --- a/package.json +++ b/package.json @@ -96,12 +96,13 @@ "@rollup/plugin-node-resolve": "^15.2.3", "@rollup/plugin-url": "^8.0.2", "@schematics/angular": "~18.1.0", - "@storybook/addon-essentials": "7.5.3", - "@storybook/core-server": "7.5.3", - "@storybook/react": "7.5.3", - "@storybook/react-vite": "7.5.3", - "@storybook/react-webpack5": "7.5.3", - "@storybook/types": "^7.1.1", + "@storybook/addon-essentials": "^8.2.8", + "@storybook/addon-interactions": "^8.2.8", + "@storybook/core-server": "^8.2.8", + "@storybook/react": "^8.2.8", + "@storybook/react-vite": "^8.2.8", + "@storybook/react-webpack5": "^8.2.8", + "@storybook/types": "^8.2.8", "@supabase/supabase-js": "^2.26.0", "@svgr/rollup": "^8.1.0", "@svgr/webpack": "^8.0.1", @@ -179,7 +180,7 @@ "eslint-plugin-playwright": "^0.15.3", "eslint-plugin-react": "7.32.2", "eslint-plugin-react-hooks": "4.6.0", - "eslint-plugin-storybook": "^0.6.12", + "eslint-plugin-storybook": "^0.8.0", "express": "^4.19.2", "fast-xml-parser": "^4.2.7", "figures": "3.2.0", @@ -270,7 +271,8 @@ "source-map": "0.7.3", "source-map-loader": "^5.0.0", "source-map-support": "0.5.19", - "storybook-dark-mode": "^3.0.0", + "storybook": "^8.2.8", + "storybook-dark-mode": "^4.0.2", "style-loader": "^3.3.0", "tar-stream": "~2.2.0", "tcp-port-used": "^1.0.2", @@ -381,10 +383,10 @@ "documentation": { "cache": true, "inputs": [ - "{workspaceRoot}/packages/**", + "{workspaceRoot}/packages/**", "{workspaceRoot}/docs/**", "{workspaceRoot}/scripts/documentation/**", - "!{workspaceRoot}/docs/generated", + "!{workspaceRoot}/docs/generated", "!{workspaceRoot}/packages/**/*.spec.ts", "!{workspaceRoot}/packages/**/project.json", "!{workspaceRoot}/packages/**/tsconfig.json", @@ -394,7 +396,9 @@ "!{workspaceRoot}/packages/**/.eslintrc.json" ] }, - "outputs": ["{workspaceRoot}/docs/generated"] + "outputs": [ + "{workspaceRoot}/docs/generated" + ] } }, "packageManager": "pnpm@8.15.7" diff --git a/packages/angular/src/generators/component-cypress-spec/schema.json b/packages/angular/src/generators/component-cypress-spec/schema.json index 16b81139ba..c617e969a2 100644 --- a/packages/angular/src/generators/component-cypress-spec/schema.json +++ b/packages/angular/src/generators/component-cypress-spec/schema.json @@ -3,7 +3,8 @@ "$id": "NxAngularComponentCypressSpecGenerator", "type": "object", "cli": "nx", - "description": "Creates a Cypress spec for a UI component that has a story.", + "description": "Creates a Storybook Cypress spec for a UI component that has a story.", + "x-deprecated": "Use interactionTests instead. This option will be removed in v20.", "properties": { "projectName": { "type": "string", diff --git a/packages/angular/src/generators/stories/schema.json b/packages/angular/src/generators/stories/schema.json index 835dfdbc15..4cd70c5372 100644 --- a/packages/angular/src/generators/stories/schema.json +++ b/packages/angular/src/generators/stories/schema.json @@ -27,11 +27,13 @@ }, "generateCypressSpecs": { "type": "boolean", - "description": "Specifies whether to automatically generate `*.spec.ts` files in the Cypress e2e app generated by the `cypress-configure` generator." + "description": "Specifies whether to automatically generate `*.spec.ts` files in the Cypress e2e app generated by the `cypress-configure` generator.", + "x-deprecated": "Use interactionTests instead. This option will be removed in v20." }, "cypressProject": { "type": "string", - "description": "The Cypress project to generate the stories under. This is inferred from `name` by default." + "description": "The Cypress project to generate the stories under. This is inferred from `name` by default.", + "x-deprecated": "Use interactionTests instead. This option will be removed in v20." }, "skipFormat": { "description": "Skip formatting files.", diff --git a/packages/angular/src/generators/storybook-configuration/__snapshots__/storybook-configuration.spec.ts.snap b/packages/angular/src/generators/storybook-configuration/__snapshots__/storybook-configuration.spec.ts.snap index 77365688d9..da7b19f3d1 100644 --- a/packages/angular/src/generators/storybook-configuration/__snapshots__/storybook-configuration.spec.ts.snap +++ b/packages/angular/src/generators/storybook-configuration/__snapshots__/storybook-configuration.spec.ts.snap @@ -7,7 +7,7 @@ exports[`StorybookConfiguration generator should configure storybook to use webp const config: StorybookConfig = { stories: [ - '../**/*.stories.@(js|jsx|ts|tsx|mdx)' ], + '../**/*.@(mdx|stories.@(js|jsx|ts|tsx))' ], addons: ['@storybook/addon-essentials' , '@storybook/addon-interactions' ], framework: { name: '@storybook/angular', diff --git a/packages/nuxt/migrations.json b/packages/nuxt/migrations.json index e258124ba8..856d19f30f 100644 --- a/packages/nuxt/migrations.json +++ b/packages/nuxt/migrations.json @@ -1,5 +1,12 @@ { - "generators": {}, + "generators": { + "add-vue-to-storybook-config": { + "cli": "nx", + "version": "19.6.0-beta.0", + "description": "Add vue() plugin to viteFinal in Storybook config files when it is missing.", + "implementation": "./src/migrations/update-19-6-0/add-vue-plugin-to-storybook-config" + } + }, "packageJsonUpdates": { "18.2.0": { "version": "18.2.0-beta.0", diff --git a/packages/nuxt/package.json b/packages/nuxt/package.json index f48ff90091..bc92f809df 100644 --- a/packages/nuxt/package.json +++ b/packages/nuxt/package.json @@ -35,7 +35,8 @@ "@nx/js": "file:../js", "@nx/eslint": "file:../eslint", "@nx/vue": "file:../vue", - "@nx/vite": "file:../vite" + "@nx/vite": "file:../vite", + "@phenomnomnominal/tsquery": "~5.0.1" }, "peerDependencies": {}, "publishConfig": { diff --git a/packages/nuxt/src/generators/storybook-configuration/__snapshots__/configuration.spec.ts.snap b/packages/nuxt/src/generators/storybook-configuration/__snapshots__/configuration.spec.ts.snap index 9ed86adc62..c4fc185341 100644 --- a/packages/nuxt/src/generators/storybook-configuration/__snapshots__/configuration.spec.ts.snap +++ b/packages/nuxt/src/generators/storybook-configuration/__snapshots__/configuration.spec.ts.snap @@ -5,9 +5,10 @@ exports[`nuxt:storybook-configuration should configure with vue3 framework and s import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; import { mergeConfig } from 'vite'; +import vue from '@vitejs/plugin-vue'; const config: StorybookConfig = { - stories: ['../src/**/*.stories.@(js|jsx|ts|tsx|mdx)'], + stories: ['../src/**/*.@(mdx|stories.@(js|jsx|ts|tsx))'], addons: ['@storybook/addon-essentials', '@storybook/addon-interactions'], framework: { name: '@storybook/vue3-vite', @@ -16,7 +17,7 @@ const config: StorybookConfig = { viteFinal: async (config) => mergeConfig(config, { - plugins: [nxViteTsPaths()], + plugins: [vue(), nxViteTsPaths()], }), }; diff --git a/packages/nuxt/src/generators/storybook-configuration/configuration.ts b/packages/nuxt/src/generators/storybook-configuration/configuration.ts index bd5fb5532f..46b7716d83 100644 --- a/packages/nuxt/src/generators/storybook-configuration/configuration.ts +++ b/packages/nuxt/src/generators/storybook-configuration/configuration.ts @@ -29,7 +29,7 @@ export async function storybookConfigurationGenerator( joinPathFragments( root, '.storybook', - 'preview.' + options.tsConfiguration ? 'ts' : 'js' + 'preview.' + (options.tsConfiguration ? 'ts' : 'js') ), `import '../src/assets/css/styles.css';` ); diff --git a/packages/nuxt/src/migrations/update-19-6-0/add-vue-plugin-to-storybook-config.spec.ts b/packages/nuxt/src/migrations/update-19-6-0/add-vue-plugin-to-storybook-config.spec.ts new file mode 100644 index 0000000000..49f6d9ebf5 --- /dev/null +++ b/packages/nuxt/src/migrations/update-19-6-0/add-vue-plugin-to-storybook-config.spec.ts @@ -0,0 +1,63 @@ +import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing'; +import addVuePluginToStorybookConfig from './add-vue-plugin-to-storybook-config'; +describe('addVuePluginToStorybookConfig', () => { + it('should update the storybook config to add the vue() plugin when the project is nuxt', async () => { + // ARRANGE + const tree = createTreeWithEmptyWorkspace(); + tree.write( + 'apps/nuxt/.storybook/main.ts', + `import type { StorybookConfig } from '@storybook/vue3-vite'; + +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; +import { mergeConfig } from 'vite'; + +const config: StorybookConfig = { + stories: ['../src/**/*.stories.@(js|jsx|ts|tsx|mdx)'], + addons: ['@storybook/addon-essentials'], + framework: { + name: '@storybook/vue3-vite', + options: {}, + }, + + viteFinal: async (config) => + mergeConfig(config, { + plugins: [nxViteTsPaths()], + }), +}; + +export default config;` + ); + + tree.write('apps/nuxt/nuxt.config.ts', ''); + + // ACT + await addVuePluginToStorybookConfig(tree); + + // ASSERT + expect(tree.read('apps/nuxt/.storybook/main.ts', 'utf-8')) + .toMatchInlineSnapshot(` + "import vue from '@vitejs/plugin-vue'; + import type { StorybookConfig } from '@storybook/vue3-vite'; + + import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; + import { mergeConfig } from 'vite'; + + const config: StorybookConfig = { + stories: ['../src/**/*.stories.@(js|jsx|ts|tsx|mdx)'], + addons: ['@storybook/addon-essentials'], + framework: { + name: '@storybook/vue3-vite', + options: {}, + }, + + viteFinal: async (config) => + mergeConfig(config, { + plugins: [vue(), nxViteTsPaths()], + }), + }; + + export default config; + " + `); + }); +}); diff --git a/packages/nuxt/src/migrations/update-19-6-0/add-vue-plugin-to-storybook-config.ts b/packages/nuxt/src/migrations/update-19-6-0/add-vue-plugin-to-storybook-config.ts new file mode 100644 index 0000000000..c68fc42c37 --- /dev/null +++ b/packages/nuxt/src/migrations/update-19-6-0/add-vue-plugin-to-storybook-config.ts @@ -0,0 +1,71 @@ +import { + formatFiles, + joinPathFragments, + type Tree, + visitNotIgnoredFiles, +} from '@nx/devkit'; +import { dirname } from 'path'; +import { tsquery } from '@phenomnomnominal/tsquery'; + +export default async function (tree: Tree) { + visitNotIgnoredFiles(tree, '', (path) => { + if ( + !path.endsWith('.storybook/main.ts') && + !path.endsWith('.storybook/main.js') + ) { + return; + } + const projectRoot = dirname(dirname(path)); + const possibleNuxtConfigPaths = [ + joinPathFragments(projectRoot, 'nuxt.config.ts'), + joinPathFragments(projectRoot, 'nuxt.config.js'), + ]; + if (!possibleNuxtConfigPaths.some((p) => tree.exists(p))) { + return; + } + const pathToStorybookConfig = path; + + const storybookConfigContents = tree.read(pathToStorybookConfig, 'utf-8'); + if ( + !storybookConfigContents.includes('viteFinal') && + !storybookConfigContents.includes('@vitejs/plugin-vue') + ) { + return; + } + + const VITE_FINAL_PLUGINS_SELECTOR = + 'PropertyAssignment:has(Identifier[name=viteFinal]) PropertyAssignment:has(Identifier[name=plugins]) > ArrayLiteralExpression'; + const ast = tsquery.ast(storybookConfigContents); + const nodes = tsquery(ast, VITE_FINAL_PLUGINS_SELECTOR, { + visitAllChildren: true, + }); + if (!nodes.length) { + // This would be an invalid config modified by the user already if it does work + // Therefore, do not touch their config file + return; + } + + const pluginsValueNode = nodes[0]; + if (pluginsValueNode.getText().includes('vue()')) { + // The plugin has already been registered, do nothing + return; + } + + const updatedPluginsValue = `[vue(), ${pluginsValueNode + .getText() + .slice(1)}`; + + let newStorybookConfigContents = `${storybookConfigContents.slice( + 0, + pluginsValueNode.getStart() + )}${updatedPluginsValue}${storybookConfigContents.slice( + pluginsValueNode.getEnd() + )}`; + newStorybookConfigContents = `import vue from '@vitejs/plugin-vue'; + ${newStorybookConfigContents}`; + + tree.write(pathToStorybookConfig, newStorybookConfigContents); + }); + + await formatFiles(tree); +} diff --git a/packages/react/src/generators/component-cypress-spec/schema.json b/packages/react/src/generators/component-cypress-spec/schema.json index 24cb93fee8..6ca46559e0 100644 --- a/packages/react/src/generators/component-cypress-spec/schema.json +++ b/packages/react/src/generators/component-cypress-spec/schema.json @@ -3,7 +3,8 @@ "cli": "nx", "$id": "NxReactComponentCypressSpec", "title": "Create component Cypress spec", - "description": "Create a Cypress spec for a UI component that has a story.", + "description": "Create a Storybook Cypress spec for a UI component that has a story.", + "x-deprecated": "Use interactionTests instead. This option will be removed in v20.", "type": "object", "properties": { "project": { diff --git a/packages/react/src/generators/stories/schema.json b/packages/react/src/generators/stories/schema.json index dd26ad2f3b..96de2cea10 100644 --- a/packages/react/src/generators/stories/schema.json +++ b/packages/react/src/generators/stories/schema.json @@ -19,11 +19,13 @@ }, "generateCypressSpecs": { "type": "boolean", - "description": "Automatically generate `*.spec.ts` files in the cypress e2e app generated by the cypress-configure generator." + "description": "Automatically generate `*.spec.ts` files in the cypress e2e app generated by the cypress-configure generator.", + "x-deprecated": "Use interactionTests instead. This option will be removed in v20." }, "cypressProject": { "type": "string", - "description": "The Cypress project to generate the stories under. This is inferred from `project` by default." + "description": "The Cypress project to generate the stories under. This is inferred from `project` by default.", + "x-deprecated": "Use interactionTests instead. This option will be removed in v20." }, "interactionTests": { "type": "boolean", diff --git a/packages/react/src/generators/storybook-configuration/__snapshots__/configuration.spec.ts.snap b/packages/react/src/generators/storybook-configuration/__snapshots__/configuration.spec.ts.snap index 2fb26975d9..cced6f2050 100644 --- a/packages/react/src/generators/storybook-configuration/__snapshots__/configuration.spec.ts.snap +++ b/packages/react/src/generators/storybook-configuration/__snapshots__/configuration.spec.ts.snap @@ -5,9 +5,10 @@ exports[`react:storybook-configuration should configure everything and install c import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; import { mergeConfig } from 'vite'; +import react from '@vitejs/plugin-react'; const config: StorybookConfig = { - stories: ['../src/lib/**/*.stories.@(js|jsx|ts|tsx|mdx)'], + stories: ['../src/lib/**/*.@(mdx|stories.@(js|jsx|ts|tsx))'], addons: ['@storybook/addon-essentials', '@storybook/addon-interactions'], framework: { name: '@storybook/react-vite', @@ -16,7 +17,7 @@ const config: StorybookConfig = { viteFinal: async (config) => mergeConfig(config, { - plugins: [nxViteTsPaths()], + plugins: [react(), nxViteTsPaths()], }), }; diff --git a/packages/remix/src/generators/storybook-configuration/__snapshots__/storybook-configuration.impl.spec.ts.snap b/packages/remix/src/generators/storybook-configuration/__snapshots__/storybook-configuration.impl.spec.ts.snap index 797678bd89..6e76dbc8e8 100644 --- a/packages/remix/src/generators/storybook-configuration/__snapshots__/storybook-configuration.impl.spec.ts.snap +++ b/packages/remix/src/generators/storybook-configuration/__snapshots__/storybook-configuration.impl.spec.ts.snap @@ -23,7 +23,7 @@ exports[`Storybook Configuration it should create a storybook configuration and "import type { StorybookConfig } from '@storybook/react-vite'; const config: StorybookConfig = { - stories: ['../src/lib/**/*.stories.@(js|jsx|ts|tsx|mdx)'], + stories: ['../src/lib/**/*.@(mdx|stories.@(js|jsx|ts|tsx))'], addons: ['@storybook/addon-essentials', '@storybook/addon-interactions'], framework: { name: '@storybook/react-vite', @@ -66,7 +66,7 @@ exports[`Storybook Configuration it should create a storybook configuration and "import type { StorybookConfig } from '@storybook/react-vite'; const config: StorybookConfig = { - stories: ['../src/lib/**/*.stories.@(js|jsx|ts|tsx|mdx)'], + stories: ['../src/lib/**/*.@(mdx|stories.@(js|jsx|ts|tsx))'], addons: ['@storybook/addon-essentials', '@storybook/addon-interactions'], framework: { name: '@storybook/react-vite', @@ -122,7 +122,7 @@ exports[`Storybook Configuration it should create a storybook configuration and "import type { StorybookConfig } from '@storybook/react-vite'; const config: StorybookConfig = { - stories: ['../src/lib/**/*.stories.@(js|jsx|ts|tsx|mdx)'], + stories: ['../src/lib/**/*.@(mdx|stories.@(js|jsx|ts|tsx))'], addons: ['@storybook/addon-essentials', '@storybook/addon-interactions'], framework: { name: '@storybook/react-vite', diff --git a/packages/remix/src/generators/storybook-configuration/schema.d.ts b/packages/remix/src/generators/storybook-configuration/schema.d.ts index ac15558def..0dece82e12 100644 --- a/packages/remix/src/generators/storybook-configuration/schema.d.ts +++ b/packages/remix/src/generators/storybook-configuration/schema.d.ts @@ -2,6 +2,7 @@ import { Linter } from '@nx/eslint'; export interface StorybookConfigurationSchema { project: string; + interactionTests?: boolean; configureCypress: boolean; generateStories?: boolean; generateCypressSpecs?: boolean; diff --git a/packages/remix/src/generators/storybook-configuration/schema.json b/packages/remix/src/generators/storybook-configuration/schema.json index e9b26c00da..d8df62eb51 100644 --- a/packages/remix/src/generators/storybook-configuration/schema.json +++ b/packages/remix/src/generators/storybook-configuration/schema.json @@ -18,12 +18,18 @@ "x-dropdown": "projects", "x-priority": "important" }, + "interactionTests": { + "type": "boolean", + "description": "Set up Storybook interaction tests.", + "x-prompt": "Do you want to set up Storybook interaction tests?", + "x-priority": "important", + "alias": ["configureTestRunner"], + "default": true + }, "configureCypress": { "type": "boolean", "description": "Run the cypress-configure generator.", - "x-prompt": "Configure a cypress e2e app to run against the storybook instance?", - "default": true, - "x-priority": "important" + "x-deprecated": "Use interactionTests instead. This option will be removed in v20." }, "generateStories": { "type": "boolean", @@ -35,9 +41,7 @@ "generateCypressSpecs": { "type": "boolean", "description": "Automatically generate test files in the Cypress E2E app generated by the `cypress-configure` generator.", - "x-prompt": "Automatically generate test files in the Cypress E2E app generated by the cypress-configure generator?", - "default": true, - "x-priority": "important" + "x-deprecated": "Use interactionTests instead. This option will be removed in v20." }, "configureStaticServe": { "type": "boolean", @@ -48,7 +52,8 @@ }, "cypressDirectory": { "type": "string", - "description": "A directory where the Cypress project will be placed. Placed at the root by default." + "description": "A directory where the Cypress project will be placed. Placed at the root by default.", + "x-deprecated": "Use interactionTests instead. This option will be removed in v20." }, "js": { "type": "boolean", diff --git a/packages/storybook/docs/migrate-8-generator-examples.md b/packages/storybook/docs/migrate-8-generator-examples.md new file mode 100644 index 0000000000..33085db997 --- /dev/null +++ b/packages/storybook/docs/migrate-8-generator-examples.md @@ -0,0 +1,122 @@ +--- +title: Storybook 8 Migration Generator Examples +description: This page contains examples for the @nx/storybook:migrate-8 generator. +--- + +Storybook 8 is a major release that brings a lot of new features and improvements. You can read more about it in the [Storybook 8.0.0 release article](https://storybook.js.org/blog/storybook-8/). Apart from the new features and improvements it introduces, it also brings some breaking changes. You can read more about them in the [Storybook 8 migration docs](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#from-version-7x-to-800) and the [Storybook 8.0.0 migration guide](https://storybook.js.org/docs/react/migration-guide). + +You can now migrate your existing Nx workspace with Storybook configuration to use Storybook version 8. To help you, Nx offers the `@nx/storybook:migrate-8` generator. This generator will help you migrate your existing Storybook setup to version 8. + +## How to use it + +Just call: + +```bash +npx nx g @nx/storybook:migrate-8 +``` + +{% callout type="warning" title="Commit your changes" %} +It is advised that you start with a clean git history before running this generator, since it is going to be making lots of changes to your workspace. +{% /callout %} + +You can run this generator using the above command, without passing any options. This will start the migration process for all your projects that have Storybook configured. The logs will explain what is happening in every step, and the logs are mixed Nx and Storybook CLI logs. During the process you will be prompted by the Storybook CLI to accept the automigration scripts. You can read more about that in the next section. + +When the generator finishes, you will see a summary of the changes that were made to your workspace, and it will also create a new file, called `storybook-migration-summary.md` at the root of your project, which will contain a list of all the changes that were made to your workspace. + +### Accept the automigration prompts + +The Storybook CLI (running through our generator) will prompt you to run some code generators and modifiers. + +You can say `yes` to these prompts, which are usually the following (there may be more or less, depending on your setup, +and depending on the latest versions of the Storybook CLI - this code is NOT managed by Nx, but by Storybook): + +- `mainjsFramework`: It will try to add the `framework` field in your project's `.storybook/main.js|ts` file. +- `eslintPlugin`: installs the `eslint-plugin-storybook` +- `newFrameworks`: removes unused dependencies (eg. `@storybook/builder-webpack5`, `@storybook/manager-webpack5`, `@storybook/builder-vite`) +- `autodocsTrue`: adds `autodocs: true` to your project's `.storybook/main.js|ts` file + +### Check the result + +Once the generator finishes, and the Storybook CLI automigration scripts have run, you should check the result. Examples of migrated `.storybook/main.js|ts` files would look like this: + +#### Full example for Angular projects + +Here is an example of a project-level `.storybook/main.js|ts` file for an Angular project that has been migrated to Storybook version 8: + +```ts {% fileName="apps/my-angular-app/.storybook/main.js" %} +const config = { + stories: ['../src/app/**/*.@(mdx|stories.@(js|jsx|ts|tsx)'], + addons: ['@storybook/addon-essentials'], + framework: { + name: '@storybook/angular', + options: {}, + }, +}; + +export default config; +``` + +#### Full example for React projects with Vite + +Here is an example of a project-level `.storybook/main.js|ts` file for a React project using Vite that has been migrated to Storybook version 8: + +```ts {% fileName="apps/my-react-app/.storybook/main.js" %} +const config = { + stories: ['../src/app/**/*.@(mdx|stories.@(js|jsx|ts|tsx)'], + addons: ['@storybook/addon-essentials'], + framework: { + name: '@storybook/react-vite', + options: { + builder: { + viteConfigPath: 'apps/rv1/vite.config.ts', + }, + }, + }, +}; + +export default config; +``` + +### Make sure that all works by running Storybook + +You can now use Storybook 8! 🎉 + +```bash +npx nx build-storybook PROJECT_NAME +``` + +and + +```bash +npx nx storybook PROJECT_NAME +``` + +## Run the generator by automatically accepting the Storybook CLI prompts + +You can run the generator with the `--autoAcceptAllPrompts` flag, which will automatically accept all the Storybook CLI prompts. This is useful if you want to run the generator in a CI environment, or if you want to run the generator in a script. Or if you are sure that you want to accept all the prompts! + +```bash +npx nx g @nx/storybook:migrate-8 --autoAcceptAllPrompts +``` + +The Storybook CLI may still ask you about some things, but mostly it should just run the whole migration suite uninterrupted. + +## Run the migration manually + +Nx gives you the ability to run all the migration steps one by one, manually, but still with the help of our migrator. To help you out with the commands that you need to run, Nx will print out the instructions if you run the generator with the `--onlyShowListOfCommands` flag, like this: + +```bash +npx nx g @nx/storybook:migrate-8 --onlyShowListOfCommands +``` + +Essentially, the way to run the migration manually is the following: + +1. Call the Nx generator to show you the list of commands: + `npx nx g @nx/storybook:migrate-8 --onlyShowListOfCommands` +2. Call the Storybook upgrade script: + `npx storybook@latest upgrade` +3. Call the Storybook automigrate scripts for each one of the projects using Storybook (the `@nx/storybook:migrate-8` will give you the list of all the commands) + +## Report any issues and bugs + +Please report any issues and bugs you find [on the Nx GitHub page](https://github.com/nrwl/nx/issues/new/choose) or on the [Storybook GitHub page](https://github.com/storybookjs/storybook/issues/new/choose). diff --git a/packages/storybook/generators.json b/packages/storybook/generators.json index 8d3dd26df2..1ce60c0958 100644 --- a/packages/storybook/generators.json +++ b/packages/storybook/generators.json @@ -32,6 +32,12 @@ "schema": "./src/generators/migrate-7/schema.json", "description": "Migrate to Storybook version 7.", "hidden": false + }, + "migrate-8": { + "factory": "./src/generators/migrate-8/migrate-8", + "schema": "./src/generators/migrate-8/schema.json", + "description": "Migrate to Storybook version 8.", + "hidden": false } } } diff --git a/packages/storybook/migrations.json b/packages/storybook/migrations.json index e27a9fcca2..fd69b51476 100644 --- a/packages/storybook/migrations.json +++ b/packages/storybook/migrations.json @@ -23,6 +23,12 @@ "version": "16.5.0-beta.0", "description": "Move .storybook/tsconfig.json to tsconfig.storybook.json for non-Angular projects.", "factory": "./src/migrations/update-16-5-0/move-storybook-tsconfig" + }, + "update-19-6-0-add-nx-packages": { + "cli": "nx", + "version": "19.6.0-beta.0", + "description": "Update workspace to use Storybook v8", + "implementation": "./src/migrations/update-19-6-0/update-sb-8" } }, "packageJsonUpdates": { @@ -861,6 +867,35 @@ "alwaysAddToPackageJson": false } } + }, + "19.6.0": { + "version": "19.6.0-beta.1", + "packages": { + "@storybook/core-server": { + "version": "^8.2.8", + "alwaysAddToPackageJson": false + }, + "@storybook/angular": { + "version": "^8.2.8", + "alwaysAddToPackageJson": false + }, + "@storybook/react": { + "version": "^8.2.8", + "alwaysAddToPackageJson": false + }, + "@storybook/addon-essentials": { + "version": "^8.2.8", + "alwaysAddToPackageJson": false + }, + "@storybook/addon-interactions": { + "version": "^8.2.8", + "alwaysAddToPackageJson": true + }, + "storybook": { + "version": "^8.2.8", + "alwaysAddToPackageJson": true + } + } } } } diff --git a/packages/storybook/src/executors/build-storybook/build-storybook.impl.ts b/packages/storybook/src/executors/build-storybook/build-storybook.impl.ts index 534e4b63bd..0622b32d57 100644 --- a/packages/storybook/src/executors/build-storybook/build-storybook.impl.ts +++ b/packages/storybook/src/executors/build-storybook/build-storybook.impl.ts @@ -1,5 +1,4 @@ import { ExecutorContext, logger } from '@nx/devkit'; -import * as build from '@storybook/core-server'; import { CLIOptions } from '@storybook/types'; import { pleaseUpgrade, @@ -12,10 +11,15 @@ export default async function buildStorybookExecutor( context: ExecutorContext ) { storybookConfigExistsCheck(options.configDir, context.projectName); - const storybook7 = storybookMajorVersion() >= 7; - if (!storybook7) { + const storybookMajor = storybookMajorVersion(); + if (storybookMajor > 0 && storybookMajor <= 6) { throw pleaseUpgrade(); + } else if (storybookMajor === 7) { + logger.warn( + `Support for Storybook 7 is deprecated. Please upgrade to Storybook 8. See https://nx.dev/nx-api/storybook/generators/migrate-8 for more details.` + ); } + const buildOptions: CLIOptions = options; logger.info(`NX Storybook builder starting ...`); await runInstance(buildOptions); @@ -24,14 +28,15 @@ export default async function buildStorybookExecutor( return { success: true }; } -function runInstance(options: CLIOptions): Promise { + const storybookCore = await import('@storybook/core-server'); const env = process.env.NODE_ENV ?? 'production'; process.env.NODE_ENV = env; - return build.build({ + return storybookCore.build({ ...options, mode: 'static', }); diff --git a/packages/storybook/src/executors/storybook/storybook.impl.ts b/packages/storybook/src/executors/storybook/storybook.impl.ts index b07532a1b2..5dd3965f4b 100644 --- a/packages/storybook/src/executors/storybook/storybook.impl.ts +++ b/packages/storybook/src/executors/storybook/storybook.impl.ts @@ -1,5 +1,4 @@ -import { ExecutorContext } from '@nx/devkit'; -import * as build from '@storybook/core-server'; +import { ExecutorContext, logger } from '@nx/devkit'; import { pleaseUpgrade, storybookConfigExistsCheck, @@ -14,12 +13,15 @@ export default async function* storybookExecutor( success: boolean; info?: { port: number; baseUrl?: string }; }> { - const sbVersion = storybookMajorVersion(); - const sbLessThan7 = sbVersion < 7 && sbVersion > 0; - - if (sbLessThan7) { + const storybookMajor = storybookMajorVersion(); + if (storybookMajor > 0 && storybookMajor <= 6) { throw pleaseUpgrade(); + } else if (storybookMajor === 7) { + logger.warn( + `Support for Storybook 7 is deprecated. Please upgrade to Storybook 8. See https://nx.dev/nx-api/storybook/generators/migrate-8 for more details.` + ); } + storybookConfigExistsCheck(options.configDir, context.projectName); const buildOptions: CLIOptions = options; const result = await runInstance(buildOptions); @@ -35,14 +37,15 @@ export default async function* storybookExecutor( await new Promise<{ success: boolean }>(() => {}); } -function runInstance(options: CLIOptions): Promise { + const storybookCore = await import('@storybook/core-server'); const env = process.env.NODE_ENV ?? 'development'; process.env.NODE_ENV = env; - return build.build({ + return storybookCore.build({ ...options, mode: 'dev', }); diff --git a/packages/storybook/src/generators/configuration/__snapshots__/configuration-nested.spec.ts.snap b/packages/storybook/src/generators/configuration/__snapshots__/configuration-nested.spec.ts.snap index d33797eabf..ead051b570 100644 --- a/packages/storybook/src/generators/configuration/__snapshots__/configuration-nested.spec.ts.snap +++ b/packages/storybook/src/generators/configuration/__snapshots__/configuration-nested.spec.ts.snap @@ -5,9 +5,10 @@ exports[`@nx/storybook:configuration for workspaces with Root project basic func import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; import { mergeConfig } from 'vite'; +import react from '@vitejs/plugin-react'; const config: StorybookConfig = { - stories: ['../src/app/**/*.stories.@(js|jsx|ts|tsx|mdx)'], + stories: ['../src/app/**/*.@(mdx|stories.@(js|jsx|ts|tsx))'], addons: ['@storybook/addon-essentials', '@storybook/addon-interactions'], framework: { name: '@storybook/react-vite', @@ -16,7 +17,7 @@ const config: StorybookConfig = { viteFinal: async (config) => mergeConfig(config, { - plugins: [nxViteTsPaths()], + plugins: [react(), nxViteTsPaths()], }), }; @@ -69,7 +70,7 @@ exports[`@nx/storybook:configuration for workspaces with Root project basic func "import type { StorybookConfig } from '@storybook/react-webpack5'; const config: StorybookConfig = { - stories: ['../src/app/**/*.stories.@(js|jsx|ts|tsx|mdx)'], + stories: ['../src/app/**/*.@(mdx|stories.@(js|jsx|ts|tsx))'], addons: [ '@storybook/addon-essentials', '@storybook/addon-interactions', diff --git a/packages/storybook/src/generators/configuration/__snapshots__/configuration.spec.ts.snap b/packages/storybook/src/generators/configuration/__snapshots__/configuration.spec.ts.snap index d86decd1c0..d6e24c4611 100644 --- a/packages/storybook/src/generators/configuration/__snapshots__/configuration.spec.ts.snap +++ b/packages/storybook/src/generators/configuration/__snapshots__/configuration.spec.ts.snap @@ -4,7 +4,7 @@ exports[`@nx/storybook:configuration for Storybook v7 basic functionalities shou "import type { StorybookConfig } from '@storybook/angular'; const config: StorybookConfig = { - stories: ['../**/*.stories.@(js|jsx|ts|tsx|mdx)'], + stories: ['../**/*.@(mdx|stories.@(js|jsx|ts|tsx))'], addons: ['@storybook/addon-essentials', '@storybook/addon-interactions'], framework: { name: '@storybook/angular', @@ -24,7 +24,7 @@ exports[`@nx/storybook:configuration for Storybook v7 basic functionalities shou "import type { StorybookConfig } from '@storybook/angular'; const config: StorybookConfig = { - stories: ['../**/*.stories.@(js|jsx|ts|tsx|mdx)'], + stories: ['../**/*.@(mdx|stories.@(js|jsx|ts|tsx))'], addons: ['@storybook/addon-essentials', '@storybook/addon-interactions'], framework: { name: '@storybook/angular', @@ -77,7 +77,7 @@ exports[`@nx/storybook:configuration for Storybook v7 basic functionalities shou exports[`@nx/storybook:configuration for Storybook v7 generate Storybook configuration for all types of projects should contain the correct configuration in "apps/main-vite/.storybook/" 1`] = ` "const config = { - stories: ['../src/app/**/*.stories.@(js|jsx|ts|tsx|mdx)'], + stories: ['../src/app/**/*.@(mdx|stories.@(js|jsx|ts|tsx))'], addons: ['@storybook/addon-essentials', '@storybook/addon-interactions'], framework: { name: '@storybook/react-vite', @@ -103,7 +103,7 @@ exports[`@nx/storybook:configuration for Storybook v7 generate Storybook configu "import type { StorybookConfig } from '@storybook/react-vite'; const config: StorybookConfig = { - stories: ['../src/app/**/*.stories.@(js|jsx|ts|tsx|mdx)'], + stories: ['../src/app/**/*.@(mdx|stories.@(js|jsx|ts|tsx))'], addons: ['@storybook/addon-essentials', '@storybook/addon-interactions'], framework: { name: '@storybook/react-vite', @@ -129,7 +129,7 @@ exports[`@nx/storybook:configuration for Storybook v7 generate Storybook configu "import type { StorybookConfig } from '@storybook/react-webpack5'; const config: StorybookConfig = { - stories: ['../src/app/**/*.stories.@(js|jsx|ts|tsx|mdx)'], + stories: ['../src/app/**/*.@(mdx|stories.@(js|jsx|ts|tsx))'], addons: [ '@storybook/addon-essentials', '@storybook/addon-interactions', @@ -155,7 +155,7 @@ exports[`@nx/storybook:configuration for Storybook v7 generate Storybook configu "import type { StorybookConfig } from '@storybook/nextjs'; const config: StorybookConfig = { - stories: ['../components/**/*.stories.@(js|jsx|ts|tsx|mdx)'], + stories: ['../components/**/*.@(mdx|stories.@(js|jsx|ts|tsx))'], addons: ['@storybook/addon-essentials', '@storybook/addon-interactions'], framework: { name: '@storybook/nextjs', @@ -177,7 +177,7 @@ exports[`@nx/storybook:configuration for Storybook v7 generate Storybook configu "import type { StorybookConfig } from '@storybook/react-webpack5'; const config: StorybookConfig = { - stories: ['../src/app/**/*.stories.@(js|jsx|ts|tsx|mdx)'], + stories: ['../src/app/**/*.@(mdx|stories.@(js|jsx|ts|tsx))'], addons: [ '@storybook/addon-essentials', '@storybook/addon-interactions', @@ -201,7 +201,7 @@ exports[`@nx/storybook:configuration for Storybook v7 generate Storybook configu exports[`@nx/storybook:configuration for Storybook v7 generate Storybook configuration for all types of projects should contain the correct configuration in "apps/reapp/.storybook/" 1`] = ` "const config = { - stories: ['../src/app/**/*.stories.@(js|jsx|ts|tsx|mdx)'], + stories: ['../src/app/**/*.@(mdx|stories.@(js|jsx|ts|tsx))'], addons: ['@storybook/addon-essentials', '@storybook/addon-interactions'], framework: { name: '@storybook/react-vite', @@ -227,7 +227,7 @@ exports[`@nx/storybook:configuration for Storybook v7 generate Storybook configu "import type { StorybookConfig } from '@storybook/react-webpack5'; const config: StorybookConfig = { - stories: ['../src/app/**/*.stories.@(js|jsx|ts|tsx|mdx)'], + stories: ['../src/app/**/*.@(mdx|stories.@(js|jsx|ts|tsx))'], addons: [ '@storybook/addon-essentials', '@storybook/addon-interactions', @@ -253,7 +253,7 @@ exports[`@nx/storybook:configuration for Storybook v7 generate Storybook configu "import type { StorybookConfig } from '@storybook/web-components-vite'; const config: StorybookConfig = { - stories: ['../src/app/**/*.stories.@(js|jsx|ts|tsx|mdx)'], + stories: ['../src/app/**/*.@(mdx|stories.@(js|jsx|ts|tsx))'], addons: ['@storybook/addon-essentials', '@storybook/addon-interactions'], framework: { name: '@storybook/web-components-vite', @@ -279,7 +279,7 @@ exports[`@nx/storybook:configuration for Storybook v7 generate Storybook configu "import type { StorybookConfig } from '@storybook/web-components-webpack5'; const config: StorybookConfig = { - stories: ['../src/app/**/*.stories.@(js|jsx|ts|tsx|mdx)'], + stories: ['../src/app/**/*.@(mdx|stories.@(js|jsx|ts|tsx))'], addons: ['@storybook/addon-essentials', '@storybook/addon-interactions'], framework: { name: '@storybook/web-components-webpack5', @@ -301,7 +301,7 @@ exports[`@nx/storybook:configuration for Storybook v7 generate Storybook configu "import type { StorybookConfig } from '@storybook/react-webpack5'; const config: StorybookConfig = { - stories: ['../src/lib/**/*.stories.@(js|jsx|ts|tsx|mdx)'], + stories: ['../src/lib/**/*.@(mdx|stories.@(js|jsx|ts|tsx))'], addons: [ '@storybook/addon-essentials', '@storybook/addon-interactions', @@ -327,7 +327,7 @@ exports[`@nx/storybook:configuration for Storybook v7 generate Storybook configu "import type { StorybookConfig } from '@storybook/react-vite'; const config: StorybookConfig = { - stories: ['../src/lib/**/*.stories.@(js|jsx|ts|tsx|mdx)'], + stories: ['../src/lib/**/*.@(mdx|stories.@(js|jsx|ts|tsx))'], addons: ['@storybook/addon-essentials', '@storybook/addon-interactions'], framework: { name: '@storybook/react-vite', diff --git a/packages/storybook/src/generators/configuration/configuration.ts b/packages/storybook/src/generators/configuration/configuration.ts index 67adf902a2..ec2d7274cc 100644 --- a/packages/storybook/src/generators/configuration/configuration.ts +++ b/packages/storybook/src/generators/configuration/configuration.ts @@ -61,8 +61,13 @@ export async function configurationGeneratorInternal( tree: Tree, rawSchema: StorybookConfigureSchema ) { - if (storybookMajorVersion() === 6) { + const storybookMajor = storybookMajorVersion(); + if (storybookMajor > 0 && storybookMajor === 6) { throw new Error(pleaseUpgrade()); + } else if (storybookMajor === 7) { + logger.warn( + `Support for Storybook 7 is deprecated. Please upgrade to Storybook 8. See https://nx.dev/nx-api/storybook/generators/migrate-8 for more details.` + ); } const schema = normalizeSchema(tree, rawSchema); diff --git a/packages/storybook/src/generators/configuration/project-files-ts/.storybook/main.ts__tmpl__ b/packages/storybook/src/generators/configuration/project-files-ts/.storybook/main.ts__tmpl__ index 31f1a0d336..fbc659bd9d 100644 --- a/packages/storybook/src/generators/configuration/project-files-ts/.storybook/main.ts__tmpl__ +++ b/packages/storybook/src/generators/configuration/project-files-ts/.storybook/main.ts__tmpl__ @@ -2,13 +2,13 @@ import type { StorybookConfig } from '<%= uiFramework %>'; <% if (usesVite && !viteConfigFilePath) { %> import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; import { mergeConfig } from 'vite'; -<% } %> +<% } %><% if (uiFramework === '@storybook/vue3-vite' && !viteConfigFilePath) { %>import vue from '@vitejs/plugin-vue'<% } %><% if (uiFramework === '@storybook/react-vite' && !viteConfigFilePath) { %>import react from '@vitejs/plugin-react'<% } %> const config: StorybookConfig = { stories: [ <% if(uiFramework === '@storybook/angular' && projectType === 'library') { %> - '../**/*.stories.@(js|jsx|ts|tsx|mdx)' <% } else { %> - '../<%= projectDirectory %>/**/*.stories.@(js|jsx|ts|tsx|mdx)' + '../**/*.@(mdx|stories.@(js|jsx|ts|tsx))' <% } else { %> + '../<%= projectDirectory %>/**/*.@(mdx|stories.@(js|jsx|ts|tsx))' <% } %>], addons: ['@storybook/addon-essentials' <% if(interactionTests) { %>, '@storybook/addon-interactions' <% } %><% if(uiFramework === '@storybook/react-webpack5') { %>, '@nx/react/plugins/storybook' <% } %>], framework: { @@ -43,7 +43,7 @@ const config: StorybookConfig = { },<% } %><% if (usesVite && !viteConfigFilePath) { %> viteFinal: async (config) => mergeConfig(config, { - plugins: [nxViteTsPaths()], + plugins: [<% if(uiFramework === '@storybook/vue3-vite') { %>vue(), <% } %><% if(uiFramework === '@storybook/react-vite') { %>react(), <% } %>nxViteTsPaths()], }), <% } %> }; diff --git a/packages/storybook/src/generators/configuration/project-files/.storybook/main.js__tmpl__ b/packages/storybook/src/generators/configuration/project-files/.storybook/main.js__tmpl__ index f68b4ea6d5..11d6e95b1e 100644 --- a/packages/storybook/src/generators/configuration/project-files/.storybook/main.js__tmpl__ +++ b/packages/storybook/src/generators/configuration/project-files/.storybook/main.js__tmpl__ @@ -1,13 +1,13 @@ <% if (usesVite && !viteConfigFilePath) { %> import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; import { mergeConfig } from 'vite'; -<% } %> +<% } %><% if (uiFramework === '@storybook/vue3-vite' && !viteConfigFilePath) { %>import vue from '@vitejs/plugin-vue'<% } %> const config = { stories: [ <% if(uiFramework === '@storybook/angular' && projectType === 'library') { %> - '../**/*.stories.@(js|jsx|ts|tsx|mdx)' <% } else { %> - '../<%= projectDirectory %>/**/*.stories.@(js|jsx|ts|tsx|mdx)' + '../**/*.@(mdx|stories.@(js|jsx|ts|tsx))' <% } else { %> + '../<%= projectDirectory %>/**/*.@(mdx|stories.@(js|jsx|ts|tsx))' <% } %>], addons: ['@storybook/addon-essentials' <% if(interactionTests) { %>, '@storybook/addon-interactions' <% } %><% if(uiFramework === '@storybook/react-webpack5') { %>, '@nx/react/plugins/storybook' <% } %>], framework: { @@ -43,7 +43,7 @@ const config = { },<% } %><% if (usesVite && !viteConfigFilePath) { %> viteFinal: async (config) => mergeConfig(config, { - plugins: [nxViteTsPaths()], + plugins: [<% if(uiFramework === '@storybook/vue3-vite') { %>vue(), <% } %>nxViteTsPaths()], }), <% } %> }; diff --git a/packages/storybook/src/generators/init/init.ts b/packages/storybook/src/generators/init/init.ts index 90a5448eb5..de90427a82 100644 --- a/packages/storybook/src/generators/init/init.ts +++ b/packages/storybook/src/generators/init/init.ts @@ -31,16 +31,16 @@ function checkDependenciesInstalled( }; if (schema.addPlugin) { - let storybook7VersionToInstall = storybookVersion; + let storybookVersionToInstall = storybookVersion; if ( storybookMajorVersion() >= 7 && getInstalledStorybookVersion() && gte(getInstalledStorybookVersion(), '7.0.0') ) { - storybook7VersionToInstall = getInstalledStorybookVersion(); + storybookVersionToInstall = getInstalledStorybookVersion(); } - devDependencies['storybook'] = storybook7VersionToInstall; + devDependencies['storybook'] = storybookVersionToInstall; } return addDependenciesToPackageJson( diff --git a/packages/storybook/src/generators/migrate-8/__snapshots__/helper-functions.spec.ts.snap b/packages/storybook/src/generators/migrate-8/__snapshots__/helper-functions.spec.ts.snap new file mode 100644 index 0000000000..a9bec492e6 --- /dev/null +++ b/packages/storybook/src/generators/migrate-8/__snapshots__/helper-functions.spec.ts.snap @@ -0,0 +1,100 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Helper functions for the Storybook 8 migration generator getAllStorybookInfo and onlyShowGuide should return all info for all projects with Storybook 1`] = ` +{ + "nextapp": { + "configDir": "apps/nextapp/.storybook", + }, + "nextapp-ts": { + "configDir": "apps/nextapp-ts/.storybook", + }, + "ngapp": { + "configDir": "apps/ngapp/.storybook", + }, + "ngapp-ts": { + "configDir": "apps/ngapp-ts/.storybook", + }, + "plugin-app": { + "configDir": "plugin-apps/plugin/.storybook", + }, + "rv1": { + "configDir": "apps/rv1/.storybook", + }, + "rv2-ts": { + "configDir": "apps/rv2-ts/.storybook", + }, + "rw1": { + "configDir": "apps/rw1/.storybook", + }, + "wv1": { + "configDir": "apps/wv1/.storybook", + }, + "ww1": { + "configDir": "apps/ww1/.storybook", + }, +} +`; + +exports[`Helper functions for the Storybook 8 migration generator logResult should create the summary file with the correct content 1`] = ` +"# Storybook 8 Migration Summary + +## Upgrade Storybook packages + +The following command was ran to upgrade the Storybook packages: + +\`\`\`bash +npx storybook@latest upgrade +\`\`\` + +## The Storybook automigration scripts were ran + + +The following commands ran successfully and your Storybook configuration was successfully migrated to the latest version 7: + + +- \`npx storybook@latest automigrate --config-dir apps/nextapp/.storybook\` + +- \`npx storybook@latest automigrate --config-dir apps/rv1/.storybook\` + + +Please make sure to check the results yourself and make sure that everything is working as expected. + + + +### Some migrations failed + +The following commands failed and your Storybook configuration for these projects was not +migrated to the latest version 7: + + +- \`npx storybook@latest automigrate --config-dir apps/rv2-ts/.storybook\` + +- \`npx storybook@latest automigrate --config-dir apps/rw1/.storybook\` + + +You can run these commands again, manually, and follow the instructions in the +output of these commands to migrate your Storybook configuration to the latest version 8. + + +Also, we may have missed something. Please make sure to check the logs of the Storybook CLI commands that were run, and look for +the \`❌ Failed trying to evaluate\` message or \`❌ The migration failed to update\` message. This will indicate if a command was +unsuccessful, and will help you run the migration again, manually. + +## Next steps + +You can make sure everything is working as expected by trying +to build or serve your Storybook as you normally would. + +\`\`\`bash +npx nx build-storybook project-name +\`\`\` + +\`\`\`bash +npx nx storybook project-name +\`\`\` + +Please read the [Storybook 8.0.0 release article](https://storybook.js.org/blog/storybook-8/) and the +official [Storybook 8.0.0 migration guide](https://storybook.js.org/docs/react/migration-guide) +for more information. +" +`; diff --git a/packages/storybook/src/generators/migrate-8/calling-storybook-cli.ts b/packages/storybook/src/generators/migrate-8/calling-storybook-cli.ts new file mode 100644 index 0000000000..4d6d5769d6 --- /dev/null +++ b/packages/storybook/src/generators/migrate-8/calling-storybook-cli.ts @@ -0,0 +1,106 @@ +import { getPackageManagerCommand, output } from '@nx/devkit'; +import { execSync } from 'child_process'; +import { Schema } from './schema'; + +export function callUpgrade(schema: Schema): 1 | Buffer { + const pm = getPackageManagerCommand(); + try { + output.log({ + title: `Calling sb upgrade`, + bodyLines: [ + `ℹ️ Nx will call the Storybook CLI to upgrade your @storybook/* packages to the latest version.`, + `📖 You can read more about the Storybook upgrade command here: https://storybook.js.org/docs/react/configure/upgrading`, + ], + color: 'blue', + }); + + execSync( + `${pm.dlx} storybook@latest upgrade ${ + schema.autoAcceptAllPrompts ? '--yes' : '' + }`, + { + stdio: [0, 1, 2], + } + ); + + output.log({ + title: `Storybook packages upgraded.`, + bodyLines: [ + `☑️ The upgrade command was successful.`, + `Your Storybook packages are now at the latest version.`, + ], + color: 'green', + }); + } catch (e) { + output.log({ + title: 'Migration failed', + bodyLines: [ + `🚨 The Storybook CLI failed to upgrade your @storybook/* packages to the latest version.`, + `Please try running the sb upgrade command manually:`, + `${pm.exec} storybook@latest upgrade`, + ], + color: 'red', + }); + console.log(e); + return 1; + } +} + +export function callAutomigrate( + allStorybookProjects: { + [key: string]: { + configDir: string; + }; + }, + schema: Schema +): { successfulProjects: {}; failedProjects: {} } { + output.log({ + title: `⚙️ Calling sb automigrate`, + bodyLines: [ + `ℹ️ Nx will call the Storybook CLI to automigrate the Storybook configuration of all your projects that use Storybook.`, + `📖 You can read more about the Storybook automigrate command here: https://storybook.js.org/docs/react/configure/upgrading#automigrate-script`, + ], + color: 'green', + }); + + const resultOfMigration = { + successfulProjects: {}, + failedProjects: {}, + }; + + Object.entries(allStorybookProjects).forEach( + ([projectName, storybookProjectInfo]) => { + const pm = getPackageManagerCommand(); + const commandToRun = `${pm.dlx} storybook@latest automigrate --config-dir ${storybookProjectInfo.configDir}`; + try { + output.log({ + title: `Calling sb automigrate for ${projectName}`, + bodyLines: ['Command:', commandToRun], + color: 'green', + }); + + execSync( + `${commandToRun} ${schema.autoAcceptAllPrompts ? '--yes' : ''}`, + { + stdio: 'inherit', + } + ); + + resultOfMigration.successfulProjects[projectName] = commandToRun; + } catch (e) { + output.error({ + title: 'Migration failed', + bodyLines: [ + `🚨 The Storybook CLI failed to automigrate the Storybook configuration of your project.`, + `The error was: ${e}`, + `Please try running the sb automigrate command manually:`, + commandToRun, + ], + }); + resultOfMigration.failedProjects[projectName] = commandToRun; + } + } + ); + + return resultOfMigration; +} diff --git a/packages/storybook/src/generators/migrate-8/files/storybook-migration-summary.md__tmpl__ b/packages/storybook/src/generators/migrate-8/files/storybook-migration-summary.md__tmpl__ new file mode 100644 index 0000000000..ddac468ca7 --- /dev/null +++ b/packages/storybook/src/generators/migrate-8/files/storybook-migration-summary.md__tmpl__ @@ -0,0 +1,56 @@ +# Storybook 8 Migration Summary + +## Upgrade Storybook packages + +The following command was ran to upgrade the Storybook packages: + +```bash +npx storybook@latest upgrade +``` + +## The Storybook automigration scripts were ran + +<% if ( hasSuccessfulProjects ) { %> +The following commands ran successfully and your Storybook configuration was successfully migrated to the latest version 7: + +<% for (let command of successfulProjects) { %> +- `<%= command %>` +<% } %> + +Please make sure to check the results yourself and make sure that everything is working as expected. +<% } %> + +<% if ( hasFailedProjects ) { %> +### Some migrations failed + +The following commands failed and your Storybook configuration for these projects was not +migrated to the latest version 7: + +<% for (let command of failedProjects) { %> +- `<%= command %>` +<% } %> + +You can run these commands again, manually, and follow the instructions in the +output of these commands to migrate your Storybook configuration to the latest version 8. +<% } %> + +Also, we may have missed something. Please make sure to check the logs of the Storybook CLI commands that were run, and look for +the `❌ Failed trying to evaluate` message or `❌ The migration failed to update` message. This will indicate if a command was +unsuccessful, and will help you run the migration again, manually. + +## Next steps + +You can make sure everything is working as expected by trying +to build or serve your Storybook as you normally would. + +```bash +npx nx build-storybook project-name +``` + +```bash +npx nx storybook project-name +``` + +Please read the [Storybook 8.0.0 release article](https://storybook.js.org/blog/storybook-8/) and the +official [Storybook 8.0.0 migration guide](https://storybook.js.org/docs/react/migration-guide) +for more information. diff --git a/packages/storybook/src/generators/migrate-8/helper-functions.spec.ts b/packages/storybook/src/generators/migrate-8/helper-functions.spec.ts new file mode 100644 index 0000000000..5b1ca34ae3 --- /dev/null +++ b/packages/storybook/src/generators/migrate-8/helper-functions.spec.ts @@ -0,0 +1,391 @@ +import { + addProjectConfiguration, + getPackageManagerCommand, + output, + ProjectConfiguration, + Tree, +} from '@nx/devkit'; +import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing'; +import * as allProjects from './test-configs/all-projects.json'; +import { + getAllStorybookInfo, + logResult, + onlyShowGuide, +} from './helper-functions'; + +describe('Helper functions for the Storybook 8 migration generator', () => { + let tree: Tree; + + beforeEach(async () => { + tree = createTreeWithEmptyWorkspace({ layout: 'apps-libs' }); + addAllProjectsToWorkspace(tree); + }); + + describe('getAllStorybookInfo and onlyShowGuide', () => { + let allStorybookInfo; + beforeEach(() => { + allStorybookInfo = getAllStorybookInfo(tree); + }); + it('should return all info for all projects with Storybook', () => { + expect(allStorybookInfo).toMatchSnapshot(); + }); + + it('should onlyShowGuide and the correct instructions', () => { + const outputSpy = jest.spyOn(output, 'log').mockImplementation(); + onlyShowGuide(allStorybookInfo); + const pm = getPackageManagerCommand(); + expect(outputSpy).toHaveBeenCalledWith( + expect.objectContaining({ + bodyLines: [ + 'You can run the following commands manually to upgrade your Storybook projects to Storybook 8:', + '', + '1. Call the Storybook upgrade script:', + `${pm.exec} storybook@latest upgrade`, + '', + '2. Call the Storybook automigrate scripts:', + 'Run the following commands for each Storybook project:', + `${pm.exec} storybook@latest automigrate --config-dir apps/nextapp/.storybook`, + `${pm.exec} storybook@latest automigrate --config-dir apps/nextapp-ts/.storybook`, + `${pm.exec} storybook@latest automigrate --config-dir apps/ngapp/.storybook`, + `${pm.exec} storybook@latest automigrate --config-dir apps/ngapp-ts/.storybook`, + `${pm.exec} storybook@latest automigrate --config-dir apps/rv1/.storybook`, + `${pm.exec} storybook@latest automigrate --config-dir apps/rv2-ts/.storybook`, + `${pm.exec} storybook@latest automigrate --config-dir apps/rw1/.storybook`, + `${pm.exec} storybook@latest automigrate --config-dir apps/wv1/.storybook`, + `${pm.exec} storybook@latest automigrate --config-dir apps/ww1/.storybook`, + `${pm.exec} storybook@latest automigrate --config-dir plugin-apps/plugin/.storybook`, + '', + ], + title: 'Storybook 8 Migration Guide', + }) + ); + }); + }); + + describe('logResult', () => { + it('should create the summary file with the correct content', () => { + logResult(tree, { + successfulProjects: { + nextapp: + 'npx storybook@latest automigrate --config-dir apps/nextapp/.storybook', + rv1: 'npx storybook@latest automigrate --config-dir apps/rv1/.storybook', + }, + failedProjects: { + 'rv2-ts': `npx storybook@latest automigrate --config-dir apps/rv2-ts/.storybook`, + rw1: 'npx storybook@latest automigrate --config-dir apps/rw1/.storybook', + }, + }); + expect( + tree.read('storybook-migration-summary.md', 'utf-8') + ).toMatchSnapshot(); + }); + }); +}); + +export function addAllProjectsToWorkspace(tree: Tree) { + for (const [name, project] of Object.entries(allProjects)) { + addProjectConfiguration(tree, name, project as ProjectConfiguration); + } + writeMainJs(tree); + writeViteConfig(tree); + + addPluginProjects(tree); +} + +function writeViteConfig(tree: Tree) { + tree.write( + `apps/rv1/vite.config.js`, + `const { defineConfig } = require('vite');` + ); + + tree.write( + `apps/rv2-ts/vite.config.ts`, + `const { defineConfig } = require('vite');` + ); + + tree.write( + `apps/wv1/vite.config.ts`, + `const { defineConfig } = require('vite');` + ); +} + +function writeMainJs(tree: Tree) { + tree.write( + `apps/rv1/.storybook/main.js`, + ` + const { mergeConfig } = require('vite'); + const viteTsConfigPaths = require('vite-tsconfig-paths').default; + + module.exports = { + core: { builder: '@storybook/builder-vite' }, + stories: [ + '../src/app/**/*.stories.mdx', + '../src/app/**/*.stories.@(js|jsx|ts|tsx)', + ], + addons: ['@storybook/addon-essentials'], + async viteFinal(config, { configType }) { + return mergeConfig(config, { + plugins: [ + viteTsConfigPaths({ + root: '../../../', + }), + ], + }); + }, + }; +` + ); + + tree.write( + `apps/rv2-ts/.storybook/main.ts`, + ` + import type { StorybookConfig } from '@storybook/core-common'; + + import { mergeConfig } from 'vite'; + import viteTsConfigPaths from 'vite-tsconfig-paths'; + + const config: StorybookConfig = { + core: { builder: '@storybook/builder-vite' }, + stories: [ + '../src/app/**/*.stories.mdx', + '../src/app/**/*.stories.@(js|jsx|ts|tsx)', + ], + addons: ['@storybook/addon-essentials'], + async viteFinal(config: any) { + return mergeConfig(config, { + plugins: [ + viteTsConfigPaths({ + root: '../../../', + }), + ], + }); + }, + } as StorybookConfig; + + module.exports = config; + ` + ); + + tree.write( + `apps/nextapp/.storybook/main.js`, + ` + const path = require('path'); + + module.exports = { + core: { builder: 'webpack5' }, + stories: [ + '../components/**/*.stories.mdx', + '../components/**/*.stories.@(js|jsx|ts|tsx)', + ], + addons: [ + '@storybook/addon-essentials', + '@nx/react/plugins/storybook', + 'storybook-addon-swc', + { + name: 'storybook-addon-next', + options: { + nextConfigPath: path.resolve(__dirname, '../next.config.js'), + }, + }, + ], + }; + ` + ); + + tree.write( + `apps/nextapp-ts/.storybook/main.ts`, + ` + import type { StorybookConfig } from '@storybook/core-common'; + import path from 'path'; + + const config: StorybookConfig = { + core: { builder: 'webpack5' }, + stories: [ + '../components/**/*.stories.mdx', + '../components/**/*.stories.@(js|jsx|ts|tsx)', + ], + addons: [ + '@storybook/addon-essentials', + '@nx/react/plugins/storybook', + 'storybook-addon-swc', + { + name: 'storybook-addon-next', + options: { + nextConfigPath: path.resolve(__dirname, '../next.config.js'), + }, + }, + ], + } as StorybookConfig; + + module.exports = config; + ` + ); + + tree.write( + `apps/rw1/.storybook/main.js`, + ` + const path = require('path'); + + module.exports = { + core: { builder: 'webpack5' }, + stories: [ + '../components/**/*.stories.mdx', + '../components/**/*.stories.@(js|jsx|ts|tsx)', + ], + addons: [ + '@storybook/addon-essentials', + '@nx/react/plugins/storybook', + 'storybook-addon-swc', + { + name: 'storybook-addon-next', + options: { + nextConfigPath: path.resolve(__dirname, '../next.config.js'), + }, + }, + ], + }; + ` + ); + tree.write( + `apps/wv1/.storybook/main.js`, + ` + const path = require('path'); + + module.exports = { + core: { builder: 'webpack5' }, + stories: [ + '../components/**/*.stories.mdx', + '../components/**/*.stories.@(js|jsx|ts|tsx)', + ], + addons: [ + '@storybook/addon-essentials', + '@nx/react/plugins/storybook', + 'storybook-addon-swc', + { + name: 'storybook-addon-next', + options: { + nextConfigPath: path.resolve(__dirname, '../next.config.js'), + }, + }, + ], + }; + ` + ); + tree.write( + `apps/ww1/.storybook/main.js`, + ` + const path = require('path'); + + module.exports = { + core: { builder: 'webpack5' }, + stories: [ + '../components/**/*.stories.mdx', + '../components/**/*.stories.@(js|jsx|ts|tsx)', + ], + addons: [ + '@storybook/addon-essentials', + '@nx/react/plugins/storybook', + 'storybook-addon-swc', + { + name: 'storybook-addon-next', + options: { + nextConfigPath: path.resolve(__dirname, '../next.config.js'), + }, + }, + ], + }; + ` + ); + tree.write( + `apps/ngapp/.storybook/main.js`, + ` + const path = require('path'); + + module.exports = { + core: { builder: 'webpack5' }, + stories: [ + '../components/**/*.stories.mdx', + '../components/**/*.stories.@(js|jsx|ts|tsx)', + ], + addons: [ + '@storybook/addon-essentials', + '@nx/react/plugins/storybook', + 'storybook-addon-swc', + { + name: 'storybook-addon-next', + options: { + nextConfigPath: path.resolve(__dirname, '../next.config.js'), + }, + }, + ], + }; + ` + ); + + tree.write( + `apps/ngapp-ts/.storybook/main.ts`, + ` + const path = require('path'); + + module.exports = { + core: { builder: 'webpack5' }, + stories: [ + '../components/**/*.stories.mdx', + '../components/**/*.stories.@(js|jsx|ts|tsx)', + ], + addons: [ + '@storybook/addon-essentials', + '@nx/react/plugins/storybook', + 'storybook-addon-swc', + { + name: 'storybook-addon-next', + options: { + nextConfigPath: path.resolve(__dirname, '../next.config.js'), + }, + }, + ], + }; + ` + ); +} + +function addPluginProjects(tree: Tree) { + tree.write( + `plugin-apps/plugin/.storybook/main.ts`, + ` + import type { StorybookConfig } from '@storybook/core-common'; + import path from 'path'; + + const config: StorybookConfig = { + core: { builder: 'webpack5' }, + stories: [ + '../components/**/*.stories.mdx', + '../components/**/*.stories.@(js|jsx|ts|tsx)', + ], + addons: [ + '@storybook/addon-essentials', + '@nx/react/plugins/storybook', + 'storybook-addon-swc', + { + name: 'storybook-addon-next', + options: { + nextConfigPath: path.resolve(__dirname, '../next.config.js'), + }, + }, + ], + } as StorybookConfig; + + module.exports = config; + ` + ); + tree.write( + `plugin-apps/plugin/project.json`, + JSON.stringify({ + name: 'plugin-app', + root: 'plugin-apps/plugin', + sourceRoot: 'plugin-apps/plugin/src', + type: 'application', + targets: {}, + }) + ); +} diff --git a/packages/storybook/src/generators/migrate-8/helper-functions.ts b/packages/storybook/src/generators/migrate-8/helper-functions.ts new file mode 100644 index 0000000000..33aba86b41 --- /dev/null +++ b/packages/storybook/src/generators/migrate-8/helper-functions.ts @@ -0,0 +1,212 @@ +import { + generateFiles, + getPackageManagerCommand, + output, + readProjectConfiguration, + Tree, + workspaceRoot, + visitNotIgnoredFiles, + joinPathFragments, + readJson, +} from '@nx/devkit'; +import { forEachExecutorOptions } from '@nx/devkit/src/generators/executor-options-utils'; +import { fileExists } from 'nx/src/utils/fileutils'; +import { readFileSync } from 'fs'; +import { dirname, join } from 'path'; + +export function onlyShowGuide(storybookProjects: { + [key: string]: { + configDir: string; + }; +}) { + const pm = getPackageManagerCommand(); + + output.log({ + title: 'Storybook 8 Migration Guide', + bodyLines: [ + `You can run the following commands manually to upgrade your Storybook projects to Storybook 8:`, + ``, + `1. Call the Storybook upgrade script:`, + `${pm.exec} storybook@latest upgrade`, + ``, + `2. Call the Storybook automigrate scripts:`, + `Run the following commands for each Storybook project:`, + ...Object.entries(storybookProjects).map( + ([_projectName, storybookProjectInfo]) => { + return `${pm.exec} storybook@latest automigrate --config-dir ${storybookProjectInfo.configDir}`; + } + ), + ``, + ], + }); +} + +export function getAllStorybookInfo(tree: Tree): { + [key: string]: { + configDir: string; + }; +} { + const allStorybookDirs: { [key: string]: { configDir: string } } = {}; + + visitNotIgnoredFiles(tree, '', (storybookConfigPath) => { + if ( + !storybookConfigPath.endsWith('.storybook/main.ts') && + !storybookConfigPath.endsWith('.storybook/main.js') + ) { + return; + } + const storybookConfigDir = dirname(storybookConfigPath); + + let projectRoot = ''; + if (storybookConfigPath.includes('/.storybook')) { + projectRoot = storybookConfigDir.replace('/.storybook', ''); + } else { + projectRoot = storybookConfigDir.replace('.storybook', ''); + } + + if (projectRoot === '') { + projectRoot = '.'; + } + + const packageOrProjectJson = [ + joinPathFragments(projectRoot, 'package.json'), + joinPathFragments(projectRoot, 'project.json'), + ].find((p) => tree.exists(p)); + if (!packageOrProjectJson) { + return; + } + + const projectName = readJson(tree, packageOrProjectJson)?.name; + if (!projectName) { + return; + } + allStorybookDirs[projectName] = { + configDir: storybookConfigDir, + }; + }); + + return allStorybookDirs; +} + +export function handleMigrationResult( + migrateResult: { + successfulProjects: {}; + failedProjects: {}; + }, + allStorybookProjects: { + [key: string]: { + configDir: string; + }; + } +): { successfulProjects: {}; failedProjects: {} } { + if ( + fileExists(join(workspaceRoot, 'migration-storybook.log')) && + Object.keys(migrateResult.successfulProjects)?.length + ) { + const sbLogFile = readFileSync( + join(workspaceRoot, 'migration-storybook.log'), + 'utf-8' + ); + Object.keys(migrateResult.successfulProjects).forEach((projectName) => { + if ( + sbLogFile.includes( + `The migration failed to update your ${allStorybookProjects[projectName].configDir}` + ) + ) { + migrateResult.failedProjects[projectName] = + migrateResult.successfulProjects[projectName]; + delete migrateResult.successfulProjects[projectName]; + } + }); + } + + if ( + Object.keys(allStorybookProjects)?.length === + Object.keys(migrateResult.successfulProjects)?.length || + Object.keys(migrateResult.failedProjects)?.length === 0 + ) { + output.log({ + title: `Storybook configuration migrated.`, + bodyLines: [ + `☑️ The automigrate command was successful.`, + `All your projects were migrated successfully.`, + ], + color: 'green', + }); + } else { + if (Object.keys(migrateResult.failedProjects).length) { + if (Object.keys(migrateResult.failedProjects).length) { + output.log({ + title: `Storybook configuration migrated.`, + bodyLines: [ + `☑️ The automigrate command was successful.`, + `The following projects were migrated successfully:`, + ...Object.keys(migrateResult.successfulProjects).map( + (project) => ` - ${project}` + ), + ], + color: 'green', + }); + } + + output.log({ + title: `Failed migrations.`, + bodyLines: [ + `There were some projects that were not migrated successfully.`, + `⚠️ The following projects were not migrated successfully:`, + ...Object.keys(migrateResult.failedProjects).map( + (project) => ` - ${project}` + ), + `You can run the following commands to migrate them manually:`, + ...Object.entries(migrateResult.failedProjects).map( + ([_project, command]) => `- ${command}` + ), + ], + color: 'red', + }); + } + } + return migrateResult; +} + +export function checkStorybookInstalled(packageJson): boolean { + return ( + (packageJson.dependencies['@storybook/core-server'] || + packageJson.devDependencies['@storybook/core-server']) && + (packageJson.dependencies['@nx/storybook'] || + packageJson.devDependencies['@nx/storybook'] || + packageJson.dependencies['@nrwl/storybook'] || + packageJson.devDependencies['@nrwl/storybook']) + ); +} + +export function logResult( + tree: Tree, + migrationSummary: { + successfulProjects: { [key: string]: string }; + failedProjects: { [key: string]: string }; + } +) { + output.log({ + title: `Migration complete!`, + bodyLines: [ + `🎉 Your Storybook configuration has been migrated to Storybook ^8.0.0!`, + `📖 You can see a summary of the tasks that were performed in the storybook-migration-summary.md file in the root of your workspace.`, + ], + color: 'green', + }); + + generateFiles(tree, join(__dirname, 'files'), '.', { + tmpl: '', + successfulProjects: Object.entries( + migrationSummary?.successfulProjects + )?.map(([_projectName, command]) => command), + failedProjects: Object.entries(migrationSummary?.failedProjects)?.map( + ([_projectName, command]) => command + ), + hasFailedProjects: + Object.keys(migrationSummary?.failedProjects)?.length > 0, + hasSuccessfulProjects: + Object.keys(migrationSummary?.successfulProjects)?.length > 0, + }); +} diff --git a/packages/storybook/src/generators/migrate-8/migrate-8.ts b/packages/storybook/src/generators/migrate-8/migrate-8.ts new file mode 100644 index 0000000000..6752f554c2 --- /dev/null +++ b/packages/storybook/src/generators/migrate-8/migrate-8.ts @@ -0,0 +1,55 @@ +import { formatFiles, readJson, Tree } from '@nx/devkit'; + +import { output } from 'nx/src/utils/output'; +import { callAutomigrate, callUpgrade } from './calling-storybook-cli'; +import { + checkStorybookInstalled, + getAllStorybookInfo, + handleMigrationResult, + logResult, + onlyShowGuide, +} from './helper-functions'; +import { Schema } from './schema'; + +export async function migrate8Generator(tree: Tree, schema: Schema) { + const packageJson = readJson(tree, 'package.json'); + if (!checkStorybookInstalled(packageJson)) { + output.error({ + title: 'No Storybook packages installed', + bodyLines: [ + `🚨 Nx did not find any Storybook packages installed in your workspace.`, + `So no migration is necessary.`, + ], + }); + return; + } + + const allStorybookProjects: { + [key: string]: { + configDir: string; + }; + } = getAllStorybookInfo(tree); + + if (schema.onlyShowListOfCommands) { + onlyShowGuide(allStorybookProjects); + return; + } + if (!schema.noUpgrade) { + callUpgrade(schema); + } + + if (Object.entries(allStorybookProjects).length) { + let migrateResult: { + successfulProjects: {}; + failedProjects: {}; + }; + migrateResult = callAutomigrate(allStorybookProjects, schema); + + migrateResult = handleMigrationResult(migrateResult, allStorybookProjects); + logResult(tree, migrateResult); + } + + await formatFiles(tree); +} + +export default migrate8Generator; diff --git a/packages/storybook/src/generators/migrate-8/schema.d.ts b/packages/storybook/src/generators/migrate-8/schema.d.ts new file mode 100644 index 0000000000..459b920936 --- /dev/null +++ b/packages/storybook/src/generators/migrate-8/schema.d.ts @@ -0,0 +1,5 @@ +export interface Schema { + autoAcceptAllPrompts?: boolean; + onlyShowListOfCommands?: boolean; + noUpgrade?: boolean; +} diff --git a/packages/storybook/src/generators/migrate-8/schema.json b/packages/storybook/src/generators/migrate-8/schema.json new file mode 100644 index 0000000000..af4e4a45f3 --- /dev/null +++ b/packages/storybook/src/generators/migrate-8/schema.json @@ -0,0 +1,25 @@ +{ + "cli": "nx", + "title": "Migrate Storybook to version 8.", + "description": "Migrate Storybook to version 8.", + "$id": "migrate-8", + "type": "object", + "properties": { + "autoAcceptAllPrompts": { + "type": "boolean", + "description": "Say yes to all the prompts from the Storybook CLI migration scripts.", + "default": false + }, + "onlyShowListOfCommands": { + "type": "boolean", + "description": "Only show the steps that you need to follow in order to migrate. This does NOT make any changes to your code.", + "default": false + }, + "noUpgrade": { + "type": "boolean", + "description": "Skip upgrading Storybook packages. Only use this option if you are already on version 8, and you do not want the latest beta.", + "default": false + } + }, + "examplesFile": "../../../docs/migrate-8-generator-examples.md" +} diff --git a/packages/storybook/src/generators/migrate-8/test-configs/all-projects.json b/packages/storybook/src/generators/migrate-8/test-configs/all-projects.json new file mode 100644 index 0000000000..2b5abee077 --- /dev/null +++ b/packages/storybook/src/generators/migrate-8/test-configs/all-projects.json @@ -0,0 +1,756 @@ +{ + "nextapp": { + "name": "nextapp", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "apps/nextapp", + "projectType": "application", + "targets": { + "build": { + "executor": "@nx/next:build", + "outputs": ["{options.outputPath}"], + "defaultConfiguration": "production", + "options": { + "root": "apps/nextapp", + "outputPath": "dist/apps/nextapp" + }, + "configurations": { + "development": { "outputPath": "apps/nextapp" }, + "production": {} + } + }, + "serve": { + "executor": "@nx/next:server", + "defaultConfiguration": "development", + "options": { "buildTarget": "nextapp:build", "dev": true }, + "configurations": { + "development": { + "buildTarget": "nextapp:build:development", + "dev": true + }, + "production": { + "buildTarget": "nextapp:build:production", + "dev": false + } + } + }, + "export": { + "executor": "@nx/next:export", + "options": { "buildTarget": "nextapp:build:production" } + }, + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "apps/nextapp/jest.config.ts", + "passWithNoTests": true + }, + "configurations": { "ci": { "ci": true, "codeCoverage": true } } + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { "lintFilePatterns": ["apps/nextapp/**/*.{ts,tsx,js,jsx}"] } + }, + "storybook": { + "executor": "@nx/storybook:storybook", + "options": { + "uiFramework": "@storybook/react", + "port": 4400, + "configDir": "apps/nextapp/.storybook" + }, + "configurations": { "ci": { "quiet": true } } + }, + "build-storybook": { + "executor": "@nx/storybook:build", + "outputs": ["{options.outputDir}"], + "options": { + "uiFramework": "@storybook/react", + "outputDir": "dist/storybook/nextapp", + "configDir": "apps/nextapp/.storybook" + }, + "configurations": { "ci": { "quiet": true } } + } + }, + "tags": [], + "root": "apps/nextapp" + }, + "nextapp-ts": { + "name": "nextapp-ts", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "apps/nextapp-ts", + "projectType": "application", + "targets": { + "build": { + "executor": "@nx/next:build", + "outputs": ["{options.outputPath}"], + "defaultConfiguration": "production", + "options": { + "root": "apps/nextapp-ts", + "outputPath": "dist/apps/nextapp-ts" + }, + "configurations": { + "development": { "outputPath": "apps/nextapp-ts" }, + "production": {} + } + }, + "serve": { + "executor": "@nx/next:server", + "defaultConfiguration": "development", + "options": { "buildTarget": "nextapp-ts:build", "dev": true }, + "configurations": { + "development": { + "buildTarget": "nextapp-ts:build:development", + "dev": true + }, + "production": { + "buildTarget": "nextapp-ts:build:production", + "dev": false + } + } + }, + "export": { + "executor": "@nx/next:export", + "options": { "buildTarget": "nextapp-ts:build:production" } + }, + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "apps/nextapp-ts/jest.config.ts", + "passWithNoTests": true + }, + "configurations": { "ci": { "ci": true, "codeCoverage": true } } + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["apps/nextapp-ts/**/*.{ts,tsx,js,jsx}"] + } + }, + "storybook": { + "executor": "@nx/storybook:storybook", + "options": { + "uiFramework": "@storybook/react", + "port": 4400, + "configDir": "apps/nextapp-ts/.storybook" + }, + "configurations": { "ci": { "quiet": true } } + }, + "build-storybook": { + "executor": "@nx/storybook:build", + "outputs": ["{options.outputDir}"], + "options": { + "uiFramework": "@storybook/react", + "outputDir": "dist/storybook/nextapp-ts", + "configDir": "apps/nextapp-ts/.storybook" + }, + "configurations": { "ci": { "quiet": true } } + } + }, + "tags": [], + "root": "apps/nextapp-ts" + }, + "ngapp": { + "name": "ngapp", + "$schema": "../node_modules/nx/schemas/project-schema.json", + "projectType": "application", + "sourceRoot": "apps/ngapp/src", + "prefix": "sbmigrat", + "targets": { + "build": { + "executor": "@angular-devkit/build-angular:browser", + "outputs": ["{options.outputPath}"], + "options": { + "outputPath": "dist/apps/ngapp", + "index": "apps/ngapp/src/index.html", + "main": "apps/ngapp/src/main.ts", + "polyfills": ["zone.js"], + "tsConfig": "apps/ngapp/tsconfig.app.json", + "assets": ["apps/ngapp/src/favicon.ico", "apps/ngapp/src/assets"], + "styles": ["apps/ngapp/src/styles.css"], + "scripts": [] + }, + "configurations": { + "production": { + "budgets": [ + { + "type": "initial", + "maximumWarning": "500kb", + "maximumError": "1mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "2kb", + "maximumError": "4kb" + } + ], + "outputHashing": "all" + }, + "development": { + "buildOptimizer": false, + "optimization": false, + "vendorChunk": true, + "extractLicenses": false, + "sourceMap": true, + "namedChunks": true + } + }, + "defaultConfiguration": "production" + }, + "serve": { + "executor": "@angular-devkit/build-angular:dev-server", + "configurations": { + "production": { "browserTarget": "ngapp:build:production" }, + "development": { "browserTarget": "ngapp:build:development" } + }, + "defaultConfiguration": "development" + }, + "extract-i18n": { + "executor": "@angular-devkit/build-angular:extract-i18n", + "options": { "browserTarget": "ngapp:build" } + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["apps/ngapp/**/*.ts", "apps/ngapp/**/*.html"] + } + }, + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "apps/ngapp/jest.config.ts", + "passWithNoTests": true + }, + "configurations": { "ci": { "ci": true, "codeCoverage": true } } + }, + "storybook": { + "executor": "@storybook/angular:start-storybook", + "options": { + "port": 4400, + "configDir": "apps/ngapp/.storybook", + "browserTarget": "ngapp:build", + "compodoc": false + }, + "configurations": { "ci": { "quiet": true } } + }, + "build-storybook": { + "executor": "@storybook/angular:build-storybook", + "outputs": ["{options.outputDir}"], + "options": { + "outputDir": "dist/storybook/ngapp", + "configDir": "apps/ngapp/.storybook", + "browserTarget": "ngapp:build", + "compodoc": false + }, + "configurations": { "ci": { "quiet": true } } + } + }, + "tags": [], + "root": "apps/ngapp" + }, + "ngapp-ts": { + "name": "ngapp-ts", + "$schema": "../node_modules/nx/schemas/project-schema.json", + "projectType": "application", + "sourceRoot": "apps/ngapp-ts/src", + "prefix": "sbmigrat", + "targets": { + "build": { + "executor": "@angular-devkit/build-angular:browser", + "outputs": ["{options.outputPath}"], + "options": { + "outputPath": "dist/apps/ngapp-ts", + "index": "apps/ngapp-ts/src/index.html", + "main": "apps/ngapp-ts/src/main.ts", + "polyfills": ["zone.js"], + "tsConfig": "apps/ngapp-ts/tsconfig.app.json", + "assets": [ + "apps/ngapp-ts/src/favicon.ico", + "apps/ngapp-ts/src/assets" + ], + "styles": ["apps/ngapp-ts/src/styles.css"], + "scripts": [] + }, + "configurations": { + "production": { + "budgets": [ + { + "type": "initial", + "maximumWarning": "500kb", + "maximumError": "1mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "2kb", + "maximumError": "4kb" + } + ], + "outputHashing": "all" + }, + "development": { + "buildOptimizer": false, + "optimization": false, + "vendorChunk": true, + "extractLicenses": false, + "sourceMap": true, + "namedChunks": true + } + }, + "defaultConfiguration": "production" + }, + "serve": { + "executor": "@angular-devkit/build-angular:dev-server", + "configurations": { + "production": { "browserTarget": "ngapp-ts:build:production" }, + "development": { "browserTarget": "ngapp-ts:build:development" } + }, + "defaultConfiguration": "development" + }, + "extract-i18n": { + "executor": "@angular-devkit/build-angular:extract-i18n", + "options": { "browserTarget": "ngapp-ts:build" } + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": [ + "apps/ngapp-ts/**/*.ts", + "apps/ngapp-ts/**/*.html" + ] + } + }, + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "apps/ngapp-ts/jest.config.ts", + "passWithNoTests": true + }, + "configurations": { "ci": { "ci": true, "codeCoverage": true } } + }, + "storybook": { + "executor": "@storybook/angular:start-storybook", + "options": { + "port": 4400, + "configDir": "apps/ngapp-ts/.storybook", + "browserTarget": "ngapp-ts:build", + "compodoc": false + }, + "configurations": { "ci": { "quiet": true } } + }, + "build-storybook": { + "executor": "@storybook/angular:build-storybook", + "outputs": ["{options.outputDir}"], + "options": { + "outputDir": "dist/storybook/ngapp-ts", + "configDir": "apps/ngapp-ts/.storybook", + "browserTarget": "ngapp-ts:build", + "compodoc": false + }, + "configurations": { "ci": { "quiet": true } } + } + }, + "tags": [], + "root": "apps/ngapp-ts" + }, + "rv1": { + "name": "rv1", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "apps/rv1/src", + "projectType": "application", + "targets": { + "build": { + "executor": "@nx/vite:build", + "outputs": ["{options.outputPath}"], + "defaultConfiguration": "production", + "options": { "outputPath": "dist/apps/rv1" }, + "configurations": { + "development": { "mode": "development" }, + "production": { "mode": "production" } + } + }, + "serve": { + "executor": "@nx/vite:dev-server", + "defaultConfiguration": "development", + "options": { "buildTarget": "rv1:build" }, + "configurations": { + "development": { + "buildTarget": "rv1:build:development", + "hmr": true + }, + "production": { "buildTarget": "rv1:build:production", "hmr": false } + } + }, + "preview": { + "executor": "@nx/vite:preview-server", + "defaultConfiguration": "development", + "options": { "buildTarget": "rv1:build" }, + "configurations": { + "development": { "buildTarget": "rv1:build:development" }, + "production": { "buildTarget": "rv1:build:production" } + } + }, + "test": { + "executor": "@nx/vite:test", + "outputs": ["coverage/apps/rv1"], + "options": { + "passWithNoTests": true, + "reportsDirectory": "../../coverage/apps/rv1" + } + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { "lintFilePatterns": ["apps/rv1/**/*.{ts,tsx,js,jsx}"] } + }, + "storybook": { + "executor": "@nx/storybook:storybook", + "options": { + "uiFramework": "@storybook/react", + "port": 4400, + "configDir": "apps/rv1/.storybook" + }, + "configurations": { "ci": { "quiet": true } } + }, + "build-storybook": { + "executor": "@nx/storybook:build", + "outputs": ["{options.outputDir}"], + "options": { + "uiFramework": "@storybook/react", + "outputDir": "dist/storybook/rv1", + "configDir": "apps/rv1/.storybook" + }, + "configurations": { "ci": { "quiet": true } } + } + }, + "tags": [], + "root": "apps/rv1" + }, + "rv2-ts": { + "name": "rv2-ts", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "apps/rv2-ts/src", + "projectType": "application", + "targets": { + "build": { + "executor": "@nx/vite:build", + "outputs": ["{options.outputPath}"], + "defaultConfiguration": "production", + "options": { "outputPath": "dist/apps/rv2-ts" }, + "configurations": { + "development": { "mode": "development" }, + "production": { "mode": "production" } + } + }, + "serve": { + "executor": "@nx/vite:dev-server", + "defaultConfiguration": "development", + "options": { "buildTarget": "rv2-ts:build" }, + "configurations": { + "development": { + "buildTarget": "rv2-ts:build:development", + "hmr": true + }, + "production": { + "buildTarget": "rv2-ts:build:production", + "hmr": false + } + } + }, + "preview": { + "executor": "@nx/vite:preview-server", + "defaultConfiguration": "development", + "options": { "buildTarget": "rv2-ts:build" }, + "configurations": { + "development": { "buildTarget": "rv2-ts:build:development" }, + "production": { "buildTarget": "rv2-ts:build:production" } + } + }, + "test": { + "executor": "@nx/vite:test", + "outputs": ["coverage/apps/rv2-ts"], + "options": { + "passWithNoTests": true, + "reportsDirectory": "../../coverage/apps/rv2-ts" + } + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { "lintFilePatterns": ["apps/rv2-ts/**/*.{ts,tsx,js,jsx}"] } + }, + "storybook": { + "executor": "@nx/storybook:storybook", + "options": { + "uiFramework": "@storybook/react", + "port": 4400, + "configDir": "apps/rv2-ts/.storybook" + }, + "configurations": { "ci": { "quiet": true } } + }, + "build-storybook": { + "executor": "@nx/storybook:build", + "outputs": ["{options.outputDir}"], + "options": { + "uiFramework": "@storybook/react", + "outputDir": "dist/storybook/rv2-ts", + "configDir": "apps/rv2-ts/.storybook" + }, + "configurations": { "ci": { "quiet": true } } + } + }, + "tags": [], + "root": "apps/rv2-ts" + }, + "rw1": { + "name": "rw1", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "apps/rw1/src", + "projectType": "application", + "targets": { + "build": { + "executor": "@nx/webpack:webpack", + "outputs": ["{options.outputPath}"], + "defaultConfiguration": "production", + "options": { + "compiler": "babel", + "outputPath": "dist/apps/rw1", + "index": "apps/rw1/src/index.html", + "baseHref": "/", + "main": "apps/rw1/src/main.tsx", + "tsConfig": "apps/rw1/tsconfig.app.json", + "assets": ["apps/rw1/src/favicon.ico", "apps/rw1/src/assets"], + "styles": ["apps/rw1/src/styles.css"], + "scripts": [], + "isolatedConfig": true, + "webpackConfig": "apps/rw1/webpack.config.js" + }, + "configurations": { + "development": { + "extractLicenses": false, + "optimization": false, + "sourceMap": true, + "vendorChunk": true + }, + "production": { + "fileReplacements": [ + { + "replace": "apps/rw1/src/environments/environment.ts", + "with": "apps/rw1/src/environments/environment.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "namedChunks": false, + "extractLicenses": true, + "vendorChunk": false + } + } + }, + "serve": { + "executor": "@nx/webpack:dev-server", + "defaultConfiguration": "development", + "options": { "buildTarget": "rw1:build", "hmr": true }, + "configurations": { + "development": { "buildTarget": "rw1:build:development" }, + "production": { "buildTarget": "rw1:build:production", "hmr": false } + } + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { "lintFilePatterns": ["apps/rw1/**/*.{ts,tsx,js,jsx}"] } + }, + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "apps/rw1/jest.config.ts", + "passWithNoTests": true + }, + "configurations": { "ci": { "ci": true, "codeCoverage": true } } + }, + "storybook": { + "executor": "@nx/storybook:storybook", + "options": { + "uiFramework": "@storybook/react", + "port": 4400, + "configDir": "apps/rw1/.storybook" + }, + "configurations": { "ci": { "quiet": true } } + }, + "build-storybook": { + "executor": "@nx/storybook:build", + "outputs": ["{options.outputDir}"], + "options": { + "uiFramework": "@storybook/react", + "outputDir": "dist/storybook/rw1", + "configDir": "apps/rw1/.storybook" + }, + "configurations": { "ci": { "quiet": true } } + } + }, + "tags": [], + "root": "apps/rw1" + }, + "wv1": { + "name": "wv1", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "application", + "sourceRoot": "apps/wv1/src", + "tags": [], + "targets": { + "build": { + "executor": "@nx/vite:build", + "outputs": ["{options.outputPath}"], + "defaultConfiguration": "production", + "options": { "outputPath": "dist/apps/wv1" }, + "configurations": { + "development": { "mode": "development" }, + "production": { "mode": "production" } + } + }, + "serve": { + "executor": "@nx/vite:dev-server", + "defaultConfiguration": "development", + "options": { "buildTarget": "wv1:build" }, + "configurations": { + "development": { + "buildTarget": "wv1:build:development", + "hmr": true + }, + "production": { "buildTarget": "wv1:build:production", "hmr": false } + } + }, + "preview": { + "executor": "@nx/vite:preview-server", + "defaultConfiguration": "development", + "options": { "buildTarget": "wv1:build" }, + "configurations": { + "development": { "buildTarget": "wv1:build:development" }, + "production": { "buildTarget": "wv1:build:production" } + } + }, + "test": { + "executor": "@nx/vite:test", + "outputs": ["coverage/apps/wv1"], + "options": { + "passWithNoTests": true, + "reportsDirectory": "../../coverage/apps/wv1" + } + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { "lintFilePatterns": ["apps/wv1/**/*.ts"] } + }, + "storybook": { + "executor": "@nx/storybook:storybook", + "options": { + "uiFramework": "@storybook/web-components", + "port": 4400, + "configDir": "apps/wv1/.storybook" + }, + "configurations": { "ci": { "quiet": true } } + }, + "build-storybook": { + "executor": "@nx/storybook:build", + "outputs": ["{options.outputDir}"], + "options": { + "uiFramework": "@storybook/web-components", + "outputDir": "dist/storybook/wv1", + "configDir": "apps/wv1/.storybook" + }, + "configurations": { "ci": { "quiet": true } } + } + }, + "root": "apps/wv1" + }, + "ww1": { + "name": "ww1", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "application", + "sourceRoot": "apps/ww1/src", + "tags": [], + "targets": { + "build": { + "executor": "@nx/webpack:webpack", + "outputs": ["{options.outputPath}"], + "defaultConfiguration": "production", + "options": { + "outputPath": "dist/apps/ww1", + "compiler": "babel", + "main": "apps/ww1/src/main.ts", + "tsConfig": "apps/ww1/tsconfig.app.json", + "webpackConfig": "apps/ww1/webpack.config.js", + "assets": ["apps/ww1/src/favicon.ico", "apps/ww1/src/assets"], + "index": "apps/ww1/src/index.html", + "baseHref": "/", + "styles": ["apps/ww1/src/styles.css"], + "scripts": [] + }, + "configurations": { + "production": { + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "namedChunks": false, + "extractLicenses": true, + "vendorChunk": false, + "fileReplacements": [ + { + "replace": "apps/ww1/src/environments/environment.ts", + "with": "apps/ww1/src/environments/environment.prod.ts" + } + ] + } + } + }, + "serve": { + "executor": "@nx/webpack:dev-server", + "options": { "buildTarget": "ww1:build" }, + "configurations": { + "production": { "buildTarget": "ww1:build:production" } + } + }, + "test": { + "executor": "@nx/vite:test", + "outputs": ["coverage/apps/ww1"], + "options": { + "passWithNoTests": true, + "reportsDirectory": "../../coverage/apps/ww1" + } + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { "lintFilePatterns": ["apps/ww1/**/*.ts"] } + }, + "storybook": { + "executor": "@nx/storybook:storybook", + "options": { + "uiFramework": "@storybook/web-components", + "port": 4400, + "configDir": "apps/ww1/.storybook" + }, + "configurations": { "ci": { "quiet": true } } + }, + "build-storybook": { + "executor": "@nx/storybook:build", + "outputs": ["{options.outputDir}"], + "options": { + "uiFramework": "@storybook/web-components", + "outputDir": "dist/storybook/ww1", + "configDir": "apps/ww1/.storybook" + }, + "configurations": { "ci": { "quiet": true } } + } + }, + "root": "apps/ww1" + } +} diff --git a/packages/storybook/src/migrations/update-19-6-0/update-sb-8.ts b/packages/storybook/src/migrations/update-19-6-0/update-sb-8.ts new file mode 100644 index 0000000000..623678dbb6 --- /dev/null +++ b/packages/storybook/src/migrations/update-19-6-0/update-sb-8.ts @@ -0,0 +1,30 @@ +import { Tree } from '@nx/devkit'; +import { output } from 'nx/src/utils/output'; +import migrate8Generator from '../../generators/migrate-8/migrate-8'; +import { storybookMajorVersion } from '../../utils/utilities'; + +export default async function changeStorybookTargets(tree: Tree) { + const storybookVersion = storybookMajorVersion(); + if (!storybookVersion) { + /** + * This just checks if Storybook is installed in the workspace. + * The thing here is that during the previous step of the migration, + * during packageJsonUpdates, Nx has already set Storybook + * to version 8, if Storybook exists in the workspace. + * So, it makes no sense here to check if the version is + * 7, because it will always be. + */ + return; + } + + output.log({ + title: 'Migrating Storybook to v8', + bodyLines: [ + `🚀 This migration will update your Storybook configuration to v8.`, + `It will call the @nx/storybook:migrate-8 generator for you.`, + `You can read more about the migration and how this generator works here:`, + `https://nx.dev/nx-api/storybook/generators/migrate-8`, + ], + }); + return migrate8Generator(tree, { autoAcceptAllPrompts: true }); +} diff --git a/packages/storybook/src/utils/versions.ts b/packages/storybook/src/utils/versions.ts index 48d64277f4..07ae593b4f 100644 --- a/packages/storybook/src/utils/versions.ts +++ b/packages/storybook/src/utils/versions.ts @@ -6,8 +6,8 @@ export const litVersion = '^2.6.1'; export const tsNodeVersion = '10.9.1'; export const tsLibVersion = '^2.3.0'; -export const storybookVersion = '^7.5.3'; +export const storybookVersion = '^8.2.8'; export const reactVersion = '^18.2.0'; -export const viteVersion = '~5.0.0'; +export const viteVersion = '^5.0.0'; export const coreJsVersion = '^3.36.1'; diff --git a/packages/vue/src/generators/stories/schema.json b/packages/vue/src/generators/stories/schema.json index fcb76b969a..6f54ee7b17 100644 --- a/packages/vue/src/generators/stories/schema.json +++ b/packages/vue/src/generators/stories/schema.json @@ -19,11 +19,13 @@ }, "generateCypressSpecs": { "type": "boolean", - "description": "Automatically generate `*.spec.ts` files in the cypress e2e app generated by the cypress-configure generator." + "description": "Automatically generate `*.spec.ts` files in the cypress e2e app generated by the cypress-configure generator.", + "x-deprecated": "Use interactionTests instead. This option will be removed in v20." }, "cypressProject": { "type": "string", - "description": "The Cypress project to generate the stories under. This is inferred from `project` by default." + "description": "The Cypress project to generate the stories under. This is inferred from `project` by default.", + "x-deprecated": "Use interactionTests instead. This option will be removed in v20." }, "interactionTests": { "type": "boolean", diff --git a/packages/vue/src/generators/storybook-configuration/__snapshots__/configuration.spec.ts.snap b/packages/vue/src/generators/storybook-configuration/__snapshots__/configuration.spec.ts.snap index 8e491417b3..ebb6c18162 100644 --- a/packages/vue/src/generators/storybook-configuration/__snapshots__/configuration.spec.ts.snap +++ b/packages/vue/src/generators/storybook-configuration/__snapshots__/configuration.spec.ts.snap @@ -5,9 +5,10 @@ exports[`vue:storybook-configuration should configure everything and install cor import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; import { mergeConfig } from 'vite'; +import vue from '@vitejs/plugin-vue'; const config: StorybookConfig = { - stories: ['../src/**/*.stories.@(js|jsx|ts|tsx|mdx)'], + stories: ['../src/**/*.@(mdx|stories.@(js|jsx|ts|tsx))'], addons: ['@storybook/addon-essentials', '@storybook/addon-interactions'], framework: { name: '@storybook/vue3-vite', @@ -16,7 +17,7 @@ const config: StorybookConfig = { viteFinal: async (config) => mergeConfig(config, { - plugins: [nxViteTsPaths()], + plugins: [vue(), nxViteTsPaths()], }), }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 624f9038b8..5412272966 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -378,23 +378,26 @@ devDependencies: specifier: ~18.1.0 version: 18.1.0 '@storybook/addon-essentials': - specifier: 7.5.3 - version: 7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) + specifier: ^8.2.8 + version: 8.2.8(storybook@8.2.8) + '@storybook/addon-interactions': + specifier: ^8.2.8 + version: 8.2.8(@types/jest@29.4.0)(jest@29.4.3)(storybook@8.2.8)(vitest@1.3.1) '@storybook/core-server': - specifier: 7.5.3 - version: 7.5.3 + specifier: ^8.2.8 + version: 8.2.8(storybook@8.2.8) '@storybook/react': - specifier: 7.5.3 - version: 7.5.3(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + specifier: ^8.2.8 + version: 8.2.8(react-dom@18.3.1)(react@18.3.1)(storybook@8.2.8)(typescript@5.5.3) '@storybook/react-vite': - specifier: 7.5.3 - version: 7.5.3(react-dom@18.3.1)(react@18.3.1)(rollup@4.14.3)(typescript@5.5.3)(vite@5.0.8) + specifier: ^8.2.8 + version: 8.2.8(react-dom@18.3.1)(react@18.3.1)(rollup@4.14.3)(storybook@8.2.8)(typescript@5.5.3)(vite@5.0.8) '@storybook/react-webpack5': - specifier: 7.5.3 - version: 7.5.3(@babel/core@7.23.2)(@swc/core@1.5.7)(@swc/helpers@0.5.11)(esbuild@0.19.5)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3)(webpack-cli@5.1.4)(webpack-dev-server@5.0.4) + specifier: ^8.2.8 + version: 8.2.8(@swc/core@1.5.7)(esbuild@0.19.5)(react-dom@18.3.1)(react@18.3.1)(storybook@8.2.8)(typescript@5.5.3)(webpack-cli@5.1.4) '@storybook/types': - specifier: ^7.1.1 - version: 7.1.1 + specifier: ^8.2.8 + version: 8.2.8(storybook@8.2.8) '@supabase/supabase-js': specifier: ^2.26.0 version: 2.26.0 @@ -627,8 +630,8 @@ devDependencies: specifier: 4.6.0 version: 4.6.0(eslint@8.57.0) eslint-plugin-storybook: - specifier: ^0.6.12 - version: 0.6.12(eslint@8.57.0)(typescript@5.5.3) + specifier: ^0.8.0 + version: 0.8.0(eslint@8.57.0)(typescript@5.5.3) express: specifier: ^4.19.2 version: 4.19.2 @@ -896,9 +899,12 @@ devDependencies: source-map-support: specifier: 0.5.19 version: 0.5.19 + storybook: + specifier: ^8.2.8 + version: 8.2.8 storybook-dark-mode: - specifier: ^3.0.0 - version: 3.0.0(react-dom@18.3.1)(react@18.3.1) + specifier: ^4.0.2 + version: 4.0.2(react-dom@18.3.1)(react@18.3.1)(storybook@8.2.8) style-loader: specifier: ^3.3.0 version: 3.3.1(webpack@5.88.0) @@ -1014,6 +1020,10 @@ packages: resolution: {integrity: sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==} dev: true + /@adobe/css-tools@4.4.0: + resolution: {integrity: sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==} + dev: true + /@algolia/autocomplete-core@1.7.2: resolution: {integrity: sha512-eclwUDC6qfApNnEfu1uWcL/rudQsn59tjEoUYZYE2JSXZrHLRjBUGMxiCoknobU2Pva8ejb0eRxpIYDtVVqdsw==} dependencies: @@ -1699,13 +1709,6 @@ packages: js-yaml: 4.1.0 dev: false - /@aw-web-design/x-default-browser@1.4.126: - resolution: {integrity: sha512-Xk1sIhyNC/esHGGVjL/niHLowM0csl/kFO5uawBy4IrWwy0o1G8LGt3jP6nmWGz+USxeeqbihAmp/oVZju6wug==} - hasBin: true - dependencies: - default-browser-id: 3.0.0 - dev: true - /@babel/code-frame@7.21.4: resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} engines: {node: '>=6.9.0'} @@ -1900,7 +1903,7 @@ packages: resolution: {integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.6 + '@babel/types': 7.25.2 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 @@ -1926,6 +1929,16 @@ packages: jsesc: 2.5.2 dev: true + /@babel/generator@7.25.0: + resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.25.2 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + dev: true + /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} @@ -1944,14 +1957,14 @@ packages: resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.25.2 dev: true /@babel/helper-builder-binary-assignment-operator-visitor@7.24.6: resolution: {integrity: sha512-+wnfqc5uHiMYtvRX7qu80Toef8BXeh4HHR1SPeonGb1SKPniNEd4a/nlaJJMv/OIEYvIVavvo0yR7u10Gqz0Iw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.6 + '@babel/types': 7.25.2 dev: true /@babel/helper-builder-binary-assignment-operator-visitor@7.24.7: @@ -1959,7 +1972,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color dev: true @@ -2162,6 +2175,24 @@ packages: - supports-color dev: true + /@babel/helper-create-class-features-plugin@7.25.0(@babel/core@7.24.7): + resolution: {integrity: sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.8 + '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.24.7) + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/traverse': 7.25.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.7): resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} @@ -2362,7 +2393,7 @@ packages: resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 dev: true /@babel/helper-function-name@7.23.0: @@ -2385,7 +2416,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.24.7 - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 dev: true /@babel/helper-hoist-variables@7.22.5: @@ -2405,21 +2436,21 @@ packages: resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 dev: true /@babel/helper-member-expression-to-functions@7.23.0: resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 dev: true /@babel/helper-member-expression-to-functions@7.24.6: resolution: {integrity: sha512-OTsCufZTxDUsv2/eDXanw/mUZHWOxSbEmC3pP8cgjcy5rgeVPWWMStnv274DV60JtHxTk0adT0QrCzC4M9NWGg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 dev: true /@babel/helper-member-expression-to-functions@7.24.7: @@ -2427,7 +2458,17 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-member-expression-to-functions@7.24.8: + resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color dev: true @@ -2442,7 +2483,7 @@ packages: resolution: {integrity: sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.6 + '@babel/types': 7.25.2 dev: true /@babel/helper-module-imports@7.24.7: @@ -2450,7 +2491,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color dev: true @@ -2560,21 +2601,21 @@ packages: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 dev: true /@babel/helper-optimise-call-expression@7.24.6: resolution: {integrity: sha512-3SFDJRbx7KuPRl8XDUr8O7GAEB8iGyWPjLKJh/ywP/Iy9WOmEfMrsWbaZpvBu2HSYn4KQygIsz0O7m8y10ncMA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 dev: true /@babel/helper-optimise-call-expression@7.24.7: resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 dev: true /@babel/helper-plugin-utils@7.22.5: @@ -2597,6 +2638,11 @@ packages: engines: {node: '>=6.9.0'} dev: true + /@babel/helper-plugin-utils@7.24.8: + resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.7): resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} engines: {node: '>=6.9.0'} @@ -2747,6 +2793,20 @@ packages: - supports-color dev: true + /@babel/helper-replace-supers@7.25.0(@babel/core@7.24.7): + resolution: {integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.8 + '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/helper-simple-access@7.22.5: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} @@ -2757,7 +2817,7 @@ packages: resolution: {integrity: sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 dev: true /@babel/helper-simple-access@7.24.7: @@ -2765,7 +2825,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color dev: true @@ -2774,14 +2834,14 @@ packages: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 dev: true /@babel/helper-skip-transparent-expression-wrappers@7.24.6: resolution: {integrity: sha512-jhbbkK3IUKc4T43WadP96a27oYti9gEf1LdyGSP2rHGH77kwLwfhO7TgwnWvxxQVmke0ImmCSS47vcuxEMGD3Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 dev: true /@babel/helper-skip-transparent-expression-wrappers@7.24.7: @@ -2789,7 +2849,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color dev: true @@ -2827,6 +2887,11 @@ packages: engines: {node: '>=6.9.0'} dev: true + /@babel/helper-string-parser@7.24.8: + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-validator-identifier@7.22.20: resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} @@ -2865,7 +2930,7 @@ packages: dependencies: '@babel/helper-function-name': 7.24.7 '@babel/template': 7.24.7 - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 dev: true /@babel/helper-wrap-function@7.24.7: @@ -2875,7 +2940,7 @@ packages: '@babel/helper-function-name': 7.24.7 '@babel/template': 7.24.7 '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color dev: true @@ -2903,7 +2968,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.24.7 - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 dev: true /@babel/highlight@7.22.20: @@ -2963,7 +3028,7 @@ packages: engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.25.2 dev: true /@babel/parser@7.24.6: @@ -2979,7 +3044,15 @@ packages: engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 + dev: true + + /@babel/parser@7.25.3: + resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.25.2 dev: true /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7(@babel/core@7.24.7): @@ -3518,14 +3591,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} + /@babel/plugin-syntax-flow@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 dev: true /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.7): @@ -3741,6 +3814,16 @@ packages: '@babel/helper-plugin-utils': 7.24.6 dev: true + /@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + dev: true + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.2): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: @@ -4097,6 +4180,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + dev: true + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.0): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} @@ -4583,15 +4676,15 @@ packages: '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.7) dev: true - /@babel/plugin-transform-flow-strip-types@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==} + /@babel/plugin-transform-flow-strip-types@7.25.2(@babel/core@7.24.7): + resolution: {integrity: sha512-InBZ0O8tew5V0K6cHcQ+wgxlrjOw1W4wDXLkOTjLRD8GYhTSkxTVBtdy3MMtvYBrbAWa1Qm3hNoTc1620Yj+Mg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.23.2) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.24.7) dev: true /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.7): @@ -5408,26 +5501,6 @@ packages: '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.24.0) dev: true - /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.23.9): - resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.7 - dev: true - - /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.23.9): - resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.7 - dev: true - /@babel/plugin-transform-react-jsx@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==} engines: {node: '>=6.9.0'} @@ -5835,6 +5908,22 @@ packages: - supports-color dev: true + /@babel/plugin-transform-typescript@7.25.2(@babel/core@7.24.7): + resolution: {integrity: sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.24.7) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color + dev: true + /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} engines: {node: '>=6.9.0'} @@ -6211,16 +6300,16 @@ packages: - supports-color dev: true - /@babel/preset-flow@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-ta2qZ+LSiGCrP5pgcGt8xMnnkXQrq8Sa4Ulhy06BOlF5QbLw9q5hIx7bn5MrsvyTGAfh6kTOo07Q+Pfld/8Y5Q==} + /@babel/preset-flow@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.2 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.23.2) + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-option': 7.24.7 + '@babel/plugin-transform-flow-strip-types': 7.25.2(@babel/core@7.24.7) dev: true /@babel/preset-modules@0.1.5(@babel/core@7.23.7): @@ -6383,6 +6472,36 @@ packages: - supports-color dev: true + /@babel/preset-typescript@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-option': 7.24.7 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.24.7) + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/register@7.24.6(@babel/core@7.24.7): + resolution: {integrity: sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + clone-deep: 4.0.1 + find-cache-dir: 2.1.0 + make-dir: 2.1.0 + pirates: 4.0.6 + source-map-support: 0.5.19 + dev: true + /@babel/regjsgen@0.8.0: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} dev: true @@ -6439,7 +6558,7 @@ packages: dependencies: '@babel/code-frame': 7.23.5 '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 + '@babel/types': 7.25.2 dev: true /@babel/template@7.24.0: @@ -6448,7 +6567,7 @@ packages: dependencies: '@babel/code-frame': 7.23.5 '@babel/parser': 7.24.0 - '@babel/types': 7.24.0 + '@babel/types': 7.25.2 dev: true /@babel/template@7.24.6: @@ -6466,25 +6585,16 @@ packages: dependencies: '@babel/code-frame': 7.24.7 '@babel/parser': 7.24.7 - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 dev: true - /@babel/traverse@7.23.2: - resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} + /@babel/template@7.25.0: + resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.24.7 - '@babel/generator': 7.24.7 - '@babel/helper-environment-visitor': 7.24.6 - '@babel/helper-function-name': 7.24.6 - '@babel/helper-hoist-variables': 7.24.6 - '@babel/helper-split-export-declaration': 7.24.7 - '@babel/parser': 7.24.7 - '@babel/types': 7.24.7 - debug: 4.3.4(supports-color@8.1.1) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 dev: true /@babel/traverse@7.23.7: @@ -6558,6 +6668,21 @@ packages: - supports-color dev: true + /@babel/traverse@7.25.3: + resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 + debug: 4.3.4(supports-color@8.1.1) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/types@7.23.6: resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} engines: {node: '>=6.9.0'} @@ -6600,6 +6725,15 @@ packages: to-fast-properties: 2.0.0 dev: true + /@babel/types@7.25.2: + resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + dev: true + /@base2/pretty-print-object@1.0.1: resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==} dev: true @@ -6827,14 +6961,6 @@ packages: resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} dev: true - /@emotion/use-insertion-effect-with-fallbacks@1.0.0(react@18.3.1): - resolution: {integrity: sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==} - peerDependencies: - react: '>=16.8.0' - dependencies: - react: 18.3.1 - dev: true - /@esbuild/aix-ppc64@0.19.11: resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==} engines: {node: '>=12'} @@ -8515,34 +8641,17 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@fal-works/esbuild-plugin-global-externals@2.1.2: - resolution: {integrity: sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==} - dev: true - /@fastify/busboy@2.0.0: resolution: {integrity: sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==} engines: {node: '>=14'} dev: true - /@floating-ui/core@1.4.1: - resolution: {integrity: sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ==} - dependencies: - '@floating-ui/utils': 0.1.1 - dev: true - /@floating-ui/core@1.5.3: resolution: {integrity: sha512-O0WKDOo0yhJuugCx6trZQj5jVJ9yR0ystG2JaNAemYUWce+pmM6WUEFIibnWyEJKdrDxhm75NoSRME35FNaM/Q==} dependencies: '@floating-ui/utils': 0.2.1 dev: true - /@floating-ui/dom@1.5.1: - resolution: {integrity: sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw==} - dependencies: - '@floating-ui/core': 1.4.1 - '@floating-ui/utils': 0.1.1 - dev: true - /@floating-ui/dom@1.5.4: resolution: {integrity: sha512-jByEsHIY+eEdCjnTVu+E3ephzTOzkQ8hgUfGwos+bg7NlH33Zc5uO+QHz1mrQUOgIKKDD1RtS201P9NvAfq3XQ==} dependencies: @@ -8550,17 +8659,6 @@ packages: '@floating-ui/utils': 0.2.1 dev: true - /@floating-ui/react-dom@2.0.1(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-rZtAmSht4Lry6gdhAJDrCp/6rKN7++JnL1/Anbr/DdeyYXQPxvg/ivrbYvJulbRf4vL8b212suwMM2lxbv+RQA==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - dependencies: - '@floating-ui/dom': 1.5.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - dev: true - /@floating-ui/react-dom@2.0.6(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-IB8aCRFxr8nFkdYZgH+Otd9EVQPJoynxeFRGTB8voPoZMRWo8XjYuCRgpI1btvuKY69XMiLnW+ym7zoBHM90Rw==} peerDependencies: @@ -8585,10 +8683,6 @@ packages: tabbable: 6.0.1 dev: true - /@floating-ui/utils@0.1.1: - resolution: {integrity: sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw==} - dev: true - /@floating-ui/utils@0.2.1: resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} dev: true @@ -9082,8 +9176,8 @@ packages: chalk: 4.1.2 dev: true - /@joshwooding/vite-plugin-react-docgen-typescript@0.3.0(typescript@5.5.3)(vite@5.0.8): - resolution: {integrity: sha512-2D6y7fNvFmsLmRt6UCOFJPvFoPMJGT0Uh1Wg0RaigUp7kdQPs6yYn8Dmx6GZkOH/NW0yMTwRz/p0SRMMRo50vA==} + /@joshwooding/vite-plugin-react-docgen-typescript@0.3.1(typescript@5.5.3)(vite@5.0.8): + resolution: {integrity: sha512-pdoMZ9QaPnVlSM+SdU/wgg0nyD/8wQ7y90ttO2CMCyrrm7RxveYIJ5eNfjPaoMFqW41LZra7QO9j+xV4Y18Glw==} peerDependencies: typescript: '>= 4.3.x' vite: ^3.0.0 || ^4.0.0 || ^5.0.0 @@ -9206,10 +9300,6 @@ packages: resolution: {integrity: sha512-Lg3PnLp0QXpxwLIAuuJboLeRaIhrgJjeuh797QADg3xz8wGLugQOS5DpsE8A6i6Adgzf+bacllkKZG3J0tGfDw==} dev: true - /@juggle/resize-observer@3.4.0: - resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} - dev: true - /@kwsites/file-exists@1.1.1: resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} dependencies: @@ -9361,9 +9451,10 @@ packages: - supports-color dev: true - /@mdx-js/react@2.3.0(react@18.3.1): - resolution: {integrity: sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==} + /@mdx-js/react@3.0.1(@types/react@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==} peerDependencies: + '@types/react': '>=16' react: '>=16' dependencies: '@types/mdx': 2.0.10 @@ -12749,46 +12840,6 @@ packages: optionalDependencies: fsevents: 2.3.2 - /@pmmmwh/react-refresh-webpack-plugin@0.5.10(react-refresh@0.11.0)(webpack-dev-server@5.0.4)(webpack@5.88.0): - resolution: {integrity: sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA==} - engines: {node: '>= 10.13'} - peerDependencies: - '@types/webpack': 4.x || 5.x - react-refresh: '>=0.10.0 <1.0.0' - sockjs-client: ^1.4.0 - type-fest: '>=0.17.0 <4.0.0' - webpack: '>=4.43.0 <6.0.0' - webpack-dev-server: 3.x || 4.x - webpack-hot-middleware: 2.x - webpack-plugin-serve: 0.x || 1.x - peerDependenciesMeta: - '@types/webpack': - optional: true - sockjs-client: - optional: true - type-fest: - optional: true - webpack-dev-server: - optional: true - webpack-hot-middleware: - optional: true - webpack-plugin-serve: - optional: true - dependencies: - ansi-html-community: 0.0.8 - common-path-prefix: 3.0.0 - core-js-pure: 3.26.0 - error-stack-parser: 2.1.4 - find-up: 5.0.0 - html-entities: 2.5.2 - loader-utils: 2.0.4 - react-refresh: 0.11.0 - schema-utils: 3.2.0 - source-map: 0.7.3 - webpack: 5.88.0(@swc/core@1.5.7)(esbuild@0.19.5)(webpack-cli@5.1.4) - webpack-dev-server: 5.0.4(webpack-cli@5.1.4)(webpack@5.88.0) - dev: true - /@pmmmwh/react-refresh-webpack-plugin@0.5.8(react-refresh@0.10.0)(webpack-dev-server@5.0.4)(webpack@5.88.0): resolution: {integrity: sha512-wxXRwf+IQ6zvHSJZ+5T2RQNEsq+kx4jKRXfFvdt3nBIUzJUAvXEFsUeoaohDe/Kr84MTjGwcuIUPNcstNJORsA==} engines: {node: '>= 10.13'} @@ -12849,566 +12900,6 @@ packages: resolution: {integrity: sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==} dev: true - /@radix-ui/number@1.0.1: - resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==} - dependencies: - '@babel/runtime': 7.24.7 - dev: true - - /@radix-ui/primitive@1.0.1: - resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} - dependencies: - '@babel/runtime': 7.24.7 - dev: true - - /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1): - 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 - dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@types/react': 18.3.1 - '@types/react-dom': 18.3.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - dev: true - - /@radix-ui/react-collection@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1): - 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 - dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/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.1)(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.1)(react@18.3.1) - '@types/react': 18.3.1 - '@types/react-dom': 18.3.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - dev: true - - /@radix-ui/react-compose-refs@1.0.1(@types/react@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.24.7 - '@types/react': 18.3.1 - react: 18.3.1 - dev: true - - /@radix-ui/react-context@1.0.1(@types/react@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.24.7 - '@types/react': 18.3.1 - react: 18.3.1 - dev: true - - /@radix-ui/react-direction@1.0.1(@types/react@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.24.7 - '@types/react': 18.3.1 - react: 18.3.1 - dev: true - - /@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1): - 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 - dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/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.1)(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.3.1)(react@18.3.1) - '@types/react': 18.3.1 - '@types/react-dom': 18.3.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - dev: true - - /@radix-ui/react-focus-guards@1.0.1(@types/react@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.24.7 - '@types/react': 18.3.1 - react: 18.3.1 - dev: true - - /@radix-ui/react-focus-scope@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1): - 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 - dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/react-compose-refs': 1.0.1(@types/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.1)(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@types/react': 18.3.1 - '@types/react-dom': 18.3.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - dev: true - - /@radix-ui/react-id@1.0.1(@types/react@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@types/react': 18.3.1 - react: 18.3.1 - dev: true - - /@radix-ui/react-popper@1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1): - 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 - dependencies: - '@babel/runtime': 7.24.7 - '@floating-ui/react-dom': 2.0.1(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/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.1)(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@radix-ui/rect': 1.0.1 - '@types/react': 18.3.1 - '@types/react-dom': 18.3.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - dev: true - - /@radix-ui/react-portal@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1): - 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 - dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@types/react': 18.3.1 - '@types/react-dom': 18.3.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - dev: true - - /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1): - 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 - dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.1)(react@18.3.1) - '@types/react': 18.3.1 - '@types/react-dom': 18.3.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - dev: true - - /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1): - 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 - dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/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.1)(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@types/react': 18.3.1 - '@types/react-dom': 18.3.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - dev: true - - /@radix-ui/react-select@1.2.2(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1): - 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 - dependencies: - '@babel/runtime': 7.24.7 - '@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.1)(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.1)(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@types/react': 18.3.1 - '@types/react-dom': 18.3.0 - aria-hidden: 1.2.2(@types/react@18.3.1)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.5.5(@types/react@18.3.1)(react@18.3.1) - dev: true - - /@radix-ui/react-separator@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1): - 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 - dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@types/react': 18.3.1 - '@types/react-dom': 18.3.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - dev: true - - /@radix-ui/react-slot@1.0.2(@types/react@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@types/react': 18.3.1 - react: 18.3.1 - dev: true - - /@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1): - 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 - dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/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.1)(react-dom@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.1)(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@types/react': 18.3.1 - '@types/react-dom': 18.3.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - dev: true - - /@radix-ui/react-toggle@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1): - 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 - dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@types/react': 18.3.1 - '@types/react-dom': 18.3.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - dev: true - - /@radix-ui/react-toolbar@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1): - 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 - dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/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.1)(react-dom@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.1)(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-separator': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@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.1)(react-dom@18.3.1)(react@18.3.1) - '@types/react': 18.3.1 - '@types/react-dom': 18.3.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - dev: true - - /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.24.7 - '@types/react': 18.3.1 - react: 18.3.1 - dev: true - - /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@types/react': 18.3.1 - react: 18.3.1 - dev: true - - /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@types/react': 18.3.1 - react: 18.3.1 - dev: true - - /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.24.7 - '@types/react': 18.3.1 - react: 18.3.1 - dev: true - - /@radix-ui/react-use-previous@1.0.1(@types/react@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.24.7 - '@types/react': 18.3.1 - react: 18.3.1 - dev: true - - /@radix-ui/react-use-rect@1.0.1(@types/react@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/rect': 1.0.1 - '@types/react': 18.3.1 - react: 18.3.1 - dev: true - - /@radix-ui/react-use-size@1.0.1(@types/react@18.3.1)(react@18.3.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 - dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.1)(react@18.3.1) - '@types/react': 18.3.1 - react: 18.3.1 - dev: true - - /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1): - 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 - dependencies: - '@babel/runtime': 7.24.7 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@types/react': 18.3.1 - '@types/react-dom': 18.3.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - dev: true - - /@radix-ui/rect@1.0.1: - resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} - dependencies: - '@babel/runtime': 7.24.7 - dev: true - /@react-spring/animated@9.6.1(react@18.3.1): resolution: {integrity: sha512-ls/rJBrAqiAYozjLo5EPPLLOb1LM0lNVQcXODTC1SMtS6DbuBCPaKco5svFUQFMP2dso3O+qcC4k9FsKc0KxMQ==} peerDependencies: @@ -14038,21 +13529,6 @@ packages: picomatch: 2.3.1 dev: true - /@rollup/pluginutils@5.0.5(rollup@4.14.3): - resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@types/estree': 1.0.5 - estree-walker: 2.0.2 - picomatch: 2.3.1 - rollup: 4.14.3 - dev: true - /@rollup/pluginutils@5.1.0(rollup@4.14.3): resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} @@ -14430,6 +13906,11 @@ packages: engines: {node: '>=18'} dev: true + /@sindresorhus/merge-streams@2.3.0: + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} + engines: {node: '>=18'} + dev: true + /@sinonjs/commons@3.0.0: resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} dependencies: @@ -14442,371 +13923,187 @@ packages: '@sinonjs/commons': 3.0.0 dev: true - /@storybook/addon-actions@7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-v3yL6Eq/jCiXfA24JjRdbEQUuorms6tmrywaKcd1tAy4Ftgof0KHB4tTcTyiajrI5bh6PVJoRBkE8IDqmNAHkA==} + /@storybook/addon-actions@8.2.8(storybook@8.2.8): + resolution: {integrity: sha512-dyajqsMNAUktpi7aiml0Fsm4ey8Nh2YwRyTDuTJZ1iJFcFyARqfr5iKH4/qElq80y0FYXGgGRJB+dKJsCdefLw==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + storybook: ^8.2.8 dependencies: - '@storybook/client-logger': 7.5.3 - '@storybook/components': 7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@storybook/core-events': 7.5.3 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.5.3(react-dom@18.3.1)(react@18.3.1) - '@storybook/preview-api': 7.5.3 - '@storybook/theming': 7.5.3(react-dom@18.3.1)(react@18.3.1) - '@storybook/types': 7.5.3 + '@types/uuid': 9.0.8 + dequal: 2.0.3 + polished: 4.2.2 + storybook: 8.2.8 + uuid: 9.0.1 + dev: true + + /@storybook/addon-backgrounds@8.2.8(storybook@8.2.8): + resolution: {integrity: sha512-OqXGpq8KzWwAAQWPnby/v4ayWuUAB18Twgi6zeb+QNLEQdFnSp7kz6+4mP8ZVg8RS3ACGXD31nnvvlF7GYoJjQ==} + peerDependencies: + storybook: ^8.2.8 + dependencies: + '@storybook/global': 5.0.0 + memoizerific: 1.11.3 + storybook: 8.2.8 + ts-dedent: 2.2.0 + dev: true + + /@storybook/addon-controls@8.2.8(storybook@8.2.8): + resolution: {integrity: sha512-adhg68CSFaR/r95rgyKU4ZzWwZz+MU0c4vr9hqrR1UGvg/zl33IZQQzb5j5v3Axo0O31yPMaY6LRty7pOv3+/Q==} + peerDependencies: + storybook: ^8.2.8 + dependencies: dequal: 2.0.3 lodash: 4.17.21 - polished: 4.2.2 - prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-inspector: 6.0.1(react@18.3.1) - telejson: 7.2.0 + storybook: 8.2.8 ts-dedent: 2.2.0 - uuid: 9.0.0 - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' dev: true - /@storybook/addon-backgrounds@7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-UCOVd4UNIL5FRiwi9nyiWFocn/7ewwS6bIWnq66AaHg/sv92YwsPmgQJn0DMBGDOvUAWpiHdVsZNOTX6nvw4gA==} + /@storybook/addon-docs@8.2.8(storybook@8.2.8): + resolution: {integrity: sha512-8hqUYYveJjR3e/XdXt0vduA7TxFRIFWgXoa9jN5axa63kqfiHcfkpFYPjM8jCRhsfDIRgdrwe2qxsA0wewO1pA==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + storybook: ^8.2.8 dependencies: - '@storybook/client-logger': 7.5.3 - '@storybook/components': 7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@storybook/core-events': 7.5.3 + '@babel/core': 7.24.7 + '@mdx-js/react': 3.0.1(@types/react@18.3.1)(react@18.3.1) + '@storybook/blocks': 8.2.8(react-dom@18.3.1)(react@18.3.1)(storybook@8.2.8) + '@storybook/csf-plugin': 8.2.8(storybook@8.2.8) '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.5.3(react-dom@18.3.1)(react@18.3.1) - '@storybook/preview-api': 7.5.3 - '@storybook/theming': 7.5.3(react-dom@18.3.1)(react@18.3.1) - '@storybook/types': 7.5.3 - memoizerific: 1.11.3 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - dev: true - - /@storybook/addon-controls@7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-KEuU4X5Xr6cJI9xrzOUVGEmUf1iHPfK7cj0GACKv0GElsdIsQryv+OZ7gRnvmNax/e2hm2t9cJcFxB24/p6rVg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - dependencies: - '@storybook/blocks': 7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@storybook/client-logger': 7.5.3 - '@storybook/components': 7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@storybook/core-common': 7.5.3 - '@storybook/core-events': 7.5.3 - '@storybook/manager-api': 7.5.3(react-dom@18.3.1)(react@18.3.1) - '@storybook/node-logger': 7.5.3 - '@storybook/preview-api': 7.5.3 - '@storybook/theming': 7.5.3(react-dom@18.3.1)(react@18.3.1) - '@storybook/types': 7.5.3 - lodash: 4.17.21 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - encoding - - supports-color - dev: true - - /@storybook/addon-docs@7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-JVQ6iCXKESij/SbE4Wq47dkSSgBRulvA8SUf8NWL5m9qpiHrg0lPSERHfoTLiB5uC/JwF0OKIlhxoWl+zCmtYg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@jest/transform': 29.5.0 - '@mdx-js/react': 2.3.0(react@18.3.1) - '@storybook/blocks': 7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@storybook/client-logger': 7.5.3 - '@storybook/components': 7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@storybook/csf-plugin': 7.5.3 - '@storybook/csf-tools': 7.5.3 - '@storybook/global': 5.0.0 - '@storybook/mdx2-csf': 1.0.0 - '@storybook/node-logger': 7.5.3 - '@storybook/postinstall': 7.5.3 - '@storybook/preview-api': 7.5.3 - '@storybook/react-dom-shim': 7.5.3(react-dom@18.3.1)(react@18.3.1) - '@storybook/theming': 7.5.3(react-dom@18.3.1)(react@18.3.1) - '@storybook/types': 7.5.3 + '@storybook/react-dom-shim': 8.2.8(react-dom@18.3.1)(react@18.3.1)(storybook@8.2.8) + '@types/react': 18.3.1 fs-extra: 11.2.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - remark-external-links: 8.0.0 - remark-slug: 6.1.0 + rehype-external-links: 3.0.0 + rehype-slug: 6.0.0 + storybook: 8.2.8 ts-dedent: 2.2.0 transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - encoding - supports-color dev: true - /@storybook/addon-essentials@7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-PYj6swEI4nEzIbOTyHJB8u3K8ABYKoaW8XB5emMwsnrzB/TN7auHVhze2bQ/+ax5wyPKZpArPjxbWlSHtSws+A==} + /@storybook/addon-essentials@8.2.8(storybook@8.2.8): + resolution: {integrity: sha512-NRbFv2ociM1l/Oi/1go/ZC5bUU41n9aKD1DzIbguEKBhUs/TGAES+f5x+7DvYnt3Hvd925/FyTXuMU+vNUeiUA==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + storybook: ^8.2.8 dependencies: - '@storybook/addon-actions': 7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@storybook/addon-backgrounds': 7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@storybook/addon-controls': 7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@storybook/addon-docs': 7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@storybook/addon-highlight': 7.5.3 - '@storybook/addon-measure': 7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@storybook/addon-outline': 7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@storybook/addon-toolbars': 7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@storybook/addon-viewport': 7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@storybook/core-common': 7.5.3 - '@storybook/manager-api': 7.5.3(react-dom@18.3.1)(react@18.3.1) - '@storybook/node-logger': 7.5.3 - '@storybook/preview-api': 7.5.3 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@storybook/addon-actions': 8.2.8(storybook@8.2.8) + '@storybook/addon-backgrounds': 8.2.8(storybook@8.2.8) + '@storybook/addon-controls': 8.2.8(storybook@8.2.8) + '@storybook/addon-docs': 8.2.8(storybook@8.2.8) + '@storybook/addon-highlight': 8.2.8(storybook@8.2.8) + '@storybook/addon-measure': 8.2.8(storybook@8.2.8) + '@storybook/addon-outline': 8.2.8(storybook@8.2.8) + '@storybook/addon-toolbars': 8.2.8(storybook@8.2.8) + '@storybook/addon-viewport': 8.2.8(storybook@8.2.8) + storybook: 8.2.8 ts-dedent: 2.2.0 transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - encoding - supports-color dev: true - /@storybook/addon-highlight@7.5.3: - resolution: {integrity: sha512-jb+aNRhj+tFK7EqqTlNCjGkTrkWqWHGdD1ubgnj29v8XhRuCR9YboPS+306KYwBEkuF4kNCHZofLiEBPf6nCJg==} + /@storybook/addon-highlight@8.2.8(storybook@8.2.8): + resolution: {integrity: sha512-IM1pPx6CCZbHV0bv3oB1qBCGDsr8soq7XLl93tc7mc4hstWSDFfNn7rx4CWycSlCqXlNTKh8cEkbrPrhV9cwbg==} + peerDependencies: + storybook: ^8.2.8 dependencies: - '@storybook/core-events': 7.5.3 '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.5.3 + storybook: 8.2.8 dev: true - /@storybook/addon-measure@7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-fun9BqUTGXgcMpcbX9wUowGDkjCL8oKasZbjp/MvGM3vPTM6HQdwzHTLJGPBnmJ1xK92NhwFRs0BrQX6uF1yrg==} + /@storybook/addon-interactions@8.2.8(@types/jest@29.4.0)(jest@29.4.3)(storybook@8.2.8)(vitest@1.3.1): + resolution: {integrity: sha512-ggctlrSlK72xMfhviHHRslZF5tr9aHr1VFwCG/tjF7s1lM3S7OGqgHLJpcja/wNREvq9GMEvX95ZSu5NMh5CtA==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + storybook: ^8.2.8 dependencies: - '@storybook/client-logger': 7.5.3 - '@storybook/components': 7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@storybook/core-events': 7.5.3 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.5.3(react-dom@18.3.1)(react@18.3.1) - '@storybook/preview-api': 7.5.3 - '@storybook/types': 7.5.3 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - tiny-invariant: 1.3.1 - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - dev: true - - /@storybook/addon-outline@7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-c9vCi1SCGrtWr8qaOu/1GNWlrlrpl2lg4F9r+xtYf/KopenI3jSMz0YeTfmepZGAl+6Yc2Ywhm60jgpQ6SKciA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - dependencies: - '@storybook/client-logger': 7.5.3 - '@storybook/components': 7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@storybook/core-events': 7.5.3 - '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.5.3(react-dom@18.3.1)(react@18.3.1) - '@storybook/preview-api': 7.5.3 - '@storybook/types': 7.5.3 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@storybook/instrumenter': 8.2.8(storybook@8.2.8) + '@storybook/test': 8.2.8(@types/jest@29.4.0)(jest@29.4.3)(storybook@8.2.8)(vitest@1.3.1) + polished: 4.2.2 + storybook: 8.2.8 ts-dedent: 2.2.0 transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' + - '@jest/globals' + - '@types/bun' + - '@types/jest' + - jest + - vitest dev: true - /@storybook/addon-toolbars@7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-KdLr4sGMJzhtjNTNE2ocfu58yOHHUyZ/cI3BTp7a0gq9YbUpHmC3XTNr26/yOYYrdjkiMD26XusJUjXe+/V2xw==} + /@storybook/addon-measure@8.2.8(storybook@8.2.8): + resolution: {integrity: sha512-oqZiX571F9NNy8o/oVyM1Pe2cJz3WJ/OpL0lVbepHrV4ir1f+SDYZdMI58jGBAtoM52cwFc2ZPbzXKQs7a513A==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + storybook: ^8.2.8 dependencies: - '@storybook/client-logger': 7.5.3 - '@storybook/components': 7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@storybook/manager-api': 7.5.3(react-dom@18.3.1)(react@18.3.1) - '@storybook/preview-api': 7.5.3 - '@storybook/theming': 7.5.3(react-dom@18.3.1)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - dev: true - - /@storybook/addon-viewport@7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-gT2XX0NNBrzSs1nrxadl6LnvcwgN7z2R0LzTK8/hxvx4D0EnXrV3feXLzjewr8ZYjzfEeSpO+W+bQTVNm3fNsg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - dependencies: - '@storybook/client-logger': 7.5.3 - '@storybook/components': 7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@storybook/core-events': 7.5.3 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.5.3(react-dom@18.3.1)(react@18.3.1) - '@storybook/preview-api': 7.5.3 - '@storybook/theming': 7.5.3(react-dom@18.3.1)(react@18.3.1) + storybook: 8.2.8 + tiny-invariant: 1.3.3 + dev: true + + /@storybook/addon-outline@8.2.8(storybook@8.2.8): + resolution: {integrity: sha512-Cbk4Z0ojggiXjpbS2c4WUP56yikQdT4O7+8AuBNNjVUHNvJQADWYovi6SvDmrS5dH1iyIkB+4saXMr0syp+BDw==} + peerDependencies: + storybook: ^8.2.8 + dependencies: + '@storybook/global': 5.0.0 + storybook: 8.2.8 + ts-dedent: 2.2.0 + dev: true + + /@storybook/addon-toolbars@8.2.8(storybook@8.2.8): + resolution: {integrity: sha512-k64G3FUpX3H/mhJ7AG1r/4Drsk6cdUtxI3yVdgWb7O3Ka7v/OFZexRXRSiV03n5q/kaqVKDu96Tuog57+7EB4w==} + peerDependencies: + storybook: ^8.2.8 + dependencies: + storybook: 8.2.8 + dev: true + + /@storybook/addon-viewport@8.2.8(storybook@8.2.8): + resolution: {integrity: sha512-/JZeIgB33yhryUvWaNO+3t9akcS8nGLyAUmlljPFr3LUDDYrO/0H9tE4CgjLqtwCXBq3k3s0HLzEJOrKI9Tmbw==} + peerDependencies: + storybook: ^8.2.8 + dependencies: memoizerific: 1.11.3 - prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' + storybook: 8.2.8 dev: true - /@storybook/addons@7.0.7(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-it8NWXsdm3dhjc237d9jj7dGJf6eHDfuDv12nirV64J1dzWrnW+lONeZMPMgxxdLlgYfxH52fLgjcw/dAC/E+Q==} + /@storybook/blocks@8.2.8(react-dom@18.3.1)(react@18.3.1)(storybook@8.2.8): + resolution: {integrity: sha512-AHBXu9s73Xv9r1JageIL7C4eGf5XYEByai4Y6NYQsE+jF7b7e8oaSUoLW6fWSyLGuqvjRx+5P7GMNI2K1EngBA==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@storybook/manager-api': 7.0.7(react-dom@18.3.1)(react@18.3.1) - '@storybook/preview-api': 7.0.7 - '@storybook/types': 7.0.7 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - dev: true - - /@storybook/api@7.0.7(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-0++LcK6PX1Z2HsI9fyZyqvmeFrB5NDMcsbmIvJfA2NfK92UW8y7t6Ft2fq/2jUCJcWT8Jp3xpatUvYb28irfwg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + 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: ^8.2.8 peerDependenciesMeta: react: optional: true react-dom: optional: true dependencies: - '@storybook/client-logger': 7.0.7 - '@storybook/manager-api': 7.0.7(react-dom@18.3.1)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - dev: true - - /@storybook/blocks@7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-Z8yF820v78clQWkwG5OA5qugbQn7rtutq9XCsd03NDB+IEfDaTFQAZG8gs62ZX2ZaXAJsqJSr/mL9oURzXto2A==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@storybook/channels': 7.5.3 - '@storybook/client-logger': 7.5.3 - '@storybook/components': 7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@storybook/core-events': 7.5.3 - '@storybook/csf': 0.1.0 - '@storybook/docs-tools': 7.5.3 + '@storybook/csf': 0.1.11 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.5.3(react-dom@18.3.1)(react@18.3.1) - '@storybook/preview-api': 7.5.3 - '@storybook/theming': 7.5.3(react-dom@18.3.1)(react@18.3.1) - '@storybook/types': 7.5.3 + '@storybook/icons': 1.2.10(react-dom@18.3.1)(react@18.3.1) '@types/lodash': 4.14.197 color-convert: 2.0.1 dequal: 2.0.3 lodash: 4.17.21 - markdown-to-jsx: 7.2.0(react@18.3.1) + markdown-to-jsx: 7.4.7(react@18.3.1) memoizerific: 1.11.3 polished: 4.2.2 react: 18.3.1 react-colorful: 5.6.1(react-dom@18.3.1)(react@18.3.1) react-dom: 18.3.1(react@18.3.1) + storybook: 8.2.8 telejson: 7.2.0 - tocbot: 4.21.1 ts-dedent: 2.2.0 util-deprecate: 1.0.2 - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - encoding - - supports-color dev: true - /@storybook/builder-manager@7.5.3: - resolution: {integrity: sha512-uf4Vyj8ofHaq94m065SMvFKak1XrrxgI83VZAxc2QjiPcbRwcVOZd+wcKFdZydqqA6FlBDdJrU+k9INA4Qkfcw==} - dependencies: - '@fal-works/esbuild-plugin-global-externals': 2.1.2 - '@storybook/core-common': 7.5.3 - '@storybook/manager': 7.5.3 - '@storybook/node-logger': 7.5.3 - '@types/ejs': 3.1.2 - '@types/find-cache-dir': 3.2.1 - '@yarnpkg/esbuild-plugin-pnp': 3.0.0-rc.15(esbuild@0.18.17) - browser-assert: 1.2.1 - ejs: 3.1.8 - esbuild: 0.18.17 - esbuild-plugin-alias: 0.2.1 - express: 4.19.2 - find-cache-dir: 3.3.2 - fs-extra: 11.2.0 - process: 0.11.10 - util: 0.12.5 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - - /@storybook/builder-vite@7.5.3(typescript@5.5.3)(vite@5.0.8): - resolution: {integrity: sha512-c104V3O75OCVnfZj0Jr70V09g0KSbPGvQK2Zh31omXGvakG8XrhWolYxkmjOcForJmAqsXnKs/nw3F75Gp853g==} + /@storybook/builder-vite@8.2.8(storybook@8.2.8)(typescript@5.5.3)(vite@5.0.8): + resolution: {integrity: sha512-p9EJfZkX9ZsVi1Qr3jYyCJaZZ/2pt0KVTOYnDzNnhi3P/suU6O3Lp/YCV5+KOfAmlg2IgTND0EidqZinqPIBSg==} peerDependencies: '@preact/preset-vite': '*' + storybook: ^8.2.8 typescript: '>= 4.3.x' - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + vite: ^4.0.0 || ^5.0.0 vite-plugin-glimmerx: '*' peerDependenciesMeta: '@preact/preset-vite': @@ -14816,323 +14113,152 @@ packages: vite-plugin-glimmerx: optional: true dependencies: - '@storybook/channels': 7.5.3 - '@storybook/client-logger': 7.5.3 - '@storybook/core-common': 7.5.3 - '@storybook/csf-plugin': 7.5.3 - '@storybook/node-logger': 7.5.3 - '@storybook/preview': 7.5.3 - '@storybook/preview-api': 7.5.3 - '@storybook/types': 7.5.3 + '@storybook/csf-plugin': 8.2.8(storybook@8.2.8) '@types/find-cache-dir': 3.2.1 browser-assert: 1.2.1 - es-module-lexer: 0.9.3 + es-module-lexer: 1.5.4 express: 4.19.2 find-cache-dir: 3.3.2 fs-extra: 11.2.0 magic-string: 0.30.10 - rollup: 3.28.0 + storybook: 8.2.8 + ts-dedent: 2.2.0 typescript: 5.5.3 vite: 5.0.8(@types/node@18.19.8)(less@4.1.3)(sass@1.55.0)(stylus@0.59.0) transitivePeerDependencies: - - encoding - supports-color dev: true - /@storybook/builder-webpack5@7.5.3(@swc/helpers@0.5.11)(esbuild@0.19.5)(typescript@5.5.3)(webpack-cli@5.1.4): - resolution: {integrity: sha512-a2kHXFT61AV1+OPNTqXCsYk7Wk4XSqjAOQkSxWc1HK+kyMT+lahO4U06slji6XAVuXc/KY+naNUoaOfpB1hKVw==} + /@storybook/builder-webpack5@8.2.8(@swc/core@1.5.7)(esbuild@0.19.5)(storybook@8.2.8)(typescript@5.5.3)(webpack-cli@5.1.4): + resolution: {integrity: sha512-1eH8OYcsjkFtpodJNsrrgDsR7oDPLpo7FdoF67S9g/mRxTl1RCwhMVdeBHgtfge9kHQ1TlpK9tTXine4G3uA3Q==} peerDependencies: + storybook: ^8.2.8 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@babel/core': 7.23.9 - '@storybook/channels': 7.5.3 - '@storybook/client-logger': 7.5.3 - '@storybook/core-common': 7.5.3 - '@storybook/core-events': 7.5.3 - '@storybook/core-webpack': 7.5.3 - '@storybook/node-logger': 7.5.3 - '@storybook/preview': 7.5.3 - '@storybook/preview-api': 7.5.3 - '@swc/core': 1.5.7(@swc/helpers@0.5.11) + '@storybook/core-webpack': 8.2.8(storybook@8.2.8) '@types/node': 18.19.8 '@types/semver': 7.5.2 - babel-loader: 9.1.3(@babel/core@7.23.9)(webpack@5.88.0) - babel-plugin-named-exports-order: 0.0.2 browser-assert: 1.2.1 case-sensitive-paths-webpack-plugin: 2.4.0 + cjs-module-lexer: 1.2.3 constants-browserify: 1.0.0 css-loader: 6.10.0(webpack@5.88.0) + es-module-lexer: 1.5.4 express: 4.19.2 fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.5.3)(webpack@5.88.0) fs-extra: 11.2.0 html-webpack-plugin: 5.5.0(webpack@5.88.0) + magic-string: 0.30.10 path-browserify: 1.0.1 process: 0.11.10 semver: 7.6.2 + storybook: 8.2.8 style-loader: 3.3.1(webpack@5.88.0) - swc-loader: 0.2.3(@swc/core@1.5.7)(webpack@5.88.0) - terser-webpack-plugin: 5.3.9(@swc/core@1.5.7)(esbuild@0.19.5)(webpack@5.88.0) + terser-webpack-plugin: 5.3.10(@swc/core@1.5.7)(esbuild@0.19.5)(webpack@5.88.0) ts-dedent: 2.2.0 typescript: 5.5.3 url: 0.11.1 util: 0.12.5 util-deprecate: 1.0.2 webpack: 5.88.0(@swc/core@1.5.7)(esbuild@0.19.5)(webpack-cli@5.1.4) - webpack-dev-middleware: 6.1.1(webpack@5.88.0) + webpack-dev-middleware: 6.1.3(webpack@5.88.0) webpack-hot-middleware: 2.25.3 - webpack-virtual-modules: 0.5.0 + webpack-virtual-modules: 0.6.1 transitivePeerDependencies: - '@rspack/core' - - '@swc/helpers' - - encoding + - '@swc/core' - esbuild - supports-color - uglify-js - webpack-cli dev: true - /@storybook/channel-postmessage@7.0.7: - resolution: {integrity: sha512-XMtYfcaE0UoY/V7K1cTu9PcWETD4iyWb/Yswc4F9VrPw0Ui4UwGS1j4iaAu8DC06yyoJs4XvxYFBMlCQmKja6A==} + /@storybook/codemod@8.2.8: + resolution: {integrity: sha512-dqD4j6JTsS8BM2y1yHBIe5fHvsGM08qpJQXkE77aXJIm5UfUeuWC7rY0xAheX3fU5G98l3BJk0ySUGspQL5pNg==} dependencies: - '@storybook/channels': 7.0.7 - '@storybook/client-logger': 7.0.7 - '@storybook/core-events': 7.0.7 - '@storybook/global': 5.0.0 - qs: 6.11.0 - telejson: 7.1.0 - dev: true - - /@storybook/channels@7.0.7: - resolution: {integrity: sha512-Om4ovBLNw8pVrBu83MpOKgAuGO9Dpr1Coh2qp8t64WRPkejX1mxOY9IgH723//zH3igx8LCkf9rvBvcrsyaScQ==} - dev: true - - /@storybook/channels@7.1.1: - resolution: {integrity: sha512-uhkZFtLIeRnbBhyLlvQAZQmsRbftX/YMGQL+9WRzICrCkwl4xfZPAvMxEgCj1iJzNFcaX5ma9XzHb7q/i+wUCw==} - dependencies: - '@storybook/client-logger': 7.1.1 - '@storybook/core-events': 7.1.1 - '@storybook/global': 5.0.0 - qs: 6.11.0 - telejson: 7.1.0 - tiny-invariant: 1.3.1 - dev: true - - /@storybook/channels@7.5.3: - resolution: {integrity: sha512-dhWuV2o2lmxH0RKuzND8jxYzvSQTSmpE13P0IT/k8+I1up/rSNYOBQJT6SalakcNWXFAMXguo/8E7ApmnKKcEw==} - dependencies: - '@storybook/client-logger': 7.5.3 - '@storybook/core-events': 7.5.3 - '@storybook/global': 5.0.0 - qs: 6.11.0 - telejson: 7.2.0 - tiny-invariant: 1.3.1 - dev: true - - /@storybook/client-logger@7.0.7: - resolution: {integrity: sha512-EclHjDs5HwHMKB4X2orn/KKA0DTIDmp4AXAUJGRfxb5ArpKEb7tXLHsgrRBlaoz1j5LAwKTmEyZOONh9G3etjg==} - dependencies: - '@storybook/global': 5.0.0 - dev: true - - /@storybook/client-logger@7.1.1: - resolution: {integrity: sha512-R0bdVjzJ5CwLNAG3XMyMZ0e9XDteBkFkTTIZJ9m+WMh/+oa2PInCpXDxoYb180UI6abrqh1jEaAsrHMC1pTKnA==} - dependencies: - '@storybook/global': 5.0.0 - dev: true - - /@storybook/client-logger@7.5.3: - resolution: {integrity: sha512-vUFYALypjix5FoJ5M/XUP6KmyTnQJNW1poHdW7WXUVSg+lBM6E5eAtjTm0hdxNNDH8KSrdy24nCLra5h0X0BWg==} - dependencies: - '@storybook/global': 5.0.0 - dev: true - - /@storybook/components@7.0.7(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-6PLs9LMkBuhH/w4bSJ72tYgICMbOOIHuoB/fQdVlzhsdnXL2fM/v4RVW2N7v+Oz3lYXp/JtV8V9Ub8h6eDQKXg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@storybook/client-logger': 7.0.7 - '@storybook/csf': 0.1.0 - '@storybook/global': 5.0.0 - '@storybook/theming': 7.0.7(react-dom@18.3.1)(react@18.3.1) - '@storybook/types': 7.0.7 - 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) - util-deprecate: 1.0.2 - dev: true - - /@storybook/components@7.5.3(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-M3+cjvEsDGLUx8RvK5wyF6/13LNlUnKbMgiDE8Sxk/v/WPpyhOAIh/B8VmrU1psahS61Jd4MTkFmLf1cWau1vw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@radix-ui/react-select': 1.2.2(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) - '@storybook/client-logger': 7.5.3 - '@storybook/csf': 0.1.0 - '@storybook/global': 5.0.0 - '@storybook/theming': 7.5.3(react-dom@18.3.1)(react@18.3.1) - '@storybook/types': 7.5.3 - 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) - util-deprecate: 1.0.2 - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - dev: true - - /@storybook/core-client@7.5.3: - resolution: {integrity: sha512-sIviDytbhos02TVXxU8XLymzty7IAtLs5e16hv49JSdBp47iBajRaNBmBj/l+sgTH+3M+R6gP8yGFMsZSCnU2g==} - dependencies: - '@storybook/client-logger': 7.5.3 - '@storybook/preview-api': 7.5.3 - dev: true - - /@storybook/core-common@7.5.3: - resolution: {integrity: sha512-WGMwjtVUxUzFwQz7Mgs0gLuNebIGNV55dCdZgurx2/y6QOkJ2v8D0b3iL+xKMV4B5Nwoc2DsM418Y+Hy3UQd+w==} - dependencies: - '@storybook/core-events': 7.5.3 - '@storybook/node-logger': 7.5.3 - '@storybook/types': 7.5.3 - '@types/find-cache-dir': 3.2.1 - '@types/node': 18.19.8 - '@types/node-fetch': 2.6.4 - '@types/pretty-hrtime': 1.0.1 - chalk: 4.1.2 - esbuild: 0.18.17 - esbuild-register: 3.5.0(esbuild@0.18.17) - file-system-cache: 2.3.0 - find-cache-dir: 3.3.2 - find-up: 5.0.0 - fs-extra: 11.2.0 - glob: 10.2.2 - handlebars: 4.7.7 - lazy-universal-dotenv: 4.0.0 - node-fetch: 2.6.12 - picomatch: 2.3.1 - pkg-dir: 5.0.0 - pretty-hrtime: 1.0.3 - resolve-from: 5.0.0 - ts-dedent: 2.2.0 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - - /@storybook/core-events@7.0.2: - resolution: {integrity: sha512-1DCHCwHRL3+rlvnVVc/BCfReP31XaT2WYgcLeGTmkX1E43Po1MkgcM7PnJPSaa9POvSqZ+6YLZv5Bs1SXbufow==} - dev: true - - /@storybook/core-events@7.0.7: - resolution: {integrity: sha512-XNsR2RgaL2vBwuqsu+KA1DzGmB1UFfrAhpxhmyWTKDCniwtTLlaXgfKbqwcrOrPu/o1YswgIup/9UHepRHaf4A==} - dev: true - - /@storybook/core-events@7.1.1: - resolution: {integrity: sha512-P5iI4zvCJo85de/sghglEHFK/GGkWAQQKzRFrz9kbVBX5LNaosfD7IYHIz/6ZWNPzxWR+RBOKcrRUfcArL4Njg==} - dev: true - - /@storybook/core-events@7.5.3: - resolution: {integrity: sha512-DFOpyQ22JD5C1oeOFzL8wlqSWZzrqgDfDbUGP8xdO4wJu+FVTxnnWN6ZYLdTPB1u27DOhd7TzjQMfLDHLu7kbQ==} - dependencies: - ts-dedent: 2.2.0 - dev: true - - /@storybook/core-server@7.5.3: - resolution: {integrity: sha512-Gmq1w7ulN/VIeTDboNcb6GNM+S8T0SqhJUqeoHzn0vLGnzxeuYRJ0V3ZJhGZiJfSmCNqYAjC8QUBf6uU1gLipw==} - dependencies: - '@aw-web-design/x-default-browser': 1.4.126 - '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-manager': 7.5.3 - '@storybook/channels': 7.5.3 - '@storybook/core-common': 7.5.3 - '@storybook/core-events': 7.5.3 - '@storybook/csf': 0.1.0 - '@storybook/csf-tools': 7.5.3 - '@storybook/docs-mdx': 0.1.0 - '@storybook/global': 5.0.0 - '@storybook/manager': 7.5.3 - '@storybook/node-logger': 7.5.3 - '@storybook/preview-api': 7.5.3 - '@storybook/telemetry': 7.5.3 - '@storybook/types': 7.5.3 - '@types/detect-port': 1.3.2 - '@types/node': 18.19.8 - '@types/pretty-hrtime': 1.0.1 - '@types/semver': 7.5.2 - better-opn: 3.0.2 - chalk: 4.1.2 - cli-table3: 0.6.3 - compression: 1.7.4 - detect-port: 1.5.1 - express: 4.19.2 - fs-extra: 11.1.1 - globby: 11.1.0 - ip: 2.0.0 + '@babel/core': 7.24.7 + '@babel/preset-env': 7.24.7(@babel/core@7.24.7) + '@babel/types': 7.25.2 + '@storybook/core': 8.2.8 + '@storybook/csf': 0.1.11 + '@types/cross-spawn': 6.0.6 + cross-spawn: 7.0.3 + globby: 14.0.2 + jscodeshift: 0.15.2(@babel/preset-env@7.24.7) 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.5.3 - telejson: 7.2.0 - tiny-invariant: 1.3.1 - ts-dedent: 2.2.0 - util: 0.12.5 - util-deprecate: 1.0.2 - watchpack: 2.4.0 - ws: 8.13.0 + prettier: 3.3.3 + recast: 0.23.9 + tiny-invariant: 1.3.3 transitivePeerDependencies: - bufferutil - - encoding - supports-color - utf-8-validate dev: true - /@storybook/core-webpack@7.5.3: - resolution: {integrity: sha512-dhC94VeLwyPtZ2gvEND6J4alMaiFDsK8lJCYPNAahUr56f3nRDyVibE7prd94sAlfrdind1g5slP9VMP8cX+uQ==} + /@storybook/components@8.2.8(storybook@8.2.8): + resolution: {integrity: sha512-d4fI7Clogx4rgLAM7vZVr9L2EFtAkGXvpkZFuB0H0eyYaxZSbuZYvDCzRglQGQGsqD8IA8URTgPVSXC3L3k6Bg==} + peerDependencies: + storybook: ^8.2.8 + dependencies: + storybook: 8.2.8 + dev: true + + /@storybook/core-events@8.2.8(storybook@8.2.8): + resolution: {integrity: sha512-UOvUyRHj7sDjh9mN65ghG8ZpRbgsXPSoH3jaCIlkV+PiBnwaRA/0FaQ1fGUKW7+KaffMY3rhU4TLhIXlZu6Pgw==} + peerDependencies: + storybook: ^8.2.8 + dependencies: + storybook: 8.2.8 + dev: true + + /@storybook/core-server@8.2.8(storybook@8.2.8): + resolution: {integrity: sha512-ZQrJhGx95+yac6yebARkvQu4a6MvZ7IX8rTBdoGhQiyAgiR+R1+big+/TcSS+2iSxYOKNzbDFsvyIiDp0WWtCw==} + peerDependencies: + storybook: ^8.2.8 + dependencies: + storybook: 8.2.8 + dev: true + + /@storybook/core-webpack@8.2.8(storybook@8.2.8): + resolution: {integrity: sha512-IvrhsDNM/4aTIfUEtYorz9N9S+9gCVkUuUVTNiX0N9a24BFLTcPebtJZYXbguZqxN/NeJMMfk1k7YLU2cBmdjw==} + peerDependencies: + storybook: ^8.2.8 dependencies: - '@storybook/core-common': 7.5.3 - '@storybook/node-logger': 7.5.3 - '@storybook/types': 7.5.3 '@types/node': 18.19.8 + storybook: 8.2.8 ts-dedent: 2.2.0 - transitivePeerDependencies: - - encoding - - supports-color dev: true - /@storybook/csf-plugin@7.5.3: - resolution: {integrity: sha512-yQ3S/IOT08Y7XTnlc3SPkrJKZ6Xld6liAlHn+ddjge4oZa0hUqwYLb+piXUhFMfL6Ij65cj4hu3vMbw89azIhg==} + /@storybook/core@8.2.8: + resolution: {integrity: sha512-Wwm/Txh87hbxqU9OaxXwdGAmdRBjDn7rlZEPjNBx0tt43SQ11fKambY7nVWrWuw46YsJpdF9V/PQr4noNEXXEA==} dependencies: - '@storybook/csf-tools': 7.5.3 + '@storybook/csf': 0.1.11 + '@types/express': 4.17.21 + '@types/node': 18.19.8 + browser-assert: 1.2.1 + esbuild: 0.19.5 + esbuild-register: 3.5.0(esbuild@0.19.5) + express: 4.19.2 + process: 0.11.10 + recast: 0.23.9 + util: 0.12.5 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /@storybook/csf-plugin@8.2.8(storybook@8.2.8): + resolution: {integrity: sha512-CEHY7xloBPE8d8h0wg2AM2kRaZkHK8/vkYMNZPbccqAYj6PQIdTuOcXZIBAhAGydyIBULZmsmmsASxM9RO5fKA==} + peerDependencies: + storybook: ^8.2.8 + dependencies: + storybook: 8.2.8 unplugin: 1.6.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@storybook/csf-tools@7.5.3: - resolution: {integrity: sha512-676C3ISn7FQJKjb3DBWXhjGN2OQEv4s71dx+5D0TlmswDCOOGS8dYFjP8wVx51+mAIE8CROAw7vLHLtVKU7SwQ==} - 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.0 - '@storybook/types': 7.5.3 - fs-extra: 11.2.0 - recast: 0.23.1 - ts-dedent: 2.2.0 - transitivePeerDependencies: - - supports-color dev: true /@storybook/csf@0.0.1: @@ -15141,190 +14267,89 @@ packages: lodash: 4.17.21 dev: true - /@storybook/csf@0.1.0: - resolution: {integrity: sha512-uk+jMXCZ8t38jSTHk2o5btI+aV2Ksbvl6DoOv3r6VaCM1KZqeuMwtwywIQdflkA8/6q/dKT8z8L+g8hC4GC3VQ==} + /@storybook/csf@0.1.11: + resolution: {integrity: sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==} dependencies: type-fest: 2.19.0 dev: true - /@storybook/docs-mdx@0.1.0: - resolution: {integrity: sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg==} - dev: true - - /@storybook/docs-tools@7.5.3: - resolution: {integrity: sha512-f20EUQlwamcSPrOFn42fj9gpkZIDNCZkC3N19yGzLYiE4UMyaYQgRl18oLvqd3M6aBm6UW6SCoIIgeaOViBSqg==} - dependencies: - '@storybook/core-common': 7.5.3 - '@storybook/preview-api': 7.5.3 - '@storybook/types': 7.5.3 - '@types/doctrine': 0.0.3 - doctrine: 3.0.0 - lodash: 4.17.21 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - /@storybook/global@5.0.0: resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} dev: true - /@storybook/manager-api@7.0.7(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-QTd/P72peAhofKqK+8yzIO9iWAEfPn8WUGGveV2KGaTlSlgbr87RLHEKilcXMZcYhBWC9izFRmjKum9ROdskrQ==} + /@storybook/icons@1.2.10(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-310apKdDcjbbX2VSLWPwhEwAgjxTzVagrwucVZIdGPErwiAppX8KvBuWZgPo+rQLVrtH8S+pw1dbUwjcE6d7og==} + 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 dependencies: - '@storybook/channels': 7.0.7 - '@storybook/client-logger': 7.0.7 - '@storybook/core-events': 7.0.7 - '@storybook/csf': 0.1.0 - '@storybook/global': 5.0.0 - '@storybook/router': 7.0.7(react-dom@18.3.1)(react@18.3.1) - '@storybook/theming': 7.0.7(react-dom@18.3.1)(react@18.3.1) - '@storybook/types': 7.0.7 - dequal: 2.0.3 - lodash: 4.17.21 - memoizerific: 1.11.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - semver: 7.6.2 - store2: 2.14.2 - telejson: 7.1.0 - ts-dedent: 2.2.0 dev: true - /@storybook/manager-api@7.5.3(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-d8mVLr/5BEG4bAS2ZeqYTy/aX4jPEpZHdcLaWoB4mAM+PAL9wcWsirUyApKtDVYLITJf/hd8bb2Dm2ok6E45gA==} + /@storybook/instrumenter@8.2.8(storybook@8.2.8): + resolution: {integrity: sha512-6Gk3CzoYQQXBXpW86PKqYSozOB/C9dSYiFvwPRo4XsEfjARDi8yglqkbOtG+FVqKDL66I5krcveB8bTWigqc9g==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + storybook: ^8.2.8 dependencies: - '@storybook/channels': 7.5.3 - '@storybook/client-logger': 7.5.3 - '@storybook/core-events': 7.5.3 - '@storybook/csf': 0.1.0 '@storybook/global': 5.0.0 - '@storybook/router': 7.5.3(react-dom@18.3.1)(react@18.3.1) - '@storybook/theming': 7.5.3(react-dom@18.3.1)(react@18.3.1) - '@storybook/types': 7.5.3 - dequal: 2.0.3 - lodash: 4.17.21 - memoizerific: 1.11.3 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - semver: 7.6.0 - store2: 2.14.2 - telejson: 7.2.0 - ts-dedent: 2.2.0 + '@vitest/utils': 1.3.1 + storybook: 8.2.8 + util: 0.12.5 dev: true - /@storybook/manager@7.5.3: - resolution: {integrity: sha512-3ZZrHYcXWAQXpDQZBvKyScGgQaAaBc63i+KC2mXqzTdXuJhVDUiylvqLRprBnrEprgePQLFrxGC2JSHUwH7dqg==} - dev: true - - /@storybook/mdx2-csf@1.0.0: - resolution: {integrity: sha512-dBAnEL4HfxxJmv7LdEYUoZlQbWj9APZNIbOaq0tgF8XkxiIbzqvgB0jhL/9UOrysSDbQWBiCRTu2wOVxedGfmw==} - dev: true - - /@storybook/node-logger@7.5.3: - resolution: {integrity: sha512-7ZZDw/q3hakBj1FngsBjaHNIBguYAWojp7R1fFTvwkeunCi21EUzZjRBcqp10kB6BP3/NLX32bIQknsCWD76rQ==} - dev: true - - /@storybook/postinstall@7.5.3: - resolution: {integrity: sha512-r+H3xGMu2A9yOSsygc3bDFhku8wpOZF3SqO19B7eAML12viHwUtYfyGL74svw4TMcKukyQ+KPn5QsSG+4bjZMg==} - dev: true - - /@storybook/preset-react-webpack@7.5.3(@babel/core@7.23.2)(@swc/core@1.5.7)(esbuild@0.19.5)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3)(webpack-cli@5.1.4)(webpack-dev-server@5.0.4): - resolution: {integrity: sha512-/3Zsh97KpMLsx3lkkQ9LAlEVWwBGbAJTwE+ueVxVnAJgwiDCVe95IN7sVpKuwN/PVStnMRwDADUvZPfmw4m3Sg==} - engines: {node: '>=16.0.0'} + /@storybook/manager-api@8.2.8(storybook@8.2.8): + resolution: {integrity: sha512-wzfRu3vrD9a99pN3W/RJXVtgNGNsy9PyvetjUfgQVtUZ9eXXDuA+tM7ITTu3xvONtV/rT2YEBwzOpowa+r1GNQ==} peerDependencies: - '@babel/core': ^7.22.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + storybook: ^8.2.8 + dependencies: + storybook: 8.2.8 + dev: true + + /@storybook/preset-react-webpack@8.2.8(@swc/core@1.5.7)(esbuild@0.19.5)(react-dom@18.3.1)(react@18.3.1)(storybook@8.2.8)(typescript@5.5.3)(webpack-cli@5.1.4): + resolution: {integrity: sha512-mFeuoKXn2mielz8rix11QcOZr5sNWIIKZ8Le6PG2jPRfLmLWNgL8vJEVPy8y4lWPfzo+Q2tnNefLbMombtga5w==} + 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 + storybook: ^8.2.8 typescript: '*' peerDependenciesMeta: - '@babel/core': - optional: true typescript: optional: true dependencies: - '@babel/core': 7.23.2 - '@babel/preset-flow': 7.22.5(@babel/core@7.23.2) - '@babel/preset-react': 7.22.5(@babel/core@7.23.2) - '@pmmmwh/react-refresh-webpack-plugin': 0.5.10(react-refresh@0.11.0)(webpack-dev-server@5.0.4)(webpack@5.88.0) - '@storybook/core-webpack': 7.5.3 - '@storybook/docs-tools': 7.5.3 - '@storybook/node-logger': 7.5.3 - '@storybook/react': 7.5.3(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@storybook/core-webpack': 8.2.8(storybook@8.2.8) + '@storybook/react': 8.2.8(react-dom@18.3.1)(react@18.3.1)(storybook@8.2.8)(typescript@5.5.3) '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.5.3)(webpack@5.88.0) '@types/node': 18.19.8 '@types/semver': 7.5.2 - babel-plugin-add-react-displayname: 0.0.5 - babel-plugin-react-docgen: 4.2.1 + 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) - react-refresh: 0.11.0 + resolve: 1.22.8 semver: 7.6.2 + storybook: 8.2.8 + tsconfig-paths: 4.2.0 typescript: 5.5.3 webpack: 5.88.0(@swc/core@1.5.7)(esbuild@0.19.5)(webpack-cli@5.1.4) transitivePeerDependencies: - '@swc/core' - - '@types/webpack' - - encoding - esbuild - - sockjs-client - supports-color - - type-fest - uglify-js - webpack-cli - - webpack-dev-server - - webpack-hot-middleware - - webpack-plugin-serve dev: true - /@storybook/preview-api@7.0.7: - resolution: {integrity: sha512-R5pmGTodpu6hbwEg2RM2ulWtW3d426YzsisHrZJ+FT9lecWauN1y9xHCz7HdNzEFhT8r4YOa24L9ZS3mosZ7hA==} + /@storybook/preview-api@8.2.8(storybook@8.2.8): + resolution: {integrity: sha512-BDt1lo5oEWAaTVCsl6JUHCBFtIWI/Za4qvIdn2Lx9eCA+Ae6IDliosmu273DcvGD9R4OPF6sm1dML3TXILGGcA==} + peerDependencies: + storybook: ^8.2.8 dependencies: - '@storybook/channel-postmessage': 7.0.7 - '@storybook/channels': 7.0.7 - '@storybook/client-logger': 7.0.7 - '@storybook/core-events': 7.0.7 - '@storybook/csf': 0.1.0 - '@storybook/global': 5.0.0 - '@storybook/types': 7.0.7 - '@types/qs': 6.9.7 - dequal: 2.0.3 - lodash: 4.17.21 - memoizerific: 1.11.3 - qs: 6.11.0 - synchronous-promise: 2.0.16 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - dev: true - - /@storybook/preview-api@7.5.3: - resolution: {integrity: sha512-LNmEf7oBRnZ1wG3bQ+P+TO29+NN5pSDJiAA6FabZBrtIVm+psc2lxBCDQvFYyAFzQSlt60toGKNW8+RfFNdR5Q==} - dependencies: - '@storybook/channels': 7.5.3 - '@storybook/client-logger': 7.5.3 - '@storybook/core-events': 7.5.3 - '@storybook/csf': 0.1.0 - '@storybook/global': 5.0.0 - '@storybook/types': 7.5.3 - '@types/qs': 6.9.7 - dequal: 2.0.3 - lodash: 4.17.21 - memoizerific: 1.11.3 - qs: 6.11.0 - synchronous-promise: 2.0.16 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - dev: true - - /@storybook/preview@7.5.3: - resolution: {integrity: sha512-Hf90NlLaSrdMZXPOHDCMPjTywVrQKK0e5CtzqWx/ZQz91JDINxJD+sGj2wZU+wuBtQcTtlsXc9OewlJ+9ETwIw==} + storybook: 8.2.8 dev: true /@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.5.3)(webpack@5.88.0): @@ -15346,100 +14371,95 @@ packages: - supports-color dev: true - /@storybook/react-dom-shim@7.5.3(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-9aNcKdhoP36jMrcXgfzE9jVg/SpqPpWnUJM70upYoZXytG2wQSPtawLHHyC6kycvTzwncyfF3rwUnOFBB8zmig==} + /@storybook/react-dom-shim@8.2.8(react-dom@18.3.1)(react@18.3.1)(storybook@8.2.8): + resolution: {integrity: sha512-2my3dGBOpBe30+FsSdQOIYCfxMyT68+SEq0qcXxfuax0BkhhJnZLpwvpqOna6EOVTgBD+Tk1TKmjpGwxuwp4rg==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + 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: ^8.2.8 dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + storybook: 8.2.8 dev: true - /@storybook/react-vite@7.5.3(react-dom@18.3.1)(react@18.3.1)(rollup@4.14.3)(typescript@5.5.3)(vite@5.0.8): - resolution: {integrity: sha512-ArPyHgiPbT5YvcyK4xK/DfqBOpn4R4/EP3kfIGhx8QKJyOtxPEYFdkLIZ5xu3KnPX7/z7GT+4a6Rb+8sk9gliA==} - engines: {node: '>=16'} + /@storybook/react-vite@8.2.8(react-dom@18.3.1)(react@18.3.1)(rollup@4.14.3)(storybook@8.2.8)(typescript@5.5.3)(vite@5.0.8): + resolution: {integrity: sha512-xzXWyhFnLoFtJGgj8F5j/33QB4YTyEX61On6kolt7WFAjRFaUWJGYUC8cPPL4PNwsdouyCrnHvlJj77AvFlvfQ==} + engines: {node: '>=18.0.0'} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + 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: ^8.2.8 + vite: ^4.0.0 || ^5.0.0 dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.5.3)(vite@5.0.8) - '@rollup/pluginutils': 5.0.5(rollup@4.14.3) - '@storybook/builder-vite': 7.5.3(typescript@5.5.3)(vite@5.0.8) - '@storybook/react': 7.5.3(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) - '@vitejs/plugin-react': 3.1.0(vite@5.0.8) - magic-string: 0.30.5 + '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.1(typescript@5.5.3)(vite@5.0.8) + '@rollup/pluginutils': 5.1.0(rollup@4.14.3) + '@storybook/builder-vite': 8.2.8(storybook@8.2.8)(typescript@5.5.3)(vite@5.0.8) + '@storybook/react': 8.2.8(react-dom@18.3.1)(react@18.3.1)(storybook@8.2.8)(typescript@5.5.3) + find-up: 5.0.0 + magic-string: 0.30.10 react: 18.3.1 - react-docgen: 6.0.4 + react-docgen: 7.0.3 react-dom: 18.3.1(react@18.3.1) + resolve: 1.22.8 + storybook: 8.2.8 + tsconfig-paths: 4.2.0 vite: 5.0.8(@types/node@18.19.8)(less@4.1.3)(sass@1.55.0)(stylus@0.59.0) transitivePeerDependencies: - '@preact/preset-vite' - - encoding - rollup - supports-color - typescript - vite-plugin-glimmerx dev: true - /@storybook/react-webpack5@7.5.3(@babel/core@7.23.2)(@swc/core@1.5.7)(@swc/helpers@0.5.11)(esbuild@0.19.5)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3)(webpack-cli@5.1.4)(webpack-dev-server@5.0.4): - resolution: {integrity: sha512-+sjYMrvmpvztdDkRE1/EkcNNxTTdDdBoXUGrGyE0ig6qEwSewRld0H8ng1jlNQ8treocy7036TXJF+qHZEz/FQ==} - engines: {node: '>=16.0.0'} + /@storybook/react-webpack5@8.2.8(@swc/core@1.5.7)(esbuild@0.19.5)(react-dom@18.3.1)(react@18.3.1)(storybook@8.2.8)(typescript@5.5.3)(webpack-cli@5.1.4): + resolution: {integrity: sha512-0zwKNeM9bVKbkZX06/5WJdkI6JnN+vrbur37QKw626UaIGS51l1wXSxUHAKct/iuOX9cieEHw03u4kcNuETPQw==} + engines: {node: '>=18.0.0'} peerDependencies: - '@babel/core': ^7.22.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - typescript: '*' + 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: ^8.2.8 + typescript: '>= 4.2.x' peerDependenciesMeta: - '@babel/core': - optional: true typescript: optional: true dependencies: - '@babel/core': 7.23.2 - '@storybook/builder-webpack5': 7.5.3(@swc/helpers@0.5.11)(esbuild@0.19.5)(typescript@5.5.3)(webpack-cli@5.1.4) - '@storybook/preset-react-webpack': 7.5.3(@babel/core@7.23.2)(@swc/core@1.5.7)(esbuild@0.19.5)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3)(webpack-cli@5.1.4)(webpack-dev-server@5.0.4) - '@storybook/react': 7.5.3(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3) + '@storybook/builder-webpack5': 8.2.8(@swc/core@1.5.7)(esbuild@0.19.5)(storybook@8.2.8)(typescript@5.5.3)(webpack-cli@5.1.4) + '@storybook/preset-react-webpack': 8.2.8(@swc/core@1.5.7)(esbuild@0.19.5)(react-dom@18.3.1)(react@18.3.1)(storybook@8.2.8)(typescript@5.5.3)(webpack-cli@5.1.4) + '@storybook/react': 8.2.8(react-dom@18.3.1)(react@18.3.1)(storybook@8.2.8)(typescript@5.5.3) '@types/node': 18.19.8 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + storybook: 8.2.8 typescript: 5.5.3 transitivePeerDependencies: - '@rspack/core' - '@swc/core' - - '@swc/helpers' - - '@types/webpack' - - encoding - esbuild - - sockjs-client - supports-color - - type-fest - uglify-js - webpack-cli - - webpack-dev-server - - webpack-hot-middleware - - webpack-plugin-serve dev: true - /@storybook/react@7.5.3(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.3): - resolution: {integrity: sha512-dZILdM36xMFDjdmmy421G5X+sOIncB2qF3IPTooniG1i1Z6v/dVNo57ovdID9lDTNa+AWr2fLB9hANiISMqmjQ==} - engines: {node: '>=16.0.0'} + /@storybook/react@8.2.8(react-dom@18.3.1)(react@18.3.1)(storybook@8.2.8)(typescript@5.5.3): + resolution: {integrity: sha512-Nln0DDTQ930P4J+SEkWbLSgaDe8eDd5gP6h3l4b5RwT7sRuSyHtTtYHPCnU9U7sLQ3AbMsclgtJukHXDitlccg==} + engines: {node: '>=18.0.0'} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - typescript: '*' + 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: ^8.2.8 + typescript: '>= 4.2.x' peerDependenciesMeta: typescript: optional: true dependencies: - '@storybook/client-logger': 7.5.3 - '@storybook/core-client': 7.5.3 - '@storybook/docs-tools': 7.5.3 + '@storybook/components': 8.2.8(storybook@8.2.8) '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.5.3 - '@storybook/react-dom-shim': 7.5.3(react-dom@18.3.1)(react@18.3.1) - '@storybook/types': 7.5.3 + '@storybook/manager-api': 8.2.8(storybook@8.2.8) + '@storybook/preview-api': 8.2.8(storybook@8.2.8) + '@storybook/react-dom-shim': 8.2.8(react-dom@18.3.1)(react@18.3.1)(storybook@8.2.8) + '@storybook/theming': 8.2.8(storybook@8.2.8) '@types/escodegen': 0.0.6 '@types/estree': 0.0.51 '@types/node': 18.19.8 @@ -15447,116 +14467,56 @@ packages: acorn-jsx: 5.3.2(acorn@7.4.1) acorn-walk: 7.2.0 escodegen: 2.1.0 - html-tags: 3.2.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) + semver: 7.6.2 + storybook: 8.2.8 ts-dedent: 2.2.0 type-fest: 2.19.0 typescript: 5.5.3 util-deprecate: 1.0.2 + dev: true + + /@storybook/test@8.2.8(@types/jest@29.4.0)(jest@29.4.3)(storybook@8.2.8)(vitest@1.3.1): + resolution: {integrity: sha512-Lbt4DHP8WhnakTPw981kP85DeoONKN+zVLjFPa5ptllyT+jazZANjIdGhNUlBdIzOw3oyDXhGlWIdtqztS3pSA==} + peerDependencies: + storybook: ^8.2.8 + dependencies: + '@storybook/csf': 0.1.11 + '@storybook/instrumenter': 8.2.8(storybook@8.2.8) + '@testing-library/dom': 10.1.0 + '@testing-library/jest-dom': 6.4.5(@types/jest@29.4.0)(jest@29.4.3)(vitest@1.3.1) + '@testing-library/user-event': 14.5.2(@testing-library/dom@10.1.0) + '@vitest/expect': 1.6.0 + '@vitest/spy': 1.6.0 + storybook: 8.2.8 + util: 0.12.5 transitivePeerDependencies: - - encoding - - supports-color + - '@jest/globals' + - '@types/bun' + - '@types/jest' + - jest + - vitest dev: true - /@storybook/router@7.0.7(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-/lM8/NHQKeshfnC3ayFuO8Y9TCSHnCAPRhIsVxvanBzcj+ILbCIyZ+TspvB3hT4MbX/Ez+JR8VrMbjXIGwmH8w==} + /@storybook/theming@8.2.8(storybook@8.2.8): + resolution: {integrity: sha512-jt5oUO82LN3z5aygNdHucBZcErSicIAwzhR5Kz9E/C9wUbhyZhbWsWyhpZaytu8LJUj2YWAIPS8kq/jGx+qLZA==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + storybook: ^8.2.8 dependencies: - '@storybook/client-logger': 7.0.7 - memoizerific: 1.11.3 - qs: 6.11.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + storybook: 8.2.8 dev: true - /@storybook/router@7.5.3(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-/iNYCFore7R5n6eFHbBYoB0P2/sybTVpA+uXTNUd3UEt7Ro6CEslTaFTEiH2RVQwOkceBp/NpyWon74xZuXhMg==} + /@storybook/types@8.2.8(storybook@8.2.8): + resolution: {integrity: sha512-JacKzY2q5lzwnigBxhpSmB0cJCsEWRhpkjrX/GUKa5YZJsHtPQ3GAKVRGrF1/iGRrRo+lufFowBzB9BdzSn6Dw==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + storybook: ^8.2.8 dependencies: - '@storybook/client-logger': 7.5.3 - memoizerific: 1.11.3 - qs: 6.11.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - dev: true - - /@storybook/telemetry@7.5.3: - resolution: {integrity: sha512-X6alII3o0jCb5xALuw+qcWmvyrbhlkmPeNZ6ZQXknOfB4DkwponFdWN5y6W7yGvr01xa5QBepJRV79isl97d8g==} - dependencies: - '@storybook/client-logger': 7.5.3 - '@storybook/core-common': 7.5.3 - '@storybook/csf-tools': 7.5.3 - chalk: 4.1.2 - detect-package-manager: 2.0.1 - fetch-retry: 5.0.3 - fs-extra: 11.2.0 - read-pkg-up: 7.0.1 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - - /@storybook/theming@7.0.7(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-InTZe+Sgco1NsxgiG+cyUKWQe3GsjlIyU/o5qDdtOTXcZ64HzyBuAZlAequSddqfDeMDqxRFPc2w1J28MAUHxA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@emotion/use-insertion-effect-with-fallbacks': 1.0.0(react@18.3.1) - '@storybook/client-logger': 7.0.7 - '@storybook/global': 5.0.0 - memoizerific: 1.11.3 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - dev: true - - /@storybook/theming@7.5.3(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-Cjmthe1MAk0z4RKCZ7m72gAD8YD0zTAH97z5ryM1Qv84QXjiCQ143fGOmYz1xEQdNFpOThPcwW6FEccLHTkVcg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@emotion/use-insertion-effect-with-fallbacks': 1.0.0(react@18.3.1) - '@storybook/client-logger': 7.5.3 - '@storybook/global': 5.0.0 - memoizerific: 1.11.3 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - dev: true - - /@storybook/types@7.0.7: - resolution: {integrity: sha512-v9piuwp8FvTiHXIOOi5lEyTEJKhnbcbhVxgJ3VFhhXYFd0DTz6Bst0XIIgkgs21ITb3xhkfPbCRUueMcbXO1MA==} - dependencies: - '@storybook/channels': 7.0.7 - '@types/babel__core': 7.20.1 - '@types/express': 4.17.14 - file-system-cache: 2.3.0 - dev: true - - /@storybook/types@7.1.1: - resolution: {integrity: sha512-0yxEHxYd/N0XfVCGrEq86QIMC4ljZBspHSDrjdLSCIYmmglMvwKboZBgHlLQmpcLP+of8m1E8Frbslpnt0giBg==} - dependencies: - '@storybook/channels': 7.1.1 - '@types/babel__core': 7.1.20 - '@types/express': 4.17.14 - file-system-cache: 2.3.0 - dev: true - - /@storybook/types@7.5.3: - resolution: {integrity: sha512-iu5W0Kdd6nysN5CPkY4GRl+0BpxRTdSfBIJak7mb6xCIHSB5t1tw4BOuqMQ5EgpikRY3MWJ4gY647QkWBX3MNQ==} - dependencies: - '@storybook/channels': 7.5.3 - '@types/babel__core': 7.20.1 - '@types/express': 4.17.14 - file-system-cache: 2.3.0 + storybook: 8.2.8 dev: true /@supabase/functions-js@2.1.2: @@ -16184,6 +15144,40 @@ packages: pretty-format: 27.5.1 dev: true + /@testing-library/jest-dom@6.4.5(@types/jest@29.4.0)(jest@29.4.3)(vitest@1.3.1): + resolution: {integrity: sha512-AguB9yvTXmCnySBP1lWjfNNUwpbElsaQ567lt2VdGqAdHtpieLgjmcVyv1q7PMIvLbgpDdkWV5Ydv3FEejyp2A==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + peerDependencies: + '@jest/globals': '>= 28' + '@types/bun': latest + '@types/jest': '>= 28' + jest: '>= 28' + vitest: '>= 0.32' + peerDependenciesMeta: + '@jest/globals': + optional: true + '@types/bun': + optional: true + '@types/jest': + optional: true + jest: + optional: true + vitest: + optional: true + dependencies: + '@adobe/css-tools': 4.4.0 + '@babel/runtime': 7.24.7 + '@types/jest': 29.4.0 + aria-query: 5.3.0 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + jest: 29.4.3(@types/node@18.19.8)(ts-node@10.9.1) + lodash: 4.17.21 + redent: 3.0.0 + vitest: 1.3.1(@types/node@18.19.8)(less@4.1.3)(sass@1.55.0)(stylus@0.59.0) + dev: true + /@testing-library/react@15.0.6(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-UlbazRtEpQClFOiYp+1BapMT+xyqWMnE+hh9tn5DQ6gmlE7AIZWcGpzZukmDZuFk3By01oiqOf8lRedLS4k6xQ==} engines: {node: '>=18'} @@ -16203,6 +15197,15 @@ packages: react-dom: 18.3.1(react@18.3.1) dev: true + /@testing-library/user-event@14.5.2(@testing-library/dom@10.1.0): + resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' + dependencies: + '@testing-library/dom': 10.1.0 + dev: true + /@tokenizer/token@0.3.0: resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} dev: true @@ -16280,7 +15283,7 @@ packages: resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==} dependencies: '@babel/parser': 7.24.6 - '@babel/types': 7.24.6 + '@babel/types': 7.24.7 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.18.2 @@ -16344,6 +15347,12 @@ packages: resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} dev: true + /@types/cross-spawn@6.0.6: + resolution: {integrity: sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==} + dependencies: + '@types/node': 18.19.8 + dev: true + /@types/cytoscape@3.19.9: resolution: {integrity: sha512-oqCx0ZGiBO0UESbjgq052vjDAy2X53lZpMrWqiweMpvVwKw/2IiYDdzPFK6+f4tMfdv9YKEM9raO5bAZc3UYBg==} dev: true @@ -16358,12 +15367,8 @@ packages: resolution: {integrity: sha512-xxgAGA2SAU4111QefXPSp5eGbDm/hW6zhvYl9IeEPZEry9F4d66QAHm5qpUXjb6IsevZV/7emAEx5MhP6O192g==} dev: true - /@types/doctrine@0.0.3: - resolution: {integrity: sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA==} - dev: true - - /@types/doctrine@0.0.6: - resolution: {integrity: sha512-KlEqPtaNBHBJ2/fVA4yLdD0Tc8zw34pKU4K5SHBIEwtLJ8xxumIC1xeG+4S+/9qhVj2MqC7O3Ld8WvDG4HqlgA==} + /@types/doctrine@0.0.9: + resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} dev: true /@types/draco3d@1.4.10: @@ -16374,6 +15379,10 @@ packages: resolution: {integrity: sha512-ZmiaE3wglXVWBM9fyVC17aGPkLo/UgaOjEiI2FXQfyczrCefORPxIe+2dVmnmk3zkVIbizjrlQzmPGhSYGXG5g==} dev: true + /@types/emscripten@1.39.13: + resolution: {integrity: sha512-cFq+fO/isvhvmuP/+Sl4K4jtU6E23DoivtbO4r50e3odaxAiVdbfSYRDdJ4gCdxx+3aRjhphS5ZMwIH4hFy/Cw==} + dev: true + /@types/escodegen@0.0.6: resolution: {integrity: sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==} dev: true @@ -16483,6 +15492,12 @@ packages: dependencies: '@types/unist': 3.0.0 + /@types/hast@3.0.4: + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + dependencies: + '@types/unist': 3.0.0 + dev: true + /@types/hoist-non-react-statics@3.3.1: resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==} dependencies: @@ -16710,10 +15725,6 @@ packages: resolution: {integrity: sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==} dev: false - /@types/pretty-hrtime@1.0.1: - resolution: {integrity: sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ==} - dev: true - /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} @@ -16862,6 +15873,10 @@ packages: resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} dev: true + /@types/uuid@9.0.8: + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} + dev: true + /@types/websocket@1.0.5: resolution: {integrity: sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==} dependencies: @@ -17510,22 +16525,6 @@ packages: vite: 5.3.2(@types/node@18.19.8)(less@4.2.0)(sass@1.77.6)(stylus@0.59.0)(terser@5.29.2) dev: true - /@vitejs/plugin-react@3.1.0(vite@5.0.8): - resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.1.0-beta.0 - dependencies: - '@babel/core': 7.23.9 - '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.23.9) - '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.23.9) - magic-string: 0.27.0 - react-refresh: 0.14.0 - vite: 5.0.8(@types/node@18.19.8)(less@4.1.3)(sass@1.55.0)(stylus@0.59.0) - transitivePeerDependencies: - - supports-color - dev: true - /@vitejs/plugin-vue-jsx@3.1.0(vite@5.0.12)(vue@3.4.15): resolution: {integrity: sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==} engines: {node: ^14.18.0 || >=16.0.0} @@ -17561,6 +16560,14 @@ packages: chai: 4.3.10 dev: true + /@vitest/expect@1.6.0: + resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} + dependencies: + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 + chai: 4.3.10 + dev: true + /@vitest/runner@1.3.1: resolution: {integrity: sha512-5FzF9c3jG/z5bgCnjr8j9LNq/9OxV2uEBAITOXfoe3rdZJTdO7jzThth7FXv/6b+kdY65tpRQB7WaKhNZwX+Kg==} dependencies: @@ -17583,6 +16590,12 @@ packages: tinyspy: 2.2.0 dev: true + /@vitest/spy@1.6.0: + resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} + dependencies: + tinyspy: 2.2.0 + dev: true + /@vitest/utils@1.3.1: resolution: {integrity: sha512-d3Waie/299qqRyHTm2DjADeTaNdNSVsnwHPWrs20JMpjh6eiVq7ggggweO8rc4arhf6rRkWuHKwvxGvejUXZZQ==} dependencies: @@ -17592,6 +16605,15 @@ packages: pretty-format: 29.7.0 dev: true + /@vitest/utils@1.6.0: + resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} + dependencies: + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + dev: true + /@vue-macros/common@1.10.1(rollup@4.14.3)(vue@3.4.15): resolution: {integrity: sha512-uftSpfwdwitcQT2lM8aVxcfe5rKQBzC9jMrtJM5sG4hEuFyfIvnJihpPpnaWxY+X4p64k+YYXtBFv+1O5Bq3dg==} engines: {node: '>=16.14.0'} @@ -17601,7 +16623,7 @@ packages: vue: optional: true dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 '@rollup/pluginutils': 5.1.0(rollup@4.14.3) '@vue/compiler-sfc': 3.4.15 ast-kit: 0.11.3(rollup@4.14.3) @@ -17630,7 +16652,7 @@ packages: '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.7) '@babel/template': 7.24.7 '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 '@vue/babel-helper-vue-transform-on': 1.2.1 '@vue/babel-plugin-resolve-type': 1.2.1(@babel/core@7.24.7) camelcase: 6.3.0 @@ -17649,7 +16671,7 @@ packages: '@babel/core': 7.24.7 '@babel/helper-module-imports': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - '@babel/parser': 7.24.7 + '@babel/parser': 7.25.3 '@vue/compiler-sfc': 3.4.15 transitivePeerDependencies: - supports-color @@ -17998,14 +17020,20 @@ packages: /@xtuc/long@4.2.2: resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - /@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15(esbuild@0.18.17): - resolution: {integrity: sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA==} - engines: {node: '>=14.15.0'} - peerDependencies: - esbuild: '>=0.10.0' + /@yarnpkg/fslib@2.10.3: + resolution: {integrity: sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==} + engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} dependencies: - esbuild: 0.18.17 - tslib: 2.6.3 + '@yarnpkg/libzip': 2.3.0 + tslib: 1.14.1 + dev: true + + /@yarnpkg/libzip@2.3.0: + resolution: {integrity: sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==} + engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} + dependencies: + '@types/emscripten': 1.39.13 + tslib: 1.14.1 dev: true /@yarnpkg/lockfile@1.1.0: @@ -18400,10 +17428,6 @@ packages: engines: {node: '>=8'} dev: true - /app-root-dir@1.0.2: - resolution: {integrity: sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g==} - dev: true - /append-field@1.0.0: resolution: {integrity: sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==} dev: true @@ -18478,21 +17502,6 @@ packages: /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - /aria-hidden@1.2.2(@types/react@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-6y/ogyDTk/7YAe91T3E2PR1ALVKyM2QbTio5HwM+N1Q6CMlCKhvClyIjkckBswa0f2xJhjsfzIGa1yVSe1UMVA==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 - react: ^16.9.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.3.1 - react: 18.3.1 - tslib: 2.6.3 - dev: true - /aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} dependencies: @@ -18662,15 +17671,6 @@ packages: engines: {node: '>=0.8'} dev: true - /assert@2.0.0: - resolution: {integrity: sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==} - dependencies: - es6-object-assign: 1.1.0 - is-nan: 1.3.2 - object-is: 1.1.5 - util: 0.12.5 - dev: true - /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true @@ -18679,7 +17679,7 @@ packages: resolution: {integrity: sha512-qdwwKEhckRk0XE22/xDdmU3v/60E8Edu4qFhgTLIhGGDs/PAJwLw9pQn8Rj99PitlbBZbYpx0k/lbir4kg0SuA==} engines: {node: '>=16.14.0'} dependencies: - '@babel/parser': 7.24.7 + '@babel/parser': 7.25.3 '@rollup/pluginutils': 5.1.0(rollup@4.14.3) pathe: 1.1.2 transitivePeerDependencies: @@ -18701,13 +17701,6 @@ packages: resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} dev: true - /ast-types@0.14.2: - resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} - engines: {node: '>=4'} - dependencies: - tslib: 2.6.3 - dev: true - /ast-types@0.16.1: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} @@ -18851,6 +17844,14 @@ packages: resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} dev: true + /babel-core@7.0.0-bridge.0(@babel/core@7.24.7): + resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.7 + dev: true + /babel-jest@29.4.3(@babel/core@7.23.2): resolution: {integrity: sha512-o45Wyn32svZE+LnMVWv/Z4x0SwtLbh4FyGcYtR20kIWd+rdrDZ9Fzq8Ml3MYLD+mZvEdzCjZsCnYZ2jpJyQ+Nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -18900,19 +17901,6 @@ packages: webpack: 5.88.0(@swc/core@1.5.7)(esbuild@0.19.5)(webpack-cli@5.1.4) dev: true - /babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.88.0): - resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} - engines: {node: '>= 14.15.0'} - peerDependencies: - '@babel/core': ^7.12.0 - webpack: '>=5' - dependencies: - '@babel/core': 7.23.9 - find-cache-dir: 4.0.0 - schema-utils: 4.2.0 - webpack: 5.88.0(@swc/core@1.5.7)(esbuild@0.19.5)(webpack-cli@5.1.4) - dev: true - /babel-loader@9.1.3(@babel/core@7.24.7)(webpack@5.88.0): resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} engines: {node: '>= 14.15.0'} @@ -18939,10 +17927,6 @@ packages: webpack: 5.92.1(@swc/core@1.5.7)(esbuild@0.21.5)(webpack-cli@5.1.4) dev: true - /babel-plugin-add-react-displayname@0.0.5: - resolution: {integrity: sha512-LY3+Y0XVDYcShHHorshrDbt4KFWL4bSeniCtl4SYZbask+Syngk1uMPCeN9+nSiZo6zX5s0RTq/J9Pnaaf/KHw==} - dev: true - /babel-plugin-const-enum@1.2.0(@babel/core@7.24.7): resolution: {integrity: sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==} peerDependencies: @@ -18987,10 +17971,6 @@ packages: resolve: 1.22.8 dev: true - /babel-plugin-named-exports-order@0.0.2: - resolution: {integrity: sha512-OgOYHOLoRK+/mvXU9imKHlG6GkPLYrUCvFXG/CM93R/aNNO8pOOF4aS+S8CCHMDQoNSeiOYEZb/G6RwL95Jktw==} - dev: true - /babel-plugin-polyfill-corejs2@0.3.3(@babel/core@7.23.7): resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} peerDependencies: @@ -19135,16 +18115,6 @@ packages: - supports-color dev: true - /babel-plugin-react-docgen@4.2.1: - resolution: {integrity: sha512-UQ0NmGHj/HAqi5Bew8WvNfCk8wSsmdgNd8ZdMjBCICtyCJCq9LiqgqvjCYe570/Wg7AQArSq1VQ60Dd/CHN7mQ==} - dependencies: - ast-types: 0.14.2 - lodash: 4.17.21 - react-docgen: 5.4.3 - transitivePeerDependencies: - - supports-color - dev: true - /babel-plugin-transform-async-to-promises@0.8.18: resolution: {integrity: sha512-WpOrF76nUHijnNn10eBGOHZmXQC8JYRME9rOLxStOga7Av2VO53ehVFvVNImMksVtQuL2/7ZNxEgxnx7oo/3Hw==} dev: true @@ -19286,13 +18256,6 @@ packages: resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==} dev: true - /better-opn@3.0.2: - resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} - engines: {node: '>=12.0.0'} - dependencies: - open: 8.4.2 - dev: true - /bidi-js@1.0.3: resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} dependencies: @@ -19427,13 +18390,6 @@ packages: resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} dev: true - /bplist-parser@0.2.0: - resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} - engines: {node: '>= 5.10.0'} - dependencies: - big-integer: 1.6.51 - dev: true - /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -19626,25 +18582,6 @@ packages: rc9: 2.1.1 dev: true - /c8@7.13.0: - resolution: {integrity: sha512-/NL4hQTv1gBL6J6ei80zu3IiTrmePDKXKXOTLpHvcIWZTVYQlDhVWjjWvkhICylE8EwwnMVzDZugCvdx0/DIIA==} - engines: {node: '>=10.12.0'} - hasBin: true - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@istanbuljs/schema': 0.1.3 - find-up: 5.0.0 - foreground-child: 2.0.0 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-report: 3.0.0 - istanbul-reports: 3.1.5 - rimraf: 3.0.2 - test-exclude: 6.0.0 - v8-to-istanbul: 9.1.0 - yargs: 16.2.0 - yargs-parser: 20.2.9 - dev: true - /cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -20881,6 +19818,13 @@ packages: resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} dev: true + /crypto-random-string@4.0.0: + resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} + engines: {node: '>=12'} + dependencies: + type-fest: 1.4.0 + dev: true + /css-blank-pseudo@3.0.3(postcss@8.4.38): resolution: {integrity: sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==} engines: {node: ^12 || ^14 || >=16} @@ -21061,6 +20005,10 @@ packages: engines: {node: '>= 6'} dev: true + /css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + dev: true + /cssdb@6.6.3: resolution: {integrity: sha512-7GDvDSmE+20+WcSMhP17Q1EVWUrLlbxxpMDqG731n8P99JhnQZHR9YvtjPvEHfjFUjvQJvdpKCjlKOX+xe4UVA==} dev: true @@ -21540,14 +20488,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /default-browser-id@3.0.0: - resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} - engines: {node: '>=12'} - dependencies: - bplist-parser: 0.2.0 - untildify: 4.0.0 - dev: true - /default-browser-id@5.0.0: resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} engines: {node: '>=18'} @@ -21671,6 +20611,11 @@ packages: webgl-constants: 1.1.1 dev: false + /detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + dev: true + /detect-libc@1.0.3: resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} engines: {node: '>=0.10'} @@ -21687,20 +20632,9 @@ packages: engines: {node: '>=8'} dev: true - /detect-node-es@1.1.0: - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - dev: true - /detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - /detect-package-manager@2.0.1: - resolution: {integrity: sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==} - engines: {node: '>=12'} - dependencies: - execa: 5.1.1 - dev: true - /detect-port@1.5.1: resolution: {integrity: sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==} hasBin: true @@ -21780,6 +20714,10 @@ packages: resolution: {integrity: sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==} dev: true + /dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + dev: true + /dom-converter@0.2.0: resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} dependencies: @@ -22230,10 +21168,6 @@ packages: safe-array-concat: 1.1.0 dev: true - /es-module-lexer@0.9.3: - resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} - dev: true - /es-module-lexer@1.3.0: resolution: {integrity: sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==} @@ -22241,6 +21175,10 @@ packages: resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} dev: true + /es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + dev: true + /es-set-tostringtag@2.0.2: resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} engines: {node: '>= 0.4'} @@ -22281,10 +21219,6 @@ packages: es5-ext: 0.10.62 es6-symbol: 3.1.3 - /es6-object-assign@1.1.0: - resolution: {integrity: sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==} - dev: true - /es6-symbol@3.1.3: resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} dependencies: @@ -22300,10 +21234,6 @@ packages: es6-symbol: 3.1.3 dev: false - /esbuild-plugin-alias@0.2.1: - resolution: {integrity: sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==} - dev: true - /esbuild-plugins-node-modules-polyfill@1.6.1(esbuild@0.17.6): resolution: {integrity: sha512-6sAwI24PV8W0zxeO+i4BS5zoQypS3SzEGwIdxpzpy65riRuK8apMw8PN0aKVLCTnLr0FgNIxUMRd9BsreBrtog==} engines: {node: '>=14.0.0'} @@ -22316,13 +21246,13 @@ packages: resolve.exports: 2.0.2 dev: true - /esbuild-register@3.5.0(esbuild@0.18.17): + /esbuild-register@3.5.0(esbuild@0.19.5): resolution: {integrity: sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==} peerDependencies: esbuild: '>=0.12 <1' dependencies: debug: 4.3.4(supports-color@8.1.1) - esbuild: 0.18.17 + esbuild: 0.19.5 transitivePeerDependencies: - supports-color dev: true @@ -22911,9 +21841,9 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-storybook@0.6.12(eslint@8.57.0)(typescript@5.5.3): - resolution: {integrity: sha512-XbIvrq6hNVG6rpdBr+eBw63QhOMLpZneQVSooEDow8aQCWGCk/5vqtap1yxpVydNfSxi3S/3mBBRLQqKUqQRww==} - engines: {node: 12.x || 14.x || >= 16} + /eslint-plugin-storybook@0.8.0(eslint@8.57.0)(typescript@5.5.3): + resolution: {integrity: sha512-CZeVO5EzmPY7qghO2t64oaFM+8FTaD4uzOEjHKp516exyTKo+skKAL9GI3QALS2BXhyALJjNtwbmr1XinGE8bA==} + engines: {node: '>= 18'} peerDependencies: eslint: '>=6' dependencies: @@ -23058,17 +21988,6 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - /estree-to-babel@3.2.1: - resolution: {integrity: sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg==} - engines: {node: '>=8.3.0'} - dependencies: - '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 - c8: 7.13.0 - transitivePeerDependencies: - - supports-color - dev: true - /estree-util-attach-comments@2.1.1: resolution: {integrity: sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==} dependencies: @@ -23582,16 +22501,18 @@ packages: bser: 2.1.1 dev: true + /fd-package-json@1.2.0: + resolution: {integrity: sha512-45LSPmWf+gC5tdCQMNH4s9Sr00bIkiD9aN7dc5hqkrEw1geRYyDQS1v1oMHAW3ysfxfndqGsrDREHHjNNbKUfA==} + dependencies: + walk-up-path: 3.0.1 + dev: true + /fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} dependencies: pend: 1.2.0 dev: true - /fetch-retry@5.0.3: - resolution: {integrity: sha512-uJQyMrX5IJZkhoEUBQ3EjxkeiZkppBd5jS/fMTJmfZxLSiaQjv2zD0kTvuvkSH89uFvgSlB6ueGpjD3HWN7Bxw==} - dev: true - /fflate@0.6.10: resolution: {integrity: sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==} dev: false @@ -23633,13 +22554,6 @@ packages: webpack: 5.88.0(@swc/core@1.5.7)(esbuild@0.19.5)(webpack-cli@5.1.4) dev: true - /file-system-cache@2.3.0: - resolution: {integrity: sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==} - dependencies: - fs-extra: 11.1.1 - ramda: 0.29.0 - dev: true - /file-type@16.5.4: resolution: {integrity: sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==} engines: {node: '>=10'} @@ -23717,6 +22631,15 @@ packages: transitivePeerDependencies: - supports-color + /find-cache-dir@2.1.0: + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} + engines: {node: '>=6'} + dependencies: + commondir: 1.0.1 + make-dir: 2.1.0 + pkg-dir: 3.0.0 + dev: true + /find-cache-dir@3.3.2: resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} engines: {node: '>=8'} @@ -23755,6 +22678,13 @@ packages: locate-path: 2.0.0 dev: true + /find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + dependencies: + locate-path: 3.0.0 + dev: true + /find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -23801,6 +22731,11 @@ packages: resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} dev: true + /flow-parser@0.243.0: + resolution: {integrity: sha512-HCDBfH+kZcY5etWYeAqatjW78gkIryzb9XixRsA8lGI1uyYc7aCpElkkO4H+KIpoyQMiY0VAZPI4cyac3wQe8w==} + engines: {node: '>=0.4.0'} + dev: true + /follow-redirects@1.15.6(debug@4.3.4): resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} engines: {node: '>=4.0'} @@ -23818,14 +22753,6 @@ packages: is-callable: 1.2.7 dev: true - /foreground-child@2.0.0: - resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} - engines: {node: '>=8.0.0'} - dependencies: - cross-spawn: 7.0.3 - signal-exit: 3.0.7 - dev: true - /foreground-child@3.1.1: resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} engines: {node: '>=14'} @@ -23871,7 +22798,7 @@ packages: typescript: '>3.6.0' webpack: ^5.11.0 dependencies: - '@babel/code-frame': 7.24.6 + '@babel/code-frame': 7.24.7 chalk: 4.1.2 chokidar: 3.6.0 cosmiconfig: 7.0.1 @@ -24018,15 +22945,6 @@ packages: universalify: 2.0.0 dev: true - /fs-extra@11.1.1: - resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} - engines: {node: '>=14.14'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.0 - dev: true - /fs-extra@11.2.0: resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} engines: {node: '>=14.14'} @@ -24199,11 +23117,6 @@ packages: has-symbols: 1.0.3 hasown: 2.0.0 - /get-nonce@1.0.1: - resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} - engines: {node: '>=6'} - dev: true - /get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} @@ -24360,10 +23273,6 @@ packages: ini: 1.3.8 dev: true - /github-slugger@1.5.0: - resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} - dev: true - /github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} dev: true @@ -24403,18 +23312,6 @@ packages: /glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - /glob@10.2.2: - resolution: {integrity: sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - dependencies: - foreground-child: 3.1.1 - jackspeak: 2.1.5 - minimatch: 9.0.3 - minipass: 5.0.0 - path-scurry: 1.7.0 - dev: true - /glob@10.3.10: resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} engines: {node: '>=16 || 14 >=14.17'} @@ -24607,6 +23504,18 @@ packages: unicorn-magic: 0.1.0 dev: true + /globby@14.0.2: + resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} + engines: {node: '>=18'} + 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 + dev: true + /globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} dev: true @@ -24790,6 +23699,18 @@ packages: dependencies: function-bind: 1.1.2 + /hast-util-heading-rank@3.0.0: + resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} + dependencies: + '@types/hast': 3.0.4 + dev: true + + /hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + dependencies: + '@types/hast': 3.0.4 + dev: true + /hast-util-parse-selector@2.2.5: resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} dev: false @@ -24816,6 +23737,12 @@ packages: - supports-color dev: true + /hast-util-to-string@3.0.0: + resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==} + dependencies: + '@types/hast': 3.0.4 + dev: true + /hast-util-whitespace@2.0.1: resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} dev: true @@ -24944,11 +23871,6 @@ packages: terser: 5.31.0 dev: true - /html-tags@3.2.0: - resolution: {integrity: sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==} - engines: {node: '>=8'} - dev: true - /html-tags@3.3.1: resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} engines: {node: '>=8'} @@ -25540,9 +24462,9 @@ packages: resolution: {integrity: sha512-anOK1Mktt8U1Xi7fCM3RELTuYbnFikQY5VtrDj7kPgpejV7d43tWKhzgioO0zpkazLEL/j/iayRqnJhrGfqUsg==} dev: true - /is-absolute-url@3.0.3: - resolution: {integrity: sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==} - engines: {node: '>=8'} + /is-absolute-url@4.0.1: + resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true /is-alphabetical@1.0.4: @@ -25785,14 +24707,6 @@ packages: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} dev: true - /is-nan@1.3.2: - resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - dev: true - /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} @@ -25952,17 +24866,6 @@ packages: which-typed-array: 1.1.13 dev: true - /is-typed-array@1.1.9: - resolution: {integrity: sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.7 - es-abstract: 1.22.3 - for-each: 0.3.3 - has-tostringtag: 1.0.0 - dev: true - /is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} dev: true @@ -26150,15 +25053,6 @@ packages: react: 18.3.1 dev: false - /jackspeak@2.1.5: - resolution: {integrity: sha512-NeK3mbF9vwNS3SjhzlEfO6WREJqoKtCwLoUPoUVtGJrpecxN3ZxlDuF22MzNSbOk/AA/VFWi+nFMV89xkXh2og==} - engines: {node: '>=14'} - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - dev: true - /jackspeak@2.3.6: resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} engines: {node: '>=14'} @@ -26735,6 +25629,40 @@ packages: resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} dev: true + /jscodeshift@0.15.2(@babel/preset-env@7.24.7): + resolution: {integrity: sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==} + hasBin: true + peerDependencies: + '@babel/preset-env': ^7.1.6 + peerDependenciesMeta: + '@babel/preset-env': + optional: true + dependencies: + '@babel/core': 7.24.7 + '@babel/parser': 7.25.3 + '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-optional-chaining': 7.24.7(@babel/core@7.24.7) + '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.24.7) + '@babel/preset-env': 7.24.7(@babel/core@7.24.7) + '@babel/preset-flow': 7.24.7(@babel/core@7.24.7) + '@babel/preset-typescript': 7.24.7(@babel/core@7.24.7) + '@babel/register': 7.24.6(@babel/core@7.24.7) + babel-core: 7.0.0-bridge.0(@babel/core@7.24.7) + chalk: 4.1.2 + flow-parser: 0.243.0 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + neo-async: 2.6.2 + node-dir: 0.1.17 + recast: 0.23.9 + temp: 0.8.4 + write-file-atomic: 2.4.3 + transitivePeerDependencies: + - supports-color + dev: true + /jsdom@20.0.3: resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} engines: {node: '>=14'} @@ -27102,15 +26030,6 @@ packages: engines: {node: '> 0.8'} dev: true - /lazy-universal-dotenv@4.0.0: - resolution: {integrity: sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg==} - engines: {node: '>=14.0.0'} - dependencies: - app-root-dir: 1.0.2 - dotenv: 16.4.5 - dotenv-expand: 10.0.0 - dev: true - /lazystream@1.0.1: resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} engines: {node: '>= 0.6.3'} @@ -27401,6 +26320,14 @@ packages: path-exists: 3.0.0 dev: true + /locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + dev: true + /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -27722,7 +26649,7 @@ packages: resolution: {integrity: sha512-ZbrP1Qxnpoes8sz47AM0z08U+jW6TyRgZzcWy3Ma3vDhJttwMwAFDMMQFobwdBxByBD46JYmxRzeF7w2+wJEuw==} dependencies: '@babel/parser': 7.24.7 - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 source-map-js: 1.2.0 dev: true @@ -27734,7 +26661,6 @@ packages: pify: 4.0.1 semver: 5.7.1 dev: true - optional: true /make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} @@ -27819,8 +26745,8 @@ packages: resolution: {integrity: sha512-epJKNY4rlcMIJ+czEkPgstlk+9cKmHUkhRxemCPf+38vKbehBoiH9gmsxXkgzRYQx98hpE9l/zVkg2WI+IbT3Q==} dev: true - /markdown-to-jsx@7.2.0(react@18.3.1): - resolution: {integrity: sha512-3l4/Bigjm4bEqjCR6Xr+d4DtM1X6vvtGsMGSjJYyep8RjjIvcWtrXBS8Wbfe1/P+atKNMccpsraESIaWVplzVg==} + /markdown-to-jsx@7.4.7(react@18.3.1): + resolution: {integrity: sha512-0+ls1IQZdU6cwM1yu0ZjjiVWYtkbExSyUIFU2ZeDIFuZM1W42Mh4OlJ4nb4apX4H8smxDHRdFaoIVJGwfv5hkg==} engines: {node: '>= 10'} peerDependencies: react: '>= 0.14.0' @@ -27842,12 +26768,6 @@ packages: is-buffer: 1.1.6 dev: true - /mdast-util-definitions@4.0.0: - resolution: {integrity: sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==} - dependencies: - unist-util-visit: 2.0.3 - dev: true - /mdast-util-definitions@5.1.2: resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} dependencies: @@ -27971,10 +26891,6 @@ packages: zwitch: 2.0.4 dev: true - /mdast-util-to-string@1.1.0: - resolution: {integrity: sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==} - dev: true - /mdast-util-to-string@3.2.0: resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} dependencies: @@ -28182,7 +27098,7 @@ packages: engines: {node: '>=18'} dependencies: '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 invariant: 2.2.4 metro-symbolicate: 0.80.5 nullthrows: 1.1.1 @@ -28228,7 +27144,7 @@ packages: '@babel/core': 7.24.7 '@babel/generator': 7.24.7 '@babel/parser': 7.24.7 - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 metro: 0.80.5 metro-babel-transformer: 0.80.5 metro-cache: 0.80.5 @@ -29901,14 +28817,6 @@ packages: /object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - /object-is@1.1.5: - resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - dev: true - /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} @@ -30272,6 +29180,13 @@ packages: p-limit: 1.3.0 dev: true + /p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + dependencies: + p-limit: 2.3.0 + dev: true + /p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} @@ -30695,7 +29610,6 @@ packages: engines: {node: '>=6'} requiresBuild: true dev: true - optional: true /pify@5.0.0: resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} @@ -30779,19 +29693,19 @@ packages: nice-napi: 1.0.2 dev: true + /pkg-dir@3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} + dependencies: + find-up: 3.0.0 + dev: true + /pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} dependencies: find-up: 4.1.0 - /pkg-dir@5.0.0: - resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} - engines: {node: '>=10'} - dependencies: - find-up: 5.0.0 - dev: true - /pkg-dir@7.0.0: resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} engines: {node: '>=14.16'} @@ -32026,6 +30940,12 @@ packages: engines: {node: '>=10.13.0'} hasBin: true + /prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + engines: {node: '>=14'} + hasBin: true + dev: true + /pretty-bytes@5.6.0: resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} engines: {node: '>=6'} @@ -32070,11 +30990,6 @@ packages: react-is: 18.2.0 dev: true - /pretty-hrtime@1.0.3: - resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} - engines: {node: '>= 0.8'} - dev: true - /pretty-ms@7.0.1: resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==} engines: {node: '>=10'} @@ -32315,10 +31230,6 @@ packages: resolution: {integrity: sha512-6Dp+QQVQuAuhwBlbIvL2FjJVHCKF29W+n9ca/BMTVDqpj+Q7KKqUh7UAINEna8aaB2/oRvPuL5hViCTQARa70Q==} dev: true - /ramda@0.29.0: - resolution: {integrity: sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==} - dev: true - /randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: @@ -32403,35 +31314,16 @@ packages: typescript: 5.5.3 dev: true - /react-docgen@5.4.3: - resolution: {integrity: sha512-xlLJyOlnfr8lLEEeaDZ+X2J/KJoe6Nr9AzxnkdQWush5hz2ZSu66w6iLMOScMmxoSHWpWMn+k3v5ZiyCfcWsOA==} - engines: {node: '>=8.10.0'} - hasBin: true + /react-docgen@7.0.3: + resolution: {integrity: sha512-i8aF1nyKInZnANZ4uZrH49qn1paRgBZ7wZiCNBMnenlPzEv0mRl+ShpTVEI6wZNl8sSc79xZkivtgLKQArcanQ==} + engines: {node: '>=16.14.0'} dependencies: '@babel/core': 7.24.7 - '@babel/generator': 7.24.7 - '@babel/runtime': 7.24.7 - ast-types: 0.14.2 - commander: 2.20.3 - doctrine: 3.0.0 - estree-to-babel: 3.2.1 - neo-async: 2.6.2 - node-dir: 0.1.17 - strip-indent: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /react-docgen@6.0.4: - resolution: {integrity: sha512-gF+p+1ZwC2eO66bt763Tepmh5q9kDiFIrqW3YjUV/a+L96h0m5+/wSFQoOHL2cffyrPMZMxP03IgbggJ11QbOw==} - engines: {node: '>=14.18.0'} - dependencies: - '@babel/core': 7.23.9 - '@babel/traverse': 7.23.2 - '@babel/types': 7.23.6 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 '@types/babel__core': 7.20.1 '@types/babel__traverse': 7.18.2 - '@types/doctrine': 0.0.6 + '@types/doctrine': 0.0.9 '@types/resolve': 1.20.2 doctrine: 3.0.0 resolve: 1.22.8 @@ -32462,14 +31354,6 @@ packages: react-is: 18.1.0 dev: true - /react-inspector@6.0.1(react@18.3.1): - resolution: {integrity: sha512-cxKSeFTf7jpSSVddm66sKdolG90qURAX3g1roTeaN6x0YEbtWc8JpmFN9+yIqLNH2uEkYerWLtJZIXRIFuBKrg==} - peerDependencies: - react: ^16.8.4 || ^17.0.0 || ^18.0.0 - dependencies: - react: 18.3.1 - dev: true - /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} @@ -32562,51 +31446,11 @@ packages: engines: {node: '>=0.10.0'} dev: true - /react-refresh@0.11.0: - resolution: {integrity: sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==} - engines: {node: '>=0.10.0'} - dev: true - /react-refresh@0.14.0: resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} engines: {node: '>=0.10.0'} dev: true - /react-remove-scroll-bar@2.3.4(@types/react@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} - 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 - dependencies: - '@types/react': 18.3.1 - react: 18.3.1 - react-style-singleton: 2.2.1(@types/react@18.3.1)(react@18.3.1) - tslib: 2.6.3 - dev: true - - /react-remove-scroll@2.5.5(@types/react@18.3.1)(react@18.3.1): - 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 - dependencies: - '@types/react': 18.3.1 - react: 18.3.1 - react-remove-scroll-bar: 2.3.4(@types/react@18.3.1)(react@18.3.1) - react-style-singleton: 2.2.1(@types/react@18.3.1)(react@18.3.1) - tslib: 2.6.3 - use-callback-ref: 1.3.0(@types/react@18.3.1)(react@18.3.1) - use-sidecar: 1.1.2(@types/react@18.3.1)(react@18.3.1) - dev: true - /react-router-dom@6.23.1(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-utP+K+aSTtEdbWpC+4gxhdlPFwuEfDKq8ZrPFU65bbRJY+l706qjR7yaidBpo3MSeA/fzwbXWbKBI6ftOnP3OQ==} engines: {node: '>=14.0.0'} @@ -32630,23 +31474,6 @@ packages: react: 18.3.1 dev: true - /react-style-singleton@2.2.1(@types/react@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} - 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 - dependencies: - '@types/react': 18.3.1 - get-nonce: 1.0.1 - invariant: 2.2.4 - react: 18.3.1 - tslib: 2.6.3 - dev: true - /react-syntax-highlighter@15.5.0(react@18.3.1): resolution: {integrity: sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==} peerDependencies: @@ -32841,14 +31668,14 @@ packages: engines: {node: '>= 12.13.0'} dev: true - /recast@0.23.1: - resolution: {integrity: sha512-RokaBcoxSjXUDzz1TXSZmZsSW6ZpLmlA3GGqJ8uuTrQ9hZhEz+4Tpsc+gRvYRJ2BU4H+ZyUlg91eSGDw7bwy7g==} + /recast@0.23.9: + resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==} engines: {node: '>= 4'} dependencies: - assert: 2.0.0 ast-types: 0.16.1 esprima: 4.0.1 source-map: 0.6.1 + tiny-invariant: 1.3.3 tslib: 2.6.3 dev: true @@ -32987,21 +31814,32 @@ packages: jsesc: 0.5.0 dev: true + /rehype-external-links@3.0.0: + resolution: {integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==} + dependencies: + '@types/hast': 3.0.4 + '@ungap/structured-clone': 1.2.0 + hast-util-is-element: 3.0.0 + is-absolute-url: 4.0.1 + space-separated-tokens: 2.0.2 + unist-util-visit: 5.0.0 + dev: true + + /rehype-slug@6.0.0: + resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} + dependencies: + '@types/hast': 3.0.4 + github-slugger: 2.0.0 + hast-util-heading-rank: 3.0.0 + hast-util-to-string: 3.0.0 + unist-util-visit: 5.0.0 + dev: true + /relateurl@0.2.7: resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} engines: {node: '>= 0.10'} dev: true - /remark-external-links@8.0.0: - resolution: {integrity: sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA==} - dependencies: - extend: 3.0.2 - is-absolute-url: 3.0.3 - mdast-util-definitions: 4.0.0 - space-separated-tokens: 1.1.5 - unist-util-visit: 2.0.3 - dev: true - /remark-frontmatter@4.0.1: resolution: {integrity: sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==} dependencies: @@ -33049,14 +31887,6 @@ packages: unified: 10.1.2 dev: true - /remark-slug@6.1.0: - resolution: {integrity: sha512-oGCxDF9deA8phWvxFuyr3oSJsdyUAxMFbA0mZ7Y1Sas+emILtO+e5WutF9564gDsEN4IXaQXm5pFo6MLH+YmwQ==} - dependencies: - github-slugger: 1.5.0 - mdast-util-to-string: 1.1.0 - unist-util-visit: 2.0.3 - dev: true - /remarkable@1.7.1: resolution: {integrity: sha512-bLRgsUgMDqTDVQDiD85swkoXBcUTqkVjuIIeW0N2iAL4qIV7fJ123O5GNNSwlysCLpKh4+4O/SZ1OHNOib/QNg==} engines: {node: '>= 0.10.0'} @@ -33238,6 +32068,14 @@ packages: glob: 6.0.4 dev: true + /rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + dependencies: + glob: 7.1.4 + dev: true + /rimraf@2.7.1: resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} hasBin: true @@ -34217,6 +33055,7 @@ packages: /space-separated-tokens@1.1.5: resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} + dev: false /space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} @@ -34411,31 +33250,60 @@ packages: graceful-fs: 4.2.11 dev: true - /store2@2.14.2: - resolution: {integrity: sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==} - dev: true - - /storybook-dark-mode@3.0.0(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-aeAvqP/mmdccEiCsvx6aw3M0i7mZSiXROsrAsEQN8vl1lAg3FZN+y3Xu/f+ye59wLMRuKJC/JBp7E3/H7vLBRQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + /storybook-dark-mode@4.0.2(react-dom@18.3.1)(react@18.3.1)(storybook@8.2.8): + resolution: {integrity: sha512-zjcwwQ01R5t1VsakA6alc2JDIRVtavryW8J3E3eKLDIlAMcvsgtpxlelWkZs2cuNspk6Z10XzhQVrUWtYc3F0w==} dependencies: - '@storybook/addons': 7.0.7(react-dom@18.3.1)(react@18.3.1) - '@storybook/api': 7.0.7(react-dom@18.3.1)(react@18.3.1) - '@storybook/components': 7.0.7(react-dom@18.3.1)(react@18.3.1) - '@storybook/core-events': 7.0.2 + '@storybook/components': 8.2.8(storybook@8.2.8) + '@storybook/core-events': 8.2.8(storybook@8.2.8) '@storybook/global': 5.0.0 - '@storybook/theming': 7.0.7(react-dom@18.3.1)(react@18.3.1) + '@storybook/icons': 1.2.10(react-dom@18.3.1)(react@18.3.1) + '@storybook/manager-api': 8.2.8(storybook@8.2.8) + '@storybook/theming': 8.2.8(storybook@8.2.8) fast-deep-equal: 3.1.3 memoizerific: 1.11.3 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - react + - react-dom + - storybook + dev: true + + /storybook@8.2.8: + resolution: {integrity: sha512-sh4CNCXkieVgJ5GXrCOESS0BjRbQ9wG7BVnurQPl6izNnB9zR8rag+aUmjPZWBwbj55V1BFA5A/vEsCov21qjg==} + hasBin: true + dependencies: + '@babel/core': 7.24.7 + '@babel/types': 7.25.2 + '@storybook/codemod': 8.2.8 + '@storybook/core': 8.2.8 + '@types/semver': 7.5.2 + '@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 + fd-package-json: 1.2.0 + find-up: 5.0.0 + fs-extra: 11.2.0 + giget: 1.2.1 + globby: 14.0.2 + jscodeshift: 0.15.2(@babel/preset-env@7.24.7) + leven: 3.1.0 + ora: 5.4.1 + prettier: 3.3.3 + prompts: 2.4.2 + 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 + - supports-color + - utf-8-validate dev: true /stream-shift@1.0.1: @@ -34886,16 +33754,6 @@ packages: resolution: {integrity: sha512-DlZARu6ckUFqDe0j5IPayO4k0gQvYQw9Un02MhxAgaMtVnTH2vmyyDe+yKeV0r1LiiPx3JbasdS/5Yyb/AV3iw==} dev: true - /swc-loader@0.2.3(@swc/core@1.5.7)(webpack@5.88.0): - resolution: {integrity: sha512-D1p6XXURfSPleZZA/Lipb3A8pZ17fP4NObZvFCDjK/OKljroqDpPmsBdTraWhVBqUNpcWBQY1imWdoPScRlQ7A==} - peerDependencies: - '@swc/core': ^1.2.147 - webpack: '>=2' - dependencies: - '@swc/core': 1.5.7(@swc/helpers@0.5.11) - webpack: 5.88.0(@swc/core@1.5.7)(esbuild@0.19.5)(webpack-cli@5.1.4) - dev: true - /swr-store@0.10.6: resolution: {integrity: sha512-xPjB1hARSiRaNNlUQvWSVrG5SirCjk2TmaUyzzvk69SZQan9hCJqw/5rG9iL7xElHU784GxRPISClq4488/XVw==} engines: {node: '>=10'} @@ -34933,10 +33791,6 @@ packages: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true - /synchronous-promise@2.0.16: - resolution: {integrity: sha512-qImOD23aDfnIDNqlG1NOehdB9IYsn1V9oByPjKY1nakv2MQYCEMyX033/q+aEtYCpmYK1cv2+NTmlH+ra6GA5A==} - dev: true - /synckit@0.8.4: resolution: {integrity: sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==} engines: {node: ^14.18.0 || >=16.0.0} @@ -35041,12 +33895,6 @@ packages: - supports-color dev: true - /telejson@7.1.0: - resolution: {integrity: sha512-jFJO4P5gPebZAERPkJsqMAQ0IMA1Hi0AoSfxpnUaV6j6R2SZqlpkbS20U6dEUtA3RUYt2Ak/mTlkQzHH9Rv/hA==} - dependencies: - memoizerific: 1.11.3 - dev: true - /telejson@7.2.0: resolution: {integrity: sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==} dependencies: @@ -35058,6 +33906,18 @@ packages: engines: {node: '>=8'} dev: true + /temp-dir@3.0.0: + resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} + engines: {node: '>=14.16'} + dev: true + + /temp@0.8.4: + resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} + engines: {node: '>=6.0.0'} + dependencies: + rimraf: 2.6.3 + dev: true + /tempfile@3.0.0: resolution: {integrity: sha512-uNFCg478XovRi85iD42egu+eSFUmmka750Jy7L5tfHI5hQKKtbPnxaSaXAbBqCDYrw3wx4tXjKwci4/QmsZJxw==} engines: {node: '>=8'} @@ -35066,6 +33926,16 @@ packages: uuid: 3.4.0 dev: true + /tempy@3.1.0: + resolution: {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==} + engines: {node: '>=14.16'} + dependencies: + is-stream: 3.0.0 + temp-dir: 3.0.0 + type-fest: 2.19.0 + unique-string: 3.0.0 + dev: true + /terser-webpack-plugin@5.3.10(@swc/core@1.5.7)(esbuild@0.19.5)(webpack@5.88.0): resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} @@ -35354,8 +34224,8 @@ packages: globrex: 0.1.2 dev: true - /tiny-invariant@1.3.1: - resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} + /tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} dev: true /tinybench@2.5.1: @@ -35405,10 +34275,6 @@ packages: dependencies: is-number: 7.0.0 - /tocbot@4.21.1: - resolution: {integrity: sha512-IfajhBTeg0HlMXu1f+VMbPef05QpDTsZ9X2Yn1+8npdaXsXg/+wrm9Ze1WG5OS1UDC3qJ5EQN/XOZ3gfXjPFCw==} - dev: true - /toggle-selection@1.0.6: resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} dev: false @@ -35836,6 +34702,11 @@ packages: engines: {node: '>=8'} dev: true + /type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + dev: true + /type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} @@ -36146,6 +35017,13 @@ packages: imurmurhash: 0.1.4 dev: true + /unique-string@3.0.0: + resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} + engines: {node: '>=12'} + dependencies: + crypto-random-string: 4.0.0 + dev: true + /unist-builder@4.0.0: resolution: {integrity: sha512-wmRFnH+BLpZnTKpc5L7O67Kac89s9HMrtELpnNaE6TAobq5DTZZs5YaTQfAZBA9bFPECx2uVAPO31c+GVug8mg==} dependencies: @@ -36156,16 +35034,18 @@ packages: resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==} dev: true - /unist-util-is@4.1.0: - resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} - dev: true - /unist-util-is@5.2.1: resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} dependencies: '@types/unist': 2.0.6 dev: true + /unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + dependencies: + '@types/unist': 3.0.0 + dev: true + /unist-util-position-from-estree@1.1.2: resolution: {integrity: sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==} dependencies: @@ -36191,13 +35071,6 @@ packages: '@types/unist': 2.0.6 dev: true - /unist-util-visit-parents@3.1.1: - resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} - dependencies: - '@types/unist': 2.0.6 - unist-util-is: 4.1.0 - dev: true - /unist-util-visit-parents@5.1.3: resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} dependencies: @@ -36205,12 +35078,11 @@ packages: unist-util-is: 5.2.1 dev: true - /unist-util-visit@2.0.3: - resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} + /unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} dependencies: - '@types/unist': 2.0.6 - unist-util-is: 4.1.0 - unist-util-visit-parents: 3.1.1 + '@types/unist': 3.0.0 + unist-util-is: 6.0.0 dev: true /unist-util-visit@4.1.2: @@ -36221,6 +35093,14 @@ packages: unist-util-visit-parents: 5.1.3 dev: true + /unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + dependencies: + '@types/unist': 3.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + dev: true + /universal-github-app-jwt@1.1.1: resolution: {integrity: sha512-G33RTLrIBMFmlDV4u4CBF7dh71eWwykck4XgaxaIVeZKOYZRAAxvcGMRFTUclVY6xoUPQvO4Ne5wKGxYm/Yy9w==} dependencies: @@ -36500,21 +35380,6 @@ packages: resolution: {integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==} dev: true - /use-callback-ref@1.3.0(@types/react@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} - 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 - dependencies: - '@types/react': 18.3.1 - react: 18.3.1 - tslib: 2.6.3 - dev: true - /use-composed-ref@1.3.0(react@18.3.1): resolution: {integrity: sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==} peerDependencies: @@ -36550,33 +35415,6 @@ packages: use-isomorphic-layout-effect: 1.1.2(@types/react@18.3.1)(react@18.3.1) dev: true - /use-resize-observer@9.1.0(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow==} - peerDependencies: - react: 16.8.0 - 18 - react-dom: 16.8.0 - 18 - dependencies: - '@juggle/resize-observer': 3.4.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - dev: true - - /use-sidecar@1.1.2(@types/react@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.3.1 - detect-node-es: 1.1.0 - react: 18.3.1 - tslib: 2.6.3 - dev: true - /use-sync-external-store@1.2.0(react@18.3.1): resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: @@ -36605,8 +35443,8 @@ packages: inherits: 2.0.4 is-arguments: 1.1.1 is-generator-function: 1.0.10 - is-typed-array: 1.1.9 - which-typed-array: 1.1.8 + is-typed-array: 1.1.12 + which-typed-array: 1.1.13 dev: true /utila@0.4.0: @@ -36640,7 +35478,6 @@ packages: /uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true - dev: false /uvu@0.5.6: resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} @@ -36883,7 +35720,7 @@ packages: npm-run-path: 4.0.1 semver: 7.6.2 strip-ansi: 6.0.1 - tiny-invariant: 1.3.1 + tiny-invariant: 1.3.3 typescript: 5.5.3 vite: 5.0.12(@types/node@18.19.8)(less@4.1.3)(sass@1.55.0)(stylus@0.59.0) vscode-languageclient: 7.0.0 @@ -37244,6 +36081,10 @@ packages: xml-name-validator: 4.0.0 dev: true + /walk-up-path@3.0.1: + resolution: {integrity: sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==} + dev: true + /walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: @@ -37375,8 +36216,8 @@ packages: webpack: 5.88.0(@swc/core@1.5.7)(esbuild@0.19.5)(webpack-cli@5.1.4) dev: true - /webpack-dev-middleware@6.1.1(webpack@5.88.0): - resolution: {integrity: sha512-y51HrHaFeeWir0YO4f0g+9GwZawuigzcAdRNon6jErXy/SqV/+O6eaVAzDqE6t3e3NpGeR5CS+cCDaTC+V3yEQ==} + /webpack-dev-middleware@6.1.3(webpack@5.88.0): + resolution: {integrity: sha512-A4ChP0Qj8oGociTs6UdlRUGANIGrCDL3y+pmQMc+dSsraXHCatFpmMey4mYELA+juqwUqwQsUgJJISXl1KWmiw==} engines: {node: '>= 14.15.0'} peerDependencies: webpack: ^5.0.0 @@ -37645,10 +36486,6 @@ packages: webpack: 5.92.1(@swc/core@1.5.7)(esbuild@0.21.5)(webpack-cli@5.1.4) dev: true - /webpack-virtual-modules@0.5.0: - resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} - dev: true - /webpack-virtual-modules@0.6.1: resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==} dev: true @@ -37876,18 +36713,6 @@ packages: has-tostringtag: 1.0.0 dev: true - /which-typed-array@1.1.8: - resolution: {integrity: sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.7 - es-abstract: 1.22.3 - for-each: 0.3.3 - has-tostringtag: 1.0.0 - is-typed-array: 1.1.12 - dev: true - /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true @@ -37977,6 +36802,14 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + /write-file-atomic@2.4.3: + resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} + dependencies: + graceful-fs: 4.2.11 + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: true + /write-file-atomic@4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -37998,19 +36831,6 @@ packages: optional: true dev: true - /ws@8.13.0: - resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: true - /ws@8.16.0: resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} engines: {node: '>=10.0.0'}