diff --git a/.dev.env b/.dev.env new file mode 100644 index 0000000..e84bf79 --- /dev/null +++ b/.dev.env @@ -0,0 +1,5 @@ +## 开发环境 +BACKEND_URL=https://kevisual.silkyai.cn +#BACKEND_URL=https://localhost:4005 + +## 生产环境 \ No newline at end of file diff --git a/package.json b/package.json index 4300a30..ef62e23 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@kevisual/center", "private": true, - "version": "0.0.8", + "version": "0.0.9", "type": "module", "scripts": { "dev": "vite", @@ -10,39 +10,42 @@ "lint": "eslint .", "preview": "vite preview", "prepub": "envision switch root", - "pub": "envision deploy ./dist -k center -v 0.0.8 -u -o root" + "pub": "envision deploy ./dist -k center -v 0.0.9 -u -o root" }, "dependencies": { "@ant-design/icons": "^5.6.1", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.0", "@icon-park/react": "^1.4.2", + "@kevisual/center-components": "workspace:*", "@kevisual/codemirror": "^0.0.2", "@kevisual/container": "1.0.0", "@kevisual/query": "^0.0.8", "@kevisual/system-ui": "^0.0.3", "@kevisual/ui": "^0.0.2", "@monaco-editor/react": "^4.7.0", - "@mui/material": "^6.4.7", - "@tailwindcss/vite": "^4.0.12", + "@mui/material": "^6.4.8", + "@tailwindcss/vite": "^4.0.14", "@uiw/react-textarea-code-editor": "^3.1.0", "@xyflow/react": "^12.4.4", - "antd": "^5.24.3", + "antd": "^5.24.4", "classnames": "^2.5.1", "clsx": "^2.1.1", "copy-to-clipboard": "^3.3.3", "d3": "^7.9.0", + "dayjs": "^1.11.13", "eventemitter3": "^5.0.1", "immer": "^10.1.1", "lodash-es": "^4.17.21", "marked": "^15.0.7", - "nanoid": "^5.1.3", + "nanoid": "^5.1.4", "react": "19.0.0", "react-dom": "19.0.0", "react-resizable-panels": "^2.1.7", "react-router": "^7.3.0", "react-router-dom": "^7.3.0", "react-toastify": "^11.0.5", + "@kevisual/resources": "workspace:*", "vite-plugin-tsconfig-paths": "^1.4.1", "zustand": "^5.0.3" }, @@ -54,8 +57,9 @@ "@types/lodash-es": "^4.17.12", "@types/node": "^22.13.10", "@types/path-browserify": "^1.0.3", - "@types/react": "^19.0.10", + "@types/react": "^19.0.11", "@types/react-dom": "^19.0.4", + "@vitejs/plugin-basic-ssl": "^2.0.0", "@vitejs/plugin-react": "^4.3.4", "autoprefixer": "^10.4.21", "cross-env": "^7.0.3", @@ -68,10 +72,10 @@ "pretty-bytes": "^6.1.1", "react-is": "19.0.0", "tailwind-merge": "^3.0.2", - "tailwindcss": "^4.0.12", + "tailwindcss": "^4.0.14", "tailwindcss-animate": "^1.0.7", "typescript": "^5.8.2", "typescript-eslint": "^8.26.1", - "vite": "^6.2.1" + "vite": "^6.2.2" } } \ No newline at end of file diff --git a/packages/components/package.json b/packages/components/package.json index 3cf2660..5787025 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -21,8 +21,7 @@ }, "exports": { ".": "./src/index.tsx", - "./theme": "./src/theme/index.tsx", - "./button": "./src/button/index.tsx" + "./*": "./src/*" }, "devDependencies": { "clsx": "^2.1.1", diff --git a/packages/components/src/button/index.tsx b/packages/components/src/button/index.tsx index 7c24765..2c892c2 100644 --- a/packages/components/src/button/index.tsx +++ b/packages/components/src/button/index.tsx @@ -3,3 +3,12 @@ import MuiButton, { ButtonProps } from '@mui/material/Button'; export const Button = (props: ButtonProps) => { return ; }; + +export const IconButton = (props: ButtonProps) => { + const { variant = 'contained', color = 'primary', sx, children, ...rest } = props; + return ( + + {children} + + ); +}; diff --git a/packages/components/src/theme/index.tsx b/packages/components/src/theme/index.tsx index 279e96b..50ff133 100644 --- a/packages/components/src/theme/index.tsx +++ b/packages/components/src/theme/index.tsx @@ -1,6 +1,7 @@ import { createTheme, Shadows, ThemeOptions } from '@mui/material/styles'; import { useTheme as useMuiTheme, Theme } from '@mui/material/styles'; import { amber, red } from '@mui/material/colors'; +import { ThemeProvider } from '@mui/material/styles'; const generateShadows = (color: string): Shadows => { return [ 'none', @@ -139,6 +140,20 @@ export const themeOptions: ThemeOptions = { */ export const theme = createTheme(themeOptions); +/** + * + * @returns + */ export const useTheme = () => { return useMuiTheme(); }; + +/** + * 自定义主题设置。 + * @param param0 + * @returns + */ +export const CustomThemeProvider = ({ children, themeOptions: customThemeOptions }: { children: React.ReactNode; themeOptions?: ThemeOptions }) => { + const theme = createTheme(customThemeOptions || themeOptions); + return {children}; +}; diff --git a/packages/components/src/theme/wind-theme.css b/packages/components/src/theme/wind-theme.css new file mode 100644 index 0000000..06f04ef --- /dev/null +++ b/packages/components/src/theme/wind-theme.css @@ -0,0 +1,6 @@ +@import 'tailwindcss'; + +@theme { + --light-color-primary: oklch(0.72 0.11 178); + --light-color-secondary: oklch(0.72 0.11 178); +} diff --git a/packages/components/tsconfig.json b/packages/components/tsconfig.json index aa72cb4..421486f 100644 --- a/packages/components/tsconfig.json +++ b/packages/components/tsconfig.json @@ -21,7 +21,11 @@ "node_modules/@types", "node_modules/@kevisual/types", ], - "paths": {}, + "paths": { + "@kevisual/center-components/*": [ + "src/*" + ] + }, /* Linting */ "strict": true, "noImplicitAny": false, diff --git a/packages/resources/package.json b/packages/resources/package.json index 146146c..b9e6919 100644 --- a/packages/resources/package.json +++ b/packages/resources/package.json @@ -1,5 +1,5 @@ { - "name": "resources", + "name": "@kevisual/resources", "version": "0.0.1", "description": "", "main": "index.js", @@ -42,5 +42,9 @@ }, "devDependencies": { "@kevisual/types": "^0.0.6" + }, + "exports": { + ".": "./src/index.tsx", + "./*": "./src/*" } } \ No newline at end of file diff --git a/packages/resources/src/main.ts b/packages/resources/src/main.ts index 917d1dd..17d1c87 100644 --- a/packages/resources/src/main.ts +++ b/packages/resources/src/main.ts @@ -1,4 +1,4 @@ -import { bootstrap } from './pages/Bootstrap'; +import { render } from './pages/Bootstrap'; -bootstrap('#ai-root'); +render('#ai-root'); diff --git a/packages/resources/src/modules/query.ts b/packages/resources/src/modules/query.ts index 5c3e436..6c8528c 100644 --- a/packages/resources/src/modules/query.ts +++ b/packages/resources/src/modules/query.ts @@ -1,4 +1,4 @@ -import { toastLogin } from '@/pages/message/ToastLogin'; +import { toastLogin } from '@kevisual/resources/pages/message/ToastLogin'; import { QueryClient } from '@kevisual/query'; export const query = new QueryClient(); diff --git a/packages/resources/src/pages/App.tsx b/packages/resources/src/pages/App.tsx index 61e56c2..841f8ba 100644 --- a/packages/resources/src/pages/App.tsx +++ b/packages/resources/src/pages/App.tsx @@ -1,5 +1,5 @@ -import { useEffect } from 'react'; -import { theme } from '@kevisual/center-components/theme'; +import { useEffect, useMemo } from 'react'; +import { theme } from '@kevisual/center-components/theme/index.tsx'; import { ThemeProvider } from '@mui/material/styles'; import { Left } from './layout/Left'; import { Main } from './main/index'; @@ -74,7 +74,17 @@ export const InitProvider = ({ children }: { children: React.ReactNode }) => {

出现问题

加载设置时遇到错误。请重试。

-
@@ -82,15 +92,37 @@ export const InitProvider = ({ children }: { children: React.ReactNode }) => { } return <>{children}; }; -export const App = () => { + +type AppProvider = { + key: string; + use: boolean; +}; +export type AppProps = { + providers?: AppProvider[]; + noProvider?: boolean; + /** + * 是否是单个应用 + * 默认是单个应用模块。 + */ + isSingleApp?: boolean; +}; +export const App = ({ providers, noProvider, isSingleApp = true }: AppProps) => { + const children = useMemo(() => { + return ( + + +
+ + + ); + }, []); + if (noProvider) { + return <>{children}; + } return ( - - -
- - + {children} diff --git a/packages/resources/src/pages/Bootstrap.tsx b/packages/resources/src/pages/Bootstrap.tsx index b9f76ba..859cee8 100644 --- a/packages/resources/src/pages/Bootstrap.tsx +++ b/packages/resources/src/pages/Bootstrap.tsx @@ -1,5 +1,5 @@ import { createRoot } from 'react-dom/client'; -import { App } from './App'; +import { App, AppProps } from './App'; import React from 'react'; export class ReactRenderer { @@ -40,13 +40,27 @@ export class ReactRenderer { } export default ReactRenderer; - -export const bootstrap = (el: HTMLElement | string) => { +export const randomId = () => { + return Math.random().toString(36).substring(2, 15); +}; +export const render = (el: HTMLElement | string, props?: AppProps) => { // createRoot(document.getElementById('ai-root')!).render(); const root = typeof el === 'string' ? document.querySelector(el) : el; - if (root) { + if (!root) { + console.error('root not found'); + return; + } + const hasResourceApp = window.context?.resourcesApp; + if (hasResourceApp) { + const render = hasResourceApp as ReactRenderer; + render.updateProps({ + props: { t: randomId(), ...props }, + }); + root.innerHTML = ''; + root.appendChild(render.element); + } else { const renderer = new ReactRenderer(App, { - props: {}, + props: { ...props }, className: 'resources-root w-full h-full', }); if (window.context) { @@ -59,3 +73,17 @@ export const bootstrap = (el: HTMLElement | string) => { root.appendChild(renderer.element); } }; + +export const unmount = (el: HTMLElement | string) => { + const root = typeof el === 'string' ? document.querySelector(el) : el; + if (!root) { + console.error('root not found'); + return; + } + const hasResourceApp = window.context?.resourcesApp; + if (hasResourceApp) { + const render = hasResourceApp as ReactRenderer; + render.destroy(); + window.context.resourcesApp = null; + } +}; diff --git a/packages/resources/src/pages/file/draw/FileDrawer.tsx b/packages/resources/src/pages/file/draw/FileDrawer.tsx index 29e72f6..8c254a4 100644 --- a/packages/resources/src/pages/file/draw/FileDrawer.tsx +++ b/packages/resources/src/pages/file/draw/FileDrawer.tsx @@ -1,5 +1,5 @@ -import { useResourceStore } from '@/pages/store/resource'; -import { useResourceFileStore } from '@/pages/store/resource-file'; +import { useResourceStore } from '@kevisual/resources/pages/store/resource'; +import { useResourceFileStore } from '@kevisual/resources/pages/store/resource-file'; import { Box, Divider, Drawer, Tab, Tabs } from '@mui/material'; import { useMemo, useState } from 'react'; import { QuickValues, QuickTabs } from './QuickTabs'; diff --git a/packages/resources/src/pages/file/draw/modules/ContextForm.tsx b/packages/resources/src/pages/file/draw/modules/ContextForm.tsx index 3209b9e..dc2f6e3 100644 --- a/packages/resources/src/pages/file/draw/modules/ContextForm.tsx +++ b/packages/resources/src/pages/file/draw/modules/ContextForm.tsx @@ -1,4 +1,4 @@ -import { useResourceFileStore } from '@/pages/store/resource-file'; +import { useResourceFileStore } from '@kevisual/resources/pages/store/resource-file'; import { Box, Typography } from '@mui/material'; import prettyBytes from 'pretty-bytes'; import dayjs from 'dayjs'; diff --git a/packages/resources/src/pages/file/draw/modules/MetaForm.tsx b/packages/resources/src/pages/file/draw/modules/MetaForm.tsx index 7505dbf..9fb8b3d 100644 --- a/packages/resources/src/pages/file/draw/modules/MetaForm.tsx +++ b/packages/resources/src/pages/file/draw/modules/MetaForm.tsx @@ -1,4 +1,4 @@ -import { useResourceFileStore } from '@/pages/store/resource-file'; +import { useResourceFileStore } from '@kevisual/resources/pages/store/resource-file'; import { FormControlLabel, Box, TextField, Button, IconButton, ButtonGroup, Tooltip, Select, MenuItem, Typography, FormGroup } from '@mui/material'; import { Info, Plus, Save, Share, Shuffle, Trash } from 'lucide-react'; import { useState, useEffect, useMemo } from 'react'; diff --git a/packages/resources/src/pages/file/draw/quick/QuickPreview.tsx b/packages/resources/src/pages/file/draw/quick/QuickPreview.tsx index ce88845..cf097c8 100644 --- a/packages/resources/src/pages/file/draw/quick/QuickPreview.tsx +++ b/packages/resources/src/pages/file/draw/quick/QuickPreview.tsx @@ -1,5 +1,5 @@ -import { useResourceFileStore } from '@/pages/store/resource-file'; -import { useSettingsStore } from '@/pages/store/settings'; +import { useResourceFileStore } from '@kevisual/resources/pages/store/resource-file'; +import { useSettingsStore } from '@kevisual/resources/pages/store/settings'; import { Button, Tooltip, useTheme } from '@mui/material'; import { useShallow } from 'zustand/shallow'; import { Accordion, AccordionSummary, AccordionDetails } from '@mui/material'; diff --git a/packages/resources/src/pages/file/draw/quick/index.tsx b/packages/resources/src/pages/file/draw/quick/index.tsx index b8445a6..97ff1d9 100644 --- a/packages/resources/src/pages/file/draw/quick/index.tsx +++ b/packages/resources/src/pages/file/draw/quick/index.tsx @@ -1,4 +1,4 @@ -import { useResourceFileStore } from '@/pages/store/resource-file'; +import { useResourceFileStore } from '@kevisual/resources/pages/store/resource-file'; import { useShallow } from 'zustand/shallow'; import { QuickPreview } from './QuickPreview'; import { useMemo } from 'react'; diff --git a/packages/resources/src/pages/file/list/FileCard.tsx b/packages/resources/src/pages/file/list/FileCard.tsx index e2029f5..703121d 100644 --- a/packages/resources/src/pages/file/list/FileCard.tsx +++ b/packages/resources/src/pages/file/list/FileCard.tsx @@ -1,9 +1,9 @@ -import { useResourceStore } from '@/pages/store/resource'; +import { useResourceStore } from '@kevisual/resources/pages/store/resource'; import { Card, CardContent, Typography } from '@mui/material'; import { getIcon } from '../FileIcon'; import { amber } from '@mui/material/colors'; import clsx from 'clsx'; -import { useResourceFileStore } from '@/pages/store/resource-file'; +import { useResourceFileStore } from '@kevisual/resources/pages/store/resource-file'; export const FileCard = () => { const { list, prefix, onOpenPrefix } = useResourceStore(); const { setPrefix, setOpenDrawer } = useResourceFileStore(); diff --git a/packages/resources/src/pages/file/list/FileTable.tsx b/packages/resources/src/pages/file/list/FileTable.tsx index dcf494c..183ae18 100644 --- a/packages/resources/src/pages/file/list/FileTable.tsx +++ b/packages/resources/src/pages/file/list/FileTable.tsx @@ -1,11 +1,11 @@ -import { useResourceStore } from '@/pages/store/resource'; +import { useResourceStore } from '@kevisual/resources/pages/store/resource'; import { Button, Paper, Table, TableBody, TableCell, TableContainer, TableHead, TableRow } from '@mui/material'; import prettyBytes from 'pretty-bytes'; import dayjs from 'dayjs'; import { getIcon } from '../FileIcon'; import { Download, Trash } from 'lucide-react'; import clsx from 'clsx'; -import { useResourceFileStore } from '@/pages/store/resource-file'; +import { useResourceFileStore } from '@kevisual/resources/pages/store/resource-file'; export const FileTable = () => { const { list, prefix, download, onOpenPrefix, deleteFile } = useResourceStore(); diff --git a/packages/resources/src/pages/file/modules/PrefixRedirect.tsx b/packages/resources/src/pages/file/modules/PrefixRedirect.tsx index 11b4517..7c8ef08 100644 --- a/packages/resources/src/pages/file/modules/PrefixRedirect.tsx +++ b/packages/resources/src/pages/file/modules/PrefixRedirect.tsx @@ -1,4 +1,4 @@ -import { useResourceStore } from '@/pages/store/resource'; +import { useResourceStore } from '@kevisual/resources/pages/store/resource'; import { Breadcrumbs, Typography } from '@mui/material'; import clsx from 'clsx'; import { useMemo } from 'react'; diff --git a/packages/resources/src/pages/main.tsx b/packages/resources/src/pages/main.tsx index c5270c7..f5831dc 100644 --- a/packages/resources/src/pages/main.tsx +++ b/packages/resources/src/pages/main.tsx @@ -1,3 +1,3 @@ -import { bootstrap } from './Bootstrap'; +import { render } from './Bootstrap'; -bootstrap('#ai-root'); +render('#ai-root'); diff --git a/packages/resources/src/pages/settings/index.tsx b/packages/resources/src/pages/settings/index.tsx index 7386c92..4065574 100644 --- a/packages/resources/src/pages/settings/index.tsx +++ b/packages/resources/src/pages/settings/index.tsx @@ -1,4 +1,4 @@ -import { useSettingsStore, Settings as SettingsType } from '@/pages/store/settings'; +import { useSettingsStore, Settings as SettingsType } from '@kevisual/resources/pages/store/settings'; import { Box, Typography, TextField, useTheme, Button } from '@mui/material'; import { useEffect, useState } from 'react'; import { Settings as SettingsIcon } from 'lucide-react'; diff --git a/packages/resources/src/pages/store/resource-file.ts b/packages/resources/src/pages/store/resource-file.ts index 346ce8a..91972fb 100644 --- a/packages/resources/src/pages/store/resource-file.ts +++ b/packages/resources/src/pages/store/resource-file.ts @@ -1,6 +1,6 @@ import { create } from 'zustand'; import { Resource } from './resource'; -import { query } from '@/modules/query'; +import { query } from '@kevisual/resources/modules/query'; import { toast } from 'react-toastify'; interface ResourceFileStore { diff --git a/packages/resources/src/pages/store/resource.ts b/packages/resources/src/pages/store/resource.ts index 1b4eb34..82edba0 100644 --- a/packages/resources/src/pages/store/resource.ts +++ b/packages/resources/src/pages/store/resource.ts @@ -1,5 +1,5 @@ import { create } from 'zustand'; -import { query } from '@/modules/query'; +import { query } from '@kevisual/resources/modules/query'; import { sortBy } from 'lodash-es'; import { toast } from 'react-toastify'; import { useSettingsStore } from './settings'; diff --git a/packages/resources/src/pages/store/settings.ts b/packages/resources/src/pages/store/settings.ts index 9a3d9d3..c7b2eec 100644 --- a/packages/resources/src/pages/store/settings.ts +++ b/packages/resources/src/pages/store/settings.ts @@ -1,5 +1,5 @@ import { create } from 'zustand'; -import { query } from '@/modules/query'; +import { query } from '@kevisual/resources/modules/query'; import { toast } from 'react-toastify'; export type Settings = { diff --git a/packages/resources/src/pages/store/statistic.ts b/packages/resources/src/pages/store/statistic.ts index 819234d..7d36e4a 100644 --- a/packages/resources/src/pages/store/statistic.ts +++ b/packages/resources/src/pages/store/statistic.ts @@ -1,5 +1,5 @@ import { create } from 'zustand'; -import { query } from '@/modules/query'; +import { query } from '@kevisual/resources/modules/query'; type Statistic = { list: any[]; diff --git a/packages/resources/src/pages/upload/utils/upload-chunk.ts b/packages/resources/src/pages/upload/utils/upload-chunk.ts index 78da689..dac7529 100644 --- a/packages/resources/src/pages/upload/utils/upload-chunk.ts +++ b/packages/resources/src/pages/upload/utils/upload-chunk.ts @@ -2,7 +2,7 @@ import NProgress from 'nprogress'; import 'nprogress/nprogress.css'; import { toast } from 'react-toastify'; import { nanoid } from 'nanoid'; -import { toastLogin } from '@/pages/message/ToastLogin'; +import { toastLogin } from '@kevisual/resources/pages/message/ToastLogin'; type ConvertOpts = { appKey?: string; diff --git a/packages/resources/src/pages/upload/utils/upload.ts b/packages/resources/src/pages/upload/utils/upload.ts index 6a18638..ad6b2a8 100644 --- a/packages/resources/src/pages/upload/utils/upload.ts +++ b/packages/resources/src/pages/upload/utils/upload.ts @@ -2,7 +2,7 @@ import NProgress from 'nprogress'; import 'nprogress/nprogress.css'; import { toast } from 'react-toastify'; import { nanoid } from 'nanoid'; -import { toastLogin } from '@/pages/message/ToastLogin'; +import { toastLogin } from '@kevisual/resources/pages/message/ToastLogin'; type ConvertOpts = { appKey?: string; diff --git a/packages/resources/tsconfig.json b/packages/resources/tsconfig.json index e15609b..6c7008f 100644 --- a/packages/resources/tsconfig.json +++ b/packages/resources/tsconfig.json @@ -22,7 +22,7 @@ "node_modules/@kevisual/types", ], "paths": { - "@/*": [ + "@kevisual/resources/*": [ "src/*" ] }, diff --git a/packages/resources/vite.config.mjs b/packages/resources/vite.config.mjs index a74ea76..8ca72b1 100644 --- a/packages/resources/vite.config.mjs +++ b/packages/resources/vite.config.mjs @@ -42,7 +42,7 @@ export default defineConfig({ }, resolve: { alias: { - '@': path.resolve(__dirname, './src'), + '@kevisual/resources': path.resolve(__dirname, './src'), // 'react/jsx-dev-runtime': 'https://cdn.jsdelivr.net/npm/react/jsx-dev-runtime/+esm', // 'react/jsx-runtime': 'https://cdn.jsdelivr.net/npm/react/jsx-runtime/+esm', // 'react/jsx-runtime': path.resolve(__dirname, './node_modules/react/jsx-runtime'), diff --git a/packages/webshell/.gitignore b/packages/webshell/.gitignore new file mode 100644 index 0000000..e440e68 --- /dev/null +++ b/packages/webshell/.gitignore @@ -0,0 +1,27 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +tsconfig.app.tsbuildinfo +tsconfig.node.tsbuildinfo \ No newline at end of file diff --git a/packages/webshell/index.html b/packages/webshell/index.html new file mode 100644 index 0000000..f0a0768 --- /dev/null +++ b/packages/webshell/index.html @@ -0,0 +1,33 @@ + + + + +AI Apps + + + + + + + +
+ + + + + \ No newline at end of file diff --git a/packages/webshell/package.json b/packages/webshell/package.json new file mode 100644 index 0000000..e27cd5d --- /dev/null +++ b/packages/webshell/package.json @@ -0,0 +1,13 @@ +{ + "name": "webshell", + "version": "0.0.1", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "abearxiong ", + "license": "MIT", + "type": "module" +} diff --git a/packages/webshell/src/index.ts b/packages/webshell/src/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/packages/webshell/tsconfig.json b/packages/webshell/tsconfig.json new file mode 100644 index 0000000..6c7008f --- /dev/null +++ b/packages/webshell/tsconfig.json @@ -0,0 +1,39 @@ +{ + "compilerOptions": { + "jsx": "react-jsx", + "target": "ES2020", + "useDefineForClassFields": true, + "lib": [ + "ES2020", + "DOM", + "DOM.Iterable" + ], + "module": "ESNext", + "skipLibCheck": true, + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "baseUrl": "./", + "typeRoots": [ + "node_modules/@types", + "node_modules/@kevisual/types", + ], + "paths": { + "@kevisual/resources/*": [ + "src/*" + ] + }, + /* Linting */ + "strict": true, + "noImplicitAny": false, + "noUnusedLocals": false, + "noUnusedParameters": false, + "noFallthroughCasesInSwitch": true + }, + "include": [ + "src", + ] +} \ No newline at end of file diff --git a/packages/webshell/vite.config.mjs b/packages/webshell/vite.config.mjs new file mode 100644 index 0000000..8ca72b1 --- /dev/null +++ b/packages/webshell/vite.config.mjs @@ -0,0 +1,92 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import path from 'path'; +import tailwindcss from '@tailwindcss/vite'; +import basicSsl from '@vitejs/plugin-basic-ssl'; + +const isDev = process.env.NODE_ENV === 'development'; +const plugins = [basicSsl()]; +// const plugins = []; +plugins.push(tailwindcss()); +let proxy = {}; +if (true) { + proxy = { + '/api': { + target: 'https://kevisual.silkyai.cn', + changeOrigin: true, + ws: true, + cookieDomainRewrite: 'localhost', + rewrite: (path) => path.replace(/^\/api/, '/api'), + }, + '/api/router': { + target: 'wss://kevisual.silkyai.cn', + changeOrigin: true, + ws: true, + rewriteWsOrigin: true, + rewrite: (path) => path.replace(/^\/api/, '/api'), + }, + '/user/login': { + target: 'https://kevisual.silkyai.cn', + changeOrigin: true, + cookieDomainRewrite: 'localhost', + rewrite: (path) => path.replace(/^\/user/, '/user'), + }, + }; +} +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react(), ...plugins], + + css: { + postcss: {}, + }, + resolve: { + alias: { + '@kevisual/resources': path.resolve(__dirname, './src'), + // 'react/jsx-dev-runtime': 'https://cdn.jsdelivr.net/npm/react/jsx-dev-runtime/+esm', + // 'react/jsx-runtime': 'https://cdn.jsdelivr.net/npm/react/jsx-runtime/+esm', + // 'react/jsx-runtime': path.resolve(__dirname, './node_modules/react/jsx-runtime'), + // 'react/jsx-dev-runtime': path.resolve(__dirname, './node_modules/react/jsx-dev-runtime'), + // 'react-dom/client': 'https://cdn.jsdelivr.net/npm/react-dom/client/+esm', + // react: 'https://cdn.jsdelivr.net/npm/react@19.0.0/+esm', + // 'react-dom': 'https://cdn.jsdelivr.net/npm/react-dom@19.0.0/+esm', + + }, + }, + define: { + DEV_SERVER: JSON.stringify(process.env.NODE_ENV === 'development'), + BASE_NAME: JSON.stringify('/root/resources/'), + }, + base: './', + // base: isDev ? '/' : '/root/resources/', + build: { + rollupOptions: { + // external: ['react', 'react-dom'], + }, + }, + server: { + port: 6022, + host: '0.0.0.0', + proxy: { + '/system/lib': { + target: 'https://kevisual.xiongxiao.me', + changeOrigin: true, + }, + '/api': { + target: 'http://localhost:4005', + changeOrigin: true, + ws: true, + cookieDomainRewrite: 'localhost', + rewrite: (path) => path.replace(/^\/api/, '/api'), + }, + '/api/router': { + target: 'ws://localhost:4005', + changeOrigin: true, + ws: true, + rewriteWsOrigin: true, + rewrite: (path) => path.replace(/^\/api/, '/api'), + }, + ...proxy, + }, + }, +}); diff --git a/packages/webshell/webshell-node/package.json b/packages/webshell/webshell-node/package.json new file mode 100644 index 0000000..79c5307 --- /dev/null +++ b/packages/webshell/webshell-node/package.json @@ -0,0 +1,19 @@ +{ + "name": "webshell-node", + "version": "0.0.1", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "abearxiong ", + "license": "MIT", + "type": "module", + "dependencies": { + "node-pty": "^1.0.0" + }, + "devDependencies": { + "@kevisual/types": "^0.0.6" + } +} diff --git a/packages/webshell/webshell-node/src/index.ts b/packages/webshell/webshell-node/src/index.ts new file mode 100644 index 0000000..3c76e65 --- /dev/null +++ b/packages/webshell/webshell-node/src/index.ts @@ -0,0 +1,20 @@ +import os from 'node:os'; +import pty, { IPty } from 'node-pty'; + +const shell: string = os.platform() === 'win32' ? 'powershell.exe' : 'bash'; +console.log(shell); +const ptyProcess: IPty = pty.spawn(shell, [], { + name: 'xterm-color', + cols: 80, + rows: 30, + cwd: process.env.HOME || '', + env: process.env as NodeJS.ProcessEnv, +}); + +ptyProcess.onData((data: string) => { + process.stdout.write(data); +}); + +ptyProcess.write('ls\r'); +ptyProcess.resize(100, 40); +ptyProcess.write('ls\r'); diff --git a/plugins/flex.js b/plugins/flex.js deleted file mode 100644 index 168657a..0000000 --- a/plugins/flex.js +++ /dev/null @@ -1,26 +0,0 @@ -const plugin = require('tailwindcss/plugin'); - -const flexCenterBaseStyles = { - display: 'flex', - 'justify-content': 'center', - 'align-items': 'center', -}; - -/** flex 居中 */ -const flexCenter = plugin(function ({ addUtilities }) { - addUtilities({ - /** flex 居中 */ - '.flex-row-center': flexCenterBaseStyles, - '.flex-col-center': { ...flexCenterBaseStyles, 'flex-direction': 'column' }, - '.layout-menu': {}, - '.scrollbar': {}, - '.card': {}, - '.card-title': {}, - '.card-subtitle': {}, - '.card-body': {}, - '.card-footer': {}, - '.card-key': {}, - }); -}); - -module.exports = flexCenter; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5a0f18f..4494de6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,22 +13,28 @@ importers: version: 5.6.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@emotion/react': specifier: ^11.14.0 - version: 11.14.0(@types/react@19.0.10)(react@19.0.0) + version: 11.14.0(@types/react@19.0.11)(react@19.0.0) '@emotion/styled': specifier: ^11.14.0 - version: 11.14.0(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react@19.0.0) + version: 11.14.0(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react@19.0.0) '@icon-park/react': specifier: ^1.4.2 version: 1.4.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@kevisual/center-components': + specifier: workspace:* + version: link:packages/components '@kevisual/codemirror': specifier: ^0.0.2 version: 0.0.2 '@kevisual/container': specifier: 1.0.0 - version: 1.0.0(@emotion/css@11.13.4)(@types/react@19.0.10)(crypto-js@4.2.0)(eventemitter3@5.0.1)(immer@10.1.1)(react@19.0.0)(rollup@4.34.7)(typescript@5.8.2) + version: 1.0.0(@emotion/css@11.13.4)(@types/react@19.0.11)(crypto-js@4.2.0)(eventemitter3@5.0.1)(immer@10.1.1)(react@19.0.0)(rollup@4.34.7)(typescript@5.8.2) '@kevisual/query': specifier: ^0.0.8 version: 0.0.8 + '@kevisual/resources': + specifier: workspace:* + version: link:packages/resources '@kevisual/system-ui': specifier: ^0.0.3 version: 0.0.3 @@ -39,20 +45,20 @@ importers: specifier: ^4.7.0 version: 4.7.0(monaco-editor@0.52.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mui/material': - specifier: ^6.4.7 - version: 6.4.7(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^6.4.8 + version: 6.4.8(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tailwindcss/vite': - specifier: ^4.0.12 - version: 4.0.12(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.39.0)(yaml@2.5.1)) + specifier: ^4.0.14 + version: 4.0.14(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.5.1)) '@uiw/react-textarea-code-editor': specifier: ^3.1.0 version: 3.1.0(@babel/runtime@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@xyflow/react': specifier: ^12.4.4 - version: 12.4.4(@types/react@19.0.10)(immer@10.1.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 12.4.4(@types/react@19.0.11)(immer@10.1.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) antd: - specifier: ^5.24.3 - version: 5.24.3(date-fns@4.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^5.24.4 + version: 5.24.4(date-fns@4.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) classnames: specifier: ^2.5.1 version: 2.5.1 @@ -65,6 +71,9 @@ importers: d3: specifier: ^7.9.0 version: 7.9.0 + dayjs: + specifier: ^1.11.13 + version: 1.11.13 eventemitter3: specifier: ^5.0.1 version: 5.0.1 @@ -78,8 +87,8 @@ importers: specifier: ^15.0.7 version: 15.0.7 nanoid: - specifier: ^5.1.3 - version: 5.1.3 + specifier: ^5.1.4 + version: 5.1.4 react: specifier: 19.0.0 version: 19.0.0 @@ -100,20 +109,20 @@ importers: version: 11.0.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) vite-plugin-tsconfig-paths: specifier: ^1.4.1 - version: 1.4.1(typescript@5.8.2)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.39.0)(yaml@2.5.1)) + version: 1.4.1(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.5.1)) zustand: specifier: ^5.0.3 - version: 5.0.3(@types/react@19.0.10)(immer@10.1.1)(react@19.0.0)(use-sync-external-store@1.2.2(react@19.0.0)) + version: 5.0.3(@types/react@19.0.11)(immer@10.1.1)(react@19.0.0)(use-sync-external-store@1.2.2(react@19.0.0)) devDependencies: '@eslint/js': specifier: ^9.22.0 version: 9.22.0 '@tailwindcss/aspect-ratio': specifier: ^0.4.2 - version: 0.4.2(tailwindcss@4.0.12) + version: 0.4.2(tailwindcss@4.0.14) '@tailwindcss/typography': specifier: ^0.5.16 - version: 0.5.16(tailwindcss@4.0.12) + version: 0.5.16(tailwindcss@4.0.14) '@types/d3': specifier: ^7.4.3 version: 7.4.3 @@ -127,14 +136,17 @@ importers: specifier: ^1.0.3 version: 1.0.3 '@types/react': - specifier: ^19.0.10 - version: 19.0.10 + specifier: ^19.0.11 + version: 19.0.11 '@types/react-dom': specifier: ^19.0.4 - version: 19.0.4(@types/react@19.0.10) + version: 19.0.4(@types/react@19.0.11) + '@vitejs/plugin-basic-ssl': + specifier: ^2.0.0 + version: 2.0.0(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.5.1)) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.39.0)(yaml@2.5.1)) + version: 4.3.4(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.5.1)) autoprefixer: specifier: ^10.4.21 version: 10.4.21(postcss@8.5.3) @@ -169,11 +181,11 @@ importers: specifier: ^3.0.2 version: 3.0.2 tailwindcss: - specifier: ^4.0.12 - version: 4.0.12 + specifier: ^4.0.14 + version: 4.0.14 tailwindcss-animate: specifier: ^1.0.7 - version: 1.0.7(tailwindcss@4.0.12) + version: 1.0.7(tailwindcss@4.0.14) typescript: specifier: ^5.8.2 version: 5.8.2 @@ -181,20 +193,20 @@ importers: specifier: ^8.26.1 version: 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2) vite: - specifier: ^6.2.1 - version: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.39.0)(yaml@2.5.1) + specifier: ^6.2.2 + version: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.5.1) packages/components: dependencies: '@emotion/react': specifier: ^11.14.0 - version: 11.14.0(@types/react@19.0.10)(react@19.0.0) + version: 11.14.0(@types/react@19.0.11)(react@19.0.0) '@emotion/styled': specifier: ^11.14.0 - version: 11.14.0(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react@19.0.0) + version: 11.14.0(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react@19.0.0) '@mui/material': specifier: ^6.4.7 - version: 6.4.7(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 6.4.7(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: specifier: 19.0.0 version: 19.0.0 @@ -213,10 +225,10 @@ importers: dependencies: '@emotion/react': specifier: ^11.14.0 - version: 11.14.0(@types/react@19.0.10)(react@19.0.0) + version: 11.14.0(@types/react@19.0.11)(react@19.0.0) '@emotion/styled': specifier: ^11.14.0 - version: 11.14.0(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react@19.0.0) + version: 11.14.0(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react@19.0.0) '@kevisual/center-components': specifier: workspace:* version: link:../components @@ -228,7 +240,7 @@ importers: version: 0.0.2(rollup@4.34.7) '@mui/material': specifier: ^6.4.8 - version: 6.4.8(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 6.4.8(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@types/lodash-es': specifier: ^4.17.12 version: 4.17.12 @@ -237,7 +249,7 @@ importers: version: 0.2.3 '@vitejs/plugin-basic-ssl': specifier: ^2.0.0 - version: 2.0.0(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.39.0)(yaml@2.5.1)) + version: 2.0.0(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.5.1)) dayjs: specifier: ^1.11.13 version: 1.11.13 @@ -276,7 +288,17 @@ importers: version: 11.0.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) zustand: specifier: ^5.0.3 - version: 5.0.3(@types/react@19.0.10)(immer@10.1.1)(react@19.0.0)(use-sync-external-store@1.2.2(react@19.0.0)) + version: 5.0.3(@types/react@19.0.11)(immer@10.1.1)(react@19.0.0)(use-sync-external-store@1.2.2(react@19.0.0)) + devDependencies: + '@kevisual/types': + specifier: ^0.0.6 + version: 0.0.6 + + packages/webshell/webshell-node: + dependencies: + node-pty: + specifier: ^1.0.0 + version: 1.0.0 devDependencies: '@kevisual/types': specifier: ^0.0.6 @@ -1137,77 +1159,77 @@ packages: peerDependencies: tailwindcss: '>=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1' - '@tailwindcss/node@4.0.12': - resolution: {integrity: sha512-a6J11K1Ztdln9OrGfoM75/hChYPcHYGNYimqciMrvKXRmmPaS8XZTHhdvb5a3glz4Kd4ZxE1MnuFE2c0fGGmtg==} + '@tailwindcss/node@4.0.14': + resolution: {integrity: sha512-Ux9NbFkKWYE4rfUFz6M5JFLs/GEYP6ysxT8uSyPn6aTbh2K3xDE1zz++eVK4Vwx799fzMF8CID9sdHn4j/Ab8w==} - '@tailwindcss/oxide-android-arm64@4.0.12': - resolution: {integrity: sha512-dAXCaemu3mHLXcA5GwGlQynX8n7tTdvn5i1zAxRvZ5iC9fWLl5bGnjZnzrQqT7ttxCvRwdVf3IHUnMVdDBO/kQ==} + '@tailwindcss/oxide-android-arm64@4.0.14': + resolution: {integrity: sha512-VBFKC2rFyfJ5J8lRwjy6ub3rgpY186kAcYgiUr8ArR8BAZzMruyeKJ6mlsD22Zp5ZLcPW/FXMasJiJBx0WsdQg==} engines: {node: '>= 10'} cpu: [arm64] os: [android] - '@tailwindcss/oxide-darwin-arm64@4.0.12': - resolution: {integrity: sha512-vPNI+TpJQ7sizselDXIJdYkx9Cu6JBdtmRWujw9pVIxW8uz3O2PjgGGzL/7A0sXI8XDjSyRChrUnEW9rQygmJQ==} + '@tailwindcss/oxide-darwin-arm64@4.0.14': + resolution: {integrity: sha512-U3XOwLrefGr2YQZ9DXasDSNWGPZBCh8F62+AExBEDMLDfvLLgI/HDzY8Oq8p/JtqkAY38sWPOaNnRwEGKU5Zmg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@tailwindcss/oxide-darwin-x64@4.0.12': - resolution: {integrity: sha512-RL/9jM41Fdq4Efr35C5wgLx98BirnrfwuD+zgMFK6Ir68HeOSqBhW9jsEeC7Y/JcGyPd3MEoJVIU4fAb7YLg7A==} + '@tailwindcss/oxide-darwin-x64@4.0.14': + resolution: {integrity: sha512-V5AjFuc3ndWGnOi1d379UsODb0TzAS2DYIP/lwEbfvafUaD2aNZIcbwJtYu2DQqO2+s/XBvDVA+w4yUyaewRwg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@tailwindcss/oxide-freebsd-x64@4.0.12': - resolution: {integrity: sha512-7WzWiax+LguJcMEimY0Q4sBLlFXu1tYxVka3+G2M9KmU/3m84J3jAIV4KZWnockbHsbb2XgrEjtlJKVwHQCoRA==} + '@tailwindcss/oxide-freebsd-x64@4.0.14': + resolution: {integrity: sha512-tXvtxbaZfcPfqBwW3f53lTcyH6EDT+1eT7yabwcfcxTs+8yTPqxsDUhrqe9MrnEzpNkd+R/QAjJapfd4tjWdLg==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] - '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.12': - resolution: {integrity: sha512-X9LRC7jjE1QlfIaBbXjY0PGeQP87lz5mEfLSVs2J1yRc9PSg1tEPS9NBqY4BU9v5toZgJgzKeaNltORyTs22TQ==} + '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.14': + resolution: {integrity: sha512-cSeLNWWqIWeSTmBntQvyY2/2gcLX8rkPFfDDTQVF8qbRcRMVPLxBvFVJyfSAYRNch6ZyVH2GI6dtgALOBDpdNA==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@tailwindcss/oxide-linux-arm64-gnu@4.0.12': - resolution: {integrity: sha512-i24IFNq2402zfDdoWKypXz0ZNS2G4NKaA82tgBlE2OhHIE+4mg2JDb5wVfyP6R+MCm5grgXvurcIcKWvo44QiQ==} + '@tailwindcss/oxide-linux-arm64-gnu@4.0.14': + resolution: {integrity: sha512-bwDWLBalXFMDItcSXzFk6y7QKvj6oFlaY9vM+agTlwFL1n1OhDHYLZkSjaYsh6KCeG0VB0r7H8PUJVOM1LRZyg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@tailwindcss/oxide-linux-arm64-musl@4.0.12': - resolution: {integrity: sha512-LmOdshJBfAGIBG0DdBWhI0n5LTMurnGGJCHcsm9F//ISfsHtCnnYIKgYQui5oOz1SUCkqsMGfkAzWyNKZqbGNw==} + '@tailwindcss/oxide-linux-arm64-musl@4.0.14': + resolution: {integrity: sha512-gVkJdnR/L6iIcGYXx64HGJRmlme2FGr/aZH0W6u4A3RgPMAb+6ELRLi+UBiH83RXBm9vwCfkIC/q8T51h8vUJQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@tailwindcss/oxide-linux-x64-gnu@4.0.12': - resolution: {integrity: sha512-OSK667qZRH30ep8RiHbZDQfqkXjnzKxdn0oRwWzgCO8CoTxV+MvIkd0BWdQbYtYuM1wrakARV/Hwp0eA/qzdbw==} + '@tailwindcss/oxide-linux-x64-gnu@4.0.14': + resolution: {integrity: sha512-EE+EQ+c6tTpzsg+LGO1uuusjXxYx0Q00JE5ubcIGfsogSKth8n8i2BcS2wYTQe4jXGs+BQs35l78BIPzgwLddw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@tailwindcss/oxide-linux-x64-musl@4.0.12': - resolution: {integrity: sha512-uylhWq6OWQ8krV8Jk+v0H/3AZKJW6xYMgNMyNnUbbYXWi7hIVdxRKNUB5UvrlC3RxtgsK5EAV2i1CWTRsNcAnA==} + '@tailwindcss/oxide-linux-x64-musl@4.0.14': + resolution: {integrity: sha512-KCCOzo+L6XPT0oUp2Jwh233ETRQ/F6cwUnMnR0FvMUCbkDAzHbcyOgpfuAtRa5HD0WbTbH4pVD+S0pn1EhNfbw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@tailwindcss/oxide-win32-arm64-msvc@4.0.12': - resolution: {integrity: sha512-XDLnhMoXZEEOir1LK43/gHHwK84V1GlV8+pAncUAIN2wloeD+nNciI9WRIY/BeFTqES22DhTIGoilSO39xDb2g==} + '@tailwindcss/oxide-win32-arm64-msvc@4.0.14': + resolution: {integrity: sha512-AHObFiFL9lNYcm3tZSPqa/cHGpM5wOrNmM2uOMoKppp+0Hom5uuyRh0QkOp7jftsHZdrZUpmoz0Mp6vhh2XtUg==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@tailwindcss/oxide-win32-x64-msvc@4.0.12': - resolution: {integrity: sha512-I/BbjCLpKDQucvtn6rFuYLst1nfFwSMYyPzkx/095RE+tuzk5+fwXuzQh7T3fIBTcbn82qH/sFka7yPGA50tLw==} + '@tailwindcss/oxide-win32-x64-msvc@4.0.14': + resolution: {integrity: sha512-rNXXMDJfCJLw/ZaFTOLOHoGULxyXfh2iXTGiChFiYTSgKBKQHIGEpV0yn5N25WGzJJ+VBnRjHzlmDqRV+d//oQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@tailwindcss/oxide@4.0.12': - resolution: {integrity: sha512-DWb+myvJB9xJwelwT9GHaMc1qJj6MDXRDR0CS+T8IdkejAtu8ctJAgV4r1drQJLPeS7mNwq2UHW2GWrudTf63A==} + '@tailwindcss/oxide@4.0.14': + resolution: {integrity: sha512-M8VCNyO/NBi5vJ2cRcI9u8w7Si+i76a7o1vveoGtbbjpEYJZYiyc7f2VGps/DqawO56l3tImIbq2OT/533jcrA==} engines: {node: '>= 10'} '@tailwindcss/typography@0.5.16': @@ -1215,8 +1237,8 @@ packages: peerDependencies: tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1' - '@tailwindcss/vite@4.0.12': - resolution: {integrity: sha512-JM3gp601UJiryIZ9R2bSqalzcOy15RCybQ1Q+BJqDEwVyo4LkWKeqQAcrpHapWXY31OJFTuOUVBFDWMhzHm2Bg==} + '@tailwindcss/vite@4.0.14': + resolution: {integrity: sha512-y69ztPTRFy+13EPS/7dEFVl7q2Goh1pQueVO8IfGeyqSpcx/joNJXFk0lLhMgUbF0VFJotwRSb9ZY7Xoq3r26Q==} peerDependencies: vite: ^5.2.0 || ^6 @@ -1383,8 +1405,8 @@ packages: peerDependencies: '@types/react': '*' - '@types/react@19.0.10': - resolution: {integrity: sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g==} + '@types/react@19.0.11': + resolution: {integrity: sha512-vrdxRZfo9ALXth6yPfV16PYTLZwsUWhVjjC+DkfE5t1suNSbBrWC9YqSuuxJZ8Ps6z1o2ycRpIqzZJIgklq4Tw==} '@types/unist@2.0.11': resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} @@ -1491,8 +1513,8 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - antd@5.24.3: - resolution: {integrity: sha512-H5fopyOVRAnegfwLuEdjhPR+l5z3/lo4aQyDsgIYhfmeBcRgN/XNkefVxzRHNuWHeYr9E9LbyxEQcMF91sy5lg==} + antd@5.24.4: + resolution: {integrity: sha512-s89666DcoWeekJFaIqbtz2vRlIvgPR28GuDYYGUpW1mVP08bV7HZAPBH5lFJKYNGKrN3dHbZGgRK5aNRD2iPHg==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' @@ -1808,10 +1830,9 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -2144,68 +2165,68 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - lightningcss-darwin-arm64@1.29.1: - resolution: {integrity: sha512-HtR5XJ5A0lvCqYAoSv2QdZZyoHNttBpa5EP9aNuzBQeKGfbyH5+UipLWvVzpP4Uml5ej4BYs5I9Lco9u1fECqw==} + lightningcss-darwin-arm64@1.29.2: + resolution: {integrity: sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] - lightningcss-darwin-x64@1.29.1: - resolution: {integrity: sha512-k33G9IzKUpHy/J/3+9MCO4e+PzaFblsgBjSGlpAaFikeBFm8B/CkO3cKU9oI4g+fjS2KlkLM/Bza9K/aw8wsNA==} + lightningcss-darwin-x64@1.29.2: + resolution: {integrity: sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] - lightningcss-freebsd-x64@1.29.1: - resolution: {integrity: sha512-0SUW22fv/8kln2LnIdOCmSuXnxgxVC276W5KLTwoehiO0hxkacBxjHOL5EtHD8BAXg2BvuhsJPmVMasvby3LiQ==} + lightningcss-freebsd-x64@1.29.2: + resolution: {integrity: sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] - lightningcss-linux-arm-gnueabihf@1.29.1: - resolution: {integrity: sha512-sD32pFvlR0kDlqsOZmYqH/68SqUMPNj+0pucGxToXZi4XZgZmqeX/NkxNKCPsswAXU3UeYgDSpGhu05eAufjDg==} + lightningcss-linux-arm-gnueabihf@1.29.2: + resolution: {integrity: sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] - lightningcss-linux-arm64-gnu@1.29.1: - resolution: {integrity: sha512-0+vClRIZ6mmJl/dxGuRsE197o1HDEeeRk6nzycSy2GofC2JsY4ifCRnvUWf/CUBQmlrvMzt6SMQNMSEu22csWQ==} + lightningcss-linux-arm64-gnu@1.29.2: + resolution: {integrity: sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - lightningcss-linux-arm64-musl@1.29.1: - resolution: {integrity: sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw==} + lightningcss-linux-arm64-musl@1.29.2: + resolution: {integrity: sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - lightningcss-linux-x64-gnu@1.29.1: - resolution: {integrity: sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw==} + lightningcss-linux-x64-gnu@1.29.2: + resolution: {integrity: sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - lightningcss-linux-x64-musl@1.29.1: - resolution: {integrity: sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw==} + lightningcss-linux-x64-musl@1.29.2: + resolution: {integrity: sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - lightningcss-win32-arm64-msvc@1.29.1: - resolution: {integrity: sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog==} + lightningcss-win32-arm64-msvc@1.29.2: + resolution: {integrity: sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] - lightningcss-win32-x64-msvc@1.29.1: - resolution: {integrity: sha512-NygcbThNBe4JElP+olyTI/doBNGJvLs3bFCRPdvuCcxZCcCZ71B858IHpdm7L1btZex0FvCmM17FK98Y9MRy1Q==} + lightningcss-win32-x64-msvc@1.29.2: + resolution: {integrity: sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] - lightningcss@1.29.1: - resolution: {integrity: sha512-FmGoeD4S05ewj+AkhTY+D+myDvXI6eL27FjHIjoyUkO/uw7WZD1fBVs0QxeYWa7E17CUHJaYX/RUGISCtcrG4Q==} + lightningcss@1.29.2: + resolution: {integrity: sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==} engines: {node: '>= 12.0.0'} lines-and-columns@1.2.4: @@ -2286,16 +2307,14 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + nan@2.22.2: + resolution: {integrity: sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==} + nanoid@3.3.8: resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanoid@5.1.3: - resolution: {integrity: sha512-zAbEOEr7u2CbxwoMRlz/pNSpRP0FdAU4pRaYunCdEezWohXFs+a0Xw7RfkKaezMsmSM1vttcLthJtwRnVtOfHQ==} - engines: {node: ^18 || >=20} - hasBin: true - nanoid@5.1.4: resolution: {integrity: sha512-GTFcMIDgR7tqji/LpSY8rtg464VnJl/j6ypoehYnuGb+Y8qZUdtKB8WVCXon0UEZgFDbuUxpIl//6FHLHgXSNA==} engines: {node: ^18 || >=20} @@ -2308,6 +2327,9 @@ packages: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} engines: {node: '>= 6.13.0'} + node-pty@1.0.0: + resolution: {integrity: sha512-wtBMWWS7dFZm/VgqElrTvtfMq4GzJ6+edFI0Y0zyzygUSZMgZdraDUMUhCIvkjhJjme15qWmbyJbtAx4ot4uZA==} + node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} @@ -2598,8 +2620,8 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' - rc-table@7.50.3: - resolution: {integrity: sha512-Z4/zNCzjv7f/XzPRecb+vJU0DJKdsYt4YRkDzNl4G05m7JmxrKGYC2KqN1Ew6jw2zJq7cxVv3z39qyZOHMuf7A==} + rc-table@7.50.4: + resolution: {integrity: sha512-Y+YuncnQqoS5e7yHvfvlv8BmCvwDYDX/2VixTBEhkMDk9itS9aBINp4nhzXFKiBP/frG4w0pS9d9Rgisl0T1Bw==} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' @@ -2896,8 +2918,8 @@ packages: peerDependencies: tailwindcss: '>=3.0.0 || insiders' - tailwindcss@4.0.12: - resolution: {integrity: sha512-bT0hJo91FtncsAMSsMzUkoo/iEU0Xs5xgFgVC9XmdM9bw5MhZuQFjPNl6wxAE0SiQF/YTZJa+PndGWYSDtuxAg==} + tailwindcss@4.0.14: + resolution: {integrity: sha512-92YT2dpt671tFiHH/e1ok9D987N9fHD5VWoly1CdPD/Cd1HMglvZwP3nx2yTj2lbXDAHt8QssZkxTLCCTNL+xw==} tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} @@ -3017,8 +3039,8 @@ packages: peerDependencies: vite: '*' - vite@6.2.1: - resolution: {integrity: sha512-n2GnqDb6XPhlt9B8olZPrgMD/es/Nd1RdChF6CBD/fHW6pUyUTt2sQW2fPRX5GiD9XEa6+8A6A4f2vT6pSsE7Q==} + vite@6.2.2: + resolution: {integrity: sha512-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -3381,7 +3403,7 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0)': + '@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 '@emotion/babel-plugin': 11.13.5 @@ -3393,7 +3415,7 @@ snapshots: hoist-non-react-statics: 3.3.2 react: 19.0.0 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.0.11 transitivePeerDependencies: - supports-color @@ -3407,18 +3429,18 @@ snapshots: '@emotion/sheet@1.4.0': {} - '@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react@19.0.0)': + '@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 '@emotion/babel-plugin': 11.13.5 '@emotion/is-prop-valid': 1.3.1 - '@emotion/react': 11.14.0(@types/react@19.0.10)(react@19.0.0) + '@emotion/react': 11.14.0(@types/react@19.0.11)(react@19.0.0) '@emotion/serialize': 1.3.3 '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.0.0) '@emotion/utils': 1.4.2 react: 19.0.0 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.0.11 transitivePeerDependencies: - supports-color @@ -3620,7 +3642,7 @@ snapshots: '@kevisual/codemirror@0.0.2': {} - '@kevisual/container@1.0.0(@emotion/css@11.13.4)(@types/react@19.0.10)(crypto-js@4.2.0)(eventemitter3@5.0.1)(immer@10.1.1)(react@19.0.0)(rollup@4.34.7)(typescript@5.8.2)': + '@kevisual/container@1.0.0(@emotion/css@11.13.4)(@types/react@19.0.11)(crypto-js@4.2.0)(eventemitter3@5.0.1)(immer@10.1.1)(react@19.0.0)(rollup@4.34.7)(typescript@5.8.2)': dependencies: '@emotion/css': 11.13.4 crypto-js: 4.2.0 @@ -3628,7 +3650,7 @@ snapshots: nanoid: 5.1.4 rollup-plugin-dts: 6.1.1(rollup@4.34.7)(typescript@5.8.2) scheduler: 0.23.2 - zustand: 4.5.5(@types/react@19.0.10)(immer@10.1.1)(react@19.0.0) + zustand: 4.5.5(@types/react@19.0.11)(immer@10.1.1)(react@19.0.0) transitivePeerDependencies: - '@types/react' - immer @@ -3696,15 +3718,15 @@ snapshots: '@mui/core-downloads-tracker@6.4.8': {} - '@mui/material@6.4.7(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mui/material@6.4.7(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 '@mui/core-downloads-tracker': 6.4.7 - '@mui/system': 6.4.7(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react@19.0.0) - '@mui/types': 7.2.21(@types/react@19.0.10) - '@mui/utils': 6.4.6(@types/react@19.0.10)(react@19.0.0) + '@mui/system': 6.4.7(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react@19.0.0) + '@mui/types': 7.2.21(@types/react@19.0.11) + '@mui/utils': 6.4.6(@types/react@19.0.11)(react@19.0.0) '@popperjs/core': 2.11.8 - '@types/react-transition-group': 4.4.12(@types/react@19.0.10) + '@types/react-transition-group': 4.4.12(@types/react@19.0.11) clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 @@ -3713,19 +3735,19 @@ snapshots: react-is: 19.0.0 react-transition-group: 4.4.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.0.10)(react@19.0.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react@19.0.0) - '@types/react': 19.0.10 + '@emotion/react': 11.14.0(@types/react@19.0.11)(react@19.0.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react@19.0.0) + '@types/react': 19.0.11 - '@mui/material@6.4.8(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mui/material@6.4.8(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 '@mui/core-downloads-tracker': 6.4.8 - '@mui/system': 6.4.8(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react@19.0.0) - '@mui/types': 7.2.24(@types/react@19.0.10) - '@mui/utils': 6.4.8(@types/react@19.0.10)(react@19.0.0) + '@mui/system': 6.4.8(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react@19.0.0) + '@mui/types': 7.2.24(@types/react@19.0.11) + '@mui/utils': 6.4.8(@types/react@19.0.11)(react@19.0.0) '@popperjs/core': 2.11.8 - '@types/react-transition-group': 4.4.12(@types/react@19.0.10) + '@types/react-transition-group': 4.4.12(@types/react@19.0.11) clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 @@ -3734,29 +3756,29 @@ snapshots: react-is: 19.0.0 react-transition-group: 4.4.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.0.10)(react@19.0.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react@19.0.0) - '@types/react': 19.0.10 + '@emotion/react': 11.14.0(@types/react@19.0.11)(react@19.0.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react@19.0.0) + '@types/react': 19.0.11 - '@mui/private-theming@6.4.6(@types/react@19.0.10)(react@19.0.0)': + '@mui/private-theming@6.4.6(@types/react@19.0.11)(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 - '@mui/utils': 6.4.6(@types/react@19.0.10)(react@19.0.0) + '@mui/utils': 6.4.6(@types/react@19.0.11)(react@19.0.0) prop-types: 15.8.1 react: 19.0.0 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.0.11 - '@mui/private-theming@6.4.8(@types/react@19.0.10)(react@19.0.0)': + '@mui/private-theming@6.4.8(@types/react@19.0.11)(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 - '@mui/utils': 6.4.8(@types/react@19.0.10)(react@19.0.0) + '@mui/utils': 6.4.8(@types/react@19.0.11)(react@19.0.0) prop-types: 15.8.1 react: 19.0.0 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.0.11 - '@mui/styled-engine@6.4.6(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': + '@mui/styled-engine@6.4.6(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react@19.0.0))(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 '@emotion/cache': 11.14.0 @@ -3766,10 +3788,10 @@ snapshots: prop-types: 15.8.1 react: 19.0.0 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.0.10)(react@19.0.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react@19.0.0) + '@emotion/react': 11.14.0(@types/react@19.0.11)(react@19.0.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react@19.0.0) - '@mui/styled-engine@6.4.8(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': + '@mui/styled-engine@6.4.8(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react@19.0.0))(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 '@emotion/cache': 11.14.0 @@ -3779,72 +3801,72 @@ snapshots: prop-types: 15.8.1 react: 19.0.0 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.0.10)(react@19.0.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react@19.0.0) + '@emotion/react': 11.14.0(@types/react@19.0.11)(react@19.0.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react@19.0.0) - '@mui/system@6.4.7(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react@19.0.0)': + '@mui/system@6.4.7(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 - '@mui/private-theming': 6.4.6(@types/react@19.0.10)(react@19.0.0) - '@mui/styled-engine': 6.4.6(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - '@mui/types': 7.2.21(@types/react@19.0.10) - '@mui/utils': 6.4.6(@types/react@19.0.10)(react@19.0.0) + '@mui/private-theming': 6.4.6(@types/react@19.0.11)(react@19.0.0) + '@mui/styled-engine': 6.4.6(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react@19.0.0))(react@19.0.0) + '@mui/types': 7.2.21(@types/react@19.0.11) + '@mui/utils': 6.4.6(@types/react@19.0.11)(react@19.0.0) clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 react: 19.0.0 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.0.10)(react@19.0.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react@19.0.0) - '@types/react': 19.0.10 + '@emotion/react': 11.14.0(@types/react@19.0.11)(react@19.0.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react@19.0.0) + '@types/react': 19.0.11 - '@mui/system@6.4.8(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react@19.0.0)': + '@mui/system@6.4.8(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 - '@mui/private-theming': 6.4.8(@types/react@19.0.10)(react@19.0.0) - '@mui/styled-engine': 6.4.8(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - '@mui/types': 7.2.24(@types/react@19.0.10) - '@mui/utils': 6.4.8(@types/react@19.0.10)(react@19.0.0) + '@mui/private-theming': 6.4.8(@types/react@19.0.11)(react@19.0.0) + '@mui/styled-engine': 6.4.8(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react@19.0.0))(react@19.0.0) + '@mui/types': 7.2.24(@types/react@19.0.11) + '@mui/utils': 6.4.8(@types/react@19.0.11)(react@19.0.0) clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 react: 19.0.0 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.0.10)(react@19.0.0) - '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.10)(react@19.0.0))(@types/react@19.0.10)(react@19.0.0) - '@types/react': 19.0.10 + '@emotion/react': 11.14.0(@types/react@19.0.11)(react@19.0.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.0.11)(react@19.0.0))(@types/react@19.0.11)(react@19.0.0) + '@types/react': 19.0.11 - '@mui/types@7.2.21(@types/react@19.0.10)': + '@mui/types@7.2.21(@types/react@19.0.11)': optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.0.11 - '@mui/types@7.2.24(@types/react@19.0.10)': + '@mui/types@7.2.24(@types/react@19.0.11)': optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.0.11 - '@mui/utils@6.4.6(@types/react@19.0.10)(react@19.0.0)': + '@mui/utils@6.4.6(@types/react@19.0.11)(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 - '@mui/types': 7.2.21(@types/react@19.0.10) + '@mui/types': 7.2.21(@types/react@19.0.11) '@types/prop-types': 15.7.14 clsx: 2.1.1 prop-types: 15.8.1 react: 19.0.0 react-is: 19.0.0 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.0.11 - '@mui/utils@6.4.8(@types/react@19.0.10)(react@19.0.0)': + '@mui/utils@6.4.8(@types/react@19.0.11)(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 - '@mui/types': 7.2.24(@types/react@19.0.10) + '@mui/types': 7.2.24(@types/react@19.0.11) '@types/prop-types': 15.7.14 clsx: 2.1.1 prop-types: 15.8.1 react: 19.0.0 react-is: 19.0.0 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.0.11 '@nodelib/fs.scandir@2.1.5': dependencies: @@ -3994,78 +4016,78 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.34.7': optional: true - '@tailwindcss/aspect-ratio@0.4.2(tailwindcss@4.0.12)': + '@tailwindcss/aspect-ratio@0.4.2(tailwindcss@4.0.14)': dependencies: - tailwindcss: 4.0.12 + tailwindcss: 4.0.14 - '@tailwindcss/node@4.0.12': + '@tailwindcss/node@4.0.14': dependencies: enhanced-resolve: 5.18.1 jiti: 2.4.2 - tailwindcss: 4.0.12 + tailwindcss: 4.0.14 - '@tailwindcss/oxide-android-arm64@4.0.12': + '@tailwindcss/oxide-android-arm64@4.0.14': optional: true - '@tailwindcss/oxide-darwin-arm64@4.0.12': + '@tailwindcss/oxide-darwin-arm64@4.0.14': optional: true - '@tailwindcss/oxide-darwin-x64@4.0.12': + '@tailwindcss/oxide-darwin-x64@4.0.14': optional: true - '@tailwindcss/oxide-freebsd-x64@4.0.12': + '@tailwindcss/oxide-freebsd-x64@4.0.14': optional: true - '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.12': + '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.14': optional: true - '@tailwindcss/oxide-linux-arm64-gnu@4.0.12': + '@tailwindcss/oxide-linux-arm64-gnu@4.0.14': optional: true - '@tailwindcss/oxide-linux-arm64-musl@4.0.12': + '@tailwindcss/oxide-linux-arm64-musl@4.0.14': optional: true - '@tailwindcss/oxide-linux-x64-gnu@4.0.12': + '@tailwindcss/oxide-linux-x64-gnu@4.0.14': optional: true - '@tailwindcss/oxide-linux-x64-musl@4.0.12': + '@tailwindcss/oxide-linux-x64-musl@4.0.14': optional: true - '@tailwindcss/oxide-win32-arm64-msvc@4.0.12': + '@tailwindcss/oxide-win32-arm64-msvc@4.0.14': optional: true - '@tailwindcss/oxide-win32-x64-msvc@4.0.12': + '@tailwindcss/oxide-win32-x64-msvc@4.0.14': optional: true - '@tailwindcss/oxide@4.0.12': + '@tailwindcss/oxide@4.0.14': optionalDependencies: - '@tailwindcss/oxide-android-arm64': 4.0.12 - '@tailwindcss/oxide-darwin-arm64': 4.0.12 - '@tailwindcss/oxide-darwin-x64': 4.0.12 - '@tailwindcss/oxide-freebsd-x64': 4.0.12 - '@tailwindcss/oxide-linux-arm-gnueabihf': 4.0.12 - '@tailwindcss/oxide-linux-arm64-gnu': 4.0.12 - '@tailwindcss/oxide-linux-arm64-musl': 4.0.12 - '@tailwindcss/oxide-linux-x64-gnu': 4.0.12 - '@tailwindcss/oxide-linux-x64-musl': 4.0.12 - '@tailwindcss/oxide-win32-arm64-msvc': 4.0.12 - '@tailwindcss/oxide-win32-x64-msvc': 4.0.12 + '@tailwindcss/oxide-android-arm64': 4.0.14 + '@tailwindcss/oxide-darwin-arm64': 4.0.14 + '@tailwindcss/oxide-darwin-x64': 4.0.14 + '@tailwindcss/oxide-freebsd-x64': 4.0.14 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.0.14 + '@tailwindcss/oxide-linux-arm64-gnu': 4.0.14 + '@tailwindcss/oxide-linux-arm64-musl': 4.0.14 + '@tailwindcss/oxide-linux-x64-gnu': 4.0.14 + '@tailwindcss/oxide-linux-x64-musl': 4.0.14 + '@tailwindcss/oxide-win32-arm64-msvc': 4.0.14 + '@tailwindcss/oxide-win32-x64-msvc': 4.0.14 - '@tailwindcss/typography@0.5.16(tailwindcss@4.0.12)': + '@tailwindcss/typography@0.5.16(tailwindcss@4.0.14)': dependencies: lodash.castarray: 4.4.0 lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 postcss-selector-parser: 6.0.10 - tailwindcss: 4.0.12 + tailwindcss: 4.0.14 - '@tailwindcss/vite@4.0.12(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.39.0)(yaml@2.5.1))': + '@tailwindcss/vite@4.0.14(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.5.1))': dependencies: - '@tailwindcss/node': 4.0.12 - '@tailwindcss/oxide': 4.0.12 - lightningcss: 1.29.1 - tailwindcss: 4.0.12 - vite: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.39.0)(yaml@2.5.1) + '@tailwindcss/node': 4.0.14 + '@tailwindcss/oxide': 4.0.14 + lightningcss: 1.29.2 + tailwindcss: 4.0.14 + vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.5.1) '@types/babel__core@7.20.5': dependencies: @@ -4249,15 +4271,15 @@ snapshots: '@types/prop-types@15.7.14': {} - '@types/react-dom@19.0.4(@types/react@19.0.10)': + '@types/react-dom@19.0.4(@types/react@19.0.11)': dependencies: - '@types/react': 19.0.10 + '@types/react': 19.0.11 - '@types/react-transition-group@4.4.12(@types/react@19.0.10)': + '@types/react-transition-group@4.4.12(@types/react@19.0.11)': dependencies: - '@types/react': 19.0.10 + '@types/react': 19.0.11 - '@types/react@19.0.10': + '@types/react@19.0.11': dependencies: csstype: 3.1.3 @@ -4352,28 +4374,28 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-basic-ssl@2.0.0(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.39.0)(yaml@2.5.1))': + '@vitejs/plugin-basic-ssl@2.0.0(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.5.1))': dependencies: - vite: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.39.0)(yaml@2.5.1) + vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.5.1) - '@vitejs/plugin-react@4.3.4(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.39.0)(yaml@2.5.1))': + '@vitejs/plugin-react@4.3.4(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.5.1))': dependencies: '@babel/core': 7.26.0 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.39.0)(yaml@2.5.1) + vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.5.1) transitivePeerDependencies: - supports-color - '@xyflow/react@12.4.4(@types/react@19.0.10)(immer@10.1.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@xyflow/react@12.4.4(@types/react@19.0.11)(immer@10.1.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@xyflow/system': 0.0.52 classcat: 5.0.5 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - zustand: 4.5.5(@types/react@19.0.10)(immer@10.1.1)(react@19.0.0) + zustand: 4.5.5(@types/react@19.0.11)(immer@10.1.1)(react@19.0.0) transitivePeerDependencies: - '@types/react' - immer @@ -4410,7 +4432,7 @@ snapshots: dependencies: color-convert: 2.0.1 - antd@5.24.3(date-fns@4.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + antd@5.24.4(date-fns@4.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@ant-design/colors': 7.2.0 '@ant-design/cssinjs': 1.23.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -4451,7 +4473,7 @@ snapshots: rc-slider: 11.1.8(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-steps: 6.0.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-switch: 4.1.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - rc-table: 7.50.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-table: 7.50.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-tabs: 15.5.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-textarea: 1.9.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) rc-tooltip: 6.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -4785,7 +4807,7 @@ snapshots: dequal@2.0.3: {} - detect-libc@1.0.3: {} + detect-libc@2.0.3: {} devlop@1.1.0: dependencies: @@ -5158,50 +5180,50 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - lightningcss-darwin-arm64@1.29.1: + lightningcss-darwin-arm64@1.29.2: optional: true - lightningcss-darwin-x64@1.29.1: + lightningcss-darwin-x64@1.29.2: optional: true - lightningcss-freebsd-x64@1.29.1: + lightningcss-freebsd-x64@1.29.2: optional: true - lightningcss-linux-arm-gnueabihf@1.29.1: + lightningcss-linux-arm-gnueabihf@1.29.2: optional: true - lightningcss-linux-arm64-gnu@1.29.1: + lightningcss-linux-arm64-gnu@1.29.2: optional: true - lightningcss-linux-arm64-musl@1.29.1: + lightningcss-linux-arm64-musl@1.29.2: optional: true - lightningcss-linux-x64-gnu@1.29.1: + lightningcss-linux-x64-gnu@1.29.2: optional: true - lightningcss-linux-x64-musl@1.29.1: + lightningcss-linux-x64-musl@1.29.2: optional: true - lightningcss-win32-arm64-msvc@1.29.1: + lightningcss-win32-arm64-msvc@1.29.2: optional: true - lightningcss-win32-x64-msvc@1.29.1: + lightningcss-win32-x64-msvc@1.29.2: optional: true - lightningcss@1.29.1: + lightningcss@1.29.2: dependencies: - detect-libc: 1.0.3 + detect-libc: 2.0.3 optionalDependencies: - lightningcss-darwin-arm64: 1.29.1 - lightningcss-darwin-x64: 1.29.1 - lightningcss-freebsd-x64: 1.29.1 - lightningcss-linux-arm-gnueabihf: 1.29.1 - lightningcss-linux-arm64-gnu: 1.29.1 - lightningcss-linux-arm64-musl: 1.29.1 - lightningcss-linux-x64-gnu: 1.29.1 - lightningcss-linux-x64-musl: 1.29.1 - lightningcss-win32-arm64-msvc: 1.29.1 - lightningcss-win32-x64-msvc: 1.29.1 + lightningcss-darwin-arm64: 1.29.2 + lightningcss-darwin-x64: 1.29.2 + lightningcss-freebsd-x64: 1.29.2 + lightningcss-linux-arm-gnueabihf: 1.29.2 + lightningcss-linux-arm64-gnu: 1.29.2 + lightningcss-linux-arm64-musl: 1.29.2 + lightningcss-linux-x64-gnu: 1.29.2 + lightningcss-linux-x64-musl: 1.29.2 + lightningcss-win32-arm64-msvc: 1.29.2 + lightningcss-win32-x64-msvc: 1.29.2 lines-and-columns@1.2.4: {} @@ -5283,9 +5305,9 @@ snapshots: ms@2.1.3: {} - nanoid@3.3.8: {} + nan@2.22.2: {} - nanoid@5.1.3: {} + nanoid@3.3.8: {} nanoid@5.1.4: {} @@ -5293,6 +5315,10 @@ snapshots: node-forge@1.3.1: {} + node-pty@1.0.0: + dependencies: + nan: 2.22.2 + node-releases@2.0.19: {} normalize-range@0.1.2: {} @@ -5640,7 +5666,7 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - rc-table@7.50.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + rc-table@7.50.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 '@rc-component/context': 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -5977,11 +6003,11 @@ snapshots: tailwind-merge@3.0.2: {} - tailwindcss-animate@1.0.7(tailwindcss@4.0.12): + tailwindcss-animate@1.0.7(tailwindcss@4.0.14): dependencies: - tailwindcss: 4.0.12 + tailwindcss: 4.0.14 - tailwindcss@4.0.12: {} + tailwindcss@4.0.14: {} tapable@2.2.1: {} @@ -6112,14 +6138,14 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-plugin-tsconfig-paths@1.4.1(typescript@5.8.2)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.39.0)(yaml@2.5.1)): + vite-plugin-tsconfig-paths@1.4.1(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.5.1)): dependencies: typescript-paths: 1.5.1(typescript@5.8.2) - vite: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.39.0)(yaml@2.5.1) + vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.5.1) transitivePeerDependencies: - typescript - vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.39.0)(yaml@2.5.1): + vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.5.1): dependencies: esbuild: 0.25.0 postcss: 8.5.3 @@ -6128,7 +6154,7 @@ snapshots: '@types/node': 22.13.10 fsevents: 2.3.3 jiti: 2.4.2 - lightningcss: 1.29.1 + lightningcss: 1.29.2 terser: 5.39.0 yaml: 2.5.1 @@ -6151,17 +6177,17 @@ snapshots: yocto-queue@0.1.0: {} - zustand@4.5.5(@types/react@19.0.10)(immer@10.1.1)(react@19.0.0): + zustand@4.5.5(@types/react@19.0.11)(immer@10.1.1)(react@19.0.0): dependencies: use-sync-external-store: 1.2.2(react@19.0.0) optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.0.11 immer: 10.1.1 react: 19.0.0 - zustand@5.0.3(@types/react@19.0.10)(immer@10.1.1)(react@19.0.0)(use-sync-external-store@1.2.2(react@19.0.0)): + zustand@5.0.3(@types/react@19.0.11)(immer@10.1.1)(react@19.0.0)(use-sync-external-store@1.2.2(react@19.0.0)): optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.0.11 immer: 10.1.1 react: 19.0.0 use-sync-external-store: 1.2.2(react@19.0.0) diff --git a/src/App.tsx b/src/App.tsx index 50c16cc..06dc1dc 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,5 +1,4 @@ import { BrowserRouter as Router, Route, Routes } from 'react-router-dom'; -import { ConfigProvider } from 'antd'; import { App as ContainerApp } from './pages/container'; import { App as MapApp } from './pages/map'; import { App as UserApp } from './pages/user'; @@ -8,30 +7,72 @@ import { App as FileApp } from './pages/file'; import { App as OrgApp } from './pages/org'; import { basename } from './modules/basename'; import { Redirect } from './modules/Redirect'; +import { CustomThemeProvider } from '@kevisual/center-components/theme/index.tsx'; +import { useTheme } from '@mui/material/styles'; +import { ToastContainer } from 'react-toastify'; +// import 'react-toastify/dist/ReactToastify.css'; +import dayjs from 'dayjs'; +import 'dayjs/locale/zh-cn'; +import zhCN from 'antd/locale/zh_CN'; +import ConfigProvider from 'antd/es/config-provider'; + +const AntProvider = ({ children }: { children: React.ReactNode }) => { + const theme = useTheme(); + const primaryColor = theme.palette.primary.main; + const secondaryColor = theme.palette.secondary.main; + return ( + + {children} + + ); +}; export const App = () => { return ( -
- - - - } /> - } /> - } /> - } /> - } /> - } /> - } /> +
+ + +
+ + + } /> + } /> + } /> + } /> + } /> + } /> + } /> - 404
} /> - 404
} /> -
-
-
-
+ 404
} /> + 404} /> + + + + +
+ + ); }; diff --git a/src/assets/styles.css b/src/assets/styles.css index d4594d4..00294ef 100644 --- a/src/assets/styles.css +++ b/src/assets/styles.css @@ -1,33 +1 @@ @import './fonts/font.css'; - -.scrollbar { - overflow: auto; - /* 整个滚动条 */ - &::-webkit-scrollbar { - width: 3px; - height: 3px; - } - - /* 滚动条有滑块的轨道部分 */ - &::-webkit-scrollbar-track-piece { - background-color: transparent; - border-radius: 1px; - } - - /* 滚动条滑块(竖向:vertical 横向:horizontal) */ - &::-webkit-scrollbar-thumb { - cursor: pointer; - background-color: #c1c1c1; - border-radius: 5px; - } - - /* 滚动条滑块hover */ - &::-webkit-scrollbar-thumb:hover { - background-color: #999999; - } - - /* 同时有垂直和水平滚动条时交汇的部分 */ - &::-webkit-scrollbar-corner { - display: block; /* 修复交汇时出现的白块 */ - } -} diff --git a/src/globals.css b/src/globals.css index 52fdce3..44a30e6 100644 --- a/src/globals.css +++ b/src/globals.css @@ -1,64 +1,124 @@ -@config "../tailwind.config.js"; -@import "tailwindcss"; +@import 'tailwindcss'; +@import './assets/styles.css'; +@import './index.css'; -@layer base { - html, - body { - width: 100%; - height: 100%; - font-size: 16px; - font-family: 'Montserrat', sans-serif; - } - h1 { - @apply text-2xl font-bold; - } - h2 { - @apply text-xl font-bold; - } - h3 { - @apply text-lg font-bold; +@theme { + --color-primary: white; + --color-secondary: #14171a; +} +html, +body { + width: 100%; + height: 100%; + font-size: 16px; + font-family: 'Montserrat', sans-serif; +} +h1 { + @apply text-2xl font-bold; +} +h2 { + @apply text-xl font-bold; +} +h3 { + @apply text-lg font-bold; +} +@utility card { + @apply bg-white shadow-md rounded-lg p-4; +} +@utility card-title { + @apply text-lg font-bold; +} +@utility card-subtitle { + @apply text-sm text-gray-500; +} +@utility card-description { + @apply text-gray-700 break-words; +} +@utility card-code { + @apply bg-gray-100 p-2; +} +@utility card-body { + @apply text-gray-700; +} +@utility card-key { + @apply text-xs text-gray-400; +} +@utility card-footer { + @apply text-sm text-gray-500; +} +@utility btn { + @apply bg-blue-500 text-white font-bold py-2 px-4 rounded-sm; +} + +@utility layout-menu { + @apply bg-gray-900 p-2 text-white flex justify-between h-12; + -webkit-app-region: drag; +} +@utility no-drag { + -webkit-app-region: no-drag; +} +@utility bg-custom-blue { + background-color: #3490dc; +} + +@utility scrollbar-hidden { + &::-webkit-scrollbar { + display: none; } } -@layer components { - .btn { - @apply bg-blue-500 text-white font-bold py-2 px-4 rounded-sm; - } - .card { - @apply bg-white shadow-md rounded-lg p-4; - .card-title { - @apply text-lg font-bold; - } - .card-subtitle { - @apply text-sm text-gray-500; - } - .card-description { - @apply text-gray-700 break-words; - } - .card-code { - @apply bg-gray-100 p-2; - } - .card-body { - @apply text-gray-700; - } - .card-key { - @apply text-xs text-gray-400; - } - .card-footer { - @apply text-sm text-gray-500; - } - } +/* font-family */ +@utility font-family-mon { + font-family: 'Montserrat', sans-serif; +} +@utility font-family-rob { + font-family: 'Roboto', sans-serif; +} +@utility font-family-int { + font-family: 'Inter', sans-serif; +} +@utility font-family-orb { + font-family: 'Orbitron', sans-serif; +} +@utility font-family-din { + font-family: 'DIN', sans-serif; } -@layer utilities { - .layout-menu { - @apply bg-gray-900 p-2 text-white flex justify-between h-12; - -webkit-app-region: drag; +@utility flex-row-center { + @apply flex flex-row items-center justify-center; +} +@utility flex-col-center { + @apply flex flex-col items-center justify-center; +} + +@utility scrollbar { + overflow: auto; + /* 整个滚动条 */ + &::-webkit-scrollbar { + width: 3px; + height: 3px; } - .no-drag { - -webkit-app-region: no-drag; + + /* 滚动条有滑块的轨道部分 */ + &::-webkit-scrollbar-track-piece { + background-color: transparent; + border-radius: 1px; } - .bg-custom-blue { - background-color: #3490dc; + + /* 滚动条滑块(竖向:vertical 横向:horizontal) */ + &::-webkit-scrollbar-thumb { + cursor: pointer; + background-color: #c1c1c1; + border-radius: 5px; + } + + /* 滚动条滑块hover */ + &::-webkit-scrollbar-thumb:hover { + background-color: #999999; + } + + /* 同时有垂直和水平滚动条时交汇的部分 */ + &::-webkit-scrollbar-corner { + display: block; /* 修复交汇时出现的白块 */ } } diff --git a/src/index.css b/src/index.css index e1bf7ee..f57f877 100644 --- a/src/index.css +++ b/src/index.css @@ -44,4 +44,4 @@ body { } .kv-container.active { background: #ebe9e987 !important; -} \ No newline at end of file +} diff --git a/src/main.tsx b/src/main.tsx index e08a05f..e22f459 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -1,7 +1,5 @@ import { createRoot } from 'react-dom/client'; import { App } from './App.tsx'; import './globals.css'; -import './index.css'; -import './assets/styles.css'; createRoot(document.getElementById('root')!).render(); diff --git a/src/modules/query.ts b/src/modules/query.ts index 32111c9..6a4b746 100644 --- a/src/modules/query.ts +++ b/src/modules/query.ts @@ -25,7 +25,7 @@ query.afterResponse = async (res) => { }; export const request = query.post; -export const ws = query.qws.ws; +export const ws = query.qws?.ws || new WebSocket(query.qws?.url); type Store = { connected: boolean; setConnected: (connected: boolean) => void; diff --git a/src/pages/container/store/index.ts b/src/pages/container/store/index.ts index 8393227..b0d11a2 100644 --- a/src/pages/container/store/index.ts +++ b/src/pages/container/store/index.ts @@ -1,6 +1,6 @@ import { create } from 'zustand'; import { query } from '@/modules'; -import { message } from 'antd'; +import { message } from '@/modules/message'; type ContainerStore = { showEdit: boolean; setShowEdit: (showEdit: boolean) => void; diff --git a/src/pages/file/edit/List.tsx b/src/pages/file/edit/List.tsx index 4cfebad..e893d39 100644 --- a/src/pages/file/edit/List.tsx +++ b/src/pages/file/edit/List.tsx @@ -1,11 +1,16 @@ import { useShallow } from 'zustand/react/shallow'; import { useFileStore } from '../store'; -import { useEffect } from 'react'; +import { useEffect, useMemo, useRef, useState } from 'react'; import path from 'path-browserify'; import prettyBytes from 'pretty-bytes'; import clsx from 'clsx'; import { isObjectNull } from '@/utils/is-null'; -import { FileOutlined, FolderOutlined } from '@ant-design/icons'; +import FileOutlined from '@ant-design/icons/FileOutlined'; +import FolderOutlined from '@ant-design/icons/FolderOutlined'; +import { IconButton } from '@kevisual/center-components/button/index.tsx'; +import { render, unmount } from '@kevisual/resources/pages/Bootstrap.tsx'; +import UploadOutlined from '@ant-design/icons/lib/icons/UploadOutlined'; +import { Tooltip } from '@mui/material'; export const CardPath = ({ children }: any) => { const userAppStore = useFileStore( useShallow((state) => { @@ -58,6 +63,8 @@ export const CardPath = ({ children }: any) => { ); }; export const List = () => { + const [tab, setTab] = useState<'folder' | 'upload'>('folder'); + const uploadRef = useRef(null); const userAppStore = useFileStore( useShallow((state) => { return { @@ -77,9 +84,9 @@ export const List = () => { userAppStore.setPath(prefix); userAppStore.getList(); }; - return ( -
-
+ const allFolderApp = useMemo(() => { + return ( + <>
{userAppStore.list.map((item, index) => { @@ -122,6 +129,37 @@ export const List = () => {
{!isObjectNull(userAppStore.file) && JSON.stringify(userAppStore.file, null, 2)}
+ + ); + }, [userAppStore.list, userAppStore.path]); + + useEffect(() => { + if (tab === 'upload') { + render(uploadRef.current!); + } else { + uploadRef.current && unmount(uploadRef.current!); + } + console.log('unmount', tab, uploadRef.current); + }, [tab]); + return ( +
+
+
+ + setTab('folder')}> + + + + + setTab('upload')}> + + + +
+
+
+ {tab === 'folder' &&
{allFolderApp}
} + {tab === 'upload' &&
}
); diff --git a/tailwind.config.js b/tailwind.config.js deleted file mode 100644 index 06df41c..0000000 --- a/tailwind.config.js +++ /dev/null @@ -1,43 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -export default { - darkMode: ['class'], - mod: 'jit', - content: ['./src/**/*.{ts,tsx}', './node_modules/@abearxiong/flows/**/*.{ts,tsx}', './src/**/*.css'], - plugins: [ - require('@tailwindcss/aspect-ratio'), // - require('@tailwindcss/typography'), - require('tailwindcss-animate'), - require('./plugins/flex'), - ], - theme: { - extend: { - fontFamily: { - mon: ['Montserrat', 'sans-serif'], // 定义自定义字体族 - rob: ['Roboto', 'sans-serif'], - int: ['Inter', 'sans-serif'], - orb: ['Orbitron', 'sans-serif'], - din: ['DIN', 'sans-serif'], - }, - }, - screen: { - sm: '640px', - // => @media (min-width: 640px) { ... } - - md: '768px', - // => @media (min-width: 768px) { ... } - - lg: '1024px', - // => @media (min-width: 1024px) { ... } - - xl: '1280px', - // => @media (min-width: 1280px) { ... } - - '2xl': '1536px', - // => @media (min-width: 1536px) { ... } - '3xl': '1920px', - // => @media (min-width: 1920) { ... } - '4xl': '2560px', - // => @media (min-width: 2560) { ... } - }, - }, -}; diff --git a/vite.config.ts b/vite.config.ts index cab0e42..995f04c 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -2,9 +2,9 @@ import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; import path from 'path'; import tailwindcss from '@tailwindcss/vite'; +import basicSsl from '@vitejs/plugin-basic-ssl'; const isDev = process.env.NODE_ENV === 'development'; -const isKV = process.env.VITE_USE_KV === 'true'; // use kevisual service as backend const unamiPlugin = { name: 'html-transform', transformIndexHtml(html: string) { @@ -14,30 +14,38 @@ const unamiPlugin = { ); }, }; -const plugins = []; +const plugins: any[] = [basicSsl()]; if (!isDev) { plugins.push(unamiPlugin); } + plugins.push(tailwindcss()); +const devBackend = 'https://kevisual.silkyai.cn'; +const meBackend = 'https://kevisual.xiongxiao.me'; +// const backend = isDev ? devBackend : meBackend; +const backendWss = devBackend.replace(/^https:/, 'wss:'); +const backend = devBackend; let proxy = {}; -if (isKV) { +if (true) { proxy = { '/api': { - target: 'https://kevisual.xiongxiao.me', + target: backend, changeOrigin: true, + ws: true, rewrite: (path: any) => path.replace(/^\/api/, '/api'), }, '/api/router': { - target: 'wss://kevisual.xiongxiao.me', + target: backendWss, changeOrigin: true, ws: true, rewriteWsOrigin: true, rewrite: (path: any) => path.replace(/^\/api/, '/api'), }, - '/resources': { - target: 'https://kevisual.xiongxiao.me', + '/user/login': { + target: backend, changeOrigin: true, - rewrite: (path: any) => path.replace(/^\/resources/, '/resources'), + cookieDomainRewrite: 'localhost', + rewrite: (path: any) => path.replace(/^\/user/, '/user'), }, }; } @@ -66,22 +74,17 @@ export default defineConfig({ changeOrigin: true, }, '/api': { - target: 'http://localhost:4005', + target: 'https://localhost:4005', changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, '/api'), }, '/api/router': { - target: 'ws://localhost:4005', + target: 'wss://localhost:4005', changeOrigin: true, ws: true, rewriteWsOrigin: true, rewrite: (path) => path.replace(/^\/api/, '/api'), }, - '/resources': { - target: 'https://kevisual.xiongxiao.me', - changeOrigin: true, - rewrite: (path) => path.replace(/^\/resources/, '/resources'), - }, ...proxy, }, },