mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-08-28 05:27:24 +00:00
Remove Storybook + unused components (#4517)
This commit is contained in:
parent
243a07e98c
commit
c03869bf1e
33 changed files with 10 additions and 1801 deletions
24
knip.json
24
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"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
626
pnpm-lock.yaml
generated
626
pnpm-lock.yaml
generated
|
|
@ -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==}
|
||||
|
||||
|
|
@ -3381,15 +3348,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]
|
||||
|
|
@ -3842,149 +3800,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==}
|
||||
|
||||
|
|
@ -4355,9 +4170,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==}
|
||||
|
||||
|
|
@ -4412,9 +4224,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==}
|
||||
|
||||
|
|
@ -4469,9 +4278,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==}
|
||||
|
||||
|
|
@ -4586,9 +4392,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==}
|
||||
|
||||
|
|
@ -4631,9 +4434,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==}
|
||||
|
||||
|
|
@ -4661,9 +4461,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==}
|
||||
|
||||
|
|
@ -4673,9 +4470,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==}
|
||||
|
||||
|
|
@ -4918,10 +4712,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'}
|
||||
|
|
@ -5030,10 +4820,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'}
|
||||
|
|
@ -5770,10 +5556,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'}
|
||||
|
|
@ -5858,10 +5640,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==}
|
||||
|
||||
|
|
@ -6295,9 +6073,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==}
|
||||
|
||||
|
|
@ -7065,11 +6840,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}
|
||||
|
|
@ -7227,10 +6997,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'}
|
||||
|
|
@ -7605,7 +7371,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:
|
||||
|
|
@ -7896,9 +7661,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==}
|
||||
|
||||
|
|
@ -7988,9 +7750,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'}
|
||||
|
|
@ -8428,10 +8187,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
|
||||
|
|
@ -8690,10 +8445,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'}
|
||||
|
|
@ -8936,15 +8687,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:
|
||||
|
|
@ -9105,10 +8847,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==}
|
||||
|
||||
|
|
@ -9538,18 +9276,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==}
|
||||
|
||||
|
|
@ -9654,10 +9380,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'}
|
||||
|
|
@ -9959,10 +9681,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==}
|
||||
|
||||
|
|
@ -10201,10 +9919,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'}
|
||||
|
|
@ -10533,9 +10247,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'}
|
||||
|
|
@ -12394,15 +12105,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
|
||||
|
|
@ -12510,12 +12212,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
|
||||
|
|
@ -13392,14 +13088,6 @@ snapshots:
|
|||
dependencies:
|
||||
'@redis/client': 5.5.5
|
||||
|
||||
'@rollup/pluginutils@5.1.4(rollup@4.40.2)':
|
||||
dependencies:
|
||||
'@types/estree': 1.0.8
|
||||
estree-walker: 2.0.2
|
||||
picomatch: 4.0.2
|
||||
optionalDependencies:
|
||||
rollup: 4.40.2
|
||||
|
||||
'@rollup/rollup-android-arm-eabi@4.40.2':
|
||||
optional: true
|
||||
|
||||
|
|
@ -13992,175 +13680,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':
|
||||
|
|
@ -14532,8 +14051,6 @@ snapshots:
|
|||
|
||||
'@types/diff@5.2.3': {}
|
||||
|
||||
'@types/doctrine@0.0.9': {}
|
||||
|
||||
'@types/estree-jsx@1.0.5':
|
||||
dependencies:
|
||||
'@types/estree': 1.0.8
|
||||
|
|
@ -14596,8 +14113,6 @@ snapshots:
|
|||
dependencies:
|
||||
'@types/unist': 3.0.3
|
||||
|
||||
'@types/mdx@2.0.13': {}
|
||||
|
||||
'@types/minimatch@5.1.2': {}
|
||||
|
||||
'@types/mocha@10.0.10': {}
|
||||
|
|
@ -14655,8 +14170,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': {}
|
||||
|
|
@ -14801,13 +14314,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
|
||||
|
|
@ -14863,10 +14369,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
|
||||
|
|
@ -14912,10 +14414,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
|
||||
|
|
@ -14928,12 +14426,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
|
||||
|
|
@ -15225,10 +14717,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:
|
||||
|
|
@ -15365,10 +14853,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
|
||||
|
|
@ -16162,8 +15646,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:
|
||||
|
|
@ -16226,10 +15708,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: {}
|
||||
|
|
@ -16765,8 +16243,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.8
|
||||
|
|
@ -17659,8 +17135,6 @@ snapshots:
|
|||
|
||||
is-decimal@2.0.1: {}
|
||||
|
||||
is-docker@2.2.1: {}
|
||||
|
||||
is-docker@3.0.0: {}
|
||||
|
||||
is-extglob@2.1.1: {}
|
||||
|
|
@ -17785,10 +17259,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
|
||||
|
|
@ -18764,8 +18234,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:
|
||||
|
|
@ -18971,10 +18439,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: {}
|
||||
|
|
@ -19540,12 +19004,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
|
||||
|
|
@ -19835,10 +19293,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):
|
||||
|
|
@ -20093,25 +19547,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
|
||||
|
|
@ -20307,14 +19742,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
|
||||
|
|
@ -20869,42 +20296,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
|
||||
|
|
@ -21030,10 +20421,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: {}
|
||||
|
|
@ -21356,12 +20743,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: {}
|
||||
|
|
@ -21630,11 +21011,6 @@ snapshots:
|
|||
|
||||
unpipe@1.0.0: {}
|
||||
|
||||
unplugin@1.16.1:
|
||||
dependencies:
|
||||
acorn: 8.15.0
|
||||
webpack-virtual-modules: 0.6.2
|
||||
|
||||
untildify@4.0.0: {}
|
||||
|
||||
update-browserslist-db@1.1.3(browserslist@4.24.5):
|
||||
|
|
@ -22127,8 +21503,6 @@ snapshots:
|
|||
|
||||
webidl-conversions@7.0.0: {}
|
||||
|
||||
webpack-virtual-modules@0.6.2: {}
|
||||
|
||||
whatwg-encoding@2.0.0:
|
||||
dependencies:
|
||||
iconv-lite: 0.6.3
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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] */
|
||||
}
|
||||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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<HTMLDivElement> & {
|
||||
assistantName: string
|
||||
handler: ChatHandler
|
||||
}
|
||||
|
||||
export const Chat = ({ assistantName, handler, ...props }: ChatProps) => (
|
||||
<ChatProvider value={{ assistantName, ...handler }}>
|
||||
<InnerChat {...props} />
|
||||
</ChatProvider>
|
||||
)
|
||||
|
||||
type InnerChatProps = HTMLAttributes<HTMLDivElement>
|
||||
|
||||
const InnerChat = ({ className, children, ...props }: InnerChatProps) => (
|
||||
<div className={cn("relative flex flex-col flex-1 min-h-0", className)} {...props}>
|
||||
<ChatMessages />
|
||||
{children}
|
||||
<ChatInput />
|
||||
</div>
|
||||
)
|
||||
|
|
@ -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<HTMLFormElement>) => {
|
||||
e.preventDefault()
|
||||
await submit()
|
||||
}
|
||||
|
||||
const handleKeyDown = async (e: React.KeyboardEvent<HTMLTextAreaElement>) => {
|
||||
if (isDisabled) {
|
||||
return
|
||||
}
|
||||
|
||||
if (e.key === "Enter" && !e.shiftKey) {
|
||||
e.preventDefault()
|
||||
await submit()
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<ChatInputProvider value={{ isDisabled, handleKeyDown, handleSubmit }}>
|
||||
<div className="border-t border-vscode-editor-background p-3">
|
||||
<ChatInputForm />
|
||||
</div>
|
||||
</ChatInputProvider>
|
||||
)
|
||||
}
|
||||
|
||||
function ChatInputForm() {
|
||||
const { handleSubmit } = useChatInput()
|
||||
|
||||
return (
|
||||
<form onSubmit={handleSubmit} className="relative">
|
||||
<ChatInputField />
|
||||
<ChatInputSubmit />
|
||||
</form>
|
||||
)
|
||||
}
|
||||
|
||||
interface ChatInputFieldProps {
|
||||
placeholder?: string
|
||||
}
|
||||
|
||||
function ChatInputField({ placeholder = "Chat" }: ChatInputFieldProps) {
|
||||
const { input, setInput } = useChatUI()
|
||||
const { handleKeyDown } = useChatInput()
|
||||
|
||||
return (
|
||||
<AutosizeTextarea
|
||||
name="input"
|
||||
placeholder={placeholder}
|
||||
minHeight={75}
|
||||
maxHeight={200}
|
||||
value={input}
|
||||
onChange={({ target: { value } }) => 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 (
|
||||
<div className="absolute bottom-[1px] left-[1px] right-[1px] h-[40px] bg-input border-t border-vscode-editor-background rounded-b-md p-1">
|
||||
<div className="flex flex-row-reverse items-center gap-2">
|
||||
{isStoppable ? (
|
||||
<Button type="button" variant="ghost" size="sm" onClick={stop}>
|
||||
<StopIcon className="text-destructive" />
|
||||
</Button>
|
||||
) : (
|
||||
<Button type="submit" variant="ghost" size="icon" disabled={isDisabled}>
|
||||
<PaperPlaneIcon />
|
||||
</Button>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
import { createContext } from "react"
|
||||
|
||||
interface ChatInputContext {
|
||||
isDisabled: boolean
|
||||
handleKeyDown: (e: React.KeyboardEvent<HTMLTextAreaElement>) => void
|
||||
handleSubmit: (e: React.FormEvent<HTMLFormElement>) => void
|
||||
}
|
||||
|
||||
export const chatInputContext = createContext<ChatInputContext | null>(null)
|
||||
|
||||
export const ChatInputProvider = chatInputContext.Provider
|
||||
|
|
@ -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 (
|
||||
<ChatMessageProvider value={{ message, isLast }}>
|
||||
<div
|
||||
className={cn("relative group flex flex-col text-secondary-foreground", {
|
||||
"bg-vscode-input-background/50": message.role === "user",
|
||||
})}>
|
||||
{isHeaderVisible && <ChatMessageHeader badges={badges} />}
|
||||
<ChatMessageContent isHeaderVisible={isHeaderVisible} />
|
||||
<ChatMessageActions />
|
||||
</div>
|
||||
</ChatMessageProvider>
|
||||
)
|
||||
}
|
||||
|
||||
interface ChatMessageHeaderProps {
|
||||
badges?: BadgeData[]
|
||||
}
|
||||
|
||||
function ChatMessageHeader({ badges }: ChatMessageHeaderProps) {
|
||||
return (
|
||||
<div className="flex flex-row items-center justify-between border-t border-accent px-3 pt-3 pb-1">
|
||||
<ChatMessageAvatar />
|
||||
{badges?.map(({ label, variant = "outline" }) => (
|
||||
<Badge variant={variant} key={label}>
|
||||
{label}
|
||||
</Badge>
|
||||
))}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
const icons: Record<string, React.ReactNode> = {
|
||||
user: <CircleUserRound className="h-4 w-4" />,
|
||||
assistant: <BrainCircuit className="h-4 w-4" />,
|
||||
}
|
||||
|
||||
function ChatMessageAvatar() {
|
||||
const { assistantName } = useChatUI()
|
||||
const { message } = useChatMessage()
|
||||
|
||||
return icons[message.role] ? (
|
||||
<div className="flex flex-row items-center gap-1">
|
||||
<div className="opacity-25 select-none">{icons[message.role]}</div>
|
||||
<div className="text-muted">{message.role === "user" ? "You" : assistantName}</div>
|
||||
</div>
|
||||
) : null
|
||||
}
|
||||
|
||||
interface ChatMessageContentProps {
|
||||
isHeaderVisible: boolean
|
||||
}
|
||||
|
||||
function ChatMessageContent({ isHeaderVisible }: ChatMessageContentProps) {
|
||||
const { message } = useChatMessage()
|
||||
|
||||
return (
|
||||
<div className={cn("flex flex-col gap-4 flex-1 min-w-0 px-4 pb-6", { "pt-4": isHeaderVisible })}>
|
||||
<Markdown content={message.content} />
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
function ChatMessageActions() {
|
||||
const { message } = useChatMessage()
|
||||
const { isCopied, copy } = useClipboard()
|
||||
|
||||
return (
|
||||
<div
|
||||
className="absolute right-2 bottom-2 opacity-0 group-hover:opacity-25 cursor-pointer"
|
||||
onClick={() => copy(message.content)}>
|
||||
{isCopied ? <CheckIcon /> : <CopyIcon />}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
import { createContext } from "react"
|
||||
|
||||
import { Message } from "./types"
|
||||
|
||||
export interface ChatMessageContext {
|
||||
message: Message
|
||||
isLast: boolean
|
||||
}
|
||||
|
||||
export const chatMessageContext = createContext<ChatMessageContext | null>(null)
|
||||
|
||||
export const ChatMessageProvider = chatMessageContext.Provider
|
||||
|
|
@ -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<VirtuosoHandle>(null)
|
||||
|
||||
useEffect(() => {
|
||||
if (!virtuoso.current) {
|
||||
return
|
||||
}
|
||||
|
||||
requestAnimationFrame(() =>
|
||||
virtuoso.current?.scrollToIndex({ index: messageCount - 1, align: "end", behavior: "smooth" }),
|
||||
)
|
||||
}, [messageCount])
|
||||
|
||||
return (
|
||||
<Virtuoso
|
||||
ref={virtuoso}
|
||||
data={messages}
|
||||
totalCount={messageCount}
|
||||
itemContent={(index, message) => (
|
||||
<ChatMessage
|
||||
key={index}
|
||||
message={message}
|
||||
isHeaderVisible={
|
||||
!!message.annotations?.length || index === 0 || messages[index - 1].role !== message.role
|
||||
}
|
||||
isLast={index === messageCount - 1}
|
||||
isLoading={isLoading}
|
||||
append={append}
|
||||
/>
|
||||
)}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
import { createContext } from "react"
|
||||
|
||||
import { ChatHandler } from "./types"
|
||||
|
||||
type ChatContext = ChatHandler & {
|
||||
assistantName: string
|
||||
}
|
||||
|
||||
export const chatContext = createContext<ChatContext | null>(null)
|
||||
|
||||
export const ChatProvider = chatContext.Provider
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
export * from "./types"
|
||||
export * from "./Chat"
|
||||
|
|
@ -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<string | null | undefined>
|
||||
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
|
||||
}
|
||||
|
|
@ -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
|
||||
}
|
||||
|
|
@ -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
|
||||
}
|
||||
|
|
@ -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
|
||||
}
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
export const Blockquote = ({ children }: { children: React.ReactNode }) => {
|
||||
return <div className="border-l-3 border-accent italic pl-2 py-2 mb-2">{children}</div>
|
||||
}
|
||||
|
|
@ -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<React.HTMLAttributes<HTMLDivElement>, "children"> {
|
||||
language: string
|
||||
value: string
|
||||
}
|
||||
|
||||
export const CodeBlock: FC<CodeBlockProps> = memo(({ language, value, className, ...props }) => {
|
||||
const [highlightedCode, setHighlightedCode] = useState<string>("")
|
||||
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 (
|
||||
<div className="relative" {...props}>
|
||||
<div dangerouslySetInnerHTML={{ __html: highlightedCode }} />
|
||||
<Button
|
||||
variant="outline"
|
||||
size="icon"
|
||||
className="absolute top-1 right-1 cursor-pointer bg-black/10"
|
||||
onClick={onCopy}>
|
||||
{isCopied ? (
|
||||
<CheckIcon style={{ width: 12, height: 12 }} />
|
||||
) : (
|
||||
<CopyIcon style={{ width: 12, height: 12 }} />
|
||||
)}
|
||||
</Button>
|
||||
</div>
|
||||
)
|
||||
})
|
||||
CodeBlock.displayName = "CodeBlock"
|
||||
|
|
@ -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<Options> = memo(
|
||||
ReactMarkdown,
|
||||
(prevProps, nextProps) => prevProps.children === nextProps.children && prevProps.className === nextProps.className,
|
||||
)
|
||||
|
||||
export function Markdown({ content }: { content: string }) {
|
||||
return (
|
||||
<MemoizedReactMarkdown
|
||||
remarkPlugins={[remarkGfm]}
|
||||
className="custom-markdown break-words"
|
||||
components={{
|
||||
p({ children }) {
|
||||
return <div className="mb-2 last:mb-0">{children}</div>
|
||||
},
|
||||
hr() {
|
||||
return <Separator />
|
||||
},
|
||||
ol({ children }) {
|
||||
return (
|
||||
<ol className="list-decimal pl-4 [&>li]:mb-1 [&>li:last-child]:mb-0 [&>li>ul]:mt-1 [&>li>ol]:mt-1">
|
||||
{children}
|
||||
</ol>
|
||||
)
|
||||
},
|
||||
ul({ children }) {
|
||||
return (
|
||||
<ul className="list-disc pl-4 [&>li]:mb-1 [&>li:last-child]:mb-0 [&>li>ul]:mt-1 [&>li>ol]:mt-1">
|
||||
{children}
|
||||
</ul>
|
||||
)
|
||||
},
|
||||
blockquote({ children }) {
|
||||
return <Blockquote>{children}</Blockquote>
|
||||
},
|
||||
code({ className, children, ...props }) {
|
||||
if (children && Array.isArray(children) && children.length) {
|
||||
if (children[0] === "▍") {
|
||||
return <span className="mt-1 animate-pulse cursor-default">▍</span>
|
||||
}
|
||||
|
||||
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 ? (
|
||||
<code className={className} {...props}>
|
||||
{children}
|
||||
</code>
|
||||
) : (
|
||||
<CodeBlock
|
||||
language={(match && match[1]) || ""}
|
||||
value={String(children).replace(/\n$/, "")}
|
||||
className="rounded-xs p-3 mb-2"
|
||||
/>
|
||||
)
|
||||
},
|
||||
a({ href, children }) {
|
||||
return (
|
||||
<a href={href} target="_blank" rel="noopener noreferrer">
|
||||
{children}
|
||||
</a>
|
||||
)
|
||||
},
|
||||
}}>
|
||||
{content}
|
||||
</MemoizedReactMarkdown>
|
||||
)
|
||||
}
|
||||
|
|
@ -1 +0,0 @@
|
|||
export * from "./Markdown"
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
import type { Meta, StoryObj } from "@storybook/react"
|
||||
import { AutosizeTextarea } from "@src/components/ui/autosize-textarea"
|
||||
|
||||
const meta: Meta<typeof AutosizeTextarea> = {
|
||||
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<typeof AutosizeTextarea>
|
||||
|
||||
export const Default: Story = {
|
||||
args: {},
|
||||
}
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
import type { Meta, StoryObj } from "@storybook/react"
|
||||
|
||||
import { Badge } from "@/components/ui"
|
||||
|
||||
const meta: Meta<typeof Badge> = {
|
||||
title: "Primitives/Badge",
|
||||
component: Badge,
|
||||
tags: ["autodocs"],
|
||||
args: {
|
||||
children: "Badge",
|
||||
},
|
||||
}
|
||||
|
||||
export default meta
|
||||
|
||||
type Story = StoryObj<typeof Badge>
|
||||
|
||||
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",
|
||||
},
|
||||
}
|
||||
|
|
@ -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<typeof Button>
|
||||
|
||||
export default meta
|
||||
|
||||
type Story = StoryObj<typeof meta>
|
||||
|
||||
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",
|
||||
},
|
||||
}
|
||||
|
|
@ -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<typeof Chat>
|
||||
|
||||
export default meta
|
||||
|
||||
type Story = StoryObj<typeof meta>
|
||||
|
||||
export const Default: Story = {
|
||||
name: "Chat",
|
||||
args: {
|
||||
assistantName: "Assistant",
|
||||
handler: {} as ChatHandler,
|
||||
},
|
||||
render: function StorybookChat() {
|
||||
const handler = useStorybookChat()
|
||||
return (
|
||||
<Chat
|
||||
assistantName="Assistant"
|
||||
handler={handler}
|
||||
className="border w-[460px] h-[640px] bg-vscode-editor-background"
|
||||
/>
|
||||
)
|
||||
},
|
||||
}
|
||||
|
||||
const useStorybookChat = (): ChatHandler => {
|
||||
const [isLoading, setIsLoading] = useState(false)
|
||||
const [input, setInput] = useState("")
|
||||
const [messages, setMessages] = useState<Message[]>([])
|
||||
|
||||
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 }
|
||||
}
|
||||
|
|
@ -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<typeof Collapsible> = {
|
||||
title: "Primitives/Collapsible",
|
||||
component: Collapsible,
|
||||
tags: ["autodocs"],
|
||||
}
|
||||
|
||||
export default meta
|
||||
|
||||
type Story = StoryObj<typeof Collapsible>
|
||||
|
||||
export const Default: Story = {
|
||||
render: () => <CollapsibleDemo />,
|
||||
}
|
||||
|
||||
const CollapsibleDemo = () => {
|
||||
const [isOpen, setIsOpen] = useState(false)
|
||||
|
||||
return (
|
||||
<Collapsible open={isOpen} onOpenChange={setIsOpen}>
|
||||
<CollapsibleTrigger asChild>
|
||||
<Button variant="ghost">
|
||||
Hello
|
||||
<ChevronsUpDown className="size-4" />
|
||||
</Button>
|
||||
</CollapsibleTrigger>
|
||||
<CollapsibleContent className="p-2">👋</CollapsibleContent>
|
||||
</Collapsible>
|
||||
)
|
||||
}
|
||||
|
|
@ -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<typeof Combobox>
|
||||
|
||||
export default meta
|
||||
|
||||
type Story = StoryObj<typeof meta>
|
||||
|
||||
export const Default: Story = {
|
||||
name: "Combobox",
|
||||
render: () => <Combobox />,
|
||||
}
|
||||
|
||||
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 (
|
||||
<Popover open={open} onOpenChange={setOpen}>
|
||||
<PopoverTrigger asChild>
|
||||
<Button variant="combobox" role="combobox" aria-expanded={open} className="w-[200px] justify-between">
|
||||
{value ? frameworks.find((framework) => framework.value === value)?.label : "Select framework..."}
|
||||
<CaretSortIcon className="opacity-50" />
|
||||
</Button>
|
||||
</PopoverTrigger>
|
||||
<PopoverContent className="w-[200px] p-0">
|
||||
<Command>
|
||||
<CommandInput placeholder="Search framework..." className="h-9" />
|
||||
<CommandList>
|
||||
<CommandEmpty>No framework found.</CommandEmpty>
|
||||
<CommandGroup>
|
||||
{frameworks.map((framework) => (
|
||||
<CommandItem
|
||||
key={framework.value}
|
||||
value={framework.value}
|
||||
onSelect={(currentValue) => {
|
||||
setValue(currentValue === value ? "" : currentValue)
|
||||
setOpen(false)
|
||||
}}>
|
||||
{framework.label}
|
||||
<CheckIcon
|
||||
className={cn(
|
||||
"ml-auto",
|
||||
value === framework.value ? "opacity-100" : "opacity-0",
|
||||
)}
|
||||
/>
|
||||
</CommandItem>
|
||||
))}
|
||||
</CommandGroup>
|
||||
</CommandList>
|
||||
</Command>
|
||||
</PopoverContent>
|
||||
</Popover>
|
||||
)
|
||||
}
|
||||
|
|
@ -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<typeof DropdownMenu>
|
||||
|
||||
export default meta
|
||||
|
||||
type Story = StoryObj<typeof meta>
|
||||
|
||||
export const Default: Story = {
|
||||
name: "DropdownMenu",
|
||||
render: () => (
|
||||
<DropdownMenu>
|
||||
<DropdownMenuTrigger asChild>
|
||||
<Button variant="ghost" size="icon">
|
||||
<HamburgerMenuIcon />
|
||||
</Button>
|
||||
</DropdownMenuTrigger>
|
||||
<DropdownMenuContent>
|
||||
<DropdownMenuLabel>Label</DropdownMenuLabel>
|
||||
<DropdownMenuSeparator />
|
||||
<DropdownMenuGroup>
|
||||
<DropdownMenuItem>Item 1</DropdownMenuItem>
|
||||
<DropdownMenuItem>
|
||||
Item 2<DropdownMenuShortcut>⌘2</DropdownMenuShortcut>
|
||||
</DropdownMenuItem>
|
||||
</DropdownMenuGroup>
|
||||
</DropdownMenuContent>
|
||||
</DropdownMenu>
|
||||
),
|
||||
}
|
||||
|
||||
type DropdownMenuVariantProps = {
|
||||
side?: "top" | "bottom" | "left" | "right"
|
||||
align?: "start" | "center" | "end"
|
||||
children?: React.ReactNode
|
||||
}
|
||||
|
||||
const DropdownMenuVariant = ({ side = "bottom", align = "center", children }: DropdownMenuVariantProps) => (
|
||||
<DropdownMenu>
|
||||
<DropdownMenuTrigger asChild>
|
||||
<Button variant="ghost" size="icon">
|
||||
{children}
|
||||
</Button>
|
||||
</DropdownMenuTrigger>
|
||||
<DropdownMenuContent side={side} align={align}>
|
||||
<DropdownMenuItem>Foo</DropdownMenuItem>
|
||||
<DropdownMenuItem>Bar</DropdownMenuItem>
|
||||
<DropdownMenuItem>Baz</DropdownMenuItem>
|
||||
</DropdownMenuContent>
|
||||
</DropdownMenu>
|
||||
)
|
||||
|
||||
export const Placements: Story = {
|
||||
render: () => (
|
||||
<div className="flex gap-2">
|
||||
<DropdownMenuVariant side="top">
|
||||
<BorderTopIcon />
|
||||
</DropdownMenuVariant>
|
||||
<DropdownMenuVariant side="bottom">
|
||||
<BorderBottomIcon />
|
||||
</DropdownMenuVariant>
|
||||
<DropdownMenuVariant side="left">
|
||||
<BorderLeftIcon />
|
||||
</DropdownMenuVariant>
|
||||
<DropdownMenuVariant side="right">
|
||||
<BorderRightIcon />
|
||||
</DropdownMenuVariant>
|
||||
</div>
|
||||
),
|
||||
}
|
||||
|
||||
export const Alignments: Story = {
|
||||
render: () => (
|
||||
<div className="flex gap-2">
|
||||
<DropdownMenuVariant align="center">
|
||||
<TextAlignCenterIcon />
|
||||
</DropdownMenuVariant>
|
||||
<DropdownMenuVariant align="end">
|
||||
<TextAlignRightIcon />
|
||||
</DropdownMenuVariant>
|
||||
<DropdownMenuVariant align="start">
|
||||
<TextAlignLeftIcon />
|
||||
</DropdownMenuVariant>
|
||||
</div>
|
||||
),
|
||||
}
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
import type { Meta, StoryObj } from "@storybook/react"
|
||||
|
||||
import { Progress } from "@/components/ui"
|
||||
|
||||
const meta: Meta<typeof Progress> = {
|
||||
title: "Primitives/Progress",
|
||||
component: Progress,
|
||||
parameters: {
|
||||
layout: "centered",
|
||||
},
|
||||
args: {
|
||||
className: "w-[300px]",
|
||||
},
|
||||
tags: ["autodocs"],
|
||||
}
|
||||
|
||||
export default meta
|
||||
|
||||
type Story = StoryObj<typeof Progress>
|
||||
|
||||
export const Default: Story = {
|
||||
args: {
|
||||
value: 50,
|
||||
},
|
||||
}
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
import type { Meta, StoryObj } from "@storybook/react"
|
||||
|
||||
import { Slider } from "@/components/ui"
|
||||
|
||||
const meta: Meta<typeof Slider> = {
|
||||
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<typeof Slider>
|
||||
|
||||
export const Default: Story = {
|
||||
args: {
|
||||
defaultValue: [50],
|
||||
max: 100,
|
||||
min: 0,
|
||||
step: 1,
|
||||
},
|
||||
}
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
import { Meta } from "@storybook/blocks"
|
||||
|
||||
<Meta title="Welcome" />
|
||||
|
||||
# Welcome
|
||||
|
||||
This Roo Code storybook is used to independently develop components for the Roo Code webview UI.
|
||||
Loading…
Add table
Reference in a new issue