From 763c7ce6826b395c3adb409c76b7f988d333db2e Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Tue, 7 Nov 2023 16:06:22 +0100 Subject: [PATCH 01/11] move Storybook and React peer dependencies to dev dependencies --- package.json | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 5943c7d..9b3c73e 100644 --- a/package.json +++ b/package.json @@ -9,8 +9,8 @@ "type": "git", "url": "https://github.com/storybookjs/storybook-addon-kit" }, - "author": "package-author", "license": "MIT", + "author": "package-author", "exports": { ".": { "require": "./dist/index.js", @@ -56,9 +56,16 @@ "@storybook/addon-essentials": "^7.5.3", "@storybook/addon-interactions": "^7.5.3", "@storybook/addon-links": "^7.5.3", + "@storybook/blocks": "^7.0.0", + "@storybook/components": "^7.0.0", + "@storybook/core-events": "^7.0.0", + "@storybook/manager-api": "^7.0.0", + "@storybook/preview-api": "^7.0.0", "@storybook/react": "^7.5.3", "@storybook/react-vite": "^7.5.3", "@storybook/testing-library": "^0.2.2", + "@storybook/theming": "^7.0.0", + "@storybook/types": "^7.0.0", "@types/node": "^18.15.0", "@types/react": "^18.2.36", "@vitejs/plugin-react": "^4.1.1", @@ -77,25 +84,6 @@ "vite": "^4.5.0", "zx": "^7.2.3" }, - "peerDependencies": { - "@storybook/blocks": "^7.0.0", - "@storybook/components": "^7.0.0", - "@storybook/core-events": "^7.0.0", - "@storybook/manager-api": "^7.0.0", - "@storybook/preview-api": "^7.0.0", - "@storybook/theming": "^7.0.0", - "@storybook/types": "^7.0.0", - "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 - } - }, "publishConfig": { "access": "public" }, From b4b6e988ea63452a6bf3ccce2c7ce226c66cc5f4 Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Wed, 8 Nov 2023 01:20:50 +0100 Subject: [PATCH 02/11] use smarter bundling strategy for different target exports --- package.json | 26 ++++------- tsup.config.ts | 124 ++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 115 insertions(+), 35 deletions(-) diff --git a/package.json b/package.json index 204508d..6350c99 100644 --- a/package.json +++ b/package.json @@ -13,20 +13,13 @@ "author": "package-author", "exports": { ".": { + "types": "./dist/index.d.ts", + "node": "./dist/index.js", "require": "./dist/index.js", - "import": "./dist/index.mjs", - "types": "./dist/index.d.ts" - }, - "./manager": { - "require": "./dist/manager.js", - "import": "./dist/manager.mjs", - "types": "./dist/manager.d.ts" - }, - "./preview": { - "require": "./dist/preview.js", - "import": "./dist/preview.mjs", - "types": "./dist/preview.d.ts" + "import": "./dist/index.mjs" }, + "./manager": "./dist/manager.mjs", + "./preview": "./dist/preview.mjs", "./package.json": "./package.json" }, "main": "dist/index.js", @@ -43,7 +36,7 @@ "clean": "rimraf ./dist", "prebuild": "npm run clean", "build": "tsup", - "build:watch": "npm run build --watch", + "build:watch": "npm run build -- --watch", "test": "echo \"Error: no test specified\" && exit 1", "start": "run-p build:watch 'storybook --quiet'", "prerelease": "zx scripts/prepublish-checks.mjs", @@ -91,10 +84,9 @@ "access": "public" }, "bundler": { - "exportEntries": [], - "nodeEntries": [], - "managerEntries": [], - "previewEntries": [] + "exportEntries": ["src/index.ts"], + "managerEntries": ["src/manager.ts"], + "previewEntries": ["src/preview.ts"] }, "storybook": { "displayName": "Addon Kit", diff --git a/tsup.config.ts b/tsup.config.ts index 541ae16..4afd8dd 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -1,18 +1,106 @@ -import { defineConfig } from "tsup"; - -export default defineConfig((options) => ({ - entry: ["src/index.ts", "src/preview.ts", "src/manager.ts"], - splitting: false, - minify: !options.watch, - format: ["cjs", "esm"], - dts: { - resolve: true, - }, - treeshake: true, - sourcemap: true, - clean: true, - platform: "browser", - esbuildOptions(options) { - options.conditions = ["module"]; - }, -})); +import { defineConfig, type Options } from "tsup"; +import { readFile } from "fs/promises"; +import { join } from "path"; + +// temporarily hardocded until https://github.com/storybookjs/storybook/pull/24676 is released so we can import the lists instead +const globalManagerPackages = [ + 'react', + 'react-dom', + '@storybook/components', + '@storybook/channels', + '@storybook/core-events', + '@storybook/router', + '@storybook/theming', + '@storybook/api', + '@storybook/manager-api', + '@storybook/addons', + '@storybook/client-logger', + '@storybook/types', +] + +const globalPreviewPackages = [ + '@storybook/addons', + '@storybook/global', + '@storybook/channel-postmessage', + '@storybook/channel-websocket', + '@storybook/channels', + '@storybook/client-api', + '@storybook/client-logger', + '@storybook/core-client', + '@storybook/core-events', + '@storybook/preview-web', + '@storybook/preview-api', + '@storybook/store', + '@storybook/types', +]; + +const BROWSER_TARGET: Options['target'] = ["chrome100", "safari15", "firefox91"]; +const NODE_TARGET: Options['target'] = ["node16"]; + +type BundlerConfig = { + bundler?: { + exportEntries?: string[]; + nodeEntries?: string[]; + managerEntries?: string[]; + previewEntries?: string[]; + }; +}; + +export default defineConfig(async (options) => { + const pkgJsonContent = await readFile(join(__dirname, "package.json")); + const { + bundler: { + exportEntries = [], + managerEntries = [], + previewEntries = [], + } = {}, + } = JSON.parse(pkgJsonContent.toString()) as BundlerConfig; + + const commonConfig: Options = { + splitting: false, + minify: !options.watch, + treeshake: true, + sourcemap: true, + clean: true, + }; + + const configs: Options[] = []; + + if (exportEntries.length) { + configs.push({ + ...commonConfig, + entry: exportEntries, + dts: { + resolve: true, + }, + format: ["esm", 'cjs'], + target: [...BROWSER_TARGET, ...NODE_TARGET], + platform: "neutral", + external: [...globalManagerPackages, ...globalPreviewPackages], + }); + } + + if (managerEntries.length) { + configs.push({ + ...commonConfig, + entry: managerEntries, + format: ["esm"], + target: BROWSER_TARGET, + platform: "browser", + external: globalManagerPackages, + }); + } + + if (previewEntries.length) { + configs.push({ + ...commonConfig, + entry: previewEntries, + format: ["esm"], + target: BROWSER_TARGET, + platform: "browser", + external: globalPreviewPackages, + }); + } + + return configs; +}); From 8533d16961e8554eab828af755202802efec7e41 Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Wed, 8 Nov 2023 11:24:24 +0100 Subject: [PATCH 03/11] fix sb dependency version --- package-lock.json | 1171 +++------------------------------------------ package.json | 4 +- 2 files changed, 56 insertions(+), 1119 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4e48237..0a0a075 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,8 +23,8 @@ "@storybook/react": "7.0.0", "@storybook/react-vite": "7.0.0", "@storybook/testing-library": "^0.2.2", - "@storybook/theming": "^7.0.0", - "@storybook/types": "^7.0.0", + "@storybook/theming": "7.0.0", + "@storybook/types": "7.0.0", "@types/node": "^18.15.0", "@types/react": "^16.14.51", "@types/react-dom": "^16.9.22", @@ -3652,65 +3652,6 @@ } } }, - "node_modules/@storybook/addon-actions/node_modules/@storybook/channels": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0.tgz", - "integrity": "sha512-adPIkvL4q37dGTWCpSzV8ETLdkxsg7BAgzeT9pustZJjRIZqAHGUAm7krDtGT7jbV4dU0Zw0VpUrnmyfxIkOKQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/addon-actions/node_modules/@storybook/client-logger": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0.tgz", - "integrity": "sha512-wRZZiPta37DFc8SVZ8Q3ZqyTrs5qgO6bcCuVDRLQAcO0Oz4xKEVPEVfVVxSPZU/+p2ypqdBBCP2pdL/Jy86AJg==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/addon-actions/node_modules/@storybook/theming": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.0.0.tgz", - "integrity": "sha512-bLNt9FrYBh95/YBJSJPMoXpuHCb21O/Zy/XgoCDrkXFxcDwapanFs2nzmavevq1Aev8WyMIGBJjcMZDpYtY63A==", - "dev": true, - "dependencies": { - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.0.0", - "@storybook/global": "^5.0.0", - "memoizerific": "^1.11.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/addon-actions/node_modules/@storybook/types": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.0.tgz", - "integrity": "sha512-eCMW/xTVMswgD/58itibw8s8f2hZ7tciT3saRdGCymg9tPUhMC/9eGIIUSr/C+xfnCJEZm6J6DgEUo1xlifonw==", - "dev": true, - "dependencies": { - "@storybook/channels": "7.0.0", - "@types/babel__core": "^7.0.0", - "@types/express": "^4.7.0", - "file-system-cache": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/addon-backgrounds": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.0.0.tgz", @@ -3745,65 +3686,6 @@ } } }, - "node_modules/@storybook/addon-backgrounds/node_modules/@storybook/channels": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0.tgz", - "integrity": "sha512-adPIkvL4q37dGTWCpSzV8ETLdkxsg7BAgzeT9pustZJjRIZqAHGUAm7krDtGT7jbV4dU0Zw0VpUrnmyfxIkOKQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/addon-backgrounds/node_modules/@storybook/client-logger": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0.tgz", - "integrity": "sha512-wRZZiPta37DFc8SVZ8Q3ZqyTrs5qgO6bcCuVDRLQAcO0Oz4xKEVPEVfVVxSPZU/+p2ypqdBBCP2pdL/Jy86AJg==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/addon-backgrounds/node_modules/@storybook/theming": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.0.0.tgz", - "integrity": "sha512-bLNt9FrYBh95/YBJSJPMoXpuHCb21O/Zy/XgoCDrkXFxcDwapanFs2nzmavevq1Aev8WyMIGBJjcMZDpYtY63A==", - "dev": true, - "dependencies": { - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.0.0", - "@storybook/global": "^5.0.0", - "memoizerific": "^1.11.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/addon-backgrounds/node_modules/@storybook/types": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.0.tgz", - "integrity": "sha512-eCMW/xTVMswgD/58itibw8s8f2hZ7tciT3saRdGCymg9tPUhMC/9eGIIUSr/C+xfnCJEZm6J6DgEUo1xlifonw==", - "dev": true, - "dependencies": { - "@storybook/channels": "7.0.0", - "@types/babel__core": "^7.0.0", - "@types/express": "^4.7.0", - "file-system-cache": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/addon-controls": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.0.0.tgz", @@ -3839,65 +3721,6 @@ } } }, - "node_modules/@storybook/addon-controls/node_modules/@storybook/channels": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0.tgz", - "integrity": "sha512-adPIkvL4q37dGTWCpSzV8ETLdkxsg7BAgzeT9pustZJjRIZqAHGUAm7krDtGT7jbV4dU0Zw0VpUrnmyfxIkOKQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/addon-controls/node_modules/@storybook/client-logger": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0.tgz", - "integrity": "sha512-wRZZiPta37DFc8SVZ8Q3ZqyTrs5qgO6bcCuVDRLQAcO0Oz4xKEVPEVfVVxSPZU/+p2ypqdBBCP2pdL/Jy86AJg==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/addon-controls/node_modules/@storybook/theming": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.0.0.tgz", - "integrity": "sha512-bLNt9FrYBh95/YBJSJPMoXpuHCb21O/Zy/XgoCDrkXFxcDwapanFs2nzmavevq1Aev8WyMIGBJjcMZDpYtY63A==", - "dev": true, - "dependencies": { - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.0.0", - "@storybook/global": "^5.0.0", - "memoizerific": "^1.11.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/addon-controls/node_modules/@storybook/types": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.0.tgz", - "integrity": "sha512-eCMW/xTVMswgD/58itibw8s8f2hZ7tciT3saRdGCymg9tPUhMC/9eGIIUSr/C+xfnCJEZm6J6DgEUo1xlifonw==", - "dev": true, - "dependencies": { - "@storybook/channels": "7.0.0", - "@types/babel__core": "^7.0.0", - "@types/express": "^4.7.0", - "file-system-cache": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/addon-docs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.0.0.tgz", @@ -3941,65 +3764,6 @@ } } }, - "node_modules/@storybook/addon-docs/node_modules/@storybook/channels": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0.tgz", - "integrity": "sha512-adPIkvL4q37dGTWCpSzV8ETLdkxsg7BAgzeT9pustZJjRIZqAHGUAm7krDtGT7jbV4dU0Zw0VpUrnmyfxIkOKQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/addon-docs/node_modules/@storybook/client-logger": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0.tgz", - "integrity": "sha512-wRZZiPta37DFc8SVZ8Q3ZqyTrs5qgO6bcCuVDRLQAcO0Oz4xKEVPEVfVVxSPZU/+p2ypqdBBCP2pdL/Jy86AJg==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/addon-docs/node_modules/@storybook/theming": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.0.0.tgz", - "integrity": "sha512-bLNt9FrYBh95/YBJSJPMoXpuHCb21O/Zy/XgoCDrkXFxcDwapanFs2nzmavevq1Aev8WyMIGBJjcMZDpYtY63A==", - "dev": true, - "dependencies": { - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.0.0", - "@storybook/global": "^5.0.0", - "memoizerific": "^1.11.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/addon-docs/node_modules/@storybook/types": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.0.tgz", - "integrity": "sha512-eCMW/xTVMswgD/58itibw8s8f2hZ7tciT3saRdGCymg9tPUhMC/9eGIIUSr/C+xfnCJEZm6J6DgEUo1xlifonw==", - "dev": true, - "dependencies": { - "@storybook/channels": "7.0.0", - "@types/babel__core": "^7.0.0", - "@types/express": "^4.7.0", - "file-system-cache": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/addon-essentials": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.0.0.tgz", @@ -4082,142 +3846,44 @@ } } }, - "node_modules/@storybook/addon-interactions/node_modules/@storybook/channels": { + "node_modules/@storybook/addon-links": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0.tgz", - "integrity": "sha512-adPIkvL4q37dGTWCpSzV8ETLdkxsg7BAgzeT9pustZJjRIZqAHGUAm7krDtGT7jbV4dU0Zw0VpUrnmyfxIkOKQ==", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-7.0.0.tgz", + "integrity": "sha512-2sIu/G6Apsufexq+ZTrKW85UCMYVnz7l+BDk0eNOyMQ7cGkrCk1Wq9ax07eCYnQpd6xScoIe0BEzxCHa7oFKDw==", "dev": true, + "dependencies": { + "@storybook/client-logger": "7.0.0", + "@storybook/core-events": "7.0.0", + "@storybook/csf": "next", + "@storybook/global": "^5.0.0", + "@storybook/manager-api": "7.0.0", + "@storybook/preview-api": "7.0.0", + "@storybook/router": "7.0.0", + "@storybook/types": "7.0.0", + "prop-types": "^15.7.2", + "ts-dedent": "^2.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } } }, - "node_modules/@storybook/addon-interactions/node_modules/@storybook/client-logger": { + "node_modules/@storybook/addon-measure": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0.tgz", - "integrity": "sha512-wRZZiPta37DFc8SVZ8Q3ZqyTrs5qgO6bcCuVDRLQAcO0Oz4xKEVPEVfVVxSPZU/+p2ypqdBBCP2pdL/Jy86AJg==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/addon-interactions/node_modules/@storybook/theming": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.0.0.tgz", - "integrity": "sha512-bLNt9FrYBh95/YBJSJPMoXpuHCb21O/Zy/XgoCDrkXFxcDwapanFs2nzmavevq1Aev8WyMIGBJjcMZDpYtY63A==", - "dev": true, - "dependencies": { - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.0.0", - "@storybook/global": "^5.0.0", - "memoizerific": "^1.11.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/addon-interactions/node_modules/@storybook/types": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.0.tgz", - "integrity": "sha512-eCMW/xTVMswgD/58itibw8s8f2hZ7tciT3saRdGCymg9tPUhMC/9eGIIUSr/C+xfnCJEZm6J6DgEUo1xlifonw==", - "dev": true, - "dependencies": { - "@storybook/channels": "7.0.0", - "@types/babel__core": "^7.0.0", - "@types/express": "^4.7.0", - "file-system-cache": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/addon-links": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-7.0.0.tgz", - "integrity": "sha512-2sIu/G6Apsufexq+ZTrKW85UCMYVnz7l+BDk0eNOyMQ7cGkrCk1Wq9ax07eCYnQpd6xScoIe0BEzxCHa7oFKDw==", - "dev": true, - "dependencies": { - "@storybook/client-logger": "7.0.0", - "@storybook/core-events": "7.0.0", - "@storybook/csf": "next", - "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.0.0", - "@storybook/preview-api": "7.0.0", - "@storybook/router": "7.0.0", - "@storybook/types": "7.0.0", - "prop-types": "^15.7.2", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } - } - }, - "node_modules/@storybook/addon-links/node_modules/@storybook/channels": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0.tgz", - "integrity": "sha512-adPIkvL4q37dGTWCpSzV8ETLdkxsg7BAgzeT9pustZJjRIZqAHGUAm7krDtGT7jbV4dU0Zw0VpUrnmyfxIkOKQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/addon-links/node_modules/@storybook/client-logger": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0.tgz", - "integrity": "sha512-wRZZiPta37DFc8SVZ8Q3ZqyTrs5qgO6bcCuVDRLQAcO0Oz4xKEVPEVfVVxSPZU/+p2ypqdBBCP2pdL/Jy86AJg==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/addon-links/node_modules/@storybook/types": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.0.tgz", - "integrity": "sha512-eCMW/xTVMswgD/58itibw8s8f2hZ7tciT3saRdGCymg9tPUhMC/9eGIIUSr/C+xfnCJEZm6J6DgEUo1xlifonw==", - "dev": true, - "dependencies": { - "@storybook/channels": "7.0.0", - "@types/babel__core": "^7.0.0", - "@types/express": "^4.7.0", - "file-system-cache": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/addon-measure": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.0.0.tgz", - "integrity": "sha512-h7crWGxiAxtzJsmbGi+C6jVVY+Lp64pHQl3rdeUwFbdnTXxG/rYlPpu4fW6lmCPyLhQauXcoxqbtkPd7T7HFMw==", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.0.0.tgz", + "integrity": "sha512-h7crWGxiAxtzJsmbGi+C6jVVY+Lp64pHQl3rdeUwFbdnTXxG/rYlPpu4fW6lmCPyLhQauXcoxqbtkPd7T7HFMw==", "dev": true, "dependencies": { "@storybook/client-logger": "7.0.0", @@ -4245,45 +3911,6 @@ } } }, - "node_modules/@storybook/addon-measure/node_modules/@storybook/channels": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0.tgz", - "integrity": "sha512-adPIkvL4q37dGTWCpSzV8ETLdkxsg7BAgzeT9pustZJjRIZqAHGUAm7krDtGT7jbV4dU0Zw0VpUrnmyfxIkOKQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/addon-measure/node_modules/@storybook/client-logger": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0.tgz", - "integrity": "sha512-wRZZiPta37DFc8SVZ8Q3ZqyTrs5qgO6bcCuVDRLQAcO0Oz4xKEVPEVfVVxSPZU/+p2ypqdBBCP2pdL/Jy86AJg==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/addon-measure/node_modules/@storybook/types": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.0.tgz", - "integrity": "sha512-eCMW/xTVMswgD/58itibw8s8f2hZ7tciT3saRdGCymg9tPUhMC/9eGIIUSr/C+xfnCJEZm6J6DgEUo1xlifonw==", - "dev": true, - "dependencies": { - "@storybook/channels": "7.0.0", - "@types/babel__core": "^7.0.0", - "@types/express": "^4.7.0", - "file-system-cache": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/addon-outline": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.0.0.tgz", @@ -4316,45 +3943,6 @@ } } }, - "node_modules/@storybook/addon-outline/node_modules/@storybook/channels": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0.tgz", - "integrity": "sha512-adPIkvL4q37dGTWCpSzV8ETLdkxsg7BAgzeT9pustZJjRIZqAHGUAm7krDtGT7jbV4dU0Zw0VpUrnmyfxIkOKQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/addon-outline/node_modules/@storybook/client-logger": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0.tgz", - "integrity": "sha512-wRZZiPta37DFc8SVZ8Q3ZqyTrs5qgO6bcCuVDRLQAcO0Oz4xKEVPEVfVVxSPZU/+p2ypqdBBCP2pdL/Jy86AJg==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/addon-outline/node_modules/@storybook/types": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.0.tgz", - "integrity": "sha512-eCMW/xTVMswgD/58itibw8s8f2hZ7tciT3saRdGCymg9tPUhMC/9eGIIUSr/C+xfnCJEZm6J6DgEUo1xlifonw==", - "dev": true, - "dependencies": { - "@storybook/channels": "7.0.0", - "@types/babel__core": "^7.0.0", - "@types/express": "^4.7.0", - "file-system-cache": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/addon-toolbars": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.0.0.tgz", @@ -4384,39 +3972,6 @@ } } }, - "node_modules/@storybook/addon-toolbars/node_modules/@storybook/client-logger": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0.tgz", - "integrity": "sha512-wRZZiPta37DFc8SVZ8Q3ZqyTrs5qgO6bcCuVDRLQAcO0Oz4xKEVPEVfVVxSPZU/+p2ypqdBBCP2pdL/Jy86AJg==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/addon-toolbars/node_modules/@storybook/theming": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.0.0.tgz", - "integrity": "sha512-bLNt9FrYBh95/YBJSJPMoXpuHCb21O/Zy/XgoCDrkXFxcDwapanFs2nzmavevq1Aev8WyMIGBJjcMZDpYtY63A==", - "dev": true, - "dependencies": { - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.0.0", - "@storybook/global": "^5.0.0", - "memoizerific": "^1.11.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, "node_modules/@storybook/addon-viewport": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.0.0.tgz", @@ -4450,39 +4005,6 @@ } } }, - "node_modules/@storybook/addon-viewport/node_modules/@storybook/client-logger": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0.tgz", - "integrity": "sha512-wRZZiPta37DFc8SVZ8Q3ZqyTrs5qgO6bcCuVDRLQAcO0Oz4xKEVPEVfVVxSPZU/+p2ypqdBBCP2pdL/Jy86AJg==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/addon-viewport/node_modules/@storybook/theming": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.0.0.tgz", - "integrity": "sha512-bLNt9FrYBh95/YBJSJPMoXpuHCb21O/Zy/XgoCDrkXFxcDwapanFs2nzmavevq1Aev8WyMIGBJjcMZDpYtY63A==", - "dev": true, - "dependencies": { - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.0.0", - "@storybook/global": "^5.0.0", - "memoizerific": "^1.11.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, "node_modules/@storybook/blocks": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.0.0.tgz", @@ -4502,58 +4024,15 @@ "@storybook/types": "7.0.0", "@types/lodash": "^4.14.167", "color-convert": "^2.0.1", - "dequal": "^2.0.2", - "lodash": "^4.17.21", - "markdown-to-jsx": "^7.1.8", - "memoizerific": "^1.11.3", - "polished": "^4.2.2", - "react-colorful": "^5.1.2", - "telejson": "^7.0.3", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/blocks/node_modules/@storybook/channels": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0.tgz", - "integrity": "sha512-adPIkvL4q37dGTWCpSzV8ETLdkxsg7BAgzeT9pustZJjRIZqAHGUAm7krDtGT7jbV4dU0Zw0VpUrnmyfxIkOKQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/blocks/node_modules/@storybook/client-logger": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0.tgz", - "integrity": "sha512-wRZZiPta37DFc8SVZ8Q3ZqyTrs5qgO6bcCuVDRLQAcO0Oz4xKEVPEVfVVxSPZU/+p2ypqdBBCP2pdL/Jy86AJg==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/blocks/node_modules/@storybook/theming": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.0.0.tgz", - "integrity": "sha512-bLNt9FrYBh95/YBJSJPMoXpuHCb21O/Zy/XgoCDrkXFxcDwapanFs2nzmavevq1Aev8WyMIGBJjcMZDpYtY63A==", - "dev": true, - "dependencies": { - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.0.0", - "@storybook/global": "^5.0.0", - "memoizerific": "^1.11.3" + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.1.8", + "memoizerific": "^1.11.3", + "polished": "^4.2.2", + "react-colorful": "^5.1.2", + "telejson": "^7.0.3", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" }, "funding": { "type": "opencollective", @@ -4564,22 +4043,6 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/blocks/node_modules/@storybook/types": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.0.tgz", - "integrity": "sha512-eCMW/xTVMswgD/58itibw8s8f2hZ7tciT3saRdGCymg9tPUhMC/9eGIIUSr/C+xfnCJEZm6J6DgEUo1xlifonw==", - "dev": true, - "dependencies": { - "@storybook/channels": "7.0.0", - "@types/babel__core": "^7.0.0", - "@types/express": "^4.7.0", - "file-system-cache": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/builder-manager": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.0.0.tgz", @@ -5060,29 +4523,6 @@ } } }, - "node_modules/@storybook/builder-vite/node_modules/@storybook/channels": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0.tgz", - "integrity": "sha512-adPIkvL4q37dGTWCpSzV8ETLdkxsg7BAgzeT9pustZJjRIZqAHGUAm7krDtGT7jbV4dU0Zw0VpUrnmyfxIkOKQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/builder-vite/node_modules/@storybook/client-logger": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0.tgz", - "integrity": "sha512-wRZZiPta37DFc8SVZ8Q3ZqyTrs5qgO6bcCuVDRLQAcO0Oz4xKEVPEVfVVxSPZU/+p2ypqdBBCP2pdL/Jy86AJg==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/builder-vite/node_modules/@storybook/preview": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.0.0.tgz", @@ -5093,22 +4533,6 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-vite/node_modules/@storybook/types": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.0.tgz", - "integrity": "sha512-eCMW/xTVMswgD/58itibw8s8f2hZ7tciT3saRdGCymg9tPUhMC/9eGIIUSr/C+xfnCJEZm6J6DgEUo1xlifonw==", - "dev": true, - "dependencies": { - "@storybook/channels": "7.0.0", - "@types/babel__core": "^7.0.0", - "@types/express": "^4.7.0", - "file-system-cache": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/builder-vite/node_modules/@types/glob": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", @@ -5202,29 +4626,6 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/channel-postmessage/node_modules/@storybook/channels": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0.tgz", - "integrity": "sha512-adPIkvL4q37dGTWCpSzV8ETLdkxsg7BAgzeT9pustZJjRIZqAHGUAm7krDtGT7jbV4dU0Zw0VpUrnmyfxIkOKQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/channel-postmessage/node_modules/@storybook/client-logger": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0.tgz", - "integrity": "sha512-wRZZiPta37DFc8SVZ8Q3ZqyTrs5qgO6bcCuVDRLQAcO0Oz4xKEVPEVfVVxSPZU/+p2ypqdBBCP2pdL/Jy86AJg==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/channel-websocket": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-7.0.0.tgz", @@ -5241,7 +4642,7 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/channel-websocket/node_modules/@storybook/channels": { + "node_modules/@storybook/channels": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0.tgz", "integrity": "sha512-adPIkvL4q37dGTWCpSzV8ETLdkxsg7BAgzeT9pustZJjRIZqAHGUAm7krDtGT7jbV4dU0Zw0VpUrnmyfxIkOKQ==", @@ -5251,50 +4652,6 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/channel-websocket/node_modules/@storybook/client-logger": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0.tgz", - "integrity": "sha512-wRZZiPta37DFc8SVZ8Q3ZqyTrs5qgO6bcCuVDRLQAcO0Oz4xKEVPEVfVVxSPZU/+p2ypqdBBCP2pdL/Jy86AJg==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/channels": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.5.3.tgz", - "integrity": "sha512-dhWuV2o2lmxH0RKuzND8jxYzvSQTSmpE13P0IT/k8+I1up/rSNYOBQJT6SalakcNWXFAMXguo/8E7ApmnKKcEw==", - "dev": true, - "dependencies": { - "@storybook/client-logger": "7.5.3", - "@storybook/core-events": "7.5.3", - "@storybook/global": "^5.0.0", - "qs": "^6.10.0", - "telejson": "^7.2.0", - "tiny-invariant": "^1.3.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/channels/node_modules/@storybook/core-events": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.5.3.tgz", - "integrity": "sha512-DFOpyQ22JD5C1oeOFzL8wlqSWZzrqgDfDbUGP8xdO4wJu+FVTxnnWN6ZYLdTPB1u27DOhd7TzjQMfLDHLu7kbQ==", - "dev": true, - "dependencies": { - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/cli": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.0.0.tgz", @@ -5349,32 +4706,6 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/cli/node_modules/@storybook/channels": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0.tgz", - "integrity": "sha512-adPIkvL4q37dGTWCpSzV8ETLdkxsg7BAgzeT9pustZJjRIZqAHGUAm7krDtGT7jbV4dU0Zw0VpUrnmyfxIkOKQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/cli/node_modules/@storybook/types": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.0.tgz", - "integrity": "sha512-eCMW/xTVMswgD/58itibw8s8f2hZ7tciT3saRdGCymg9tPUhMC/9eGIIUSr/C+xfnCJEZm6J6DgEUo1xlifonw==", - "dev": true, - "dependencies": { - "@storybook/channels": "7.0.0", - "@types/babel__core": "^7.0.0", - "@types/express": "^4.7.0", - "file-system-cache": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/cli/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -5529,9 +4860,9 @@ } }, "node_modules/@storybook/client-logger": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.5.3.tgz", - "integrity": "sha512-vUFYALypjix5FoJ5M/XUP6KmyTnQJNW1poHdW7WXUVSg+lBM6E5eAtjTm0hdxNNDH8KSrdy24nCLra5h0X0BWg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0.tgz", + "integrity": "sha512-wRZZiPta37DFc8SVZ8Q3ZqyTrs5qgO6bcCuVDRLQAcO0Oz4xKEVPEVfVVxSPZU/+p2ypqdBBCP2pdL/Jy86AJg==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0" @@ -5751,32 +5082,6 @@ "node": ">=6.9.0" } }, - "node_modules/@storybook/codemod/node_modules/@storybook/channels": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0.tgz", - "integrity": "sha512-adPIkvL4q37dGTWCpSzV8ETLdkxsg7BAgzeT9pustZJjRIZqAHGUAm7krDtGT7jbV4dU0Zw0VpUrnmyfxIkOKQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/codemod/node_modules/@storybook/types": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.0.tgz", - "integrity": "sha512-eCMW/xTVMswgD/58itibw8s8f2hZ7tciT3saRdGCymg9tPUhMC/9eGIIUSr/C+xfnCJEZm6J6DgEUo1xlifonw==", - "dev": true, - "dependencies": { - "@storybook/channels": "7.0.0", - "@types/babel__core": "^7.0.0", - "@types/express": "^4.7.0", - "file-system-cache": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/codemod/node_modules/babel-plugin-polyfill-corejs2": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", @@ -5861,65 +5166,6 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/components/node_modules/@storybook/channels": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0.tgz", - "integrity": "sha512-adPIkvL4q37dGTWCpSzV8ETLdkxsg7BAgzeT9pustZJjRIZqAHGUAm7krDtGT7jbV4dU0Zw0VpUrnmyfxIkOKQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/components/node_modules/@storybook/client-logger": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0.tgz", - "integrity": "sha512-wRZZiPta37DFc8SVZ8Q3ZqyTrs5qgO6bcCuVDRLQAcO0Oz4xKEVPEVfVVxSPZU/+p2ypqdBBCP2pdL/Jy86AJg==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/components/node_modules/@storybook/theming": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.0.0.tgz", - "integrity": "sha512-bLNt9FrYBh95/YBJSJPMoXpuHCb21O/Zy/XgoCDrkXFxcDwapanFs2nzmavevq1Aev8WyMIGBJjcMZDpYtY63A==", - "dev": true, - "dependencies": { - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.0.0", - "@storybook/global": "^5.0.0", - "memoizerific": "^1.11.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/components/node_modules/@storybook/types": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.0.tgz", - "integrity": "sha512-eCMW/xTVMswgD/58itibw8s8f2hZ7tciT3saRdGCymg9tPUhMC/9eGIIUSr/C+xfnCJEZm6J6DgEUo1xlifonw==", - "dev": true, - "dependencies": { - "@storybook/channels": "7.0.0", - "@types/babel__core": "^7.0.0", - "@types/express": "^4.7.0", - "file-system-cache": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/core-client": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.0.0.tgz", @@ -5934,19 +5180,6 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-client/node_modules/@storybook/client-logger": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0.tgz", - "integrity": "sha512-wRZZiPta37DFc8SVZ8Q3ZqyTrs5qgO6bcCuVDRLQAcO0Oz4xKEVPEVfVVxSPZU/+p2ypqdBBCP2pdL/Jy86AJg==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/core-common": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.0.0.tgz", @@ -6330,32 +5563,6 @@ "node": ">=12" } }, - "node_modules/@storybook/core-common/node_modules/@storybook/channels": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0.tgz", - "integrity": "sha512-adPIkvL4q37dGTWCpSzV8ETLdkxsg7BAgzeT9pustZJjRIZqAHGUAm7krDtGT7jbV4dU0Zw0VpUrnmyfxIkOKQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/core-common/node_modules/@storybook/types": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.0.tgz", - "integrity": "sha512-eCMW/xTVMswgD/58itibw8s8f2hZ7tciT3saRdGCymg9tPUhMC/9eGIIUSr/C+xfnCJEZm6J6DgEUo1xlifonw==", - "dev": true, - "dependencies": { - "@storybook/channels": "7.0.0", - "@types/babel__core": "^7.0.0", - "@types/express": "^4.7.0", - "file-system-cache": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/core-common/node_modules/@types/glob": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", @@ -6532,16 +5739,6 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-server/node_modules/@storybook/channels": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0.tgz", - "integrity": "sha512-adPIkvL4q37dGTWCpSzV8ETLdkxsg7BAgzeT9pustZJjRIZqAHGUAm7krDtGT7jbV4dU0Zw0VpUrnmyfxIkOKQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/core-server/node_modules/@storybook/manager": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.0.0.tgz", @@ -6552,22 +5749,6 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-server/node_modules/@storybook/types": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.0.tgz", - "integrity": "sha512-eCMW/xTVMswgD/58itibw8s8f2hZ7tciT3saRdGCymg9tPUhMC/9eGIIUSr/C+xfnCJEZm6J6DgEUo1xlifonw==", - "dev": true, - "dependencies": { - "@storybook/channels": "7.0.0", - "@types/babel__core": "^7.0.0", - "@types/express": "^4.7.0", - "file-system-cache": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/core-server/node_modules/@types/node": { "version": "16.18.61", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.61.tgz", @@ -6823,32 +6004,6 @@ "node": ">=6.0.0" } }, - "node_modules/@storybook/csf-tools/node_modules/@storybook/channels": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0.tgz", - "integrity": "sha512-adPIkvL4q37dGTWCpSzV8ETLdkxsg7BAgzeT9pustZJjRIZqAHGUAm7krDtGT7jbV4dU0Zw0VpUrnmyfxIkOKQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/csf-tools/node_modules/@storybook/types": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.0.tgz", - "integrity": "sha512-eCMW/xTVMswgD/58itibw8s8f2hZ7tciT3saRdGCymg9tPUhMC/9eGIIUSr/C+xfnCJEZm6J6DgEUo1xlifonw==", - "dev": true, - "dependencies": { - "@storybook/channels": "7.0.0", - "@types/babel__core": "^7.0.0", - "@types/express": "^4.7.0", - "file-system-cache": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/csf/node_modules/type-fest": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", @@ -6887,32 +6042,6 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/docs-tools/node_modules/@storybook/channels": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0.tgz", - "integrity": "sha512-adPIkvL4q37dGTWCpSzV8ETLdkxsg7BAgzeT9pustZJjRIZqAHGUAm7krDtGT7jbV4dU0Zw0VpUrnmyfxIkOKQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/docs-tools/node_modules/@storybook/types": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.0.tgz", - "integrity": "sha512-eCMW/xTVMswgD/58itibw8s8f2hZ7tciT3saRdGCymg9tPUhMC/9eGIIUSr/C+xfnCJEZm6J6DgEUo1xlifonw==", - "dev": true, - "dependencies": { - "@storybook/channels": "7.0.0", - "@types/babel__core": "^7.0.0", - "@types/express": "^4.7.0", - "file-system-cache": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/global": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz", @@ -6937,29 +6066,6 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/instrumenter/node_modules/@storybook/channels": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0.tgz", - "integrity": "sha512-adPIkvL4q37dGTWCpSzV8ETLdkxsg7BAgzeT9pustZJjRIZqAHGUAm7krDtGT7jbV4dU0Zw0VpUrnmyfxIkOKQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/instrumenter/node_modules/@storybook/client-logger": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0.tgz", - "integrity": "sha512-wRZZiPta37DFc8SVZ8Q3ZqyTrs5qgO6bcCuVDRLQAcO0Oz4xKEVPEVfVVxSPZU/+p2ypqdBBCP2pdL/Jy86AJg==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/manager": { "version": "7.6.0-alpha.4", "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.6.0-alpha.4.tgz", @@ -7001,65 +6107,6 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/manager-api/node_modules/@storybook/channels": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0.tgz", - "integrity": "sha512-adPIkvL4q37dGTWCpSzV8ETLdkxsg7BAgzeT9pustZJjRIZqAHGUAm7krDtGT7jbV4dU0Zw0VpUrnmyfxIkOKQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/manager-api/node_modules/@storybook/client-logger": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0.tgz", - "integrity": "sha512-wRZZiPta37DFc8SVZ8Q3ZqyTrs5qgO6bcCuVDRLQAcO0Oz4xKEVPEVfVVxSPZU/+p2ypqdBBCP2pdL/Jy86AJg==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/manager-api/node_modules/@storybook/theming": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.0.0.tgz", - "integrity": "sha512-bLNt9FrYBh95/YBJSJPMoXpuHCb21O/Zy/XgoCDrkXFxcDwapanFs2nzmavevq1Aev8WyMIGBJjcMZDpYtY63A==", - "dev": true, - "dependencies": { - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.0.0", - "@storybook/global": "^5.0.0", - "memoizerific": "^1.11.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/manager-api/node_modules/@storybook/types": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.0.tgz", - "integrity": "sha512-eCMW/xTVMswgD/58itibw8s8f2hZ7tciT3saRdGCymg9tPUhMC/9eGIIUSr/C+xfnCJEZm6J6DgEUo1xlifonw==", - "dev": true, - "dependencies": { - "@storybook/channels": "7.0.0", - "@types/babel__core": "^7.0.0", - "@types/express": "^4.7.0", - "file-system-cache": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/manager-api/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -7156,45 +6203,6 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/preview-api/node_modules/@storybook/channels": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0.tgz", - "integrity": "sha512-adPIkvL4q37dGTWCpSzV8ETLdkxsg7BAgzeT9pustZJjRIZqAHGUAm7krDtGT7jbV4dU0Zw0VpUrnmyfxIkOKQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/preview-api/node_modules/@storybook/client-logger": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0.tgz", - "integrity": "sha512-wRZZiPta37DFc8SVZ8Q3ZqyTrs5qgO6bcCuVDRLQAcO0Oz4xKEVPEVfVVxSPZU/+p2ypqdBBCP2pdL/Jy86AJg==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/preview-api/node_modules/@storybook/types": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.0.tgz", - "integrity": "sha512-eCMW/xTVMswgD/58itibw8s8f2hZ7tciT3saRdGCymg9tPUhMC/9eGIIUSr/C+xfnCJEZm6J6DgEUo1xlifonw==", - "dev": true, - "dependencies": { - "@storybook/channels": "7.0.0", - "@types/babel__core": "^7.0.0", - "@types/express": "^4.7.0", - "file-system-cache": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/react": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.0.0.tgz", @@ -7301,45 +6309,6 @@ "vite": "^4.1.0-beta.0" } }, - "node_modules/@storybook/react/node_modules/@storybook/channels": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.0.0.tgz", - "integrity": "sha512-adPIkvL4q37dGTWCpSzV8ETLdkxsg7BAgzeT9pustZJjRIZqAHGUAm7krDtGT7jbV4dU0Zw0VpUrnmyfxIkOKQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/react/node_modules/@storybook/client-logger": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0.tgz", - "integrity": "sha512-wRZZiPta37DFc8SVZ8Q3ZqyTrs5qgO6bcCuVDRLQAcO0Oz4xKEVPEVfVVxSPZU/+p2ypqdBBCP2pdL/Jy86AJg==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/react/node_modules/@storybook/types": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.0.tgz", - "integrity": "sha512-eCMW/xTVMswgD/58itibw8s8f2hZ7tciT3saRdGCymg9tPUhMC/9eGIIUSr/C+xfnCJEZm6J6DgEUo1xlifonw==", - "dev": true, - "dependencies": { - "@storybook/channels": "7.0.0", - "@types/babel__core": "^7.0.0", - "@types/express": "^4.7.0", - "file-system-cache": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/react/node_modules/@types/node": { "version": "16.18.61", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.61.tgz", @@ -7377,19 +6346,6 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/router/node_modules/@storybook/client-logger": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0.tgz", - "integrity": "sha512-wRZZiPta37DFc8SVZ8Q3ZqyTrs5qgO6bcCuVDRLQAcO0Oz4xKEVPEVfVVxSPZU/+p2ypqdBBCP2pdL/Jy86AJg==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/telemetry": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.0.0.tgz", @@ -7411,19 +6367,6 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/telemetry/node_modules/@storybook/client-logger": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.0.0.tgz", - "integrity": "sha512-wRZZiPta37DFc8SVZ8Q3ZqyTrs5qgO6bcCuVDRLQAcO0Oz4xKEVPEVfVVxSPZU/+p2ypqdBBCP2pdL/Jy86AJg==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/testing-library": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/@storybook/testing-library/-/testing-library-0.2.2.tgz", @@ -7436,13 +6379,13 @@ } }, "node_modules/@storybook/theming": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.5.3.tgz", - "integrity": "sha512-Cjmthe1MAk0z4RKCZ7m72gAD8YD0zTAH97z5ryM1Qv84QXjiCQ143fGOmYz1xEQdNFpOThPcwW6FEccLHTkVcg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.0.0.tgz", + "integrity": "sha512-bLNt9FrYBh95/YBJSJPMoXpuHCb21O/Zy/XgoCDrkXFxcDwapanFs2nzmavevq1Aev8WyMIGBJjcMZDpYtY63A==", "dev": true, "dependencies": { "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.5.3", + "@storybook/client-logger": "7.0.0", "@storybook/global": "^5.0.0", "memoizerific": "^1.11.3" }, @@ -7456,15 +6399,15 @@ } }, "node_modules/@storybook/types": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.5.3.tgz", - "integrity": "sha512-iu5W0Kdd6nysN5CPkY4GRl+0BpxRTdSfBIJak7mb6xCIHSB5t1tw4BOuqMQ5EgpikRY3MWJ4gY647QkWBX3MNQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.0.0.tgz", + "integrity": "sha512-eCMW/xTVMswgD/58itibw8s8f2hZ7tciT3saRdGCymg9tPUhMC/9eGIIUSr/C+xfnCJEZm6J6DgEUo1xlifonw==", "dev": true, "dependencies": { - "@storybook/channels": "7.5.3", + "@storybook/channels": "7.0.0", "@types/babel__core": "^7.0.0", "@types/express": "^4.7.0", - "file-system-cache": "2.3.0" + "file-system-cache": "^2.0.0" }, "funding": { "type": "opencollective", @@ -16279,12 +15222,6 @@ "xtend": "~4.0.1" } }, - "node_modules/tiny-invariant": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", - "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==", - "dev": true - }, "node_modules/tinycolor2": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", diff --git a/package.json b/package.json index 6350c99..cd1cf89 100644 --- a/package.json +++ b/package.json @@ -59,8 +59,8 @@ "@storybook/react": "7.0.0", "@storybook/react-vite": "7.0.0", "@storybook/testing-library": "^0.2.2", - "@storybook/theming": "^7.0.0", - "@storybook/types": "^7.0.0", + "@storybook/theming": "7.0.0", + "@storybook/types": "7.0.0", "@types/node": "^18.15.0", "@types/react": "^16.14.51", "@types/react-dom": "^16.9.22", From 53d7a25b27eab337439e973128e918e98ddb7836 Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Wed, 8 Nov 2023 11:24:53 +0100 Subject: [PATCH 04/11] remove outdated sentence about tabs --- src/components/TabContent.tsx | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/components/TabContent.tsx b/src/components/TabContent.tsx index 3468563..29d289c 100644 --- a/src/components/TabContent.tsx +++ b/src/components/TabContent.tsx @@ -24,12 +24,7 @@ export const TabContent: React.FC = ({ code }) => (

My Addon

- Your addon can create a custom tab in Storybook. For example, the - official{" "} - - @storybook/addon-docs - {" "} - uses this pattern. + Your addon can create a custom tab in Storybook.

You have full control over what content is being rendered here. You can From f642318b45a899bfe18596fd655e5569349f1649 Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Wed, 8 Nov 2023 11:25:04 +0100 Subject: [PATCH 05/11] cleanup tsup config --- tsup.config.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tsup.config.ts b/tsup.config.ts index 4afd8dd..2882181 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -47,14 +47,14 @@ type BundlerConfig = { }; export default defineConfig(async (options) => { - const pkgJsonContent = await readFile(join(__dirname, "package.json")); + const packageJson = await readFile('./package.json', 'utf8').then(JSON.parse) as BundlerConfig; const { bundler: { exportEntries = [], managerEntries = [], previewEntries = [], } = {}, - } = JSON.parse(pkgJsonContent.toString()) as BundlerConfig; + } = packageJson; const commonConfig: Options = { splitting: false, From 336bf92cc15bb21d6ea7af08797aedf76b5a10ff Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Wed, 8 Nov 2023 12:12:10 +0100 Subject: [PATCH 06/11] add bundling section to readme --- README.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/README.md b/README.md index 927bdff..d9d7629 100644 --- a/README.md +++ b/README.md @@ -70,6 +70,30 @@ Your addon might use one or more of these patterns. Feel free to delete unused c Lastly, configure you addon name in `src/constants.ts`. +### Bundling + +Addons have multiple ways of interacting with a Storybook project. It's recommended to understand [the basics](https://storybook.js.org/docs/react/addons/introduction) before diving in. + +- Manager entries are used to inject UI or behavior to the Storybook manager UI +- Preview entries are used to inject UI or behavior into the preview iframe where stories are rendered +- Presets are used to alter the configuration of a Storybook similar to how [users can configure their `main.ts` configurations](https://storybook.js.org/docs/react/api/main-config). + +Each of these places are different environments where different features and modules are available, therefore it's also recommended to separate and build your modules into the same categories. Addon-kit comes preconfigured with [a bundling configuration](./tsup.config.ts) that supports this separation and you're free to modify and extend it to suit your needs. + +You define which modules match which environments in the [`package.json#bundler`](./package.json) property: + +- `exportEntries` is a list of module entries that your users can import from manually anywhere they need to. Eg. you could have decorators that users need to import to their `preview.ts` file, or utility functions that can be used in their `main.ts` files. +- `managerEntries` is a list of module entries meant only for the manager UI. These modules will only be bundled to ESM and won't include types, since they are mostly loaded by Storybook directly anyway. +- `managerEntries` is a list of module entries meant only for the preview UI. These modules will only be bundled to ESM and won't include types, since they are mostly loaded by Storybook directly anyway. + +#### Globalized packages + +Storybook makes a pre-defined set of packages available in the manager UI and in the preview UI. In the final bundle of your addon these packages should not be included, but rather imported directly, which allows Storybook to replace those imports with the actual packages when Storybook is being built. + +The list of packages is different between the manager and the preview, which is why there's a slight difference between `managerEntries` and `previewEntries`. Most notably `react` and `react-dom` comes prebundled in the manager, but not in the preview. This means that your manager entries are free to use React to build UI _without_ bundling it in or having a direct reference to it, which is why it's safe to have them as a `devDependency` even though you are using it. _Having React as a peer dependency will unnecessarily require your users to install React._ + +An exception to the rule above is if you're using React to inject UI into the _preview_, which doesn't come prebundled with React. In those cases you need to move `react` and `react-dom` to a peer dependency. We generally advice against this pattern since this will mean your addon can only be used in React-based Storybooks. + ### Metadata Storybook addons are listed in the [catalog](https://storybook.js.org/addons) and distributed via npm. The catalog is populated by querying npm's registry for Storybook-specific metadata in `package.json`. This project has been configured with sample data. Learn more about available options in the [Addon metadata docs](https://storybook.js.org/docs/react/addons/addon-catalog#addon-metadata). From c5b420a4069189be09a69e068b2894f2282abbd8 Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Wed, 8 Nov 2023 13:51:50 +0100 Subject: [PATCH 07/11] import global packages from canary release --- package-lock.json | 16 ++++++++-------- package.json | 4 ++-- tsup.config.ts | 35 ++--------------------------------- 3 files changed, 12 insertions(+), 43 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0a0a075..3bb2dbf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,9 +16,9 @@ "@storybook/blocks": "7.0.0", "@storybook/components": "7.0.0", "@storybook/core-events": "7.0.0", - "@storybook/manager": "7.6.0-alpha.4", + "@storybook/manager": "0.0.0-pr-24676-sha-214a6f84", "@storybook/manager-api": "7.0.0", - "@storybook/preview": "7.6.0-alpha.4", + "@storybook/preview": "0.0.0-pr-24676-sha-214a6f84", "@storybook/preview-api": "7.0.0", "@storybook/react": "7.0.0", "@storybook/react-vite": "7.0.0", @@ -6067,9 +6067,9 @@ } }, "node_modules/@storybook/manager": { - "version": "7.6.0-alpha.4", - "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.6.0-alpha.4.tgz", - "integrity": "sha512-WKYwtkl9+UMtlx4uUe1TO1kcwJAfx6Svr5iRtTYkECRkIulwV1gc9eHhOhsBx0TlfOL3Z6++7acMbwAnnyJXZA==", + "version": "0.0.0-pr-24676-sha-214a6f84", + "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-0.0.0-pr-24676-sha-214a6f84.tgz", + "integrity": "sha512-fTtqqVuQ4fyY4nVLmCrZUFztgBbok7lJF1hSp0JFkoataQN5wp8zIdnF63K8V5Ob+sQF1Z8ewNBxsX/2lswSgg==", "dev": true, "funding": { "type": "opencollective", @@ -6167,9 +6167,9 @@ } }, "node_modules/@storybook/preview": { - "version": "7.6.0-alpha.4", - "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.6.0-alpha.4.tgz", - "integrity": "sha512-95rVBo2dMQ9pJ2saitYW5d3kF4w+QuDhClQeg8SJIW27O6gE2jXq+JOwLEx53OC0XYr5cPWV1r50YWxfco7R/g==", + "version": "0.0.0-pr-24676-sha-214a6f84", + "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-0.0.0-pr-24676-sha-214a6f84.tgz", + "integrity": "sha512-2tkqxfnNIBRwO0neEBG8PkupmBZWYxnAAygjUiRtuEwahEJDPnIhuBOw9nxBzcb1D0dbb2cEIL5bc0qqXS1J3Q==", "dev": true, "funding": { "type": "opencollective", diff --git a/package.json b/package.json index cd1cf89..899a600 100644 --- a/package.json +++ b/package.json @@ -52,9 +52,9 @@ "@storybook/blocks": "7.0.0", "@storybook/components": "7.0.0", "@storybook/core-events": "7.0.0", - "@storybook/manager": "7.6.0-alpha.4", + "@storybook/manager": "0.0.0-pr-24676-sha-214a6f84", "@storybook/manager-api": "7.0.0", - "@storybook/preview": "7.6.0-alpha.4", + "@storybook/preview": "0.0.0-pr-24676-sha-214a6f84", "@storybook/preview-api": "7.0.0", "@storybook/react": "7.0.0", "@storybook/react-vite": "7.0.0", diff --git a/tsup.config.ts b/tsup.config.ts index 2882181..c8390bd 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -1,38 +1,7 @@ import { defineConfig, type Options } from "tsup"; import { readFile } from "fs/promises"; -import { join } from "path"; - -// temporarily hardocded until https://github.com/storybookjs/storybook/pull/24676 is released so we can import the lists instead -const globalManagerPackages = [ - 'react', - 'react-dom', - '@storybook/components', - '@storybook/channels', - '@storybook/core-events', - '@storybook/router', - '@storybook/theming', - '@storybook/api', - '@storybook/manager-api', - '@storybook/addons', - '@storybook/client-logger', - '@storybook/types', -] - -const globalPreviewPackages = [ - '@storybook/addons', - '@storybook/global', - '@storybook/channel-postmessage', - '@storybook/channel-websocket', - '@storybook/channels', - '@storybook/client-api', - '@storybook/client-logger', - '@storybook/core-client', - '@storybook/core-events', - '@storybook/preview-web', - '@storybook/preview-api', - '@storybook/store', - '@storybook/types', -]; +import { globalPackages as globalManagerPackages } from "@storybook/manager/globals"; +import { globalPackages as globalPreviewPackages } from "@storybook/preview/globals"; const BROWSER_TARGET: Options['target'] = ["chrome100", "safari15", "firefox91"]; const NODE_TARGET: Options['target'] = ["node16"]; From 72acb34b764098d684a8bcaf70ce83d122c28a90 Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Wed, 8 Nov 2023 14:04:44 +0100 Subject: [PATCH 08/11] improve bundling wording --- README.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index d9d7629..ee9fce3 100644 --- a/README.md +++ b/README.md @@ -72,27 +72,27 @@ Lastly, configure you addon name in `src/constants.ts`. ### Bundling -Addons have multiple ways of interacting with a Storybook project. It's recommended to understand [the basics](https://storybook.js.org/docs/react/addons/introduction) before diving in. +Addons can interact with a Storybook project in multiple ways. It is recommended to familiarize yourself with [the basics](https://storybook.js.org/docs/react/addons/introduction) before getting started. -- Manager entries are used to inject UI or behavior to the Storybook manager UI -- Preview entries are used to inject UI or behavior into the preview iframe where stories are rendered -- Presets are used to alter the configuration of a Storybook similar to how [users can configure their `main.ts` configurations](https://storybook.js.org/docs/react/api/main-config). +- Manager entries are used to add UI or behavior to the Storybook manager UI. +- Preview entries are used to add UI or behavior to the preview iframe where stories are rendered. +- Presets are used to modify the Storybook configuration, similar to how [users can configure their `main.ts` configurations](https://storybook.js.org/docs/react/api/main-config). -Each of these places are different environments where different features and modules are available, therefore it's also recommended to separate and build your modules into the same categories. Addon-kit comes preconfigured with [a bundling configuration](./tsup.config.ts) that supports this separation and you're free to modify and extend it to suit your needs. +Since each of these places represents a different environment with different features and modules, it is also recommended to split and build your modules accordingly. This addon-kit comes with a preconfigured [bundling configuration](./tsup.config.ts) that supports this split, and you are free to modify and extend it as needed. -You define which modules match which environments in the [`package.json#bundler`](./package.json) property: +You can define which modules match which environments in the [`package.json#bundler`](./package.json) property: -- `exportEntries` is a list of module entries that your users can import from manually anywhere they need to. Eg. you could have decorators that users need to import to their `preview.ts` file, or utility functions that can be used in their `main.ts` files. -- `managerEntries` is a list of module entries meant only for the manager UI. These modules will only be bundled to ESM and won't include types, since they are mostly loaded by Storybook directly anyway. -- `managerEntries` is a list of module entries meant only for the preview UI. These modules will only be bundled to ESM and won't include types, since they are mostly loaded by Storybook directly anyway. +- `exportEntries` is a list of module entries that users can manually import from anywhere they need to. For example, you could have decorators that users need to import into their `preview.ts` file or utility functions that can be used in their `main.ts` files. +- `managerEntries` is a list of module entries meant only for the manager UI. These modules will be bundled to ESM and won't include types since they are mostly loaded by Storybook directly. +- `previewEntries` is a list of module entries meant only for the preview UI. These modules will be bundled to ESM and won't include types since they are mostly loaded by Storybook directly. #### Globalized packages -Storybook makes a pre-defined set of packages available in the manager UI and in the preview UI. In the final bundle of your addon these packages should not be included, but rather imported directly, which allows Storybook to replace those imports with the actual packages when Storybook is being built. +Storybook provides a predefined set of packages that are available in the manager UI and the preview UI. In the final bundle of your addon, these packages should not be included. Instead, the imports should stay in place, allowing Storybook to replace those imports with the actual packages during the Storybook build process. -The list of packages is different between the manager and the preview, which is why there's a slight difference between `managerEntries` and `previewEntries`. Most notably `react` and `react-dom` comes prebundled in the manager, but not in the preview. This means that your manager entries are free to use React to build UI _without_ bundling it in or having a direct reference to it, which is why it's safe to have them as a `devDependency` even though you are using it. _Having React as a peer dependency will unnecessarily require your users to install React._ +The list of packages differs between the manager and the preview, which is why there is a slight difference between `managerEntries` and `previewEntries`. Most notably, `react` and `react-dom` are prebundled in the manager but not in the preview. This means that your manager entries can use React to build UI without bundling it or having a direct reference to it. Therefore, it is safe to have React as a `devDependency` even though you are using it in production. _Requiring React as a peer dependency would unnecessarily force your users to install React._ -An exception to the rule above is if you're using React to inject UI into the _preview_, which doesn't come prebundled with React. In those cases you need to move `react` and `react-dom` to a peer dependency. We generally advice against this pattern since this will mean your addon can only be used in React-based Storybooks. +An exception to this rule is if you are using React to inject UI into the preview, which does not come prebundled with React. In such cases, you need to move `react` and `react-dom` to a peer dependency. However, we generally advise against this pattern since it would limit the usage of your addon to React-based Storybooks. ### Metadata From 45a52d610c6eec3bfef51b539d106dbc01216158 Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Wed, 8 Nov 2023 14:07:52 +0100 Subject: [PATCH 09/11] add note about ESM vs CJS outputs --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index ee9fce3..2e9e761 100644 --- a/README.md +++ b/README.md @@ -86,6 +86,8 @@ You can define which modules match which environments in the [`package.json#bund - `managerEntries` is a list of module entries meant only for the manager UI. These modules will be bundled to ESM and won't include types since they are mostly loaded by Storybook directly. - `previewEntries` is a list of module entries meant only for the preview UI. These modules will be bundled to ESM and won't include types since they are mostly loaded by Storybook directly. +Manager and preview entries are only used in the browser so they only output ESM modules. Export entries could be used both in the browser and in Node depending on their use case, so they both output ESM and CJS modules. + #### Globalized packages Storybook provides a predefined set of packages that are available in the manager UI and the preview UI. In the final bundle of your addon, these packages should not be included. Instead, the imports should stay in place, allowing Storybook to replace those imports with the actual packages during the Storybook build process. From 630b5c41f1ea86a523c4eea98a9f534342bde289 Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Wed, 8 Nov 2023 15:07:10 +0100 Subject: [PATCH 10/11] add peer dependency check --- scripts/prepublish-checks.mjs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/scripts/prepublish-checks.mjs b/scripts/prepublish-checks.mjs index 93f77c5..84b1630 100644 --- a/scripts/prepublish-checks.mjs +++ b/scripts/prepublish-checks.mjs @@ -3,6 +3,8 @@ import boxen from "boxen"; import dedent from "dedent"; import { readFile } from 'fs/promises'; +import { globalPackages as globalManagerPackages } from "@storybook/manager/globals"; +import { globalPackages as globalPreviewPackages } from "@storybook/preview/globals"; const packageJson = await readFile('./package.json', 'utf8').then(JSON.parse); @@ -55,4 +57,30 @@ if ((await $`cat README.md | grep -E ${readmeTestStrings}`.exitCode) == 0) { exitCode = 1; } +/** + * Check that globalized packages are not incorrectly listed as peer dependencies + */ +const peerDependencies = Object.keys(packageJson.peerDependencies || {}); +const globalPackages = [...globalManagerPackages, ...globalPreviewPackages]; +peerDependencies.forEach((dependency) => { + if(globalPackages.includes(dependency)) { + console.error( + boxen( + dedent` + ${chalk.red.bold("Unnecessary peer dependency")} + + ${chalk.red(dedent`You have a peer dependency on ${chalk.bold(dependency)} which is most likely unnecessary + as that is provided by Storybook directly. + Check the "bundling" section in README.md for more information. + If you are absolutely sure you are doing it correct, you should remove this check from scripts/prepublish-checks.mjs.`)} + `, + { padding: 1, borderColor: "red" } + ) + ); + + exitCode = 1; + + } +}) + process.exit(exitCode); From f28e7b7beab131f0f99a61f3df454e96163bb1ee Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Wed, 8 Nov 2023 23:55:03 +0100 Subject: [PATCH 11/11] add comments to tsup config --- tsup.config.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tsup.config.ts b/tsup.config.ts index c8390bd..6836a44 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -3,6 +3,7 @@ import { readFile } from "fs/promises"; import { globalPackages as globalManagerPackages } from "@storybook/manager/globals"; import { globalPackages as globalPreviewPackages } from "@storybook/preview/globals"; +// The current browsers supported by Storybook v7 const BROWSER_TARGET: Options['target'] = ["chrome100", "safari15", "firefox91"]; const NODE_TARGET: Options['target'] = ["node16"]; @@ -16,6 +17,15 @@ type BundlerConfig = { }; export default defineConfig(async (options) => { + // reading the three types of entries from package.json, which has the following structure: + // { + // ... + // "bundler": { + // "exportEntries": ["./src/index.ts"], + // "managerEntries": ["./src/manager.ts"], + // "previewEntries": ["./src/preview.ts"] + // } + // } const packageJson = await readFile('./package.json', 'utf8').then(JSON.parse) as BundlerConfig; const { bundler: { @@ -35,6 +45,9 @@ export default defineConfig(async (options) => { const configs: Options[] = []; + // export entries are entries meant to be manually imported by the user + // they are not meant to be loaded by the manager or preview + // they'll be usable in both node and browser environments, depending on which features and modules they depend on if (exportEntries.length) { configs.push({ ...commonConfig, @@ -49,6 +62,9 @@ export default defineConfig(async (options) => { }); } + // manager entries are entries meant to be loaded into the manager UI + // they'll have manager-specific packages externalized and they won't be usable in node + // they won't have types generated for them as they're usually loaded automatically by Storybook if (managerEntries.length) { configs.push({ ...commonConfig, @@ -60,6 +76,9 @@ export default defineConfig(async (options) => { }); } + // preview entries are entries meant to be loaded into the preview iframe + // they'll have preview-specific packages externalized and they won't be usable in node + // they won't have types generated for them as they're usually loaded automatically by Storybook if (previewEntries.length) { configs.push({ ...commonConfig,