diff --git a/.changeset/shiny-sloths-drum.md b/.changeset/shiny-sloths-drum.md new file mode 100644 index 0000000000..1ecb23204f --- /dev/null +++ b/.changeset/shiny-sloths-drum.md @@ -0,0 +1,9 @@ +--- +'@web/mocks': major +'@web/storybook-addon-mocks': major +'@web/storybook-builder': minor +'@web/storybook-framework-web-components': minor +'@web/storybook-utils': major +--- + +Migrate projects to Storybook 9 diff --git a/docs/docs/storybook-builder/migration-to-storybook-7.md b/docs/docs/storybook-builder/migration-to-storybook-7.md index 00b60ecd87..fe9eca85cf 100644 --- a/docs/docs/storybook-builder/migration-to-storybook-7.md +++ b/docs/docs/storybook-builder/migration-to-storybook-7.md @@ -1,4 +1,4 @@ -# Storybook Builder >> Migration to Storybook 7 ||5 +# Storybook Builder >> Migration to Storybook 7 ||6 This guide explains how to migrate from [`@web/dev-server-storybook` plugin](../dev-server/plugins/storybook.md) (that used opinionated Storybook 6 bundle `@web/storybook-prebuilt`) to Storybook 7 and new `@web/storybook-builder`. diff --git a/docs/docs/storybook-builder/migration-to-storybook-8.md b/docs/docs/storybook-builder/migration-to-storybook-8.md index 25cd14682a..4060bc7915 100644 --- a/docs/docs/storybook-builder/migration-to-storybook-8.md +++ b/docs/docs/storybook-builder/migration-to-storybook-8.md @@ -1,4 +1,4 @@ -# Storybook Builder >> Migration from Storybook 7 to 8 ||4 +# Storybook Builder >> Migration from Storybook 7 to 8 ||5 ## Update dependencies @@ -11,7 +11,7 @@ You need to: ## General migration guide -Make sure to follow the [Storybook's own migration guide](https://storybook.js.org/docs/migration-guide). +Make sure to follow the [Storybook's own migration guide](https://storybook.js.org/docs/8/migration-guide). We recommend to read it carefully, even though big part of it is not directly related to `@web/storybook-builder` or `@web/storybook-framework-web-components`, many small details are too easy to miss, so go through it step by step. ## Specific migration notes diff --git a/docs/docs/storybook-builder/migration-to-storybook-9.md b/docs/docs/storybook-builder/migration-to-storybook-9.md new file mode 100644 index 0000000000..611caa32f3 --- /dev/null +++ b/docs/docs/storybook-builder/migration-to-storybook-9.md @@ -0,0 +1,27 @@ +# Storybook Builder >> Migration from Storybook 8 to 9 ||4 + +## Update dependencies + +`@web/storybook-builder` for Storybook 9 is released as version `0.3.x` and expects all Storybook packages to be at least `9.1.20`. + +You need to: + +- update `@web/storybook-builder` and `@web/storybook-framework-web-components` to `^0.3.0` +- remove outdated `@storybook/*` packages (see links below for more info) + - most common ones to remove are `@storybook/addon-essentials`, `@storybook/addon-interactions`, `@storybook/blocks`, `@storybook/test` + - most common one to add is `@storybook/addon-docs` +- update dependencies under the namespace `@storybook/*` and the `storybook` itself to `^9.1.20` + +## General migration guide + +Make sure to follow the [Storybook's own migration guide](https://storybook.js.org/docs/releases/migration-guide-from-older-version) and look into more [detailed migration notes on GitHub](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#from-version-8x-to-900). + +We recommend to read all of it carefully, many small details are too easy to miss, so go through it step by step. +Some changes will be Vite/Webpack specific and unrelated to `@web/storybook-builder` or `@web/storybook-framework-web-components`, skip them. + +## Specific migration notes + +A few dependencies might need to be updated, only if you use them: + +- update `@web/mocks` to `^2.0.0` and follow [it's migration guide](https://github.com/modernweb-dev/web/blob/master/packages/mocks/MIGRATION.md) +- update `@web/storybook-utils` to `^2.0.0` diff --git a/docs/docs/storybook-builder/overview.md b/docs/docs/storybook-builder/overview.md index 22b6c9dd6e..10a8033b07 100644 --- a/docs/docs/storybook-builder/overview.md +++ b/docs/docs/storybook-builder/overview.md @@ -31,6 +31,11 @@ Then proceed to the [Configuration](./configuration.md). ## Storybook versions +Storybook 9 is supported by: + +- `@web/storybook-builder@0.3.x` +- `@web/storybook-framework-web-components@0.3.x` + Storybook 8 is supported by: - `@web/storybook-builder@0.2.x` diff --git a/package-lock.json b/package-lock.json index 1c36a09a8d..993008b71a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -308,10 +308,9 @@ } }, "node_modules/@adobe/css-tools": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.2.tgz", - "integrity": "sha512-baYZExFpsdkBNuvGKTKWCwKH57HRZLVtycZS05WTQNVOiXVSeAki3nU35zlRbToeMW8aHlJfyS+1C4BOv27q0A==", - "dev": true, + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.4.tgz", + "integrity": "sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==", "license": "MIT" }, "node_modules/@ampproject/remapping": { @@ -1965,38 +1964,11 @@ "node": ">=6.9.0" } }, - "node_modules/@bundled-es-modules/cookie": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@bundled-es-modules/cookie/-/cookie-2.0.1.tgz", - "integrity": "sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw==", - "license": "ISC", - "dependencies": { - "cookie": "^0.7.2" - } - }, "node_modules/@bundled-es-modules/message-format": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/@bundled-es-modules/message-format/-/message-format-6.0.4.tgz", "integrity": "sha512-NGUoPxqsBzDwvRhY3A3L/AhS1hzS9OWappfyDOyCwE7G3W4ua28gau7QwvJz7QzA6ArbAdeb8c1mLjvd1WUFAA==" }, - "node_modules/@bundled-es-modules/statuses": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@bundled-es-modules/statuses/-/statuses-1.0.1.tgz", - "integrity": "sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==", - "license": "ISC", - "dependencies": { - "statuses": "^2.0.1" - } - }, - "node_modules/@bundled-es-modules/tough-cookie": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@bundled-es-modules/tough-cookie/-/tough-cookie-0.1.6.tgz", - "integrity": "sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==", - "dependencies": { - "@types/tough-cookie": "^4.0.5", - "tough-cookie": "^4.1.4" - } - }, "node_modules/@changesets/apply-release-plan": { "version": "7.0.7", "resolved": "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-7.0.7.tgz", @@ -2257,9 +2229,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", - "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", "cpu": [ "ppc64" ], @@ -2273,9 +2245,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", - "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", "cpu": [ "arm" ], @@ -2289,9 +2261,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", - "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", "cpu": [ "arm64" ], @@ -2305,9 +2277,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", - "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", "cpu": [ "x64" ], @@ -2321,9 +2293,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", - "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", "cpu": [ "arm64" ], @@ -2337,9 +2309,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", - "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", "cpu": [ "x64" ], @@ -2353,9 +2325,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", - "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", "cpu": [ "arm64" ], @@ -2369,9 +2341,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", - "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", "cpu": [ "x64" ], @@ -2385,9 +2357,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", - "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", "cpu": [ "arm" ], @@ -2401,9 +2373,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", - "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", "cpu": [ "arm64" ], @@ -2417,9 +2389,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", - "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", "cpu": [ "ia32" ], @@ -2433,9 +2405,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", - "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", "cpu": [ "loong64" ], @@ -2449,9 +2421,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", - "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", "cpu": [ "mips64el" ], @@ -2465,9 +2437,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", - "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", "cpu": [ "ppc64" ], @@ -2481,9 +2453,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", - "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", "cpu": [ "riscv64" ], @@ -2497,9 +2469,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", - "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", "cpu": [ "s390x" ], @@ -2513,9 +2485,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", - "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", "cpu": [ "x64" ], @@ -2529,9 +2501,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", - "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", "cpu": [ "arm64" ], @@ -2545,9 +2517,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", - "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", "cpu": [ "x64" ], @@ -2561,9 +2533,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", - "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", "cpu": [ "arm64" ], @@ -2577,9 +2549,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", - "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", "cpu": [ "x64" ], @@ -2609,9 +2581,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", - "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", "cpu": [ "x64" ], @@ -2625,9 +2597,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", - "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", "cpu": [ "arm64" ], @@ -2641,9 +2613,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", - "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", "cpu": [ "ia32" ], @@ -2657,9 +2629,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", - "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", "cpu": [ "x64" ], @@ -2833,45 +2805,68 @@ "integrity": "sha512-tWZNBIS1CoekcwlMuyG2mr0a1Wo5lb5lEHwwWvZo+5GLgr3e9LLDTtmgtCWEwBpXMkxn9D+2W9j2FY6eZQq0tA==", "license": "MIT" }, + "node_modules/@inquirer/ansi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", + "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/@inquirer/confirm": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.2.0.tgz", - "integrity": "sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==", + "version": "5.1.21", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", + "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", + "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/type": "^1.5.3" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@inquirer/core": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.1.0.tgz", - "integrity": "sha512-RZVfH//2ytTjmaBIzeKT1zefcQZzuruwkpTwwbe/i2jTl4o9M+iML5ChULzz6iw1Ok8iUBBsRCjY2IEbD8Ft4w==", - "dependencies": { - "@inquirer/figures": "^1.0.5", - "@inquirer/type": "^1.5.3", - "@types/mute-stream": "^0.0.4", - "@types/node": "^22.5.2", - "@types/wrap-ansi": "^3.0.0", - "ansi-escapes": "^4.3.2", - "cli-spinners": "^2.9.2", + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", + "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", "cli-width": "^4.1.0", - "mute-stream": "^1.0.0", + "mute-stream": "^2.0.0", "signal-exit": "^4.1.0", - "strip-ansi": "^6.0.1", "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.2" + "yoctocolors-cjs": "^2.1.3" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@inquirer/core/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -2882,18 +2877,11 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@inquirer/core/node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", - "engines": { - "node": ">= 12" - } - }, "node_modules/@inquirer/core/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -2904,33 +2892,29 @@ "node_modules/@inquirer/core/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" }, "node_modules/@inquirer/core/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" }, "node_modules/@inquirer/core/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@inquirer/core/node_modules/mute-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/@inquirer/core/node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", "engines": { "node": ">=14" }, @@ -2942,6 +2926,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -2955,6 +2940,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -2965,51 +2951,29 @@ } }, "node_modules/@inquirer/figures": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.5.tgz", - "integrity": "sha512-79hP/VWdZ2UVc9bFGJnoQ/lQMpL74mGgzSYX1xUqCVk7/v73vJCMw1VuyWN1jGkZ9B3z7THAbySqGbCNefcjfA==", + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", + "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", + "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/@inquirer/type": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.5.3.tgz", - "integrity": "sha512-xUQ14WQGR/HK5ei+2CvgcwoH9fQ4PgPGmVFSN0pc1+fVyDL3MREhyAY7nxEErSu6CkllBM3D7e3e+kOvtu+eIg==", - "dependencies": { - "mute-stream": "^1.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@inquirer/type/node_modules/mute-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", + "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", "license": "MIT", "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", - "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" + "node": ">=18" }, - "engines": { - "node": "20 || >=22" + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@isaacs/cliui": { @@ -3272,9 +3236,9 @@ } }, "node_modules/@lit-labs/ssr-dom-shim": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.1.tgz", - "integrity": "sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.5.1.tgz", + "integrity": "sha512-Aou5UdlSpr5whQe8AA/bZG0jMj96CoJIWbGfZ91qieWu5AWUMKw8VR/pAkQkJYvBNhmCcWnZlyyk5oze8JIqYA==", "license": "BSD-3-Clause" }, "node_modules/@lit/reactive-element": { @@ -3412,9 +3376,9 @@ "license": "CC0-1.0" }, "node_modules/@mdx-js/react": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.0.tgz", - "integrity": "sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.1.tgz", + "integrity": "sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==", "dev": true, "license": "MIT", "dependencies": { @@ -3429,6 +3393,23 @@ "react": ">=16" } }, + "node_modules/@mswjs/interceptors": { + "version": "0.41.3", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.41.3.tgz", + "integrity": "sha512-cXu86tF4VQVfwz8W1SPbhoRyHJkti6mjH/XJIxp40jhO4j2k1m4KYrEykxqWPkFF3vrK4rgQppBh//AwyGSXPA==", + "license": "MIT", + "dependencies": { + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/logger": "^0.3.0", + "@open-draft/until": "^2.0.0", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "strict-event-emitter": "^0.5.1" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3598,7 +3579,8 @@ "node_modules/@open-draft/deferred-promise": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", - "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==" + "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", + "license": "MIT" }, "node_modules/@open-draft/logger": { "version": "0.3.0", @@ -5094,15 +5076,13 @@ "license": "MIT" }, "node_modules/@storybook/addon-a11y": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-8.6.12.tgz", - "integrity": "sha512-H28zHiL8uuv29XsVNf9VjNWsCeht/l66GPYHT7aom1jh+f3fS9+sutrCGEBC/T7cnRpy8ZyuHCtihUqS+RI4pg==", + "version": "9.1.20", + "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-9.1.20.tgz", + "integrity": "sha512-VFZ34y4ApmFwIzPRs2OJrG6jtYhM5y91eCZLTlR/HMGQciKF4TdOJHjj+5vf91SOER5UDcLizXetpiUowiZSgw==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/addon-highlight": "8.6.12", "@storybook/global": "^5.0.0", - "@storybook/test": "8.6.12", "axe-core": "^4.2.0" }, "funding": { @@ -5110,178 +5090,22 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.12" - } - }, - "node_modules/@storybook/addon-actions": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.6.12.tgz", - "integrity": "sha512-B5kfiRvi35oJ0NIo53CGH66H471A3XTzrfaa6SxXEJsgxxSeKScG5YeXcCvLiZfvANRQ7QDsmzPUgg0o3hdMXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "@types/uuid": "^9.0.1", - "dequal": "^2.0.2", - "polished": "^4.2.2", - "uuid": "^9.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.12" - } - }, - "node_modules/@storybook/addon-backgrounds": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.6.12.tgz", - "integrity": "sha512-lmIAma9BiiCTbJ8YfdZkXjpnAIrOUcgboLkt1f6XJ78vNEMnLNzD9gnh7Tssz1qrqvm34v9daDjIb+ggdiKp3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "memoizerific": "^1.11.3", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.12" - } - }, - "node_modules/@storybook/addon-controls": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.6.12.tgz", - "integrity": "sha512-9VSRPJWQVb9wLp21uvpxDGNctYptyUX0gbvxIWOHMH3R2DslSoq41lsC/oQ4l4zSHVdL+nq8sCTkhBxIsjKqdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "dequal": "^2.0.2", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.12" + "storybook": "^9.1.20" } }, "node_modules/@storybook/addon-docs": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.6.12.tgz", - "integrity": "sha512-kEezQjAf/p3SpDzLABgg4fbT48B6dkT2LiZCKTRmCrJVtuReaAr4R9MMM6Jsph6XjbIj/SvOWf3CMeOPXOs9sg==", + "version": "9.1.20", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-9.1.20.tgz", + "integrity": "sha512-eUIOd4u/p9994Nkv8Avn6r/xmS7D+RNmhmu6KGROefN3myLe3JfhSdimal2wDFe/h/OUNZ/LVVKMZrya9oEfKQ==", "dev": true, "license": "MIT", "dependencies": { "@mdx-js/react": "^3.0.0", - "@storybook/blocks": "8.6.12", - "@storybook/csf-plugin": "8.6.12", - "@storybook/react-dom-shim": "8.6.12", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.12" - } - }, - "node_modules/@storybook/addon-docs/node_modules/@storybook/blocks": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.6.12.tgz", - "integrity": "sha512-DohlTq6HM1jDbHYiXL4ZvZ00VkhpUp5uftzj/CZDLY1fYHRjqtaTwWm2/OpceivMA8zDitLcq5atEZN+f+siTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/icons": "^1.2.12", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { + "@storybook/csf-plugin": "9.1.20", + "@storybook/icons": "^1.4.0", + "@storybook/react-dom-shim": "9.1.20", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "storybook": "^8.6.12" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } - } - }, - "node_modules/@storybook/addon-docs/node_modules/@storybook/icons": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-1.4.0.tgz", - "integrity": "sha512-Td73IeJxOyalzvjQL+JXx72jlIYHgs+REaHiREOqfpo3A2AYYG71AUbcv+lg7mEDIweKVCxsMQ0UKo634c8XeA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta" - } - }, - "node_modules/@storybook/addon-docs/node_modules/@storybook/react-dom-shim": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.6.12.tgz", - "integrity": "sha512-51QvoimkBzYs8s3rCYnY5h0cFqLz/Mh0vRcughwYaXckWzDBV8l67WBO5Xf5nBsukCbWyqBVPpEQLww8s7mrLA==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.6.12" - } - }, - "node_modules/@storybook/addon-docs/node_modules/react-dom": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", - "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "scheduler": "^0.26.0" - }, - "peerDependencies": { - "react": "^19.1.0" - } - }, - "node_modules/@storybook/addon-essentials": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.6.12.tgz", - "integrity": "sha512-Y/7e8KFlttaNfv7q2zoHMPdX6hPXHdsuQMAjYl5NG9HOAJREu4XBy4KZpbcozRe4ApZ78rYsN/MO1EuA+bNMIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/addon-actions": "8.6.12", - "@storybook/addon-backgrounds": "8.6.12", - "@storybook/addon-controls": "8.6.12", - "@storybook/addon-docs": "8.6.12", - "@storybook/addon-highlight": "8.6.12", - "@storybook/addon-measure": "8.6.12", - "@storybook/addon-outline": "8.6.12", - "@storybook/addon-toolbars": "8.6.12", - "@storybook/addon-viewport": "8.6.12", "ts-dedent": "^2.0.0" }, "funding": { @@ -5289,56 +5113,17 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.12" - } - }, - "node_modules/@storybook/addon-highlight": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.6.12.tgz", - "integrity": "sha512-9FITVxdoycZ+eXuAZL9ElWyML/0fPPn9UgnnAkrU7zkMi+Segq/Tx7y+WWanC5zfWZrXAuG6WTOYEXeWQdm//w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.12" - } - }, - "node_modules/@storybook/addon-interactions": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.6.12.tgz", - "integrity": "sha512-cTAJlTq6uVZBEbtwdXkXoPQ4jHOAGKQnYSezBT4pfNkdjn/FnEeaQhMBDzf14h2wr5OgBnJa6Lmd8LD9ficz4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.6.12", - "@storybook/test": "8.6.12", - "polished": "^4.2.2", - "ts-dedent": "^2.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.12" + "storybook": "^9.1.20" } }, "node_modules/@storybook/addon-links": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.6.12.tgz", - "integrity": "sha512-AfKujFHoAxhxq4yu+6NwylltS9lf5MPs1eLLXvOlwo3l7Y/c68OdxJ7j68vLQhs9H173WVYjKyjbjFxJWf/YYg==", + "version": "9.1.20", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-9.1.20.tgz", + "integrity": "sha512-/fFOqTZQ0Q5JmSAVlyfEFRa0W3hAh2u7kg+OQRLVxvNZVVuW50mOxE3853tAqisw9UX8TOCN6ZflFBeeoGLYfg==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/global": "^5.0.0", - "ts-dedent": "^2.0.0" + "@storybook/global": "^5.0.0" }, "funding": { "type": "opencollective", @@ -5346,7 +5131,7 @@ }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.6.12" + "storybook": "^9.1.20" }, "peerDependenciesMeta": { "react": { @@ -5354,181 +5139,10 @@ } } }, - "node_modules/@storybook/addon-measure": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.6.12.tgz", - "integrity": "sha512-tACmwqqOvutaQSduw8SMb62wICaT1rWaHtMN3vtWXuxgDPSdJQxLP+wdVyRYMAgpxhLyIO7YRf++Hfha9RHgFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "tiny-invariant": "^1.3.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.12" - } - }, - "node_modules/@storybook/addon-outline": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.6.12.tgz", - "integrity": "sha512-1ylwm+n1s40S91No0v9T4tCjZORu3GbnjINlyjYTDLLhQHyBQd3nWR1Y1eewU4xH4cW9SnSLcMQFS/82xHqU6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.12" - } - }, - "node_modules/@storybook/addon-toolbars": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.6.12.tgz", - "integrity": "sha512-HEcSzo1DyFtIu5/ikVOmh5h85C1IvK9iFKSzBR6ice33zBOaehVJK+Z5f487MOXxPsZ63uvWUytwPyViGInj+g==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.12" - } - }, - "node_modules/@storybook/addon-viewport": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.6.12.tgz", - "integrity": "sha512-EXK2LArAnABsPP0leJKy78L/lbMWow+EIJfytEP5fHaW4EhMR6h7Hzaqzre6U0IMMr/jVFa1ci+m0PJ0eQc2bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "memoizerific": "^1.11.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.12" - } - }, - "node_modules/@storybook/components": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.6.12.tgz", - "integrity": "sha512-FiaE8xvCdvKC2arYusgtlDNZ77b8ysr8njAYQZwwaIHjy27TbR2tEpLDCmUwSbANNmivtc/xGEiDDwcNppMWlQ==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" - } - }, - "node_modules/@storybook/core": { - "version": "8.6.15", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.6.15.tgz", - "integrity": "sha512-VFpKcphNurJpSC4fpUfKL3GTXVoL53oytghGR30QIw5jKWwaT50HVbTyb41BLOUuZjmMhUQA8weiQEew6RX0gw==", - "license": "MIT", - "dependencies": { - "@storybook/theming": "8.6.15", - "better-opn": "^3.0.2", - "browser-assert": "^1.2.1", - "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0", - "esbuild-register": "^3.5.0", - "jsdoc-type-pratt-parser": "^4.0.0", - "process": "^0.11.10", - "recast": "^0.23.5", - "semver": "^7.6.2", - "util": "^0.12.5", - "ws": "^8.2.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "prettier": "^2 || ^3" - }, - "peerDependenciesMeta": { - "prettier": { - "optional": true - } - } - }, - "node_modules/@storybook/core-common": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-8.6.12.tgz", - "integrity": "sha512-EuAGaoxWCORBMWv/sA55treXuOjtinCFGlZp1Dr8PW56DLauNR5zVNsU/L/ngJt22hoHcBwf4ppuTUPbOjZcpw==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" - } - }, - "node_modules/@storybook/core-events": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.6.12.tgz", - "integrity": "sha512-j2MUlSfYOhTsjlruRWTqSVwYreJGFIsWeqHFAhCdtmXe3qpFBM/LuxTKuaM1uWvs6vEAyGEzDw8+DXwuO6uISg==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" - } - }, - "node_modules/@storybook/core/node_modules/@storybook/theming": { - "version": "8.6.15", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.6.15.tgz", - "integrity": "sha512-dAbL0XOekyT6XsF49R6Etj3WxQ/LpdJDIswUUeHgVJ6/yd2opZOGbPxnwA3zlmAh1c0tvpPyhSDXxSG79u8e4Q==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" - } - }, - "node_modules/@storybook/core/node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/@storybook/csf-plugin": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.6.12.tgz", - "integrity": "sha512-6s8CnP1aoKPb3XtC0jRLUp8M5vTA8RhGAwQDKUsFpCC7g89JR9CaKs9FY2ZSzsNbjR15uASi7b3K8BzeYumYQg==", + "version": "9.1.20", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-9.1.20.tgz", + "integrity": "sha512-HHgk50YQhML7mT01Mzf9N7lNMFHWN4HwwRP90kPT9Ct+Jhx7h3LBDbdmWjI96HwujcpY7eoYdTfpB1Sw8Z7nBQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5539,7 +5153,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.12" + "storybook": "^9.1.20" } }, "node_modules/@storybook/global": { @@ -5548,116 +5162,24 @@ "integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==", "license": "MIT" }, - "node_modules/@storybook/instrumenter": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.6.12.tgz", - "integrity": "sha512-VK5fYAF8jMwWP/u3YsmSwKGh+FeSY8WZn78flzRUwirp2Eg1WWjsqPRubAk7yTpcqcC/km9YMF3KbqfzRv2s/A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "@vitest/utils": "^2.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.12" - } - }, - "node_modules/@storybook/manager-api": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.6.12.tgz", - "integrity": "sha512-O0SpISeJLNTQvhSBOsWzzkCgs8vCjOq1578rwqHlC6jWWm4QmtfdyXqnv7rR1Hk08kQ+Dzqh0uhwHx0nfwy4nQ==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" - } - }, - "node_modules/@storybook/node-logger": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.6.12.tgz", - "integrity": "sha512-Jk7mQWsu60BptBwYJAd69kMmsEqBAbGDuA/fqban+8vfNiSKgR3PRkhis0DsGEk53bpAEfbkCcyvYRCrrq4M3Q==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" - } - }, - "node_modules/@storybook/preview": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-8.6.12.tgz", - "integrity": "sha512-w7lLOsqyvB4a/I9wPmBDYDDGmhqWWaOa5DcxTgaIInoVucK6bI1ZNqHlD+8xQkFmlCWOncVEhXydF1w5nyR68w==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" - } - }, - "node_modules/@storybook/preview-api": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.6.12.tgz", - "integrity": "sha512-84FE3Hrs0AYKHqpDZOwx1S/ffOfxBdL65lhCoeI8GoWwCkzwa9zEP3kvXBo/BnEDO7nAfxvMhjASTZXbKRJh5Q==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" - } - }, - "node_modules/@storybook/test": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.6.12.tgz", - "integrity": "sha512-0BK1Eg+VD0lNMB1BtxqHE3tP9FdkUmohtvWG7cq6lWvMrbCmAmh3VWai3RMCCDOukPFpjabOr8BBRLVvhNpv2w==", + "node_modules/@storybook/icons": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-1.6.0.tgz", + "integrity": "sha512-hcFZIjW8yQz8O8//2WTIXylm5Xsgc+lW9ISLgUk1xGmptIJQRdlhVIXCpSyLrQaaRiyhQRaVg7l3BD9S216BHw==", "dev": true, "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.6.12", - "@testing-library/dom": "10.4.0", - "@testing-library/jest-dom": "6.5.0", - "@testing-library/user-event": "14.5.2", - "@vitest/expect": "2.0.5", - "@vitest/spy": "2.0.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.12" - } - }, - "node_modules/@storybook/theming": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.6.12.tgz", - "integrity": "sha512-6VjZg8HJ2Op7+KV7ihJpYrDnFtd9D1jrQnUS8LckcpuBXrIEbaut5+34ObY8ssQnSqkk2GwIZBBBQYQBCVvkOw==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">=14.0.0" }, "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta" } }, - "node_modules/@storybook/types": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.6.12.tgz", - "integrity": "sha512-G/nR+js7KV1qKH3nAcOfwceERBic5e03dpkeA6PDmqBiQ8XeM9B6N4NTMhXi/2gM5ZAGJ+NxJMaW6zLnc32DjA==", + "node_modules/@storybook/react-dom-shim": { + "version": "9.1.20", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-9.1.20.tgz", + "integrity": "sha512-UYdZavfPwHEqCKMqPssUOlyFVZiJExLxnSHwkICSZBmw3gxXJcp1aXWs7PvoZdWz2K4ztl3IcKErXXHeiY6w+A==", "dev": true, "license": "MIT", "funding": { @@ -5665,25 +5187,23 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", + "storybook": "^9.1.20" } }, "node_modules/@storybook/web-components": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/web-components/-/web-components-8.6.12.tgz", - "integrity": "sha512-j+609VT8abBlpV+tB/vqSRO/fKA1QpnKWlbE0JpolzmEbgla//pAZomPysoOnvTLL3lSX3conjiAAaTpwbjyLg==", + "version": "9.1.20", + "resolved": "https://registry.npmjs.org/@storybook/web-components/-/web-components-9.1.20.tgz", + "integrity": "sha512-pDQ9ED5wIhPQeOJYv0RPCgLkGiDIKyX+YofQmjqAPIRSs5ewtK8W/ug3HqzggWnx7Fi3L04H81TGALtOU1LQiQ==", "license": "MIT", "dependencies": { - "@storybook/components": "8.6.12", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "8.6.12", - "@storybook/preview-api": "8.6.12", - "@storybook/theming": "8.6.12", "tiny-invariant": "^1.3.1", "ts-dedent": "^2.0.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" }, "funding": { "type": "opencollective", @@ -5691,7 +5211,7 @@ }, "peerDependencies": { "lit": "^2.0.0 || ^3.0.0", - "storybook": "^8.6.12" + "storybook": "^9.1.20" } }, "node_modules/@surma/rollup-plugin-off-main-thread": { @@ -5744,114 +5264,36 @@ } }, "node_modules/@testing-library/dom": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", - "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", - "dev": true, + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", + "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", "aria-query": "5.3.0", - "chalk": "^4.1.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", + "picocolors": "1.1.1", "pretty-format": "^27.0.2" }, "engines": { "node": ">=18" } }, - "node_modules/@testing-library/dom/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@testing-library/dom/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@testing-library/dom/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@testing-library/dom/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@testing-library/dom/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/dom/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@testing-library/jest-dom": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.5.0.tgz", - "integrity": "sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==", - "dev": true, + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.9.1.tgz", + "integrity": "sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==", "license": "MIT", "dependencies": { "@adobe/css-tools": "^4.4.0", "aria-query": "^5.0.0", - "chalk": "^3.0.0", "css.escape": "^1.5.1", "dom-accessibility-api": "^0.6.3", - "lodash": "^4.17.21", + "picocolors": "^1.1.1", "redent": "^3.0.0" }, "engines": { @@ -5860,91 +5302,16 @@ "yarn": ">=1" } }, - "node_modules/@testing-library/jest-dom/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", - "dev": true, "license": "MIT" }, - "node_modules/@testing-library/jest-dom/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@testing-library/user-event": { - "version": "14.5.2", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", - "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", - "dev": true, + "version": "14.6.1", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.6.1.tgz", + "integrity": "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==", "license": "MIT", "engines": { "node": ">=12", @@ -6020,8 +5387,8 @@ "version": "5.0.4", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", - "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/babel__code-frame": { "version": "7.0.3", @@ -6243,6 +5610,12 @@ "@types/ms": "*" } }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "license": "MIT" + }, "node_modules/@types/diff": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/@types/diff/-/diff-5.0.3.tgz", @@ -6529,14 +5902,6 @@ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", "license": "MIT" }, - "node_modules/@types/mute-stream": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz", - "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/nlcst": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-1.0.1.tgz", @@ -6624,14 +5989,14 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "19.1.4", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.4.tgz", - "integrity": "sha512-EB1yiiYdvySuIITtD5lhW4yPyJ31RkJkkDw794LaQYrxCSaQV/47y5o1FMC4zF9ZyjUjzJMZwbovEnT5yHTW6g==", + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "csstype": "^3.0.2" + "csstype": "^3.2.2" } }, "node_modules/@types/resolve": { @@ -6703,6 +6068,12 @@ "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==", "license": "MIT" }, + "node_modules/@types/statuses": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.6.tgz", + "integrity": "sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==", + "license": "MIT" + }, "node_modules/@types/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.1.tgz", @@ -6710,11 +6081,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" - }, "node_modules/@types/trusted-types": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz", @@ -6734,13 +6100,6 @@ "integrity": "sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==", "license": "MIT" }, - "node_modules/@types/uuid": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", - "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/valid-url": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@types/valid-url/-/valid-url-1.0.4.tgz", @@ -6771,11 +6130,6 @@ "integrity": "sha512-113D3mDkZDjo+EeUEHCFy0qniNc1ZpecGiAU7WSo7YDoSzolZIQKpYFHrPpjkB2nuyahcKfrmLXeQlh7gqJYdw==", "license": "MIT" }, - "node_modules/@types/wrap-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", - "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==" - }, "node_modules/@types/ws": { "version": "7.4.7", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", @@ -7007,65 +6361,44 @@ "license": "ISC" }, "node_modules/@vitest/expect": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.5.tgz", - "integrity": "sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "2.0.5", - "@vitest/utils": "2.0.5", - "chai": "^5.1.1", - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/expect/node_modules/@vitest/pretty-format": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.5.tgz", - "integrity": "sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==", - "dev": true, + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", + "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", "license": "MIT", "dependencies": { - "tinyrainbow": "^1.2.0" + "@types/chai": "^5.2.2", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, - "node_modules/@vitest/expect/node_modules/@vitest/utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.5.tgz", - "integrity": "sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==", - "dev": true, + "node_modules/@vitest/expect/node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.0.5", - "estree-walker": "^3.0.3", - "loupe": "^3.1.1", - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" } }, "node_modules/@vitest/expect/node_modules/assertion-error": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", - "dev": true, "license": "MIT", "engines": { "node": ">=12" } }, "node_modules/@vitest/expect/node_modules/chai": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", - "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", - "dev": true, + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", + "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", "license": "MIT", "dependencies": { "assertion-error": "^2.0.1", @@ -7075,14 +6408,13 @@ "pathval": "^2.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@vitest/expect/node_modules/check-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", - "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", - "dev": true, + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz", + "integrity": "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==", "license": "MIT", "engines": { "node": ">= 16" @@ -7092,85 +6424,68 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/@vitest/expect/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, "node_modules/@vitest/expect/node_modules/loupe": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", - "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", - "dev": true, + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", + "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", "license": "MIT" }, "node_modules/@vitest/expect/node_modules/pathval": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", - "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", - "dev": true, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", "license": "MIT", "engines": { "node": ">= 14.16" } }, "node_modules/@vitest/pretty-format": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.9.tgz", - "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==", - "dev": true, + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", + "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", "license": "MIT", "dependencies": { - "tinyrainbow": "^1.2.0" + "tinyrainbow": "^2.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/spy": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.5.tgz", - "integrity": "sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==", - "dev": true, + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", + "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", "license": "MIT", "dependencies": { - "tinyspy": "^3.0.0" + "tinyspy": "^4.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/utils": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.9.tgz", - "integrity": "sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==", - "dev": true, + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", + "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.9", - "loupe": "^3.1.2", - "tinyrainbow": "^1.2.0" + "@vitest/pretty-format": "3.2.4", + "loupe": "^3.1.4", + "tinyrainbow": "^2.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/utils/node_modules/loupe": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", - "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", - "dev": true, + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", + "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", "license": "MIT" }, "node_modules/@wdio/config": { @@ -7487,6 +6802,10 @@ "resolved": "packages/rollup-plugin-polyfills-loader", "link": true }, + "node_modules/@web/storybook-addon-mocks": { + "resolved": "packages/storybook-addon-mocks", + "link": true + }, "node_modules/@web/storybook-builder": { "resolved": "packages/storybook-builder", "link": true @@ -7495,12 +6814,6 @@ "resolved": "packages/storybook-framework-web-components", "link": true }, - "node_modules/@web/storybook-prebuilt": { - "version": "0.1.37", - "resolved": "https://registry.npmjs.org/@web/storybook-prebuilt/-/storybook-prebuilt-0.1.37.tgz", - "integrity": "sha512-je4BAbOJiEjQOkeFJfw+fnezKpU3fQW+5ZTiY24UGB1xPaZfU7ZMrC9tW6699vy/QRVJhiJyQrcIQ35OVSlCQA==", - "license": "MIT" - }, "node_modules/@web/storybook-utils": { "resolved": "packages/storybook-utils", "link": true @@ -9081,9 +8394,9 @@ } }, "node_modules/axe-core": { - "version": "4.10.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", - "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.1.tgz", + "integrity": "sha512-BASOg+YwO2C+346x3LZOeoovTIoTrRqEsqMa6fmfAV0P+U9mFr9NsyOEpiYvFjbc64NMrSswhV50WdXzdb/Z5A==", "dev": true, "license": "MPL-2.0", "engines": { @@ -9589,11 +8902,6 @@ "node": ">=8" } }, - "node_modules/browser-assert": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/browser-assert/-/browser-assert-1.2.1.tgz", - "integrity": "sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==" - }, "node_modules/browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", @@ -10119,22 +9427,6 @@ "node": ">= 0.4" } }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -10887,17 +10179,6 @@ "node": ">=8" } }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cli-truncate": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", @@ -10969,6 +10250,15 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -12003,7 +11293,6 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", - "dev": true, "license": "MIT" }, "node_modules/cssesc": { @@ -12122,9 +11411,9 @@ } }, "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "dev": true, "license": "MIT", "peer": true @@ -12634,8 +11923,8 @@ "version": "0.5.16", "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", - "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/dom-serializer": { "version": "1.4.1", @@ -13473,9 +12762,9 @@ } }, "node_modules/esbuild": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", - "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", "hasInstallScript": true, "license": "MIT", "bin": { @@ -13485,31 +12774,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.0", - "@esbuild/android-arm": "0.25.0", - "@esbuild/android-arm64": "0.25.0", - "@esbuild/android-x64": "0.25.0", - "@esbuild/darwin-arm64": "0.25.0", - "@esbuild/darwin-x64": "0.25.0", - "@esbuild/freebsd-arm64": "0.25.0", - "@esbuild/freebsd-x64": "0.25.0", - "@esbuild/linux-arm": "0.25.0", - "@esbuild/linux-arm64": "0.25.0", - "@esbuild/linux-ia32": "0.25.0", - "@esbuild/linux-loong64": "0.25.0", - "@esbuild/linux-mips64el": "0.25.0", - "@esbuild/linux-ppc64": "0.25.0", - "@esbuild/linux-riscv64": "0.25.0", - "@esbuild/linux-s390x": "0.25.0", - "@esbuild/linux-x64": "0.25.0", - "@esbuild/netbsd-arm64": "0.25.0", - "@esbuild/netbsd-x64": "0.25.0", - "@esbuild/openbsd-arm64": "0.25.0", - "@esbuild/openbsd-x64": "0.25.0", - "@esbuild/sunos-x64": "0.25.0", - "@esbuild/win32-arm64": "0.25.0", - "@esbuild/win32-ia32": "0.25.0", - "@esbuild/win32-x64": "0.25.0" + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" } }, "node_modules/esbuild-register": { @@ -13524,6 +12814,22 @@ "esbuild": ">=0.12 <1" } }, + "node_modules/esbuild/node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -15491,6 +14797,15 @@ "dev": true, "license": "MIT" }, + "node_modules/graphql": { + "version": "16.13.2", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.13.2.tgz", + "integrity": "sha512-5bJ+nf/UCpAjHM8i06fl7eLyVC9iuNAjm9qzkiu2ZGhM0VscSvS6WDPfAwkdkBuoXGM9FJSbKl6wylMwP9Ktig==", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, "node_modules/gray-matter": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", @@ -17154,9 +16469,10 @@ } }, "node_modules/headers-polyfill": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-4.0.2.tgz", - "integrity": "sha512-EWGTfnTqAO2L/j5HZgoM/3z82L7necsJ0pO9Tp0X1wil3PDLrkypTBRgVO2ExehEEvUycejZD3FuRaXpZZc3kw==" + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-4.0.3.tgz", + "integrity": "sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==", + "license": "MIT" }, "node_modules/html-escaper": { "version": "2.0.2", @@ -17610,7 +16926,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -17764,22 +17079,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/is-arguments": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", - "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-array-buffer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", @@ -18728,15 +18027,6 @@ "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", "license": "MIT" }, - "node_modules/jsdoc-type-pratt-parser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.8.0.tgz", - "integrity": "sha512-iZ8Bdb84lWRuGHamRXFyML07r21pcwBrLkHEuHgEY5UbCouBwv7ECknDRKzsQIXMiqpPymqtIf8TC/shYKB5rw==", - "license": "MIT", - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -19928,12 +19218,6 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "license": "MIT" }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "license": "MIT" - }, "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", @@ -20294,8 +19578,8 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", - "dev": true, "license": "MIT", + "peer": true, "bin": { "lz-string": "bin/bin.js" } @@ -20372,13 +19656,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/map-or-similar": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", - "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==", - "dev": true, - "license": "MIT" - }, "node_modules/map-stream": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", @@ -21245,16 +20522,6 @@ "node": ">= 0.6" } }, - "node_modules/memoizerific": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", - "integrity": "sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==", - "dev": true, - "license": "MIT", - "dependencies": { - "map-or-similar": "^1.5.0" - } - }, "node_modules/merge-descriptors": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", @@ -22096,7 +21363,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -22145,10 +21411,10 @@ } }, "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" } @@ -22498,6 +21764,93 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "license": "MIT" }, + "node_modules/msw": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.13.2.tgz", + "integrity": "sha512-go2H1TIERKkC48pXiwec5l6sbNqYuvqOk3/vHGo1Zd+pq/H63oFawDQerH+WQdUw/flJFHDG7F+QdWMwhntA/A==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@inquirer/confirm": "^5.0.0", + "@mswjs/interceptors": "^0.41.2", + "@open-draft/deferred-promise": "^2.2.0", + "@types/statuses": "^2.0.6", + "cookie": "^1.0.2", + "graphql": "^16.12.0", + "headers-polyfill": "^4.0.2", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "path-to-regexp": "^6.3.0", + "picocolors": "^1.1.1", + "rettime": "^0.10.1", + "statuses": "^2.0.2", + "strict-event-emitter": "^0.5.1", + "tough-cookie": "^6.0.0", + "type-fest": "^5.2.0", + "until-async": "^3.0.2", + "yargs": "^17.7.2" + }, + "bin": { + "msw": "cli/index.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/mswjs" + }, + "peerDependencies": { + "typescript": ">= 4.8.x" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/msw/node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/msw/node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "license": "MIT" + }, + "node_modules/msw/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/msw/node_modules/type-fest": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.5.0.tgz", + "integrity": "sha512-PlBfpQwiUvGViBNX84Yxwjsdhd1TUlXr6zjX7eoirtCPIr08NAmxwa+fcYBTeRQxHo9YC9wwF3m9i700sHma8g==", + "license": "(MIT OR CC0-1.0)", + "dependencies": { + "tagged-tag": "^1.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/multimatch": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", @@ -22541,6 +21894,15 @@ "npm": ">=1.4.0" } }, + "node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, "node_modules/nanocolors": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.13.tgz", @@ -23098,9 +22460,9 @@ "dev": true }, "node_modules/outvariant": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.0.tgz", - "integrity": "sha512-AlWY719RF02ujitly7Kk/0QlV+pXGFDHrHf9O2OKqyqgBieaPOIeuSkL8sRK6j2WK+/ZAURq2kZsY0d8JapUiw==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", + "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", "license": "MIT" }, "node_modules/p-cancelable": { @@ -23735,12 +23097,6 @@ "tslib": "^2.0.3" } }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "license": "MIT" - }, "node_modules/path-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", @@ -23998,19 +23354,6 @@ "node": ">=14.19.0" } }, - "node_modules/polished": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/polished/-/polished-4.3.1.tgz", - "integrity": "sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.17.8" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/portfinder": { "version": "1.0.32", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", @@ -24791,8 +24134,8 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", @@ -24806,8 +24149,8 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=10" }, @@ -25022,11 +24365,6 @@ "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", "license": "ISC" }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - }, "node_modules/pug": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.4.tgz", @@ -25277,9 +24615,9 @@ } }, "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "license": "MIT", "engines": { "node": ">=6" @@ -25421,11 +24759,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" - }, "node_modules/queue": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", @@ -25541,21 +24874,34 @@ } }, "node_modules/react": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", - "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", + "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/react-dom": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", + "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.4" + } + }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/read-package-json-fast": { "version": "3.0.2", @@ -26237,7 +25583,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, "license": "MIT", "dependencies": { "indent-string": "^4.0.0", @@ -28719,6 +28064,12 @@ "node": ">= 4" } }, + "node_modules/rettime": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/rettime/-/rettime-0.10.1.tgz", + "integrity": "sha512-uyDrIlUEH37cinabq0AX4QbgV4HbFZ/gqoiunWQ1UqBtRvTTytwhNYjE++pO/MjPTZL5KQCf2bEoJ/BJNVQ5Kw==", + "license": "MIT" + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -29143,9 +28494,9 @@ "license": "MIT" }, "node_modules/scheduler": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", - "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "dev": true, "license": "MIT" }, @@ -30139,9 +29490,9 @@ "license": "MIT" }, "node_modules/sirv": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", - "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", + "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", "license": "MIT", "dependencies": { "@polka/url": "^1.0.0-next.24", @@ -30149,7 +29500,7 @@ "totalist": "^3.0.0" }, "engines": { - "node": ">= 10" + "node": ">=18" } }, "node_modules/slash": { @@ -30674,16 +30025,25 @@ } }, "node_modules/storybook": { - "version": "8.6.15", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.6.15.tgz", - "integrity": "sha512-Ob7DMlwWx8s7dMvcQ3xPc02TvUeralb+xX3oaPRk9wY9Hc6M1IBC/7cEoITkSmRS2v38DHubC+mtEKNc1u2gQg==", + "version": "9.1.20", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-9.1.20.tgz", + "integrity": "sha512-6rME2tww6PFhm96iG2Xx44yzwLDWBiDWy+kJ2ub6x90werSTOiuo+tZJ94BgCfFutR0tEfLRIq59s+Zg6YyChA==", "license": "MIT", "dependencies": { - "@storybook/core": "8.6.15" + "@storybook/global": "^5.0.0", + "@testing-library/jest-dom": "^6.6.3", + "@testing-library/user-event": "^14.6.1", + "@vitest/expect": "3.2.4", + "@vitest/mocker": "3.2.4", + "@vitest/spy": "3.2.4", + "better-opn": "^3.0.2", + "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0", + "esbuild-register": "^3.5.0", + "recast": "^0.23.5", + "semver": "^7.6.2", + "ws": "^8.18.0" }, "bin": { - "getstorybook": "bin/index.cjs", - "sb": "bin/index.cjs", "storybook": "bin/index.cjs" }, "funding": { @@ -30699,6 +30059,62 @@ } } }, + "node_modules/storybook/node_modules/@vitest/mocker": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", + "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.2.4", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/storybook/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/storybook/node_modules/ws": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz", + "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/stream-combiner": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", @@ -30758,7 +30174,8 @@ "node_modules/strict-event-emitter": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", - "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==" + "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", + "license": "MIT" }, "node_modules/strict-uri-encode": { "version": "2.0.0", @@ -31046,7 +30463,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, "license": "MIT", "dependencies": { "min-indent": "^1.0.0" @@ -31208,6 +30624,18 @@ "node": ">=8" } }, + "node_modules/tagged-tag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tagged-tag/-/tagged-tag-1.0.0.tgz", + "integrity": "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/tar-fs": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", @@ -31546,25 +30974,41 @@ "license": "MIT" }, "node_modules/tinyrainbow": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", - "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", - "dev": true, + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", "license": "MIT", "engines": { "node": ">=14.0.0" } }, "node_modules/tinyspy": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", - "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", - "dev": true, + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz", + "integrity": "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==", "license": "MIT", "engines": { "node": ">=14.0.0" } }, + "node_modules/tldts": { + "version": "7.0.28", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.28.tgz", + "integrity": "sha512-+Zg3vWhRUv8B1maGSTFdev9mjoo8Etn2Ayfs4cnjlD3CsGkxXX4QyW3j2WJ0wdjYcYmy7Lx2RDsZMhgCWafKIw==", + "license": "MIT", + "dependencies": { + "tldts-core": "^7.0.28" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "7.0.28", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.28.tgz", + "integrity": "sha512-7W5Efjhsc3chVdFhqtaU0KtK32J37Zcr9RKtID54nG+tIpcY79CQK/veYPODxtD/LJ4Lue66jvrQzIX2Z2/pUQ==", + "license": "MIT" + }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -31645,25 +31089,15 @@ } }, "node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.1.tgz", + "integrity": "sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==", + "license": "BSD-3-Clause", "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" + "tldts": "^7.0.5" }, "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "engines": { - "node": ">= 4.0.0" + "node": ">=16" } }, "node_modules/tr46": { @@ -32661,6 +32095,15 @@ "node": ">=14.0.0" } }, + "node_modules/until-async": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/until-async/-/until-async-3.0.2.tgz", + "integrity": "sha512-IiSk4HlzAMqTUseHHe3VhIGyuFmN90zMTpD3Z3y8jeQbzLIq500MVM7Jq2vUAnTKAFPJrqwkzr6PoTcPhGcOiw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/kettanaito" + } + }, "node_modules/upath": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", @@ -32769,15 +32212,6 @@ "punycode": "^2.1.0" } }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "node_modules/url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", @@ -32815,19 +32249,6 @@ "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", "license": "MIT" }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -32843,20 +32264,6 @@ "node": ">= 0.4.0" } }, - "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/uvu": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", @@ -34573,9 +33980,10 @@ } }, "node_modules/yoctocolors-cjs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", - "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", + "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", + "license": "MIT", "engines": { "node": ">=18" }, @@ -35450,14 +34858,6 @@ } } }, - "packages/dev-server-rollup/node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "engines": { - "node": ">=6" - } - }, "packages/dev-server-rollup/node_modules/slash": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", @@ -35592,174 +34992,13 @@ "version": "1.3.2", "license": "MIT", "dependencies": { - "@storybook/manager-api": "^7.0.0 || ^8.0.0", - "@storybook/preview-api": "^7.0.0 || ^8.0.0", - "@web/storybook-prebuilt": "^0.1.37", - "@web/storybook-utils": "^1.1.1", - "lit": "^2.7.5 || ^3.0.0", - "msw": "2.4.1" + "msw": "2.13.2" }, "devDependencies": { "@web/storybook-builder": "^0.2.2", "@web/storybook-framework-web-components": "^0.2.1" } }, - "packages/mocks/node_modules/@mswjs/interceptors": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.29.1.tgz", - "integrity": "sha512-3rDakgJZ77+RiQUuSK69t1F0m8BQKA8Vh5DCS5V0DWvNY67zob2JhhQrhCO0AKLGINTRSFd1tBaHcJTkhefoSw==", - "dependencies": { - "@open-draft/deferred-promise": "^2.2.0", - "@open-draft/logger": "^0.3.0", - "@open-draft/until": "^2.0.0", - "is-node-process": "^1.2.0", - "outvariant": "^1.2.1", - "strict-event-emitter": "^0.5.1" - }, - "engines": { - "node": ">=18" - } - }, - "packages/mocks/node_modules/@types/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==" - }, - "packages/mocks/node_modules/@types/statuses": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.5.tgz", - "integrity": "sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==" - }, - "packages/mocks/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "packages/mocks/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "packages/mocks/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "packages/mocks/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "packages/mocks/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "packages/mocks/node_modules/msw": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/msw/-/msw-2.4.1.tgz", - "integrity": "sha512-HXcoQPzYTwEmVk+BGIcRa0vLabBT+J20SSSeYh/QfajaK5ceA6dlD4ZZjfz2dqGEq4vRNCPLP6eXsB94KllPFg==", - "hasInstallScript": true, - "dependencies": { - "@bundled-es-modules/cookie": "^2.0.0", - "@bundled-es-modules/statuses": "^1.0.1", - "@bundled-es-modules/tough-cookie": "^0.1.6", - "@inquirer/confirm": "^3.0.0", - "@mswjs/interceptors": "^0.29.0", - "@open-draft/until": "^2.1.0", - "@types/cookie": "^0.6.0", - "@types/statuses": "^2.0.4", - "chalk": "^4.1.2", - "headers-polyfill": "^4.0.2", - "is-node-process": "^1.2.0", - "outvariant": "^1.4.2", - "path-to-regexp": "^6.2.0", - "strict-event-emitter": "^0.5.1", - "type-fest": "^4.9.0", - "yargs": "^17.7.2" - }, - "bin": { - "msw": "cli/index.js" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/mswjs" - }, - "peerDependencies": { - "graphql": ">= 16.8.x", - "typescript": ">= 4.7.x" - }, - "peerDependenciesMeta": { - "graphql": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "packages/mocks/node_modules/outvariant": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", - "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==" - }, - "packages/mocks/node_modules/path-to-regexp": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", - "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==" - }, - "packages/mocks/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "packages/mocks/node_modules/type-fest": { - "version": "4.26.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.0.tgz", - "integrity": "sha512-OduNjVJsFbifKb57UqZ2EMP1i4u64Xwow3NYXUtBbD4vIwJdQd4+xl8YDou1dlm4DVrtwT/7Ky8z8WyCULVfxw==", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "packages/parse5-utils": { "name": "@web/parse5-utils", "version": "2.1.1", @@ -36515,6 +35754,57 @@ "@esbuild/win32-x64": "0.27.3" } }, + "packages/storybook-addon-mocks": { + "name": "@web/storybook-addon-mocks", + "version": "0.0.0", + "license": "MIT", + "dependencies": { + "@web/mocks": "^1.3.2", + "@web/storybook-utils": "^1.1.2", + "lit": "^3.3.2", + "storybook": "^9.1.20" + } + }, + "packages/storybook-addon-mocks/node_modules/@lit/reactive-element": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.1.2.tgz", + "integrity": "sha512-pbCDiVMnne1lYUIaYNN5wrwQXDtHaYtg7YEFPeW+hws6U47WeFvISGUWekPGKWOP1ygrs0ef0o1VJMk1exos5A==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.5.0" + } + }, + "packages/storybook-addon-mocks/node_modules/lit": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.3.2.tgz", + "integrity": "sha512-NF9zbsP79l4ao2SNrH3NkfmFgN/hBYSQo90saIVI1o5GpjAdCPVstVzO1MrLOakHoEhYkrtRjPK6Ob521aoYWQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit/reactive-element": "^2.1.0", + "lit-element": "^4.2.0", + "lit-html": "^3.3.0" + } + }, + "packages/storybook-addon-mocks/node_modules/lit-element": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.2.2.tgz", + "integrity": "sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.5.0", + "@lit/reactive-element": "^2.1.0", + "lit-html": "^3.3.0" + } + }, + "packages/storybook-addon-mocks/node_modules/lit-html": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.3.2.tgz", + "integrity": "sha512-Qy9hU88zcmaxBXcc10ZpdK7cOLXvXpRoBxERdtqV9QOrfpMZZ6pSYP91LhpPtap3sFMUiL7Tw2RImbe0Al2/kw==", + "license": "BSD-3-Clause", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, "packages/storybook-builder": { "name": "@web/storybook-builder", "version": "0.2.6", @@ -36523,34 +35813,25 @@ "@mdx-js/mdx": "^3.0.0", "@rollup/plugin-node-resolve": "^15.1.0", "@rollup/plugin-replace": "^6.0.2", - "@rollup/pluginutils": "^5.0.2", - "@storybook/core-common": "^8.6.12", - "@storybook/node-logger": "^8.6.12", - "@storybook/preview": "^8.6.12", "@web/config-loader": "^0.3.2", "@web/dev-server": "^0.4.0", "@web/dev-server-core": "^0.7.5", "@web/dev-server-rollup": "^0.6.1", "@web/rollup-plugin-html": "^3.0.0", - "browser-assert": "^1.2.1", "cjs-module-lexer": "^1.2.3", "es-module-lexer": "^1.2.1", "esbuild": "^0.27.0", - "glob": "^12.0.0", - "lodash-es": "^4.17.21", - "path-browserify": "^1.0.1", + "glob": "^13.0.0", "rehype-external-links": "^3.0.0", "rehype-slug": "^6.0.0", "rollup": "^4.4.1", "rollup-plugin-external-globals": "^0.9.0", - "sirv": "^2.0.4", - "slash": "^5.1.0" - }, - "devDependencies": { - "@storybook/types": "^8.6.12" + "sirv": "^3.0.2", + "slash": "^5.1.0", + "storybook": "^9.1.20" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "packages/storybook-builder/node_modules/@esbuild/aix-ppc64": { @@ -37023,6 +36304,27 @@ "url": "https://github.com/sponsors/wooorm" } }, + "packages/storybook-builder/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "packages/storybook-builder/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "packages/storybook-builder/node_modules/ccount": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", @@ -37146,22 +36448,6 @@ "@types/estree": "^1.0.0" } }, - "packages/storybook-builder/node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "packages/storybook-builder/node_modules/github-slugger": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", @@ -37169,23 +36455,17 @@ "license": "ISC" }, "packages/storybook-builder/node_modules/glob": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-12.0.0.tgz", - "integrity": "sha512-5Qcll1z7IKgHr5g485ePDdHcNQY0k2dtv/bjYy0iuyGxQw2qSOiiXUXJ+AYQpg3HNoUMHqAruX478Jeev7UULw==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "license": "BlueOak-1.0.0", "dependencies": { - "foreground-child": "^3.3.1", - "jackspeak": "^4.1.1", - "minimatch": "^10.1.1", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -37281,26 +36561,11 @@ "@types/estree": "*" } }, - "packages/storybook-builder/node_modules/jackspeak": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", - "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "packages/storybook-builder/node_modules/lru-cache": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", - "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", - "license": "ISC", + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.3.tgz", + "integrity": "sha512-JvNw9Y81y33E+BEYPr0U7omo+U9AySnsMsEiXgwT6yqd31VQWTLNQqmT4ou5eqPFUrTfIDFta2wKhB1hyohtAQ==", + "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" } @@ -38086,15 +37351,15 @@ "license": "MIT" }, "packages/storybook-builder/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^5.0.5" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -38126,16 +37391,16 @@ "license": "MIT" }, "packages/storybook-builder/node_modules/path-scurry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", - "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -38219,18 +37484,6 @@ "rollup": "^2.25.0 || ^3.3.0 || ^4.1.4" } }, - "packages/storybook-builder/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "packages/storybook-builder/node_modules/slash": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", @@ -38410,80 +37663,22 @@ "version": "0.2.1", "license": "MIT", "dependencies": { - "@storybook/web-components": "^8.6.12", + "@storybook/web-components": "^9.1.20", "@web/storybook-builder": "^0.2.2" }, "devDependencies": { "@playwright/test": "^1.53.0", - "@storybook/addon-a11y": "^8.6.12", - "@storybook/addon-essentials": "^8.6.12", - "@storybook/addon-interactions": "^8.6.12", - "@storybook/addon-links": "^8.6.12", - "@storybook/blocks": "^8.6.12", - "@storybook/types": "^8.6.12", + "@storybook/addon-a11y": "^9.1.20", + "@storybook/addon-docs": "^9.1.20", + "@storybook/addon-links": "^9.1.20", "@web/dev-server": "^0.4.0", "@web/rollup-plugin-import-meta-assets": "^2.2.1", + "@web/storybook-addon-mocks": "^0.0.0", "@web/storybook-utils": "^1.1.0", - "storybook": "^8.6.15" + "storybook": "^9.1.20" }, "engines": { - "node": ">=18.0.0" - } - }, - "packages/storybook-framework-web-components/node_modules/@storybook/blocks": { - "version": "8.6.12", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.6.12.tgz", - "integrity": "sha512-DohlTq6HM1jDbHYiXL4ZvZ00VkhpUp5uftzj/CZDLY1fYHRjqtaTwWm2/OpceivMA8zDitLcq5atEZN+f+siTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/icons": "^1.2.12", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "storybook": "^8.6.12" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } - } - }, - "packages/storybook-framework-web-components/node_modules/@storybook/icons": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-1.4.0.tgz", - "integrity": "sha512-Td73IeJxOyalzvjQL+JXx72jlIYHgs+REaHiREOqfpo3A2AYYG71AUbcv+lg7mEDIweKVCxsMQ0UKo634c8XeA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta" - } - }, - "packages/storybook-framework-web-components/node_modules/react-dom": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", - "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "scheduler": "^0.26.0" - }, - "peerDependencies": { - "react": "^19.1.0" + "node": ">=20.0.0" } }, "packages/storybook-utils": { @@ -38491,7 +37686,7 @@ "version": "1.1.2", "license": "MIT", "dependencies": { - "@storybook/core-events": "^7.0.0 || ^8.0.0" + "storybook": "^9.1.20" }, "devDependencies": { "react": "^19.0.0" diff --git a/packages/mocks/MIGRATION.md b/packages/mocks/MIGRATION.md new file mode 100644 index 0000000000..c25b1166cc --- /dev/null +++ b/packages/mocks/MIGRATION.md @@ -0,0 +1,38 @@ +# Migration + +## From version 1.x.x to 2.x.x + +### Removed Storybook addon + +The Storybook addon has been moved from `@web/mocks` to `@web/storybook-addon-mocks` (currently supporting Storybook 9). +This change decouples `@web/mocks` from Storybook, allowing us to update the addon as needed for newer Storybook versions without releasing new major versions of `@web/mocks` for purely Storybook-related breaking changes. + +For Storybook up to v8 keep using `@web/mocks` v1. + +For Storybook v9 and later: + +- upgrade `@web/mocks` to v2 +- install `@web/storybook-addon-mocks` +- replace the addon to `@web/storybook-addon-mocks` (see code below) + +```diff +// .storybook/main.js +/** @type {import('@web/storybook-framework-web-components').StorybookConfig} */ +const config = { + stories: ['../stories/**/*.stories.js', '../stories/**/*.mdx'], + addons: [ +- '@web/mocks/storybook-addon', ++ '@web/storybook-addon-mocks', + ], +}; +export default config; +``` + +### Removed `mockRollupPlugin` + +This plugin was mainly used for bundling Storybook, so it's not very useful on it's own, therefore it was deleted from `@web/mocks`. + +### Update of `msw` + +The version of `msw` was bumped to latest. +We recommend checking the `msw` changelog to ensure a smooth transition for your specific workflows. diff --git a/packages/mocks/README.md b/packages/mocks/README.md index ce56df1fa3..4e650003e8 100644 --- a/packages/mocks/README.md +++ b/packages/mocks/README.md @@ -1,6 +1,6 @@ # @web/mocks -[`MSW`](https://mswjs.io/) integration layer for usage with [`@web/dev-server`](https://modern-web.dev/docs/dev-server/overview/), [`@web/test-runner`](https://modern-web.dev/docs/test-runner/overview/) and [`@web/dev-server-storybook`](https://modern-web.dev/docs/dev-server/plugins/storybook/#mainjs-and-previewjs). +[`MSW`](https://mswjs.io/) integration layer for usage with [`@web/dev-server`](https://modern-web.dev/docs/dev-server/overview/), [`@web/test-runner`](https://modern-web.dev/docs/test-runner/overview/). ## Defining mocks @@ -90,175 +90,6 @@ http.get('/api/foo', ({ request, cookies, params }) => { - `cookies` an object based on the request cookies - `params` an object based on the request params -## `@web/dev-server`/`@web/dev-server-storybook`/`@web/storybook-builder` - -`feature-a/web-dev-server.config.mjs`: - -```diff -+// for Storybook 7+ (@web/storybook-builder) -+// no need to do anything here -+// this file is not even needed for "@web/storybook-builder" - -import { storybookPlugin } from '@web/dev-server-storybook'; - -+// for Storybook 6 (@web/dev-server-storybook) -+import { mockPlugin } from '@web/mocks/plugins.js'; - -export default { - nodeResolve: true, - plugins: [ -+ // for Storybook 6 (@web/dev-server-storybook) -+ mockPlugin(), - storybookPlugin({ type: 'web-components' }) - ], -}; -``` - -You can also add the `mockRollupPlugin` to your `.storybook/main.cjs` config for when you're bundling your Storybook to deploy somewhere; your mocks will be deployed along with your Storybook, and will work in whatever environment you deploy them to. - -`feature-a/.storybook/main.cjs`: - -```diff -module.exports = { - stories: ['../stories/**/*.stories.{js,md,mdx}'], -+ // for Storybook 7+ (@web/storybook-builder) -+ // no need to do anything here - -+ // for Storybook 6 (@web/dev-server-storybook) -+ rollupConfig: async config => { -+ const { mockRollupPlugin } = await import('@web/mocks/plugins.js'); -+ config.plugins.push(mockRollupPlugin()); -+ return config; -+ }, -}; -``` - -
- - mockRollupPlugin configuration options - -The rollup plugin also takes an optional interceptor, which can be useful to handle things like rewriting api. prefixes made in requests, for example: - -```js -mockRollupPlugin({ - interceptor: ` - const domain = window.location.hostname; - const apiDomain = "api." + domain; - - const { fetch: originalFetch } = window; - - async function fetch(request) { - request = new Request(request); - - const resolvedURL = new URL(request.url, window.location); - if (resolvedURL.hostname === apiDomain) { - // rewrite hostname without api. - resolvedURL.hostname = domain; - - const init = {}; - for (const property in request) { - init[property] = request[property]; - } - - request = new Request(resolvedURL.href, init); - if (request.body != null) { - request = new Request(request, { body: await request.arrayBuffer() }); - } - } - return originalFetch(request); - } - - window.fetch = fetch; - `, -}); -``` - -This can be used to avoid CORS issues when deploying your Storybooks. - -In the Storybook 7+ (@web/storybook-builder) you can achieve the same by using native Storybook API [previewHead](https://storybook.js.org/docs/api/main-config/main-config-preview-head): - -```js -// .storybook/main.js -/** @type { import('@web/storybook-framework-web-components').StorybookConfig } */ -const config = { - framework: { - name: '@web/storybook-framework-web-components', - }, - // ... - previewHead(head) { - return ` - ${process.env.NODE_ENV === 'production' ? `` : ''} - ${head} - `; - }, -}; -export default config; -``` - -
-
- -And add the addon: -`feature-a/.storybook/main.cjs`: - -```diff -module.exports = { - stories: ['../stories/**/*.stories.{js,md,mdx}'], -+ // for Storybook 7+ (@web/storybook-builder) -+ addons: ['@web/mocks/storybook-addon'], - -+ // for Storybook 6 (@web/dev-server-storybook) -+ addons: ['@web/mocks/storybook/addon.js'], - rollupConfig: async config => { - const { mockRollupPlugin } = await import('@web/mocks/plugins.js'); - config.plugins.push(mockRollupPlugin()); - return config; - }, -}; -``` - -`feature-a/.storybook/preview.js`: - -```diff -+// for Storybook 7+ (@web/storybook-builder) -+// no need to do anything here - -+// for Storybook 6 (@web/dev-server-storybook) -+ import { withMocks } from '@web/mocks/storybook/decorator.js'; -+ export const decorators = [withMocks]; -``` - -`feature-a/stories/default.stories.js`: - -```js -import { html } from 'lit'; -import { http } from '@web/mocks/http.js'; -import mocks from '../demo/mocks.js'; - -export const Default = () => html``; -Default.story = { - parameters: { - mocks: mocks.default, - // or - mocks: [ - mocks.default, - otherMocks.error, - http.get('/api/bar', () => Response.json({ bar: 'bar' })), - http.post('/api/baz', () => new Response('', { status: 400 })), - ], - // or - mocks: [ - http.get('/api/users/:id', ({ params }) => { - if (params.id === '123') { - return Response.json({ name: 'frank' }); - } - return Response.json({ name: 'bob' }); - }), - ], - }, -}; -``` - ## `@web/test-runner` The `registerMockRoutes` function will ensure the service worker is installed, and the `mockPlugin` takes care of resolving the service worker file, so users don't have to keep this one-time generated service worker file in their own project roots. @@ -322,6 +153,12 @@ const r = await fetch('/api/foo').then(r => r.json()); console.assert(r.foo === 'bar'); ``` +## Storybook integration + +We created a Storybook addon `@web/storybook-addon-mocks`. + +See [it's documentation](https://github.com/modernweb-dev/web/blob/master/packages/storybook-addon-mocks/README.md) for more details. + ## Rationale ### Why not use MSW directly? diff --git a/packages/mocks/demo/wc/.storybook/main.js b/packages/mocks/demo/wc/.storybook/main.js deleted file mode 100644 index 999d1e5c45..0000000000 --- a/packages/mocks/demo/wc/.storybook/main.js +++ /dev/null @@ -1,9 +0,0 @@ -/** @type { import('../../../../index.d.ts').StorybookConfig } */ -const config = { - stories: ['../stories/**/*.stories.js'], - addons: ['@web/mocks/storybook-addon'], - framework: { - name: '@web/storybook-framework-web-components', - }, -}; -export default config; diff --git a/packages/mocks/demo/wc/src/MyElement.js b/packages/mocks/demo/wc/src/MyElement.js deleted file mode 100644 index 38b3b15703..0000000000 --- a/packages/mocks/demo/wc/src/MyElement.js +++ /dev/null @@ -1,36 +0,0 @@ -// @ts-nocheck - -import { LitElement, html } from 'lit'; - -export class MyElement extends LitElement { - static properties = { - transactions: { type: Array }, - state: { type: String }, - } - - async connectedCallback() { - super.connectedCallback(); - this.state = 'PENDING'; - try { - this.transactions = await fetch('/api/transactions').then(r => r.json()).then(({ transactions }) => transactions); - this.state = 'SUCCESS' - } catch { - this.state = 'ERROR'; - } - } - - render() { - switch (this.state) { - case 'PENDING': - return html`

Loading...

`; - case 'ERROR': - return html`

Something went wrong

`; - case 'SUCCESS': - return html` - - `; - } - } -} diff --git a/packages/mocks/demo/wc/stories/my-element.stories.js b/packages/mocks/demo/wc/stories/my-element.stories.js deleted file mode 100644 index ef8c20698b..0000000000 --- a/packages/mocks/demo/wc/stories/my-element.stories.js +++ /dev/null @@ -1,32 +0,0 @@ -// @ts-nocheck - -import { html } from 'lit'; -import { http } from '../../../http.js'; -import { MyElement } from '../src/MyElement.js'; - -customElements.define('my-element', MyElement); - -export default { - title: 'My element', - render: () => html``, -}; - -export const Default = { - parameters: { - mocks: [ - http.get('/api/transactions', () => Response.json({ transactions: ['foo', 'bar'] })), - http.post('/api/transactions/create', () => Response.json({ ok: true })), - http.put('/api/transactions/update', () => Response.json({ ok: true })), - ], - }, -}; - -export const Second = { - parameters: { - mocks: [ - http.get('/api/transactions', () => Response.json({ transactions: ['foo 2', 'bar 2'] })), - http.post('/api/transactions/create', () => Response.json({ ok: true })), - http.put('/api/transactions/update', () => Response.json({ ok: true })), - ], - }, -}; diff --git a/packages/mocks/package.json b/packages/mocks/package.json index 5223422281..d380530b93 100644 --- a/packages/mocks/package.json +++ b/packages/mocks/package.json @@ -23,19 +23,6 @@ "types": "./dist-types/browser.d.ts", "default": "./browser.js" }, - "./storybook-addon/manager": "./storybook-addon/manager.js", - "./storybook-addon/preset": "./storybook-addon/preset.js", - "./storybook-addon/preview": "./storybook-addon/preview.js", - "./storybook/addon/decorator.js": { - "types": "./dist-types/storybook/addon/decorator.d.ts", - "default": "./storybook/addon/decorator.js" - }, - "./storybook/addon/manager.js": "./storybook/addon/manager.js", - "./storybook/decorator.js": { - "types": "./dist-types/storybook/decorator.d.ts", - "default": "./storybook/decorator.js" - }, - "./storybook/addon.js": "./storybook/addon.js", "./plugins.js": { "types": "./dist-types/plugins.d.ts", "default": "./plugins.js" @@ -64,12 +51,7 @@ "msw" ], "dependencies": { - "@storybook/manager-api": "^7.0.0 || ^8.0.0", - "@storybook/preview-api": "^7.0.0 || ^8.0.0", - "@web/storybook-prebuilt": "^0.1.37", - "@web/storybook-utils": "^1.1.1", - "lit": "^2.7.5 || ^3.0.0", - "msw": "2.4.1" + "msw": "2.13.2" }, "devDependencies": { "@web/storybook-builder": "^0.2.2", diff --git a/packages/mocks/plugins.js b/packages/mocks/plugins.js index 83f1c381d7..24f778aa21 100644 --- a/packages/mocks/plugins.js +++ b/packages/mocks/plugins.js @@ -1,2 +1 @@ -export { mockRollupPlugin } from './rollup-plugin.js'; export { mockPlugin } from './wds-plugin.js'; diff --git a/packages/mocks/rollup-plugin.js b/packages/mocks/rollup-plugin.js index e7e6c4577e..e69de29bb2 100644 --- a/packages/mocks/rollup-plugin.js +++ b/packages/mocks/rollup-plugin.js @@ -1,35 +0,0 @@ -// @ts-nocheck - -import fs from 'node:fs'; -import { createRequire } from 'node:module'; -import path from 'node:path'; - -const require = createRequire(import.meta.url); - -export function mockRollupPlugin( - { interceptor } = { - interceptor: '', - }, -) { - return { - name: 'rollup-plugin-msw', - writeBundle(opts) { - const serviceWorkerPath = require.resolve('msw/mockServiceWorker.js'); - const sw = fs.readFileSync(serviceWorkerPath, 'utf8'); - const outPath = path.join(opts.dir, '__msw_sw__.js'); - fs.writeFileSync(outPath, sw); - }, - buildStart(options) { - if (interceptor) { - const htmlPlugin = options.plugins.find(p => p.name === '@web/rollup-plugin-html'); - - htmlPlugin.api.addHtmlTransformer(html => { - return html.replace( - '', - ``, - ); - }); - } - }, - }; -} diff --git a/packages/mocks/storybook-addon/manager.js b/packages/mocks/storybook-addon/manager.js deleted file mode 100644 index 1aa2d862d2..0000000000 --- a/packages/mocks/storybook-addon/manager.js +++ /dev/null @@ -1 +0,0 @@ -import '../storybook/addon/manager.js'; diff --git a/packages/mocks/storybook-addon/preset.js b/packages/mocks/storybook-addon/preset.js deleted file mode 100644 index e3f05ba102..0000000000 --- a/packages/mocks/storybook-addon/preset.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - * @param {import('@web/dev-server').DevServerConfig} config - */ -export async function wdsFinal(config) { - const { mockPlugin } = await import('@web/mocks/plugins.js'); - // @ts-expect-error - config.plugins.push(mockPlugin()); - return config; -} - -/** - * @param {import('rollup').RollupOptions} config - */ -export async function rollupFinal(config) { - const { mockRollupPlugin } = await import('@web/mocks/plugins.js'); - // @ts-expect-error - config.plugins.push(mockRollupPlugin()); - return config; -} diff --git a/packages/mocks/storybook-addon/preview.js b/packages/mocks/storybook-addon/preview.js deleted file mode 100644 index 8b46e507fe..0000000000 --- a/packages/mocks/storybook-addon/preview.js +++ /dev/null @@ -1,3 +0,0 @@ -import { withMocks } from '../storybook/addon/decorator.js'; - -export const decorators = [withMocks]; diff --git a/packages/mocks/storybook/addon.js b/packages/mocks/storybook/addon.js deleted file mode 100644 index 0a17f75175..0000000000 --- a/packages/mocks/storybook/addon.js +++ /dev/null @@ -1,9 +0,0 @@ -// @ts-nocheck - -import { createAddon } from '@web/storybook-prebuilt/create-addon.js'; -import { React } from '@web/storybook-prebuilt/manager.js'; -import { addons, types } from '@web/storybook-prebuilt/addons.js'; -import { registerAddon } from './addon/register-addon.js'; - -// Storybook 6 -registerAddon(addons, types, React, createAddon); diff --git a/packages/mocks/storybook/addon/create-decorator.js b/packages/mocks/storybook/addon/create-decorator.js deleted file mode 100644 index df6d61d5ad..0000000000 --- a/packages/mocks/storybook/addon/create-decorator.js +++ /dev/null @@ -1,68 +0,0 @@ -// @ts-nocheck - -import { registerMockRoutes } from '../../browser.js'; - -export function createDecorator(addons, makeDecorator) { - addons.getChannel().on('mocks:edited', data => { - const url = new URL(window.location); - const mocks = encodeURIComponent(JSON.stringify(data)); - url.searchParams.set('mocks', mocks); - window.location.href = url.href; - }); - - return makeDecorator({ - name: 'withMocks', - parameterName: 'mocks', - wrapper: (getStory, context) => { - const mocks = context.parameters?.mocks ?? context.story?.parameters?.mocks ?? []; - - const editedMocks = getEditedMocks() ?? []; - - if (Array.isArray(mocks)) { - const finalizedMocks = mocks.map(mock => { - const editedMock = editedMocks.find( - edited => edited.method === mock.method && edited.endpoint === mock.endpoint, - ); - - return editedMock - ? { - ...editedMock, - handler: () => - new Response(JSON.stringify(editedMock.data), { - headers: { - 'Content-Type': 'application/json', - }, - status: editedMock.status, - }), - } - : mock; - }); - - if (finalizedMocks) { - addons.getChannel().emit('mocks:loaded', finalizedMocks.flat(Infinity)); - registerMockRoutes(finalizedMocks); - } - } - - return getStory(context); - }, - }); -} - -function getEditedMocks() { - const url = new URL(window.location); - - if (!url.searchParams.has('mocks')) { - return null; - } - - const param = url.searchParams.get('mocks'); - url.searchParams.delete('mocks'); - window.history.replaceState(null, '', `${url.search}`); - - try { - return JSON.parse(decodeURIComponent(param)); - } catch (error) { - throw new Error(`Cannot parse mocks: ${error.message}`); - } -} diff --git a/packages/mocks/storybook/addon/decorator.js b/packages/mocks/storybook/addon/decorator.js deleted file mode 100644 index da74542985..0000000000 --- a/packages/mocks/storybook/addon/decorator.js +++ /dev/null @@ -1,10 +0,0 @@ -// @ts-nocheck - -import { addons, makeDecorator } from '@storybook/preview-api'; -import { createDecorator } from './create-decorator.js'; - -// Storybook 7+ -/** - * @type {ReturnType} - */ -export const withMocks = createDecorator(addons, makeDecorator); diff --git a/packages/mocks/storybook/addon/manager.js b/packages/mocks/storybook/addon/manager.js deleted file mode 100644 index 199843a47c..0000000000 --- a/packages/mocks/storybook/addon/manager.js +++ /dev/null @@ -1,9 +0,0 @@ -// @ts-nocheck - -import { createAddon } from '@web/storybook-utils'; -import React from 'react'; -import { addons, types } from '@storybook/manager-api'; -import { registerAddon } from './register-addon.js'; - -// Storybook 7+ -registerAddon(addons, types, React, createAddon); diff --git a/packages/mocks/storybook/addon/register-addon.js b/packages/mocks/storybook/addon/register-addon.js deleted file mode 100644 index 4d74cb23d7..0000000000 --- a/packages/mocks/storybook/addon/register-addon.js +++ /dev/null @@ -1,252 +0,0 @@ -// @ts-nocheck - -import { LitElement, html, css } from 'lit'; -import { when } from 'lit/directives/when.js'; - -export function registerAddon(addons, types, React, createAddon) { - const { createElement } = React; - - class MocksAddonElement extends LitElement { - static properties = { - state: { type: String }, - mocks: { type: Array }, - editing: { type: Boolean }, - hasEditedMocks: { type: Boolean }, - copied: { type: Boolean }, - }; - - static styles = css` - table { - width: 100%; - margin-bottom: 10px; - border-collapse: collapse; - } - - tr { - border-bottom: 1px solid hsla(203, 50%, 30%, 0.2); - } - - thead { - background-color: hsla(203, 50%, 30%, 0.1); - } - - tr th:first-child { - width: 9ch; - } - - tr th:nth-child(2) { - width: 9ch; - } - - thead th { - padding: 10px; - text-align: left; - } - - tbody td { - padding: 10px; - } - - .message { - padding: 30px; - text-align: center; - font-weight: bold; - } - `; - - constructor() { - super(); - this.editing = false; - this.mocks = []; - this.state = 'PENDING'; - - this.addEventListener('mocks:loaded', e => { - this.state = 'SUCCESS'; - this.mocks = e.detail; - this.hasEditedMocks = this.mocks.some(m => m.changed); - }); - - this.addEventListener('storyChanged', () => { - this.editing = false; - this.state = 'PENDING'; - }); - } - - render() { - if (this.state === 'PENDING') { - return html`
Loading...
`; - } - - if (!this.mocks.length) { - return html`
No mocks configured.
`; - } - - return html` -
-
- - - - - - - ${when( - this.editing, - () => html` - - - `, - )} - - - - - ${this.mocks.map( - ({ method, endpoint, changed, data, status }, i) => html` - - - ${when( - this.editing, - () => html` - - - - - `, - () => html` - - - `, - )} - - `, - )} - -
OverrideMethodEndpointResponseStatus
${changed ? '✅' : ''} - ${method} - - ${endpoint} - - - - - ${method}${endpoint}
- - ${when(this.editing, () => html``)} - - - - ${when( - !this.editing && this.hasEditedMocks, - () => html``, - )} - -

- ${when( - 'clipboard' in navigator && this.hasEditedMocks, - () => html` - - - ${when(this.copied, () => html`
Copied to clipboard.
`)} - `, - )} -
-
- `; - } - - reset() { - const url = new URL(window.location); - url.searchParams.delete('mocks'); - window.location.href = url.href; - } - - copy() { - this.copied = true; - const url = new URL(window.location); - const editedMocks = this.mocks.filter(m => m.changed); - const encodedMocks = encodeURIComponent(JSON.stringify(editedMocks)); - url.searchParams.set('mocks', encodedMocks); - navigator.clipboard.writeText(url.toString()); - setTimeout(() => { - this.copied = false; - }, 3000); - } - - submit(event) { - event.preventDefault(); - this.editing = false; - - const formElems = Array.from(event.target.elements); - - // Iterate over each form row, checking if the form values are different from the initial values - this.mocks = this.mocks.map((mock, index) => { - const response = formElems.find(elem => elem.name === `response-${index}`).value; - const status = formElems.find(elem => elem.name === `status-${index}`).valueAsNumber; - - if (response) { - let responseObj; - try { - responseObj = JSON.parse(response); - } catch { - throw new Error(`Invalid JSON provided for api call: ${mock.method} ${mock.endpoint}.`); - } - - mock.changed = true; - mock.data = responseObj; - - if (status) { - mock.status = status; - } else { - mock.status = 200; - } - } - - if (status) { - if (status < 400 && !response) { - throw new Error( - `No response was provided for api call: ${mock.method} ${mock.endpoint}.`, - ); - } - - mock.changed = true; - mock.status = status; - } - - return mock; - }); - - const changedMocks = this.mocks.filter(mock => mock.changed); - if (changedMocks) { - this.hasEditedMocks = true; - addons.getChannel().emit('mocks:edited', changedMocks); - } - } - } - - customElements.define('mocks-addon', MocksAddonElement); - - const MocksAddon = createAddon('mocks-addon', { - events: ['mocks:loaded', 'mocks:edited'], - }); - - addons.register('web/mocks', api => { - addons.add('web/mocks/panel', { - type: types.PANEL, - title: 'Mocks', - paramKey: 'mocks', - render: ({ active }) => createElement(MocksAddon, { api, active }), - }); - }); -} diff --git a/packages/mocks/storybook/decorator.js b/packages/mocks/storybook/decorator.js deleted file mode 100644 index 7f8496a020..0000000000 --- a/packages/mocks/storybook/decorator.js +++ /dev/null @@ -1,7 +0,0 @@ -// @ts-nocheck - -import { addons, makeDecorator } from '@web/storybook-prebuilt/addons'; -import { createDecorator } from './addon/create-decorator.js'; - -// Storybook 6 -export const withMocks = createDecorator(addons, makeDecorator); diff --git a/packages/storybook-addon-mocks/CHANGELOG.md b/packages/storybook-addon-mocks/CHANGELOG.md new file mode 100644 index 0000000000..8990e2e8a3 --- /dev/null +++ b/packages/storybook-addon-mocks/CHANGELOG.md @@ -0,0 +1 @@ +# @web/storybook-addons-mocks diff --git a/packages/storybook-addon-mocks/README.md b/packages/storybook-addon-mocks/README.md new file mode 100644 index 0000000000..f20a8a7093 --- /dev/null +++ b/packages/storybook-addon-mocks/README.md @@ -0,0 +1,55 @@ +# @web/storybook-addon-mocks + +Storybook addon for `@web/mocks`. + +## Setup addon + +Add `@web/storybook-addon-mocks` to addons in the main Storybook configuration file: + +```js +// .storybook/main.js +/** @type { import('@web/storybook-framework-web-components').StorybookConfig } */ +const config = { + // ... + addons: ['@web/storybook-addon-mocks'], + // ... +}; +export default config; +``` + +## Add mocks to stories + +Add `mocks` to story `parameters`: + +```js +// stories/feature-a.stories.js +import { html } from 'lit'; +import { http } from '@web/mocks/http.js'; +import mocks from '../demo/mocks.js'; + +export const Default = { + render: () => html``, + parameters: { + mocks: mocks.default, + + // or + + mocks: [ + mocks.default, + http.get('/api/bar', () => Response.json({ bar: 'bar' })), + http.post('/api/baz', () => new Response('', { status: 400 })), + ], + + // or + + mocks: [ + http.get('/api/users/:id', ({ params }) => { + if (params.id === '123') { + return Response.json({ name: 'frank' }); + } + return Response.json({ name: 'bob' }); + }), + ], + }, +}; +``` diff --git a/packages/storybook-addon-mocks/package.json b/packages/storybook-addon-mocks/package.json new file mode 100644 index 0000000000..024f00af66 --- /dev/null +++ b/packages/storybook-addon-mocks/package.json @@ -0,0 +1,39 @@ +{ + "name": "@web/storybook-addon-mocks", + "version": "0.0.0", + "publishConfig": { + "access": "public" + }, + "description": "Storybook addon for `@web/mocks`", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/modernweb-dev/web.git", + "directory": "packages/storybook-addon-mocks" + }, + "author": "modern-web", + "homepage": "https://github.com/modernweb-dev/web/tree/master/packages/storybook-addon-mocks", + "type": "module", + "exports": { + "./manager": "./src/manager.js", + "./preset": "./src/preset.js", + "./preview": "./src/preview.js" + }, + "files": [ + "CHANGELOG.md", + "src/*.js", + "README.md" + ], + "keywords": [ + "storybook", + "addon", + "mocks", + "msw" + ], + "dependencies": { + "@web/mocks": "^1.3.2", + "@web/storybook-utils": "^1.1.2", + "lit": "^3.3.2", + "storybook": "^9.1.20" + } +} diff --git a/packages/storybook-addon-mocks/src/manager.js b/packages/storybook-addon-mocks/src/manager.js new file mode 100644 index 0000000000..e7f2587946 --- /dev/null +++ b/packages/storybook-addon-mocks/src/manager.js @@ -0,0 +1,253 @@ +// @ts-nocheck + +import { createAddon } from '@web/storybook-utils'; +import React from 'react'; +import { LitElement, html, css } from 'lit'; +import { when } from 'lit/directives/when.js'; +import { addons, types } from 'storybook/manager-api'; + +const { createElement } = React; + +class MocksAddonElement extends LitElement { + static properties = { + state: { type: String }, + mocks: { type: Array }, + editing: { type: Boolean }, + hasEditedMocks: { type: Boolean }, + copied: { type: Boolean }, + }; + + static styles = css` + table { + width: 100%; + margin-bottom: 10px; + border-collapse: collapse; + } + + tr { + border-bottom: 1px solid hsla(203, 50%, 30%, 0.2); + } + + thead { + background-color: hsla(203, 50%, 30%, 0.1); + } + + tr th:first-child { + width: 9ch; + } + + tr th:nth-child(2) { + width: 9ch; + } + + thead th { + padding: 10px; + text-align: left; + } + + tbody td { + padding: 10px; + } + + .message { + padding: 30px; + text-align: center; + font-weight: bold; + } + `; + + constructor() { + super(); + this.editing = false; + this.mocks = []; + this.state = 'PENDING'; + + this.addEventListener('mocks:loaded', e => { + this.state = 'SUCCESS'; + this.mocks = e.detail; + this.hasEditedMocks = this.mocks.some(m => m.changed); + }); + + this.addEventListener('storyChanged', () => { + this.editing = false; + this.state = 'PENDING'; + }); + } + + render() { + if (this.state === 'PENDING') { + return html`
Loading...
`; + } + + if (!this.mocks.length) { + return html`
No mocks configured.
`; + } + + return html` +
+
+ + + + + + + ${when( + this.editing, + () => html` + + + `, + )} + + + + + ${this.mocks.map( + ({ method, endpoint, changed, data, status }, i) => html` + + + ${when( + this.editing, + () => html` + + + + + `, + () => html` + + + `, + )} + + `, + )} + +
OverrideMethodEndpointResponseStatus
${changed ? '✅' : ''} + ${method} + + ${endpoint} + + + + + ${method}${endpoint}
+ + ${when(this.editing, () => html``)} + + + + ${when( + !this.editing && this.hasEditedMocks, + () => html``, + )} + +

+ ${when( + 'clipboard' in navigator && this.hasEditedMocks, + () => html` + + + ${when(this.copied, () => html`
Copied to clipboard.
`)} + `, + )} +
+
+ `; + } + + reset() { + const url = new URL(window.location); + url.searchParams.delete('mocks'); + window.location.href = url.href; + } + + copy() { + this.copied = true; + const url = new URL(window.location); + const editedMocks = this.mocks.filter(m => m.changed); + const encodedMocks = encodeURIComponent(JSON.stringify(editedMocks)); + url.searchParams.set('mocks', encodedMocks); + navigator.clipboard.writeText(url.toString()); + setTimeout(() => { + this.copied = false; + }, 3000); + } + + submit(event) { + event.preventDefault(); + this.editing = false; + + const formElems = Array.from(event.target.elements); + + // Iterate over each form row, checking if the form values are different from the initial values + this.mocks = this.mocks.map((mock, index) => { + const response = formElems.find(elem => elem.name === `response-${index}`).value; + const status = formElems.find(elem => elem.name === `status-${index}`).valueAsNumber; + + if (response) { + let responseObj; + try { + responseObj = JSON.parse(response); + } catch { + throw new Error(`Invalid JSON provided for api call: ${mock.method} ${mock.endpoint}.`); + } + + mock.changed = true; + mock.data = responseObj; + + if (status) { + mock.status = status; + } else { + mock.status = 200; + } + } + + if (status) { + if (status < 400 && !response) { + throw new Error( + `No response was provided for api call: ${mock.method} ${mock.endpoint}.`, + ); + } + + mock.changed = true; + mock.status = status; + } + + return mock; + }); + + const changedMocks = this.mocks.filter(mock => mock.changed); + if (changedMocks) { + this.hasEditedMocks = true; + addons.getChannel().emit('mocks:edited', changedMocks); + } + } +} + +customElements.define('mocks-addon', MocksAddonElement); + +const MocksAddon = createAddon('mocks-addon', { + events: ['mocks:loaded', 'mocks:edited'], +}); + +addons.register('web/mocks', api => { + addons.add('web/mocks/panel', { + type: types.PANEL, + title: 'Mocks', + paramKey: 'mocks', + render: ({ active }) => createElement(MocksAddon, { api, active }), + }); +}); diff --git a/packages/storybook-addon-mocks/src/preset.js b/packages/storybook-addon-mocks/src/preset.js new file mode 100644 index 0000000000..d61da5eea3 --- /dev/null +++ b/packages/storybook-addon-mocks/src/preset.js @@ -0,0 +1,33 @@ +// @ts-nocheck + +import fs from 'node:fs'; +import { createRequire } from 'node:module'; +import path from 'node:path'; + +/** + * @param {import('@web/dev-server').DevServerConfig} config + */ +export async function wdsFinal(config) { + const { mockPlugin } = await import('@web/mocks/plugins.js'); + // @ts-expect-error + config.plugins.push(mockPlugin()); + return config; +} + +/** + * @param {import('rollup').RollupOptions} config + */ +export async function rollupFinal(config) { + const require = createRequire(import.meta.url); + // @ts-expect-error + config.plugins.push({ + name: 'rollup-plugin-storybook-addon-mocks', + writeBundle(opts) { + const serviceWorkerPath = require.resolve('msw/mockServiceWorker.js'); + const sw = fs.readFileSync(serviceWorkerPath, 'utf8'); + const outPath = path.join(opts.dir, '__msw_sw__.js'); + fs.writeFileSync(outPath, sw); + }, + }); + return config; +} diff --git a/packages/storybook-addon-mocks/src/preview.js b/packages/storybook-addon-mocks/src/preview.js new file mode 100644 index 0000000000..0d54a9ba44 --- /dev/null +++ b/packages/storybook-addon-mocks/src/preview.js @@ -0,0 +1,69 @@ +// @ts-nocheck + +import { registerMockRoutes } from '@web/mocks/browser.js'; +import { addons, makeDecorator } from 'storybook/preview-api'; + +function getEditedMocks() { + const url = new URL(window.location); + + if (!url.searchParams.has('mocks')) { + return null; + } + + const param = url.searchParams.get('mocks'); + url.searchParams.delete('mocks'); + window.history.replaceState(null, '', `${url.search}`); + + try { + return JSON.parse(decodeURIComponent(param)); + } catch (error) { + throw new Error(`Cannot parse mocks: ${error.message}`); + } +} + +addons.getChannel().on('mocks:edited', data => { + const url = new URL(window.location); + const mocks = encodeURIComponent(JSON.stringify(data)); + url.searchParams.set('mocks', mocks); + window.location.href = url.href; +}); + +const withMocks = makeDecorator({ + name: 'withMocks', + parameterName: 'mocks', + wrapper: (getStory, context) => { + const mocks = context.parameters?.mocks ?? context.story?.parameters?.mocks ?? []; + + const editedMocks = getEditedMocks() ?? []; + + if (Array.isArray(mocks)) { + const finalizedMocks = mocks.map(mock => { + const editedMock = editedMocks.find( + edited => edited.method === mock.method && edited.endpoint === mock.endpoint, + ); + + return editedMock + ? { + ...editedMock, + handler: () => + new Response(JSON.stringify(editedMock.data), { + headers: { + 'Content-Type': 'application/json', + }, + status: editedMock.status, + }), + } + : mock; + }); + + if (finalizedMocks) { + addons.getChannel().emit('mocks:loaded', finalizedMocks.flat(Infinity)); + registerMockRoutes(finalizedMocks); + } + } + + return getStory(context); + }, +}); + +export const decorators = [withMocks]; diff --git a/packages/storybook-builder/package.json b/packages/storybook-builder/package.json index adc0a4de51..079c791759 100644 --- a/packages/storybook-builder/package.json +++ b/packages/storybook-builder/package.json @@ -19,10 +19,11 @@ "types": "./index.d.ts", "require": "./dist/index.js", "import": "./index.mjs" - } + }, + "./package.json": "./package.json" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" }, "scripts": { "build": "tsc" @@ -50,30 +51,21 @@ "@mdx-js/mdx": "^3.0.0", "@rollup/plugin-node-resolve": "^15.1.0", "@rollup/plugin-replace": "^6.0.2", - "@rollup/pluginutils": "^5.0.2", - "@storybook/core-common": "^8.6.12", - "@storybook/node-logger": "^8.6.12", - "@storybook/preview": "^8.6.12", "@web/config-loader": "^0.3.2", "@web/dev-server": "^0.4.0", "@web/dev-server-core": "^0.7.5", "@web/dev-server-rollup": "^0.6.1", "@web/rollup-plugin-html": "^3.0.0", - "browser-assert": "^1.2.1", "cjs-module-lexer": "^1.2.3", "es-module-lexer": "^1.2.1", "esbuild": "^0.27.0", - "glob": "^12.0.0", - "lodash-es": "^4.17.21", - "path-browserify": "^1.0.1", + "glob": "^13.0.0", "rehype-external-links": "^3.0.0", "rehype-slug": "^6.0.0", "rollup": "^4.4.1", "rollup-plugin-external-globals": "^0.9.0", - "sirv": "^2.0.4", - "slash": "^5.1.0" - }, - "devDependencies": { - "@storybook/types": "^8.6.12" + "sirv": "^3.0.2", + "slash": "^5.1.0", + "storybook": "^9.1.20" } } diff --git a/packages/storybook-builder/src/generate-app-script.ts b/packages/storybook-builder/src/generate-app-script.ts index c88ec59f0a..3c1115828b 100644 --- a/packages/storybook-builder/src/generate-app-script.ts +++ b/packages/storybook-builder/src/generate-app-script.ts @@ -1,11 +1,12 @@ -// based on https://github.com/storybookjs/storybook/blob/v8.5.0/code/builders/builder-vite/src/codegen-modern-iframe-script.ts +// based on https://github.com/storybookjs/storybook/blob/v9.1.20/code/builders/builder-vite/src/codegen-modern-iframe-script.ts -import { normalizePath } from '@rollup/pluginutils'; -import { loadPreviewOrConfigFile } from '@storybook/core-common'; -import type { Options, PreviewAnnotation } from '@storybook/types'; +import { loadPreviewOrConfigFile } from 'storybook/internal/common'; +import type { Options, PreviewAnnotation } from 'storybook/internal/types'; import { virtualSetupAddonsFilename, virtualStoriesFilename } from './virtual-file-names.js'; export async function generateAppScript(options: Options) { + const slash = (await import('slash')).default; // for CJS compatibility + const { presets, configDir } = options; const previewOrConfigFile = loadPreviewOrConfigFile({ configDir }); @@ -14,6 +15,7 @@ export async function generateAppScript(options: Options) { [], options, ); + const previewAnnotationURLs = [...previewAnnotations, previewOrConfigFile] .filter((path): path is PreviewAnnotation => !!path) .map((path: PreviewAnnotation) => (typeof path === 'object' ? path.bare : path)); @@ -25,7 +27,7 @@ export async function generateAppScript(options: Options) { const getProjectAnnotations = async () => { const configs = await Promise.all([ ${previewAnnotationURLs - .map(previewAnnotation => ` import('${normalizePath(previewAnnotation)}')`) + .map(previewAnnotation => ` import('${slash(previewAnnotation)}')`) .join(',\n')} ]); return composeConfigs(configs); @@ -33,12 +35,12 @@ ${previewAnnotationURLs `.trim(); return ` -import { setup } from '@storybook/core/preview/runtime'; +import { setup } from 'storybook/internal/preview/runtime'; import '${virtualSetupAddonsFilename}'; setup(); -import { composeConfigs, PreviewWeb, ClientApi } from '@storybook/preview-api'; +import { composeConfigs, PreviewWeb, ClientApi } from 'storybook/preview-api'; import { importFn } from '${virtualStoriesFilename}'; ${getPreviewAnnotationsFunction} diff --git a/packages/storybook-builder/src/generate-iframe-html.ts b/packages/storybook-builder/src/generate-iframe-html.ts index 8f4e2235d3..87779c345d 100644 --- a/packages/storybook-builder/src/generate-iframe-html.ts +++ b/packages/storybook-builder/src/generate-iframe-html.ts @@ -1,7 +1,7 @@ -// based on https://github.com/storybookjs/storybook/blob/v8.5.0/code/builders/builder-vite/src/transform-iframe-html.ts +// based on https://github.com/storybookjs/storybook/blob/v9.1.20/code/builders/builder-vite/src/transform-iframe-html.ts -import { normalizeStories } from '@storybook/core-common'; -import type { DocsOptions, Options, TagsOptions } from '@storybook/types'; +import { normalizeStories } from 'storybook/internal/common'; +import type { DocsOptions, Options, TagsOptions } from 'storybook/internal/types'; import { readFile } from 'node:fs/promises'; import { virtualAppFilename } from './virtual-file-names.js'; @@ -35,7 +35,7 @@ export async function generateIframeHtml(options: Options): Promise { .replace('[LOGLEVEL HERE]', logLevel || '') .replace(`'[FRAMEWORK_OPTIONS HERE]'`, JSON.stringify(frameworkOptions)) .replace( - `('OTHER_GLOBLALS HERE');`, + `('OTHER_GLOBALS HERE');`, Object.entries(otherGlobals) .map(([k, v]) => `window["${k}"] = ${JSON.stringify(v)};`) .join(''), diff --git a/packages/storybook-builder/src/generate-setup-addons-script.ts b/packages/storybook-builder/src/generate-setup-addons-script.ts index 7315a09a71..b678dd6f18 100644 --- a/packages/storybook-builder/src/generate-setup-addons-script.ts +++ b/packages/storybook-builder/src/generate-setup-addons-script.ts @@ -1,9 +1,9 @@ -// based on https://github.com/storybookjs/storybook/blob/v8.5.0/code/builders/builder-vite/src/codegen-set-addon-channel.ts +// based on https://github.com/storybookjs/storybook/blob/v9.1.20/code/builders/builder-vite/src/codegen-set-addon-channel.ts export async function generateSetupAddonsScript() { return ` import { createBrowserChannel } from 'storybook/internal/channels'; -import { addons } from 'storybook/internal/preview-api'; +import { addons } from 'storybook/preview-api'; const channel = createBrowserChannel({ page: 'preview' }); addons.setChannel(channel); diff --git a/packages/storybook-builder/src/generate-stories-script.ts b/packages/storybook-builder/src/generate-stories-script.ts index 2069dd2402..95f0385659 100644 --- a/packages/storybook-builder/src/generate-stories-script.ts +++ b/packages/storybook-builder/src/generate-stories-script.ts @@ -1,7 +1,6 @@ -// based on https://github.com/storybookjs/storybook/blob/v8.5.0/code/builders/builder-vite/src/codegen-importfn-script.ts +// based on https://github.com/storybookjs/storybook/blob/v9.1.20/code/builders/builder-vite/src/codegen-importfn-script.ts -import { normalizePath } from '@rollup/pluginutils'; -import type { Options } from '@storybook/types'; +import type { Options } from 'storybook/internal/types'; import { relative } from 'node:path'; import { listStories } from './list-stories'; @@ -23,8 +22,10 @@ export async function generateStoriesScript(options: Options): Promise { * @param stories An array of absolute story paths. */ async function toImportFn(stories: string[]) { + const slash = (await import('slash')).default; // for CJS compatibility + const objectEntries = stories.map(file => { - const relativePath = normalizePath(relative(process.cwd(), file)); + const relativePath = slash(relative(process.cwd(), file)); const importPath = toImportPath(relativePath); let actualPath = file; if (actualPath.endsWith('.mdx')) { diff --git a/packages/storybook-builder/src/index.ts b/packages/storybook-builder/src/index.ts index 410e66d6d8..483bb20ded 100644 --- a/packages/storybook-builder/src/index.ts +++ b/packages/storybook-builder/src/index.ts @@ -1,11 +1,13 @@ import rollupPluginNodeResolve from '@rollup/plugin-node-resolve'; import rollupPluginReplace from '@rollup/plugin-replace'; -import { getBuilderOptions } from '@storybook/core-common'; -import { logger } from '@storybook/node-logger'; -// Import both globals and globalsNameReferenceMap to prevent retrocompatibility. -// @ts-ignore -import { globals, globalsNameReferenceMap } from '@storybook/preview/globals'; -import type { Builder, Options, StorybookConfig as StorybookConfigBase } from '@storybook/types'; +import { getBuilderOptions } from 'storybook/internal/common'; +import { logger } from 'storybook/internal/node-logger'; +import { globalsNameReferenceMap } from 'storybook/internal/preview/globals'; +import type { + Builder, + Options, + StorybookConfig as StorybookConfigBase, +} from 'storybook/internal/types'; import { DevServerConfig, mergeConfigs, startDevServer } from '@web/dev-server'; import type { DevServer } from '@web/dev-server-core'; import { fromRollup } from '@web/dev-server-rollup'; @@ -61,7 +63,7 @@ export const bail: WdsBuilder['bail'] = async () => { }; export const start: WdsBuilder['start'] = async ({ startTime, options, router, server }) => { - const previewDirOrigin = join(getNodeModuleDir('@storybook/core'), 'dist', 'preview'); + const previewDirOrigin = join(getNodeModuleDir('storybook'), 'dist', 'preview'); router.use( '/sb-preview', sirv(previewDirOrigin, { @@ -92,7 +94,7 @@ export const start: WdsBuilder['start'] = async ({ startTime, options, router, s wdsPluginPrebundleModules(env, options), wdsPluginStorybookBuilder(options), wdsPluginMdx(options), - wdsPluginExternalGlobals(globalsNameReferenceMap || globals), + wdsPluginExternalGlobals(globalsNameReferenceMap), wdsPluginReplace({ ...stringifyProcessEnvs(env), include: ['**/node_modules/@storybook/**/*'], @@ -170,7 +172,7 @@ export const build: WdsBuilder['build'] = async ({ startTime, options }) => { rollupPluginPrebundleModules(env, options), rollupPluginStorybookBuilder(options), rollupPluginMdx(options), - rollupPluginExternalGlobals(globalsNameReferenceMap || globals), + rollupPluginExternalGlobals(globalsNameReferenceMap), rollupPluginReplace({ ...stringifyProcessEnvs(env), include: ['**/node_modules/@storybook/**/*'], @@ -206,7 +208,7 @@ export const build: WdsBuilder['build'] = async ({ startTime, options }) => { logger.trace({ message: '=> Preview built', time: process.hrtime(startTime) }); })(); - const previewDirOrigin = join(getNodeModuleDir('@storybook/core'), 'dist', 'preview'); + const previewDirOrigin = join(getNodeModuleDir('storybook'), 'dist', 'preview'); const previewDirTarget = join(options.outputDir || '', `sb-preview`); const previewFiles = cp(previewDirOrigin, previewDirTarget, { filter: src => { diff --git a/packages/storybook-builder/src/list-stories.ts b/packages/storybook-builder/src/list-stories.ts index cb8ac8ae75..f9082fd559 100644 --- a/packages/storybook-builder/src/list-stories.ts +++ b/packages/storybook-builder/src/list-stories.ts @@ -1,13 +1,10 @@ -// based on https://github.com/storybookjs/storybook/blob/v8.5.0/code/builders/builder-vite/src/list-stories.ts +// based on https://github.com/storybookjs/storybook/blob/v9.1.20/code/builders/builder-vite/src/list-stories.ts -import { normalizeStories } from '@storybook/core-common'; -import type { Options } from '@storybook/types'; +import { commonGlobOptions, normalizeStories } from 'storybook/internal/common'; +import type { Options } from 'storybook/internal/types'; import { glob } from 'glob'; import { isAbsolute, join } from 'node:path'; -const excludeNodeModulesGlobOptions = (glob: string) => - /node_modules/.test(glob) ? {} : { ignore: ['**/node_modules/**'] }; - export async function listStories(options: Options) { const slash = (await import('slash')).default; // for CJS compatibility @@ -21,7 +18,7 @@ export async function listStories(options: Options) { const absolutePattern = isAbsolute(pattern) ? pattern : join(options.configDir, pattern); return glob(slash(absolutePattern), { - ...excludeNodeModulesGlobOptions(absolutePattern), + ...commonGlobOptions(absolutePattern), follow: true, }); }), diff --git a/packages/storybook-builder/src/rollup-plugin-mdx.ts b/packages/storybook-builder/src/rollup-plugin-mdx.ts index 1247097890..9e5dc867a3 100644 --- a/packages/storybook-builder/src/rollup-plugin-mdx.ts +++ b/packages/storybook-builder/src/rollup-plugin-mdx.ts @@ -1,4 +1,4 @@ -import type { Options } from '@storybook/types'; +import type { Options } from 'storybook/internal/types'; import { readFile } from 'node:fs/promises'; import { dirname, join, sep } from 'node:path'; import rehypeExternalLinks from 'rehype-external-links'; @@ -34,10 +34,9 @@ export function rollupPluginMdx(options: Options): Plugin { const mdxLoaderOptions = await options.presets.apply('mdxLoaderOptions', { ...mdxPluginOptions, mdxCompileOptions: { - // this is done by Storybook in 3 different places: - // 1. addon-essentials preset (not working for users who install addon-docs directly without addon-essentials) - // 2. addon-docs vite plugin (not run for our builder, because it's in the builder-vite hook) - // 3. addon-docs webpack loader (not run for our builder, because it's in the builder-webpack hook) + // this is done by Storybook in addon-docs in 2 different places: + // 1. in vite plugin (not run for our builder) + // 2. in webpack loader (not run for our builder) // so we need to duplicate same logic here providerImportSource: join( dirname(require.resolve('@storybook/addon-docs/package.json')), diff --git a/packages/storybook-builder/src/rollup-plugin-prebundle-modules.ts b/packages/storybook-builder/src/rollup-plugin-prebundle-modules.ts index ae2fb7cbdb..a88de0c794 100644 --- a/packages/storybook-builder/src/rollup-plugin-prebundle-modules.ts +++ b/packages/storybook-builder/src/rollup-plugin-prebundle-modules.ts @@ -1,4 +1,4 @@ -import type { Options } from '@storybook/types'; +import type { Options } from 'storybook/internal/types'; import { build } from 'esbuild'; import { readFile, rm } from 'node:fs/promises'; import { dirname, isAbsolute, join, normalize } from 'node:path'; @@ -56,7 +56,7 @@ export function rollupPluginPrebundleModules( }; } -// this is different to https://github.com/storybookjs/storybook/blob/v8.5.0/code/builders/builder-vite/src/optimizeDeps.ts +// this is different to https://github.com/storybookjs/storybook/blob/v9.1.20/code/builders/builder-vite/src/optimizeDeps.ts // builder-vite bundles different dependencies for performance reasons // we aim only at browserifying NodeJS dependencies (CommonJS/process.env/...) export const CANDIDATES = [ @@ -68,18 +68,10 @@ export const CANDIDATES = [ 'react-dom/client', /* for different packages */ - 'memoizerific', 'tiny-invariant', - /* for @storybook/core */ - 'jsdoc-type-pratt-parser', // TODO: Remove this once it's converted to ESM: https://github.com/jsdoc-type-pratt-parser/jsdoc-type-pratt-parser/issues/173 - /* for @storybook/addon-a11y */ 'axe-core', - 'vitest-axe/matchers', - - /* for @storybook/addon-docs */ - 'color-convert', ]; function moduleExists(moduleName: string) { diff --git a/packages/storybook-builder/src/rollup-plugin-storybook-builder.ts b/packages/storybook-builder/src/rollup-plugin-storybook-builder.ts index 05bf90dbf6..3c202c477c 100644 --- a/packages/storybook-builder/src/rollup-plugin-storybook-builder.ts +++ b/packages/storybook-builder/src/rollup-plugin-storybook-builder.ts @@ -1,4 +1,4 @@ -import type { Options } from '@storybook/types'; +import type { Options } from 'storybook/internal/types'; import type { Plugin } from 'rollup'; import { generateAppScript } from './generate-app-script.js'; import { generateSetupAddonsScript } from './generate-setup-addons-script.js'; diff --git a/packages/storybook-builder/src/stringify-process-envs.ts b/packages/storybook-builder/src/stringify-process-envs.ts index e93fe85a0c..8d30b8056d 100644 --- a/packages/storybook-builder/src/stringify-process-envs.ts +++ b/packages/storybook-builder/src/stringify-process-envs.ts @@ -1,4 +1,4 @@ -import { stringifyProcessEnvs as storybookStringifyProcessEnvs } from '@storybook/core-common'; +import { stringifyProcessEnvs as storybookStringifyProcessEnvs } from 'storybook/internal/common'; export function stringifyProcessEnvs(env: Record) { const result = storybookStringifyProcessEnvs(env); diff --git a/packages/storybook-builder/static/iframe-template.html b/packages/storybook-builder/static/iframe-template.html index 271eba7b4b..ab01a5a96c 100644 --- a/packages/storybook-builder/static/iframe-template.html +++ b/packages/storybook-builder/static/iframe-template.html @@ -50,7 +50,7 @@ window.DOCS_OPTIONS = '[DOCS_OPTIONS HERE]'; window.TAGS_OPTIONS = '[TAGS_OPTIONS HERE]'; - ('OTHER_GLOBLALS HERE'); + ('OTHER_GLOBALS HERE'); diff --git a/packages/storybook-framework-web-components/index.mjs b/packages/storybook-framework-web-components/index.mjs index e69de29bb2..9d1e091abc 100644 --- a/packages/storybook-framework-web-components/index.mjs +++ b/packages/storybook-framework-web-components/index.mjs @@ -0,0 +1 @@ +export * from '@storybook/web-components'; diff --git a/packages/storybook-framework-web-components/package.json b/packages/storybook-framework-web-components/package.json index 2250448522..e707e9367e 100644 --- a/packages/storybook-framework-web-components/package.json +++ b/packages/storybook-framework-web-components/package.json @@ -24,7 +24,7 @@ "./package.json": "./package.json" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" }, "scripts": { "build": "tsc", @@ -56,20 +56,18 @@ "esm" ], "dependencies": { - "@storybook/web-components": "^8.6.12", + "@storybook/web-components": "^9.1.20", "@web/storybook-builder": "^0.2.2" }, "devDependencies": { "@playwright/test": "^1.53.0", - "@storybook/addon-a11y": "^8.6.12", - "@storybook/addon-essentials": "^8.6.12", - "@storybook/addon-interactions": "^8.6.12", - "@storybook/addon-links": "^8.6.12", - "@storybook/blocks": "^8.6.12", - "@storybook/types": "^8.6.12", + "@storybook/addon-a11y": "^9.1.20", + "@storybook/addon-docs": "^9.1.20", + "@storybook/addon-links": "^9.1.20", "@web/dev-server": "^0.4.0", "@web/rollup-plugin-import-meta-assets": "^2.2.1", + "@web/storybook-addon-mocks": "^0.0.0", "@web/storybook-utils": "^1.1.0", - "storybook": "^8.6.15" + "storybook": "^9.1.20" } } diff --git a/packages/storybook-framework-web-components/src/index.ts b/packages/storybook-framework-web-components/src/index.ts index d4702960d5..ea1bc8ac2d 100644 --- a/packages/storybook-framework-web-components/src/index.ts +++ b/packages/storybook-framework-web-components/src/index.ts @@ -1 +1,2 @@ +export * from '@storybook/web-components'; export * from './types.js'; diff --git a/packages/storybook-framework-web-components/src/preset.ts b/packages/storybook-framework-web-components/src/preset.ts index ea657f479a..f712e42873 100644 --- a/packages/storybook-framework-web-components/src/preset.ts +++ b/packages/storybook-framework-web-components/src/preset.ts @@ -1,9 +1,13 @@ -import type { PresetProperty } from '@storybook/types'; +import { dirname, join } from 'node:path'; +import type { PresetProperty } from 'storybook/internal/types'; import type { StorybookConfig } from './types.js'; +const getAbsolutePath = (input: I): I => + dirname(require.resolve(join(input, 'package.json'))) as any; + export const core: PresetProperty<'core', StorybookConfig> = { - builder: '@web/storybook-builder', - renderer: '@storybook/web-components', + builder: getAbsolutePath('@web/storybook-builder'), + renderer: getAbsolutePath('@storybook/web-components'), }; export const wdsFinal: StorybookConfig['wdsFinal'] = wdsConfig => { diff --git a/packages/storybook-framework-web-components/src/types.ts b/packages/storybook-framework-web-components/src/types.ts index 2a1de60753..276757ed1d 100644 --- a/packages/storybook-framework-web-components/src/types.ts +++ b/packages/storybook-framework-web-components/src/types.ts @@ -1,4 +1,4 @@ -import type { StorybookConfig as StorybookConfigBase } from '@storybook/types'; +import type { StorybookConfig as StorybookConfigBase } from 'storybook/internal/types'; import type { BuilderOptions, StorybookConfigWds } from '@web/storybook-builder'; type FrameworkName = '@web/storybook-framework-web-components'; diff --git a/packages/storybook-framework-web-components/tests/all-in-one.spec.js b/packages/storybook-framework-web-components/tests/all-in-one.spec.js index f93b0d277a..2115255394 100644 --- a/packages/storybook-framework-web-components/tests/all-in-one.spec.js +++ b/packages/storybook-framework-web-components/tests/all-in-one.spec.js @@ -28,50 +28,35 @@ test.describe('all in one', () => { await sbPage.waitUntilLoaded(); }); - test('renders core manager toolbar', async () => { + test('renders core toolbars', async () => { await expect(sbPage.toolbarItemByTitle('Remount component')).toBeVisible(); await expect(sbPage.toolbarItemByTitle('Zoom in')).toBeVisible(); await expect(sbPage.toolbarItemByTitle('Zoom out')).toBeVisible(); await expect(sbPage.toolbarItemByTitle('Reset zoom')).toBeVisible(); - }); - test('renders @storybook/addon-backgrounds toolbar', async () => { - await expect(sbPage.toolbarItemByTitle('Change the background of the preview')).toBeVisible(); await expect(sbPage.toolbarItemByTitle('Apply a grid to the preview')).toBeVisible(); - }); - - test('renders @storybook/addon-viewport toolbar', async () => { - await expect(sbPage.toolbarItemByTitle('Change the size of the preview')).toBeVisible(); - }); - - test('renders @storybook/addon-measure toolbar', async () => { + await expect(sbPage.toolbarItemByTitle('Change the background of the preview')).toBeVisible(); await expect(sbPage.toolbarItemByTitle('Enable measure')).toBeVisible(); - }); - - test('renders @storybook/addon-outline toolbar', async () => { await expect(sbPage.toolbarItemByTitle('Apply outlines to the preview')).toBeVisible(); + await expect(sbPage.toolbarItemByTitle('Change the size of the preview')).toBeVisible(); }); - test('renders @storybook/addon-a11y toolbar', async () => { - await expect(sbPage.toolbarItemByTitle('Vision simulator')).toBeVisible(); - }); + test('renders core panels', async () => { + const controlsButton = sbPage.panelButtonByText('Controls'); + await controlsButton.click(); + await expect(controlsButton).toHaveClass(/tabbutton-active/); - test('renders @storybook/addon-controls panel', async () => { - const panelButton = sbPage.panelButtonByText('Controls'); - await panelButton.click(); - await expect(panelButton).toHaveClass(/tabbutton-active/); - }); + const actionsButton = sbPage.panelButtonByText('Actions'); + await actionsButton.click(); + await expect(actionsButton).toHaveClass(/tabbutton-active/); - test('renders @storybook/addon-actions panel', async () => { - const panelButton = sbPage.panelButtonByText('Actions'); - await panelButton.click(); - await expect(panelButton).toHaveClass(/tabbutton-active/); + const interactionsButton = sbPage.panelButtonByText('Interactions'); + await interactionsButton.click(); + await expect(interactionsButton).toHaveClass(/tabbutton-active/); }); - test('renders @storybook/addon-interactions panel', async () => { - const panelButton = sbPage.panelButtonByText('Interactions'); - await panelButton.click(); - await expect(panelButton).toHaveClass(/tabbutton-active/); + test('renders @storybook/addon-a11y toolbar', async () => { + await expect(sbPage.toolbarItemByTitle('Vision simulator')).toBeVisible(); }); test('renders @storybook/addon-a11y panel', async () => { @@ -80,7 +65,7 @@ test.describe('all in one', () => { await expect(panelButton).toHaveClass(/tabbutton-active/); }); - test('renders @web/mocks/storybook-addon panel', async () => { + test('renders @web/storybook-addon-mocks panel', async () => { const panelButton = sbPage.panelButtonByText('Mocks'); await panelButton.click(); await expect(panelButton).toHaveClass(/tabbutton-active/); diff --git a/packages/storybook-framework-web-components/tests/fixtures/all-in-one/.storybook/main.js b/packages/storybook-framework-web-components/tests/fixtures/all-in-one/.storybook/main.js index d9e52b9be2..2e8305e73a 100644 --- a/packages/storybook-framework-web-components/tests/fixtures/all-in-one/.storybook/main.js +++ b/packages/storybook-framework-web-components/tests/fixtures/all-in-one/.storybook/main.js @@ -4,11 +4,10 @@ import { importMetaAssets } from '@web/rollup-plugin-import-meta-assets'; const config = { stories: ['../stories/**/*.stories.js', '../stories/**/*.mdx'], addons: [ - '@storybook/addon-essentials', - '@storybook/addon-links', - '@storybook/addon-interactions', '@storybook/addon-a11y', - '@web/mocks/storybook-addon', + '@storybook/addon-docs', + '@storybook/addon-links', + '@web/storybook-addon-mocks', ], framework: { name: '@web/storybook-framework-web-components', @@ -24,10 +23,16 @@ const config = { return; } - // ignore warning about eval used by the storybook internals - if (log.code === 'EVAL') { - const logId = log.id?.replace(/\\/g, '/'); - if (logId?.includes('node_modules/@storybook/core/dist/preview/runtime.js')) { + // ignore circular dependency warnings in storybook internals + if (log.code === 'CIRCULAR_DEPENDENCY') { + const logIds = log.ids?.map(id => id?.replace(/\\/g, '/')); + if ( + logIds?.some( + id => + id?.endsWith('node_modules/storybook/dist/csf/index.js') || + id?.endsWith('node_modules/msw/lib/core/experimental/frames/http-frame.mjs'), + ) + ) { defaultHandler('warn', log); return; } diff --git a/packages/storybook-framework-web-components/tests/fixtures/all-in-one/stories/my-page.mdx b/packages/storybook-framework-web-components/tests/fixtures/all-in-one/stories/my-page.mdx index 608a8e441c..04304f8423 100644 --- a/packages/storybook-framework-web-components/tests/fixtures/all-in-one/stories/my-page.mdx +++ b/packages/storybook-framework-web-components/tests/fixtures/all-in-one/stories/my-page.mdx @@ -1,4 +1,4 @@ -import { Canvas, Markdown, Meta } from '@storybook/blocks'; +import { Canvas, Markdown, Meta } from '@storybook/addon-docs/blocks'; import { MDXFileLoader } from '@web/storybook-utils'; import * as MyComponentStories from './my-component.stories.js'; diff --git a/packages/storybook-utils/package.json b/packages/storybook-utils/package.json index 025aa584d9..a4a2f02cf9 100644 --- a/packages/storybook-utils/package.json +++ b/packages/storybook-utils/package.json @@ -43,7 +43,7 @@ "react": "^18.0.0 || ^19.0.0" }, "dependencies": { - "@storybook/core-events": "^7.0.0 || ^8.0.0" + "storybook": "^9.1.20" }, "devDependencies": { "react": "^19.0.0" diff --git a/packages/storybook-utils/src/create-addon.js b/packages/storybook-utils/src/create-addon.js index 34eb29032b..70ea8c581c 100644 --- a/packages/storybook-utils/src/create-addon.js +++ b/packages/storybook-utils/src/create-addon.js @@ -1,7 +1,7 @@ // @ts-nocheck import React from 'react'; -import { STORY_SPECIFIED, STORY_CHANGED, STORY_RENDERED } from '@storybook/core-events'; +import { STORY_SPECIFIED, STORY_CHANGED, STORY_RENDERED } from 'storybook/internal/core-events'; // A default set of Storybook events that are forwarded to the addon as they occur. If an addon // needs additional events (either Storybook or custom events), they can be passed via the options. diff --git a/tsconfig.json b/tsconfig.json index 3e3809c03e..1447fbb9a2 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -110,4 +110,4 @@ "path": "./packages/test-runner-visual-regression/tsconfig.json" } ] -} \ No newline at end of file +}