From e65472d322a7d4c2ba9f725be83a9fdf7c4d7cfd Mon Sep 17 00:00:00 2001 From: cte Date: Tue, 10 Jun 2025 14:15:47 -0700 Subject: [PATCH] Remove Storybook + unused components --- knip.json | 24 +- pnpm-lock.yaml | 626 ------------------ webview-ui/.storybook/main.ts | 11 - webview-ui/.storybook/preview.ts | 17 - webview-ui/.storybook/vscode.css | 56 -- webview-ui/package.json | 8 - webview-ui/src/components/ui/chat/Chat.tsx | 29 - .../src/components/ui/chat/ChatInput.tsx | 100 --- .../components/ui/chat/ChatInputProvider.ts | 11 - .../src/components/ui/chat/ChatMessage.tsx | 105 --- .../components/ui/chat/ChatMessageProvider.ts | 12 - .../src/components/ui/chat/ChatMessages.tsx | 41 -- .../src/components/ui/chat/ChatProvider.ts | 11 - webview-ui/src/components/ui/chat/index.ts | 2 - webview-ui/src/components/ui/chat/types.ts | 39 -- .../src/components/ui/chat/useChatInput.ts | 13 - .../src/components/ui/chat/useChatMessage.ts | 13 - .../src/components/ui/chat/useChatUI.ts | 13 - .../src/components/ui/markdown/Blockquote.tsx | 3 - .../src/components/ui/markdown/CodeBlock.tsx | 72 -- .../src/components/ui/markdown/Markdown.tsx | 81 --- .../src/components/ui/markdown/index.ts | 1 - .../src/stories/AutosizeTextarea.stories.tsx | 22 - webview-ui/src/stories/Badge.stories.tsx | 43 -- webview-ui/src/stories/Button.stories.ts | 95 --- webview-ui/src/stories/Chat.stories.tsx | 51 -- .../src/stories/Collapsible.stories.tsx | 36 - webview-ui/src/stories/Combobox.stories.tsx | 99 --- .../src/stories/DropdownMenu.stories.tsx | 113 ---- webview-ui/src/stories/Progress.stories.tsx | 25 - webview-ui/src/stories/Slider.stories.tsx | 32 - webview-ui/src/stories/Welcome.mdx | 7 - webview-ui/src/stories/assets/.gitkeep | 0 33 files changed, 10 insertions(+), 1801 deletions(-) delete mode 100644 webview-ui/.storybook/main.ts delete mode 100644 webview-ui/.storybook/preview.ts delete mode 100644 webview-ui/.storybook/vscode.css delete mode 100644 webview-ui/src/components/ui/chat/Chat.tsx delete mode 100644 webview-ui/src/components/ui/chat/ChatInput.tsx delete mode 100644 webview-ui/src/components/ui/chat/ChatInputProvider.ts delete mode 100644 webview-ui/src/components/ui/chat/ChatMessage.tsx delete mode 100644 webview-ui/src/components/ui/chat/ChatMessageProvider.ts delete mode 100644 webview-ui/src/components/ui/chat/ChatMessages.tsx delete mode 100644 webview-ui/src/components/ui/chat/ChatProvider.ts delete mode 100644 webview-ui/src/components/ui/chat/index.ts delete mode 100644 webview-ui/src/components/ui/chat/types.ts delete mode 100644 webview-ui/src/components/ui/chat/useChatInput.ts delete mode 100644 webview-ui/src/components/ui/chat/useChatMessage.ts delete mode 100644 webview-ui/src/components/ui/chat/useChatUI.ts delete mode 100644 webview-ui/src/components/ui/markdown/Blockquote.tsx delete mode 100644 webview-ui/src/components/ui/markdown/CodeBlock.tsx delete mode 100644 webview-ui/src/components/ui/markdown/Markdown.tsx delete mode 100644 webview-ui/src/components/ui/markdown/index.ts delete mode 100644 webview-ui/src/stories/AutosizeTextarea.stories.tsx delete mode 100644 webview-ui/src/stories/Badge.stories.tsx delete mode 100644 webview-ui/src/stories/Button.stories.ts delete mode 100644 webview-ui/src/stories/Chat.stories.tsx delete mode 100644 webview-ui/src/stories/Collapsible.stories.tsx delete mode 100644 webview-ui/src/stories/Combobox.stories.tsx delete mode 100644 webview-ui/src/stories/DropdownMenu.stories.tsx delete mode 100644 webview-ui/src/stories/Progress.stories.tsx delete mode 100644 webview-ui/src/stories/Slider.stories.tsx delete mode 100644 webview-ui/src/stories/Welcome.mdx delete mode 100644 webview-ui/src/stories/assets/.gitkeep diff --git a/knip.json b/knip.json index 8fa9d9e9ff..7ca8cfad7b 100644 --- a/knip.json +++ b/knip.json @@ -1,29 +1,25 @@ { "$schema": "https://unpkg.com/knip@latest/schema.json", - "entry": ["src/extension.ts", "src/activate/index.ts", "webview-ui/src/index.tsx"], - "project": ["src/**/*.ts", "webview-ui/src/**/*.{ts,tsx}"], "ignore": [ - "**/__mocks__/**", "**/__tests__/**", - "**/test/**", - "**/*.test.ts", - "**/*.test.tsx", - "**/stories/**", - "bin/**", "apps/vscode-e2e/**", - "packages/evals/**", - "src/extension/**", + "src/extension/api.ts", "src/activate/**", - "src/workers/**", - "src/schemas/ipc.ts", + "src/workers/countTokens.ts", "src/extension.ts", - "scripts/**", - "vitest.config.ts" + "scripts/**" ], "workspaces": { + "src": { + "entry": ["extension.ts"], + "project": ["**/*.ts"] + }, "webview-ui": { "entry": ["src/index.tsx"], "project": ["src/**/*.{ts,tsx}"] + }, + "packages/{build,cloud,evals,ipc,telemetry,types}": { + "project": ["src/**/*.ts"] } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 44186f1264..f4226cdeb7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1067,18 +1067,6 @@ importers: '@roo-code/config-typescript': specifier: workspace:^ version: link:../packages/config-typescript - '@storybook/addon-essentials': - specifier: ^8.5.6 - version: 8.6.12(@types/react@18.3.23)(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3)) - '@storybook/blocks': - specifier: ^8.5.6 - version: 8.6.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3)) - '@storybook/react': - specifier: ^9.0.0 - version: 9.0.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3) - '@storybook/react-vite': - specifier: ^9.0.0 - version: 9.0.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.40.2)(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3)(vite@6.3.5(@types/node@18.19.100)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.19.4)(yaml@2.8.0)) '@testing-library/jest-dom': specifier: ^6.6.3 version: 6.6.3 @@ -1124,12 +1112,6 @@ importers: jest-simple-dot-reporter: specifier: ^1.0.5 version: 1.0.5 - storybook: - specifier: ^9.0.0 - version: 9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3) - storybook-dark-mode: - specifier: ^4.0.2 - version: 4.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3)) ts-jest: specifier: ^29.2.5 version: 29.3.3(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(esbuild@0.25.5)(jest@29.7.0(@types/node@18.19.100)(babel-plugin-macros@3.1.0))(typescript@5.8.3) @@ -2370,15 +2352,6 @@ packages: resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@joshwooding/vite-plugin-react-docgen-typescript@0.6.0': - resolution: {integrity: sha512-dPo6SE4dm8UKcgGg4LsV9iw6f5HkIeJwzMA2M2Lb+mhl5vxesbDvb3ENTzNTkGnOxS6PqJig2pfXdtYaW3S9fg==} - peerDependencies: - typescript: '>= 4.3.x' - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 - peerDependenciesMeta: - typescript: - optional: true - '@jridgewell/gen-mapping@0.3.8': resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} @@ -2474,12 +2447,6 @@ packages: resolution: {integrity: sha512-LyQz4XJIdCdY/+temIhD/Ed0x/p4GAOUycpFSEK2Ads1CPKZy6b7V/2ROEtQiLLQ8soIs0xe/QAoR6kwpyW/yw==} engines: {node: '>=12'} - '@mdx-js/react@3.1.0': - resolution: {integrity: sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==} - peerDependencies: - '@types/react': '>=16' - react: '>=16' - '@mermaid-js/parser@0.4.0': resolution: {integrity: sha512-wla8XOWvQAwuqy+gxiZqY+c7FokraOTHRWMsbB4AgRx9Sy7zKslNyejy7E+a77qHfey5GXw/ik3IXv/NHMJgaA==} @@ -3378,15 +3345,6 @@ packages: peerDependencies: '@redis/client': ^5.5.5 - '@rollup/pluginutils@5.1.4': - resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rollup/rollup-android-arm-eabi@4.40.2': resolution: {integrity: sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg==} cpu: [arm] @@ -3839,149 +3797,6 @@ packages: '@standard-schema/utils@0.3.0': resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==} - '@storybook/addon-actions@8.6.12': - resolution: {integrity: sha512-B5kfiRvi35oJ0NIo53CGH66H471A3XTzrfaa6SxXEJsgxxSeKScG5YeXcCvLiZfvANRQ7QDsmzPUgg0o3hdMXw==} - peerDependencies: - storybook: ^8.6.12 - - '@storybook/addon-backgrounds@8.6.12': - resolution: {integrity: sha512-lmIAma9BiiCTbJ8YfdZkXjpnAIrOUcgboLkt1f6XJ78vNEMnLNzD9gnh7Tssz1qrqvm34v9daDjIb+ggdiKp3Q==} - peerDependencies: - storybook: ^8.6.12 - - '@storybook/addon-controls@8.6.12': - resolution: {integrity: sha512-9VSRPJWQVb9wLp21uvpxDGNctYptyUX0gbvxIWOHMH3R2DslSoq41lsC/oQ4l4zSHVdL+nq8sCTkhBxIsjKqdQ==} - peerDependencies: - storybook: ^8.6.12 - - '@storybook/addon-docs@8.6.12': - resolution: {integrity: sha512-kEezQjAf/p3SpDzLABgg4fbT48B6dkT2LiZCKTRmCrJVtuReaAr4R9MMM6Jsph6XjbIj/SvOWf3CMeOPXOs9sg==} - peerDependencies: - storybook: ^8.6.12 - - '@storybook/addon-essentials@8.6.12': - resolution: {integrity: sha512-Y/7e8KFlttaNfv7q2zoHMPdX6hPXHdsuQMAjYl5NG9HOAJREu4XBy4KZpbcozRe4ApZ78rYsN/MO1EuA+bNMIA==} - peerDependencies: - storybook: ^8.6.12 - - '@storybook/addon-highlight@8.6.12': - resolution: {integrity: sha512-9FITVxdoycZ+eXuAZL9ElWyML/0fPPn9UgnnAkrU7zkMi+Segq/Tx7y+WWanC5zfWZrXAuG6WTOYEXeWQdm//w==} - peerDependencies: - storybook: ^8.6.12 - - '@storybook/addon-measure@8.6.12': - resolution: {integrity: sha512-tACmwqqOvutaQSduw8SMb62wICaT1rWaHtMN3vtWXuxgDPSdJQxLP+wdVyRYMAgpxhLyIO7YRf++Hfha9RHgFg==} - peerDependencies: - storybook: ^8.6.12 - - '@storybook/addon-outline@8.6.12': - resolution: {integrity: sha512-1ylwm+n1s40S91No0v9T4tCjZORu3GbnjINlyjYTDLLhQHyBQd3nWR1Y1eewU4xH4cW9SnSLcMQFS/82xHqU6A==} - peerDependencies: - storybook: ^8.6.12 - - '@storybook/addon-toolbars@8.6.12': - resolution: {integrity: sha512-HEcSzo1DyFtIu5/ikVOmh5h85C1IvK9iFKSzBR6ice33zBOaehVJK+Z5f487MOXxPsZ63uvWUytwPyViGInj+g==} - peerDependencies: - storybook: ^8.6.12 - - '@storybook/addon-viewport@8.6.12': - resolution: {integrity: sha512-EXK2LArAnABsPP0leJKy78L/lbMWow+EIJfytEP5fHaW4EhMR6h7Hzaqzre6U0IMMr/jVFa1ci+m0PJ0eQc2bw==} - peerDependencies: - storybook: ^8.6.12 - - '@storybook/blocks@8.6.12': - resolution: {integrity: sha512-DohlTq6HM1jDbHYiXL4ZvZ00VkhpUp5uftzj/CZDLY1fYHRjqtaTwWm2/OpceivMA8zDitLcq5atEZN+f+siTg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^8.6.12 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@storybook/builder-vite@9.0.5': - resolution: {integrity: sha512-mr2IqmNmlCWQCxorglo2diGcCIDwaZEJWG6noWkMPW6ri/Nh4y8DQYbK7hUK3O3sGLdV4QfTPCbRPGgMtBb07g==} - peerDependencies: - storybook: ^9.0.5 - vite: ^5.0.0 || ^6.0.0 - - '@storybook/components@8.6.12': - resolution: {integrity: sha512-FiaE8xvCdvKC2arYusgtlDNZ77b8ysr8njAYQZwwaIHjy27TbR2tEpLDCmUwSbANNmivtc/xGEiDDwcNppMWlQ==} - peerDependencies: - storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - - '@storybook/core-events@8.6.12': - resolution: {integrity: sha512-j2MUlSfYOhTsjlruRWTqSVwYreJGFIsWeqHFAhCdtmXe3qpFBM/LuxTKuaM1uWvs6vEAyGEzDw8+DXwuO6uISg==} - peerDependencies: - storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - - '@storybook/csf-plugin@8.6.12': - resolution: {integrity: sha512-6s8CnP1aoKPb3XtC0jRLUp8M5vTA8RhGAwQDKUsFpCC7g89JR9CaKs9FY2ZSzsNbjR15uASi7b3K8BzeYumYQg==} - peerDependencies: - storybook: ^8.6.12 - - '@storybook/csf-plugin@9.0.5': - resolution: {integrity: sha512-dO+2J3GlIK1pRpXVL9CXhENwmaF0bF6jji+MtUXRHooHtbgtogaTGlYffBnIojuXHnskR6BAaMUPPLVOVY6Ctw==} - peerDependencies: - storybook: ^9.0.5 - - '@storybook/global@5.0.0': - resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - - '@storybook/icons@1.4.0': - resolution: {integrity: sha512-Td73IeJxOyalzvjQL+JXx72jlIYHgs+REaHiREOqfpo3A2AYYG71AUbcv+lg7mEDIweKVCxsMQ0UKo634c8XeA==} - 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 - - '@storybook/manager-api@8.6.12': - resolution: {integrity: sha512-O0SpISeJLNTQvhSBOsWzzkCgs8vCjOq1578rwqHlC6jWWm4QmtfdyXqnv7rR1Hk08kQ+Dzqh0uhwHx0nfwy4nQ==} - peerDependencies: - storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - - '@storybook/react-dom-shim@8.6.12': - resolution: {integrity: sha512-51QvoimkBzYs8s3rCYnY5h0cFqLz/Mh0vRcughwYaXckWzDBV8l67WBO5Xf5nBsukCbWyqBVPpEQLww8s7mrLA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.6.12 - - '@storybook/react-dom-shim@9.0.5': - resolution: {integrity: sha512-lMlYoiuJJm9UcUPYYkVNtJu8Xv23fMKqf0k0SF3JB/efaSiaiCNR+fH2g81FrdntOkfFU3YWQ8DUY5TYH73HeA==} - 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.5 - - '@storybook/react-vite@9.0.5': - resolution: {integrity: sha512-FZH7T+hfoS8DMLICfX8E/LDPjrBTHmKvH4dZALZniVKlH0ML2w4ru9M+Lt0w2aPP2NPemnPiPH3aajIQjofY3Q==} - engines: {node: '>=20.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 - storybook: ^9.0.5 - vite: ^5.0.0 || ^6.0.0 - - '@storybook/react@9.0.5': - resolution: {integrity: sha512-qBEUaiGd1d2SQllhcMrBwwnzwWJWHw5XiTeq5MsjkEy2Oqfm7kWqTdGSkMbW/MoeFX5foO+Mu7nLqM9s4GxNXg==} - engines: {node: '>=20.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 - storybook: ^9.0.5 - typescript: '>= 4.9.x' - peerDependenciesMeta: - typescript: - optional: true - - '@storybook/theming@8.6.12': - resolution: {integrity: sha512-6VjZg8HJ2Op7+KV7ihJpYrDnFtd9D1jrQnUS8LckcpuBXrIEbaut5+34ObY8ssQnSqkk2GwIZBBBQYQBCVvkOw==} - peerDependencies: - storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} @@ -4352,9 +4167,6 @@ packages: '@types/diff@5.2.3': resolution: {integrity: sha512-K0Oqlrq3kQMaO2RhfrNQX5trmt+XLyom88zS0u84nnIcLvFnRUMRRHmrGny5GSM+kNO9IZLARsdQHDzkhAgmrQ==} - '@types/doctrine@0.0.9': - resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} - '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} @@ -4406,9 +4218,6 @@ packages: '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - '@types/mdx@2.0.13': - resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} - '@types/minimatch@5.1.2': resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} @@ -4463,9 +4272,6 @@ packages: '@types/react@18.3.23': resolution: {integrity: sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==} - '@types/resolve@1.20.6': - resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} - '@types/shell-quote@1.7.5': resolution: {integrity: sha512-+UE8GAGRPbJVQDdxi16dgadcBfQ+KG2vgZhV1+3A1XmHbmwcdwhCUwIdy+d3pAGrbvgRoVSjeI9vOWyq376Yzw==} @@ -4580,9 +4386,6 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 - '@vitest/expect@3.0.9': - resolution: {integrity: sha512-5eCqRItYgIML7NNVgJj6TVCmdzE7ZVgJhruW0ziSQV4V7PvLkDL1bBkBdcTs/VuIz0IxPb5da1IDSqc1TR9eig==} - '@vitest/expect@3.1.3': resolution: {integrity: sha512-7FTQQuuLKmN1Ig/h+h/GO+44Q1IlglPlR2es4ab7Yvfx+Uk5xsv+Ykk+MEt/M2Yn/xGmzaLKxGw2lgy2bwuYqg==} @@ -4625,9 +4428,6 @@ packages: vite: optional: true - '@vitest/pretty-format@3.0.9': - resolution: {integrity: sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==} - '@vitest/pretty-format@3.1.3': resolution: {integrity: sha512-i6FDiBeJUGLDKADw2Gb01UtUNb12yyXAqC/mmRWuYl+m/U9GS7s8us5ONmGkGpUUo7/iAYzI2ePVfOZTYvUifA==} @@ -4655,9 +4455,6 @@ packages: '@vitest/snapshot@3.2.1': resolution: {integrity: sha512-5xko/ZpW2Yc65NVK9Gpfg2y4BFvcF+At7yRT5AHUpTg9JvZ4xZoyuRY4ASlmNcBZjMslV08VRLDrBOmUe2YX3g==} - '@vitest/spy@3.0.9': - resolution: {integrity: sha512-/CcK2UDl0aQ2wtkp3YVWldrpLRNCfVcIOFGlVGKO4R5eajsH393Z1yiXLVQ7vWsj26JOEjeZI0x5sm5P4OGUNQ==} - '@vitest/spy@3.1.3': resolution: {integrity: sha512-x6w+ctOEmEXdWaa6TO4ilb7l9DxPR5bwEb6hILKuxfU1NqWT2mpJD9NJN7t3OTfxmVlOMrvtoFJGdgyzZ605lQ==} @@ -4667,9 +4464,6 @@ packages: '@vitest/spy@3.2.1': resolution: {integrity: sha512-Nbfib34Z2rfcJGSetMxjDCznn4pCYPZOtQYox2kzebIJcgH75yheIKd5QYSFmR8DIZf2M8fwOm66qSDIfRFFfQ==} - '@vitest/utils@3.0.9': - resolution: {integrity: sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==} - '@vitest/utils@3.1.3': resolution: {integrity: sha512-2Ltrpht4OmHO9+c/nmHtF09HWiyWdworqnHIwjfvDyWjuwKbdkcS9AnhsDn+8E2RM4x++foD1/tNuLPVvWG1Rg==} @@ -4907,10 +4701,6 @@ packages: resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} engines: {node: '>=4'} - ast-types@0.16.1: - resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} - engines: {node: '>=4'} - async-function@1.0.0: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} @@ -5019,10 +4809,6 @@ packages: resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} engines: {node: '>=10.0.0'} - better-opn@3.0.2: - resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} - engines: {node: '>=12.0.0'} - better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} @@ -5759,10 +5545,6 @@ packages: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} - define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - define-lazy-prop@3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} @@ -5847,10 +5629,6 @@ packages: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} @@ -6272,9 +6050,6 @@ packages: estree-util-is-identifier-name@3.0.0: resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} @@ -7042,11 +6817,6 @@ packages: is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - is-docker@3.0.0: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -7204,10 +6974,6 @@ packages: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} - is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - is-wsl@3.1.0: resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} engines: {node: '>=16'} @@ -7582,7 +7348,6 @@ packages: libsql@0.5.12: resolution: {integrity: sha512-TikiQZ1j4TwFEqVdJdTM9ZTti28is/ytGEvn0S2MocOj69UKQetWACe/qd8KAD5VeNnQSVd6Nlm2AJx0DFW9Ag==} - cpu: [x64, arm64, wasm32, arm] os: [darwin, linux, win32] lie@3.3.0: @@ -7873,9 +7638,6 @@ packages: engines: {node: '>=12.0.0'} hasBin: true - map-or-similar@1.5.0: - resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} - map-stream@0.1.0: resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} @@ -7965,9 +7727,6 @@ packages: resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} engines: {node: '>= 0.8'} - memoizerific@1.11.3: - resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} - memorystream@0.3.1: resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} engines: {node: '>= 0.10.0'} @@ -8405,10 +8164,6 @@ packages: resolution: {integrity: sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==} engines: {node: '>=18'} - open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} - openai@4.103.0: resolution: {integrity: sha512-eWcz9kdurkGOFDtd5ySS5y251H2uBgq9+1a2lTBnjMMzlexJ40Am5t6Mu76SSE87VvitPa0dkIAp75F+dZVC0g==} hasBin: true @@ -8667,10 +8422,6 @@ packages: points-on-path@0.2.1: resolution: {integrity: sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==} - polished@4.3.1: - resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} - engines: {node: '>=10'} - possible-typed-array-names@1.1.0: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} @@ -8913,15 +8664,6 @@ packages: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true - react-docgen-typescript@2.2.2: - resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} - peerDependencies: - typescript: '>= 4.3.x' - - react-docgen@8.0.0: - resolution: {integrity: sha512-kmob/FOTwep7DUWf9KjuenKX0vyvChr3oTdvvPt09V60Iz75FJp+T/0ZeHMbAfJj2WaVWqAPP5Hmm3PYzSPPKg==} - engines: {node: ^20.9.0 || >=22} - react-dom@18.3.1: resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} peerDependencies: @@ -9082,10 +8824,6 @@ packages: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} - recast@0.23.11: - resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} - engines: {node: '>= 4'} - recharts-scale@0.4.5: resolution: {integrity: sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==} @@ -9515,18 +9253,6 @@ packages: resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} engines: {node: '>=18'} - storybook-dark-mode@4.0.2: - resolution: {integrity: sha512-zjcwwQ01R5t1VsakA6alc2JDIRVtavryW8J3E3eKLDIlAMcvsgtpxlelWkZs2cuNspk6Z10XzhQVrUWtYc3F0w==} - - storybook@9.0.5: - resolution: {integrity: sha512-4RIyN7P6R6umcgAB6jv3GSIDA0qw9iRcm3KnIR6VhLKLKlbbmDsUs/JmjLobxL5W+LB4zbCbrBcFsW7AL2MSyA==} - hasBin: true - peerDependencies: - prettier: ^2 || ^3 - peerDependenciesMeta: - prettier: - optional: true - stream-combiner@0.0.4: resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} @@ -9631,10 +9357,6 @@ packages: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} - strip-indent@4.0.0: - resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} - engines: {node: '>=12'} - strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} @@ -9936,10 +9658,6 @@ packages: esbuild: optional: true - tsconfig-paths@4.2.0: - resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} - engines: {node: '>=6'} - tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} @@ -10178,10 +9896,6 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - unplugin@1.16.1: - resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==} - engines: {node: '>=14.0.0'} - untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} @@ -10510,9 +10224,6 @@ packages: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} - webpack-virtual-modules@0.6.2: - resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} @@ -12368,15 +12079,6 @@ snapshots: '@types/yargs': 17.0.33 chalk: 4.1.2 - '@joshwooding/vite-plugin-react-docgen-typescript@0.6.0(typescript@5.8.3)(vite@6.3.5(@types/node@18.19.100)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.19.4)(yaml@2.8.0))': - dependencies: - glob: 10.4.5 - magic-string: 0.30.17 - react-docgen-typescript: 2.2.2(typescript@5.8.3) - vite: 6.3.5(@types/node@18.19.100)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.19.4)(yaml@2.8.0) - optionalDependencies: - typescript: 5.8.3 - '@jridgewell/gen-mapping@0.3.8': dependencies: '@jridgewell/set-array': 1.2.1 @@ -12484,12 +12186,6 @@ snapshots: dependencies: unist-util-visit: 1.4.1 - '@mdx-js/react@3.1.0(@types/react@18.3.23)(react@18.3.1)': - dependencies: - '@types/mdx': 2.0.13 - '@types/react': 18.3.23 - react: 18.3.1 - '@mermaid-js/parser@0.4.0': dependencies: langium: 3.3.1 @@ -13359,14 +13055,6 @@ snapshots: dependencies: '@redis/client': 5.5.5 - '@rollup/pluginutils@5.1.4(rollup@4.40.2)': - dependencies: - '@types/estree': 1.0.7 - estree-walker: 2.0.2 - picomatch: 4.0.2 - optionalDependencies: - rollup: 4.40.2 - '@rollup/rollup-android-arm-eabi@4.40.2': optional: true @@ -13959,175 +13647,6 @@ snapshots: '@standard-schema/utils@0.3.0': {} - '@storybook/addon-actions@8.6.12(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3))': - dependencies: - '@storybook/global': 5.0.0 - '@types/uuid': 9.0.8 - dequal: 2.0.3 - polished: 4.3.1 - storybook: 9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3) - uuid: 9.0.1 - - '@storybook/addon-backgrounds@8.6.12(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3))': - dependencies: - '@storybook/global': 5.0.0 - memoizerific: 1.11.3 - storybook: 9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3) - ts-dedent: 2.2.0 - - '@storybook/addon-controls@8.6.12(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3))': - dependencies: - '@storybook/global': 5.0.0 - dequal: 2.0.3 - storybook: 9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3) - ts-dedent: 2.2.0 - - '@storybook/addon-docs@8.6.12(@types/react@18.3.23)(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3))': - dependencies: - '@mdx-js/react': 3.1.0(@types/react@18.3.23)(react@18.3.1) - '@storybook/blocks': 8.6.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3)) - '@storybook/csf-plugin': 8.6.12(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3)) - '@storybook/react-dom-shim': 8.6.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3)) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - storybook: 9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3) - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react' - - '@storybook/addon-essentials@8.6.12(@types/react@18.3.23)(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3))': - dependencies: - '@storybook/addon-actions': 8.6.12(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3)) - '@storybook/addon-backgrounds': 8.6.12(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3)) - '@storybook/addon-controls': 8.6.12(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3)) - '@storybook/addon-docs': 8.6.12(@types/react@18.3.23)(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3)) - '@storybook/addon-highlight': 8.6.12(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3)) - '@storybook/addon-measure': 8.6.12(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3)) - '@storybook/addon-outline': 8.6.12(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3)) - '@storybook/addon-toolbars': 8.6.12(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3)) - '@storybook/addon-viewport': 8.6.12(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3)) - storybook: 9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3) - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react' - - '@storybook/addon-highlight@8.6.12(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3))': - dependencies: - '@storybook/global': 5.0.0 - storybook: 9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3) - - '@storybook/addon-measure@8.6.12(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3))': - dependencies: - '@storybook/global': 5.0.0 - storybook: 9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3) - tiny-invariant: 1.3.3 - - '@storybook/addon-outline@8.6.12(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3))': - dependencies: - '@storybook/global': 5.0.0 - storybook: 9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3) - ts-dedent: 2.2.0 - - '@storybook/addon-toolbars@8.6.12(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3))': - dependencies: - storybook: 9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3) - - '@storybook/addon-viewport@8.6.12(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3))': - dependencies: - memoizerific: 1.11.3 - storybook: 9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3) - - '@storybook/blocks@8.6.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3))': - dependencies: - '@storybook/icons': 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - storybook: 9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3) - ts-dedent: 2.2.0 - optionalDependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@storybook/builder-vite@9.0.5(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3))(vite@6.3.5(@types/node@18.19.100)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.19.4)(yaml@2.8.0))': - dependencies: - '@storybook/csf-plugin': 9.0.5(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3)) - storybook: 9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3) - ts-dedent: 2.2.0 - vite: 6.3.5(@types/node@18.19.100)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.19.4)(yaml@2.8.0) - - '@storybook/components@8.6.12(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3))': - dependencies: - storybook: 9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3) - - '@storybook/core-events@8.6.12(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3))': - dependencies: - storybook: 9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3) - - '@storybook/csf-plugin@8.6.12(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3))': - dependencies: - storybook: 9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3) - unplugin: 1.16.1 - - '@storybook/csf-plugin@9.0.5(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3))': - dependencies: - storybook: 9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3) - unplugin: 1.16.1 - - '@storybook/global@5.0.0': {} - - '@storybook/icons@1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@storybook/manager-api@8.6.12(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3))': - dependencies: - storybook: 9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3) - - '@storybook/react-dom-shim@8.6.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3))': - dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - storybook: 9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3) - - '@storybook/react-dom-shim@9.0.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3))': - dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - storybook: 9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3) - - '@storybook/react-vite@9.0.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.40.2)(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3)(vite@6.3.5(@types/node@18.19.100)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.19.4)(yaml@2.8.0))': - dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.0(typescript@5.8.3)(vite@6.3.5(@types/node@18.19.100)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.19.4)(yaml@2.8.0)) - '@rollup/pluginutils': 5.1.4(rollup@4.40.2) - '@storybook/builder-vite': 9.0.5(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3))(vite@6.3.5(@types/node@18.19.100)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.19.4)(yaml@2.8.0)) - '@storybook/react': 9.0.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3) - find-up: 5.0.0 - magic-string: 0.30.17 - react: 18.3.1 - react-docgen: 8.0.0 - react-dom: 18.3.1(react@18.3.1) - resolve: 1.22.10 - storybook: 9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3) - tsconfig-paths: 4.2.0 - vite: 6.3.5(@types/node@18.19.100)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.19.4)(yaml@2.8.0) - transitivePeerDependencies: - - rollup - - supports-color - - typescript - - '@storybook/react@9.0.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3))(typescript@5.8.3)': - dependencies: - '@storybook/global': 5.0.0 - '@storybook/react-dom-shim': 9.0.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3)) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - storybook: 9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3) - optionalDependencies: - typescript: 5.8.3 - - '@storybook/theming@8.6.12(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3))': - dependencies: - storybook: 9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3) - '@swc/counter@0.1.3': {} '@swc/helpers@0.5.15': @@ -14499,8 +14018,6 @@ snapshots: '@types/diff@5.2.3': {} - '@types/doctrine@0.0.9': {} - '@types/estree-jsx@1.0.5': dependencies: '@types/estree': 1.0.7 @@ -14561,8 +14078,6 @@ snapshots: dependencies: '@types/unist': 3.0.3 - '@types/mdx@2.0.13': {} - '@types/minimatch@5.1.2': {} '@types/mocha@10.0.10': {} @@ -14620,8 +14135,6 @@ snapshots: '@types/prop-types': 15.7.14 csstype: 3.1.3 - '@types/resolve@1.20.6': {} - '@types/shell-quote@1.7.5': {} '@types/stack-utils@2.0.3': {} @@ -14766,13 +14279,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/expect@3.0.9': - dependencies: - '@vitest/spy': 3.0.9 - '@vitest/utils': 3.0.9 - chai: 5.2.0 - tinyrainbow: 2.0.0 - '@vitest/expect@3.1.3': dependencies: '@vitest/spy': 3.1.3 @@ -14828,10 +14334,6 @@ snapshots: optionalDependencies: vite: 6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(tsx@4.19.4)(yaml@2.8.0) - '@vitest/pretty-format@3.0.9': - dependencies: - tinyrainbow: 2.0.0 - '@vitest/pretty-format@3.1.3': dependencies: tinyrainbow: 2.0.0 @@ -14877,10 +14379,6 @@ snapshots: magic-string: 0.30.17 pathe: 2.0.3 - '@vitest/spy@3.0.9': - dependencies: - tinyspy: 3.0.2 - '@vitest/spy@3.1.3': dependencies: tinyspy: 3.0.2 @@ -14893,12 +14391,6 @@ snapshots: dependencies: tinyspy: 4.0.3 - '@vitest/utils@3.0.9': - dependencies: - '@vitest/pretty-format': 3.0.9 - loupe: 3.1.3 - tinyrainbow: 2.0.0 - '@vitest/utils@3.1.3': dependencies: '@vitest/pretty-format': 3.1.3 @@ -15184,10 +14676,6 @@ snapshots: dependencies: tslib: 2.8.1 - ast-types@0.16.1: - dependencies: - tslib: 2.8.1 - async-function@1.0.0: {} async-mutex@0.5.0: @@ -15324,10 +14812,6 @@ snapshots: basic-ftp@5.0.5: {} - better-opn@3.0.2: - dependencies: - open: 8.4.2 - better-path-resolve@1.0.0: dependencies: is-windows: 1.0.2 @@ -16121,8 +15605,6 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 - define-lazy-prop@2.0.0: {} - define-lazy-prop@3.0.0: {} define-properties@1.2.1: @@ -16185,10 +15667,6 @@ snapshots: dependencies: esutils: 2.0.3 - doctrine@3.0.0: - dependencies: - esutils: 2.0.3 - dom-accessibility-api@0.5.16: {} dom-accessibility-api@0.6.3: {} @@ -16711,8 +16189,6 @@ snapshots: estree-util-is-identifier-name@3.0.0: {} - estree-walker@2.0.2: {} - estree-walker@3.0.3: dependencies: '@types/estree': 1.0.7 @@ -17605,8 +17081,6 @@ snapshots: is-decimal@2.0.1: {} - is-docker@2.2.1: {} - is-docker@3.0.0: {} is-extglob@2.1.1: {} @@ -17731,10 +17205,6 @@ snapshots: is-windows@1.0.2: {} - is-wsl@2.2.0: - dependencies: - is-docker: 2.2.1 - is-wsl@3.1.0: dependencies: is-inside-container: 1.0.0 @@ -18710,8 +18180,6 @@ snapshots: underscore: 1.13.7 xmlbuilder: 10.1.1 - map-or-similar@1.5.0: {} - map-stream@0.1.0: {} markdown-it@14.1.0: @@ -18917,10 +18385,6 @@ snapshots: media-typer@1.1.0: {} - memoizerific@1.11.3: - dependencies: - map-or-similar: 1.5.0 - memorystream@0.3.1: {} merge-descriptors@2.0.0: {} @@ -19486,12 +18950,6 @@ snapshots: is-inside-container: 1.0.0 is-wsl: 3.1.0 - open@8.4.2: - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - openai@4.103.0(ws@8.18.2)(zod@3.24.4): dependencies: '@types/node': 18.19.100 @@ -19781,10 +19239,6 @@ snapshots: path-data-parser: 0.1.0 points-on-curve: 0.2.0 - polished@4.3.1: - dependencies: - '@babel/runtime': 7.27.4 - possible-typed-array-names@1.1.0: {} postcss-import@15.1.0(postcss@8.5.4): @@ -20039,25 +19493,6 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-docgen-typescript@2.2.2(typescript@5.8.3): - dependencies: - typescript: 5.8.3 - - react-docgen@8.0.0: - dependencies: - '@babel/core': 7.27.1 - '@babel/traverse': 7.27.1 - '@babel/types': 7.27.1 - '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.7 - '@types/doctrine': 0.0.9 - '@types/resolve': 1.20.6 - doctrine: 3.0.0 - resolve: 1.22.10 - strip-indent: 4.0.0 - transitivePeerDependencies: - - supports-color - react-dom@18.3.1(react@18.3.1): dependencies: loose-envify: 1.4.0 @@ -20253,14 +19688,6 @@ snapshots: readdirp@4.1.2: {} - recast@0.23.11: - dependencies: - ast-types: 0.16.1 - esprima: 4.0.1 - source-map: 0.6.1 - tiny-invariant: 1.3.3 - tslib: 2.8.1 - recharts-scale@0.4.5: dependencies: decimal.js-light: 2.5.1 @@ -20815,42 +20242,6 @@ snapshots: stdin-discarder@0.2.2: {} - storybook-dark-mode@4.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3)): - dependencies: - '@storybook/components': 8.6.12(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3)) - '@storybook/core-events': 8.6.12(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3)) - '@storybook/global': 5.0.0 - '@storybook/icons': 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/manager-api': 8.6.12(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3)) - '@storybook/theming': 8.6.12(storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3)) - fast-deep-equal: 3.1.3 - memoizerific: 1.11.3 - transitivePeerDependencies: - - react - - react-dom - - storybook - - storybook@9.0.5(@testing-library/dom@10.4.0)(prettier@3.5.3): - dependencies: - '@storybook/global': 5.0.0 - '@testing-library/jest-dom': 6.6.3 - '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.0) - '@vitest/expect': 3.0.9 - '@vitest/spy': 3.0.9 - better-opn: 3.0.2 - esbuild: 0.25.5 - esbuild-register: 3.6.0(esbuild@0.25.5) - recast: 0.23.11 - semver: 7.7.2 - ws: 8.18.2 - optionalDependencies: - prettier: 3.5.3 - transitivePeerDependencies: - - '@testing-library/dom' - - bufferutil - - supports-color - - utf-8-validate - stream-combiner@0.0.4: dependencies: duplexer: 0.1.2 @@ -20976,10 +20367,6 @@ snapshots: dependencies: min-indent: 1.0.1 - strip-indent@4.0.0: - dependencies: - min-indent: 1.0.1 - strip-json-comments@2.0.1: {} strip-json-comments@3.1.1: {} @@ -21302,12 +20689,6 @@ snapshots: babel-jest: 29.7.0(@babel/core@7.27.1) esbuild: 0.25.5 - tsconfig-paths@4.2.0: - dependencies: - json5: 2.2.3 - minimist: 1.2.8 - strip-bom: 3.0.0 - tslib@1.14.1: {} tslib@2.6.2: {} @@ -21576,11 +20957,6 @@ snapshots: unpipe@1.0.0: {} - unplugin@1.16.1: - dependencies: - acorn: 8.14.1 - webpack-virtual-modules: 0.6.2 - untildify@4.0.0: {} update-browserslist-db@1.1.3(browserslist@4.24.5): @@ -22073,8 +21449,6 @@ snapshots: webidl-conversions@7.0.0: {} - webpack-virtual-modules@0.6.2: {} - whatwg-encoding@2.0.0: dependencies: iconv-lite: 0.6.3 diff --git a/webview-ui/.storybook/main.ts b/webview-ui/.storybook/main.ts deleted file mode 100644 index 2a079945df..0000000000 --- a/webview-ui/.storybook/main.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { StorybookConfig } from "@storybook/react-vite" - -const config: StorybookConfig = { - stories: ["../src/**/*.mdx", "../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"], - addons: ["@storybook/addon-essentials", "storybook-dark-mode"], - framework: { - name: "@storybook/react-vite", - options: {}, - }, -} -export default config diff --git a/webview-ui/.storybook/preview.ts b/webview-ui/.storybook/preview.ts deleted file mode 100644 index 1b31bcd32c..0000000000 --- a/webview-ui/.storybook/preview.ts +++ /dev/null @@ -1,17 +0,0 @@ -import type { Preview } from "@storybook/react" - -import "./vscode.css" -import "../src/index.css" - -const preview: Preview = { - parameters: { - controls: { - matchers: { - color: /(background|color)$/i, - date: /Date$/i, - }, - }, - }, -} - -export default preview diff --git a/webview-ui/.storybook/vscode.css b/webview-ui/.storybook/vscode.css deleted file mode 100644 index 492a42a478..0000000000 --- a/webview-ui/.storybook/vscode.css +++ /dev/null @@ -1,56 +0,0 @@ -/** - * Use `Developer: Generate Color Theme From Current Settings` to generate themes - * using your current VSCode settings. - * - * See: https://code.visualstudio.com/docs/getstarted/themes - */ - -:root { - /** - * The styles below have been defined for Tailwind. - */ - - --vscode-foreground: #d1d5da; /* "foreground" */ - - --vscode-editor-foreground: #e1e4e8; /* "editor.foreground" */ - --vscode-editor-background: #24292e; /* "editor.background" */ - - --vscode-button-foreground: #dcffe4; /* "button.foreground" */ - --vscode-button-background: #176f2c; /* "button.background" */ - --vscode-button-secondaryForeground: #ffffff; /* "button.secondaryForeground" */ - --vscode-button-secondaryBackground: #444d56; /* "button.secondaryBackground" */ - - --vscode-dropdown-foreground: #e1e4e8; /* "dropdown.foreground" */ - --vscode-dropdown-background: #2f363d; /* "dropdown.background" */ - --vscode-dropdown-border: #1b1f23; /* "dropdown.border" */ - - --vscode-input-foreground: #e1e4e8; /* "input.foreground" */ - --vscode-input-background: #2f363d; /* "input.background" */ - --vscode-input-border: #1b1f23; /* "input.border" */ - - --vscode-focusBorder: #005cc5; /* "focusBorder" */ - - --vscode-badge-foreground: #c8e1ff; /* "badge.foreground" */ - --vscode-badge-background: #044289; /* "badge.background" */ - - --vscode-notifications-foreground: #e1e4e8; /* "notifications.foreground" */ - --vscode-notifications-background: #2f363d; /* "notifications.background" */ - --vscode-notifications-border: #1b1f23; /* "notifications.border" */ - - --vscode-descriptionForeground: #959da5; /* "descriptionForeground" */ - --vscode-errorForeground: #f97583; /* "errorForeground" */ - - --vscode-list-hoverForeground: #e1e4e8; /* "list.hoverForeground" */ - --vscode-list-hoverBackground: #282e34; /* "list.hoverBackground" */ - --vscode-list-focusBackground: #044289; /* "list.focusBackground" */ - - /** - * The styles below are used in the @shadcn/ui + Tailwind theme but are - * not exposed as `--color-vscode-*` variables. - */ - - --vscode-menu-background: #2f363d; /* "menu.background" [MISSING] */ - --vscode-menu-foreground: #e1e4e8; /* "menu.foreground" [MISSING] */ - - --vscode-disabledForeground: #cccccc; /* "disabledForeground" [MISSING] */ -} diff --git a/webview-ui/package.json b/webview-ui/package.json index 72fb58b0ac..58d1f24e5b 100644 --- a/webview-ui/package.json +++ b/webview-ui/package.json @@ -12,8 +12,6 @@ "build": "tsc -b && vite build", "build:nightly": "tsc -b && vite build --mode nightly", "preview": "vite preview", - "storybook": "storybook dev -p 6006", - "build-storybook": "storybook build", "clean": "rimraf ../src/webview-ui/build ../apps/vscode-nightly/build/webview-ui tsconfig.tsbuildinfo .turbo" }, "dependencies": { @@ -80,10 +78,6 @@ "@jest/globals": "^29.7.0", "@roo-code/config-eslint": "workspace:^", "@roo-code/config-typescript": "workspace:^", - "@storybook/addon-essentials": "^8.5.6", - "@storybook/blocks": "^8.5.6", - "@storybook/react": "^9.0.0", - "@storybook/react-vite": "^9.0.0", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.2.0", "@testing-library/user-event": "^14.6.1", @@ -99,8 +93,6 @@ "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "jest-simple-dot-reporter": "^1.0.5", - "storybook": "^9.0.0", - "storybook-dark-mode": "^4.0.2", "ts-jest": "^29.2.5", "typescript": "5.8.3", "vite": "6.3.5" diff --git a/webview-ui/src/components/ui/chat/Chat.tsx b/webview-ui/src/components/ui/chat/Chat.tsx deleted file mode 100644 index 26c6e0929e..0000000000 --- a/webview-ui/src/components/ui/chat/Chat.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { HTMLAttributes } from "react" - -import { cn } from "@/lib/utils" - -import { ChatHandler } from "./types" -import { ChatProvider } from "./ChatProvider" -import { ChatMessages } from "./ChatMessages" -import { ChatInput } from "./ChatInput" - -type ChatProps = HTMLAttributes & { - assistantName: string - handler: ChatHandler -} - -export const Chat = ({ assistantName, handler, ...props }: ChatProps) => ( - - - -) - -type InnerChatProps = HTMLAttributes - -const InnerChat = ({ className, children, ...props }: InnerChatProps) => ( -
- - {children} - -
-) diff --git a/webview-ui/src/components/ui/chat/ChatInput.tsx b/webview-ui/src/components/ui/chat/ChatInput.tsx deleted file mode 100644 index 8bec35b842..0000000000 --- a/webview-ui/src/components/ui/chat/ChatInput.tsx +++ /dev/null @@ -1,100 +0,0 @@ -import { PaperPlaneIcon, StopIcon } from "@radix-ui/react-icons" - -import { Button, AutosizeTextarea } from "@/components/ui" - -import { ChatInputProvider } from "./ChatInputProvider" -import { useChatUI } from "./useChatUI" -import { useChatInput } from "./useChatInput" - -export function ChatInput() { - const { input, setInput, append, isLoading } = useChatUI() - const isDisabled = isLoading || !input.trim() - - const submit = async () => { - if (input.trim() === "") { - return - } - - setInput("") - await append({ role: "user", content: input }) - } - - const handleSubmit = async (e: React.FormEvent) => { - e.preventDefault() - await submit() - } - - const handleKeyDown = async (e: React.KeyboardEvent) => { - if (isDisabled) { - return - } - - if (e.key === "Enter" && !e.shiftKey) { - e.preventDefault() - await submit() - } - } - - return ( - -
- -
-
- ) -} - -function ChatInputForm() { - const { handleSubmit } = useChatInput() - - return ( -
- - - - ) -} - -interface ChatInputFieldProps { - placeholder?: string -} - -function ChatInputField({ placeholder = "Chat" }: ChatInputFieldProps) { - const { input, setInput } = useChatUI() - const { handleKeyDown } = useChatInput() - - return ( - setInput(value)} - onKeyDown={handleKeyDown} - className="resize-none px-3 pt-3 pb-[50px]" - /> - ) -} - -function ChatInputSubmit() { - const { isLoading, stop } = useChatUI() - const { isDisabled } = useChatInput() - const isStoppable = isLoading && !!stop - - return ( -
-
- {isStoppable ? ( - - ) : ( - - )} -
-
- ) -} diff --git a/webview-ui/src/components/ui/chat/ChatInputProvider.ts b/webview-ui/src/components/ui/chat/ChatInputProvider.ts deleted file mode 100644 index 8a18238afb..0000000000 --- a/webview-ui/src/components/ui/chat/ChatInputProvider.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { createContext } from "react" - -interface ChatInputContext { - isDisabled: boolean - handleKeyDown: (e: React.KeyboardEvent) => void - handleSubmit: (e: React.FormEvent) => void -} - -export const chatInputContext = createContext(null) - -export const ChatInputProvider = chatInputContext.Provider diff --git a/webview-ui/src/components/ui/chat/ChatMessage.tsx b/webview-ui/src/components/ui/chat/ChatMessage.tsx deleted file mode 100644 index 4e00b5d22a..0000000000 --- a/webview-ui/src/components/ui/chat/ChatMessage.tsx +++ /dev/null @@ -1,105 +0,0 @@ -import { useMemo } from "react" -import { CopyIcon, CheckIcon } from "@radix-ui/react-icons" -import { BrainCircuit, CircleUserRound } from "lucide-react" - -import { cn } from "@/lib/utils" -import { useClipboard } from "@/components/ui/hooks" -import { Badge } from "@/components/ui" -import { Markdown } from "@/components/ui/markdown" - -import { BadgeData, ChatHandler, Message, MessageAnnotationType } from "./types" -import { ChatMessageProvider } from "./ChatMessageProvider" -import { useChatUI } from "./useChatUI" -import { useChatMessage } from "./useChatMessage" - -interface ChatMessageProps { - message: Message - isLast: boolean - isHeaderVisible: boolean - isLoading?: boolean - append?: ChatHandler["append"] -} - -export function ChatMessage({ message, isLast, isHeaderVisible }: ChatMessageProps) { - const badges = useMemo( - () => - message.annotations - ?.filter(({ type }) => type === MessageAnnotationType.BADGE) - .map(({ data }) => data as BadgeData), - [message.annotations], - ) - - return ( - -
- {isHeaderVisible && } - - -
-
- ) -} - -interface ChatMessageHeaderProps { - badges?: BadgeData[] -} - -function ChatMessageHeader({ badges }: ChatMessageHeaderProps) { - return ( -
- - {badges?.map(({ label, variant = "outline" }) => ( - - {label} - - ))} -
- ) -} - -const icons: Record = { - user: , - assistant: , -} - -function ChatMessageAvatar() { - const { assistantName } = useChatUI() - const { message } = useChatMessage() - - return icons[message.role] ? ( -
-
{icons[message.role]}
-
{message.role === "user" ? "You" : assistantName}
-
- ) : null -} - -interface ChatMessageContentProps { - isHeaderVisible: boolean -} - -function ChatMessageContent({ isHeaderVisible }: ChatMessageContentProps) { - const { message } = useChatMessage() - - return ( -
- -
- ) -} - -function ChatMessageActions() { - const { message } = useChatMessage() - const { isCopied, copy } = useClipboard() - - return ( -
copy(message.content)}> - {isCopied ? : } -
- ) -} diff --git a/webview-ui/src/components/ui/chat/ChatMessageProvider.ts b/webview-ui/src/components/ui/chat/ChatMessageProvider.ts deleted file mode 100644 index d5a87d6124..0000000000 --- a/webview-ui/src/components/ui/chat/ChatMessageProvider.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { createContext } from "react" - -import { Message } from "./types" - -export interface ChatMessageContext { - message: Message - isLast: boolean -} - -export const chatMessageContext = createContext(null) - -export const ChatMessageProvider = chatMessageContext.Provider diff --git a/webview-ui/src/components/ui/chat/ChatMessages.tsx b/webview-ui/src/components/ui/chat/ChatMessages.tsx deleted file mode 100644 index bcaffd2397..0000000000 --- a/webview-ui/src/components/ui/chat/ChatMessages.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { useEffect, useRef } from "react" -import { Virtuoso, VirtuosoHandle } from "react-virtuoso" - -import { useChatUI } from "./useChatUI" -import { ChatMessage } from "./ChatMessage" - -export function ChatMessages() { - const { messages, isLoading, append } = useChatUI() - const messageCount = messages.length - const virtuoso = useRef(null) - - useEffect(() => { - if (!virtuoso.current) { - return - } - - requestAnimationFrame(() => - virtuoso.current?.scrollToIndex({ index: messageCount - 1, align: "end", behavior: "smooth" }), - ) - }, [messageCount]) - - return ( - ( - - )} - /> - ) -} diff --git a/webview-ui/src/components/ui/chat/ChatProvider.ts b/webview-ui/src/components/ui/chat/ChatProvider.ts deleted file mode 100644 index c57a2e144e..0000000000 --- a/webview-ui/src/components/ui/chat/ChatProvider.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { createContext } from "react" - -import { ChatHandler } from "./types" - -type ChatContext = ChatHandler & { - assistantName: string -} - -export const chatContext = createContext(null) - -export const ChatProvider = chatContext.Provider diff --git a/webview-ui/src/components/ui/chat/index.ts b/webview-ui/src/components/ui/chat/index.ts deleted file mode 100644 index d772b7ffae..0000000000 --- a/webview-ui/src/components/ui/chat/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./types" -export * from "./Chat" diff --git a/webview-ui/src/components/ui/chat/types.ts b/webview-ui/src/components/ui/chat/types.ts deleted file mode 100644 index 889645ccf9..0000000000 --- a/webview-ui/src/components/ui/chat/types.ts +++ /dev/null @@ -1,39 +0,0 @@ -export interface Message { - role: "system" | "user" | "assistant" | "data" - content: string - annotations?: MessageAnnotation[] -} - -export type ChatHandler = { - isLoading: boolean - setIsLoading: (isLoading: boolean, message?: string) => void - - loadingMessage?: string - setLoadingMessage?: (message: string) => void - - input: string - setInput: (input: string) => void - - messages: Message[] - - reload?: (options?: { data?: any }) => void - stop?: () => void - append: (message: Message, options?: { data?: any }) => Promise - reset?: () => void -} - -export enum MessageAnnotationType { - BADGE = "badge", -} - -export type BadgeData = { - label: string - variant?: "default" | "secondary" | "destructive" | "outline" -} - -export type AnnotationData = BadgeData - -export type MessageAnnotation = { - type: MessageAnnotationType - data: AnnotationData -} diff --git a/webview-ui/src/components/ui/chat/useChatInput.ts b/webview-ui/src/components/ui/chat/useChatInput.ts deleted file mode 100644 index 6c5ae7e7fd..0000000000 --- a/webview-ui/src/components/ui/chat/useChatInput.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { useContext } from "react" - -import { chatInputContext } from "./ChatInputProvider" - -export const useChatInput = () => { - const context = useContext(chatInputContext) - - if (!context) { - throw new Error("useChatInput must be used within a ChatInputProvider") - } - - return context -} diff --git a/webview-ui/src/components/ui/chat/useChatMessage.ts b/webview-ui/src/components/ui/chat/useChatMessage.ts deleted file mode 100644 index 36c775c846..0000000000 --- a/webview-ui/src/components/ui/chat/useChatMessage.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { useContext } from "react" - -import { chatMessageContext } from "./ChatMessageProvider" - -export const useChatMessage = () => { - const context = useContext(chatMessageContext) - - if (!context) { - throw new Error("useChatMessage must be used within a ChatMessageProvider") - } - - return context -} diff --git a/webview-ui/src/components/ui/chat/useChatUI.ts b/webview-ui/src/components/ui/chat/useChatUI.ts deleted file mode 100644 index dddd7750b3..0000000000 --- a/webview-ui/src/components/ui/chat/useChatUI.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { useContext } from "react" - -import { chatContext } from "./ChatProvider" - -export const useChatUI = () => { - const context = useContext(chatContext) - - if (!context) { - throw new Error("useChatUI must be used within a ChatProvider") - } - - return context -} diff --git a/webview-ui/src/components/ui/markdown/Blockquote.tsx b/webview-ui/src/components/ui/markdown/Blockquote.tsx deleted file mode 100644 index e45a439e7e..0000000000 --- a/webview-ui/src/components/ui/markdown/Blockquote.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export const Blockquote = ({ children }: { children: React.ReactNode }) => { - return
{children}
-} diff --git a/webview-ui/src/components/ui/markdown/CodeBlock.tsx b/webview-ui/src/components/ui/markdown/CodeBlock.tsx deleted file mode 100644 index b1fa0fbd86..0000000000 --- a/webview-ui/src/components/ui/markdown/CodeBlock.tsx +++ /dev/null @@ -1,72 +0,0 @@ -import { FC, memo, useState, useEffect, useCallback } from "react" -import { codeToHtml } from "shiki" -import { CopyIcon, CheckIcon } from "@radix-ui/react-icons" - -import { cn } from "@/lib/utils" -import { useClipboard } from "@/components/ui/hooks" -import { Button } from "@/components/ui" - -interface CodeBlockProps extends Omit, "children"> { - language: string - value: string -} - -export const CodeBlock: FC = memo(({ language, value, className, ...props }) => { - const [highlightedCode, setHighlightedCode] = useState("") - const { isCopied, copy } = useClipboard() - - const onCopy = useCallback(() => { - if (!isCopied) { - copy(value) - } - }, [isCopied, copy, value]) - - useEffect(() => { - const highlight = async () => { - const theme = "github-dark" // Use VSCode's current theme. - - try { - const html = await codeToHtml(value, { - lang: language, - theme, - transformers: [ - { - pre(node) { - node.properties.class = cn(className, "overflow-x-auto") - return node - }, - code(node) { - node.properties.style = "background-color: transparent !important;" - return node - }, - }, - ], - }) - - setHighlightedCode(html) - } catch (_e) { - setHighlightedCode(value) - } - } - - highlight() - }, [language, value, className]) - - return ( -
-
- -
- ) -}) -CodeBlock.displayName = "CodeBlock" diff --git a/webview-ui/src/components/ui/markdown/Markdown.tsx b/webview-ui/src/components/ui/markdown/Markdown.tsx deleted file mode 100644 index e6188ffd1a..0000000000 --- a/webview-ui/src/components/ui/markdown/Markdown.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import { FC, memo } from "react" -import ReactMarkdown, { Options } from "react-markdown" -import remarkGfm from "remark-gfm" - -import { Separator } from "@/components/ui" - -import { CodeBlock } from "./CodeBlock" -import { Blockquote } from "./Blockquote" - -const MemoizedReactMarkdown: FC = memo( - ReactMarkdown, - (prevProps, nextProps) => prevProps.children === nextProps.children && prevProps.className === nextProps.className, -) - -export function Markdown({ content }: { content: string }) { - return ( - {children}
- }, - hr() { - return - }, - ol({ children }) { - return ( -
    - {children} -
- ) - }, - ul({ children }) { - return ( -
    - {children} -
- ) - }, - blockquote({ children }) { - return
{children}
- }, - code({ className, children, ...props }) { - if (children && Array.isArray(children) && children.length) { - if (children[0] === "▍") { - return - } - - children[0] = (children[0] as string).replace("`▍`", "▍") - } - - const match = /language-(\w+)/.exec(className || "") - - const isInline = - props.node?.position && props.node.position.start.line === props.node.position.end.line - - return isInline ? ( - - {children} - - ) : ( - - ) - }, - a({ href, children }) { - return ( - - {children} - - ) - }, - }}> - {content} - - ) -} diff --git a/webview-ui/src/components/ui/markdown/index.ts b/webview-ui/src/components/ui/markdown/index.ts deleted file mode 100644 index b94d1d4f41..0000000000 --- a/webview-ui/src/components/ui/markdown/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./Markdown" diff --git a/webview-ui/src/stories/AutosizeTextarea.stories.tsx b/webview-ui/src/stories/AutosizeTextarea.stories.tsx deleted file mode 100644 index 5cf0d81efa..0000000000 --- a/webview-ui/src/stories/AutosizeTextarea.stories.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import type { Meta, StoryObj } from "@storybook/react" -import { AutosizeTextarea } from "@src/components/ui/autosize-textarea" - -const meta: Meta = { - title: "Primitives/AutosizeTextarea", - component: AutosizeTextarea, - tags: ["autodocs"], - args: { - minHeight: 40, - maxHeight: 400, - placeholder: "This textarea will expand as you type.", - className: "p-2", - }, -} - -export default meta - -type Story = StoryObj - -export const Default: Story = { - args: {}, -} diff --git a/webview-ui/src/stories/Badge.stories.tsx b/webview-ui/src/stories/Badge.stories.tsx deleted file mode 100644 index 802ac9e926..0000000000 --- a/webview-ui/src/stories/Badge.stories.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import type { Meta, StoryObj } from "@storybook/react" - -import { Badge } from "@/components/ui" - -const meta: Meta = { - title: "Primitives/Badge", - component: Badge, - tags: ["autodocs"], - args: { - children: "Badge", - }, -} - -export default meta - -type Story = StoryObj - -export const Default: Story = { - args: { - children: "Default", - }, -} - -export const Secondary: Story = { - args: { - variant: "secondary", - children: "Secondary", - }, -} - -export const Destructive: Story = { - args: { - variant: "destructive", - children: "Destructive", - }, -} - -export const Outline: Story = { - args: { - variant: "outline", - children: "Outline", - }, -} diff --git a/webview-ui/src/stories/Button.stories.ts b/webview-ui/src/stories/Button.stories.ts deleted file mode 100644 index 5386ad9611..0000000000 --- a/webview-ui/src/stories/Button.stories.ts +++ /dev/null @@ -1,95 +0,0 @@ -import type { Meta, StoryObj } from "@storybook/react" - -import { Button } from "@/components/ui" - -const meta = { - title: "primitives/Button", - component: Button, - parameters: { layout: "centered" }, - tags: ["autodocs"], - argTypes: { - variant: { - control: "select", - options: ["default", "secondary", "outline", "ghost", "link", "destructive"], - type: "string", - table: { - defaultValue: { - summary: "default", - }, - }, - }, - size: { - control: "select", - options: ["default", "sm", "lg", "icon"], - type: "string", - table: { - defaultValue: { - summary: "default", - }, - }, - }, - children: { - table: { - disable: true, - }, - }, - asChild: { - table: { - disable: true, - }, - }, - }, - args: { - children: "Button", - }, -} satisfies Meta - -export default meta - -type Story = StoryObj - -export const Default: Story = { - name: "Default", -} - -export const Secondary: Story = { - name: "Secondary", - args: { - variant: "secondary", - }, -} - -export const Destructive: Story = { - name: "Destructive", - args: { - variant: "destructive", - }, -} - -export const Outline: Story = { - name: "Outline", - args: { - variant: "outline", - }, -} - -export const Ghost: Story = { - name: "Ghost", - args: { - variant: "ghost", - }, -} - -export const Link: Story = { - name: "Link", - args: { - variant: "link", - }, -} - -export const Combobox: Story = { - name: "Combobox", - args: { - variant: "combobox", - }, -} diff --git a/webview-ui/src/stories/Chat.stories.tsx b/webview-ui/src/stories/Chat.stories.tsx deleted file mode 100644 index 55e5345c2e..0000000000 --- a/webview-ui/src/stories/Chat.stories.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import { useState } from "react" -import type { Meta, StoryObj } from "@storybook/react" - -import { Chat, ChatHandler, Message } from "@/components/ui/chat" - -const meta = { - title: "ui/Chat", - component: Chat, - parameters: { layout: "centered" }, - tags: ["autodocs"], -} satisfies Meta - -export default meta - -type Story = StoryObj - -export const Default: Story = { - name: "Chat", - args: { - assistantName: "Assistant", - handler: {} as ChatHandler, - }, - render: function StorybookChat() { - const handler = useStorybookChat() - return ( - - ) - }, -} - -const useStorybookChat = (): ChatHandler => { - const [isLoading, setIsLoading] = useState(false) - const [input, setInput] = useState("") - const [messages, setMessages] = useState([]) - - const append = async (message: Message, _options?: { data?: any }) => { - const echo: Message = { - ...message, - role: "assistant", - content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", - } - setMessages((prev) => [...prev, message, echo]) - return Promise.resolve(null) - } - - return { isLoading, setIsLoading, input, setInput, messages, append } -} diff --git a/webview-ui/src/stories/Collapsible.stories.tsx b/webview-ui/src/stories/Collapsible.stories.tsx deleted file mode 100644 index aad5ff5665..0000000000 --- a/webview-ui/src/stories/Collapsible.stories.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import type { Meta, StoryObj } from "@storybook/react" -import { useState } from "react" - -import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@src/components/ui/collapsible" -import { Button } from "@src/components/ui/button" -import { ChevronsUpDown } from "lucide-react" - -const meta: Meta = { - title: "Primitives/Collapsible", - component: Collapsible, - tags: ["autodocs"], -} - -export default meta - -type Story = StoryObj - -export const Default: Story = { - render: () => , -} - -const CollapsibleDemo = () => { - const [isOpen, setIsOpen] = useState(false) - - return ( - - - - - 👋 - - ) -} diff --git a/webview-ui/src/stories/Combobox.stories.tsx b/webview-ui/src/stories/Combobox.stories.tsx deleted file mode 100644 index f4026f6a1f..0000000000 --- a/webview-ui/src/stories/Combobox.stories.tsx +++ /dev/null @@ -1,99 +0,0 @@ -import { useState } from "react" -import type { Meta, StoryObj } from "@storybook/react" -import { CaretSortIcon, CheckIcon } from "@radix-ui/react-icons" - -import { cn } from "@/lib/utils" -import { - Button, - Command, - CommandEmpty, - CommandGroup, - CommandInput, - CommandItem, - CommandList, - Popover, - PopoverContent, - PopoverTrigger, -} from "@/components/ui" - -const meta = { - title: "primitives/Combobox", - component: Combobox, - parameters: { layout: "centered" }, - tags: ["autodocs"], -} satisfies Meta - -export default meta - -type Story = StoryObj - -export const Default: Story = { - name: "Combobox", - render: () => , -} - -const frameworks = [ - { - value: "next.js", - label: "Next.js", - }, - { - value: "sveltekit", - label: "SvelteKit", - }, - { - value: "nuxt.js", - label: "Nuxt.js", - }, - { - value: "remix", - label: "Remix", - }, - { - value: "astro", - label: "Astro", - }, -] - -function Combobox() { - const [open, setOpen] = useState(false) - const [value, setValue] = useState("") - - return ( - - - - - - - - - No framework found. - - {frameworks.map((framework) => ( - { - setValue(currentValue === value ? "" : currentValue) - setOpen(false) - }}> - {framework.label} - - - ))} - - - - - - ) -} diff --git a/webview-ui/src/stories/DropdownMenu.stories.tsx b/webview-ui/src/stories/DropdownMenu.stories.tsx deleted file mode 100644 index c82d4825e0..0000000000 --- a/webview-ui/src/stories/DropdownMenu.stories.tsx +++ /dev/null @@ -1,113 +0,0 @@ -import type { Meta, StoryObj } from "@storybook/react" -import { - HamburgerMenuIcon, - BorderLeftIcon, - BorderRightIcon, - BorderBottomIcon, - BorderTopIcon, - TextAlignLeftIcon, - TextAlignCenterIcon, - TextAlignRightIcon, -} from "@radix-ui/react-icons" - -import { - Button, - DropdownMenu, - DropdownMenuContent, - DropdownMenuGroup, - DropdownMenuItem, - DropdownMenuLabel, - DropdownMenuSeparator, - DropdownMenuShortcut, - DropdownMenuTrigger, -} from "@/components/ui" - -const meta = { - title: "primitives/DropdownMenu", - component: DropdownMenu, - parameters: { layout: "centered" }, - tags: ["autodocs"], -} satisfies Meta - -export default meta - -type Story = StoryObj - -export const Default: Story = { - name: "DropdownMenu", - render: () => ( - - - - - - Label - - - Item 1 - - Item 2⌘2 - - - - - ), -} - -type DropdownMenuVariantProps = { - side?: "top" | "bottom" | "left" | "right" - align?: "start" | "center" | "end" - children?: React.ReactNode -} - -const DropdownMenuVariant = ({ side = "bottom", align = "center", children }: DropdownMenuVariantProps) => ( - - - - - - Foo - Bar - Baz - - -) - -export const Placements: Story = { - render: () => ( -
- - - - - - - - - - - - -
- ), -} - -export const Alignments: Story = { - render: () => ( -
- - - - - - - - - -
- ), -} diff --git a/webview-ui/src/stories/Progress.stories.tsx b/webview-ui/src/stories/Progress.stories.tsx deleted file mode 100644 index 2dc71c5050..0000000000 --- a/webview-ui/src/stories/Progress.stories.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import type { Meta, StoryObj } from "@storybook/react" - -import { Progress } from "@/components/ui" - -const meta: Meta = { - title: "Primitives/Progress", - component: Progress, - parameters: { - layout: "centered", - }, - args: { - className: "w-[300px]", - }, - tags: ["autodocs"], -} - -export default meta - -type Story = StoryObj - -export const Default: Story = { - args: { - value: 50, - }, -} diff --git a/webview-ui/src/stories/Slider.stories.tsx b/webview-ui/src/stories/Slider.stories.tsx deleted file mode 100644 index 5429a7e350..0000000000 --- a/webview-ui/src/stories/Slider.stories.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import type { Meta, StoryObj } from "@storybook/react" - -import { Slider } from "@/components/ui" - -const meta: Meta = { - title: "Primitives/Slider", - component: Slider, - parameters: { - layout: "centered", - }, - args: { - defaultValue: [50], - max: 100, - min: 0, - step: 1, - className: "w-[300px]", - }, - tags: ["autodocs"], -} - -export default meta - -type Story = StoryObj - -export const Default: Story = { - args: { - defaultValue: [50], - max: 100, - min: 0, - step: 1, - }, -} diff --git a/webview-ui/src/stories/Welcome.mdx b/webview-ui/src/stories/Welcome.mdx deleted file mode 100644 index de88649f80..0000000000 --- a/webview-ui/src/stories/Welcome.mdx +++ /dev/null @@ -1,7 +0,0 @@ -import { Meta } from "@storybook/blocks" - - - -# Welcome - -This Roo Code storybook is used to independently develop components for the Roo Code webview UI. diff --git a/webview-ui/src/stories/assets/.gitkeep b/webview-ui/src/stories/assets/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000