]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commitdiff
Update packages + upgrade Storybook to v10 (#17201)
authorAleksander Grygier <redacted>
Wed, 12 Nov 2025 18:01:48 +0000 (19:01 +0100)
committerGitHub <redacted>
Wed, 12 Nov 2025 18:01:48 +0000 (19:01 +0100)
* chore: Update packages + upgrade Storybook to v10

* fix: Increase timeout for UI tests

.github/workflows/server.yml
tools/server/webui/.storybook/preview.ts
tools/server/webui/.storybook/vitest.setup.ts
tools/server/webui/package-lock.json
tools/server/webui/package.json
tools/server/webui/src/stories/ChatForm.stories.svelte
tools/server/webui/src/stories/ChatSidebar.stories.svelte
tools/server/webui/src/stories/MarkdownContent.stories.svelte

index 1ea1300c2e4c3255c113bf4dfce4f082666b0615..ebcd6424bc0104c3ed21e7ac5b1eb99c087cd63e 100644 (file)
@@ -209,7 +209,7 @@ jobs:
         working-directory: tools/server/webui
 
       - name: Run UI tests
-        run: npm run test:ui
+        run: npm run test:ui -- --testTimeout=60000
         working-directory: tools/server/webui
 
       - name: Run E2E tests
index fb91386af4675ba49a9989f9d8a663914b4077bc..8d530e43e374918b8545aabdff87647b7ac1c8a2 100644 (file)
@@ -11,8 +11,16 @@ const preview: Preview = {
                                date: /Date$/i
                        }
                },
+
                backgrounds: {
                        disable: true
+               },
+
+               a11y: {
+                       // 'todo' - show a11y violations in the test UI only
+                       // 'error' - fail CI on a11y violations
+                       // 'off' - skip a11y checks entirely
+                       test: 'todo'
                }
        },
        decorators: [
index e0c1753c849a866cadbc148799de857e0e994203..14715728989bd7211e2436ecf95407990a46508b 100644 (file)
@@ -1,8 +1,9 @@
+import * as a11yAddonAnnotations from '@storybook/addon-a11y/preview';
 import { setProjectAnnotations } from '@storybook/sveltekit';
 import * as previewAnnotations from './preview';
 import { beforeAll } from 'vitest';
 
-const project = setProjectAnnotations([previewAnnotations]);
+const project = setProjectAnnotations([a11yAddonAnnotations, previewAnnotations]);
 
 beforeAll(async () => {
        if (project.beforeAll) {
index 8fab38f6f1464d6d9308867f39dc9a65e5ff7cfa..a11b87ad509029910ee375bcaecbb71692672bca 100644 (file)
                                "unist-util-visit": "^5.0.0"
                        },
                        "devDependencies": {
-                               "@chromatic-com/storybook": "^4.0.1",
+                               "@chromatic-com/storybook": "^4.1.2",
                                "@eslint/compat": "^1.2.5",
                                "@eslint/js": "^9.18.0",
                                "@internationalized/date": "^3.8.2",
                                "@lucide/svelte": "^0.515.0",
                                "@playwright/test": "^1.49.1",
-                               "@storybook/addon-a11y": "^9.0.17",
-                               "@storybook/addon-docs": "^9.0.17",
-                               "@storybook/addon-svelte-csf": "^5.0.7",
-                               "@storybook/addon-vitest": "^9.0.17",
-                               "@storybook/sveltekit": "^9.0.17",
-                               "@sveltejs/adapter-static": "^3.0.8",
-                               "@sveltejs/kit": "^2.22.0",
-                               "@sveltejs/vite-plugin-svelte": "^6.0.0",
+                               "@storybook/addon-a11y": "^10.0.7",
+                               "@storybook/addon-docs": "^10.0.7",
+                               "@storybook/addon-svelte-csf": "^5.0.10",
+                               "@storybook/addon-vitest": "^10.0.7",
+                               "@storybook/sveltekit": "^10.0.7",
+                               "@sveltejs/adapter-static": "^3.0.10",
+                               "@sveltejs/kit": "^2.48.4",
+                               "@sveltejs/vite-plugin-svelte": "^6.2.1",
                                "@tailwindcss/forms": "^0.5.9",
                                "@tailwindcss/typography": "^0.5.15",
                                "@tailwindcss/vite": "^4.0.0",
                                "dexie": "^4.0.11",
                                "eslint": "^9.18.0",
                                "eslint-config-prettier": "^10.0.1",
-                               "eslint-plugin-storybook": "^9.0.17",
+                               "eslint-plugin-storybook": "^10.0.7",
                                "eslint-plugin-svelte": "^3.0.0",
                                "fflate": "^0.8.2",
                                "globals": "^16.0.0",
                                "http-server": "^14.1.1",
                                "mdast": "^3.0.0",
                                "mdsvex": "^0.12.3",
-                               "playwright": "^1.53.0",
+                               "playwright": "^1.56.1",
                                "prettier": "^3.4.2",
                                "prettier-plugin-svelte": "^3.3.3",
                                "prettier-plugin-tailwindcss": "^0.6.11",
                                "rehype-katex": "^7.0.1",
                                "remark-math": "^6.0.0",
                                "sass": "^1.93.3",
-                               "storybook": "^9.0.17",
+                               "storybook": "^10.0.7",
                                "svelte": "^5.0.0",
                                "svelte-check": "^4.0.0",
                                "tailwind-merge": "^3.3.1",
@@ -71,7 +71,7 @@
                                "typescript-eslint": "^8.20.0",
                                "unified": "^11.0.5",
                                "uuid": "^13.0.0",
-                               "vite": "^7.0.4",
+                               "vite": "^7.2.2",
                                "vite-plugin-devtools-json": "^0.2.0",
                                "vitest": "^3.2.3",
                                "vitest-browser-svelte": "^0.1.0"
                        }
                },
                "node_modules/@chromatic-com/storybook": {
-                       "version": "4.0.1",
-                       "resolved": "https://registry.npmjs.org/@chromatic-com/storybook/-/storybook-4.0.1.tgz",
-                       "integrity": "sha512-GQXe5lyZl3yLewLJQyFXEpOp2h+mfN2bPrzYaOFNCJjO4Js9deKbRHTOSaiP2FRwZqDLdQwy2+SEGeXPZ94yYw==",
+                       "version": "4.1.2",
+                       "resolved": "https://registry.npmjs.org/@chromatic-com/storybook/-/storybook-4.1.2.tgz",
+                       "integrity": "sha512-QAWGtHwib0qsP5CcO64aJCF75zpFgpKK3jNpxILzQiPK3sVo4EmnVGJVdwcZWpWrGdH8E4YkncGoitw4EXzKMg==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
                                "yarn": ">=1.22.18"
                        },
                        "peerDependencies": {
-                               "storybook": "^0.0.0-0 || ^9.0.0 || ^9.1.0-0"
+                               "storybook": "^0.0.0-0 || ^9.0.0 || ^9.1.0-0 || ^9.2.0-0 || ^10.0.0-0 || ^10.1.0-0 || ^10.2.0-0 || ^10.3.0-0"
                        }
                },
                "node_modules/@esbuild/aix-ppc64": {
                                "@jridgewell/trace-mapping": "^0.3.24"
                        }
                },
+               "node_modules/@jridgewell/remapping": {
+                       "version": "2.3.5",
+                       "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
+                       "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@jridgewell/gen-mapping": "^0.3.5",
+                               "@jridgewell/trace-mapping": "^0.3.24"
+                       }
+               },
                "node_modules/@jridgewell/resolve-uri": {
                        "version": "3.1.2",
                        "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
                        }
                },
                "node_modules/@playwright/test": {
-                       "version": "1.54.1",
-                       "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.54.1.tgz",
-                       "integrity": "sha512-FS8hQ12acieG2dYSksmLOF7BNxnVf2afRJdCuM1eMSxj6QTSE6G4InGF7oApGgDb65MX7AwMVlIkpru0yZA4Xw==",
+                       "version": "1.56.1",
+                       "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.56.1.tgz",
+                       "integrity": "sha512-vSMYtL/zOcFpvJCW71Q/OEGQb7KYBPAdKh35WNSkaZA75JlAO8ED8UN6GUNTm3drWomcbcqRPFqQbLae8yBTdg==",
                        "dev": true,
                        "license": "Apache-2.0",
                        "dependencies": {
-                               "playwright": "1.54.1"
+                               "playwright": "1.56.1"
                        },
                        "bin": {
                                "playwright": "cli.js"
                        "license": "MIT"
                },
                "node_modules/@storybook/addon-a11y": {
-                       "version": "9.0.17",
-                       "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-9.0.17.tgz",
-                       "integrity": "sha512-9cXNK3q/atx3hwJAt9HkJbd9vUxCXfKKiNNuSACbf8h9/j6u3jktulKOf6Xjc3B8lwn6ZpdK/x1HHZN2kTqsvg==",
+                       "version": "10.0.7",
+                       "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-10.0.7.tgz",
+                       "integrity": "sha512-JsYPpZ/n67/2bI1XJeyrAWHHQkHemPkPHjCA0tAUnMz1Shlo/LV2q1Ahgpxoihx4strbHwZz71bcS4MqkHBduA==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
                                "url": "https://opencollective.com/storybook"
                        },
                        "peerDependencies": {
-                               "storybook": "^9.0.17"
+                               "storybook": "^10.0.7"
                        }
                },
                "node_modules/@storybook/addon-docs": {
-                       "version": "9.0.17",
-                       "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-9.0.17.tgz",
-                       "integrity": "sha512-LOX/kKgQGnyulrqZHsvf77+ZoH/nSUaplGr5hvZglW/U6ak6fO9seJyXAzVKEnC6p+F8n02kFBZbi3s+znQhSg==",
+                       "version": "10.0.7",
+                       "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-10.0.7.tgz",
+                       "integrity": "sha512-qQQMoeYZC4W+/8ubfOZiTrE8nYC/f4wWP1uq4peRyDy1N2nIN9SwhyxwMn0m3VpeGmRBga5dLvJY9ko6SnJekg==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
                                "@mdx-js/react": "^3.0.0",
-                               "@storybook/csf-plugin": "9.0.17",
-                               "@storybook/icons": "^1.2.12",
-                               "@storybook/react-dom-shim": "9.0.17",
+                               "@storybook/csf-plugin": "10.0.7",
+                               "@storybook/icons": "^1.6.0",
+                               "@storybook/react-dom-shim": "10.0.7",
                                "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"
                                "url": "https://opencollective.com/storybook"
                        },
                        "peerDependencies": {
-                               "storybook": "^9.0.17"
+                               "storybook": "^10.0.7"
                        }
                },
                "node_modules/@storybook/addon-svelte-csf": {
-                       "version": "5.0.7",
-                       "resolved": "https://registry.npmjs.org/@storybook/addon-svelte-csf/-/addon-svelte-csf-5.0.7.tgz",
-                       "integrity": "sha512-6Zmy5HjOlrrG6OoKRTGDr9LR6zRK4/Sa7raFzQRKHGASgMlfKsMdNTNO0sxnMUWCu2JMS6HsuoLtB3Ma8SlYtg==",
+                       "version": "5.0.10",
+                       "resolved": "https://registry.npmjs.org/@storybook/addon-svelte-csf/-/addon-svelte-csf-5.0.10.tgz",
+                       "integrity": "sha512-poSvTS7VdaQ42ZoqW5e4+2Hv1iLO0mekH9fwn/QuBNse48R4WlTyR8XFbHRTfatl9gdc9ZYC4uWzazrmV6zGIA==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
                                "zimmerframe": "^1.1.2"
                        },
                        "peerDependencies": {
-                               "@storybook/svelte": "^0.0.0-0 || ^8.2.0 || ^9.0.0 || ^9.1.0-0",
+                               "@storybook/svelte": "^0.0.0-0 || ^8.2.0 || ^9.0.0 || ^9.1.0-0 || ^10.0.0-0",
                                "@sveltejs/vite-plugin-svelte": "^4.0.0 || ^5.0.0 || ^6.0.0",
-                               "storybook": "^0.0.0-0 || ^8.2.0 || ^9.0.0 || ^9.1.0-0",
+                               "storybook": "^0.0.0-0 || ^8.2.0 || ^9.0.0 || ^9.1.0-0 || ^10.0.0-0",
                                "svelte": "^5.0.0",
                                "vite": "^5.0.0 || ^6.0.0 || ^7.0.0"
                        }
                },
                "node_modules/@storybook/addon-vitest": {
-                       "version": "9.0.17",
-                       "resolved": "https://registry.npmjs.org/@storybook/addon-vitest/-/addon-vitest-9.0.17.tgz",
-                       "integrity": "sha512-eogqcGbACR1sTedBSE2SP/4QV1ruicHYEhYjBtoPIjvYgymN1g5KSuQNysLx4f0SvAzczrcNjX2WVVLX2DVyzA==",
+                       "version": "10.0.7",
+                       "resolved": "https://registry.npmjs.org/@storybook/addon-vitest/-/addon-vitest-10.0.7.tgz",
+                       "integrity": "sha512-i6v/mAl+elrUxb+1f4NdnM17t/fg+KGJWL1U9quflXTd3KiLY0xJB4LwNP6yYo7Imc5NIO2fRkJbGvNqLBRe2Q==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
                                "@storybook/global": "^5.0.0",
-                               "@storybook/icons": "^1.4.0",
+                               "@storybook/icons": "^1.6.0",
                                "prompts": "^2.4.0",
                                "ts-dedent": "^2.2.0"
                        },
                                "url": "https://opencollective.com/storybook"
                        },
                        "peerDependencies": {
-                               "@vitest/browser": "^3.0.0",
-                               "@vitest/runner": "^3.0.0",
-                               "storybook": "^9.0.17",
-                               "vitest": "^3.0.0"
+                               "@vitest/browser": "^3.0.0 || ^4.0.0",
+                               "@vitest/browser-playwright": "^4.0.0",
+                               "@vitest/runner": "^3.0.0 || ^4.0.0",
+                               "storybook": "^10.0.7",
+                               "vitest": "^3.0.0 || ^4.0.0"
                        },
                        "peerDependenciesMeta": {
                                "@vitest/browser": {
                                        "optional": true
                                },
+                               "@vitest/browser-playwright": {
+                                       "optional": true
+                               },
                                "@vitest/runner": {
                                        "optional": true
                                },
                        }
                },
                "node_modules/@storybook/builder-vite": {
-                       "version": "9.0.17",
-                       "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-9.0.17.tgz",
-                       "integrity": "sha512-lyuvgGhb0NaVk1tdB4xwzky6+YXQfxlxfNQqENYZ9uYQZdPfErMa4ZTXVQTV+CQHAa2NL+p/dG2JPAeu39e9UA==",
+                       "version": "10.0.7",
+                       "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-10.0.7.tgz",
+                       "integrity": "sha512-wk2TAoUY5+9t78GWVBndu9rEo9lo6Ec3SRrLT4VpIlcS2GPK+5f26UC2uvIBwOF/N7JrUUKq/zWDZ3m+do9QDg==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "@storybook/csf-plugin": "9.0.17",
+                               "@storybook/csf-plugin": "10.0.7",
                                "ts-dedent": "^2.0.0"
                        },
                        "funding": {
                                "url": "https://opencollective.com/storybook"
                        },
                        "peerDependencies": {
-                               "storybook": "^9.0.17",
+                               "storybook": "^10.0.7",
                                "vite": "^5.0.0 || ^6.0.0 || ^7.0.0"
                        }
                },
                        }
                },
                "node_modules/@storybook/csf-plugin": {
-                       "version": "9.0.17",
-                       "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-9.0.17.tgz",
-                       "integrity": "sha512-6Q4eo1ObrLlsnB6bIt6T8+45XAb4to2pQGNrI7QPkLQRLrZinrJcNbLY7AGkyIoCOEsEbq08n09/nClQUbu8HA==",
+                       "version": "10.0.7",
+                       "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-10.0.7.tgz",
+                       "integrity": "sha512-YaYYlCyJBwxaMk7yREOdz+9MDSgxIYGdeJ9EIq/bUndmkoj9SRo1P9/0lC5dseWQoiGy4T3PbZiWruD8uM5m3g==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "unplugin": "^1.3.1"
+                               "unplugin": "^2.3.5"
                        },
                        "funding": {
                                "type": "opencollective",
                                "url": "https://opencollective.com/storybook"
                        },
                        "peerDependencies": {
-                               "storybook": "^9.0.17"
+                               "esbuild": "*",
+                               "rollup": "*",
+                               "storybook": "^10.0.7",
+                               "vite": "*",
+                               "webpack": "*"
+                       },
+                       "peerDependenciesMeta": {
+                               "esbuild": {
+                                       "optional": true
+                               },
+                               "rollup": {
+                                       "optional": true
+                               },
+                               "vite": {
+                                       "optional": true
+                               },
+                               "webpack": {
+                                       "optional": true
+                               }
                        }
                },
                "node_modules/@storybook/global": {
                        "license": "MIT"
                },
                "node_modules/@storybook/icons": {
-                       "version": "1.4.0",
-                       "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-1.4.0.tgz",
-                       "integrity": "sha512-Td73IeJxOyalzvjQL+JXx72jlIYHgs+REaHiREOqfpo3A2AYYG71AUbcv+lg7mEDIweKVCxsMQ0UKo634c8XeA==",
+                       "version": "1.6.0",
+                       "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-1.6.0.tgz",
+                       "integrity": "sha512-hcFZIjW8yQz8O8//2WTIXylm5Xsgc+lW9ISLgUk1xGmptIJQRdlhVIXCpSyLrQaaRiyhQRaVg7l3BD9S216BHw==",
                        "dev": true,
                        "license": "MIT",
                        "engines": {
                        }
                },
                "node_modules/@storybook/react-dom-shim": {
-                       "version": "9.0.17",
-                       "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-9.0.17.tgz",
-                       "integrity": "sha512-ak/x/m6MDDxdE6rCDymTltaiQF3oiKrPHSwfM+YPgQR6MVmzTTs4+qaPfeev7FZEHq23IkfDMTmSTTJtX7Vs9A==",
+                       "version": "10.0.7",
+                       "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-10.0.7.tgz",
+                       "integrity": "sha512-bp4OnMtZGwPJQDqNRi4K5iibLbZ2TZZMkWW7oSw5jjPFpGSreSjCe8LH9yj/lDnK8Ox9bGMCBFE5RV5XuML29w==",
                        "dev": true,
                        "license": "MIT",
                        "funding": {
                                "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": "^9.0.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.0.7"
                        }
                },
                "node_modules/@storybook/svelte": {
-                       "version": "9.0.17",
-                       "resolved": "https://registry.npmjs.org/@storybook/svelte/-/svelte-9.0.17.tgz",
-                       "integrity": "sha512-RwOswdq7S3+ZOuoM/oRrcmlsKdjcd/3wMHbuirzYoAhdwsjubSuRepMV64O9RnlXd3x7rZw4fXpq1M/SVo5XiQ==",
+                       "version": "10.0.7",
+                       "resolved": "https://registry.npmjs.org/@storybook/svelte/-/svelte-10.0.7.tgz",
+                       "integrity": "sha512-rO+YQhHucy47Vh67z318pALmd6x+K1Kj30Fb4a6oOEw4xn4zCo9KTmkMWs24c4oduEXD/eJu3badlRmsVXzyfA==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
                                "ts-dedent": "^2.0.0",
                                "type-fest": "~2.19"
                        },
-                       "engines": {
-                               "node": ">=20.0.0"
-                       },
                        "funding": {
                                "type": "opencollective",
                                "url": "https://opencollective.com/storybook"
                        },
                        "peerDependencies": {
-                               "storybook": "^9.0.17",
+                               "storybook": "^10.0.7",
                                "svelte": "^5.0.0"
                        }
                },
-               "node_modules/@storybook/sveltekit": {
-                       "version": "9.0.17",
-                       "resolved": "https://registry.npmjs.org/@storybook/sveltekit/-/sveltekit-9.0.17.tgz",
-                       "integrity": "sha512-CUOATuW5Qk3SjNvmjH+wyx2GCsMF1cvw3gwkujV9kehPebzV20NhgHpbzSoepvwF7+Bj6jl8V6UxiMWk0jJFmA==",
+               "node_modules/@storybook/svelte-vite": {
+                       "version": "10.0.7",
+                       "resolved": "https://registry.npmjs.org/@storybook/svelte-vite/-/svelte-vite-10.0.7.tgz",
+                       "integrity": "sha512-q9/RtrhX1CnznO6AO9MDEy1bsccbGeRxW28FLpgUrztV4IGZ/dFUrFIFurKRyuA3/nFsbtzp1F5jFt3RExmmTw==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "@storybook/builder-vite": "9.0.17",
-                               "@storybook/svelte": "9.0.17",
-                               "@storybook/svelte-vite": "9.0.17"
-                       },
-                       "engines": {
-                               "node": ">=20.0.0"
+                               "@storybook/builder-vite": "10.0.7",
+                               "@storybook/svelte": "10.0.7",
+                               "magic-string": "^0.30.0",
+                               "svelte2tsx": "^0.7.44",
+                               "typescript": "^4.9.4 || ^5.0.0"
                        },
                        "funding": {
                                "type": "opencollective",
                                "url": "https://opencollective.com/storybook"
                        },
                        "peerDependencies": {
-                               "storybook": "^9.0.17",
+                               "@sveltejs/vite-plugin-svelte": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0",
+                               "storybook": "^10.0.7",
                                "svelte": "^5.0.0",
                                "vite": "^5.0.0 || ^6.0.0 || ^7.0.0"
                        }
                },
-               "node_modules/@storybook/sveltekit/node_modules/@storybook/svelte-vite": {
-                       "version": "9.0.17",
-                       "resolved": "https://registry.npmjs.org/@storybook/svelte-vite/-/svelte-vite-9.0.17.tgz",
-                       "integrity": "sha512-fRIxOZy9IRI6BfL1LgFn+B+IckGOlT1SstD01y9ddO4pVKWih/l+vb44bnZs+Z0faJZbrG/LgfnXTOPj052Z8g==",
+               "node_modules/@storybook/sveltekit": {
+                       "version": "10.0.7",
+                       "resolved": "https://registry.npmjs.org/@storybook/sveltekit/-/sveltekit-10.0.7.tgz",
+                       "integrity": "sha512-ujTW7PfWvgBrzd7jzaZe9JgjUeM5YvBKm+xru6t7Dr4bdfmkKqlZHPRdXn/sy+fQNyfg6JL2WKy2KIIeA+RvSg==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "@storybook/builder-vite": "9.0.17",
-                               "@storybook/svelte": "9.0.17",
-                               "magic-string": "^0.30.0",
-                               "svelte2tsx": "^0.7.35",
-                               "typescript": "^4.9.4 || ^5.0.0"
-                       },
-                       "engines": {
-                               "node": ">=20.0.0"
+                               "@storybook/builder-vite": "10.0.7",
+                               "@storybook/svelte": "10.0.7",
+                               "@storybook/svelte-vite": "10.0.7"
                        },
                        "funding": {
                                "type": "opencollective",
                                "url": "https://opencollective.com/storybook"
                        },
                        "peerDependencies": {
-                               "@sveltejs/vite-plugin-svelte": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0",
-                               "storybook": "^9.0.17",
+                               "storybook": "^10.0.7",
                                "svelte": "^5.0.0",
                                "vite": "^5.0.0 || ^6.0.0 || ^7.0.0"
                        }
                },
-               "node_modules/@storybook/sveltekit/node_modules/@sveltejs/vite-plugin-svelte": {
-                       "version": "5.1.1",
-                       "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-5.1.1.tgz",
-                       "integrity": "sha512-Y1Cs7hhTc+a5E9Va/xwKlAJoariQyHY+5zBgCZg4PFWNYQ1nMN9sjK1zhw1gK69DuqVP++sht/1GZg1aRwmAXQ==",
-                       "dev": true,
-                       "license": "MIT",
-                       "peer": true,
-                       "dependencies": {
-                               "@sveltejs/vite-plugin-svelte-inspector": "^4.0.1",
-                               "debug": "^4.4.1",
-                               "deepmerge": "^4.3.1",
-                               "kleur": "^4.1.5",
-                               "magic-string": "^0.30.17",
-                               "vitefu": "^1.0.6"
-                       },
-                       "engines": {
-                               "node": "^18.0.0 || ^20.0.0 || >=22"
-                       },
-                       "peerDependencies": {
-                               "svelte": "^5.0.0",
-                               "vite": "^6.0.0"
-                       }
-               },
-               "node_modules/@storybook/sveltekit/node_modules/@sveltejs/vite-plugin-svelte/node_modules/@sveltejs/vite-plugin-svelte-inspector": {
-                       "version": "4.0.1",
-                       "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-4.0.1.tgz",
-                       "integrity": "sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw==",
-                       "dev": true,
-                       "license": "MIT",
-                       "peer": true,
-                       "dependencies": {
-                               "debug": "^4.3.7"
-                       },
-                       "engines": {
-                               "node": "^18.0.0 || ^20.0.0 || >=22"
-                       },
-                       "peerDependencies": {
-                               "@sveltejs/vite-plugin-svelte": "^5.0.0",
-                               "svelte": "^5.0.0",
-                               "vite": "^6.0.0"
-                       }
-               },
                "node_modules/@sveltejs/acorn-typescript": {
                        "version": "1.0.5",
                        "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.5.tgz",
                        }
                },
                "node_modules/@sveltejs/adapter-static": {
-                       "version": "3.0.9",
-                       "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.9.tgz",
-                       "integrity": "sha512-aytHXcMi7lb9ljsWUzXYQ0p5X1z9oWud2olu/EpmH7aCu4m84h7QLvb5Wp+CFirKcwoNnYvYWhyP/L8Vh1ztdw==",
+                       "version": "3.0.10",
+                       "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.10.tgz",
+                       "integrity": "sha512-7D9lYFWJmB7zxZyTE/qxjksvMqzMuYrrsyh1f4AlZqeZeACPRySjbC3aFiY55wb1tWUaKOQG9PVbm74JcN2Iew==",
                        "dev": true,
                        "license": "MIT",
                        "peerDependencies": {
                        }
                },
                "node_modules/@sveltejs/kit": {
-                       "version": "2.37.0",
-                       "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.37.0.tgz",
-                       "integrity": "sha512-xgKtpjQ6Ry4mdShd01ht5AODUsW7+K1iValPDq7QX8zI1hWOKREH9GjG8SRCN5tC4K7UXmMhuQam7gbLByVcnw==",
+                       "version": "2.48.4",
+                       "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.48.4.tgz",
+                       "integrity": "sha512-TGFX1pZUt9qqY20Cv5NyYvy0iLWHf2jXi8s+eCGsig7jQMdwZWKUFMR6TbvFNhfDSUpc1sH/Y5EHv20g3HHA3g==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
                        }
                },
                "node_modules/@sveltejs/vite-plugin-svelte": {
-                       "version": "6.1.0",
-                       "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-6.1.0.tgz",
-                       "integrity": "sha512-+U6lz1wvGEG/BvQyL4z/flyNdQ9xDNv5vrh+vWBWTHaebqT0c9RNggpZTo/XSPoHsSCWBlYaTlRX8pZ9GATXCw==",
+                       "version": "6.2.1",
+                       "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-6.2.1.tgz",
+                       "integrity": "sha512-YZs/OSKOQAQCnJvM/P+F1URotNnYNeU3P2s4oIpzm1uFaqUEqRxUB0g5ejMjEb5Gjb9/PiBI5Ktrq4rUUF8UVQ==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "@sveltejs/vite-plugin-svelte-inspector": "^5.0.0-next.1",
+                               "@sveltejs/vite-plugin-svelte-inspector": "^5.0.0",
                                "debug": "^4.4.1",
                                "deepmerge": "^4.3.1",
-                               "kleur": "^4.1.5",
                                "magic-string": "^0.30.17",
                                "vitefu": "^1.1.1"
                        },
                                "node": ">= 0.8"
                        }
                },
-               "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/bits-ui": {
                        "version": "2.8.11",
                        "resolved": "https://registry.npmjs.org/bits-ui/-/bits-ui-2.8.11.tgz",
                                "node": ">=0.10.0"
                        }
                },
-               "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==",
-                       "dev": true,
-                       "license": "MIT",
-                       "engines": {
-                               "node": ">=8"
-                       }
-               },
                "node_modules/dequal": {
                        "version": "2.0.3",
                        "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
                                "@esbuild/win32-x64": "0.25.8"
                        }
                },
-               "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/escape-string-regexp": {
                        "version": "4.0.0",
                        "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
                        }
                },
                "node_modules/eslint-plugin-storybook": {
-                       "version": "9.0.17",
-                       "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-9.0.17.tgz",
-                       "integrity": "sha512-IuTdlwCEwoDNobdygRCxNhlKXHmsDfPtPvHGcsY35x2Bx8KItrjfekO19gJrjc1VT2CMfcZMYF8OBKaxHELupw==",
+                       "version": "10.0.7",
+                       "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-10.0.7.tgz",
+                       "integrity": "sha512-qOQq9KdT1jsBgT3qsxUH2n67aj1WR8D1XCoER8Q6yuVlS5TimNwk1mZeWkXVf/o4RQQT6flT2y5cG2gPLZPvJA==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
                                "@typescript-eslint/utils": "^8.8.1"
                        },
-                       "engines": {
-                               "node": ">=20.0.0"
-                       },
                        "peerDependencies": {
                                "eslint": ">=8",
-                               "storybook": "^9.0.17"
+                               "storybook": "^10.0.7"
                        }
                },
                "node_modules/eslint-plugin-svelte": {
                        }
                },
                "node_modules/fdir": {
-                       "version": "6.4.6",
-                       "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz",
-                       "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==",
+                       "version": "6.5.0",
+                       "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+                       "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
                        "dev": true,
                        "license": "MIT",
+                       "engines": {
+                               "node": ">=12.0.0"
+                       },
                        "peerDependencies": {
                                "picomatch": "^3 || ^4"
                        },
                        "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==",
                        "license": "MIT"
                },
-               "node_modules/is-docker": {
-                       "version": "2.2.1",
-                       "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
-                       "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
-                       "dev": true,
-                       "license": "MIT",
-                       "bin": {
-                               "is-docker": "cli.js"
-                       },
-                       "engines": {
-                               "node": ">=8"
-                       },
-                       "funding": {
-                               "url": "https://github.com/sponsors/sindresorhus"
-                       }
-               },
                "node_modules/is-extglob": {
                        "version": "2.1.1",
                        "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
                                "url": "https://github.com/sponsors/sindresorhus"
                        }
                },
-               "node_modules/is-wsl": {
-                       "version": "2.2.0",
-                       "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
-                       "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "is-docker": "^2.0.0"
-                       },
-                       "engines": {
-                               "node": ">=8"
-                       }
-               },
                "node_modules/isexe": {
                        "version": "2.0.0",
                        "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
                        "dev": true,
                        "license": "MIT"
                },
-               "node_modules/lower-case": {
-                       "version": "2.0.2",
-                       "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
-                       "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "tslib": "^2.0.3"
-                       }
-               },
                "node_modules/lowlight": {
                        "version": "3.3.0",
                        "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-3.3.0.tgz",
                        "dev": true,
                        "license": "MIT"
                },
-               "node_modules/no-case": {
-                       "version": "3.0.4",
-                       "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
-                       "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "lower-case": "^2.0.2",
-                               "tslib": "^2.0.3"
-                       }
-               },
                "node_modules/node-addon-api": {
                        "version": "7.1.1",
                        "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
                                "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "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==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "define-lazy-prop": "^2.0.0",
-                               "is-docker": "^2.1.1",
-                               "is-wsl": "^2.2.0"
-                       },
-                       "engines": {
-                               "node": ">=12"
-                       },
-                       "funding": {
-                               "url": "https://github.com/sponsors/sindresorhus"
-                       }
-               },
                "node_modules/opener": {
                        "version": "1.5.2",
                        "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz",
                                "url": "https://github.com/inikulin/parse5?sponsor=1"
                        }
                },
-               "node_modules/pascal-case": {
-                       "version": "3.1.2",
-                       "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
-                       "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
-                       "dev": true,
-                       "license": "MIT",
-                       "dependencies": {
-                               "no-case": "^3.0.4",
-                               "tslib": "^2.0.3"
-                       }
-               },
                "node_modules/path-exists": {
                        "version": "4.0.0",
                        "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
                        }
                },
                "node_modules/playwright": {
-                       "version": "1.54.1",
-                       "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.54.1.tgz",
-                       "integrity": "sha512-peWpSwIBmSLi6aW2auvrUtf2DqY16YYcCMO8rTVx486jKmDTJg7UAhyrraP98GB8BoPURZP8+nxO7TSd4cPr5g==",
+                       "version": "1.56.1",
+                       "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.56.1.tgz",
+                       "integrity": "sha512-aFi5B0WovBHTEvpM3DzXTUaeN6eN0qWnTkKx4NQaH4Wvcmc153PdaY2UBdSYKaGYw+UyWXSVyxDUg5DoPEttjw==",
                        "dev": true,
                        "license": "Apache-2.0",
                        "dependencies": {
-                               "playwright-core": "1.54.1"
+                               "playwright-core": "1.56.1"
                        },
                        "bin": {
                                "playwright": "cli.js"
                        }
                },
                "node_modules/playwright-core": {
-                       "version": "1.54.1",
-                       "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.54.1.tgz",
-                       "integrity": "sha512-Nbjs2zjj0htNhzgiy5wu+3w09YetDx5pkrpI/kZotDlDUaYk0HVA5xrBVPdow4SAUIlhgKcJeJg4GRKW6xHusA==",
+                       "version": "1.56.1",
+                       "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.56.1.tgz",
+                       "integrity": "sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==",
                        "dev": true,
                        "license": "Apache-2.0",
                        "bin": {
                        "dev": true,
                        "license": "MIT"
                },
+               "node_modules/scule": {
+                       "version": "1.3.0",
+                       "resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz",
+                       "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==",
+                       "dev": true,
+                       "license": "MIT"
+               },
                "node_modules/secure-compare": {
                        "version": "3.0.1",
                        "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz",
                        "license": "MIT"
                },
                "node_modules/storybook": {
-                       "version": "9.0.17",
-                       "resolved": "https://registry.npmjs.org/storybook/-/storybook-9.0.17.tgz",
-                       "integrity": "sha512-O+9jgJ+Trlq9VGD1uY4OBLKQWHHDKM/A/pA8vMW6PVehhGHNvpzcIC1bngr6mL5gGHZP2nBv+9XG8pTMcggMmg==",
+                       "version": "10.0.7",
+                       "resolved": "https://registry.npmjs.org/storybook/-/storybook-10.0.7.tgz",
+                       "integrity": "sha512-7smAu0o+kdm378Q2uIddk32pn0UdIbrtTVU+rXRVtTVTCrK/P2cCui2y4JH+Bl3NgEq1bbBQpCAF/HKrDjk2Qw==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
                                "@storybook/global": "^5.0.0",
+                               "@storybook/icons": "^1.6.0",
                                "@testing-library/jest-dom": "^6.6.3",
                                "@testing-library/user-event": "^14.6.1",
                                "@vitest/expect": "3.2.4",
+                               "@vitest/mocker": "3.2.4",
                                "@vitest/spy": "3.2.4",
-                               "better-opn": "^3.0.2",
                                "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0",
-                               "esbuild-register": "^3.5.0",
                                "recast": "^0.23.5",
                                "semver": "^7.6.2",
                                "ws": "^8.18.0"
                        },
                        "bin": {
-                               "storybook": "bin/index.cjs"
+                               "storybook": "dist/bin/dispatcher.js"
                        },
                        "funding": {
                                "type": "opencollective",
                        }
                },
                "node_modules/svelte2tsx": {
-                       "version": "0.7.41",
-                       "resolved": "https://registry.npmjs.org/svelte2tsx/-/svelte2tsx-0.7.41.tgz",
-                       "integrity": "sha512-/TUwpyn/Qc1wcGuayf2GSwvZ7htdAOzpo0JFFm96srKnRXoTD0gy4n06g+XgH8w016S3lPtyFVtFAm+0yJ0BZw==",
+                       "version": "0.7.45",
+                       "resolved": "https://registry.npmjs.org/svelte2tsx/-/svelte2tsx-0.7.45.tgz",
+                       "integrity": "sha512-cSci+mYGygYBHIZLHlm/jYlEc1acjAHqaQaDFHdEBpUueM9kSTnPpvPtSl5VkJOU1qSJ7h1K+6F/LIUYiqC8VA==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
                                "dedent-js": "^1.0.1",
-                               "pascal-case": "^3.1.1"
+                               "scule": "^1.3.0"
                        },
                        "peerDependencies": {
                                "svelte": "^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0",
                        "license": "MIT"
                },
                "node_modules/tinyglobby": {
-                       "version": "0.2.14",
-                       "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
-                       "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==",
+                       "version": "0.2.15",
+                       "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
+                       "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "fdir": "^6.4.4",
-                               "picomatch": "^4.0.2"
+                               "fdir": "^6.5.0",
+                               "picomatch": "^4.0.3"
                        },
                        "engines": {
                                "node": ">=12.0.0"
                        }
                },
                "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.10",
+                       "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.10.tgz",
+                       "integrity": "sha512-6NCPkv1ClwH+/BGE9QeoTIl09nuiAt0gS28nn1PvYXsGKRwM2TCbFA2QiilmehPDTXIe684k4rZI1yl3A1PCUw==",
                        "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/uri-js": {
                        }
                },
                "node_modules/vite": {
-                       "version": "7.0.5",
-                       "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.5.tgz",
-                       "integrity": "sha512-1mncVwJxy2C9ThLwz0+2GKZyEXuC3MyWtAAlNftlZZXZDP3AJt5FmwcMit/IGGaNZ8ZOB2BNO/HFUB+CpN0NQw==",
+                       "version": "7.2.2",
+                       "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.2.tgz",
+                       "integrity": "sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
                                "esbuild": "^0.25.0",
-                               "fdir": "^6.4.6",
-                               "picomatch": "^4.0.2",
+                               "fdir": "^6.5.0",
+                               "picomatch": "^4.0.3",
                                "postcss": "^8.5.6",
-                               "rollup": "^4.40.0",
-                               "tinyglobby": "^0.2.14"
+                               "rollup": "^4.43.0",
+                               "tinyglobby": "^0.2.15"
                        },
                        "bin": {
                                "vite": "bin/vite.js"
index 92c7457bd31b1b80e99b825ef23c631bf061a62a..8b88f691a433f09b383b13bf1e3847a38fd7e2e7 100644 (file)
                "cleanup": "rm -rf .svelte-kit build node_modules test-results"
        },
        "devDependencies": {
-               "@chromatic-com/storybook": "^4.0.1",
+               "@chromatic-com/storybook": "^4.1.2",
                "@eslint/compat": "^1.2.5",
                "@eslint/js": "^9.18.0",
                "@internationalized/date": "^3.8.2",
                "@lucide/svelte": "^0.515.0",
                "@playwright/test": "^1.49.1",
-               "@storybook/addon-a11y": "^9.0.17",
-               "@storybook/addon-docs": "^9.0.17",
-               "@storybook/addon-svelte-csf": "^5.0.7",
-               "@storybook/addon-vitest": "^9.0.17",
-               "@storybook/sveltekit": "^9.0.17",
-               "@sveltejs/adapter-static": "^3.0.8",
-               "@sveltejs/kit": "^2.22.0",
-               "@sveltejs/vite-plugin-svelte": "^6.0.0",
+               "@storybook/addon-a11y": "^10.0.7",
+               "@storybook/addon-docs": "^10.0.7",
+               "@storybook/addon-svelte-csf": "^5.0.10",
+               "@storybook/addon-vitest": "^10.0.7",
+               "@storybook/sveltekit": "^10.0.7",
+               "@sveltejs/adapter-static": "^3.0.10",
+               "@sveltejs/kit": "^2.48.4",
+               "@sveltejs/vite-plugin-svelte": "^6.2.1",
                "@tailwindcss/forms": "^0.5.9",
                "@tailwindcss/typography": "^0.5.15",
                "@tailwindcss/vite": "^4.0.0",
                "dexie": "^4.0.11",
                "eslint": "^9.18.0",
                "eslint-config-prettier": "^10.0.1",
-               "eslint-plugin-storybook": "^9.0.17",
+               "eslint-plugin-storybook": "^10.0.7",
                "eslint-plugin-svelte": "^3.0.0",
                "fflate": "^0.8.2",
                "globals": "^16.0.0",
                "http-server": "^14.1.1",
                "mdast": "^3.0.0",
                "mdsvex": "^0.12.3",
-               "playwright": "^1.53.0",
+               "playwright": "^1.56.1",
                "prettier": "^3.4.2",
                "prettier-plugin-svelte": "^3.3.3",
                "prettier-plugin-tailwindcss": "^0.6.11",
                "rehype-katex": "^7.0.1",
                "remark-math": "^6.0.0",
                "sass": "^1.93.3",
-               "storybook": "^9.0.17",
+               "storybook": "^10.0.7",
                "svelte": "^5.0.0",
                "svelte-check": "^4.0.0",
                "tailwind-merge": "^3.3.1",
@@ -73,7 +73,7 @@
                "typescript-eslint": "^8.20.0",
                "unified": "^11.0.5",
                "uuid": "^13.0.0",
-               "vite": "^7.0.4",
+               "vite": "^7.2.2",
                "vite-plugin-devtools-json": "^0.2.0",
                "vitest": "^3.2.3",
                "vitest-browser-svelte": "^0.1.0"
index 6a0fc087019965c90a0194c30fc762d34e6f2d4c..82848e4fbf181704892358ee9e79349822c42c86 100644 (file)
@@ -1,7 +1,7 @@
 <script module lang="ts">
        import { defineMeta } from '@storybook/addon-svelte-csf';
        import ChatForm from '$lib/components/app/chat/ChatForm/ChatForm.svelte';
-       import { expect } from 'storybook/internal/test';
+       import { expect } from 'storybook/test';
        import { mockServerProps, mockConfigs } from './fixtures/storybook-mocks';
        import jpgAsset from './fixtures/assets/1.jpg?url';
        import svgAsset from './fixtures/assets/hf-logo.svg?url';
index 1b1754f9d3732e9497647d37d7655d7312cdeeed..b74b246b1d1d1e0c8f70259a39e6f47410481e02 100644 (file)
@@ -1,7 +1,7 @@
 <script module lang="ts">
        import { defineMeta } from '@storybook/addon-svelte-csf';
        import ChatSidebar from '$lib/components/app/chat/ChatSidebar/ChatSidebar.svelte';
-       import { waitFor } from 'storybook/internal/test';
+       import { waitFor } from 'storybook/test';
        import { screen } from 'storybook/test';
 
        const { Story } = defineMeta({
index c8294ba0d98809a2ae8887149ae158c92a35213d..90aa90bb046aeadc715d7f61e031277f403ce823 100644 (file)
@@ -1,5 +1,6 @@
 <script module lang="ts">
        import { defineMeta } from '@storybook/addon-svelte-csf';
+       import { expect } from 'storybook/test';
        import { MarkdownContent } from '$lib/components/app';
        import { AI_TUTORIAL_MD } from './fixtures/ai-tutorial.js';
        import { API_DOCS_MD } from './fixtures/api-docs.js';
@@ -68,64 +69,62 @@ All links should have \`target="_blank"\` and \`rel="noopener noreferrer"\` attr
                class: 'max-w-[56rem] w-[calc(100vw-2rem)]'
        }}
        play={async ({ canvasElement }) => {
-               const { expect } = await import('storybook/internal/test');
-               
                // Wait for component to render
-               await new Promise(resolve => setTimeout(resolve, 100));
-               
+               await new Promise((resolve) => setTimeout(resolve, 100));
+
                // Find all links in the rendered content
                const links = canvasElement.querySelectorAll('a[href]');
-               
+
                // Test that we have the expected number of links
                expect(links.length).toBeGreaterThan(0);
-               
+
                // Test each link for proper attributes
                links.forEach((link) => {
                        const href = link.getAttribute('href');
-                       
+
                        // Test that external links have proper security attributes
                        if (href && (href.startsWith('http://') || href.startsWith('https://'))) {
                                expect(link.getAttribute('target')).toBe('_blank');
                                expect(link.getAttribute('rel')).toBe('noopener noreferrer');
                        }
                });
-               
+
                // Test specific links exist
-               const hugginFaceLink = Array.from(links).find(link => 
-                       link.getAttribute('href') === 'https://huggingface.co'
+               const hugginFaceLink = Array.from(links).find(
+                       (link) => link.getAttribute('href') === 'https://huggingface.co'
                );
                expect(hugginFaceLink).toBeTruthy();
                expect(hugginFaceLink?.textContent).toBe('Hugging Face Homepage');
-               
-               const githubLink = Array.from(links).find(link => 
-                       link.getAttribute('href') === 'https://github.com/ggml-org/llama.cpp'
+
+               const githubLink = Array.from(links).find(
+                       (link) => link.getAttribute('href') === 'https://github.com/ggml-org/llama.cpp'
                );
                expect(githubLink).toBeTruthy();
                expect(githubLink?.textContent).toBe('GitHub Repository');
-               
-               const openaiLink = Array.from(links).find(link => 
-                       link.getAttribute('href') === 'https://openai.com'
+
+               const openaiLink = Array.from(links).find(
+                       (link) => link.getAttribute('href') === 'https://openai.com'
                );
                expect(openaiLink).toBeTruthy();
                expect(openaiLink?.textContent).toBe('OpenAI Website');
-               
-               const googleLink = Array.from(links).find(link => 
-                       link.getAttribute('href') === 'https://www.google.com'
+
+               const googleLink = Array.from(links).find(
+                       (link) => link.getAttribute('href') === 'https://www.google.com'
                );
                expect(googleLink).toBeTruthy();
                expect(googleLink?.textContent).toBe('Google Search');
-               
+
                // Test inline links (auto-linked URLs)
-               const exampleLink = Array.from(links).find(link => 
-                       link.getAttribute('href') === 'https://example.com'
+               const exampleLink = Array.from(links).find(
+                       (link) => link.getAttribute('href') === 'https://example.com'
                );
                expect(exampleLink).toBeTruthy();
-               
-               const pythonDocsLink = Array.from(links).find(link => 
-                       link.getAttribute('href') === 'https://docs.python.org'
+
+               const pythonDocsLink = Array.from(links).find(
+                       (link) => link.getAttribute('href') === 'https://docs.python.org'
                );
                expect(pythonDocsLink).toBeTruthy();
-               
+
                console.log(`✅ URL Links test passed - Found ${links.length} links with proper attributes`);
        }}
 />