diff --git a/.storybook/main.ts b/.storybook/main.ts index b485723..43fb3c1 100644 --- a/.storybook/main.ts +++ b/.storybook/main.ts @@ -2,9 +2,11 @@ import type { StorybookConfig } from '@storybook/svelte-vite'; const config: StorybookConfig = { framework: '@storybook/svelte-vite', - stories: [ - '../stories/**/*.stories.svelte', - ], + stories: [{ + directory: '../stories', + files:'**/*.stories.svelte', + titlePrefix:'Demo' + }], addons: [ '../dist/preset/index.js', '@storybook/addon-essentials', diff --git a/.vscode/settings.json b/.vscode/settings.json index 66d2c07..35c04ce 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,4 @@ { - "deepscan.enable": true -} \ No newline at end of file + "deepscan.enable": true, + "typescript.tsdk": "node_modules/typescript/lib" +} diff --git a/CHANGELOG.md b/CHANGELOG.md index 06c50bf..f4acba7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,206 @@ +# v4.1.0 (Fri Dec 29 2023) + +#### 🚀 Enhancement + +- Update versions of peer dependencies to allow latest Vite and Vite Svelte plugin [#159](https://github.com/storybookjs/addon-svelte-csf/pull/159) ([@joekrump](https://github.com/joekrump)) + +#### Authors: 1 + +- Joe Krump ([@joekrump](https://github.com/joekrump)) + +--- + +# v4.0.13 (Tue Nov 21 2023) + +#### 🐛 Bug Fix + +- Add component description from jsdoc on meta export [#158](https://github.com/storybookjs/addon-svelte-csf/pull/158) ([@j3rem1e](https://github.com/j3rem1e)) + +#### Authors: 1 + +- Jérémie ([@j3rem1e](https://github.com/j3rem1e)) + +--- + +# v4.0.12 (Fri Nov 17 2023) + +#### 🐛 Bug Fix + +- Exports package.json [#157](https://github.com/storybookjs/addon-svelte-csf/pull/157) ([@tylergaw](https://github.com/tylergaw)) + +#### Authors: 1 + +- Tyler Gaw ([@tylergaw](https://github.com/tylergaw)) + +--- + +# v4.0.11 (Fri Nov 10 2023) + +#### 🐛 Bug Fix + +- Parse comments as Story description [#154](https://github.com/storybookjs/addon-svelte-csf/pull/154) ([@j3rem1e](https://github.com/j3rem1e)) + +#### Authors: 1 + +- Jérémie ([@j3rem1e](https://github.com/j3rem1e)) + +--- + +# v4.0.10 (Thu Nov 09 2023) + +#### 🐛 Bug Fix + +- Update src/preset/indexer.ts [#153](https://github.com/storybookjs/addon-svelte-csf/pull/153) ([@benmccann](https://github.com/benmccann)) +- Add support for experimental_indexers [#153](https://github.com/storybookjs/addon-svelte-csf/pull/153) ([@j3rem1e](https://github.com/j3rem1e)) +- Upgrade dev dependencies to Storybook v7.5.2 and Svelte 4.2.2 [#153](https://github.com/storybookjs/addon-svelte-csf/pull/153) ([@j3rem1e](https://github.com/j3rem1e)) + +#### 📝 Documentation + +- Updated Readme to include component [#150](https://github.com/storybookjs/addon-svelte-csf/pull/150) ([@brittneypostma](https://github.com/brittneypostma)) + +#### Authors: 3 + +- Ben McCann ([@benmccann](https://github.com/benmccann)) +- Brittney Postma ([@brittneypostma](https://github.com/brittneypostma)) +- Jérémie ([@j3rem1e](https://github.com/j3rem1e)) + +--- + +# v4.0.9 (Sat Sep 23 2023) + +#### 🐛 Bug Fix + +- Fix reactivity of args when HMR remount the RenderContext [#144](https://github.com/storybookjs/addon-svelte-csf/pull/144) ([@j3rem1e](https://github.com/j3rem1e)) + +#### Authors: 1 + +- Jérémie ([@j3rem1e](https://github.com/j3rem1e)) + +--- + +# v4.0.8 (Thu Sep 21 2023) + +#### 🐛 Bug Fix + +- Fix forwarding of actions handlers [#142](https://github.com/storybookjs/addon-svelte-csf/pull/142) ([@j3rem1e](https://github.com/j3rem1e)) + +#### Authors: 1 + +- Jérémie ([@j3rem1e](https://github.com/j3rem1e)) + +--- + +# v4.0.7 (Sat Sep 16 2023) + +#### 🐛 Bug Fix + +- Update src/parser/extract-stories.ts [#134](https://github.com/storybookjs/addon-svelte-csf/pull/134) ([@benmccann](https://github.com/benmccann)) +- Allow 'meta' to be exported as const from module script [#134](https://github.com/storybookjs/addon-svelte-csf/pull/134) ([@j3rem1e](https://github.com/j3rem1e)) +- Supports for tags in [#134](https://github.com/storybookjs/addon-svelte-csf/pull/134) ([@j3rem1e](https://github.com/j3rem1e)) + +#### Authors: 2 + +- Ben McCann ([@benmccann](https://github.com/benmccann)) +- Jérémie ([@j3rem1e](https://github.com/j3rem1e)) + +--- + +# v4.0.6 (Fri Sep 15 2023) + +#### 🐛 Bug Fix + +- Allow configuration of filename patterns besides *.stories.svelte [#140](https://github.com/storybookjs/addon-svelte-csf/pull/140) ([@j3rem1e](https://github.com/j3rem1e)) + +#### Authors: 1 + +- Jérémie ([@j3rem1e](https://github.com/j3rem1e)) + +--- + +# v4.0.5 (Wed Sep 13 2023) + +#### 🐛 Bug Fix + +- fix: MetaProps typing [#139](https://github.com/storybookjs/addon-svelte-csf/pull/139) ([@paoloricciuti](https://github.com/paoloricciuti)) + +#### Authors: 1 + +- Paolo Ricciuti ([@paoloricciuti](https://github.com/paoloricciuti)) + +--- + +# v4.0.4 (Wed Sep 13 2023) + +#### 🐛 Bug Fix + +- fix: move MetaProps to its own declaration to allow for overrides [#138](https://github.com/storybookjs/addon-svelte-csf/pull/138) ([@paoloricciuti](https://github.com/paoloricciuti)) + +#### Authors: 1 + +- Paolo Ricciuti ([@paoloricciuti](https://github.com/paoloricciuti)) + +--- + +# v4.0.3 (Sat Sep 02 2023) + +#### 🐛 Bug Fix + +- Fix test snapshots [#137](https://github.com/storybookjs/addon-svelte-csf/pull/137) ([@j3rem1e](https://github.com/j3rem1e)) + +#### Authors: 1 + +- Jérémie ([@j3rem1e](https://github.com/j3rem1e)) + +--- + +# v4.0.2 (Sat Sep 02 2023) + +#### 🐛 Bug Fix + +- [Bug] titlePrefix in advanced story specifiers causes the story to crash with "Didn't find 'xyz' in CSF file" [#136](https://github.com/storybookjs/addon-svelte-csf/pull/136) ([@j3rem1e](https://github.com/j3rem1e)) + +#### Authors: 1 + +- Jérémie ([@j3rem1e](https://github.com/j3rem1e)) + +--- + +# v4.0.1 (Thu Aug 31 2023) + +#### 🐛 Bug Fix + +- Fix svelte-stories-loader in Windows [#133](https://github.com/storybookjs/addon-svelte-csf/pull/133) ([@j3rem1e](https://github.com/j3rem1e)) + +#### Authors: 1 + +- Jérémie ([@j3rem1e](https://github.com/j3rem1e)) + +--- + +# v4.0.0 (Tue Aug 29 2023) + +#### 💥 Breaking Change + +- Require Svelte v4, vite-plugin-svelte v2, Vite v4 [#128](https://github.com/storybookjs/addon-svelte-csf/pull/128) ([@JReinhold](https://github.com/JReinhold)) + +#### Authors: 1 + +- Jeppe Reinhold ([@JReinhold](https://github.com/JReinhold)) + +--- + +# v3.0.10 (Tue Aug 29 2023) + +#### 🐛 Bug Fix + +- Fix: `typeof Meta` in Svelte v3 (Pin Svelte peer dependency to v3) [#127](https://github.com/storybookjs/addon-svelte-csf/pull/127) ([@JReinhold](https://github.com/JReinhold)) + +#### Authors: 1 + +- Jeppe Reinhold ([@JReinhold](https://github.com/JReinhold)) + +--- + # v3.0.9 (Wed Aug 23 2023) #### 🐛 Bug Fix diff --git a/README.md b/README.md index 0322b43..e189e99 100644 --- a/README.md +++ b/README.md @@ -13,22 +13,57 @@ It supports: ## Example +Have a basic button component: + ```svelte + + + + +``` + +And a `button.stories.svelte` file: + +```svelte + + + - - @@ -43,7 +78,10 @@ It supports: ``` -# Getting Started +Actions are automatically registered by Storybook. To be used by this addon, you just have to forward the event (`on:click` in the previous example). + + +## Getting Started 1. `npm install --save-dev @storybook/addon-svelte-csf` or `yarn add --dev @storybook/addon-svelte-csf` 2. In `.storybook/main.js`, add `@storybook/addon-svelte-csf` to the addons array @@ -64,5 +102,21 @@ module.exports = { }; ``` -> **Warning** -> v3 and above of this addon requires at least Storybook v7. If you're using Storybook between v6.4.20 and v7.0.0, you should instead use v2 of this addon with `npm install --save-dev @storybook/addon-svelte-csf@^2.0.10` or `yarn add --dev @storybook/addon-svelte-csf@^2.0.10` +## Version Dependencies + +### 4.0.0 + +Version 4 of this addon requires _at least_: + +- Storybook v7 +- Svelte v4 +- Vite v4 (if using Vite) +- `@sveltejs/vite-plugin-svelte` v2 (if using Vite) + +If you're using Svelte v3 you can use version `^3.0.0` of this addon instead. + +### 3.0.0 + +Version 3 of this addon requires at least Storybook v7. + +If you're using Storybook between v6.4.20 and v7.0.0, you should instead use version `^2.0.0` of this addon. diff --git a/package.json b/package.json index ba81267..98c1fff 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-svelte-csf", - "version": "3.0.9", + "version": "4.1.0", "description": "Allows to write stories in Svelte syntax", "keywords": [ "storybook-addons", @@ -26,7 +26,8 @@ "./manager": { "types": "./dist/preset/manager.d.ts", "default": "./dist/preset/manager.js" - } + }, + "./package.json": "./package.json" }, "files": [ "dist/**/*", @@ -41,6 +42,7 @@ "test": "vitest run", "chromatic": "chromatic --exit-zero-on-changes", "coverage": "vitest run --coverage", + "check": "svelte-check", "lint": "eslint --cache --cache-location=.cache/eslint --ext .js,.jsx,.json,.html,.ts,.tsx,.mjs --report-unused-disable-directives", "storybook": "storybook dev --port 6006", "start": "concurrently \"pnpm run storybook --quiet\" \"pnpm run build --watch\"", @@ -55,23 +57,26 @@ }, "devDependencies": { "@auto-it/released": "^10.32.6", - "@storybook/addon-actions": "^7.1.1", - "@storybook/addon-essentials": "^7.1.1", - "@storybook/addon-interactions": "^7.1.1", - "@storybook/preview-api": "^7.1.1", - "@storybook/client-logger": "^7.1.1", - "@storybook/core-server": "^7.1.1", + "@storybook/addon-actions": "^7.5.2", + "@storybook/addon-essentials": "^7.5.2", + "@storybook/addon-interactions": "^7.5.2", + "@storybook/preview-api": "^7.5.2", + "@storybook/client-logger": "^7.5.2", + "@storybook/core-server": "^7.5.2", "@storybook/csf": "^0.1.1", "@storybook/eslint-config-storybook": "^3.1.2", "@storybook/jest": "^0.1.0", - "@storybook/svelte": "^7.1.1", - "@storybook/svelte-vite": "^7.1.1", + "@storybook/manager-api": "^7.5.2", + "@storybook/node-logger": "^7.5.2", + "@storybook/svelte": "^7.5.2", + "@storybook/svelte-vite": "^7.5.2", "@storybook/test-runner": "^0.11.0", "@storybook/testing-library": "^0.2.0", - "@storybook/types": "^7.1.1", + "@storybook/types": "^7.5.2", "@sveltejs/package": "^2.2.0", "@sveltejs/vite-plugin-svelte": "^2.4.2", "@tsconfig/svelte": "^5.0.0", + "@types/estree": "^1.0.1", "auto": "^10.43.0", "chromatic": "^6.19.9", "concurrently": "^8.2.0", @@ -82,8 +87,9 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "rimraf": "^3.0.2", - "storybook": "^7.1.1", - "svelte": "^4.0.0", + "storybook": "^7.5.2", + "svelte": "^4.2.2", + "svelte-check": "^3.5.0", "svelte-jester": "^2.3.2", "svelte-loader": "^3.1.7", "typescript": "^5.1.6", @@ -93,10 +99,10 @@ "peerDependencies": { "@storybook/svelte": "^7.0.0", "@storybook/theming": "^7.0.0", - "@sveltejs/vite-plugin-svelte": "^1.0.0 || ^2.0.0", - "svelte": "^3.50.0 || ^4.0.0", + "@sveltejs/vite-plugin-svelte": "^2.0.0 || ^3.0.0", + "svelte": "^4.0.0", "svelte-loader": "^3.1.2", - "vite": "^3.0.0 || ^4.0.0" + "vite": "^4.0.0 || ^5.0.0" }, "peerDependenciesMeta": { "@sveltejs/vite-plugin-svelte": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index de4d95e..218b86d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,20 +26,20 @@ devDependencies: specifier: ^10.32.6 version: 10.32.6(@octokit/core@3.6.0)(typescript@5.1.6) '@storybook/addon-actions': - specifier: ^7.1.1 - version: 7.1.1(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.5.2 + version: 7.5.2(react-dom@18.2.0)(react@18.2.0) '@storybook/addon-essentials': - specifier: ^7.1.1 - version: 7.1.1(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.5.2 + version: 7.5.2(react-dom@18.2.0)(react@18.2.0) '@storybook/addon-interactions': - specifier: ^7.1.1 - version: 7.1.1(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.5.2 + version: 7.5.2(react-dom@18.2.0)(react@18.2.0) '@storybook/client-logger': - specifier: ^7.1.1 - version: 7.1.1 + specifier: ^7.5.2 + version: 7.5.2 '@storybook/core-server': - specifier: ^7.1.1 - version: 7.1.1 + specifier: ^7.5.2 + version: 7.5.2 '@storybook/csf': specifier: ^0.1.1 version: 0.1.1 @@ -49,15 +49,21 @@ devDependencies: '@storybook/jest': specifier: ^0.1.0 version: 0.1.0 + '@storybook/manager-api': + specifier: ^7.5.2 + version: 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/node-logger': + specifier: ^7.5.2 + version: 7.5.2 '@storybook/preview-api': - specifier: ^7.1.1 - version: 7.1.1 + specifier: ^7.5.2 + version: 7.5.2 '@storybook/svelte': - specifier: ^7.1.1 - version: 7.1.1(svelte@4.0.0) + specifier: ^7.5.2 + version: 7.5.2(svelte@4.2.2) '@storybook/svelte-vite': - specifier: ^7.1.1 - version: 7.1.1(svelte@4.0.0)(typescript@5.1.6)(vite@4.4.3) + specifier: ^7.5.2 + version: 7.5.2(@babel/core@7.22.9)(svelte@4.2.2)(typescript@5.1.6)(vite@4.4.3) '@storybook/test-runner': specifier: ^0.11.0 version: 0.11.0(@types/node@20.4.5) @@ -65,17 +71,20 @@ devDependencies: specifier: ^0.2.0 version: 0.2.0 '@storybook/types': - specifier: ^7.1.1 - version: 7.1.1 + specifier: ^7.5.2 + version: 7.5.2 '@sveltejs/package': specifier: ^2.2.0 - version: 2.2.0(svelte@4.0.0)(typescript@5.1.6) + version: 2.2.0(svelte@4.2.2)(typescript@5.1.6) '@sveltejs/vite-plugin-svelte': specifier: ^2.4.2 - version: 2.4.2(svelte@4.0.0)(vite@4.4.3) + version: 2.4.2(svelte@4.2.2)(vite@4.4.3) '@tsconfig/svelte': specifier: ^5.0.0 version: 5.0.0 + '@types/estree': + specifier: ^1.0.1 + version: 1.0.1 auto: specifier: ^10.43.0 version: 10.43.0(@swc/core@1.3.72)(@types/node@20.4.5)(typescript@5.1.6) @@ -107,17 +116,20 @@ devDependencies: specifier: ^3.0.2 version: 3.0.2 storybook: - specifier: ^7.1.1 - version: 7.1.1 + specifier: ^7.5.2 + version: 7.5.2 svelte: - specifier: ^4.0.0 - version: 4.0.0 + specifier: ^4.2.2 + version: 4.2.2 + svelte-check: + specifier: ^3.5.0 + version: 3.5.0(@babel/core@7.22.9)(svelte@4.2.2) svelte-jester: specifier: ^2.3.2 - version: 2.3.2(jest@29.6.2)(svelte@4.0.0) + version: 2.3.2(jest@29.6.2)(svelte@4.2.2) svelte-loader: specifier: ^3.1.7 - version: 3.1.7(svelte@4.0.0) + version: 3.1.7(svelte@4.2.2) typescript: specifier: ^5.1.6 version: 5.1.6 @@ -473,7 +485,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4 lodash.debounce: 4.0.8 - resolve: 1.22.2 + resolve: 1.22.3 transitivePeerDependencies: - supports-color dev: true @@ -660,6 +672,7 @@ packages: /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.9): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -671,6 +684,7 @@ packages: /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.22.9): resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -682,6 +696,7 @@ packages: /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.22.9): resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -703,6 +718,7 @@ packages: /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.22.9): resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} engines: {node: '>=4'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-unicode-property-regex instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1957,6 +1973,34 @@ packages: resolution: {integrity: sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==} dev: true + /@floating-ui/core@1.5.0: + resolution: {integrity: sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==} + dependencies: + '@floating-ui/utils': 0.1.6 + dev: true + + /@floating-ui/dom@1.5.3: + resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==} + dependencies: + '@floating-ui/core': 1.5.0 + '@floating-ui/utils': 0.1.6 + dev: true + + /@floating-ui/react-dom@2.0.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + dependencies: + '@floating-ui/dom': 1.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@floating-ui/utils@0.1.6: + resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==} + dev: true + /@hapi/hoek@9.3.0: resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} dev: true @@ -2687,6 +2731,525 @@ packages: dev: true optional: true + /@radix-ui/number@1.0.1: + resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==} + dependencies: + '@babel/runtime': 7.22.6 + dev: true + + /@radix-ui/primitive@1.0.1: + resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} + dependencies: + '@babel/runtime': 7.22.6 + dev: true + + /@radix-ui/react-arrow@1.0.3(react-dom@18.2.0)(react@18.2.0): + 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.22.6 + '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@radix-ui/react-collection@1.0.3(react-dom@18.2.0)(react@18.2.0): + 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.22.6 + '@radix-ui/react-compose-refs': 1.0.1(react@18.2.0) + '@radix-ui/react-context': 1.0.1(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@radix-ui/react-compose-refs@1.0.1(react@18.2.0): + 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.22.6 + react: 18.2.0 + dev: true + + /@radix-ui/react-context@1.0.1(react@18.2.0): + resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.22.6 + react: 18.2.0 + dev: true + + /@radix-ui/react-direction@1.0.1(react@18.2.0): + 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.22.6 + react: 18.2.0 + dev: true + + /@radix-ui/react-dismissable-layer@1.0.4(react-dom@18.2.0)(react@18.2.0): + 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.22.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.0.3(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@radix-ui/react-focus-guards@1.0.1(react@18.2.0): + resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.22.6 + react: 18.2.0 + dev: true + + /@radix-ui/react-focus-scope@1.0.3(react-dom@18.2.0)(react@18.2.0): + 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.22.6 + '@radix-ui/react-compose-refs': 1.0.1(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@radix-ui/react-id@1.0.1(react@18.2.0): + 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.22.6 + '@radix-ui/react-use-layout-effect': 1.0.1(react@18.2.0) + react: 18.2.0 + dev: true + + /@radix-ui/react-popper@1.1.2(react-dom@18.2.0)(react@18.2.0): + 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.22.6 + '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-arrow': 1.0.3(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(react@18.2.0) + '@radix-ui/react-context': 1.0.1(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(react@18.2.0) + '@radix-ui/react-use-rect': 1.0.1(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(react@18.2.0) + '@radix-ui/rect': 1.0.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@radix-ui/react-portal@1.0.3(react-dom@18.2.0)(react@18.2.0): + 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.22.6 + '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@radix-ui/react-primitive@1.0.3(react-dom@18.2.0)(react@18.2.0): + 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.22.6 + '@radix-ui/react-slot': 1.0.2(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@radix-ui/react-roving-focus@1.0.4(react-dom@18.2.0)(react@18.2.0): + 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.22.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(react@18.2.0) + '@radix-ui/react-context': 1.0.1(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(react@18.2.0) + '@radix-ui/react-id': 1.0.1(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@radix-ui/react-select@1.2.2(react-dom@18.2.0)(react@18.2.0): + 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.22.6 + '@radix-ui/number': 1.0.1 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(react@18.2.0) + '@radix-ui/react-context': 1.0.1(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.4(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.3(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(react@18.2.0) + '@radix-ui/react-popper': 1.1.2(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.3(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(react-dom@18.2.0)(react@18.2.0) + aria-hidden: 1.2.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(react@18.2.0) + dev: true + + /@radix-ui/react-separator@1.0.3(react-dom@18.2.0)(react@18.2.0): + 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.22.6 + '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@radix-ui/react-slot@1.0.2(react@18.2.0): + resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.22.6 + '@radix-ui/react-compose-refs': 1.0.1(react@18.2.0) + react: 18.2.0 + dev: true + + /@radix-ui/react-toggle-group@1.0.4(react-dom@18.2.0)(react@18.2.0): + 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.22.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-context': 1.0.1(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toggle': 1.0.3(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@radix-ui/react-toggle@1.0.3(react-dom@18.2.0)(react@18.2.0): + 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.22.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@radix-ui/react-toolbar@1.0.4(react-dom@18.2.0)(react@18.2.0): + 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.22.6 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-context': 1.0.1(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-separator': 1.0.3(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toggle-group': 1.0.4(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@radix-ui/react-use-callback-ref@1.0.1(react@18.2.0): + resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.22.6 + react: 18.2.0 + dev: true + + /@radix-ui/react-use-controllable-state@1.0.1(react@18.2.0): + resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.22.6 + '@radix-ui/react-use-callback-ref': 1.0.1(react@18.2.0) + react: 18.2.0 + dev: true + + /@radix-ui/react-use-escape-keydown@1.0.3(react@18.2.0): + resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.22.6 + '@radix-ui/react-use-callback-ref': 1.0.1(react@18.2.0) + react: 18.2.0 + dev: true + + /@radix-ui/react-use-layout-effect@1.0.1(react@18.2.0): + 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.22.6 + react: 18.2.0 + dev: true + + /@radix-ui/react-use-previous@1.0.1(react@18.2.0): + resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.22.6 + react: 18.2.0 + dev: true + + /@radix-ui/react-use-rect@1.0.1(react@18.2.0): + 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.22.6 + '@radix-ui/rect': 1.0.1 + react: 18.2.0 + dev: true + + /@radix-ui/react-use-size@1.0.1(react@18.2.0): + 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.22.6 + '@radix-ui/react-use-layout-effect': 1.0.1(react@18.2.0) + react: 18.2.0 + dev: true + + /@radix-ui/react-visually-hidden@1.0.3(react-dom@18.2.0)(react@18.2.0): + 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.22.6 + '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@radix-ui/rect@1.0.1: + resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} + dependencies: + '@babel/runtime': 7.22.6 + dev: true + /@sideway/address@4.1.4: resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} dependencies: @@ -2733,8 +3296,8 @@ packages: '@sinonjs/commons': 1.8.6 dev: true - /@storybook/addon-actions@7.1.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-IDxBmNnVgLFfQ407MxOUJmqjz0hgiZB9syi4sfp7BKp5MIPUDT1m+z603kGrvx0bk0W0DPqkp/H8ySEGEx0x6g==} + /@storybook/addon-actions@7.5.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-jKF3rrMEu42TgZ5AEszADpVdASDu1S4Ozp1Ymf4akHLkaMOv+yzzD7LV6YGjJz8S2IryndZqE47e6stF0T99uA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -2744,14 +3307,14 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.1.1 - '@storybook/components': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.1.1 + '@storybook/client-logger': 7.5.2 + '@storybook/components': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-events': 7.5.2 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.1.1 - '@storybook/theming': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.1.1 + '@storybook/manager-api': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.5.2 + '@storybook/theming': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.5.2 dequal: 2.0.3 lodash: 4.17.21 polished: 4.2.2 @@ -2759,13 +3322,16 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-inspector: 6.0.2(react@18.2.0) - telejson: 7.1.0 + telejson: 7.2.0 ts-dedent: 2.2.0 uuid: 9.0.0 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' dev: true - /@storybook/addon-backgrounds@7.1.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-6YAjF01R/qFxeZc1B5cSxseaGXJzikMPPExSZaKkD0eW3max5Kpk+qb7rOX95m3jP2WD/0zfX6lEQUCbmDcxlg==} + /@storybook/addon-backgrounds@7.5.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-CII8c+db8sVciWjFY0ProZi5E2d+cOc+XlVHCAVaUYp2Bp/1MV7en8etfLK7DEoH6kBVz1+t3TaPU+xjUTR8Ig==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -2775,22 +3341,25 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.1.1 - '@storybook/components': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.1.1 + '@storybook/client-logger': 7.5.2 + '@storybook/components': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-events': 7.5.2 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.1.1 - '@storybook/theming': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.1.1 + '@storybook/manager-api': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.5.2 + '@storybook/theming': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.5.2 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) ts-dedent: 2.2.0 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' dev: true - /@storybook/addon-controls@7.1.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-qi7fxUSovTLFWeejZLagMV+4SedL0DIhZrufuQCnEeO1gbTJJPaL/KLZnilFlI3SgspkzGehhGDR6SVkDuwnZg==} + /@storybook/addon-controls@7.5.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-f04VcBSfm3yMT1hvaFEwCRbdwiXQbddfEwhwjEVsqd+CA0s600W4L7B8tT4daXMsU6NsZyibev910IKTnDw6xQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -2800,45 +3369,48 @@ packages: react-dom: optional: true dependencies: - '@storybook/blocks': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 7.1.1 - '@storybook/components': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-common': 7.1.1 - '@storybook/manager-api': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/node-logger': 7.1.1 - '@storybook/preview-api': 7.1.1 - '@storybook/theming': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.1.1 + '@storybook/blocks': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/client-logger': 7.5.2 + '@storybook/components': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-common': 7.5.2 + '@storybook/core-events': 7.5.2 + '@storybook/manager-api': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/node-logger': 7.5.2 + '@storybook/preview-api': 7.5.2 + '@storybook/theming': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.5.2 lodash: 4.17.21 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) ts-dedent: 2.2.0 transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' - encoding - supports-color dev: true - /@storybook/addon-docs@7.1.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-KfsrqvR6RA0qyCwBpJjeivu/+F+n3jcMMKkBtI56E/pyQCx4+pMTJXJ2l5gJibNWYoR1CVlS9f5n5ZNGz8BzeQ==} + /@storybook/addon-docs@7.5.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-KxX4XuxK6YcI2mUosFkAlueMon/nby6mp3GRHenuK+nobY0ecfILqSTbsOeO1wqPxALBoq7fLnrgYhdDlandgQ==} 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.6.2 '@mdx-js/react': 2.3.0(react@18.2.0) - '@storybook/blocks': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 7.1.1 - '@storybook/components': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/csf-plugin': 7.1.1 - '@storybook/csf-tools': 7.1.1 + '@storybook/blocks': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/client-logger': 7.5.2 + '@storybook/components': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/csf-plugin': 7.5.2 + '@storybook/csf-tools': 7.5.2 '@storybook/global': 5.0.0 '@storybook/mdx2-csf': 1.1.0 - '@storybook/node-logger': 7.1.1 - '@storybook/postinstall': 7.1.1 - '@storybook/preview-api': 7.1.1 - '@storybook/react-dom-shim': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/theming': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.1.1 + '@storybook/node-logger': 7.5.2 + '@storybook/postinstall': 7.5.2 + '@storybook/preview-api': 7.5.2 + '@storybook/react-dom-shim': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/theming': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.5.2 fs-extra: 11.1.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -2846,47 +3418,51 @@ packages: remark-slug: 6.1.0 ts-dedent: 2.2.0 transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' - encoding - supports-color dev: true - /@storybook/addon-essentials@7.1.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-eCty+Q7zBjkBbaJ0HaM/UaXxJ+77uKBtEc9g+hLZFqga50auPCfCcqjnqNnxkTmewkJomx3N91BJUJJzVPUlJA==} + /@storybook/addon-essentials@7.5.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-bN7Q+8J3xVgNoBKCwtyX1O5jXuuJavYdAPiPQGrt6YegUi3gVfr5n/+/mNlu6Fd5AThFcVFei6gS9aiYmU/h8g==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/addon-actions': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-backgrounds': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-controls': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-docs': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-highlight': 7.1.1 - '@storybook/addon-measure': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-outline': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-toolbars': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-viewport': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-common': 7.1.1 - '@storybook/manager-api': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/node-logger': 7.1.1 - '@storybook/preview-api': 7.1.1 + '@storybook/addon-actions': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-backgrounds': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-controls': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-docs': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-highlight': 7.5.2 + '@storybook/addon-measure': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-outline': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-toolbars': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-viewport': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-common': 7.5.2 + '@storybook/manager-api': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/node-logger': 7.5.2 + '@storybook/preview-api': 7.5.2 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) ts-dedent: 2.2.0 transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' - encoding - supports-color dev: true - /@storybook/addon-highlight@7.1.1: - resolution: {integrity: sha512-iOLzcv4JK2R2EBcbeDLB5uuYaW96M9Vh+ZrkpKEJvHwrQzzvBo3kJ7bP/AArAEXtR5MN1al3x7mnvRofu3OIdQ==} + /@storybook/addon-highlight@7.5.2: + resolution: {integrity: sha512-0vek42fHh7Aeinvkwge0ZTq5VfNsuMSejUv0wHa3zQWgUmlaRlGY8zDw7nG6LiIz6rnTBDTznsfyWenAySSHXg==} dependencies: - '@storybook/core-events': 7.1.1 + '@storybook/core-events': 7.5.2 '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.1.1 + '@storybook/preview-api': 7.5.2 dev: true - /@storybook/addon-interactions@7.1.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-6xPDKkt0gi2aqFBFtMyWx09lEF8+o3Q+te+VY4mdJztKgHAllKvlc27jqAFYMHicG6XWio2VBZGUSrSTDOQ9IA==} + /@storybook/addon-interactions@7.5.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-upddA+pvJtU3pRZqu3Chl5QbVfVv2eCIuUxaAG9rvasaqkLTTrNvna8rmnXwqL8sBKHL1XzSyO2sQF4vzQwymg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -2896,28 +3472,30 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.1.1 - '@storybook/components': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-common': 7.1.1 - '@storybook/core-events': 7.1.1 + '@storybook/client-logger': 7.5.2 + '@storybook/components': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-common': 7.5.2 + '@storybook/core-events': 7.5.2 '@storybook/global': 5.0.0 - '@storybook/instrumenter': 7.1.1 - '@storybook/manager-api': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.1.1 - '@storybook/theming': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.1.1 - jest-mock: 29.6.2 + '@storybook/instrumenter': 7.5.2 + '@storybook/manager-api': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.5.2 + '@storybook/theming': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.5.2 + jest-mock: 27.5.1 polished: 4.2.2 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) ts-dedent: 2.2.0 transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' - encoding - supports-color dev: true - /@storybook/addon-measure@7.1.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-LKJ9vN0qdFVeqjPeF44R2issR0UMAuL2LzbZNxAfeNX9SxdV7qONBOt8OZNKkmm7mJ+jBZsR9Ok68PCOsXA7Xw==} + /@storybook/addon-measure@7.5.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-fkvORLaYVC/yNMFzHRHmzlvniY7sWtpFxaRW+e4++hGXYV4VQjOBlXzdMxQhAg1DCVWD6QV8xnUQPBGrsEklog==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -2927,20 +3505,23 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.1.1 - '@storybook/components': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.1.1 + '@storybook/client-logger': 7.5.2 + '@storybook/components': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-events': 7.5.2 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.1.1 - '@storybook/types': 7.1.1 + '@storybook/manager-api': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.5.2 + '@storybook/types': 7.5.2 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) tiny-invariant: 1.3.1 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' dev: true - /@storybook/addon-outline@7.1.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-zdgOA46n61o/rqvnAn1OxAczl/C99D64e+6EoK8t+Xf9fvykPQCgfBUAPq19qEAaBG4RoPpTvGSJXH2nFqJZDw==} + /@storybook/addon-outline@7.5.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-BgDnVzE9xCN1xwuCebK6+apNCtVcw1ToW8N6R3vNgXgNPE1euT3jxkDH7K4RJR24Flu6BotWjX3dqv8k+8xGKw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -2950,20 +3531,23 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.1.1 - '@storybook/components': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.1.1 + '@storybook/client-logger': 7.5.2 + '@storybook/components': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-events': 7.5.2 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.1.1 - '@storybook/types': 7.1.1 + '@storybook/manager-api': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.5.2 + '@storybook/types': 7.5.2 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) ts-dedent: 2.2.0 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' dev: true - /@storybook/addon-toolbars@7.1.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-tHMv1a8hg0kmxwtKf31BZ2Z1ULnxRF/TEoDLJKVvTthhcWLQm0LmqVIG82/bnuWn4vlDrsdGT7sAN+TU7B8p0A==} + /@storybook/addon-toolbars@7.5.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-BXzb5NOpILFOM7EOBxcF2Qj/q6BicWZ1AvAddORWGmqSa/MxMIa4X52oKXFUTHKBkrTO1X0XqHmoF88qm3TUFg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -2973,17 +3557,20 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.1.1 - '@storybook/components': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/manager-api': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.1.1 - '@storybook/theming': 7.1.1(react-dom@18.2.0)(react@18.2.0) + '@storybook/client-logger': 7.5.2 + '@storybook/components': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/manager-api': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.5.2 + '@storybook/theming': 7.5.2(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' dev: true - /@storybook/addon-viewport@7.1.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-OAb3+NSQF0zAVdKhZwW0YOC/VMCXDncXp51ufxaz/LkF3qOGuqfmHTOfDDwjx3P6d3kX1aWV+vLVuoRS0JRK5g==} + /@storybook/addon-viewport@7.5.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-qN5X9vgp0v+WGXyFBHQ/CqjdtmnCoHhUjqXmBxEGBziJz/tZwWwtTGWeUUZpuTjCGiZutLrizOFl5MqQAI+ipg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -2993,36 +3580,39 @@ packages: react-dom: optional: true dependencies: - '@storybook/client-logger': 7.1.1 - '@storybook/components': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.1.1 + '@storybook/client-logger': 7.5.2 + '@storybook/components': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-events': 7.5.2 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.1.1 - '@storybook/theming': 7.1.1(react-dom@18.2.0)(react@18.2.0) + '@storybook/manager-api': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.5.2 + '@storybook/theming': 7.5.2(react-dom@18.2.0)(react@18.2.0) memoizerific: 1.11.3 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' dev: true - /@storybook/blocks@7.1.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-YIpIJi/+sByZhKrpKbVmXazUP1hj/QXybVOzwz2PT6tphfhrubGLBgu3RJIp6hwJ/lWf9RfghR7P8n+7aN6U9w==} + /@storybook/blocks@7.5.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Tf6XE/YcnWQVBJRcJWJzhkahjSymv6QZuxMAiKFD8v48QRJ8kTxz1tBN9676Ux+l1WwtVWxwvd/0kRKKxE70wQ==} 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.1.1 - '@storybook/client-logger': 7.1.1 - '@storybook/components': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.1.1 + '@storybook/channels': 7.5.2 + '@storybook/client-logger': 7.5.2 + '@storybook/components': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-events': 7.5.2 '@storybook/csf': 0.1.1 - '@storybook/docs-tools': 7.1.1 + '@storybook/docs-tools': 7.5.2 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.1.1 - '@storybook/theming': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.1.1 + '@storybook/manager-api': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.5.2 + '@storybook/theming': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.5.2 '@types/lodash': 4.14.196 color-convert: 2.0.1 dequal: 2.0.3 @@ -3033,22 +3623,24 @@ packages: react: 18.2.0 react-colorful: 5.6.1(react-dom@18.2.0)(react@18.2.0) react-dom: 18.2.0(react@18.2.0) - telejson: 7.1.0 + telejson: 7.2.0 tocbot: 4.21.0 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.1.1: - resolution: {integrity: sha512-vocO/JjrXPOnkFnwCV2NqKxbTfyYD2qV8PGH8EFNw2+I13GNbZ5CphEZMhI7HmKm0aIYPKdZKbN4KNWkwOxyAQ==} + /@storybook/builder-manager@7.5.2: + resolution: {integrity: sha512-s4gOudrft/E4lQ19YNrzL2VJwMEpdY6z319fTlc16J1F6XZSytw6CIZPs3x9yX5CKf4/leWnN5etODaOx7NajQ==} dependencies: '@fal-works/esbuild-plugin-global-externals': 2.1.2 - '@storybook/core-common': 7.1.1 - '@storybook/manager': 7.1.1 - '@storybook/node-logger': 7.1.1 + '@storybook/core-common': 7.5.2 + '@storybook/manager': 7.5.2 + '@storybook/node-logger': 7.5.2 '@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) @@ -3066,12 +3658,12 @@ packages: - supports-color dev: true - /@storybook/builder-vite@7.1.1(typescript@5.1.6)(vite@4.4.3): - resolution: {integrity: sha512-OIQv8V7r6fqBqAXQT9mqgu1aqP+wlFGDRACyS2iym5y5B3e6fhCOUS/31pBp3vmgNRK6LAfEI0FXI71aOp82MQ==} + /@storybook/builder-vite@7.5.2(typescript@5.1.6)(vite@4.4.3): + resolution: {integrity: sha512-j96m5K0ahlAjQY6uUxEbybvmRFc3eMpQ3wiosuunc8NkXtfohXZeRVQowAcVrfPktKMufRNGY86RTYxe7sMABw==} peerDependencies: '@preact/preset-vite': '*' typescript: '>= 4.3.x' - vite: ^3.0.0 || ^4.0.0 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 vite-plugin-glimmerx: '*' peerDependenciesMeta: '@preact/preset-vite': @@ -3081,15 +3673,14 @@ packages: vite-plugin-glimmerx: optional: true dependencies: - '@storybook/channels': 7.1.1 - '@storybook/client-logger': 7.1.1 - '@storybook/core-common': 7.1.1 - '@storybook/csf-plugin': 7.1.1 - '@storybook/mdx2-csf': 1.1.0 - '@storybook/node-logger': 7.1.1 - '@storybook/preview': 7.1.1 - '@storybook/preview-api': 7.1.1 - '@storybook/types': 7.1.1 + '@storybook/channels': 7.5.2 + '@storybook/client-logger': 7.5.2 + '@storybook/core-common': 7.5.2 + '@storybook/csf-plugin': 7.5.2 + '@storybook/node-logger': 7.5.2 + '@storybook/preview': 7.5.2 + '@storybook/preview-api': 7.5.2 + '@storybook/types': 7.5.2 '@types/find-cache-dir': 3.2.1 browser-assert: 1.2.1 es-module-lexer: 0.9.3 @@ -3097,8 +3688,6 @@ packages: find-cache-dir: 3.3.2 fs-extra: 11.1.1 magic-string: 0.30.1 - remark-external-links: 8.0.0 - remark-slug: 6.1.0 rollup: 3.27.0 typescript: 5.1.6 vite: 4.4.3(@types/node@20.4.5) @@ -3125,21 +3714,33 @@ packages: tiny-invariant: 1.3.1 dev: true - /@storybook/cli@7.1.1: - resolution: {integrity: sha512-xQU0GBIRQpwlvTnzOvDo05H5aH660DaZ9JlXd8ThPkEicoTvhkH0oQVEMYaWKChp5Ok7Wu8+kB7fzgUSOGzj+Q==} + /@storybook/channels@7.5.2: + resolution: {integrity: sha512-3SgqWq9NS0XX1QxK3riuaOLrReHWwVhI63u6q1ryDD3SttpmAezZETibOAtzDuk2FKgsyHTmAlmcGQf4ZxhOJA==} + dependencies: + '@storybook/client-logger': 7.5.2 + '@storybook/core-events': 7.5.2 + '@storybook/global': 5.0.0 + qs: 6.11.2 + telejson: 7.2.0 + tiny-invariant: 1.3.1 + dev: true + + /@storybook/cli@7.5.2: + resolution: {integrity: sha512-8JPvA/K66zBmRFpRRwsD0JLqZUODRrGmNuAWx+Bj1K8wqbg68MYnOflbkSIxIVxrfhd39OrffV0h8CwKNL9gAg==} hasBin: true dependencies: '@babel/core': 7.22.9 '@babel/preset-env': 7.22.9(@babel/core@7.22.9) '@babel/types': 7.22.5 '@ndelangen/get-tarball': 3.0.9 - '@storybook/codemod': 7.1.1 - '@storybook/core-common': 7.1.1 - '@storybook/core-server': 7.1.1 - '@storybook/csf-tools': 7.1.1 - '@storybook/node-logger': 7.1.1 - '@storybook/telemetry': 7.1.1 - '@storybook/types': 7.1.1 + '@storybook/codemod': 7.5.2 + '@storybook/core-common': 7.5.2 + '@storybook/core-events': 7.5.2 + '@storybook/core-server': 7.5.2 + '@storybook/csf-tools': 7.5.2 + '@storybook/node-logger': 7.5.2 + '@storybook/telemetry': 7.5.2 + '@storybook/types': 7.5.2 '@types/semver': 7.5.0 '@yarnpkg/fslib': 2.10.3 '@yarnpkg/libzip': 2.3.0 @@ -3164,7 +3765,7 @@ packages: puppeteer-core: 2.1.1 read-pkg-up: 7.0.1 semver: 7.5.4 - simple-update-notifier: 1.1.0 + simple-update-notifier: 2.0.0 strip-json-comments: 3.1.1 tempy: 1.0.1 ts-dedent: 2.2.0 @@ -3188,16 +3789,22 @@ packages: '@storybook/global': 5.0.0 dev: true - /@storybook/codemod@7.1.1: - resolution: {integrity: sha512-QB4MoeFXA4QsX0LuwjHoTVqsX7krRXmqfwSWIQMB8/qsAfyBp/jiG2xWmwa2agKwtlYvZzkvGdCjAOmK4SUSHQ==} + /@storybook/client-logger@7.5.2: + resolution: {integrity: sha512-7YgLItlmiYDzWYexTaRNuHhtFarh9krsI+8l7Yjn9ryoHSTJUcTWx+yPJm1II+PQR8v/x5UgsxzultjgEurfRQ==} + dependencies: + '@storybook/global': 5.0.0 + dev: true + + /@storybook/codemod@7.5.2: + resolution: {integrity: sha512-PxZg0w4OlmFB4dBzB+sCgwmHNke0n1N8vNooxtcuusrLKlbUfmssYRnQn6yRSJw0WfkUYgI10CWxGaamaOFekA==} dependencies: '@babel/core': 7.22.9 '@babel/preset-env': 7.22.9(@babel/core@7.22.9) '@babel/types': 7.22.5 '@storybook/csf': 0.1.1 - '@storybook/csf-tools': 7.1.1 - '@storybook/node-logger': 7.1.1 - '@storybook/types': 7.1.1 + '@storybook/csf-tools': 7.5.2 + '@storybook/node-logger': 7.5.2 + '@storybook/types': 7.5.2 '@types/cross-spawn': 6.0.2 cross-spawn: 7.0.3 globby: 11.1.0 @@ -3209,43 +3816,79 @@ packages: - supports-color dev: true - /@storybook/components@7.1.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-RUSjDj2RDTZsdKfs48oY+3iaL/y3GHU07zuHm/V4kuEHqJscXUt3n5vIX/Z/GtezMrxc0aPDlCSyS/N/EU6bUQ==} + /@storybook/components@7.5.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-OP+o6AoxoQDbqjk/jdQ1arlc1T8601eCL+rS1dJY9EtAFq7Z0LEFtafhEW/Lx8FotfVGjfCNptH9ODhHU6e5Jw==} 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.1.1 + '@radix-ui/react-select': 1.2.2(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toolbar': 1.0.4(react-dom@18.2.0)(react@18.2.0) + '@storybook/client-logger': 7.5.2 '@storybook/csf': 0.1.1 '@storybook/global': 5.0.0 - '@storybook/theming': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.1.1 + '@storybook/theming': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.5.2 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) use-resize-observer: 9.1.0(react-dom@18.2.0)(react@18.2.0) util-deprecate: 1.0.2 + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' dev: true - /@storybook/core-client@7.1.1: - resolution: {integrity: sha512-yFd617XKFS+Q5IFmItXR+DdMfpreHHcdy3f67dt8PLnnjNcGMpi7gEcp8t9yBAT+pIgnqSfE/FNUFTg0OEpRpw==} + /@storybook/core-client@7.5.2: + resolution: {integrity: sha512-mMDSBxc7esMCu0FOkama9XYHzIHYGhBj8roX+XaTaLDYXaw/UajcCuzcO7fFBHNn3Vdqh2ufIxlI7359v3IqPw==} dependencies: - '@storybook/client-logger': 7.1.1 - '@storybook/preview-api': 7.1.1 + '@storybook/client-logger': 7.5.2 + '@storybook/preview-api': 7.5.2 + dev: true + + /@storybook/core-common@7.1.1: + resolution: {integrity: sha512-DO7ZS6YDITykvqMHeOWSmnsPYk2w7gka9GtO2LPbEm0f6p5kG2nohBO5+nsI3PuXpKiHXOB7vKJjwfQqxvPj5A==} + dependencies: + '@storybook/node-logger': 7.1.1 + '@storybook/types': 7.1.1 + '@types/find-cache-dir': 3.2.1 + '@types/node': 16.18.39 + '@types/node-fetch': 2.6.4 + '@types/pretty-hrtime': 1.0.1 + chalk: 4.1.2 + esbuild: 0.18.17 + esbuild-register: 3.4.2(esbuild@0.18.17) + file-system-cache: 2.3.0 + find-cache-dir: 3.3.2 + find-up: 5.0.0 + fs-extra: 11.1.1 + glob: 10.3.3 + 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-common@7.1.1: - resolution: {integrity: sha512-DO7ZS6YDITykvqMHeOWSmnsPYk2w7gka9GtO2LPbEm0f6p5kG2nohBO5+nsI3PuXpKiHXOB7vKJjwfQqxvPj5A==} + /@storybook/core-common@7.5.2: + resolution: {integrity: sha512-js7fIH4wHS08dBuIVsr3JnwMtKn5O1Izc/Zor4t6PntLWkGGX4X/GxbOkasGX5SkCT1qUtB9RpdPd1sUkLhIgw==} dependencies: - '@storybook/node-logger': 7.1.1 - '@storybook/types': 7.1.1 + '@storybook/core-events': 7.5.2 + '@storybook/node-logger': 7.5.2 + '@storybook/types': 7.5.2 '@types/find-cache-dir': 3.2.1 - '@types/node': 16.18.39 + '@types/node': 18.18.8 '@types/node-fetch': 2.6.4 '@types/pretty-hrtime': 1.0.1 chalk: 4.1.2 esbuild: 0.18.17 - esbuild-register: 3.4.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 @@ -3268,26 +3911,32 @@ packages: resolution: {integrity: sha512-P5iI4zvCJo85de/sghglEHFK/GGkWAQQKzRFrz9kbVBX5LNaosfD7IYHIz/6ZWNPzxWR+RBOKcrRUfcArL4Njg==} dev: true - /@storybook/core-server@7.1.1: - resolution: {integrity: sha512-IfrkdcYwVoP4bltBTx8Yr1e++UAfICV8IYCgW8VFW26Uvl22biCVWwliE35iTYpUmHJgn+U489hCnEdGpr2CWw==} + /@storybook/core-events@7.5.2: + resolution: {integrity: sha512-DV8bFEFVKDEvaH87KYPXDE0YEV+Y9yjFv2xxmC9pF8l+MWCtVW72RBLhB+gU5NM1bkHrRDNb0lOJfVGKlhxOog==} + dependencies: + ts-dedent: 2.2.0 + dev: true + + /@storybook/core-server@7.5.2: + resolution: {integrity: sha512-4oXpy1L/NyHiz/OXNUFnSeMLA/+lTgQAlVx86pRbEBDj6snt1/NSx2+yZyFtZ/XTnJ22BPpM8IIrgm95ZlQKmA==} dependencies: '@aw-web-design/x-default-browser': 1.4.126 '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-manager': 7.1.1 - '@storybook/channels': 7.1.1 - '@storybook/core-common': 7.1.1 - '@storybook/core-events': 7.1.1 + '@storybook/builder-manager': 7.5.2 + '@storybook/channels': 7.5.2 + '@storybook/core-common': 7.5.2 + '@storybook/core-events': 7.5.2 '@storybook/csf': 0.1.1 - '@storybook/csf-tools': 7.1.1 + '@storybook/csf-tools': 7.5.2 '@storybook/docs-mdx': 0.1.0 '@storybook/global': 5.0.0 - '@storybook/manager': 7.1.1 - '@storybook/node-logger': 7.1.1 - '@storybook/preview-api': 7.1.1 - '@storybook/telemetry': 7.1.1 - '@storybook/types': 7.1.1 + '@storybook/manager': 7.5.2 + '@storybook/node-logger': 7.5.2 + '@storybook/preview-api': 7.5.2 + '@storybook/telemetry': 7.5.2 + '@storybook/types': 7.5.2 '@types/detect-port': 1.3.3 - '@types/node': 16.18.39 + '@types/node': 18.18.8 '@types/pretty-hrtime': 1.0.1 '@types/semver': 7.5.0 better-opn: 3.0.2 @@ -3305,8 +3954,7 @@ packages: prompts: 2.4.2 read-pkg-up: 7.0.1 semver: 7.5.4 - serve-favicon: 2.5.0 - telejson: 7.1.0 + telejson: 7.2.0 tiny-invariant: 1.3.1 ts-dedent: 2.2.0 util: 0.12.5 @@ -3320,10 +3968,10 @@ packages: - utf-8-validate dev: true - /@storybook/csf-plugin@7.1.1: - resolution: {integrity: sha512-bokV+HU6rV/wlWIvgAtn1PUot1W71pto/Wft5hCUATDCsXDz4B5aI9d/ZCJhu7G1R4cYtjsxVdBJSHe9dem7Lg==} + /@storybook/csf-plugin@7.5.2: + resolution: {integrity: sha512-ndjn1ia2rQLO1r1z6mXv6nipLzJMwWJp31h16lQUXIBQEOiGKjGGvObiuKaad3nNHxWHpGra4zUg7R+54Yw0Hw==} dependencies: - '@storybook/csf-tools': 7.1.1 + '@storybook/csf-tools': 7.5.2 unplugin: 1.4.0 transitivePeerDependencies: - supports-color @@ -3345,6 +3993,22 @@ packages: - supports-color dev: true + /@storybook/csf-tools@7.5.2: + resolution: {integrity: sha512-yXaEDREc2wvkjYkQqDMatJw23f0fEFhMIf/zBNF7YljeYw0j8jAg/7XI5WJJSN2KTxD/feD/yD+6eaLUXvrneQ==} + dependencies: + '@babel/generator': 7.22.9 + '@babel/parser': 7.22.7 + '@babel/traverse': 7.22.8 + '@babel/types': 7.22.5 + '@storybook/csf': 0.1.1 + '@storybook/types': 7.5.2 + fs-extra: 11.1.1 + recast: 0.23.3 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - supports-color + dev: true + /@storybook/csf@0.0.1: resolution: {integrity: sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==} dependencies: @@ -3361,12 +4025,12 @@ packages: resolution: {integrity: sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg==} dev: true - /@storybook/docs-tools@7.1.1: - resolution: {integrity: sha512-noDgogRHum1FuqgXBdlv2+wOdkIJOJqSUSi0ZGiuP1OEOdA9YdbCfbWn/z734UEmhwraoQSXYb2tvrIEjfzYSw==} + /@storybook/docs-tools@7.5.2: + resolution: {integrity: sha512-mBiZFhzMA2ub7wX0ho3UqKqKXO+xUi/rqb4KV4PihLKlhThEdzKyYrIZO4W90NOmlp1yUJJcjG8D8SUPuHQoTw==} dependencies: - '@storybook/core-common': 7.1.1 - '@storybook/preview-api': 7.1.1 - '@storybook/types': 7.1.1 + '@storybook/core-common': 7.5.2 + '@storybook/preview-api': 7.5.2 + '@storybook/types': 7.5.2 '@types/doctrine': 0.0.3 doctrine: 3.0.0 lodash: 4.17.21 @@ -3409,6 +4073,16 @@ packages: '@storybook/preview-api': 7.1.1 dev: true + /@storybook/instrumenter@7.5.2: + resolution: {integrity: sha512-1l36cc7GaVeTiknhToZcaqI6RsIOfcBgdnvgJ0tiL1naN1GkneCMr+1oLWnlHVrWIOXgh6vNyD792kE3uTLkFg==} + dependencies: + '@storybook/channels': 7.5.2 + '@storybook/client-logger': 7.5.2 + '@storybook/core-events': 7.5.2 + '@storybook/global': 5.0.0 + '@storybook/preview-api': 7.5.2 + dev: true + /@storybook/jest@0.1.0: resolution: {integrity: sha512-TmybnEXlv5Fu2/Hq4nRj7alS9mw4CasLR0RDwaAzS+Vpvu1TC4+j9rh+b1BHtmWebbJh0JMT6mgzPqOyJdgtQA==} dependencies: @@ -3451,20 +4125,20 @@ packages: - typescript dev: true - /@storybook/manager-api@7.1.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-gk429qAGMW33rAZwFXo7fDoeYGrnSbj4ddHXJYc0nzBcC6emlq5IS5GHgJthQ3Oe8CPbq8bwUkWW6I5E7OePWA==} + /@storybook/manager-api@7.5.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-WX8GjBkITRQzhQ08WEAVjdDW8QqqIQhWOpFzXUYCxCNzt1eSALI31QQ+M1/MYymw+TOkotC/SMcn/puIAm4rdA==} 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.1.1 - '@storybook/client-logger': 7.1.1 - '@storybook/core-events': 7.1.1 + '@storybook/channels': 7.5.2 + '@storybook/client-logger': 7.5.2 + '@storybook/core-events': 7.5.2 '@storybook/csf': 0.1.1 '@storybook/global': 5.0.0 - '@storybook/router': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/theming': 7.1.1(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.1.1 + '@storybook/router': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/theming': 7.5.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.5.2 dequal: 2.0.3 lodash: 4.17.21 memoizerific: 1.11.3 @@ -3472,12 +4146,12 @@ packages: react-dom: 18.2.0(react@18.2.0) semver: 7.5.4 store2: 2.14.2 - telejson: 7.1.0 + telejson: 7.2.0 ts-dedent: 2.2.0 dev: true - /@storybook/manager@7.1.1: - resolution: {integrity: sha512-kRW9sPuJWsEi8Swcyt9rYwdfvA0rqKEuPBCCbrmmjyIwZR60IYg2KHXcF7q4qdkvts2xee5YTbgHcdfc0iIPSg==} + /@storybook/manager@7.5.2: + resolution: {integrity: sha512-5l1z9SpCFQBcHjC5mbfWQ8mPTYFxD8GQ9mNZ6PPrj47yu9TyCRYSQj7A8ZXJiIY1ZEg4a2BCW7fPUYG+lX6Drw==} dev: true /@storybook/mdx2-csf@1.1.0: @@ -3488,8 +4162,12 @@ packages: resolution: {integrity: sha512-gnAuNM+wNoOcGnUM6hLsYV0lwUgRI39Ep/Pp3VF1oXZAthEyrQRm7ImbeAdt93ObPc9DZgqTx9OI8QnErZuJiA==} dev: true - /@storybook/postinstall@7.1.1: - resolution: {integrity: sha512-qpe6BiFLVs9YYFQVGgRT0dJxPOKBtGLIAsnVEpXKUPrltEWQpTxQEqqOSJlut+FLoWB5MTxrwiJ/7891h4a5pw==} + /@storybook/node-logger@7.5.2: + resolution: {integrity: sha512-VIBuwPJOylu8vJofk1VfmqxlhXgbBgV0pCTo/UzdQAbc3w5y+qNRemf8goWxYEY+L9p6oUXqm/i9+bNGyX7/Mw==} + dev: true + + /@storybook/postinstall@7.5.2: + resolution: {integrity: sha512-fKgyV1fAgckDoxQkUGJl5uzjzGC5esC/nITiCjccZFrqxt9mgmz4VAUkMeseD5tfWQ5oFA0Xdgtrrcl39+chnw==} dev: true /@storybook/preview-api@7.1.1: @@ -3512,12 +4190,31 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/preview@7.1.1: - resolution: {integrity: sha512-F3ikRKzwmT9MlptYXxYOQmaSwmJckPag0k9lM0LvI0xYplLbyWJ5rfs2gLKl++wX+ag2A+1K4gId5Xaz4SKnxQ==} + /@storybook/preview-api@7.5.2: + resolution: {integrity: sha512-rpmHR/09UBSnorDBTcE7JgHUQjZLO146NCI+vbI7Pqfb4QX/8lhwkFr4cuHRAR16mv6DAJbDVoPETO0Z/CH9aw==} + dependencies: + '@storybook/channels': 7.5.2 + '@storybook/client-logger': 7.5.2 + '@storybook/core-events': 7.5.2 + '@storybook/csf': 0.1.1 + '@storybook/global': 5.0.0 + '@storybook/types': 7.5.2 + '@types/qs': 6.9.7 + dequal: 2.0.3 + lodash: 4.17.21 + memoizerific: 1.11.3 + qs: 6.11.2 + synchronous-promise: 2.0.17 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + dev: true + + /@storybook/preview@7.5.2: + resolution: {integrity: sha512-dA5VpHp0D9nh9/wOzWP8At1wtz/SiaMBbwaiEOFTFUGcPerrkroEWadIlSSB7vgQJ9yWiD4l3KDaS8ANzHWtPQ==} dev: true - /@storybook/react-dom-shim@7.1.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-yfc0tCtg+OEfvOKwCF0+E0ot8XGpubMTpbfChahhzEYyI9zz1rA7OCwRzERMnX/C7TYW3aLab9f5MzWIKQClmQ==} + /@storybook/react-dom-shim@7.5.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-x7h3TTLRLs8mrsCBKXbvjBRFms73XrNlm0Lo5Tu/Tf//+pwOFq+2sGBkqbRkYd54jNHhpqNF7+UUdzA93ESnbQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -3526,70 +4223,80 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true - /@storybook/router@7.1.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-GRYYWVsqAtDm7DHxnGXuaAmr3PQfj+tonYsP8/L3gC5sOdQNF3yaBmvv1pu+bqezwXVowq0ew+iVYECiaGoB3Q==} + /@storybook/router@7.5.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-jlh48TVUlqvGkU8MnkVp9SrCHomWGtQGx1WMK94NMyOPVPTLWzM6LjIybgmHz0MTe4lpzmbiIOfSlU3pPX054w==} 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.1.1 + '@storybook/client-logger': 7.5.2 memoizerific: 1.11.3 qs: 6.11.2 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@storybook/svelte-vite@7.1.1(svelte@4.0.0)(typescript@5.1.6)(vite@4.4.3): - resolution: {integrity: sha512-0GyqGDUh/szuCyUZ++X93qND5w45mv83pdgtQQZlTImQcW/NZxPWB1i6B5bBxPgSkIXvaOuW8JpjC21YGFGRcg==} + /@storybook/svelte-vite@7.5.2(@babel/core@7.22.9)(svelte@4.2.2)(typescript@5.1.6)(vite@4.4.3): + resolution: {integrity: sha512-THqQIJGlHmHvo8BecMU+eRE1ug1gb0nWUD+6wIYcHvLa1ia6MgNZfi8Yy19GtfUZagxpFoKmJZNTjyYjUxHzLQ==} engines: {node: ^14.18 || >=16} peerDependencies: svelte: ^3.0.0 || ^4.0.0 - vite: ^3.0.0 || ^4.0.0 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 dependencies: - '@storybook/builder-vite': 7.1.1(typescript@5.1.6)(vite@4.4.3) - '@storybook/node-logger': 7.1.1 - '@storybook/svelte': 7.1.1(svelte@4.0.0) - '@sveltejs/vite-plugin-svelte': 2.4.2(svelte@4.0.0)(vite@4.4.3) + '@storybook/builder-vite': 7.5.2(typescript@5.1.6)(vite@4.4.3) + '@storybook/node-logger': 7.5.2 + '@storybook/svelte': 7.5.2(svelte@4.2.2) + '@sveltejs/vite-plugin-svelte': 2.4.2(svelte@4.2.2)(vite@4.4.3) magic-string: 0.30.1 - svelte: 4.0.0 + svelte: 4.2.2 + svelte-preprocess: 5.0.4(@babel/core@7.22.9)(svelte@4.2.2)(typescript@5.1.6) sveltedoc-parser: 4.2.1 ts-dedent: 2.2.0 vite: 4.4.3(@types/node@20.4.5) transitivePeerDependencies: + - '@babel/core' - '@preact/preset-vite' + - coffeescript - encoding + - less + - postcss + - postcss-load-config + - pug + - sass + - stylus + - sugarss - supports-color - typescript - vite-plugin-glimmerx dev: true - /@storybook/svelte@7.1.1(svelte@4.0.0): - resolution: {integrity: sha512-mQLmJCYGxdHWKVEeKcaB1Y+BapH6vwyPOuQ0W3Fy1Pv0k0+/UO5sxS63ps2HsCjloYndLn8drwtx11HrM/G6zw==} + /@storybook/svelte@7.5.2(svelte@4.2.2): + resolution: {integrity: sha512-0PkhKhELK5lVZ/uDswXatDxLTkAAv3UcMDpNVwqpRhJocQQmQYlvpOdqqh8yi0QVAQmIziAt7LZP+8WlYyVQvQ==} engines: {node: '>=16.0.0'} peerDependencies: svelte: ^3.1.0 || ^4.0.0 dependencies: - '@storybook/client-logger': 7.1.1 - '@storybook/core-client': 7.1.1 - '@storybook/core-events': 7.1.1 - '@storybook/docs-tools': 7.1.1 + '@storybook/client-logger': 7.5.2 + '@storybook/core-client': 7.5.2 + '@storybook/core-events': 7.5.2 + '@storybook/docs-tools': 7.5.2 '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.1.1 - '@storybook/types': 7.1.1 - svelte: 4.0.0 + '@storybook/preview-api': 7.5.2 + '@storybook/types': 7.5.2 + svelte: 4.2.2 sveltedoc-parser: 4.2.1 - type-fest: 3.13.1 + type-fest: 2.19.0 transitivePeerDependencies: - encoding - supports-color dev: true - /@storybook/telemetry@7.1.1: - resolution: {integrity: sha512-7bQBfphEHJA1kHyPVVvrRXRet57JhyRD4uxoWYfp4jkSt2wHzAAdGU8Iz7U+ozv4TG7AA1gb1Uh5BS4nCiijsw==} + /@storybook/telemetry@7.5.2: + resolution: {integrity: sha512-tUgrcIx1vTMhTySp11JbBnWLsaMUNlil5yuOWEJy5i71E4Xy/2hYUtLfxzgXWd/0W7eTl4p2tjUk9uS8AP+S0Q==} dependencies: - '@storybook/client-logger': 7.1.1 - '@storybook/core-common': 7.1.1 - '@storybook/csf-tools': 7.1.1 + '@storybook/client-logger': 7.5.2 + '@storybook/core-common': 7.5.2 + '@storybook/csf-tools': 7.5.2 chalk: 4.1.2 detect-package-manager: 2.0.1 fetch-retry: 5.0.6 @@ -3611,7 +4318,7 @@ packages: '@storybook/core-common': 7.1.1 '@storybook/csf': 0.1.1 '@storybook/csf-tools': 7.1.1 - '@storybook/preview-api': 7.1.1 + '@storybook/preview-api': 7.5.2 '@swc/core': 1.3.72 '@swc/jest': 0.2.27(@swc/core@1.3.72) can-bind-to-host: 1.1.2 @@ -3663,14 +4370,14 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@storybook/theming@7.1.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-8ri/BvfgUzBln9EYB8N/xgRaxZIFFTG0IEEekuV2H5uv4q9JW9p3E5zqghmM1OC/vspJJa8e4Eajb1YiTO0W6w==} + /@storybook/theming@7.5.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-DZBTcYErSYvmTYsGz7lKtiIcBe8flBw5Ojp52r3O4GcRYG4AbuUwwVvehz+O1cWaS+UW3HavrcgapERH7ZHd1A==} 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.1(react@18.2.0) - '@storybook/client-logger': 7.1.1 + '@storybook/client-logger': 7.5.2 '@storybook/global': 5.0.0 memoizerific: 1.11.3 react: 18.2.0 @@ -3686,7 +4393,16 @@ packages: file-system-cache: 2.3.0 dev: true - /@sveltejs/package@2.2.0(svelte@4.0.0)(typescript@5.1.6): + /@storybook/types@7.5.2: + resolution: {integrity: sha512-RDKHo6WUES+4nt7uZMfankjxdpYX2EI2GpJ2n2RPcnhzmb/ub1huNTjbzDEYMqY24SppljZeIN57m3Ar6L6f9A==} + dependencies: + '@storybook/channels': 7.5.2 + '@types/babel__core': 7.20.1 + '@types/express': 4.17.17 + file-system-cache: 2.3.0 + dev: true + + /@sveltejs/package@2.2.0(svelte@4.2.2)(typescript@5.1.6): resolution: {integrity: sha512-TXbrzsk+T5WNcSzrU41D8P32vU5guo96lVS11/R+rpLhZBH5sORh0Qp6r68Jg4O5vcdS3JLwpwcpe8VFbT/QeA==} engines: {node: ^16.14 || >=18} hasBin: true @@ -3697,13 +4413,13 @@ packages: kleur: 4.1.5 sade: 1.8.1 semver: 7.5.4 - svelte: 4.0.0 - svelte2tsx: 0.6.19(svelte@4.0.0)(typescript@5.1.6) + svelte: 4.2.2 + svelte2tsx: 0.6.19(svelte@4.2.2)(typescript@5.1.6) transitivePeerDependencies: - typescript dev: true - /@sveltejs/vite-plugin-svelte-inspector@1.0.3(@sveltejs/vite-plugin-svelte@2.4.2)(svelte@4.0.0)(vite@4.4.3): + /@sveltejs/vite-plugin-svelte-inspector@1.0.3(@sveltejs/vite-plugin-svelte@2.4.2)(svelte@4.2.2)(vite@4.4.3): resolution: {integrity: sha512-Khdl5jmmPN6SUsVuqSXatKpQTMIifoQPDanaxC84m9JxIibWvSABJyHpyys0Z+1yYrxY5TTEQm+6elh0XCMaOA==} engines: {node: ^14.18.0 || >= 16} peerDependencies: @@ -3711,28 +4427,28 @@ packages: svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 2.4.2(svelte@4.0.0)(vite@4.4.3) + '@sveltejs/vite-plugin-svelte': 2.4.2(svelte@4.2.2)(vite@4.4.3) debug: 4.3.4 - svelte: 4.0.0 + svelte: 4.2.2 vite: 4.4.3(@types/node@20.4.5) transitivePeerDependencies: - supports-color dev: true - /@sveltejs/vite-plugin-svelte@2.4.2(svelte@4.0.0)(vite@4.4.3): + /@sveltejs/vite-plugin-svelte@2.4.2(svelte@4.2.2)(vite@4.4.3): resolution: {integrity: sha512-ePfcC48ftMKhkT0OFGdOyycYKnnkT6i/buzey+vHRTR/JpQvuPzzhf1PtKqCDQfJRgoPSN2vscXs6gLigx/zGw==} engines: {node: ^14.18.0 || >= 16} peerDependencies: svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 1.0.3(@sveltejs/vite-plugin-svelte@2.4.2)(svelte@4.0.0)(vite@4.4.3) + '@sveltejs/vite-plugin-svelte-inspector': 1.0.3(@sveltejs/vite-plugin-svelte@2.4.2)(svelte@4.2.2)(vite@4.4.3) debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.1 - svelte: 4.0.0 - svelte-hmr: 0.15.2(svelte@4.0.0) + svelte: 4.2.2 + svelte-hmr: 0.15.2(svelte@4.2.2) vite: 4.4.3(@types/node@20.4.5) vitefu: 0.2.4(vite@4.4.3) transitivePeerDependencies: @@ -4133,6 +4849,12 @@ packages: resolution: {integrity: sha512-8q9ZexmdYYyc5/cfujaXb4YOucpQxAV4RMG0himLyDUOEr8Mr79VrqsFI+cQ2M2h89YIuy95lbxuYjxT4Hk4kQ==} dev: true + /@types/node@18.18.8: + resolution: {integrity: sha512-OLGBaaK5V3VRBS1bAkMVP2/W9B+H8meUfl866OrMNQqt7wDgdpWPp5o6gmIc9pB+lIQHSq4ZL8ypeH1vPxcPaQ==} + dependencies: + undici-types: 5.26.5 + dev: true + /@types/node@20.4.5: resolution: {integrity: sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==} dev: true @@ -4157,6 +4879,10 @@ packages: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} dev: true + /@types/pug@2.0.6: + resolution: {integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==} + dev: true + /@types/qs@6.9.7: resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} dev: true @@ -4644,6 +5370,13 @@ packages: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true + /aria-hidden@1.2.3: + resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} + engines: {node: '>=10'} + dependencies: + tslib: 2.6.1 + dev: true + /aria-query@5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} dependencies: @@ -5402,8 +6135,8 @@ packages: engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} dev: true - /code-red@1.0.3: - resolution: {integrity: sha512-kVwJELqiILQyG5aeuyKFbdsI1fmQy1Cmf7dQ8eGmVuJoaRVdwey7WaMknr2ZFeVSYSKT0rExsa8EGw0aoI/1QQ==} + /code-red@1.0.4: + resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 '@types/estree': 1.0.1 @@ -5892,6 +6625,10 @@ packages: engines: {node: '>=8'} dev: true + /detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + dev: true + /detect-package-manager@2.0.1: resolution: {integrity: sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==} engines: {node: '>=12'} @@ -6255,6 +6992,10 @@ packages: resolution: {integrity: sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==} dev: true + /es6-promise@3.3.1: + resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} + dev: true + /esbuild-plugin-alias@0.2.1: resolution: {integrity: sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==} dev: true @@ -6270,6 +7011,17 @@ packages: - supports-color dev: true + /esbuild-register@3.5.0(esbuild@0.18.17): + resolution: {integrity: sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==} + peerDependencies: + esbuild: '>=0.12 <1' + dependencies: + debug: 4.3.4 + esbuild: 0.18.17 + transitivePeerDependencies: + - supports-color + dev: true + /esbuild@0.18.17: resolution: {integrity: sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==} engines: {node: '>=12'} @@ -6731,7 +7483,7 @@ packages: eslint-scope: 7.2.2 eslint-utils: 3.0.0(eslint@8.4.1) eslint-visitor-keys: 3.4.2 - espree: 9.2.0 + espree: 9.6.1 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -7321,6 +8073,11 @@ packages: load-json-file: 4.0.0 dev: true + /get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + dev: true + /get-npm-tarball-url@2.0.3: resolution: {integrity: sha512-R/PW6RqyaBQNWYaSyfrh54/qtcnOp22FHCCiRhSSZj0FP3KQWCsxxt0DzIdVTbwTqe9CtQfvl/FPD4UIPt4pqw==} engines: {node: '>=12.17'} @@ -7786,6 +8543,12 @@ packages: side-channel: 1.0.4 dev: true + /invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + dependencies: + loose-envify: 1.4.0 + dev: true + /io-ts@2.2.20(fp-ts@2.16.1): resolution: {integrity: sha512-Rq2BsYmtwS5vVttie4rqrOCIfHCS9TgpRLFpKQCM1wZBBRY9nWVGmEvm2FnDbSE2un1UE39DvFpTR5UL47YDcA==} peerDependencies: @@ -9489,12 +10252,26 @@ packages: hasBin: true dev: true + /magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + /magic-string@0.30.1: resolution: {integrity: sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 + /magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + /make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} @@ -9764,10 +10541,6 @@ packages: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: true - /ms@2.1.1: - resolution: {integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==} - dev: true - /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true @@ -10669,6 +11442,55 @@ packages: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true + /react-remove-scroll-bar@2.3.4(react@18.2.0): + 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: + react: 18.2.0 + react-style-singleton: 2.2.1(react@18.2.0) + tslib: 2.6.1 + dev: true + + /react-remove-scroll@2.5.5(react@18.2.0): + 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: + react: 18.2.0 + react-remove-scroll-bar: 2.3.4(react@18.2.0) + react-style-singleton: 2.2.1(react@18.2.0) + tslib: 2.6.1 + use-callback-ref: 1.3.0(react@18.2.0) + use-sidecar: 1.1.2(react@18.2.0) + dev: true + + /react-style-singleton@2.2.1(react@18.2.0): + 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: + get-nonce: 1.0.1 + invariant: 2.2.4 + react: 18.2.0 + tslib: 2.6.1 + dev: true + /react@18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} @@ -11239,10 +12061,6 @@ packages: isarray: 2.0.5 dev: true - /safe-buffer@5.1.1: - resolution: {integrity: sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==} - dev: true - /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: true @@ -11263,6 +12081,15 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true + /sander@0.5.1: + resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} + dependencies: + es6-promise: 3.3.1 + graceful-fs: 4.2.11 + mkdirp: 0.5.6 + rimraf: 2.7.1 + dev: true + /saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} @@ -11285,11 +12112,6 @@ packages: hasBin: true dev: true - /semver@7.0.0: - resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==} - hasBin: true - dev: true - /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} @@ -11319,17 +12141,6 @@ packages: - supports-color dev: true - /serve-favicon@2.5.0: - resolution: {integrity: sha512-FMW2RvqNr03x+C0WxTyu6sOv21oOjkq5j8tjquWccwa6ScNyGFOGJVpuS1NmTVGBAHS07xnSKotgf2ehQmf9iA==} - engines: {node: '>= 0.8.0'} - dependencies: - etag: 1.8.1 - fresh: 0.5.2 - ms: 2.1.1 - parseurl: 1.3.3 - safe-buffer: 5.1.1 - dev: true - /serve-static@1.15.0: resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} engines: {node: '>= 0.8.0'} @@ -11403,11 +12214,11 @@ packages: pkg-conf: 2.1.0 dev: true - /simple-update-notifier@1.1.0: - resolution: {integrity: sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==} - engines: {node: '>=8.10.0'} + /simple-update-notifier@2.0.0: + resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} + engines: {node: '>=10'} dependencies: - semver: 7.0.0 + semver: 7.5.4 dev: true /sisteransi@1.0.5: @@ -11442,6 +12253,16 @@ packages: resolution: {integrity: sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==} dev: true + /sorcery@0.11.0: + resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} + hasBin: true + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + buffer-crc32: 0.2.13 + minimist: 1.2.8 + sander: 0.5.1 + dev: true + /sort-object-keys@1.1.3: resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} dev: true @@ -11570,11 +12391,11 @@ packages: resolution: {integrity: sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==} dev: true - /storybook@7.1.1: - resolution: {integrity: sha512-5/FIgiD574uwwDGtyyMuqXSOw4kzpEiPbMy1jMWmc8lI2g6vynwbyWqqXmVqtKpJa1vVCM4+KjFqZCmyXFJiZQ==} + /storybook@7.5.2: + resolution: {integrity: sha512-wuB5VdmI6teU2z5iiBEZ2ziNeP6g6Da/dGM7+tWQVUl8bmfOmpEgzgEyS1/XqdOfm+HoZplspwM0XMHOLo/Now==} hasBin: true dependencies: - '@storybook/cli': 7.1.1 + '@storybook/cli': 7.5.2 transitivePeerDependencies: - bufferutil - encoding @@ -11763,29 +12584,56 @@ packages: engines: {node: '>= 0.4'} dev: true + /svelte-check@3.5.0(@babel/core@7.22.9)(svelte@4.2.2): + resolution: {integrity: sha512-KHujbn4k17xKYLmtCwv0sKKM7uiHTYcQvXnvrCcNU6a7hcszh99zFTIoiu/Sp/ewAw5aJmillJ1Cs8gKLmcX4A==} + hasBin: true + peerDependencies: + svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 + dependencies: + '@jridgewell/trace-mapping': 0.3.18 + chokidar: 3.5.3 + fast-glob: 3.3.1 + import-fresh: 3.3.0 + picocolors: 1.0.0 + sade: 1.8.1 + svelte: 4.2.2 + svelte-preprocess: 5.0.4(@babel/core@7.22.9)(svelte@4.2.2)(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - '@babel/core' + - coffeescript + - less + - postcss + - postcss-load-config + - pug + - sass + - stylus + - sugarss + dev: true + /svelte-dev-helper@1.1.9: resolution: {integrity: sha512-oU+Xv7Dl4kRU2kdFjsoPLfJfnt5hUhsFUZtuzI3Ku/f2iAFZqBoEuXOqK3N9ngD4dxQOmN4OKWPHVi3NeAeAfQ==} dev: true - /svelte-hmr@0.14.12(svelte@4.0.0): + /svelte-hmr@0.14.12(svelte@4.2.2): resolution: {integrity: sha512-4QSW/VvXuqVcFZ+RhxiR8/newmwOCTlbYIezvkeN6302YFRE8cXy0naamHcjz8Y9Ce3ITTZtrHrIL0AGfyo61w==} engines: {node: ^12.20 || ^14.13.1 || >= 16} peerDependencies: svelte: '>=3.19.0' dependencies: - svelte: 4.0.0 + svelte: 4.2.2 dev: true - /svelte-hmr@0.15.2(svelte@4.0.0): + /svelte-hmr@0.15.2(svelte@4.2.2): resolution: {integrity: sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==} engines: {node: ^12.20 || ^14.13.1 || >= 16} peerDependencies: svelte: ^3.19.0 || ^4.0.0-next.0 dependencies: - svelte: 4.0.0 + svelte: 4.2.2 dev: true - /svelte-jester@2.3.2(jest@29.6.2)(svelte@4.0.0): + /svelte-jester@2.3.2(jest@29.6.2)(svelte@4.2.2): resolution: {integrity: sha512-JtxSz4FWAaCRBXbPsh4LcDs4Ua7zdXgLC0TZvT1R56hRV0dymmNP+abw67DTPF7sQPyNxWsOKd0Sl7Q8SnP8kg==} engines: {node: '>=14'} peerDependencies: @@ -11793,21 +12641,69 @@ packages: svelte: '>= 3' dependencies: jest: 29.6.2(@types/node@20.4.5) - svelte: 4.0.0 + svelte: 4.2.2 dev: true - /svelte-loader@3.1.7(svelte@4.0.0): + /svelte-loader@3.1.7(svelte@4.2.2): resolution: {integrity: sha512-YVg5gQaUdV26uaA5SEGj1VOUX0YQicD9PezKvVlkQ2JI644silWtJZ3hkxHtXSfjnlFr0OTNoyOgeINIODdT+A==} peerDependencies: svelte: '>3.0.0' dependencies: loader-utils: 2.0.4 - svelte: 4.0.0 + svelte: 4.2.2 svelte-dev-helper: 1.1.9 - svelte-hmr: 0.14.12(svelte@4.0.0) + svelte-hmr: 0.14.12(svelte@4.2.2) + dev: true + + /svelte-preprocess@5.0.4(@babel/core@7.22.9)(svelte@4.2.2)(typescript@5.1.6): + resolution: {integrity: sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==} + engines: {node: '>= 14.10.0'} + requiresBuild: true + peerDependencies: + '@babel/core': ^7.10.2 + coffeescript: ^2.5.1 + less: ^3.11.3 || ^4.0.0 + postcss: ^7 || ^8 + postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 + pug: ^3.0.0 + sass: ^1.26.8 + stylus: ^0.55.0 + sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 + svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 + typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' + peerDependenciesMeta: + '@babel/core': + optional: true + coffeescript: + optional: true + less: + optional: true + postcss: + optional: true + postcss-load-config: + optional: true + pug: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + typescript: + optional: true + dependencies: + '@babel/core': 7.22.9 + '@types/pug': 2.0.6 + detect-indent: 6.1.0 + magic-string: 0.27.0 + sorcery: 0.11.0 + strip-indent: 3.0.0 + svelte: 4.2.2 + typescript: 5.1.6 dev: true - /svelte2tsx@0.6.19(svelte@4.0.0)(typescript@5.1.6): + /svelte2tsx@0.6.19(svelte@4.2.2)(typescript@5.1.6): resolution: {integrity: sha512-h3b5OtcO8zyVL/RiB2zsDwCopeo/UH+887uyhgb2mjnewOFwiTxu+4IGuVwrrlyuh2onM2ktfUemNrNmQwXONQ==} peerDependencies: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 @@ -11815,12 +12711,12 @@ packages: dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 - svelte: 4.0.0 + svelte: 4.2.2 typescript: 5.1.6 dev: true - /svelte@4.0.0: - resolution: {integrity: sha512-+yCYu3AEUu9n91dnQNGIbnVp8EmNQtuF/YImW4+FTXRHard7NMo+yTsWzggPAbj3fUEJ1FBJLkql/jkp6YB5pg==} + /svelte@4.2.2: + resolution: {integrity: sha512-My2tytF2e2NnHSpn2M7/3VdXT4JdTglYVUuSuK/mXL2XtulPYbeBfl8Dm1QiaKRn0zoULRnL+EtfZHHP0k4H3A==} engines: {node: '>=16'} dependencies: '@ampproject/remapping': 2.2.1 @@ -11829,12 +12725,12 @@ packages: acorn: 8.10.0 aria-query: 5.3.0 axobject-query: 3.2.1 - code-red: 1.0.3 + code-red: 1.0.4 css-tree: 2.3.1 estree-walker: 3.0.3 is-reference: 3.0.1 locate-character: 3.0.0 - magic-string: 0.30.1 + magic-string: 0.30.5 periscopic: 3.1.0 dev: true @@ -11921,6 +12817,12 @@ packages: memoizerific: 1.11.3 dev: true + /telejson@7.2.0: + resolution: {integrity: sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==} + dependencies: + memoizerific: 1.11.3 + dev: true + /temp-dir@2.0.0: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} engines: {node: '>=8'} @@ -12288,6 +13190,10 @@ packages: which-boxed-primitive: 1.0.2 dev: true + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true + /unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} @@ -12481,6 +13387,20 @@ packages: requires-port: 1.0.0 dev: true + /use-callback-ref@1.3.0(react@18.2.0): + 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: + react: 18.2.0 + tslib: 2.6.1 + dev: true + /use-resize-observer@9.1.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow==} peerDependencies: @@ -12492,6 +13412,21 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true + /use-sidecar@1.1.2(react@18.2.0): + 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: + detect-node-es: 1.1.0 + react: 18.2.0 + tslib: 2.6.1 + dev: true + /user-home@2.0.0: resolution: {integrity: sha512-KMWqdlOcjCYdtIJpicDSFBQ8nFwS2i9sslAd6f4+CBGcU4gist2REnr2fxj2YocvJFxSF3ZOHLYLVZnUxv4BZQ==} engines: {node: '>=0.10.0'} diff --git a/src/components/RenderContext.svelte b/src/components/RenderContext.svelte index 53921f3..4423339 100644 --- a/src/components/RenderContext.svelte +++ b/src/components/RenderContext.svelte @@ -9,9 +9,25 @@ export let args = {}; export let storyContext = {}; + /** @type {import('svelte').SvelteComponent} */ + let instance; + createRenderContext($$props); + // events are static and don't need to be reactive + const eventsFromArgTypes = Object.fromEntries( + Object.entries(storyContext.argTypes) + .filter(([k, v]) => v.action && args[k] != null) + .map(([k, v]) => [v.action, args[k]]) + ); + $: setStoryRenderContext(args, storyContext); + + + $: if (instance) { + Object.entries(eventsFromArgTypes).forEach(([event, handler]) => instance.$on(event, handler)); + } + - + diff --git a/src/components/context.ts b/src/components/context.ts index 75be314..97baac9 100644 --- a/src/components/context.ts +++ b/src/components/context.ts @@ -14,6 +14,9 @@ export function createRenderContext(props: any = {}) { args: {}, ...props, }); + + // reset the component context + resetStoryRenderContext(); } export function createRegistrationContext(repositories: any) { @@ -36,12 +39,17 @@ export function useContext() { } return getContext(CONTEXT_KEY); } + +function resetStoryRenderContext() { + setContext(CONTEXT_KEY_COMPONENT, { argsStore: writable({}), storyContextStore: writable({}) }); +} + export function getStoryRenderContext(): { argsStore: Writable>; storyContextStore: Writable>; } { if (!hasContext(CONTEXT_KEY_COMPONENT)) { - setContext(CONTEXT_KEY_COMPONENT, { argsStore: writable({}), storyContextStore: writable({}) }); + resetStoryRenderContext(); } return getContext(CONTEXT_KEY_COMPONENT); } diff --git a/src/index.d.ts b/src/index.d.ts index 141b790..9b21a94 100644 --- a/src/index.d.ts +++ b/src/index.d.ts @@ -44,6 +44,23 @@ interface TemplateProps extends BaseAnnotations { id?: string; } +interface MetaProps extends BaseMeta, BaseAnnotations { + /** + * Enable the tag 'autodocs'. + * + * @see [Automatic documentation](https://storybook.js.org/docs/svelte/writing-docs/autodocs) + */ + autodocs?: boolean; + /** + * List of tags to add to the stories. + * + * It should be a static array of strings. + * + * @example tags={['autodocs']} + */ + tags?: string[]; +} + interface Slots { default: { args: any; @@ -53,8 +70,10 @@ interface Slots { } /** * Meta. + * + * @deprecated Use `export const meta`. See https://github.com/storybookjs/addon-svelte-csf for an example */ -export class Meta extends SvelteComponent & BaseAnnotations> { } +export class Meta extends SvelteComponent { } /** * Story. */ diff --git a/src/parser/collect-stories.ts b/src/parser/collect-stories.ts index 9461d8c..cc3082d 100644 --- a/src/parser/collect-stories.ts +++ b/src/parser/collect-stories.ts @@ -5,6 +5,8 @@ import RenderContext from '../components/RenderContext.svelte'; import { combineParameters } from '@storybook/preview-api'; import { extractId } from './extract-id.js'; import { logger } from '@storybook/client-logger'; +import type { Meta, StoriesDef, Story } from './types.js'; +import type { SvelteComponent } from 'svelte'; /* Called from a webpack loader and a jest transformation. * @@ -17,25 +19,21 @@ import { logger } from '@storybook/client-logger'; * the one selected is disabled. */ -interface Story { - id: string; - name: string; - template: string; - component: any; - isTemplate: boolean; - source: boolean; -} -interface Meta { - name: string; - component: any; -} const createFragment = document.createDocumentFragment ? () => document.createDocumentFragment() : () => document.createElement('div'); -export default (StoriesComponent, { stories = {}, allocatedIds = [] }) => { +export default ( + StoriesComponent: SvelteComponent, + { + stories = {}, + meta: parsedMeta = {}, + allocatedIds = [], + }: StoriesDef, + exportedMeta = undefined +) => { const repositories = { meta: null as Meta | null, stories: [] as Story[], @@ -44,7 +42,7 @@ export default (StoriesComponent, { stories = {}, allocatedIds = [] }) => { // extract all stories try { const context = new RegisterContext({ - target: createFragment() as Document | Element, + target: createFragment() as Element, props: { Stories: StoriesComponent, repositories, @@ -55,12 +53,23 @@ export default (StoriesComponent, { stories = {}, allocatedIds = [] }) => { logger.error(`Error extracting stories ${e.toString()}`, e); } - const { meta } = repositories; + const meta = exportedMeta || repositories.meta; if (!meta) { - logger.error('Missing tag'); + logger.error('Missing module meta export or tag'); return {}; } + // Inject description extracted from static analysis. + if (parsedMeta.description && !meta.parameters?.docs?.description?.component) { + meta.parameters = combineParameters(meta.parameters, { + docs: { + description: { + component: parsedMeta.description + } + } + }); + } + const { component: globalComponent } = meta; // collect templates id @@ -131,7 +140,7 @@ export default (StoriesComponent, { stories = {}, allocatedIds = [] }) => { }); } - let snippet; + let snippet: string|null|undefined; if (source === true || (source === false && !hasArgs)) { snippet = rawSource; @@ -145,9 +154,20 @@ export default (StoriesComponent, { stories = {}, allocatedIds = [] }) => { }); } + const relStory = stories[storyId]; + if (relStory?.description) { + storyFn.parameters = combineParameters(storyFn.parameters || {}, { + docs: { + description: { + story: relStory.description, + }, + }, + }); + } + // eslint-disable-next-line no-param-reassign all[storyId] = storyFn; return all; - }, {}) as { [key: string]: { storyName: string; parameters: string; } }, + }, {}) as { [key: string]: { storyName: string; parameters: string } }, }; }; diff --git a/src/parser/extract-stories.test.ts b/src/parser/extract-stories.test.ts index fb265a8..e4f9f89 100644 --- a/src/parser/extract-stories.test.ts +++ b/src/parser/extract-stories.test.ts @@ -26,7 +26,6 @@ describe('extractSource', () => { "hasArgs": false, "name": "MyStory", "source": "
a story
", - "storyId": "mystory--my-story", "template": false, }, }, @@ -56,7 +55,6 @@ describe('extractSource', () => { "hasArgs": false, "name": "MyStory", "source": "
a story
", - "storyId": "myid--my-id", "template": false, }, }, @@ -86,7 +84,6 @@ describe('extractSource', () => { "hasArgs": true, "name": "MyStory", "source": "
a story
", - "storyId": "mystory--my-story", "template": false, }, }, @@ -116,7 +113,6 @@ describe('extractSource', () => { "hasArgs": false, "name": "MyTemplate", "source": "
a template
", - "storyId": "mytemplate--my-template", "template": true, }, }, @@ -146,7 +142,6 @@ describe('extractSource', () => { "hasArgs": false, "name": "default", "source": "
a template
", - "storyId": "default--default", "template": true, }, }, @@ -179,14 +174,12 @@ describe('extractSource', () => { "hasArgs": false, "name": "Story1", "source": "
story 1
", - "storyId": "story1--story-1", "template": false, }, "Story2": { "hasArgs": false, "name": "Story2", "source": "
story 2
", - "storyId": "story2--story-2", "template": false, }, }, @@ -222,13 +215,183 @@ describe('extractSource', () => { "hasArgs": false, "name": "Story1", "source": "
story 1
", - "storyId": "test--story-1", "template": false, }, }, } `); }); + test('Add tags autodocs', () => { + expect( + extractStories(` + + + + + +
story 1
+
+ `) + ).toMatchInlineSnapshot(` + { + "allocatedIds": [ + "default", + "Story", + "Meta", + ], + "meta": { + "id": undefined, + "tags": [ + "autodocs", + ], + "title": "test", + }, + "stories": { + "Story1": { + "hasArgs": false, + "name": "Story1", + "source": "
story 1
", + "template": false, + }, + }, + } + `); + }); + test('Add tags', () => { + expect( + extractStories(` + + + + + +
story 1
+
+ `) + ).toMatchInlineSnapshot(` + { + "allocatedIds": [ + "default", + "Story", + "Meta", + ], + "meta": { + "id": undefined, + "tags": [ + "a", + "b", + ], + "title": "test", + }, + "stories": { + "Story1": { + "hasArgs": false, + "name": "Story1", + "source": "
story 1
", + "template": false, + }, + }, + } + `); + }); + test('Add Only one tag', () => { + expect( + extractStories(` + + + + + +
story 1
+
+ `) + ).toMatchInlineSnapshot(` + { + "allocatedIds": [ + "default", + "Story", + "Meta", + ], + "meta": { + "id": undefined, + "tags": [ + "a", + ], + "title": "test", + }, + "stories": { + "Story1": { + "hasArgs": false, + "name": "Story1", + "source": "
story 1
", + "template": false, + }, + }, + } + `); + }); + test('Meta as exported module object', () => { + expect( + extractStories(` + + `) + ).toMatchInlineSnapshot(` + { + "allocatedIds": [ + "default", + ], + "meta": { + "id": undefined, + "tags": [ + "a", + ], + "title": "MyStory", + }, + "stories": {}, + } + `); + }); + test('Meta Description', () => { + expect( + extractStories(` + + `) + ).toMatchInlineSnapshot(` + { + "allocatedIds": [ + "default", + ], + "meta": { + "description": "A description of meta", + "id": undefined, + "tags": [ + "a", + ], + "title": "MyStory", + }, + "stories": {}, + } + `); + }); test('Duplicate Id', () => { expect( extractStories(` @@ -254,11 +417,178 @@ describe('extractSource', () => { "hasArgs": false, "name": "Button", "source": "
a story
", - "storyId": "button77471352--button-77471352", "template": false, }, }, } `); }); + test('Meta tag description', () => { + expect( + extractStories(` + + + + + `) + ).toMatchInlineSnapshot(` + { + "allocatedIds": [ + "default", + "Story", + "Button", + ], + "meta": { + "description": "Meta Description", + "id": undefined, + "title": "a title", + }, + "stories": {}, + } + `); + }); + test('With description', () => { + expect( + extractStories(` + + + + + +
a story
+
+ `) + ).toMatchInlineSnapshot(` + { + "allocatedIds": [ + "default", + "Story", + "Button", + ], + "meta": {}, + "stories": { + "Desc": { + "description": "Story Description", + "hasArgs": false, + "name": "Desc", + "source": "
a story
", + "template": false, + }, + }, + } + `); + }); + test('With multiline description', () => { + expect( + extractStories(` + + + + + +
a story
+
+ `) + ).toMatchInlineSnapshot(` + { + "allocatedIds": [ + "default", + "Story", + "Button", + ], + "meta": {}, + "stories": { + "Desc": { + "description": "Story Description + + another line.", + "hasArgs": false, + "name": "Desc", + "source": "
a story
", + "template": false, + }, + }, + } + `); + }); + test('With unrelated nested description', () => { + expect( + extractStories(` + + +
+ +
+ +
a story
+
+ `) + ).toMatchInlineSnapshot(` + { + "allocatedIds": [ + "default", + "Story", + "Button", + ], + "meta": {}, + "stories": { + "Desc": { + "hasArgs": false, + "name": "Desc", + "source": "
a story
", + "template": false, + }, + }, + } + `); + }); + test('With unrelated description', () => { + expect( + extractStories(` + + + +
+ +
a story
+
+ `) + ).toMatchInlineSnapshot(` + { + "allocatedIds": [ + "default", + "Story", + "Button", + ], + "meta": {}, + "stories": { + "Desc": { + "hasArgs": false, + "name": "Desc", + "source": "
a story
", + "template": false, + }, + }, + } + `); + }); }); diff --git a/src/parser/extract-stories.ts b/src/parser/extract-stories.ts index 9f7c57f..8b13be1 100644 --- a/src/parser/extract-stories.ts +++ b/src/parser/extract-stories.ts @@ -1,42 +1,30 @@ import * as svelte from 'svelte/compiler'; import type { Node } from 'estree'; -import { storyNameFromExport, toId } from '@storybook/csf'; - import dedent from 'dedent'; import { extractId } from './extract-id.js'; +import type { MetaDef, StoriesDef, StoryDef } from './types.js'; -interface StoryDef { - storyId: string; - name: string; - template: boolean; - source: string; - hasArgs: boolean; -} - -interface MetaDef { - title?: string; - id?: string; -} - -interface StoriesDef { - meta: MetaDef; - stories: Record; - allocatedIds: string[]; +function lookupAttribute(name: string, attributes: any[]) { + return attributes.find((att: any) => + (att.type === 'Attribute' && att.name === name) || + (att.type === 'Property' && att.key.name === name)); } function getStaticAttribute(name: string, node: any): string | undefined { // extract the attribute - const attribute = node.attributes.find( - (att: any) => att.type === 'Attribute' && att.name === name - ); + const attribute = lookupAttribute(name, node); if (!attribute) { return undefined; } const { value } = attribute; - // expect the attribute to be static, ie only one Text node + // expect the attribute to be static, ie only one Text node or Literal + if (value?.type === 'Literal') { + return value.value; + } + if (value && value.length === 1 && value[0].type === 'Text') { return value[0].data; } @@ -44,6 +32,72 @@ function getStaticAttribute(name: string, node: any): string | undefined { throw new Error(`Attribute ${name} is not static`); } +function getStaticBooleanAttribute(name: string, attributes: any[]): boolean | undefined { + // extract the attribute + const attribute = lookupAttribute(name, attributes); + + + if (!attribute) { + return undefined; + } + + const { value } = attribute; + + // expect the attribute to be static and a boolean + if (typeof value === 'boolean') { + return value; + } + + throw new Error(`Attribute ${name} is not a static boolean`); +} + +function getMetaTags(attributes: any[]): string[] { + + const finalTags = getStaticBooleanAttribute('autodocs', attributes) ? ["autodocs"] : []; + + const tags = lookupAttribute('tags', attributes); + + if (tags) { + let valid = false; + + let { value } = tags; + if (value && value.length === 1) { + value = value[0]; + } + + const { type, expression, data } = value; + if (type === 'Text') { + // tags="autodocs" + finalTags.push(data); + valid = true; + } else if (type === 'ArrayExpression') { + // tags={["autodocs"]} in object + const { elements } = value; + elements.forEach((e : any) => finalTags.push(e.value)); + valid = true; + } else if (type === 'MustacheTag' && expression.type === 'ArrayExpression') { + // tags={["autodocs"]} in template + const { elements } = expression; + elements.forEach((e : any) => finalTags.push(e.value)); + valid = true; + } + + if (!valid) { + throw new Error('Attribute tags should be a static string array or a string'); + } + } + + return finalTags; +} + +function fillMetaFromAttributes(meta: MetaDef, attributes: any[]) { + meta.title = getStaticAttribute('title', attributes); + meta.id = getStaticAttribute('id', attributes); + const tags = getMetaTags(attributes); + if (tags.length > 0) { + meta.tags = tags; + } +} /** * Parse a Svelte component and extract stories. * @param component Component Source @@ -93,6 +147,34 @@ export function extractStories(component: string): StoriesDef { const stories: Record = {}; const meta: MetaDef = {}; + if (ast.module) { + svelte.walk(ast.module.content, { + enter(node: any) { + if (node.type === 'ExportNamedDeclaration' && + node.declaration?.type === 'VariableDeclaration' && + node.declaration?.declarations.length === 1 && + node.declaration?.declarations[0]?.id?.name === 'meta') { + + if (node.declaration?.kind !== 'const') { + throw new Error('meta should be exported as const'); + } + + const init = node.declaration?.declarations[0]?.init; + if (init?.type !== 'ObjectExpression') { + throw new Error('meta should export on object'); + } + + fillMetaFromAttributes(meta, init.properties); + if (node.leadingComments?.length > 0) { + // throws dedent expression is not callable. + // @ts-ignore + meta.description = dedent(node.leadingComments[0].value.replaceAll(/^ *\*/mg, "")); + } + } + } + }); + } + let latestComment: string|undefined; svelte.walk(ast.html, { enter(node: any) { if ( @@ -104,7 +186,7 @@ export function extractStories(component: string): StoriesDef { const isTemplate = node.name === 'Template'; // extract the 'name' attribute - let name = getStaticAttribute('name', node); + let name = getStaticAttribute('name', node.attributes); // templates has a default name if (!name && isTemplate) { @@ -113,7 +195,7 @@ export function extractStories(component: string): StoriesDef { const id = extractId( { - id: getStaticAttribute('id', node), + id: getStaticAttribute('id', node.attributes), name, }, isTemplate ? undefined : allocatedIds @@ -130,23 +212,41 @@ export function extractStories(component: string): StoriesDef { // @ts-ignore source = dedent`${component.substr(start, end - start)}`; } - stories[isTemplate ? `tpl:${id}` : id] = { - storyId: toId(meta.id || meta.title || id, storyNameFromExport(id)), + const story = { name, template: isTemplate, source, hasArgs: node.attributes.find((att: any) => att.type === 'Let') != null, }; + if (!isTemplate && latestComment) { + // throws dedent expression is not callable. + // @ts-ignore + story.description = dedent`${latestComment}`; + } + stories[isTemplate ? `tpl:${id}` : id] = story; + latestComment = undefined; } } else if (node.type === 'InlineComponent' && node.name === localNames.Meta) { this.skip(); - meta.title = getStaticAttribute('title', node); - meta.id = getStaticAttribute('id', node); + fillMetaFromAttributes(meta, node.attributes); + if (latestComment) { + meta.description = latestComment; + } + latestComment = undefined; + } else if (node.type === 'Comment') { + this.skip(); + + latestComment = node.data?.trim(); + return; } }, + leave(node: any) { + if (node.type !== "Comment" && node.type !== "Text") { + latestComment = undefined; + } + } }); - return { meta, stories, diff --git a/src/parser/svelte-stories-loader.ts b/src/parser/svelte-stories-loader.ts index 08eb511..41ac4c0 100644 --- a/src/parser/svelte-stories-loader.ts +++ b/src/parser/svelte-stories-loader.ts @@ -1,10 +1,9 @@ -import dedent from 'dedent'; import { extractStories } from './extract-stories.js'; import { fileURLToPath } from 'url'; import { readFileSync } from 'fs'; const parser = fileURLToPath(new URL('./collect-stories.js', import.meta.url)) - .replace(/\\/g, "\\\\"); // For Windows paths; + .replace(/\\/g, '/'); // For Windows paths; // From https://github.com/sveltejs/svelte/blob/8db3e8d0297e052556f0b6dde310ef6e197b8d18/src/compiler/compile/utils/get_name_from_filename.ts // Copied because it is not exported from the compiler @@ -55,13 +54,12 @@ function transformSvelteStories(code: string) { .map(([id]) => `export const ${id} = __storiesMetaData.stories[${JSON.stringify(id)}]`) .join('\n'); - const codeWithoutDefaultExport = code.replace('export default ', '//export default'); - - // throws dedent expression is not callable. - // @ts-ignore - return dedent`${codeWithoutDefaultExport} + const metaExported = code.includes('export { meta }'); + const codeWithoutDefaultExport = code.replace('export default ', '//export default').replace('export { meta };', '// export { meta };'); + + return `${codeWithoutDefaultExport} const { default: parser } = require('${parser}'); - const __storiesMetaData = parser(${componentName}, ${JSON.stringify(storiesDef)}); + const __storiesMetaData = parser(${componentName}, ${JSON.stringify(storiesDef)}${metaExported ? ', meta' : ''}); export default __storiesMetaData.meta; ${storyDef}; ` as string; diff --git a/src/parser/types.d.ts b/src/parser/types.d.ts new file mode 100644 index 0000000..fb5c881 --- /dev/null +++ b/src/parser/types.d.ts @@ -0,0 +1,53 @@ +/** + * Story extracted from static analysis. + */ +export interface StoryDef { + name: string; + template: boolean; + source: string; + description?: string; + hasArgs: boolean; +} + +/** + * Meta extracted from static analysis. + */ +export interface MetaDef { + title?: string; + id?: string; + tags?: string[]; + description?: string; +} + +/** + * Informations extracted from static analysis. + */ +export interface StoriesDef { + meta: MetaDef; + stories: Record; + /** + * All allocated ids in the svelte script section. + */ + allocatedIds: string[]; +} + +/** + * Story extracted from executing the Stories component. + */ +export interface Story { + id: string; + name: string; + template: string; + component: any; + isTemplate: boolean; + source: boolean; +} + +/** + * Meta extracted from executing the Stories component. + */ +export interface Meta { + name: string; + component: any; + parameters: any; +} diff --git a/src/plugins/vite-svelte-csf.ts b/src/plugins/vite-svelte-csf.ts index 968a17f..182d264 100644 --- a/src/plugins/vite-svelte-csf.ts +++ b/src/plugins/vite-svelte-csf.ts @@ -42,10 +42,12 @@ export default function csfPlugin(svelteOptions) { .filter(([, def]) => !def.template) .map(([storyId]) => storyId); + const metaExported = code.includes('export { meta }'); + s.replace('export { meta };', '// export { meta };'); const output = [ '', `import parser from '${parser}';`, - `const __storiesMetaData = parser(${component}, ${JSON.stringify(all)});`, + `const __storiesMetaData = parser(${component}, ${JSON.stringify(all)}${metaExported ? ', meta' : ''});`, 'export default __storiesMetaData.meta;', `export const __namedExportsOrder = ${JSON.stringify(namedExportsOrder)};`, storyDef, diff --git a/src/preset/index.ts b/src/preset/index.ts index 8ba55d2..c3b988b 100644 --- a/src/preset/index.ts +++ b/src/preset/index.ts @@ -1,5 +1,5 @@ import { fileURLToPath } from 'url'; -import { svelteIndexer } from './indexer.js'; +import { svelteIndexer, createIndex } from './indexer.js'; export function managerEntries(entry = []) { return [ @@ -56,12 +56,29 @@ export async function viteFinal(config, options) { }; } +/** + * Storybook < 7.4 + */ export const storyIndexers = async (indexers) => { return [ { - test: /\.stories\.svelte$/, + test: /\.svelte$/, indexer: svelteIndexer, }, ...(indexers || []), ]; }; + +/** + * Storybook >= 7.4 + */ +export const experimental_indexers = (indexers) => { + + return [ + { + test: /\.svelte$/, + createIndex, + }, + ...(indexers || []), + ]; +} \ No newline at end of file diff --git a/src/preset/indexer.ts b/src/preset/indexer.ts index 4dcdc4b..c8ad9fe 100644 --- a/src/preset/indexer.ts +++ b/src/preset/indexer.ts @@ -3,8 +3,10 @@ import * as svelte from 'svelte/compiler'; import { extractStories } from '../parser/extract-stories.js'; import fs from 'fs-extra'; import { loadSvelteConfig } from '../config-loader.js'; +import { storyNameFromExport, toId } from '@storybook/csf'; +import { IndexInput, IndexedCSFFile, IndexerOptions } from '@storybook/types'; -export async function svelteIndexer(fileName, { makeTitle }) { +export async function readStories(fileName: string) { let code = (await fs.readFile(fileName, 'utf-8')).toString(); const svelteOptions = await loadSvelteConfig(); @@ -12,15 +14,48 @@ export async function svelteIndexer(fileName, { makeTitle }) { code = (await svelte.preprocess(code, svelteOptions.preprocess, { filename: fileName })).code; } - const defs = extractStories(code); + return extractStories(code); +} + +/** + * Indexer for Storybook < 7.4 + */ +export async function svelteIndexer( + fileName: string, + { makeTitle }: IndexerOptions +): Promise { + const defs = await readStories(fileName); + + const meta = { ...defs.meta, title: makeTitle(defs.meta.title) }; return { - meta: { title: makeTitle(defs.meta.title) }, + meta, stories: Object.entries(defs.stories) - .filter(([id, story]) => !story.template) + .filter(([, story]) => !story.template) .map(([id, story]) => ({ - id: story.storyId, + id: toId(meta.id || meta.title || id, storyNameFromExport(id)), name: story.name, })), }; } + +/** + * Indexer for Storybook >= 7.4 + */ +export async function createIndex( + fileName: string, + { makeTitle }: IndexerOptions +): Promise { + const defs = await readStories(fileName); + + return Object.entries(defs.stories) + .filter(([, story]) => !story.template) + .map(([id, story]) => ({ + type: 'story', + importPath: fileName, + exportName: id, + name: story.name, + title: makeTitle(defs.meta.title), + tags: defs.meta.tags, + })); +} diff --git a/stories/button.stories.svelte b/stories/button.stories.svelte index bf204bd..7f529fa 100644 --- a/stories/button.stories.svelte +++ b/stories/button.stories.svelte @@ -9,10 +9,11 @@ } - + + diff --git a/stories/metaexport.stories.svelte b/stories/metaexport.stories.svelte new file mode 100644 index 0000000..4780ab8 --- /dev/null +++ b/stories/metaexport.stories.svelte @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/stories/metaexport_override_descr.stories.svelte b/stories/metaexport_override_descr.stories.svelte new file mode 100644 index 0000000..2ad110c --- /dev/null +++ b/stories/metaexport_override_descr.stories.svelte @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/stories/metaexport_without_descr.stories.svelte b/stories/metaexport_without_descr.stories.svelte new file mode 100644 index 0000000..cc7567f --- /dev/null +++ b/stories/metaexport_without_descr.stories.svelte @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 22e7d50..25930b8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,7 +7,7 @@ "experimentalDecorators": true, "incremental": false, "isolatedModules": true, - "lib": ["esnext"], + "lib": ["esnext", "dom"], "module": "es2020", "moduleResolution": "nodenext", "noImplicitAny": false, @@ -17,4 +17,4 @@ "strict": true }, "include": ["src/**/*"] -} \ No newline at end of file +}