From ce4ca192eee1b7b908b713a2fa3e4b5744de60aa Mon Sep 17 00:00:00 2001 From: Alf Eaton Date: Tue, 21 Apr 2026 14:19:42 +0100 Subject: [PATCH] Upgrade Storybook to v10 (#30442) GitOrigin-RevId: 9f51624bc2b34b6746d1854969173b44c9c9cf9a --- package-lock.json | 2405 +++++------------ services/web/.eslintrc.js | 1 + services/web/.gitignore | 2 + services/web/.storybook/main.ts | 21 +- services/web/.storybook/manager.ts | 4 +- services/web/.storybook/preview.tsx | 2 +- .../web/.storybook/utils/with-split-tests.tsx | 2 +- .../shared/commands/intercept-async.ts | 2 +- .../support/shared/commands/linked-file.ts | 4 +- .../cypress/support/shared/commands/upload.ts | 9 +- .../resize/horizontal-resize-handle.tsx | 6 +- .../resize/vertical-resize-handle.tsx | 6 +- .../extensions/visual/paste-html.ts | 2 +- .../visual/utils/typeset-content.ts | 2 +- .../frontend/js/features/utils/ciam-icon.ts | 2 +- .../js/infrastructure/error-boundary.tsx | 6 +- .../stories/decorators/ide-redesign.tsx | 2 +- .../stories/deprecated-browser.stories.tsx | 2 +- .../frontend/stories/docs/cloud-builds.mdx | 2 +- .../frontend/stories/docs/feature-flags.mdx | 4 +- .../web/frontend/stories/docs/foundations.mdx | 2 +- .../editor/pdf-compile-button.stories.tsx | 2 +- .../stories/editor/synctex-toasts.stories.tsx | 2 +- .../stories/loading/loading.stories.tsx | 2 +- .../unsaved-docs-locked-modal.stories.tsx | 2 +- .../frontend/stories/online-users.stories.tsx | 2 +- .../stories/pdf-log-entry.stories.tsx | 2 +- .../stories/shared/autocomplete.stories.tsx | 2 +- .../frontend/stories/shared/badge.stories.tsx | 2 +- .../shared/billing-period-toggle.stories.tsx | 2 +- .../stories/shared/button.stories.tsx | 2 +- .../stories/shared/buttons.stories.tsx | 2 +- .../stories/shared/dropdown-menu.stories.tsx | 2 +- .../stories/shared/ds/ds-button.stories.tsx | 2 +- .../shared/ds/ds-form-check.stories.tsx | 2 +- .../shared/ds/ds-form-control.stories.tsx | 2 +- .../shared/ds/ds-form-radio.stories.tsx | 2 +- .../shared/ds/ds-selection-group.stories.tsx | 2 +- .../shared/ds/ds-six-digits-input.stories.tsx | 2 +- .../shared/form/form-check.stories.tsx | 2 +- .../shared/form/form-input.stories.tsx | 2 +- .../shared/form/form-radio.stories.tsx | 2 +- .../shared/form/form-select.stories.tsx | 2 +- .../shared/form/form-textarea.stories.tsx | 2 +- .../stories/shared/icon-button.stories.tsx | 2 +- .../shared/labeled-divider.stories.tsx | 2 +- .../shared/loading-spinner.stories.tsx | 2 +- .../stories/shared/menu-bar.stories.tsx | 2 +- .../frontend/stories/shared/modal.stories.tsx | 2 +- .../frontend/stories/shared/row.stories.tsx | 2 +- .../stories/shared/select.stories.tsx | 2 +- .../stories/shared/split-button.stories.tsx | 2 +- .../shared/split-test-badge.stories.tsx | 2 +- .../start-free-trial-button.stories.tsx | 2 +- .../frontend/stories/shared/tag.stories.tsx | 2 +- .../stories/shared/tooltip.stories.tsx | 2 +- .../stories/shared/upgrade-prompt.stories.tsx | 2 +- .../source-editor/source-editor.stories.tsx | 2 +- .../active-subscription.stories.tsx | 2 +- .../stories/word-count-modal.stories.tsx | 2 +- .../stories/full-project-search.stories.tsx | 2 +- services/web/package.json | 24 +- services/web/tsconfig.json | 2 +- 63 files changed, 816 insertions(+), 1778 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6cf5669e57..c56d3cda7e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7767,24 +7767,21 @@ } }, "node_modules/@figspec/components": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@figspec/components/-/components-1.0.3.tgz", - "integrity": "sha512-fBwHzJ4ouuOUJEi+yBZIrOy+0/fAjB3AeTcIHTT1PRxLz8P63xwC7R0EsIJXhScIcc+PljGmqbbVJCjLsnaGYA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@figspec/components/-/components-2.1.0.tgz", + "integrity": "sha512-PFKBX2oFz+vhThKTNsu7Mh4ZT3X7YCiM694UkAMT36j/p0tdmXs9Je0Sf88stTEcMgwYvNv9TZtvniYmgaE+bw==", "dev": true, - "license": "MIT", - "dependencies": { - "lit": "^2.1.3" - } + "license": "MIT" }, "node_modules/@figspec/react": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@figspec/react/-/react-1.0.4.tgz", - "integrity": "sha512-jaPvkIef4d6NjsRiw91OZabrfdPH9FtoPGYcY5mpXjYEcdUqIq1aHtLq3SkMVyVysEapTEJ6yS8amy93MyXBEQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@figspec/react/-/react-2.0.1.tgz", + "integrity": "sha512-xflqJ3XQZVzm8+7dsm8OFxVAmBNNA3Mg65sqwNHiq7VRSMSD7qwH4BPsBy07ZaX+9nHeaacBpFZd3Q0aIsISqw==", "dev": true, "license": "MIT", "dependencies": { - "@figspec/components": "^1.0.1", - "@lit-labs/react": "^1.0.2" + "@figspec/components": "^2.0.1", + "@lit-labs/react": "^2.0.0" }, "peerDependencies": { "react": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" @@ -9983,11 +9980,14 @@ } }, "node_modules/@lit-labs/react": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@lit-labs/react/-/react-1.2.1.tgz", - "integrity": "sha512-DiZdJYFU0tBbdQkfwwRSwYyI/mcWkg3sWesKRsHUd4G+NekTmmeq9fzsurvcKTNVa0comNljwtg4Hvi1ds3V+A==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@lit-labs/react/-/react-2.1.3.tgz", + "integrity": "sha512-OD9h2JynerBQUMNzb563jiVpxfvPF0HjQkKY2mx0lpVYvD7F+rtJpOGz6ek+6ufMidV3i+MPT9SX62OKWHFrQg==", "dev": true, - "license": "BSD-3-Clause" + "license": "BSD-3-Clause", + "dependencies": { + "@lit/react": "^1.0.3" + } }, "node_modules/@lit-labs/ssr-dom-shim": { "version": "1.5.1", @@ -9995,14 +9995,14 @@ "integrity": "sha512-Aou5UdlSpr5whQe8AA/bZG0jMj96CoJIWbGfZ91qieWu5AWUMKw8VR/pAkQkJYvBNhmCcWnZlyyk5oze8JIqYA==", "license": "BSD-3-Clause" }, - "node_modules/@lit/reactive-element": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.3.tgz", - "integrity": "sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==", + "node_modules/@lit/react": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@lit/react/-/react-1.0.8.tgz", + "integrity": "sha512-p2+YcF+JE67SRX3mMlJ1TKCSTsgyOVdAwd/nxp3NuV1+Cb6MWALbN6nT7Ld4tpmYofcE5kcaSY1YBB9erY+6fw==", "dev": true, "license": "BSD-3-Clause", - "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.0.0" + "peerDependencies": { + "@types/react": "17 || 18 || 19" } }, "node_modules/@lukeed/csprng": { @@ -13693,19 +13693,6 @@ "node": ">=10" } }, - "node_modules/@sindresorhus/merge-streams": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", - "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@sinonjs/commons": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", @@ -14512,103 +14499,41 @@ "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", "license": "MIT" }, - "node_modules/@storybook/addon-actions": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.6.17.tgz", - "integrity": "sha512-/G3Y7WIzGHMtKT6r3KCqgY/pAzfMhNHvBoRWoPfxMa27GiwmUaJlbfRPSReK/jGz6ye0Uwqix+NFbRXKiTqOJQ==", + "node_modules/@storybook/addon-a11y": { + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-10.3.5.tgz", + "integrity": "sha512-5k6lpgfIeLxvNhE8v3wEzdiu73ONKjF4gmH1AHvfqYd8kIVzQJai0KCDxgvqNncXHQhIWkaf1fg6+9hKaYJyaw==", "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" + "axe-core": "^4.2.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.17" - } - }, - "node_modules/@storybook/addon-actions/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/@storybook/addon-backgrounds": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.6.17.tgz", - "integrity": "sha512-oh7jEQUt8WhH7cBm0jsJ1dujyaujM5rVS5IXJmDgdFJ8l0pqGzOUDmgkBVX147Uo5W1U47Sx+hA69lg6TKPOMQ==", - "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.17" - } - }, - "node_modules/@storybook/addon-controls": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.6.17.tgz", - "integrity": "sha512-kquUfiJyJMh8IHviTIz1A4UKqqNfvqrYFku9D3UukqkTriM1ngDOb9nryaJcUNTkco5JmIuGjYEJisva+u13lw==", - "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.17" + "storybook": "^10.3.5" } }, "node_modules/@storybook/addon-designs": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-designs/-/addon-designs-8.2.1.tgz", - "integrity": "sha512-orwihs1D5alhh4Qu3BSJKbSgQOdSagvRX/25m5fYZQAaqVErBY0lRR4vCAU/G/STkcdv+MHwIQ5U+0kX5Tm2+w==", + "version": "11.1.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-designs/-/addon-designs-11.1.3.tgz", + "integrity": "sha512-AK+ij478Y6S16TCNPwm7H90OipVe2wZApOlHjC6qDvMW61zyd4yP1icrRtjehSadw5SCoz8HcAmIYfQCOY6E4A==", "dev": true, "license": "MIT", "dependencies": { - "@figspec/react": "^1.0.0" + "@figspec/react": "^2.0.0" }, "peerDependencies": { - "@storybook/blocks": "^8.0.0 || ^8.1.0-0 || ^8.2.0-0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0", - "@storybook/components": "^8.0.0 || ^8.1.0-0 || ^8.2.0-0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0", - "@storybook/theming": "^8.0.0 || ^8.1.0-0 || ^8.2.0-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/addon-docs": "^10.0.0 || ^10.0.0-0 || ^10.1.0-0 || ^10.2.0-0", + "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": "^10.0.0 || ^10.0.0-0 || ^10.1.0-0 || ^10.2.0-0" }, "peerDependenciesMeta": { - "@storybook/blocks": { - "optional": true - }, - "@storybook/components": { - "optional": true - }, - "@storybook/theming": { + "@storybook/addon-docs": { "optional": true }, "react": { @@ -14620,16 +14545,16 @@ } }, "node_modules/@storybook/addon-docs": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.6.17.tgz", - "integrity": "sha512-zvcSzoYvaZO4l9NxsviDr5vmuq8GVnH4Ap0v+5sSTq192yevm/iQcRnkWYBD9E/Lg5GBeyE+Ml2vjEOK+EPBEg==", + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-10.3.5.tgz", + "integrity": "sha512-WuHbxia/o5TX4Rg/IFD0641K5qId/Nk0dxhmAUNoFs5L0+yfZUwh65XOBbzXqrkYmYmcVID4v7cgDRmzstQNkA==", "dev": true, "license": "MIT", "dependencies": { "@mdx-js/react": "^3.0.0", - "@storybook/blocks": "8.6.17", - "@storybook/csf-plugin": "8.6.17", - "@storybook/react-dom-shim": "8.6.17", + "@storybook/csf-plugin": "10.3.5", + "@storybook/icons": "^2.0.1", + "@storybook/react-dom-shim": "10.3.5", "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" @@ -14639,13 +14564,48 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.17" + "storybook": "^10.3.5" } }, - "node_modules/@storybook/addon-highlight": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.6.17.tgz", - "integrity": "sha512-Tf7DxksSg+DqH0a0rLIpB5g9bJBUHcqmEGeYGX7EPQrXBpQAtFXz/XdzuD8eYDlPC1r42iQQw4w+CQnXJCOHFw==", + "node_modules/@storybook/addon-docs/node_modules/@storybook/csf-plugin": { + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-10.3.5.tgz", + "integrity": "sha512-qlEzNKxOjq86pvrbuMwiGD/bylnsXk1dg7ve0j77YFjEEchqtl7qTlrXvFdNaLA89GhW6D/EV6eOCu/eobPDgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "unplugin": "^2.3.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "esbuild": "*", + "rollup": "*", + "storybook": "^10.3.5", + "vite": "*", + "webpack": "*" + }, + "peerDependenciesMeta": { + "esbuild": { + "optional": true + }, + "rollup": { + "optional": true + }, + "vite": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/@storybook/addon-links": { + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-10.3.5.tgz", + "integrity": "sha512-Xe2wCGZ+hpZ0cDqAIBHk+kPc8nODNbu585ghd5bLrlYJMDVXoNM/fIlkrLgjIDVbfpgeJLUEg7vldJrn+FyOLw==", "dev": true, "license": "MIT", "dependencies": { @@ -14655,355 +14615,56 @@ "type": "opencollective", "url": "https://opencollective.com/storybook" }, - "peerDependencies": { - "storybook": "^8.6.17" - } - }, - "node_modules/@storybook/addon-measure": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.6.17.tgz", - "integrity": "sha512-OFGmCrz9MTWfxa0t2GP+633VXZS7W3ahIM5bRmCTeG+jF/gdiVw3S2Adq7YiIZw+nROW9VtHBjuWGvy2miZxcQ==", - "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.17" - } - }, - "node_modules/@storybook/addon-outline": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.6.17.tgz", - "integrity": "sha512-UfFThgImS8cuv9Mts5JozGO2/SgjU61uKZxn7w+YpJQu0r2UAF56ZBBMZF/Ur5IC4HaoqDWF5DksMlFqMHPBsw==", - "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.17" - } - }, - "node_modules/@storybook/addon-styling-webpack": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-styling-webpack/-/addon-styling-webpack-1.0.1.tgz", - "integrity": "sha512-5n+SXPfMTc4m7sWaJWPWjoHYWc6/B111M2Ia55toQ3GV4ON4vVlTgH9FX+EgCkDticElj99HLTMDJkHRj2yvkg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/node-logger": "^8.0.0-alpha.10" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/@storybook/addon-toolbars": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.6.17.tgz", - "integrity": "sha512-LoWtnMVQJWivAu+SZdgYIsaiEqIq0mZ8Ses2xSwLnQZxndCakyqPYv/7YcdLDJaX5f8DpjPvSzJ77oa75oKgFw==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.17" - } - }, - "node_modules/@storybook/addon-viewport": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.6.17.tgz", - "integrity": "sha512-gVUtbFQq/mpD5CFOqXGAu5hUpGm/t5G/psg3YsTjnaRBd18dJZ/+//HzZVbX9aEW8t5qTJeJcEYaF5463BVfNA==", - "dev": true, - "license": "MIT", - "dependencies": { - "memoizerific": "^1.11.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.17" - } - }, - "node_modules/@storybook/addon-webpack5-compiler-babel": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-webpack5-compiler-babel/-/addon-webpack5-compiler-babel-3.0.6.tgz", - "integrity": "sha512-J4uVxEfkd2iAxPxcT90iebt5wuLSd0EYuMJa94t1jVUGlvZZAvnmqXAqscRITNU37nOr0c9yZ2YVS/sFOZyOVw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.26.0", - "babel-loader": "^9.2.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@storybook/addon-webpack5-compiler-babel/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@storybook/addon-webpack5-compiler-babel/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/@storybook/addon-webpack5-compiler-babel/node_modules/babel-loader": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", - "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-cache-dir": "^4.0.0", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 14.15.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0", - "webpack": ">=5" - } - }, - "node_modules/@storybook/addon-webpack5-compiler-babel/node_modules/find-cache-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", - "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "common-path-prefix": "^3.0.0", - "pkg-dir": "^7.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/addon-webpack5-compiler-babel/node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/addon-webpack5-compiler-babel/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/@storybook/addon-webpack5-compiler-babel/node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^6.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/addon-webpack5-compiler-babel/node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/addon-webpack5-compiler-babel/node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/addon-webpack5-compiler-babel/node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/@storybook/addon-webpack5-compiler-babel/node_modules/pkg-dir": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", - "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^6.3.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/addon-webpack5-compiler-babel/node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/@storybook/addon-webpack5-compiler-babel/node_modules/yocto-queue": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", - "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/blocks": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.6.17.tgz", - "integrity": "sha512-zuYHH+0egovMrjWRKwOtgVGbz6KALGowPSWBzQ8deTBu6IXfkz6Ce1hRLJPn5S6/jDqqr9xx8vuAiypnRQ98tA==", - "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.17" + "storybook": "^10.3.5" }, "peerDependenciesMeta": { "react": { "optional": true - }, - "react-dom": { - "optional": true } } }, - "node_modules/@storybook/builder-webpack5": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.6.17.tgz", - "integrity": "sha512-QK0HuTLn/doWQNu/tBC8tP0DrQLqyZk/IeYaxYh43G3igsYHI+yTIG//lHLSRFqkJM6tFT2SIJO8xExE/MCMGQ==", + "node_modules/@storybook/addon-styling-webpack": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-styling-webpack/-/addon-styling-webpack-3.0.2.tgz", + "integrity": "sha512-u7d5ur+It6XWSwd5yxHN6dTzIfj23as3zHJBf1IfDvi/GWmsW7zrmfsWpRIyBkIhBmdL+oSsTtLLTjuC9HeL8Q==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "storybook": "^10.0.0 || ^10.0.0-0 || ^10.1.0-0 || ^10.2.0-0 || ^10.3.0-0 || ^10.4.0-0", + "webpack": "^5.0.0" + } + }, + "node_modules/@storybook/addon-webpack5-compiler-babel": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@storybook/addon-webpack5-compiler-babel/-/addon-webpack5-compiler-babel-4.0.1.tgz", + "integrity": "sha512-1oTh6264hFGl40D5YCPhnpuirXeBSNo+7L8MZ4pKMLRLOsnK8CKC3Yp4L+tGySsJFsem8RXau8eZAQskf2Re/g==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.6.17", - "@types/semver": "^7.3.4", - "browser-assert": "^1.2.1", + "@babel/core": "^7.26.0", + "babel-loader": "^10.0.0" + } + }, + "node_modules/@storybook/builder-webpack5": { + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-10.3.5.tgz", + "integrity": "sha512-DYjIpfuwkl8CrDbYWjMcwxrLY3QpcZtDJr4ZcT3hrbZHF5BJ3HnVIv1YM+KF/bJfIUMS2h/YMsRyKVYGthiSzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/core-webpack": "10.3.5", "case-sensitive-paths-webpack-plugin": "^2.4.0", "cjs-module-lexer": "^1.2.3", - "constants-browserify": "^1.0.0", - "css-loader": "^6.7.1", + "css-loader": "^7.1.2", "es-module-lexer": "^1.5.0", - "fork-ts-checker-webpack-plugin": "^8.0.0", + "fork-ts-checker-webpack-plugin": "^9.1.0", "html-webpack-plugin": "^5.5.0", "magic-string": "^0.30.5", - "path-browserify": "^1.0.1", - "process": "^0.11.10", - "semver": "^7.3.7", - "style-loader": "^3.3.1", - "terser-webpack-plugin": "^5.3.1", + "style-loader": "^4.0.0", + "terser-webpack-plugin": "^5.3.14", "ts-dedent": "^2.0.0", - "url": "^0.11.0", - "util": "^0.12.4", - "util-deprecate": "^1.0.2", "webpack": "5", "webpack-dev-middleware": "^6.1.2", "webpack-hot-middleware": "^2.25.1", @@ -15014,7 +14675,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.17" + "storybook": "^10.3.5" }, "peerDependenciesMeta": { "typescript": { @@ -15052,6 +14713,42 @@ "ajv": "^8.8.2" } }, + "node_modules/@storybook/builder-webpack5/node_modules/css-loader": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.4.tgz", + "integrity": "sha512-vv3J9tlOl04WjiMvHQI/9tmIrCxVrj6PFbHemBB1iihpeRbi/I4h033eoFIhwxBBqLhI0KYFS7yvynBFhIZfTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.40", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.6.3" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || ^1.0.0 || ^2.0.0-0", + "webpack": "^5.27.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, "node_modules/@storybook/builder-webpack5/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -15092,6 +14789,23 @@ "node": ">=10" } }, + "node_modules/@storybook/builder-webpack5/node_modules/style-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-4.0.0.tgz", + "integrity": "sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.27.0" + } + }, "node_modules/@storybook/builder-webpack5/node_modules/webpack-dev-middleware": { "version": "6.1.3", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.3.tgz", @@ -15122,36 +14836,22 @@ } }, "node_modules/@storybook/cli": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-8.6.17.tgz", - "integrity": "sha512-xt3qw2AqOFNZs3EtBR/9/NPm9aMNiRtPQjrJxTcQhxcZiDoyMFOGlxzSG33rNN9Jx+jsvibrTd5MQhkLCPJaeg==", + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-10.3.5.tgz", + "integrity": "sha512-W5OIZ9nTtzRfGcHbS+kk2K26kIECsLCP33P4KUxdZ5SQlHgwKjgylk1IkQRyh8EIa0Q3ht/44hsx+1Oe7gQKag==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.24.4", - "@babel/types": "^7.24.0", - "@storybook/codemod": "8.6.17", - "@types/semver": "^7.3.4", - "commander": "^12.1.0", - "create-storybook": "8.6.17", - "cross-spawn": "^7.0.3", - "envinfo": "^7.7.3", - "fd-package-json": "^1.2.0", - "find-up": "^5.0.0", - "giget": "^1.0.0", - "glob": "^10.0.0", - "globby": "^14.0.1", + "@storybook/codemod": "10.3.5", + "@types/semver": "^7.7.1", + "commander": "^14.0.2", + "create-storybook": "10.3.5", "jscodeshift": "^0.15.1", - "leven": "^3.1.0", - "p-limit": "^6.2.0", - "prompts": "^2.4.0", - "semver": "^7.3.7", - "storybook": "8.6.17", - "tiny-invariant": "^1.3.1", + "storybook": "10.3.5", "ts-dedent": "^2.0.0" }, "bin": { - "cli": "bin/index.cjs" + "cli": "dist/bin/index.js" }, "funding": { "type": "opencollective", @@ -15159,44 +14859,13 @@ } }, "node_modules/@storybook/cli/node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", + "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" - } - }, - "node_modules/@storybook/cli/node_modules/globby": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz", - "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/merge-streams": "^2.1.0", - "fast-glob": "^3.3.3", - "ignore": "^7.0.3", - "path-type": "^6.0.0", - "slash": "^5.1.0", - "unicorn-magic": "^0.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/cli/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" + "node": ">=20" } }, "node_modules/@storybook/cli/node_modules/jscodeshift": { @@ -15239,61 +14908,6 @@ } } }, - "node_modules/@storybook/cli/node_modules/p-limit": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.2.0.tgz", - "integrity": "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^1.1.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/cli/node_modules/path-type": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz", - "integrity": "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/cli/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@storybook/cli/node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@storybook/cli/node_modules/write-file-atomic": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", @@ -15306,75 +14920,27 @@ "signal-exit": "^3.0.2" } }, - "node_modules/@storybook/cli/node_modules/yocto-queue": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", - "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@storybook/codemod": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-8.6.17.tgz", - "integrity": "sha512-nrUukrIO96DE/WupKnb7LvR6GT2cJHQOueJcgMNcqn3aMUhdLTirGBNb7EPPF0v4xFqMO3sAT7rzOI9OA2OGsg==", + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-10.3.5.tgz", + "integrity": "sha512-AQazJ8a/53u4Us5sDbk16+VE6+G3kj59ppZQqdQtLIxcC5qgDuOTVKpXRD+cV3Wv2EVbg0LPgHPjnTOq/XKubg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.24.4", - "@babel/preset-env": "^7.24.4", - "@babel/types": "^7.24.0", - "@storybook/core": "8.6.17", - "@types/cross-spawn": "^6.0.2", - "cross-spawn": "^7.0.3", - "es-toolkit": "^1.22.0", - "globby": "^14.0.1", + "@types/cross-spawn": "^6.0.6", + "cross-spawn": "^7.0.6", + "es-toolkit": "^1.43.0", "jscodeshift": "^0.15.1", - "prettier": "^3.1.1", - "recast": "^0.23.5", - "tiny-invariant": "^1.3.1" + "prettier": "^3.7.1", + "storybook": "10.3.5", + "tiny-invariant": "^1.3.1", + "tinyglobby": "^0.2.13" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/codemod/node_modules/globby": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz", - "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/merge-streams": "^2.1.0", - "fast-glob": "^3.3.3", - "ignore": "^7.0.3", - "path-type": "^6.0.0", - "slash": "^5.1.0", - "unicorn-magic": "^0.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/codemod/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, "node_modules/@storybook/codemod/node_modules/jscodeshift": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.2.tgz", @@ -15415,32 +14981,6 @@ } } }, - "node_modules/@storybook/codemod/node_modules/path-type": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz", - "integrity": "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/codemod/node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@storybook/codemod/node_modules/write-file-atomic": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", @@ -15453,56 +14993,10 @@ "signal-exit": "^3.0.2" } }, - "node_modules/@storybook/components": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.6.17.tgz", - "integrity": "sha512-0b8xkkuPCNbM8LTOzyfxuo2KdJCHIfu3+QxWBFllXap0eYNHwVeSxE5KERQ/bk2GDCiRzaUbwH9PeLorxOzJJQ==", - "dev": true, - "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.17", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.6.17.tgz", - "integrity": "sha512-lndZDYIvUddWk54HmgYwE4h2B0JtWt8ztIRAzHRt6ReZZ9QQbmM5b85Qpa+ng4dyQEKc2JAtYD3Du7RRFcpHlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/theming": "8.6.17", - "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-webpack": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.6.17.tgz", - "integrity": "sha512-q8acHGExmDdqUyzYoPrxp52bUQ3pEskXlcZIETReb3++pATv7zlSghPVA283O9jgj9jYfz9VYyRjW3vqzIzi0A==", + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-10.3.5.tgz", + "integrity": "sha512-CEtGU2f6+FefIR3v4P1KBJB17UngZDSmib2w36jfVp1pNPIzqdIG2s1NCKAM7vbQHxXVcLpBH31mJqyU+vdypQ==", "dev": true, "license": "MIT", "dependencies": { @@ -15513,37 +15007,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.17" - } - }, - "node_modules/@storybook/core/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@storybook/csf-plugin": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.6.17.tgz", - "integrity": "sha512-ouvF/izbKclZxpfnRUkyC5ZVDU7QA0cHhjQnXTDT4F8b0uciQUDw1LosDZy5MXf03BeIDdyBAtzd/ym3wzd+kw==", - "dev": true, - "license": "MIT", - "dependencies": { - "unplugin": "^1.3.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.17" + "storybook": "^10.3.5" } }, "node_modules/@storybook/global": { @@ -15554,140 +15018,41 @@ "license": "MIT" }, "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==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-2.0.1.tgz", + "integrity": "sha512-/smVjw88yK3CKsiuR71vNgWQ9+NuY2L+e8X7IMrFjexjm6ZR8ULrV2DRkTA61aV6ryefslzHEGDInGpnNeIocg==", "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/instrumenter": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.6.17.tgz", - "integrity": "sha512-uPqC0sPY2tYGkEVi1x+L4hvhkTwxT16B/LB8xIXh68co3gR8vY6wVskoBp2tM7LSUGl08U2ksZWxyTo1DaQY5Q==", - "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.17" - } - }, - "node_modules/@storybook/instrumenter/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, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@storybook/instrumenter/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, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "2.1.9", - "loupe": "^3.1.2", - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@storybook/instrumenter/node_modules/loupe": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", - "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@storybook/instrumenter/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, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@storybook/manager-api": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.6.17.tgz", - "integrity": "sha512-sPJytvClNrw5GgKcPletMTxDOAYcTRA8VRt9E+ncKvPSYHtPDqLfGTgWajXmt0hRsiBUN5bOgLS9bmNjNQWhrw==", - "dev": true, - "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==", - "dev": true, - "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" + "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" } }, "node_modules/@storybook/preset-react-webpack": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.6.17.tgz", - "integrity": "sha512-gMEc6BL8hQIXwOK6yeDc9PMgHKJO6wNM2c8Cttmk9oZeq1YzwIdrQjcLVdKYINGVaQRqLFBvLTmCzz/qPtI5qg==", + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-10.3.5.tgz", + "integrity": "sha512-PAlh2nJOY+yxYBUBAurWOdd+1RGhl8e5MhpC8hTNhaTB8//WKTpUAOyM8Q1PvflCYKU9Hz11nP4Q4jY1WVEoUA==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.6.17", - "@storybook/react": "8.6.17", + "@storybook/core-webpack": "10.3.5", "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", - "@types/semver": "^7.3.4", - "find-up": "^5.0.0", + "@types/semver": "^7.7.1", "magic-string": "^0.30.5", - "react-docgen": "^7.0.0", + "react-docgen": "^7.1.1", "resolve": "^1.22.8", - "semver": "^7.3.7", + "semver": "^7.7.3", "tsconfig-paths": "^4.2.0", "webpack": "5" }, - "engines": { - "node": ">=18.0.0" - }, "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.17" + "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": "^10.3.5" }, "peerDependenciesMeta": { "typescript": { @@ -15723,52 +15088,29 @@ "node": ">=6" } }, - "node_modules/@storybook/preview-api": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.6.17.tgz", - "integrity": "sha512-vpTCTkw11wXerYnlG5Q0y4SbFqG9O6GhR0hlYgCn3Z9kcHlNjK/xuwd3h4CvwNXxRNWZGT8qYYCLn5gSSrX6fA==", - "dev": true, - "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/react": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.6.17.tgz", - "integrity": "sha512-yoOzgyZ2VXPJBmvcKS4EVoAf7SJxXbMBcLjWGvmWdDnS+hd7S9cHG/SbgQ+9/vgiLUc+uEuvQjiKrwY3iOA5rg==", + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-10.3.5.tgz", + "integrity": "sha512-tpLTLaVGoA6fLK3ReyGzZUricq7lyPaV2hLPpj5wqdXLV/LpRtAHClUpNoPDYSBjlnSjL81hMZijbkGC3mA+gw==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/components": "8.6.17", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "8.6.17", - "@storybook/preview-api": "8.6.17", - "@storybook/react-dom-shim": "8.6.17", - "@storybook/theming": "8.6.17" - }, - "engines": { - "node": ">=18.0.0" + "@storybook/react-dom-shim": "10.3.5", + "react-docgen": "^8.0.2", + "react-docgen-typescript": "^2.2.2" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@storybook/test": "8.6.17", - "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.17", - "typescript": ">= 4.2.x" + "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": "^10.3.5", + "typescript": ">= 4.9.x" }, "peerDependenciesMeta": { - "@storybook/test": { - "optional": true - }, "typescript": { "optional": true } @@ -15829,9 +15171,9 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.6.17.tgz", - "integrity": "sha512-bHLsR9b/tiwm9lXbN8kp9XlOgkRXeg84UFwXaWBPu3pOO7vRXukk23SQUpLW+HhjKtCJ3xClSi5uMpse5MpkVQ==", + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-10.3.5.tgz", + "integrity": "sha512-Gw8R7XZm0zSUH0XAuxlQJhmizsLzyD6x00KOlP6l7oW9eQHXGfxg3seNDG3WrSAcW07iP1/P422kuiriQlOv7g==", "dev": true, "license": "MIT", "funding": { @@ -15839,34 +15181,31 @@ "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.17" + "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": "^10.3.5" } }, "node_modules/@storybook/react-webpack5": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.6.17.tgz", - "integrity": "sha512-61rMF7O+Un+XgfSODkkvpQv6QToMkYB1OJBqHMidW4/VROuA+G51a2+xTWD1JrwIU11uJQU2DeqHn6w2nc9blQ==", + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-10.3.5.tgz", + "integrity": "sha512-g5nxwFBVjm59IDG8qu0mnIno7DJHKvBuJvwO/HyHSuaKvmNRkDCJ8mDegPhpaEwmHPX4dg1GDDUjZ4fwFbQWbA==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/builder-webpack5": "8.6.17", - "@storybook/preset-react-webpack": "8.6.17", - "@storybook/react": "8.6.17" - }, - "engines": { - "node": ">=18.0.0" + "@storybook/builder-webpack5": "10.3.5", + "@storybook/preset-react-webpack": "10.3.5", + "@storybook/react": "10.3.5" }, "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.17", - "typescript": ">= 4.2.x" + "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": "^10.3.5", + "typescript": ">= 4.9.x" }, "peerDependenciesMeta": { "typescript": { @@ -15874,228 +15213,26 @@ } } }, - "node_modules/@storybook/test": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.6.17.tgz", - "integrity": "sha512-VTuCylXGQrFDZXqZ29+yvJ+A4TZ69jG72rLjiic8hI0SOt87AC/8X1NaYvd2NS4TY0G0PwqtxmKeig8qRDrhNg==", + "node_modules/@storybook/react/node_modules/react-docgen": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-8.0.3.tgz", + "integrity": "sha512-aEZ9qP+/M+58x2qgfSFEWH1BxLyHe5+qkLNJOZQb5iGS017jpbRnoKhNRrXPeA6RfBrZO5wZrT9DMC1UqE1f1w==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.6.17", - "@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.17" - } - }, - "node_modules/@storybook/test/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, - "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", - "redent": "^3.0.0" + "@babel/core": "^7.28.0", + "@babel/traverse": "^7.28.0", + "@babel/types": "^7.28.2", + "@types/babel__core": "^7.20.5", + "@types/babel__traverse": "^7.20.7", + "@types/doctrine": "^0.0.9", + "@types/resolve": "^1.20.2", + "doctrine": "^3.0.0", + "resolve": "^1.22.1", + "strip-indent": "^4.0.0" }, "engines": { - "node": ">=14", - "npm": ">=6", - "yarn": ">=1" - } - }, - "node_modules/@storybook/test/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/@storybook/test/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, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@storybook/test/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, - "license": "MIT", - "dependencies": { - "tinyspy": "^3.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@storybook/test/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, - "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" - } - }, - "node_modules/@storybook/test/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/@storybook/test/node_modules/chai": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", - "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "assertion-error": "^2.0.1", - "check-error": "^2.1.1", - "deep-eql": "^5.0.1", - "loupe": "^3.1.0", - "pathval": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@storybook/test/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/@storybook/test/node_modules/check-error": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz", - "integrity": "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 16" - } - }, - "node_modules/@storybook/test/node_modules/deep-eql": { - "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/@storybook/test/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/@storybook/test/node_modules/loupe": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", - "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@storybook/test/node_modules/pathval": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", - "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.16" - } - }, - "node_modules/@storybook/test/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/@storybook/test/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, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@storybook/theming": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.6.17.tgz", - "integrity": "sha512-IttFvRqozpuzN5MlQEWGOzUA2rZg86688Dyv1d+bjpYcFHtY1X4XyTCGwv1BPTaTsB959oM8R2yoNYWQkABbBA==", - "dev": true, - "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": "^20.9.0 || >=22" } }, "node_modules/@streamdown/cjk": { @@ -16327,10 +15464,11 @@ } }, "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==", + "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==", "dev": true, + "license": "MIT", "engines": { "node": ">=12", "npm": ">=6" @@ -17281,9 +16419,10 @@ } }, "node_modules/@types/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==" + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", + "license": "MIT" }, "node_modules/@types/send": { "version": "0.17.1", @@ -18951,6 +18090,13 @@ "@xtuc/long": "4.2.2" } }, + "node_modules/@webcontainer/env": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webcontainer/env/-/env-1.1.1.tgz", + "integrity": "sha512-6aN99yL695Hi9SuIk1oC88l9o0gmxL1nGWWQ/kNy81HigJ0FoaoTXpytCj6ItzgyCEwA9kF1wixsTuv5cjsgng==", + "dev": true, + "license": "MIT" + }, "node_modules/@webpack-cli/configtest": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", @@ -20623,19 +19769,6 @@ "npm": ">= 6.13.0" } }, - "node_modules/better-opn": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", - "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "open": "^8.0.4" - }, - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/bidi-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", @@ -20868,12 +20001,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==", - "dev": true - }, "node_modules/browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", @@ -21815,16 +20942,6 @@ "node": ">=8" } }, - "node_modules/citty": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", - "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "consola": "^3.2.3" - } - }, "node_modules/cjs-module-lexer": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", @@ -22118,13 +21235,6 @@ "node": ">= 6" } }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true, - "license": "ISC" - }, "node_modules/common-tags": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", @@ -22250,13 +21360,6 @@ "typedarray": "^0.0.6" } }, - "node_modules/confbox": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", - "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", - "dev": true, - "license": "MIT" - }, "node_modules/config-chain": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", @@ -22300,16 +21403,6 @@ "node": ">=12" } }, - "node_modules/consola": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", - "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.18.0 || >=16.10.0" - } - }, "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -22331,13 +21424,6 @@ "@babel/types": "^7.6.1" } }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", - "dev": true, - "license": "MIT" - }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -22685,17 +21771,17 @@ } }, "node_modules/create-storybook": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/create-storybook/-/create-storybook-8.6.17.tgz", - "integrity": "sha512-G9I3bDqnpBx1xkALiWjBDJFusf+wEzU9z0ShckZAo45PRzTekHfFov5rvfU3XPk98sodGOzyGpxDqdQTZ8hN8Q==", + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/create-storybook/-/create-storybook-10.3.5.tgz", + "integrity": "sha512-hQiNoC9TUyU/QodBXaHXkIO+NE99x6APTN7PIMe3lXzxUo8L8keLEbXy9VuXKNyI+XvMAbrqBoFWVfhtnJ0JaA==", "dev": true, "license": "MIT", "dependencies": { - "recast": "^0.23.5", - "semver": "^7.6.2" + "semver": "^7.7.3", + "storybook": "10.3.5" }, "bin": { - "create-storybook": "bin/index.cjs" + "create-storybook": "dist/bin/index.js" }, "funding": { "type": "opencollective", @@ -22876,48 +21962,6 @@ "webpack": "^5.0.0" } }, - "node_modules/css-loader/node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/css-loader/node_modules/postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/css-loader/node_modules/postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dev": true, - "dependencies": { - "icss-utils": "^5.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, "node_modules/css-loader/node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", @@ -24107,13 +23151,16 @@ } }, "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/define-properties": { @@ -24133,13 +23180,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/defu": { - "version": "6.1.7", - "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.7.tgz", - "integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==", - "dev": true, - "license": "MIT" - }, "node_modules/delay": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", @@ -25213,19 +24253,6 @@ "@esbuild/win32-x64": "0.25.3" } }, - "node_modules/esbuild-register": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", - "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, - "peerDependencies": { - "esbuild": ">=0.12 <1" - } - }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -25904,6 +24931,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-storybook": { + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-10.3.5.tgz", + "integrity": "sha512-rEFkfU3ypF44GpB4tiJ9EFDItueoGvGi3+weLHZax2ON2MB7VIDsxdSUGvIU5tMURg+oWYlpzCyLm4TpDq2deA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^8.48.0" + }, + "peerDependencies": { + "eslint": ">=8", + "storybook": "^10.3.5" + } + }, "node_modules/eslint-plugin-testing-library": { "version": "7.5.3", "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-7.5.3.tgz", @@ -27107,16 +26148,6 @@ "integrity": "sha1-EOhdo4v+p/xZk0HClu4ddyZu5kA=", "dev": true }, - "node_modules/fd-package-json": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fd-package-json/-/fd-package-json-1.2.0.tgz", - "integrity": "sha512-45LSPmWf+gC5tdCQMNH4s9Sr00bIkiD9aN7dc5hqkrEw1geRYyDQS1v1oMHAW3ysfxfndqGsrDREHHjNNbKUfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "walk-up-path": "^3.0.1" - } - }, "node_modules/fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -27665,16 +26696,16 @@ } }, "node_modules/fork-ts-checker-webpack-plugin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz", - "integrity": "sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.1.0.tgz", + "integrity": "sha512-mpafl89VFPJmhnJ1ssH+8wmM2b50n+Rew5x42NeI2U78aRWgtkEtGmctp7iT16UjquJTjorEmIfESj3DxdW84Q==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.16.7", "chalk": "^4.1.2", - "chokidar": "^3.5.3", - "cosmiconfig": "^7.0.1", + "chokidar": "^4.0.1", + "cosmiconfig": "^8.2.0", "deepmerge": "^4.2.2", "fs-extra": "^10.0.0", "memfs": "^3.4.1", @@ -27685,14 +26716,56 @@ "tapable": "^2.2.1" }, "engines": { - "node": ">=12.13.0", - "yarn": ">=1.0.0" + "node": ">=14.21.3" }, "peerDependencies": { "typescript": ">3.6.0", "webpack": "^5.11.0" } }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/minimatch": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", @@ -27706,6 +26779,20 @@ "node": "*" } }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", @@ -28224,25 +27311,6 @@ "node": ">=0.8" } }, - "node_modules/giget": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/giget/-/giget-1.2.5.tgz", - "integrity": "sha512-r1ekGw/Bgpi3HLV3h1MRBIlSAdHoIMklpaQ3OQLFcRw9PwAj2rqigvIbg+dBUI51OxVI2jsEtDywDBjSiuf7Ug==", - "dev": true, - "license": "MIT", - "dependencies": { - "citty": "^0.1.6", - "consola": "^3.4.0", - "defu": "^6.1.4", - "node-fetch-native": "^1.6.6", - "nypm": "^0.5.4", - "pathe": "^2.0.3", - "tar": "^6.2.1" - }, - "bin": { - "giget": "dist/cli.mjs" - } - }, "node_modules/glob": { "version": "10.5.0", "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", @@ -31032,23 +30100,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==", - "dev": true, - "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.5", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", @@ -32322,16 +31373,6 @@ } } }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/jsdom": { "version": "28.1.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-28.1.0.tgz", @@ -33203,16 +32244,6 @@ "node": ">=10.13.0" } }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -33533,40 +32564,6 @@ } } }, - "node_modules/lit": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/lit/-/lit-2.8.0.tgz", - "integrity": "sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@lit/reactive-element": "^1.6.0", - "lit-element": "^3.3.0", - "lit-html": "^2.8.0" - } - }, - "node_modules/lit-element": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.3.3.tgz", - "integrity": "sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.1.0", - "@lit/reactive-element": "^1.3.0", - "lit-html": "^2.8.0" - } - }, - "node_modules/lit-html": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.8.0.tgz", - "integrity": "sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@types/trusted-types": "^2.0.2" - } - }, "node_modules/load-script": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz", @@ -34110,13 +33107,6 @@ "node": ">=4" } }, - "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/markdown-table": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", @@ -34751,16 +33741,6 @@ "timers-ext": "^0.1.7" } }, - "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/memory-pager": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", @@ -35832,32 +34812,6 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "license": "MIT" }, - "node_modules/mlly": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz", - "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.15.0", - "pathe": "^2.0.3", - "pkg-types": "^1.3.1", - "ufo": "^1.6.1" - } - }, - "node_modules/mlly/node_modules/acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/mmdb-lib": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/mmdb-lib/-/mmdb-lib-2.0.2.tgz", @@ -36656,13 +35610,6 @@ } } }, - "node_modules/node-fetch-native": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.6.tgz", - "integrity": "sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==", - "dev": true, - "license": "MIT" - }, "node_modules/node-fetch/node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -37245,27 +36192,6 @@ "node": ">=6" } }, - "node_modules/nypm": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.5.4.tgz", - "integrity": "sha512-X0SNNrZiGU8/e/zAB7sCTtdxWTMSIO73q+xuKgglm2Yvzwlo8UoC5FNySQFCvl84uPaeADkqHUZUkWy4aH4xOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "citty": "^0.1.6", - "consola": "^3.4.0", - "pathe": "^2.0.3", - "pkg-types": "^1.3.1", - "tinyexec": "^0.3.2", - "ufo": "^1.5.4" - }, - "bin": { - "nypm": "dist/cli.mjs" - }, - "engines": { - "node": "^14.16.0 || >=16.10.0" - } - }, "node_modules/oauth": { "version": "0.9.15", "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz", @@ -37505,18 +36431,19 @@ } }, "node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", "dev": true, "license": "MIT", "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -38571,18 +37498,6 @@ "node": ">=8" } }, - "node_modules/pkg-types": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", - "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "confbox": "^0.1.8", - "mlly": "^1.7.4", - "pathe": "^2.0.1" - } - }, "node_modules/pkg-up": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", @@ -38720,19 +37635,6 @@ "node": "*" } }, - "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/possible-typed-array-names": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", @@ -39566,14 +38468,28 @@ "node": ">=4" } }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", - "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", + "dev": true, + "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", + "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.1.0" }, "engines": { @@ -39583,6 +38499,66 @@ "postcss": "^8.1.0" } }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", + "dev": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, "node_modules/postcss-nested": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", @@ -40474,30 +39450,6 @@ "read": "^1.0.4" } }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/prompts/node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -43957,13 +42909,6 @@ "node": ">=8" } }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true, - "license": "MIT" - }, "node_modules/slash": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", @@ -44387,18 +43332,28 @@ } }, "node_modules/storybook": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.6.17.tgz", - "integrity": "sha512-krR/l680A6qVnkGiK9p8jY0ucX3+kFCs2f4zw+S3w2Cdq8EiM/tFebPcX2V4S3z2UsO0v0dwAJOJNpzbFPdmVg==", + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-10.3.5.tgz", + "integrity": "sha512-uBSZu/GZa9aEIW3QMGvdQPMZWhGxSe4dyRWU8B3/Vd47Gy/XLC7tsBxRr13txmmPOEDHZR94uLuq0H50fvuqBw==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core": "8.6.17" + "@storybook/global": "^5.0.0", + "@storybook/icons": "^2.0.1", + "@testing-library/jest-dom": "^6.9.1", + "@testing-library/user-event": "^14.6.1", + "@vitest/expect": "3.2.4", + "@vitest/spy": "3.2.4", + "@webcontainer/env": "^1.1.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 || ^0.26.0 || ^0.27.0", + "open": "^10.2.0", + "recast": "^0.23.5", + "semver": "^7.7.3", + "use-sync-external-store": "^1.5.0", + "ws": "^8.18.0" }, "bin": { - "getstorybook": "bin/index.cjs", - "sb": "bin/index.cjs", - "storybook": "bin/index.cjs" + "storybook": "dist/bin/dispatcher.js" }, "funding": { "type": "opencollective", @@ -44413,6 +43368,162 @@ } } }, + "node_modules/storybook/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, + "node_modules/storybook/node_modules/@vitest/expect": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", + "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@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/storybook/node_modules/@vitest/pretty-format": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", + "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/storybook/node_modules/@vitest/spy": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", + "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^4.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/storybook/node_modules/@vitest/utils": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", + "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.4", + "loupe": "^3.1.4", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/storybook/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/storybook/node_modules/chai": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", + "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/storybook/node_modules/check-error": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz", + "integrity": "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + } + }, + "node_modules/storybook/node_modules/deep-eql": { + "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/storybook/node_modules/loupe": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", + "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/storybook/node_modules/pathval": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16" + } + }, + "node_modules/storybook/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/storybook/node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/stream-browserify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", @@ -46355,13 +45466,6 @@ "dev": true, "license": "MIT" }, - "node_modules/tinyexec": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", - "dev": true, - "license": "MIT" - }, "node_modules/tinyglobby": { "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", @@ -46421,9 +45525,9 @@ } }, "node_modules/tinyspy": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", - "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz", + "integrity": "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==", "dev": true, "license": "MIT", "engines": { @@ -47080,13 +46184,6 @@ "dev": true, "license": "MIT" }, - "node_modules/ufo": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", - "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", - "dev": true, - "license": "MIT" - }, "node_modules/uglify-js": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.0.tgz", @@ -47272,19 +46369,6 @@ "dev": true, "license": "MIT" }, - "node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/unified": { "version": "11.0.5", "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", @@ -47514,17 +46598,19 @@ } }, "node_modules/unplugin": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.16.1.tgz", - "integrity": "sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==", + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.11.tgz", + "integrity": "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==", "dev": true, "license": "MIT", "dependencies": { - "acorn": "^8.14.0", + "@jridgewell/remapping": "^2.3.5", + "acorn": "^8.15.0", + "picomatch": "^4.0.3", "webpack-virtual-modules": "^0.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.12.0" } }, "node_modules/unplugin/node_modules/acorn": { @@ -47540,6 +46626,19 @@ "node": ">=0.4.0" } }, + "node_modules/unplugin/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/untildify": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", @@ -47688,20 +46787,6 @@ "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==", "dev": true }, - "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==", - "dev": true, - "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", @@ -48281,13 +47366,6 @@ "node": ">=18" } }, - "node_modules/walk-up-path": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz", - "integrity": "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==", - "dev": true, - "license": "ISC" - }, "node_modules/warning": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", @@ -48733,19 +47811,6 @@ "ajv": "^8.8.2" } }, - "node_modules/webpack-dev-server/node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/webpack-dev-server/node_modules/ipaddr.js": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", @@ -48763,25 +47828,6 @@ "dev": true, "license": "MIT" }, - "node_modules/webpack-dev-server/node_modules/open": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", - "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "default-browser": "^5.2.1", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "wsl-utils": "^0.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/webpack-dev-server/node_modules/schema-utils": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", @@ -52534,17 +51580,14 @@ "@replit/codemirror-indentation-markers": "overleaf/codemirror-indentation-markers#371ce3b56f453a392eb0d3b85ab019c185c68e1f", "@replit/codemirror-vim": "overleaf/codemirror-vim#1bef138382d948018f3f9b8a4d7a70ab61774e4b", "@sentry/browser": "7.46.0", - "@storybook/addon-a11y": "^8.6.17", - "@storybook/addon-designs": "^8.2.1", - "@storybook/addon-essentials": "^8.6.17", - "@storybook/addon-interactions": "^8.6.17", - "@storybook/addon-links": "^8.6.17", - "@storybook/addon-styling-webpack": "^1.0.1", - "@storybook/addon-webpack5-compiler-babel": "^3.0.6", - "@storybook/cli": "^8.6.17", - "@storybook/react": "^8.6.17", - "@storybook/react-webpack5": "^8.6.17", - "@storybook/theming": "^8.6.17", + "@storybook/addon-a11y": "10.3.5", + "@storybook/addon-designs": "^11.1.3", + "@storybook/addon-docs": "10.3.5", + "@storybook/addon-links": "10.3.5", + "@storybook/addon-styling-webpack": "^3.0.2", + "@storybook/addon-webpack5-compiler-babel": "^4.0.1", + "@storybook/cli": "10.3.5", + "@storybook/react-webpack5": "10.3.5", "@streamdown/cjk": "^1.0.2", "@streamdown/math": "^1.0.2", "@tailwindcss/container-queries": "^0.1.1", @@ -52588,6 +51631,7 @@ "@uppy/xhr-upload": "^3.6.0", "@vitest/coverage-istanbul": "^4.0.17", "@vitest/eslint-plugin": "1.6.6", + "@vitest/mocker": "^4.0.15", "@writefull/core": "^1.27.27", "@writefull/ui": "^1.27.27", "@writefull/utils": "^1.27.27", @@ -52631,6 +51675,7 @@ "eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-react": "^7.32.2", "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-storybook": "10.3.5", "eslint-plugin-testing-library": "^7.1.1", "eslint-plugin-unicorn": "^56.0.0", "events": "^3.3.0", @@ -52704,8 +51749,9 @@ "sinon": "^7.5.0", "sinon-chai": "^3.7.0", "sinon-mongoose": "^2.3.0", - "storybook": "^8.6.17", + "storybook": "10.3.5", "streamdown": "^2.2.0", + "style-loader": "^4.0.0", "stylelint": "^16.26.1", "stylelint-config-standard-scss": "^13.1.0", "tailwindcss": "^3.4.4", @@ -53210,95 +52256,18 @@ "lodash": "^4.17.15" } }, - "services/web/node_modules/@storybook/addon-a11y": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-8.6.17.tgz", - "integrity": "sha512-W26CsptrxRuajW4FhygFX1fmcxTZQIvBcHCGOVIZtU+/tJU6+TgJvbhnhBX0VPjitGWAD1+EI3oNMyX+i1bK6w==", + "services/web/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, "license": "MIT", - "dependencies": { - "@storybook/addon-highlight": "8.6.17", - "@storybook/global": "^5.0.0", - "@storybook/test": "8.6.17", - "axe-core": "^4.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">=12", + "npm": ">=6" }, "peerDependencies": { - "storybook": "^8.6.17" - } - }, - "services/web/node_modules/@storybook/addon-essentials": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.6.17.tgz", - "integrity": "sha512-nyp2RUxWGpD+xhGWOo221kHOY6cZlgXsV1F11sn7WxkH+yA7YHhLLYlIPHmNKKH+hdxN0rnlcpwjbr21u0Katg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/addon-actions": "8.6.17", - "@storybook/addon-backgrounds": "8.6.17", - "@storybook/addon-controls": "8.6.17", - "@storybook/addon-docs": "8.6.17", - "@storybook/addon-highlight": "8.6.17", - "@storybook/addon-measure": "8.6.17", - "@storybook/addon-outline": "8.6.17", - "@storybook/addon-toolbars": "8.6.17", - "@storybook/addon-viewport": "8.6.17", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.17" - } - }, - "services/web/node_modules/@storybook/addon-interactions": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.6.17.tgz", - "integrity": "sha512-aj0jC5kMnYYHBofAZrPAfZf2/j9BXMIwMJ9dLdc7Qwxsvig3txWlSx7Wh+szaR2jDz/areh1rZyrwiPHyxxQ4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.6.17", - "@storybook/test": "8.6.17", - "polished": "^4.2.2", - "ts-dedent": "^2.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "storybook": "^8.6.17" - } - }, - "services/web/node_modules/@storybook/addon-links": { - "version": "8.6.17", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.6.17.tgz", - "integrity": "sha512-ch1GgXILEmekf81nUvmre3xyhlg5zDibRxm8+psPqj7GqzWBI5l4kAiha0XOBWGz6vQEL5xCvN/rr8rfA9kWdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/global": "^5.0.0", - "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-beta", - "storybook": "^8.6.17" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - } + "@testing-library/dom": ">=7.21.4" } }, "services/web/node_modules/@transloadit/prettier-bytes": { @@ -53547,6 +52516,43 @@ "node": ">=18" } }, + "services/web/node_modules/@vitest/mocker": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.4.tgz", + "integrity": "sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "4.1.4", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.21" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "services/web/node_modules/@vitest/mocker/node_modules/@vitest/spy": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.4.tgz", + "integrity": "sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://opencollective.com/vitest" + } + }, "services/web/node_modules/@vitest/pretty-format": { "version": "4.0.17", "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.17.tgz", @@ -54263,6 +53269,23 @@ "integrity": "sha512-QO3OGhKyeIV8p6eRQdG+W6WounFw519zk690hHCNfhgfP9bylVS+NTXsuBc7n+RsGn31UgFPGrWYIgoAbArKEw==", "license": "MIT" }, + "services/web/node_modules/style-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-4.0.0.tgz", + "integrity": "sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.27.0" + } + }, "services/web/node_modules/tinyexec": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", diff --git a/services/web/.eslintrc.js b/services/web/.eslintrc.js index 3a9b106394..72570440c4 100644 --- a/services/web/.eslintrc.js +++ b/services/web/.eslintrc.js @@ -10,6 +10,7 @@ module.exports = { 'plugin:@typescript-eslint/recommended', 'standard', 'prettier', + 'plugin:storybook/recommended', ], plugins: ['@overleaf'], env: { diff --git a/services/web/.gitignore b/services/web/.gitignore index 9946f23ae6..5475a79063 100644 --- a/services/web/.gitignore +++ b/services/web/.gitignore @@ -33,3 +33,5 @@ frontend/js/features/source-editor/lezer-bibtex/bibtex.mjs frontend/js/features/source-editor/lezer-bibtex/bibtex.terms.mjs !**/fixtures/**/*.log + +debug-storybook.log diff --git a/services/web/.storybook/main.ts b/services/web/.storybook/main.ts index 775e223bbd..7830d490d6 100644 --- a/services/web/.storybook/main.ts +++ b/services/web/.storybook/main.ts @@ -1,7 +1,14 @@ +// This file has been automatically migrated to valid ESM format by Storybook. +import { fileURLToPath } from 'node:url' +import { createRequire } from 'node:module' import type { StorybookConfig } from '@storybook/react-webpack5' -import path from 'node:path' +import path, { dirname } from 'node:path' import MiniCssExtractPlugin from 'mini-css-extract-plugin' +const __filename = fileURLToPath(import.meta.url) +const __dirname = dirname(__filename) +const require = createRequire(import.meta.url) + const rootDir = path.resolve(__dirname, '..') // NOTE: must be set before webpack config is imported @@ -20,17 +27,18 @@ const config: StorybookConfig = { core: { disableTelemetry: true, }, + staticDirs: [path.join(rootDir, 'public')], + stories: [ path.join(rootDir, 'frontend/stories/**/*.stories.{js,jsx,ts,tsx}'), path.join(rootDir, 'modules/**/stories/**/*.stories.{js,jsx,ts,tsx}'), path.join(rootDir, 'frontend/stories/**/*.mdx'), path.join(rootDir, 'modules/**/stories/**/*.mdx'), ], + addons: [ getAbsolutePath('@storybook/addon-links'), - getAbsolutePath('@storybook/addon-essentials'), - getAbsolutePath('@storybook/addon-interactions'), getAbsolutePath('@storybook/addon-a11y'), getAbsolutePath('@storybook/addon-designs'), getAbsolutePath('@storybook/addon-webpack5-compiler-babel'), @@ -76,14 +84,14 @@ const config: StorybookConfig = { plugins: [new MiniCssExtractPlugin()], }, }, + getAbsolutePath('@storybook/addon-docs'), ], + framework: { name: getAbsolutePath('@storybook/react-webpack5'), options: {}, }, - docs: { - autodocs: 'tag', - }, + babel: (options: Record) => { return { ...options, @@ -95,6 +103,7 @@ const config: StorybookConfig = { ], } }, + webpackFinal: storybookConfig => { return { ...storybookConfig, diff --git a/services/web/.storybook/manager.ts b/services/web/.storybook/manager.ts index f5bdff692d..63601e9c22 100644 --- a/services/web/.storybook/manager.ts +++ b/services/web/.storybook/manager.ts @@ -1,5 +1,5 @@ -import { addons } from '@storybook/manager-api' -import { create } from '@storybook/theming/create' +import { addons } from 'storybook/manager-api' +import { create } from 'storybook/theming/create' import './manager.css' diff --git a/services/web/.storybook/preview.tsx b/services/web/.storybook/preview.tsx index e3d6d73f4a..59f7084a77 100644 --- a/services/web/.storybook/preview.tsx +++ b/services/web/.storybook/preview.tsx @@ -1,4 +1,4 @@ -import type { Preview } from '@storybook/react' +import type { Preview } from '@storybook/react-webpack5' // Storybook does not (currently) support async loading of "stories". Therefore // the strategy in frontend/js/i18n.ts does not work (because we cannot wait on diff --git a/services/web/.storybook/utils/with-split-tests.tsx b/services/web/.storybook/utils/with-split-tests.tsx index 64773533d8..80a7690891 100644 --- a/services/web/.storybook/utils/with-split-tests.tsx +++ b/services/web/.storybook/utils/with-split-tests.tsx @@ -1,4 +1,4 @@ -import type { Meta } from '@storybook/react' +import type { Meta } from '@storybook/react-webpack5' import _ from 'lodash' import { SplitTestContext } from '@/shared/context/split-test-context' diff --git a/services/web/cypress/support/shared/commands/intercept-async.ts b/services/web/cypress/support/shared/commands/intercept-async.ts index e11d10e24c..6ffa76c67d 100644 --- a/services/web/cypress/support/shared/commands/intercept-async.ts +++ b/services/web/cypress/support/shared/commands/intercept-async.ts @@ -1,4 +1,4 @@ -import { RouteHandler, RouteMatcher } from 'cypress/types/net-stubbing' +import type { RouteMatcher, RouteHandler } from 'cypress/types/net-stubbing' export const interceptAsync = (route: RouteMatcher, alias: string) => { const deferred: { resolve: (value: RouteHandler) => void } = { diff --git a/services/web/cypress/support/shared/commands/linked-file.ts b/services/web/cypress/support/shared/commands/linked-file.ts index b3e17775f2..6f0e8c9dd3 100644 --- a/services/web/cypress/support/shared/commands/linked-file.ts +++ b/services/web/cypress/support/shared/commands/linked-file.ts @@ -1,10 +1,8 @@ -import { HttpRequestInterceptor } from 'cypress/types/net-stubbing' - export const interceptLinkedFile = () => { cy.intercept( { method: 'POST', url: '/project/*/linked_file' }, cy - .spy((req: Parameters[0]) => { + .spy(req => { req.reply({ statusCode: 200, body: { success: true } }) }) .as('linked-file-request') diff --git a/services/web/cypress/support/shared/commands/upload.ts b/services/web/cypress/support/shared/commands/upload.ts index b03e5663e8..a6ba08c552 100644 --- a/services/web/cypress/support/shared/commands/upload.ts +++ b/services/web/cypress/support/shared/commands/upload.ts @@ -1,17 +1,16 @@ -import { HttpRequestInterceptor } from 'cypress/types/net-stubbing' - export const interceptFileUpload = () => { cy.intercept( { method: 'POST', url: /\/project\/.*\/upload/ }, cy - .spy((req: Parameters[0]) => { + .spy(req => { const folderMatch = req.url.match( /project\/.*\/upload\?folder_id=[a-f0-9]{24}/ ) - if (!folderMatch) { + if (folderMatch) { + req.reply({ statusCode: 200, body: { success: true } }) + } else { req.reply({ statusCode: 500, body: { success: false } }) } - req.reply({ statusCode: 200, body: { success: true } }) }) .as('uploadRequest') ) diff --git a/services/web/frontend/js/features/ide-react/components/resize/horizontal-resize-handle.tsx b/services/web/frontend/js/features/ide-react/components/resize/horizontal-resize-handle.tsx index 7ba48e30db..315d656e3f 100644 --- a/services/web/frontend/js/features/ide-react/components/resize/horizontal-resize-handle.tsx +++ b/services/web/frontend/js/features/ide-react/components/resize/horizontal-resize-handle.tsx @@ -1,7 +1,9 @@ -import { PanelResizeHandle } from 'react-resizable-panels' +import { + PanelResizeHandle, + PanelResizeHandleProps, +} from 'react-resizable-panels' import { FC, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' -import { PanelResizeHandleProps } from 'react-resizable-panels/dist/declarations/src/PanelResizeHandle' import classNames from 'classnames' type HorizontalResizeHandleOwnProps = { diff --git a/services/web/frontend/js/features/ide-react/components/resize/vertical-resize-handle.tsx b/services/web/frontend/js/features/ide-react/components/resize/vertical-resize-handle.tsx index 9fb2e878ad..4ac40709a0 100644 --- a/services/web/frontend/js/features/ide-react/components/resize/vertical-resize-handle.tsx +++ b/services/web/frontend/js/features/ide-react/components/resize/vertical-resize-handle.tsx @@ -1,6 +1,8 @@ -import { PanelResizeHandle } from 'react-resizable-panels' +import { + PanelResizeHandle, + PanelResizeHandleProps, +} from 'react-resizable-panels' import { useTranslation } from 'react-i18next' -import { PanelResizeHandleProps } from 'react-resizable-panels/dist/declarations/src/PanelResizeHandle' import classNames from 'classnames' export function VerticalResizeHandle(props: PanelResizeHandleProps) { diff --git a/services/web/frontend/js/features/source-editor/extensions/visual/paste-html.ts b/services/web/frontend/js/features/source-editor/extensions/visual/paste-html.ts index f572fed274..25020df045 100644 --- a/services/web/frontend/js/features/source-editor/extensions/visual/paste-html.ts +++ b/services/web/frontend/js/features/source-editor/extensions/visual/paste-html.ts @@ -583,7 +583,7 @@ type ElementSelector = { const createSelector = < T extends string, E extends HTMLElement = T extends keyof HTMLElementTagNameMap - ? HTMLElementTagNameMap[T] + ? Extract : HTMLElement, >({ selector, diff --git a/services/web/frontend/js/features/source-editor/extensions/visual/utils/typeset-content.ts b/services/web/frontend/js/features/source-editor/extensions/visual/utils/typeset-content.ts index 939f0cbc8e..6a48941305 100644 --- a/services/web/frontend/js/features/source-editor/extensions/visual/utils/typeset-content.ts +++ b/services/web/frontend/js/features/source-editor/extensions/visual/utils/typeset-content.ts @@ -78,7 +78,7 @@ export function typesetNodeIntoElement( let from = node.from const addMarkup = (markup: Markup, childNode: SyntaxNode) => { - const element = document.createElement(markup.elementType) + const element = document.createElement(markup.elementType) as HTMLElement if (markup.className) { element.classList.add(markup.className) } diff --git a/services/web/frontend/js/features/utils/ciam-icon.ts b/services/web/frontend/js/features/utils/ciam-icon.ts index d37579a4d2..fc699d3457 100644 --- a/services/web/frontend/js/features/utils/ciam-icon.ts +++ b/services/web/frontend/js/features/utils/ciam-icon.ts @@ -1,6 +1,6 @@ export function ciamIcon(type: 'error' | 'info', className?: string) { const elName = type === 'error' ? 'ph-warning-circle' : 'ph-info' - const icon = document.createElement(elName) + const icon = document.createElement(elName) as HTMLElement if (className) { icon.className = className } diff --git a/services/web/frontend/js/infrastructure/error-boundary.tsx b/services/web/frontend/js/infrastructure/error-boundary.tsx index c975a99849..39e881da6f 100644 --- a/services/web/frontend/js/infrastructure/error-boundary.tsx +++ b/services/web/frontend/js/infrastructure/error-boundary.tsx @@ -1,7 +1,9 @@ import { captureException } from './error-reporter' -import { withErrorBoundary as rebWithErrorBoundary } from 'react-error-boundary' +import { + withErrorBoundary as rebWithErrorBoundary, + FallbackProps, +} from 'react-error-boundary' import { ComponentType, ErrorInfo } from 'react' -import { FallbackProps } from 'react-error-boundary/dist/declarations/src/types' function errorHandler(error: Error, errorInfo: ErrorInfo) { captureException(error, { diff --git a/services/web/frontend/stories/decorators/ide-redesign.tsx b/services/web/frontend/stories/decorators/ide-redesign.tsx index 373f2c040c..d0708790d8 100644 --- a/services/web/frontend/stories/decorators/ide-redesign.tsx +++ b/services/web/frontend/stories/decorators/ide-redesign.tsx @@ -1,4 +1,4 @@ -import { Decorator } from '@storybook/react' +import { Decorator } from '@storybook/react-webpack5' export const IdeRedesign: Decorator = Story => (
diff --git a/services/web/frontend/stories/deprecated-browser.stories.tsx b/services/web/frontend/stories/deprecated-browser.stories.tsx index bf1b2dcb16..c353cf1b72 100644 --- a/services/web/frontend/stories/deprecated-browser.stories.tsx +++ b/services/web/frontend/stories/deprecated-browser.stories.tsx @@ -1,4 +1,4 @@ -import { Meta, StoryObj } from '@storybook/react' +import { Meta, StoryObj } from '@storybook/react-webpack5' import { DeprecatedBrowser } from '@/shared/components/deprecated-browser' const meta: Meta = { diff --git a/services/web/frontend/stories/docs/cloud-builds.mdx b/services/web/frontend/stories/docs/cloud-builds.mdx index 3534068ae6..8d0520c760 100644 --- a/services/web/frontend/stories/docs/cloud-builds.mdx +++ b/services/web/frontend/stories/docs/cloud-builds.mdx @@ -1,4 +1,4 @@ -import { Meta } from '@storybook/blocks' +import { Meta } from '@storybook/addon-docs/blocks' diff --git a/services/web/frontend/stories/docs/feature-flags.mdx b/services/web/frontend/stories/docs/feature-flags.mdx index 56fdd7e121..ec0cf32d24 100644 --- a/services/web/frontend/stories/docs/feature-flags.mdx +++ b/services/web/frontend/stories/docs/feature-flags.mdx @@ -1,4 +1,4 @@ -import { Canvas, Controls, Meta } from '@storybook/blocks' +import { Canvas, Controls, Meta } from '@storybook/addon-docs/blocks' import * as FormatCurrency from './format-currency.stories' @@ -22,7 +22,7 @@ export const splitTestsArgTypes = { 2. Wrap your story with `withSplitTests`. -Import `withSplitTests` and `Meta` from '@storybook/react' in your stories. +Import `withSplitTests` and `Meta` from '@storybook/react-webpack5' in your stories. ```js export default { diff --git a/services/web/frontend/stories/docs/foundations.mdx b/services/web/frontend/stories/docs/foundations.mdx index d5a972fef3..d764e65adf 100644 --- a/services/web/frontend/stories/docs/foundations.mdx +++ b/services/web/frontend/stories/docs/foundations.mdx @@ -4,7 +4,7 @@ import { ColorPalette, Title, Typeset, -} from '@storybook/blocks' +} from '@storybook/addon-docs/blocks' import colors from '../../stylesheets/foundations/tokens/colors.json' import typography from '../../stylesheets/foundations/tokens/typography.json' import borderRadius from '../../stylesheets/foundations/tokens/borderRadius.json' diff --git a/services/web/frontend/stories/editor/pdf-compile-button.stories.tsx b/services/web/frontend/stories/editor/pdf-compile-button.stories.tsx index 7d32b272b7..d83aa2f3a6 100644 --- a/services/web/frontend/stories/editor/pdf-compile-button.stories.tsx +++ b/services/web/frontend/stories/editor/pdf-compile-button.stories.tsx @@ -1,5 +1,5 @@ import { FC } from 'react' -import type { Meta } from '@storybook/react' +import type { Meta } from '@storybook/react-webpack5' import PdfCompileButton from '@/features/pdf-preview/components/pdf-compile-button' import { ScopeDecorator } from '../decorators/scope' import { CompileContext } from '@/shared/context/local-compile-context' diff --git a/services/web/frontend/stories/editor/synctex-toasts.stories.tsx b/services/web/frontend/stories/editor/synctex-toasts.stories.tsx index 831f21392e..f934e8c2bc 100644 --- a/services/web/frontend/stories/editor/synctex-toasts.stories.tsx +++ b/services/web/frontend/stories/editor/synctex-toasts.stories.tsx @@ -1,4 +1,4 @@ -import { Meta, StoryObj } from '@storybook/react' +import { Meta, StoryObj } from '@storybook/react-webpack5' import { OLToast } from '@/shared/components/ol/ol-toast' import { SynctexFileErrorToast } from '@/features/pdf-preview/components/synctex-toasts' diff --git a/services/web/frontend/stories/loading/loading.stories.tsx b/services/web/frontend/stories/loading/loading.stories.tsx index 2fed18a368..3ec57f0a1f 100644 --- a/services/web/frontend/stories/loading/loading.stories.tsx +++ b/services/web/frontend/stories/loading/loading.stories.tsx @@ -1,4 +1,4 @@ -import type { Meta, StoryObj } from '@storybook/react' +import type { Meta, StoryObj } from '@storybook/react-webpack5' import { LoadingUI } from '@/features/ide-react/components/loading' import { EditorProviders } from '../../../test/frontend/helpers/editor-providers' import { PartialMeta } from '@/utils/meta' diff --git a/services/web/frontend/stories/modals/unsaved-docs-locked-modal.stories.tsx b/services/web/frontend/stories/modals/unsaved-docs-locked-modal.stories.tsx index 324721e94d..929164e5d5 100644 --- a/services/web/frontend/stories/modals/unsaved-docs-locked-modal.stories.tsx +++ b/services/web/frontend/stories/modals/unsaved-docs-locked-modal.stories.tsx @@ -1,4 +1,4 @@ -import { Meta, StoryObj } from '@storybook/react' +import { Meta, StoryObj } from '@storybook/react-webpack5' import { UnsavedDocsLockedAlert } from '@/features/ide-react/components/unsaved-docs/unsaved-docs-locked-alert' import { ScopeDecorator } from '../decorators/scope' diff --git a/services/web/frontend/stories/online-users.stories.tsx b/services/web/frontend/stories/online-users.stories.tsx index bdbf761c50..035c8dcfa0 100644 --- a/services/web/frontend/stories/online-users.stories.tsx +++ b/services/web/frontend/stories/online-users.stories.tsx @@ -1,4 +1,4 @@ -import { Meta } from '@storybook/react' +import { Meta } from '@storybook/react-webpack5' import { OnlineUser } from '@/features/ide-react/context/online-users-context' import { OnlineUsersWidget } from '@/features/editor-navigation-toolbar/components/online-users-widget' diff --git a/services/web/frontend/stories/pdf-log-entry.stories.tsx b/services/web/frontend/stories/pdf-log-entry.stories.tsx index 7574b347f2..95a3e33fa9 100644 --- a/services/web/frontend/stories/pdf-log-entry.stories.tsx +++ b/services/web/frontend/stories/pdf-log-entry.stories.tsx @@ -1,5 +1,5 @@ import PdfLogEntry from '@/features/pdf-preview/components/pdf-log-entry' -import type { Meta, StoryObj } from '@storybook/react' +import type { Meta, StoryObj } from '@storybook/react-webpack5' import { ruleIds } from '@/ide/human-readable-logs/HumanReadableLogsHints' import { ScopeDecorator } from './decorators/scope' import { useMeta } from './hooks/use-meta' diff --git a/services/web/frontend/stories/shared/autocomplete.stories.tsx b/services/web/frontend/stories/shared/autocomplete.stories.tsx index 8fa395d04d..1b63735cb3 100644 --- a/services/web/frontend/stories/shared/autocomplete.stories.tsx +++ b/services/web/frontend/stories/shared/autocomplete.stories.tsx @@ -1,4 +1,4 @@ -import { Meta, StoryObj } from '@storybook/react' +import { Meta, StoryObj } from '@storybook/react-webpack5' import { useState } from 'react' import OLAutocomplete from '@/shared/components/ol/ol-autocomplete' diff --git a/services/web/frontend/stories/shared/badge.stories.tsx b/services/web/frontend/stories/shared/badge.stories.tsx index 9a7822faf8..25098e0ad3 100644 --- a/services/web/frontend/stories/shared/badge.stories.tsx +++ b/services/web/frontend/stories/shared/badge.stories.tsx @@ -1,4 +1,4 @@ -import type { Meta, StoryObj } from '@storybook/react' +import type { Meta, StoryObj } from '@storybook/react-webpack5' import classnames from 'classnames' import { figmaDesignUrl } from '../../../.storybook/utils/figma-design-url' import Badge from '@/shared/components/badge/badge' diff --git a/services/web/frontend/stories/shared/billing-period-toggle.stories.tsx b/services/web/frontend/stories/shared/billing-period-toggle.stories.tsx index ea773e2554..3dfc48dc74 100644 --- a/services/web/frontend/stories/shared/billing-period-toggle.stories.tsx +++ b/services/web/frontend/stories/shared/billing-period-toggle.stories.tsx @@ -1,4 +1,4 @@ -import type { Meta, StoryObj } from '@storybook/react' +import type { Meta, StoryObj } from '@storybook/react-webpack5' import { useState } from 'react' import BillingPeriodToggle, { type BillingPeriod, diff --git a/services/web/frontend/stories/shared/button.stories.tsx b/services/web/frontend/stories/shared/button.stories.tsx index 894124e015..63bfda2af5 100644 --- a/services/web/frontend/stories/shared/button.stories.tsx +++ b/services/web/frontend/stories/shared/button.stories.tsx @@ -1,4 +1,4 @@ -import { Meta } from '@storybook/react' +import { Meta } from '@storybook/react-webpack5' import { figmaDesignUrl } from '../../../.storybook/utils/figma-design-url' import OLButton from '@/shared/components/ol/ol-button' diff --git a/services/web/frontend/stories/shared/buttons.stories.tsx b/services/web/frontend/stories/shared/buttons.stories.tsx index 4460ad5133..2ae8824222 100644 --- a/services/web/frontend/stories/shared/buttons.stories.tsx +++ b/services/web/frontend/stories/shared/buttons.stories.tsx @@ -1,4 +1,4 @@ -import { Meta, StoryObj } from '@storybook/react' +import { Meta, StoryObj } from '@storybook/react-webpack5' import OLButton from '@/shared/components/ol/ol-button' import { ButtonProps } from '@/shared/components/types/button-props' diff --git a/services/web/frontend/stories/shared/dropdown-menu.stories.tsx b/services/web/frontend/stories/shared/dropdown-menu.stories.tsx index 448381ee7e..9d0e7e52f0 100644 --- a/services/web/frontend/stories/shared/dropdown-menu.stories.tsx +++ b/services/web/frontend/stories/shared/dropdown-menu.stories.tsx @@ -4,7 +4,7 @@ import { DropdownDivider, DropdownHeader, } from '@/shared/components/dropdown/dropdown-menu' -import type { Meta } from '@storybook/react' +import type { Meta } from '@storybook/react-webpack5' import OLDropdownMenuItem from '@/shared/components/ol/ol-dropdown-menu-item' import { IdeRedesign } from '../decorators/ide-redesign' diff --git a/services/web/frontend/stories/shared/ds/ds-button.stories.tsx b/services/web/frontend/stories/shared/ds/ds-button.stories.tsx index a7881e1c5f..a5a40e22c1 100644 --- a/services/web/frontend/stories/shared/ds/ds-button.stories.tsx +++ b/services/web/frontend/stories/shared/ds/ds-button.stories.tsx @@ -1,4 +1,4 @@ -import { Meta } from '@storybook/react' +import { Meta } from '@storybook/react-webpack5' import { figmaDesignUrl } from '../../../../.storybook/utils/figma-design-url' import DSButton from '@/shared/components/ds/ds-button' diff --git a/services/web/frontend/stories/shared/ds/ds-form-check.stories.tsx b/services/web/frontend/stories/shared/ds/ds-form-check.stories.tsx index a7097f04c7..5fa5a15146 100644 --- a/services/web/frontend/stories/shared/ds/ds-form-check.stories.tsx +++ b/services/web/frontend/stories/shared/ds/ds-form-check.stories.tsx @@ -1,4 +1,4 @@ -import type { Meta, StoryObj } from '@storybook/react' +import type { Meta, StoryObj } from '@storybook/react-webpack5' import DSFormCheckbox from '@/shared/components/ds/ds-form-checkbox' import { figmaDesignUrl } from '../../../../.storybook/utils/figma-design-url' diff --git a/services/web/frontend/stories/shared/ds/ds-form-control.stories.tsx b/services/web/frontend/stories/shared/ds/ds-form-control.stories.tsx index 7b6bc27712..b3b3096beb 100644 --- a/services/web/frontend/stories/shared/ds/ds-form-control.stories.tsx +++ b/services/web/frontend/stories/shared/ds/ds-form-control.stories.tsx @@ -1,4 +1,4 @@ -import { Meta } from '@storybook/react' +import { Meta } from '@storybook/react-webpack5' import { figmaDesignUrl } from '../../../../.storybook/utils/figma-design-url' import DSFormControl from '@/shared/components/ds/ds-form-control' import DSFormText from '@/shared/components/ds/ds-form-text' diff --git a/services/web/frontend/stories/shared/ds/ds-form-radio.stories.tsx b/services/web/frontend/stories/shared/ds/ds-form-radio.stories.tsx index be58034312..99a65cacf1 100644 --- a/services/web/frontend/stories/shared/ds/ds-form-radio.stories.tsx +++ b/services/web/frontend/stories/shared/ds/ds-form-radio.stories.tsx @@ -1,4 +1,4 @@ -import type { Meta, StoryObj } from '@storybook/react' +import type { Meta, StoryObj } from '@storybook/react-webpack5' import DSFormRadio from '@/shared/components/ds/ds-form-radio' import { figmaDesignUrl } from '../../../../.storybook/utils/figma-design-url' diff --git a/services/web/frontend/stories/shared/ds/ds-selection-group.stories.tsx b/services/web/frontend/stories/shared/ds/ds-selection-group.stories.tsx index 54fb20b5ed..4589e407a2 100644 --- a/services/web/frontend/stories/shared/ds/ds-selection-group.stories.tsx +++ b/services/web/frontend/stories/shared/ds/ds-selection-group.stories.tsx @@ -1,4 +1,4 @@ -import { Meta, type StoryObj } from '@storybook/react' +import { Meta, type StoryObj } from '@storybook/react-webpack5' import { figmaDesignUrl } from '../../../../.storybook/utils/figma-design-url' import DSSelectionGroup from '@/shared/components/ds/ds-selection-group' import DSSelectionGroupItem from '@/shared/components/ds/ds-selection-group-item' diff --git a/services/web/frontend/stories/shared/ds/ds-six-digits-input.stories.tsx b/services/web/frontend/stories/shared/ds/ds-six-digits-input.stories.tsx index ad893bdcf0..3e31d973ff 100644 --- a/services/web/frontend/stories/shared/ds/ds-six-digits-input.stories.tsx +++ b/services/web/frontend/stories/shared/ds/ds-six-digits-input.stories.tsx @@ -1,5 +1,5 @@ import { ComponentProps, useEffect, useState } from 'react' -import { Meta } from '@storybook/react' +import { Meta } from '@storybook/react-webpack5' import { figmaDesignUrl } from '../../../../.storybook/utils/figma-design-url' import DSFormGroup from '@/shared/components/ds/ds-form-group' import DSFormLabel from '@/shared/components/ds/ds-form-label' diff --git a/services/web/frontend/stories/shared/form/form-check.stories.tsx b/services/web/frontend/stories/shared/form/form-check.stories.tsx index f55c4863ac..cf94b75024 100644 --- a/services/web/frontend/stories/shared/form/form-check.stories.tsx +++ b/services/web/frontend/stories/shared/form/form-check.stories.tsx @@ -1,6 +1,6 @@ import { useRef, useLayoutEffect } from 'react' import { Form } from 'react-bootstrap' -import type { Meta, StoryObj } from '@storybook/react' +import type { Meta, StoryObj } from '@storybook/react-webpack5' import { figmaDesignUrl } from '../../../../.storybook/utils/figma-design-url' import OLFormCheckbox from '@/shared/components/ol/ol-form-checkbox' diff --git a/services/web/frontend/stories/shared/form/form-input.stories.tsx b/services/web/frontend/stories/shared/form/form-input.stories.tsx index f5ffdddade..e5f3328d99 100644 --- a/services/web/frontend/stories/shared/form/form-input.stories.tsx +++ b/services/web/frontend/stories/shared/form/form-input.stories.tsx @@ -1,5 +1,5 @@ import { Form } from 'react-bootstrap' -import type { Meta, StoryObj } from '@storybook/react' +import type { Meta, StoryObj } from '@storybook/react-webpack5' import FormGroup from '@/shared/components/form/form-group' import FormText from '@/shared/components/form/form-text' import FormControl from '@/shared/components/form/form-control' diff --git a/services/web/frontend/stories/shared/form/form-radio.stories.tsx b/services/web/frontend/stories/shared/form/form-radio.stories.tsx index 83d17325f2..1685add1ce 100644 --- a/services/web/frontend/stories/shared/form/form-radio.stories.tsx +++ b/services/web/frontend/stories/shared/form/form-radio.stories.tsx @@ -1,5 +1,5 @@ import { Form } from 'react-bootstrap' -import type { Meta, StoryObj } from '@storybook/react' +import type { Meta, StoryObj } from '@storybook/react-webpack5' import { figmaDesignUrl } from '../../../../.storybook/utils/figma-design-url' const meta: Meta<(typeof Form)['Check']> = { diff --git a/services/web/frontend/stories/shared/form/form-select.stories.tsx b/services/web/frontend/stories/shared/form/form-select.stories.tsx index 89d6908063..69be442d14 100644 --- a/services/web/frontend/stories/shared/form/form-select.stories.tsx +++ b/services/web/frontend/stories/shared/form/form-select.stories.tsx @@ -1,5 +1,5 @@ import { Form, FormSelectProps } from 'react-bootstrap' -import type { Meta, StoryObj } from '@storybook/react' +import type { Meta, StoryObj } from '@storybook/react-webpack5' import FormGroup from '@/shared/components/form/form-group' import FormText from '@/shared/components/form/form-text' import { figmaDesignUrl } from '../../../../.storybook/utils/figma-design-url' diff --git a/services/web/frontend/stories/shared/form/form-textarea.stories.tsx b/services/web/frontend/stories/shared/form/form-textarea.stories.tsx index f60142bdc0..6e84249f62 100644 --- a/services/web/frontend/stories/shared/form/form-textarea.stories.tsx +++ b/services/web/frontend/stories/shared/form/form-textarea.stories.tsx @@ -1,5 +1,5 @@ import { Form } from 'react-bootstrap' -import type { Meta, StoryObj } from '@storybook/react' +import type { Meta, StoryObj } from '@storybook/react-webpack5' import FormGroup from '@/shared/components/form/form-group' import FormText from '@/shared/components/form/form-text' import FormControl from '@/shared/components/form/form-control' diff --git a/services/web/frontend/stories/shared/icon-button.stories.tsx b/services/web/frontend/stories/shared/icon-button.stories.tsx index 8ffae05dd7..1e5ac32673 100644 --- a/services/web/frontend/stories/shared/icon-button.stories.tsx +++ b/services/web/frontend/stories/shared/icon-button.stories.tsx @@ -1,5 +1,5 @@ import IconButton from '@/shared/components/button/icon-button' -import type { Meta } from '@storybook/react' +import type { Meta } from '@storybook/react-webpack5' import { useTranslation } from 'react-i18next' import { figmaDesignUrl } from '../../../.storybook/utils/figma-design-url' diff --git a/services/web/frontend/stories/shared/labeled-divider.stories.tsx b/services/web/frontend/stories/shared/labeled-divider.stories.tsx index 1139bc9e4b..ecf35330db 100644 --- a/services/web/frontend/stories/shared/labeled-divider.stories.tsx +++ b/services/web/frontend/stories/shared/labeled-divider.stories.tsx @@ -1,5 +1,5 @@ import LabeledDivider from '@/shared/components/labeled-divider' -import { Meta } from '@storybook/react' +import { Meta } from '@storybook/react-webpack5' type Args = React.ComponentProps diff --git a/services/web/frontend/stories/shared/loading-spinner.stories.tsx b/services/web/frontend/stories/shared/loading-spinner.stories.tsx index 50b4f7aef7..fc1907f9c7 100644 --- a/services/web/frontend/stories/shared/loading-spinner.stories.tsx +++ b/services/web/frontend/stories/shared/loading-spinner.stories.tsx @@ -1,4 +1,4 @@ -import type { Meta, StoryObj } from '@storybook/react' +import type { Meta, StoryObj } from '@storybook/react-webpack5' import LoadingSpinner, { FullSizeLoadingSpinner, } from '@/shared/components/loading-spinner' diff --git a/services/web/frontend/stories/shared/menu-bar.stories.tsx b/services/web/frontend/stories/shared/menu-bar.stories.tsx index 304b8f8a7f..e1b927eca5 100644 --- a/services/web/frontend/stories/shared/menu-bar.stories.tsx +++ b/services/web/frontend/stories/shared/menu-bar.stories.tsx @@ -2,7 +2,7 @@ import { DropdownDivider } from '@/shared/components/dropdown/dropdown-menu' import { MenuBar } from '@/shared/components/menu-bar/menu-bar' import { MenuBarDropdown } from '@/shared/components/menu-bar/menu-bar-dropdown' import { MenuBarOption } from '@/shared/components/menu-bar/menu-bar-option' -import { Meta } from '@storybook/react/*' +import { Meta } from '@storybook/react-webpack5' export const Default = () => { return ( diff --git a/services/web/frontend/stories/shared/modal.stories.tsx b/services/web/frontend/stories/shared/modal.stories.tsx index c4f86fe317..109f06d1f2 100644 --- a/services/web/frontend/stories/shared/modal.stories.tsx +++ b/services/web/frontend/stories/shared/modal.stories.tsx @@ -1,4 +1,4 @@ -import type { Meta, StoryObj } from '@storybook/react' +import type { Meta, StoryObj } from '@storybook/react-webpack5' import { figmaDesignUrl } from './../../../.storybook/utils/figma-design-url' import { OLModal, diff --git a/services/web/frontend/stories/shared/row.stories.tsx b/services/web/frontend/stories/shared/row.stories.tsx index a5a7409bb6..d5ce7ca719 100644 --- a/services/web/frontend/stories/shared/row.stories.tsx +++ b/services/web/frontend/stories/shared/row.stories.tsx @@ -1,5 +1,5 @@ import { Container, Row, Col } from 'react-bootstrap' -import { Meta } from '@storybook/react' +import { Meta } from '@storybook/react-webpack5' type Args = React.ComponentProps diff --git a/services/web/frontend/stories/shared/select.stories.tsx b/services/web/frontend/stories/shared/select.stories.tsx index 311fb34c22..1e792872dc 100644 --- a/services/web/frontend/stories/shared/select.stories.tsx +++ b/services/web/frontend/stories/shared/select.stories.tsx @@ -1,5 +1,5 @@ import { Select } from '@/shared/components/select' -import { Meta } from '@storybook/react' +import { Meta } from '@storybook/react-webpack5' type Args = Pick< React.ComponentProps, diff --git a/services/web/frontend/stories/shared/split-button.stories.tsx b/services/web/frontend/stories/shared/split-button.stories.tsx index ae9bec9b47..2fe772267e 100644 --- a/services/web/frontend/stories/shared/split-button.stories.tsx +++ b/services/web/frontend/stories/shared/split-button.stories.tsx @@ -1,5 +1,5 @@ import { Fragment } from 'react' -import type { Meta } from '@storybook/react' +import type { Meta } from '@storybook/react-webpack5' import { useTranslation } from 'react-i18next' import { Dropdown, diff --git a/services/web/frontend/stories/shared/split-test-badge.stories.tsx b/services/web/frontend/stories/shared/split-test-badge.stories.tsx index d52a5c6dff..85d876a8fd 100644 --- a/services/web/frontend/stories/shared/split-test-badge.stories.tsx +++ b/services/web/frontend/stories/shared/split-test-badge.stories.tsx @@ -1,4 +1,4 @@ -import type { Meta, StoryObj } from '@storybook/react' +import type { Meta, StoryObj } from '@storybook/react-webpack5' import SplitTestBadge from '../../js/shared/components/split-test-badge' import { SplitTestContext } from '../../js/shared/context/split-test-context' diff --git a/services/web/frontend/stories/shared/start-free-trial-button.stories.tsx b/services/web/frontend/stories/shared/start-free-trial-button.stories.tsx index 7819b53c4d..f9d45ec8e6 100644 --- a/services/web/frontend/stories/shared/start-free-trial-button.stories.tsx +++ b/services/web/frontend/stories/shared/start-free-trial-button.stories.tsx @@ -1,4 +1,4 @@ -import type { Meta, StoryObj } from '@storybook/react' +import type { Meta, StoryObj } from '@storybook/react-webpack5' import StartFreeTrialButton from '../../js/shared/components/start-free-trial-button' import type { ButtonProps } from '../../js/shared/components/types/button-props' diff --git a/services/web/frontend/stories/shared/tag.stories.tsx b/services/web/frontend/stories/shared/tag.stories.tsx index fdf053abab..61003a2ae8 100644 --- a/services/web/frontend/stories/shared/tag.stories.tsx +++ b/services/web/frontend/stories/shared/tag.stories.tsx @@ -1,6 +1,6 @@ import OLTagIcon from '@/shared/components/ol/ol-tag-icon' import Tag from '@/shared/components/tag' -import type { Meta, StoryObj } from '@storybook/react' +import type { Meta, StoryObj } from '@storybook/react-webpack5' import { figmaDesignUrl } from '../../../.storybook/utils/figma-design-url' const meta: Meta = { diff --git a/services/web/frontend/stories/shared/tooltip.stories.tsx b/services/web/frontend/stories/shared/tooltip.stories.tsx index 3bc6190d7f..cb5f9cd162 100644 --- a/services/web/frontend/stories/shared/tooltip.stories.tsx +++ b/services/web/frontend/stories/shared/tooltip.stories.tsx @@ -1,6 +1,6 @@ import OLButton from '@/shared/components/ol/ol-button' import OLTooltip from '@/shared/components/ol/ol-tooltip' -import { Meta } from '@storybook/react' +import { Meta } from '@storybook/react-webpack5' import { figmaDesignUrl } from '../../../.storybook/utils/figma-design-url' export const Tooltips = () => { diff --git a/services/web/frontend/stories/shared/upgrade-prompt.stories.tsx b/services/web/frontend/stories/shared/upgrade-prompt.stories.tsx index 0e7de8de76..39b740d16a 100644 --- a/services/web/frontend/stories/shared/upgrade-prompt.stories.tsx +++ b/services/web/frontend/stories/shared/upgrade-prompt.stories.tsx @@ -1,5 +1,5 @@ import { UpgradePrompt } from '@/shared/components/upgrade-prompt' -import { StoryObj } from '@storybook/react/*' +import { StoryObj } from '@storybook/react-webpack5' type Story = StoryObj diff --git a/services/web/frontend/stories/source-editor/source-editor.stories.tsx b/services/web/frontend/stories/source-editor/source-editor.stories.tsx index d0dc68fd6e..e082704685 100644 --- a/services/web/frontend/stories/source-editor/source-editor.stories.tsx +++ b/services/web/frontend/stories/source-editor/source-editor.stories.tsx @@ -8,7 +8,7 @@ import RangesTracker from '@overleaf/ranges-tracker' import useExposedState from '@/shared/hooks/use-exposed-state' import { EditorOpenDocContext } from '@/features/ide-react/context/editor-open-doc-context' import { DocId } from '../../../types/project-settings' -import { StoryObj } from '@storybook/react' +import { StoryObj } from '@storybook/react-webpack5' import { DocumentContainer } from '@/features/ide-react/editor/document-container' import { EditorPropertiesContext } from '@/features/ide-react/context/editor-properties-context' diff --git a/services/web/frontend/stories/subscription/active-subscription.stories.tsx b/services/web/frontend/stories/subscription/active-subscription.stories.tsx index bba1a4f7b0..06f8d9bd05 100644 --- a/services/web/frontend/stories/subscription/active-subscription.stories.tsx +++ b/services/web/frontend/stories/subscription/active-subscription.stories.tsx @@ -18,7 +18,7 @@ import { import { SubscriptionDashboardProvider } from '../../js/features/subscription/context/subscription-dashboard-context' import { SplitTestProvider } from '@/shared/context/split-test-context' import { PaidSubscription } from '@ol-types/subscription/dashboard/subscription' -import type { StoryFn } from '@storybook/react' +import type { StoryFn } from '@storybook/react-webpack5' import { setupSubscriptionDashContext } from '../../../test/frontend/features/subscription/helpers/setup-subscription-dash-context' export default { diff --git a/services/web/frontend/stories/word-count-modal.stories.tsx b/services/web/frontend/stories/word-count-modal.stories.tsx index 17b548791b..e2e8771aa7 100644 --- a/services/web/frontend/stories/word-count-modal.stories.tsx +++ b/services/web/frontend/stories/word-count-modal.stories.tsx @@ -1,4 +1,4 @@ -import { Meta, StoryObj } from '@storybook/react' +import { Meta, StoryObj } from '@storybook/react-webpack5' import WordCountModal from '@/features/word-count-modal/components/word-count-modal' import { ScopeDecorator } from './decorators/scope' import useFetchMock from './hooks/use-fetch-mock' diff --git a/services/web/modules/full-project-search/stories/full-project-search.stories.tsx b/services/web/modules/full-project-search/stories/full-project-search.stories.tsx index e599fabecd..8da7a786d3 100644 --- a/services/web/modules/full-project-search/stories/full-project-search.stories.tsx +++ b/services/web/modules/full-project-search/stories/full-project-search.stories.tsx @@ -1,4 +1,4 @@ -import { Meta, StoryObj } from '@storybook/react' +import { Meta, StoryObj } from '@storybook/react-webpack5' import { ScopeDecorator } from '../../../frontend/stories/decorators/scope' import useFetchMock from '../../../frontend/stories/hooks/use-fetch-mock' import FullProjectSearchUI from '../frontend/js/components/full-project-search-ui' diff --git a/services/web/package.json b/services/web/package.json index 27b414cfdc..54936eeb0f 100644 --- a/services/web/package.json +++ b/services/web/package.json @@ -233,17 +233,14 @@ "@replit/codemirror-indentation-markers": "overleaf/codemirror-indentation-markers#371ce3b56f453a392eb0d3b85ab019c185c68e1f", "@replit/codemirror-vim": "overleaf/codemirror-vim#1bef138382d948018f3f9b8a4d7a70ab61774e4b", "@sentry/browser": "7.46.0", - "@storybook/addon-a11y": "^8.6.17", - "@storybook/addon-designs": "^8.2.1", - "@storybook/addon-essentials": "^8.6.17", - "@storybook/addon-interactions": "^8.6.17", - "@storybook/addon-links": "^8.6.17", - "@storybook/addon-styling-webpack": "^1.0.1", - "@storybook/addon-webpack5-compiler-babel": "^3.0.6", - "@storybook/cli": "^8.6.17", - "@storybook/react": "^8.6.17", - "@storybook/react-webpack5": "^8.6.17", - "@storybook/theming": "^8.6.17", + "@storybook/addon-a11y": "10.3.5", + "@storybook/addon-designs": "^11.1.3", + "@storybook/addon-docs": "10.3.5", + "@storybook/addon-links": "10.3.5", + "@storybook/addon-styling-webpack": "^3.0.2", + "@storybook/addon-webpack5-compiler-babel": "^4.0.1", + "@storybook/cli": "10.3.5", + "@storybook/react-webpack5": "10.3.5", "@streamdown/cjk": "^1.0.2", "@streamdown/math": "^1.0.2", "@tailwindcss/container-queries": "^0.1.1", @@ -287,6 +284,7 @@ "@uppy/xhr-upload": "^3.6.0", "@vitest/coverage-istanbul": "^4.0.17", "@vitest/eslint-plugin": "1.6.6", + "@vitest/mocker": "^4.0.15", "@writefull/core": "^1.27.27", "@writefull/ui": "^1.27.27", "@writefull/utils": "^1.27.27", @@ -330,6 +328,7 @@ "eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-react": "^7.32.2", "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-storybook": "10.3.5", "eslint-plugin-testing-library": "^7.1.1", "eslint-plugin-unicorn": "^56.0.0", "events": "^3.3.0", @@ -403,8 +402,9 @@ "sinon": "^7.5.0", "sinon-chai": "^3.7.0", "sinon-mongoose": "^2.3.0", - "storybook": "^8.6.17", + "storybook": "10.3.5", "streamdown": "^2.2.0", + "style-loader": "^4.0.0", "stylelint": "^16.26.1", "stylelint-config-standard-scss": "^13.1.0", "tailwindcss": "^3.4.4", diff --git a/services/web/tsconfig.json b/services/web/tsconfig.json index 5b6af38f34..58abe1ab9a 100644 --- a/services/web/tsconfig.json +++ b/services/web/tsconfig.json @@ -8,7 +8,7 @@ "jsx": "preserve" /* Specify JSX code generation */, "noEmit": true /* Do not emit outputs. */, "strict": true /* Enable all strict type-checking options. */, - "moduleResolution": "node" /* Specify module resolution strategy */, + "moduleResolution": "bundler" /* Specify module resolution strategy */, "isolatedModules": true, "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, "skipLibCheck": true /* Skip type checking of declaration files. */,