diff --git a/apps/web-antd/src/router/routes/modules/vben.ts b/apps/web-antd/src/router/routes/modules/vben.ts deleted file mode 100644 index 96f980d10..000000000 --- a/apps/web-antd/src/router/routes/modules/vben.ts +++ /dev/null @@ -1,81 +0,0 @@ -import type { RouteRecordRaw } from 'vue-router'; - -// import { -// VBEN_DOC_URL, -// VBEN_ELE_PREVIEW_URL, -// VBEN_GITHUB_URL, -// VBEN_LOGO_URL, -// VBEN_NAIVE_PREVIEW_URL, -// } from '@vben/constants'; -// -// import { IFrameView } from '#/layouts'; -// import { $t } from '#/locales'; - -const routes: RouteRecordRaw[] = [ - // { - // meta: { - // badgeType: 'dot', - // icon: VBEN_LOGO_URL, - // order: 9998, - // title: $t('demos.vben.title'), - // }, - // name: 'VbenProject', - // path: '/vben-admin', - // children: [ - // { - // name: 'VbenDocument', - // path: '/vben-admin/document', - // component: IFrameView, - // meta: { - // icon: 'lucide:book-open-text', - // link: VBEN_DOC_URL, - // title: $t('demos.vben.document'), - // }, - // }, - // { - // name: 'VbenGithub', - // path: '/vben-admin/github', - // component: IFrameView, - // meta: { - // icon: 'mdi:github', - // link: VBEN_GITHUB_URL, - // title: 'Github', - // }, - // }, - // { - // name: 'VbenNaive', - // path: '/vben-admin/naive', - // component: IFrameView, - // meta: { - // badgeType: 'dot', - // icon: 'logos:naiveui', - // link: VBEN_NAIVE_PREVIEW_URL, - // title: $t('demos.vben.naive-ui'), - // }, - // }, - // { - // name: 'VbenElementPlus', - // path: '/vben-admin/ele', - // component: IFrameView, - // meta: { - // badgeType: 'dot', - // icon: 'logos:element', - // link: VBEN_ELE_PREVIEW_URL, - // title: $t('demos.vben.element-plus'), - // }, - // }, - // ], - // }, - // { - // name: 'VbenAbout', - // path: '/vben-admin/about', - // component: () => import('#/views/_core/about/index.vue'), - // meta: { - // icon: 'lucide:copyright', - // title: $t('demos.vben.about'), - // order: 9999, - // }, - // }, -]; - -export default routes; // update by 芋艿:不展示 diff --git a/apps/web-ele/src/router/routes/modules/vben.ts b/apps/web-ele/src/router/routes/modules/vben.ts deleted file mode 100644 index 96f980d10..000000000 --- a/apps/web-ele/src/router/routes/modules/vben.ts +++ /dev/null @@ -1,81 +0,0 @@ -import type { RouteRecordRaw } from 'vue-router'; - -// import { -// VBEN_DOC_URL, -// VBEN_ELE_PREVIEW_URL, -// VBEN_GITHUB_URL, -// VBEN_LOGO_URL, -// VBEN_NAIVE_PREVIEW_URL, -// } from '@vben/constants'; -// -// import { IFrameView } from '#/layouts'; -// import { $t } from '#/locales'; - -const routes: RouteRecordRaw[] = [ - // { - // meta: { - // badgeType: 'dot', - // icon: VBEN_LOGO_URL, - // order: 9998, - // title: $t('demos.vben.title'), - // }, - // name: 'VbenProject', - // path: '/vben-admin', - // children: [ - // { - // name: 'VbenDocument', - // path: '/vben-admin/document', - // component: IFrameView, - // meta: { - // icon: 'lucide:book-open-text', - // link: VBEN_DOC_URL, - // title: $t('demos.vben.document'), - // }, - // }, - // { - // name: 'VbenGithub', - // path: '/vben-admin/github', - // component: IFrameView, - // meta: { - // icon: 'mdi:github', - // link: VBEN_GITHUB_URL, - // title: 'Github', - // }, - // }, - // { - // name: 'VbenNaive', - // path: '/vben-admin/naive', - // component: IFrameView, - // meta: { - // badgeType: 'dot', - // icon: 'logos:naiveui', - // link: VBEN_NAIVE_PREVIEW_URL, - // title: $t('demos.vben.naive-ui'), - // }, - // }, - // { - // name: 'VbenElementPlus', - // path: '/vben-admin/ele', - // component: IFrameView, - // meta: { - // badgeType: 'dot', - // icon: 'logos:element', - // link: VBEN_ELE_PREVIEW_URL, - // title: $t('demos.vben.element-plus'), - // }, - // }, - // ], - // }, - // { - // name: 'VbenAbout', - // path: '/vben-admin/about', - // component: () => import('#/views/_core/about/index.vue'), - // meta: { - // icon: 'lucide:copyright', - // title: $t('demos.vben.about'), - // order: 9999, - // }, - // }, -]; - -export default routes; // update by 芋艿:不展示 diff --git a/apps/web-tdesign/.env b/apps/web-tdesign/.env new file mode 100644 index 000000000..dae0149d4 --- /dev/null +++ b/apps/web-tdesign/.env @@ -0,0 +1,8 @@ +# 应用标题 +VITE_APP_TITLE=Vben Admin Tdesign + +# 应用命名空间,用于缓存、store等功能的前缀,确保隔离 +VITE_APP_NAMESPACE=vben-web-tdesign + +# 对store进行加密的密钥,在将store持久化到localStorage时会使用该密钥进行加密 +VITE_APP_STORE_SECURE_KEY=please-replace-me-with-your-own-key diff --git a/apps/web-tdesign/.env.analyze b/apps/web-tdesign/.env.analyze new file mode 100644 index 000000000..ffafa8dd5 --- /dev/null +++ b/apps/web-tdesign/.env.analyze @@ -0,0 +1,7 @@ +# public path +VITE_BASE=/ + +# Basic interface address SPA +VITE_GLOB_API_URL=/api + +VITE_VISUALIZER=true diff --git a/apps/web-tdesign/.env.development b/apps/web-tdesign/.env.development new file mode 100644 index 000000000..f2b444287 --- /dev/null +++ b/apps/web-tdesign/.env.development @@ -0,0 +1,16 @@ +# 端口号 +VITE_PORT=5999 + +VITE_BASE=/ + +# 接口地址 +VITE_GLOB_API_URL=/api + +# 是否开启 Nitro Mock服务,true 为开启,false 为关闭 +VITE_NITRO_MOCK=true + +# 是否打开 devtools,true 为打开,false 为关闭 +VITE_DEVTOOLS=false + +# 是否注入全局loading +VITE_INJECT_APP_LOADING=true diff --git a/apps/web-tdesign/.env.production b/apps/web-tdesign/.env.production new file mode 100644 index 000000000..5375847a6 --- /dev/null +++ b/apps/web-tdesign/.env.production @@ -0,0 +1,19 @@ +VITE_BASE=/ + +# 接口地址 +VITE_GLOB_API_URL=https://mock-napi.vben.pro/api + +# 是否开启压缩,可以设置为 none, brotli, gzip +VITE_COMPRESS=none + +# 是否开启 PWA +VITE_PWA=false + +# vue-router 的模式 +VITE_ROUTER_HISTORY=hash + +# 是否注入全局loading +VITE_INJECT_APP_LOADING=true + +# 打包后是否生成dist.zip +VITE_ARCHIVER=true diff --git a/apps/web-tdesign/index.html b/apps/web-tdesign/index.html new file mode 100644 index 000000000..480eb84de --- /dev/null +++ b/apps/web-tdesign/index.html @@ -0,0 +1,35 @@ + + + + + + + + + + + + <%= VITE_APP_TITLE %> + + + + +
+ + + diff --git a/apps/web-tdesign/package.json b/apps/web-tdesign/package.json new file mode 100644 index 000000000..fa364a330 --- /dev/null +++ b/apps/web-tdesign/package.json @@ -0,0 +1,54 @@ +{ + "name": "@vben/web-tdesign", + "version": "5.5.9", + "homepage": "https://vben.pro", + "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", + "repository": { + "type": "git", + "url": "git+https://github.com/vbenjs/vue-vben-admin.git", + "directory": "apps/web-tdesign" + }, + "license": "MIT", + "author": { + "name": "vben", + "email": "ann.vben@gmail.com", + "url": "https://github.com/anncwb" + }, + "type": "module", + "scripts": { + "build": "pnpm vite build --mode production", + "build:analyze": "pnpm vite build --mode analyze", + "dev": "pnpm vite --mode development", + "preview": "vite preview", + "typecheck": "vue-tsc --noEmit --skipLibCheck" + }, + "imports": { + "#/*": "./src/*" + }, + "dependencies": { + "@vben/access": "workspace:*", + "@vben/common-ui": "workspace:*", + "@vben/constants": "workspace:*", + "@vben/hooks": "workspace:*", + "@vben/icons": "workspace:*", + "@vben/layouts": "workspace:*", + "@vben/locales": "workspace:*", + "@vben/plugins": "workspace:*", + "@vben/preferences": "workspace:*", + "@vben/request": "workspace:*", + "@vben/stores": "workspace:*", + "@vben/styles": "workspace:*", + "@vben/types": "workspace:*", + "@vben/utils": "workspace:*", + "@vueuse/core": "catalog:", + "dayjs": "catalog:", + "lodash-es": "^4.17.21", + "pinia": "catalog:", + "tdesign-vue-next": "^1.17.1", + "vue": "catalog:", + "vue-router": "catalog:" + }, + "devDependencies": { + "@types/lodash-es": "^4.17.12" + } +} diff --git a/apps/web-tdesign/postcss.config.mjs b/apps/web-tdesign/postcss.config.mjs new file mode 100644 index 000000000..3d8070455 --- /dev/null +++ b/apps/web-tdesign/postcss.config.mjs @@ -0,0 +1 @@ +export { default } from '@vben/tailwind-config/postcss'; diff --git a/apps/web-tdesign/public/favicon.ico b/apps/web-tdesign/public/favicon.ico new file mode 100644 index 000000000..fcf9818e2 Binary files /dev/null and b/apps/web-tdesign/public/favicon.ico differ diff --git a/apps/web-tdesign/src/adapter/component/index.ts b/apps/web-tdesign/src/adapter/component/index.ts new file mode 100644 index 000000000..b7fc05478 --- /dev/null +++ b/apps/web-tdesign/src/adapter/component/index.ts @@ -0,0 +1,229 @@ +import type { Component } from 'vue'; + +import type { BaseFormComponentType } from '@vben/common-ui'; +import type { Recordable } from '@vben/types'; + +import { defineAsyncComponent, defineComponent, h, ref } from 'vue'; + +import { ApiComponent, globalShareState, IconPicker } from '@vben/common-ui'; +import { $t } from '@vben/locales'; + +import { notification } from '#/adapter/tdesign'; + +/** + * 通用组件共同的使用的基础组件,原先放在 adapter/form 内部,限制了使用范围,这里提取出来,方便其他地方使用 + * 可用于 vben-form、vben-modal、vben-drawer 等组件使用, + */ + +const AutoComplete = defineAsyncComponent( + () => import('tdesign-vue-next/es/auto-complete'), +); +const Button = defineAsyncComponent(() => import('tdesign-vue-next/es/button')); +const Checkbox = defineAsyncComponent( + () => import('tdesign-vue-next/es/checkbox'), +); +const CheckboxGroup = defineAsyncComponent(() => + import('tdesign-vue-next/es/checkbox').then((res) => res.CheckboxGroup), +); +const DatePicker = defineAsyncComponent( + () => import('tdesign-vue-next/es/date-picker'), +); +const Divider = defineAsyncComponent( + () => import('tdesign-vue-next/es/divider'), +); +const Input = defineAsyncComponent(() => import('tdesign-vue-next/es/input')); +const InputNumber = defineAsyncComponent( + () => import('tdesign-vue-next/es/input-number'), +); +// const InputPassword = defineAsyncComponent(() => +// import('tdesign-vue-next/es/input').then((res) => res.InputPassword), +// ); +// const Mentions = defineAsyncComponent( +// () => import('tdesign-vue-next/es/mentions'), +// ); +const Radio = defineAsyncComponent(() => import('tdesign-vue-next/es/radio')); +const RadioGroup = defineAsyncComponent(() => + import('tdesign-vue-next/es/radio').then((res) => res.RadioGroup), +); +const RangePicker = defineAsyncComponent(() => + import('tdesign-vue-next/es/date-picker').then((res) => res.DateRangePicker), +); +const Rate = defineAsyncComponent(() => import('tdesign-vue-next/es/rate')); +const Select = defineAsyncComponent(() => import('tdesign-vue-next/es/select')); +const Space = defineAsyncComponent(() => import('tdesign-vue-next/es/space')); +const Switch = defineAsyncComponent(() => import('tdesign-vue-next/es/switch')); +const Textarea = defineAsyncComponent( + () => import('tdesign-vue-next/es/textarea'), +); +const TimePicker = defineAsyncComponent( + () => import('tdesign-vue-next/es/time-picker'), +); +const TreeSelect = defineAsyncComponent( + () => import('tdesign-vue-next/es/tree-select'), +); +const Upload = defineAsyncComponent(() => import('tdesign-vue-next/es/upload')); + +const withDefaultPlaceholder = ( + component: T, + type: 'input' | 'select', + componentProps: Recordable = {}, +) => { + return defineComponent({ + name: component.name, + inheritAttrs: false, + setup: (props: any, { attrs, expose, slots }) => { + const placeholder = + props?.placeholder || + attrs?.placeholder || + $t(`ui.placeholder.${type}`); + // 透传组件暴露的方法 + const innerRef = ref(); + expose( + new Proxy( + {}, + { + get: (_target, key) => innerRef.value?.[key], + has: (_target, key) => key in (innerRef.value || {}), + }, + ), + ); + return () => + h( + component, + { ...componentProps, placeholder, ...props, ...attrs, ref: innerRef }, + slots, + ); + }, + }); +}; + +// 这里需要自行根据业务组件库进行适配,需要用到的组件都需要在这里类型说明 +export type ComponentType = + | 'ApiSelect' + | 'ApiTreeSelect' + | 'AutoComplete' + | 'Checkbox' + | 'CheckboxGroup' + | 'DatePicker' + | 'DefaultButton' + | 'Divider' + | 'IconPicker' + | 'Input' + | 'InputNumber' + // | 'InputPassword' + // | 'Mentions' + | 'PrimaryButton' + | 'Radio' + | 'RadioGroup' + | 'RangePicker' + | 'Rate' + | 'Select' + | 'Space' + | 'Switch' + | 'Textarea' + | 'TimePicker' + | 'TreeSelect' + | 'Upload' + | BaseFormComponentType; + +async function initComponentAdapter() { + const components: Partial> = { + // 如果你的组件体积比较大,可以使用异步加载 + // Button: () => + // import('xxx').then((res) => res.Button), + ApiSelect: withDefaultPlaceholder( + { + ...ApiComponent, + name: 'ApiSelect', + }, + 'select', + { + component: Select, + loadingSlot: 'suffixIcon', + visibleEvent: 'onDropdownVisibleChange', + modelPropName: 'value', + }, + ), + ApiTreeSelect: withDefaultPlaceholder( + { + ...ApiComponent, + name: 'ApiTreeSelect', + }, + 'select', + { + component: TreeSelect, + fieldNames: { label: 'label', value: 'value', children: 'children' }, + loadingSlot: 'suffixIcon', + modelPropName: 'value', + optionsPropName: 'treeData', + visibleEvent: 'onVisibleChange', + }, + ), + AutoComplete, + Checkbox, + CheckboxGroup, + DatePicker, + // 自定义默认按钮 + DefaultButton: (props, { attrs, slots }) => { + return h(Button, { ...props, attrs, theme: 'default' }, slots); + }, + Divider, + IconPicker: withDefaultPlaceholder(IconPicker, 'select', { + iconSlot: 'addonAfter', + inputComponent: Input, + modelValueProp: 'value', + }), + Input: withDefaultPlaceholder(Input, 'input'), + InputNumber: withDefaultPlaceholder(InputNumber, 'input'), + // InputPassword: withDefaultPlaceholder(InputPassword, 'input'), + // Mentions: withDefaultPlaceholder(Mentions, 'input'), + // 自定义主要按钮 + PrimaryButton: (props, { attrs, slots }) => { + let ghost = false; + let variant = props.variant; + if (props.variant === 'ghost') { + ghost = true; + variant = 'base'; + } + return h( + Button, + { ...props, ghost, variant, attrs, theme: 'primary' }, + slots, + ); + }, + Radio, + RadioGroup, + RangePicker: (props, { attrs, slots }) => { + return h( + RangePicker, + { ...props, modelValue: props.modelValue ?? [], attrs }, + slots, + ); + }, + Rate, + Select: withDefaultPlaceholder(Select, 'select'), + Space, + Switch, + Textarea: withDefaultPlaceholder(Textarea, 'input'), + TimePicker, + TreeSelect: withDefaultPlaceholder(TreeSelect, 'select'), + Upload, + }; + + // 将组件注册到全局共享状态中 + globalShareState.setComponents(components); + + // 定义全局共享状态中的消息提示 + globalShareState.defineMessage({ + // 复制成功消息提示 + copyPreferencesSuccess: (title, content) => { + notification.success({ + title, + content, + placement: 'bottom-right', + }); + }, + }); +} + +export { initComponentAdapter }; diff --git a/apps/web-tdesign/src/adapter/form.ts b/apps/web-tdesign/src/adapter/form.ts new file mode 100644 index 000000000..ed0945142 --- /dev/null +++ b/apps/web-tdesign/src/adapter/form.ts @@ -0,0 +1,49 @@ +import type { + VbenFormSchema as FormSchema, + VbenFormProps, +} from '@vben/common-ui'; + +import type { ComponentType } from './component'; + +import { setupVbenForm, useVbenForm as useForm, z } from '@vben/common-ui'; +import { $t } from '@vben/locales'; + +async function initSetupVbenForm() { + setupVbenForm({ + config: { + // tdesign组件库默认都是 v-model:value + baseModelPropName: 'value', + + // 一些组件是 v-model:checked 或者 v-model:fileList + modelPropNameMap: { + Checkbox: 'checked', + Radio: 'checked', + Switch: 'checked', + Upload: 'fileList', + }, + }, + defineRules: { + // 输入项目必填国际化适配 + required: (value, _params, ctx) => { + if (value === undefined || value === null || value.length === 0) { + return $t('ui.formRules.required', [ctx.label]); + } + return true; + }, + // 选择项目必填国际化适配 + selectRequired: (value, _params, ctx) => { + if (value === undefined || value === null) { + return $t('ui.formRules.selectRequired', [ctx.label]); + } + return true; + }, + }, + }); +} + +const useVbenForm = useForm; + +export { initSetupVbenForm, useVbenForm, z }; + +export type VbenFormSchema = FormSchema; +export type { VbenFormProps }; diff --git a/apps/web-tdesign/src/adapter/tdesign.ts b/apps/web-tdesign/src/adapter/tdesign.ts new file mode 100644 index 000000000..70c67601e --- /dev/null +++ b/apps/web-tdesign/src/adapter/tdesign.ts @@ -0,0 +1,5 @@ +export { + DialogPlugin as dialog, + MessagePlugin as message, + NotifyPlugin as notification, +} from 'tdesign-vue-next'; diff --git a/apps/web-tdesign/src/adapter/vxe-table.ts b/apps/web-tdesign/src/adapter/vxe-table.ts new file mode 100644 index 000000000..43bd68afd --- /dev/null +++ b/apps/web-tdesign/src/adapter/vxe-table.ts @@ -0,0 +1,69 @@ +import type { VxeTableGridOptions } from '@vben/plugins/vxe-table'; + +import { h } from 'vue'; + +import { setupVbenVxeTable, useVbenVxeGrid } from '@vben/plugins/vxe-table'; + +import { Button, Image } from 'tdesign-vue-next'; + +import { useVbenForm } from './form'; + +setupVbenVxeTable({ + configVxeTable: (vxeUI) => { + vxeUI.setConfig({ + grid: { + align: 'center', + border: false, + columnConfig: { + resizable: true, + }, + minHeight: 180, + formConfig: { + // 全局禁用vxe-table的表单配置,使用formOptions + enabled: false, + }, + proxyConfig: { + autoLoad: true, + response: { + result: 'items', + total: 'total', + list: 'items', + }, + showActiveMsg: true, + showResponseMsg: false, + }, + round: true, + showOverflow: true, + size: 'small', + } as VxeTableGridOptions, + }); + + // 表格配置项可以用 cellRender: { name: 'CellImage' }, + vxeUI.renderer.add('CellImage', { + renderTableDefault(_renderOpts, params) { + const { column, row } = params; + return h(Image, { src: row[column.field] }); + }, + }); + + // 表格配置项可以用 cellRender: { name: 'CellLink' }, + vxeUI.renderer.add('CellLink', { + renderTableDefault(renderOpts) { + const { props } = renderOpts; + return h( + Button, + { size: 'small', theme: 'primary', variant: 'text' }, + { default: () => props?.text }, + ); + }, + }); + + // 这里可以自行扩展 vxe-table 的全局配置,比如自定义格式化 + // vxeUI.formats.add + }, + useVbenForm, +}); + +export { useVbenVxeGrid }; + +export type * from '@vben/plugins/vxe-table'; diff --git a/apps/web-tdesign/src/api/core/auth.ts b/apps/web-tdesign/src/api/core/auth.ts new file mode 100644 index 000000000..71d9f9943 --- /dev/null +++ b/apps/web-tdesign/src/api/core/auth.ts @@ -0,0 +1,51 @@ +import { baseRequestClient, requestClient } from '#/api/request'; + +export namespace AuthApi { + /** 登录接口参数 */ + export interface LoginParams { + password?: string; + username?: string; + } + + /** 登录接口返回值 */ + export interface LoginResult { + accessToken: string; + } + + export interface RefreshTokenResult { + data: string; + status: number; + } +} + +/** + * 登录 + */ +export async function loginApi(data: AuthApi.LoginParams) { + return requestClient.post('/auth/login', data); +} + +/** + * 刷新accessToken + */ +export async function refreshTokenApi() { + return baseRequestClient.post('/auth/refresh', { + withCredentials: true, + }); +} + +/** + * 退出登录 + */ +export async function logoutApi() { + return baseRequestClient.post('/auth/logout', { + withCredentials: true, + }); +} + +/** + * 获取用户权限码 + */ +export async function getAccessCodesApi() { + return requestClient.get('/auth/codes'); +} diff --git a/apps/web-tdesign/src/api/core/index.ts b/apps/web-tdesign/src/api/core/index.ts new file mode 100644 index 000000000..28a5aef47 --- /dev/null +++ b/apps/web-tdesign/src/api/core/index.ts @@ -0,0 +1,3 @@ +export * from './auth'; +export * from './menu'; +export * from './user'; diff --git a/apps/web-tdesign/src/api/core/menu.ts b/apps/web-tdesign/src/api/core/menu.ts new file mode 100644 index 000000000..9ef60b11c --- /dev/null +++ b/apps/web-tdesign/src/api/core/menu.ts @@ -0,0 +1,10 @@ +import type { RouteRecordStringComponent } from '@vben/types'; + +import { requestClient } from '#/api/request'; + +/** + * 获取用户所有菜单 + */ +export async function getAllMenusApi() { + return requestClient.get('/menu/all'); +} diff --git a/apps/web-tdesign/src/api/core/user.ts b/apps/web-tdesign/src/api/core/user.ts new file mode 100644 index 000000000..7e28ea848 --- /dev/null +++ b/apps/web-tdesign/src/api/core/user.ts @@ -0,0 +1,10 @@ +import type { UserInfo } from '@vben/types'; + +import { requestClient } from '#/api/request'; + +/** + * 获取用户信息 + */ +export async function getUserInfoApi() { + return requestClient.get('/user/info'); +} diff --git a/apps/web-tdesign/src/api/index.ts b/apps/web-tdesign/src/api/index.ts new file mode 100644 index 000000000..4b0e04137 --- /dev/null +++ b/apps/web-tdesign/src/api/index.ts @@ -0,0 +1 @@ +export * from './core'; diff --git a/apps/web-tdesign/src/api/request.ts b/apps/web-tdesign/src/api/request.ts new file mode 100644 index 000000000..86b181d33 --- /dev/null +++ b/apps/web-tdesign/src/api/request.ts @@ -0,0 +1,112 @@ +/** + * 该文件可自行根据业务逻辑进行调整 + */ +import type { RequestClientOptions } from '@vben/request'; + +import { useAppConfig } from '@vben/hooks'; +import { preferences } from '@vben/preferences'; +import { + authenticateResponseInterceptor, + defaultResponseInterceptor, + errorMessageResponseInterceptor, + RequestClient, +} from '@vben/request'; +import { useAccessStore } from '@vben/stores'; + +import { message } from '#/adapter/tdesign'; +import { useAuthStore } from '#/store'; + +import { refreshTokenApi } from './core'; + +const { apiURL } = useAppConfig(import.meta.env, import.meta.env.PROD); + +function createRequestClient(baseURL: string, options?: RequestClientOptions) { + const client = new RequestClient({ + ...options, + baseURL, + }); + + /** + * 重新认证逻辑 + */ + async function doReAuthenticate() { + console.warn('Access token or refresh token is invalid or expired. '); + const accessStore = useAccessStore(); + const authStore = useAuthStore(); + accessStore.setAccessToken(null); + if ( + preferences.app.loginExpiredMode === 'modal' && + accessStore.isAccessChecked + ) { + accessStore.setLoginExpired(true); + } else { + await authStore.logout(); + } + } + + /** + * 刷新token逻辑 + */ + async function doRefreshToken() { + const accessStore = useAccessStore(); + const resp = await refreshTokenApi(); + const newToken = resp.data; + accessStore.setAccessToken(newToken); + return newToken; + } + + function formatToken(token: null | string) { + return token ? `Bearer ${token}` : null; + } + + // 请求头处理 + client.addRequestInterceptor({ + fulfilled: async (config) => { + const accessStore = useAccessStore(); + + config.headers.Authorization = formatToken(accessStore.accessToken); + config.headers['Accept-Language'] = preferences.app.locale; + return config; + }, + }); + + // 处理返回的响应数据格式 + client.addResponseInterceptor( + defaultResponseInterceptor({ + codeField: 'code', + dataField: 'data', + successCode: 0, + }), + ); + + // token过期的处理 + client.addResponseInterceptor( + authenticateResponseInterceptor({ + client, + doReAuthenticate, + doRefreshToken, + enableRefreshToken: preferences.app.enableRefreshToken, + formatToken, + }), + ); + + // 通用的错误处理,如果没有进入上面的错误处理逻辑,就会进入这里 + client.addResponseInterceptor( + errorMessageResponseInterceptor((msg: string, error) => { + // 这里可以根据业务进行定制,你可以拿到 error 内的信息进行定制化处理,根据不同的 code 做不同的提示,而不是直接使用 message.error 提示 msg + // 当前mock接口返回的错误字段是 error 或者 message + const responseData = error?.response?.data ?? {}; + const errorMessage = responseData?.error ?? responseData?.message ?? ''; + // 如果没有错误信息,则会根据状态码进行提示 + message.error(errorMessage || msg); + }), + ); + + return client; +} + +export const requestClient = createRequestClient(apiURL, { + responseReturn: 'data', +}); + +export const baseRequestClient = new RequestClient({ baseURL: apiURL }); diff --git a/apps/web-tdesign/src/app.vue b/apps/web-tdesign/src/app.vue new file mode 100644 index 000000000..57d5951cc --- /dev/null +++ b/apps/web-tdesign/src/app.vue @@ -0,0 +1,35 @@ + + + diff --git a/apps/web-tdesign/src/bootstrap.ts b/apps/web-tdesign/src/bootstrap.ts new file mode 100644 index 000000000..edcccea4c --- /dev/null +++ b/apps/web-tdesign/src/bootstrap.ts @@ -0,0 +1,78 @@ +import { createApp, watchEffect } from 'vue'; + +import { registerAccessDirective } from '@vben/access'; +import { registerLoadingDirective } from '@vben/common-ui/es/loading'; +import { preferences } from '@vben/preferences'; +import { initStores } from '@vben/stores'; +import '@vben/styles'; +import '@vben/styles/antd'; + +import { useTitle } from '@vueuse/core'; + +import { $t, setupI18n } from '#/locales'; + +import { initComponentAdapter } from './adapter/component'; +import { initSetupVbenForm } from './adapter/form'; +import App from './app.vue'; +import { router } from './router'; + +// 引入组件库的少量全局样式变量 + +async function bootstrap(namespace: string) { + // 初始化组件适配器 + await initComponentAdapter(); + + // 初始化表单组件 + await initSetupVbenForm(); + + // // 设置弹窗的默认配置 + // setDefaultModalProps({ + // fullscreenButton: false, + // }); + // // 设置抽屉的默认配置 + // setDefaultDrawerProps({ + // zIndex: 1020, + // }); + + const app = createApp(App); + + // 注册v-loading指令 + registerLoadingDirective(app, { + loading: 'loading', // 在这里可以自定义指令名称,也可以明确提供false表示不注册这个指令 + spinning: 'spinning', + }); + + // 国际化 i18n 配置 + await setupI18n(app); + + // 配置 pinia-tore + await initStores(app, { namespace }); + + // 安装权限指令 + registerAccessDirective(app); + + // 初始化 tippy + const { initTippy } = await import('@vben/common-ui/es/tippy'); + initTippy(app); + + // 配置路由及路由守卫 + app.use(router); + + // 配置Motion插件 + const { MotionPlugin } = await import('@vben/plugins/motion'); + app.use(MotionPlugin); + + // 动态更新标题 + watchEffect(() => { + if (preferences.app.dynamicTitle) { + const routeTitle = router.currentRoute.value.meta?.title; + const pageTitle = + (routeTitle ? `${$t(routeTitle)} - ` : '') + preferences.app.name; + useTitle(pageTitle); + } + }); + + app.mount('#app'); +} + +export { bootstrap }; diff --git a/apps/web-tdesign/src/layouts/auth.vue b/apps/web-tdesign/src/layouts/auth.vue new file mode 100644 index 000000000..18d415bc7 --- /dev/null +++ b/apps/web-tdesign/src/layouts/auth.vue @@ -0,0 +1,23 @@ + + + diff --git a/apps/web-tdesign/src/layouts/basic.vue b/apps/web-tdesign/src/layouts/basic.vue new file mode 100644 index 000000000..805b8a73d --- /dev/null +++ b/apps/web-tdesign/src/layouts/basic.vue @@ -0,0 +1,162 @@ + + + diff --git a/apps/web-tdesign/src/layouts/index.ts b/apps/web-tdesign/src/layouts/index.ts new file mode 100644 index 000000000..a43207805 --- /dev/null +++ b/apps/web-tdesign/src/layouts/index.ts @@ -0,0 +1,6 @@ +const BasicLayout = () => import('./basic.vue'); +const AuthPageLayout = () => import('./auth.vue'); + +const IFrameView = () => import('@vben/layouts').then((m) => m.IFrameView); + +export { AuthPageLayout, BasicLayout, IFrameView }; diff --git a/apps/web-tdesign/src/locales/README.md b/apps/web-tdesign/src/locales/README.md new file mode 100644 index 000000000..7b451032e --- /dev/null +++ b/apps/web-tdesign/src/locales/README.md @@ -0,0 +1,3 @@ +# locale + +每个app使用的国际化可能不同,这里用于扩展国际化的功能,例如扩展 dayjs、antd组件库的多语言切换,以及app本身的国际化文件。 diff --git a/apps/web-tdesign/src/locales/index.ts b/apps/web-tdesign/src/locales/index.ts new file mode 100644 index 000000000..6d98579af --- /dev/null +++ b/apps/web-tdesign/src/locales/index.ts @@ -0,0 +1,77 @@ +import type { App } from 'vue'; + +import type { LocaleSetupOptions, SupportedLanguagesType } from '@vben/locales'; + +import { + $t, + setupI18n as coreSetup, + loadLocalesMapFromDir, +} from '@vben/locales'; +import { preferences } from '@vben/preferences'; + +import dayjs from 'dayjs'; + +const modules = import.meta.glob('./langs/**/*.json'); + +const localesMap = loadLocalesMapFromDir( + /\.\/langs\/([^/]+)\/(.*)\.json$/, + modules, +); +/** + * 加载应用特有的语言包 + * 这里也可以改造为从服务端获取翻译数据 + * @param lang + */ +async function loadMessages(lang: SupportedLanguagesType) { + const [appLocaleMessages] = await Promise.all([ + localesMap[lang]?.(), + loadThirdPartyMessage(lang), + ]); + return appLocaleMessages?.default; +} + +/** + * 加载第三方组件库的语言包 + * @param lang + */ +async function loadThirdPartyMessage(lang: SupportedLanguagesType) { + await loadDayjsLocale(lang); +} + +/** + * 加载dayjs的语言包 + * @param lang + */ +async function loadDayjsLocale(lang: SupportedLanguagesType) { + let locale; + switch (lang) { + case 'en-US': { + locale = await import('dayjs/locale/en'); + break; + } + case 'zh-CN': { + locale = await import('dayjs/locale/zh-cn'); + break; + } + // 默认使用英语 + default: { + locale = await import('dayjs/locale/en'); + } + } + if (locale) { + dayjs.locale(locale); + } else { + console.error(`Failed to load dayjs locale for ${lang}`); + } +} + +async function setupI18n(app: App, options: LocaleSetupOptions = {}) { + await coreSetup(app, { + defaultLocale: preferences.app.locale, + loadMessages, + missingWarn: !import.meta.env.PROD, + ...options, + }); +} + +export { $t, setupI18n }; diff --git a/apps/web-ele/src/locales/langs/en-US/demos.json b/apps/web-tdesign/src/locales/langs/en-US/demos.json similarity index 81% rename from apps/web-ele/src/locales/langs/en-US/demos.json rename to apps/web-tdesign/src/locales/langs/en-US/demos.json index 6eddebb53..e7bcea129 100644 --- a/apps/web-ele/src/locales/langs/en-US/demos.json +++ b/apps/web-tdesign/src/locales/langs/en-US/demos.json @@ -1,7 +1,6 @@ { "title": "Demos", - "elementPlus": "Element Plus", - "form": "Form", + "tdesign": "TDesign Vue", "vben": { "title": "Project", "about": "About", diff --git a/apps/web-tdesign/src/locales/langs/en-US/page.json b/apps/web-tdesign/src/locales/langs/en-US/page.json new file mode 100644 index 000000000..618a258c0 --- /dev/null +++ b/apps/web-tdesign/src/locales/langs/en-US/page.json @@ -0,0 +1,14 @@ +{ + "auth": { + "login": "Login", + "register": "Register", + "codeLogin": "Code Login", + "qrcodeLogin": "Qr Code Login", + "forgetPassword": "Forget Password" + }, + "dashboard": { + "title": "Dashboard", + "analytics": "Analytics", + "workspace": "Workspace" + } +} diff --git a/apps/web-ele/src/locales/langs/zh-CN/demos.json b/apps/web-tdesign/src/locales/langs/zh-CN/demos.json similarity index 79% rename from apps/web-ele/src/locales/langs/zh-CN/demos.json rename to apps/web-tdesign/src/locales/langs/zh-CN/demos.json index ba6d6ccd0..843a1f30d 100644 --- a/apps/web-ele/src/locales/langs/zh-CN/demos.json +++ b/apps/web-tdesign/src/locales/langs/zh-CN/demos.json @@ -1,7 +1,6 @@ { "title": "演示", - "elementPlus": "Element Plus", - "form": "表单演示", + "tdesign": "TDesign Vue", "vben": { "title": "项目", "about": "关于", diff --git a/apps/web-tdesign/src/locales/langs/zh-CN/page.json b/apps/web-tdesign/src/locales/langs/zh-CN/page.json new file mode 100644 index 000000000..4cb67081c --- /dev/null +++ b/apps/web-tdesign/src/locales/langs/zh-CN/page.json @@ -0,0 +1,14 @@ +{ + "auth": { + "login": "登录", + "register": "注册", + "codeLogin": "验证码登录", + "qrcodeLogin": "二维码登录", + "forgetPassword": "忘记密码" + }, + "dashboard": { + "title": "概览", + "analytics": "分析页", + "workspace": "工作台" + } +} diff --git a/apps/web-tdesign/src/main.ts b/apps/web-tdesign/src/main.ts new file mode 100644 index 000000000..5d728a02a --- /dev/null +++ b/apps/web-tdesign/src/main.ts @@ -0,0 +1,31 @@ +import { initPreferences } from '@vben/preferences'; +import { unmountGlobalLoading } from '@vben/utils'; + +import { overridesPreferences } from './preferences'; + +/** + * 应用初始化完成之后再进行页面加载渲染 + */ +async function initApplication() { + // name用于指定项目唯一标识 + // 用于区分不同项目的偏好设置以及存储数据的key前缀以及其他一些需要隔离的数据 + const env = import.meta.env.PROD ? 'prod' : 'dev'; + const appVersion = import.meta.env.VITE_APP_VERSION; + const namespace = `${import.meta.env.VITE_APP_NAMESPACE}-${appVersion}-${env}`; + + // app偏好设置初始化 + await initPreferences({ + namespace, + overrides: overridesPreferences, + }); + + // 启动应用并挂载 + // vue应用主要逻辑及视图 + const { bootstrap } = await import('./bootstrap'); + await bootstrap(namespace); + + // 移除并销毁loading + unmountGlobalLoading(); +} + +initApplication(); diff --git a/apps/web-tdesign/src/preferences.ts b/apps/web-tdesign/src/preferences.ts new file mode 100644 index 000000000..b2e9ace43 --- /dev/null +++ b/apps/web-tdesign/src/preferences.ts @@ -0,0 +1,13 @@ +import { defineOverridesPreferences } from '@vben/preferences'; + +/** + * @description 项目配置文件 + * 只需要覆盖项目中的一部分配置,不需要的配置不用覆盖,会自动使用默认配置 + * !!! 更改配置后请清空缓存,否则可能不生效 + */ +export const overridesPreferences = defineOverridesPreferences({ + // overrides + app: { + name: import.meta.env.VITE_APP_TITLE, + }, +}); diff --git a/apps/web-tdesign/src/router/access.ts b/apps/web-tdesign/src/router/access.ts new file mode 100644 index 000000000..08cb4b0bd --- /dev/null +++ b/apps/web-tdesign/src/router/access.ts @@ -0,0 +1,41 @@ +import type { + ComponentRecordType, + GenerateMenuAndRoutesOptions, +} from '@vben/types'; + +import { generateAccessible } from '@vben/access'; +import { preferences } from '@vben/preferences'; + +import { message } from '#/adapter/tdesign'; +import { getAllMenusApi } from '#/api'; +import { BasicLayout, IFrameView } from '#/layouts'; +import { $t } from '#/locales'; + +const forbiddenComponent = () => import('#/views/_core/fallback/forbidden.vue'); + +async function generateAccess(options: GenerateMenuAndRoutesOptions) { + const pageMap: ComponentRecordType = import.meta.glob('../views/**/*.vue'); + + const layoutMap: ComponentRecordType = { + BasicLayout, + IFrameView, + }; + + return await generateAccessible(preferences.app.accessMode, { + ...options, + fetchMenuListAsync: async () => { + message.loading({ + content: `${$t('common.loadingMenu')}...`, + duration: 1500, + }); + return await getAllMenusApi(); + }, + // 可以指定没有权限跳转403页面 + forbiddenComponent, + // 如果 route.meta.menuVisibleWithForbidden = true + layoutMap, + pageMap, + }); +} + +export { generateAccess }; diff --git a/apps/web-tdesign/src/router/guard.ts b/apps/web-tdesign/src/router/guard.ts new file mode 100644 index 000000000..a1ad6d88c --- /dev/null +++ b/apps/web-tdesign/src/router/guard.ts @@ -0,0 +1,133 @@ +import type { Router } from 'vue-router'; + +import { LOGIN_PATH } from '@vben/constants'; +import { preferences } from '@vben/preferences'; +import { useAccessStore, useUserStore } from '@vben/stores'; +import { startProgress, stopProgress } from '@vben/utils'; + +import { accessRoutes, coreRouteNames } from '#/router/routes'; +import { useAuthStore } from '#/store'; + +import { generateAccess } from './access'; + +/** + * 通用守卫配置 + * @param router + */ +function setupCommonGuard(router: Router) { + // 记录已经加载的页面 + const loadedPaths = new Set(); + + router.beforeEach((to) => { + to.meta.loaded = loadedPaths.has(to.path); + + // 页面加载进度条 + if (!to.meta.loaded && preferences.transition.progress) { + startProgress(); + } + return true; + }); + + router.afterEach((to) => { + // 记录页面是否加载,如果已经加载,后续的页面切换动画等效果不在重复执行 + + loadedPaths.add(to.path); + + // 关闭页面加载进度条 + if (preferences.transition.progress) { + stopProgress(); + } + }); +} + +/** + * 权限访问守卫配置 + * @param router + */ +function setupAccessGuard(router: Router) { + router.beforeEach(async (to, from) => { + const accessStore = useAccessStore(); + const userStore = useUserStore(); + const authStore = useAuthStore(); + + // 基本路由,这些路由不需要进入权限拦截 + if (coreRouteNames.includes(to.name as string)) { + if (to.path === LOGIN_PATH && accessStore.accessToken) { + return decodeURIComponent( + (to.query?.redirect as string) || + userStore.userInfo?.homePath || + preferences.app.defaultHomePath, + ); + } + return true; + } + + // accessToken 检查 + if (!accessStore.accessToken) { + // 明确声明忽略权限访问权限,则可以访问 + if (to.meta.ignoreAccess) { + return true; + } + + // 没有访问权限,跳转登录页面 + if (to.fullPath !== LOGIN_PATH) { + return { + path: LOGIN_PATH, + // 如不需要,直接删除 query + query: + to.fullPath === preferences.app.defaultHomePath + ? {} + : { redirect: encodeURIComponent(to.fullPath) }, + // 携带当前跳转的页面,登录后重新跳转该页面 + replace: true, + }; + } + return to; + } + + // 是否已经生成过动态路由 + if (accessStore.isAccessChecked) { + return true; + } + + // 生成路由表 + // 当前登录用户拥有的角色标识列表 + const userInfo = userStore.userInfo || (await authStore.fetchUserInfo()); + const userRoles = userInfo.roles ?? []; + + // 生成菜单和路由 + const { accessibleMenus, accessibleRoutes } = await generateAccess({ + roles: userRoles, + router, + // 则会在菜单中显示,但是访问会被重定向到403 + routes: accessRoutes, + }); + + // 保存菜单信息和路由信息 + accessStore.setAccessMenus(accessibleMenus); + accessStore.setAccessRoutes(accessibleRoutes); + accessStore.setIsAccessChecked(true); + const redirectPath = (from.query.redirect ?? + (to.path === preferences.app.defaultHomePath + ? userInfo.homePath || preferences.app.defaultHomePath + : to.fullPath)) as string; + + return { + ...router.resolve(decodeURIComponent(redirectPath)), + replace: true, + }; + }); +} + +/** + * 项目守卫配置 + * @param router + */ +function createRouterGuard(router: Router) { + /** 通用 */ + setupCommonGuard(router); + /** 权限访问 */ + setupAccessGuard(router); +} + +export { createRouterGuard }; diff --git a/apps/web-tdesign/src/router/index.ts b/apps/web-tdesign/src/router/index.ts new file mode 100644 index 000000000..484023034 --- /dev/null +++ b/apps/web-tdesign/src/router/index.ts @@ -0,0 +1,37 @@ +import { + createRouter, + createWebHashHistory, + createWebHistory, +} from 'vue-router'; + +import { resetStaticRoutes } from '@vben/utils'; + +import { createRouterGuard } from './guard'; +import { routes } from './routes'; + +/** + * @zh_CN 创建vue-router实例 + */ +const router = createRouter({ + history: + import.meta.env.VITE_ROUTER_HISTORY === 'hash' + ? createWebHashHistory(import.meta.env.VITE_BASE) + : createWebHistory(import.meta.env.VITE_BASE), + // 应该添加到路由的初始路由列表。 + routes, + scrollBehavior: (to, _from, savedPosition) => { + if (savedPosition) { + return savedPosition; + } + return to.hash ? { behavior: 'smooth', el: to.hash } : { left: 0, top: 0 }; + }, + // 是否应该禁止尾部斜杠。 + // strict: true, +}); + +const resetRoutes = () => resetStaticRoutes(router, routes); + +// 创建路由守卫 +createRouterGuard(router); + +export { resetRoutes, router }; diff --git a/apps/web-tdesign/src/router/routes/core.ts b/apps/web-tdesign/src/router/routes/core.ts new file mode 100644 index 000000000..949b0b65a --- /dev/null +++ b/apps/web-tdesign/src/router/routes/core.ts @@ -0,0 +1,97 @@ +import type { RouteRecordRaw } from 'vue-router'; + +import { LOGIN_PATH } from '@vben/constants'; +import { preferences } from '@vben/preferences'; + +import { $t } from '#/locales'; + +const BasicLayout = () => import('#/layouts/basic.vue'); +const AuthPageLayout = () => import('#/layouts/auth.vue'); +/** 全局404页面 */ +const fallbackNotFoundRoute: RouteRecordRaw = { + component: () => import('#/views/_core/fallback/not-found.vue'), + meta: { + hideInBreadcrumb: true, + hideInMenu: true, + hideInTab: true, + title: '404', + }, + name: 'FallbackNotFound', + path: '/:path(.*)*', +}; + +/** 基本路由,这些路由是必须存在的 */ +const coreRoutes: RouteRecordRaw[] = [ + /** + * 根路由 + * 使用基础布局,作为所有页面的父级容器,子级就不必配置BasicLayout。 + * 此路由必须存在,且不应修改 + */ + { + component: BasicLayout, + meta: { + hideInBreadcrumb: true, + title: 'Root', + }, + name: 'Root', + path: '/', + redirect: preferences.app.defaultHomePath, + children: [], + }, + { + component: AuthPageLayout, + meta: { + hideInTab: true, + title: 'Authentication', + }, + name: 'Authentication', + path: '/auth', + redirect: LOGIN_PATH, + children: [ + { + name: 'Login', + path: 'login', + component: () => import('#/views/_core/authentication/login.vue'), + meta: { + title: $t('page.auth.login'), + }, + }, + { + name: 'CodeLogin', + path: 'code-login', + component: () => import('#/views/_core/authentication/code-login.vue'), + meta: { + title: $t('page.auth.codeLogin'), + }, + }, + { + name: 'QrCodeLogin', + path: 'qrcode-login', + component: () => + import('#/views/_core/authentication/qrcode-login.vue'), + meta: { + title: $t('page.auth.qrcodeLogin'), + }, + }, + { + name: 'ForgetPassword', + path: 'forget-password', + component: () => + import('#/views/_core/authentication/forget-password.vue'), + meta: { + title: $t('page.auth.forgetPassword'), + }, + }, + { + name: 'Register', + path: 'register', + component: () => import('#/views/_core/authentication/register.vue'), + meta: { + title: $t('page.auth.register'), + }, + }, + ], + }, +]; + +export { coreRoutes, fallbackNotFoundRoute }; diff --git a/apps/web-tdesign/src/router/routes/index.ts b/apps/web-tdesign/src/router/routes/index.ts new file mode 100644 index 000000000..e6fb14402 --- /dev/null +++ b/apps/web-tdesign/src/router/routes/index.ts @@ -0,0 +1,37 @@ +import type { RouteRecordRaw } from 'vue-router'; + +import { mergeRouteModules, traverseTreeValues } from '@vben/utils'; + +import { coreRoutes, fallbackNotFoundRoute } from './core'; + +const dynamicRouteFiles = import.meta.glob('./modules/**/*.ts', { + eager: true, +}); + +// 有需要可以自行打开注释,并创建文件夹 +// const externalRouteFiles = import.meta.glob('./external/**/*.ts', { eager: true }); +// const staticRouteFiles = import.meta.glob('./static/**/*.ts', { eager: true }); + +/** 动态路由 */ +const dynamicRoutes: RouteRecordRaw[] = mergeRouteModules(dynamicRouteFiles); + +/** 外部路由列表,访问这些页面可以不需要Layout,可能用于内嵌在别的系统(不会显示在菜单中) */ +// const externalRoutes: RouteRecordRaw[] = mergeRouteModules(externalRouteFiles); +// const staticRoutes: RouteRecordRaw[] = mergeRouteModules(staticRouteFiles); +const staticRoutes: RouteRecordRaw[] = []; +const externalRoutes: RouteRecordRaw[] = []; + +/** 路由列表,由基本路由、外部路由和404兜底路由组成 + * 无需走权限验证(会一直显示在菜单中) */ +const routes: RouteRecordRaw[] = [ + ...coreRoutes, + ...externalRoutes, + fallbackNotFoundRoute, +]; + +/** 基本路由列表,这些路由不需要进入权限拦截 */ +const coreRouteNames = traverseTreeValues(coreRoutes, (route) => route.name); + +/** 有权限校验的路由列表,包含动态路由和静态路由 */ +const accessRoutes = [...dynamicRoutes, ...staticRoutes]; +export { accessRoutes, coreRouteNames, routes }; diff --git a/apps/web-tdesign/src/router/routes/modules/dashboard.ts b/apps/web-tdesign/src/router/routes/modules/dashboard.ts new file mode 100644 index 000000000..5254dc65d --- /dev/null +++ b/apps/web-tdesign/src/router/routes/modules/dashboard.ts @@ -0,0 +1,38 @@ +import type { RouteRecordRaw } from 'vue-router'; + +import { $t } from '#/locales'; + +const routes: RouteRecordRaw[] = [ + { + meta: { + icon: 'lucide:layout-dashboard', + order: -1, + title: $t('page.dashboard.title'), + }, + name: 'Dashboard', + path: '/dashboard', + children: [ + { + name: 'Analytics', + path: '/analytics', + component: () => import('#/views/dashboard/analytics/index.vue'), + meta: { + affixTab: true, + icon: 'lucide:area-chart', + title: $t('page.dashboard.analytics'), + }, + }, + { + name: 'Workspace', + path: '/workspace', + component: () => import('#/views/dashboard/workspace/index.vue'), + meta: { + icon: 'carbon:workspace', + title: $t('page.dashboard.workspace'), + }, + }, + ], + }, +]; + +export default routes; diff --git a/apps/web-tdesign/src/router/routes/modules/demos.ts b/apps/web-tdesign/src/router/routes/modules/demos.ts new file mode 100644 index 000000000..9ce8ec992 --- /dev/null +++ b/apps/web-tdesign/src/router/routes/modules/demos.ts @@ -0,0 +1,28 @@ +import type { RouteRecordRaw } from 'vue-router'; + +import { $t } from '#/locales'; + +const routes: RouteRecordRaw[] = [ + { + meta: { + icon: 'ic:baseline-view-in-ar', + keepAlive: true, + order: 1000, + title: $t('demos.title'), + }, + name: 'Demos', + path: '/demos', + children: [ + { + meta: { + title: $t('demos.tdesign'), + }, + name: 'TDesignDemos', + path: '/demos/tdesign', + component: () => import('#/views/demos/tdesign/index.vue'), + }, + ], + }, +]; + +export default routes; diff --git a/apps/web-tdesign/src/router/routes/modules/vben.ts b/apps/web-tdesign/src/router/routes/modules/vben.ts new file mode 100644 index 000000000..b1a3537c0 --- /dev/null +++ b/apps/web-tdesign/src/router/routes/modules/vben.ts @@ -0,0 +1,94 @@ +import type { RouteRecordRaw } from 'vue-router'; + +import { + VBEN_ANT_PREVIEW_URL, + VBEN_DOC_URL, + VBEN_ELE_PREVIEW_URL, + VBEN_GITHUB_URL, + VBEN_LOGO_URL, + VBEN_NAIVE_PREVIEW_URL, +} from '@vben/constants'; +import { SvgAntdvLogoIcon } from '@vben/icons'; + +import { IFrameView } from '#/layouts'; +import { $t } from '#/locales'; + +const routes: RouteRecordRaw[] = [ + { + meta: { + badgeType: 'dot', + icon: VBEN_LOGO_URL, + order: 9998, + title: $t('demos.vben.title'), + }, + name: 'VbenProject', + path: '/vben-admin', + children: [ + { + name: 'VbenDocument', + path: '/vben-admin/document', + component: IFrameView, + meta: { + icon: 'lucide:book-open-text', + link: VBEN_DOC_URL, + title: $t('demos.vben.document'), + }, + }, + { + name: 'VbenGithub', + path: '/vben-admin/github', + component: IFrameView, + meta: { + icon: 'mdi:github', + link: VBEN_GITHUB_URL, + title: 'Github', + }, + }, + { + name: 'VbenNaive', + path: '/vben-admin/naive', + component: IFrameView, + meta: { + badgeType: 'dot', + icon: 'logos:naiveui', + link: VBEN_NAIVE_PREVIEW_URL, + title: $t('demos.vben.naive-ui'), + }, + }, + { + name: 'VbenAntdv', + path: '/vben-admin/antdv', + component: IFrameView, + meta: { + badgeType: 'dot', + icon: SvgAntdvLogoIcon, + link: VBEN_ANT_PREVIEW_URL, + title: $t('demos.vben.antdv'), + }, + }, + { + name: 'VbenElementPlus', + path: '/vben-admin/ele', + component: IFrameView, + meta: { + badgeType: 'dot', + icon: 'logos:element', + link: VBEN_ELE_PREVIEW_URL, + title: $t('demos.vben.element-plus'), + }, + }, + ], + }, + { + name: 'VbenAbout', + path: '/vben-admin/about', + component: () => import('#/views/_core/about/index.vue'), + meta: { + icon: 'lucide:copyright', + title: $t('demos.vben.about'), + order: 9999, + }, + }, +]; + +export default routes; diff --git a/apps/web-tdesign/src/store/auth.ts b/apps/web-tdesign/src/store/auth.ts new file mode 100644 index 000000000..b3b4b7494 --- /dev/null +++ b/apps/web-tdesign/src/store/auth.ts @@ -0,0 +1,117 @@ +import type { Recordable, UserInfo } from '@vben/types'; + +import { ref } from 'vue'; +import { useRouter } from 'vue-router'; + +import { LOGIN_PATH } from '@vben/constants'; +import { preferences } from '@vben/preferences'; +import { resetAllStores, useAccessStore, useUserStore } from '@vben/stores'; + +import { defineStore } from 'pinia'; + +import { notification } from '#/adapter/tdesign'; +import { getAccessCodesApi, getUserInfoApi, loginApi, logoutApi } from '#/api'; +import { $t } from '#/locales'; + +export const useAuthStore = defineStore('auth', () => { + const accessStore = useAccessStore(); + const userStore = useUserStore(); + const router = useRouter(); + + const loginLoading = ref(false); + + /** + * 异步处理登录操作 + * Asynchronously handle the login process + * @param params 登录表单数据 + */ + async function authLogin( + params: Recordable, + onSuccess?: () => Promise | void, + ) { + // 异步处理用户登录操作并获取 accessToken + let userInfo: null | UserInfo = null; + try { + loginLoading.value = true; + const { accessToken } = await loginApi(params); + + // 如果成功获取到 accessToken + if (accessToken) { + accessStore.setAccessToken(accessToken); + // 获取用户信息并存储到 accessStore 中 + const [fetchUserInfoResult, accessCodes] = await Promise.all([ + fetchUserInfo(), + getAccessCodesApi(), + ]); + + userInfo = fetchUserInfoResult; + + userStore.setUserInfo(userInfo); + accessStore.setAccessCodes(accessCodes); + + if (accessStore.loginExpired) { + accessStore.setLoginExpired(false); + } else { + onSuccess + ? await onSuccess?.() + : await router.push( + userInfo.homePath || preferences.app.defaultHomePath, + ); + } + + if (userInfo?.realName) { + notification.success({ + title: $t('authentication.loginSuccess'), + content: `${$t('authentication.loginSuccessDesc')}:${userInfo?.realName}`, + duration: 3000, + }); + } + } + } finally { + loginLoading.value = false; + } + + return { + userInfo, + }; + } + + async function logout(redirect: boolean = true) { + try { + await logoutApi(); + } catch { + // 不做任何处理 + } + resetAllStores(); + accessStore.setLoginExpired(false); + + // 回登录页带上当前路由地址 + await router.replace({ + path: LOGIN_PATH, + query: redirect + ? { + redirect: encodeURIComponent(router.currentRoute.value.fullPath), + } + : {}, + }); + } + + async function fetchUserInfo() { + let userInfo: null | UserInfo = null; + userInfo = await getUserInfoApi(); + userStore.setUserInfo(userInfo); + return userInfo; + } + + function $reset() { + loginLoading.value = false; + } + + return { + $reset, + authLogin, + fetchUserInfo, + loginLoading, + logout, + }; +}); diff --git a/apps/web-tdesign/src/store/index.ts b/apps/web-tdesign/src/store/index.ts new file mode 100644 index 000000000..269586ee8 --- /dev/null +++ b/apps/web-tdesign/src/store/index.ts @@ -0,0 +1 @@ +export * from './auth'; diff --git a/apps/web-tdesign/src/views/_core/README.md b/apps/web-tdesign/src/views/_core/README.md new file mode 100644 index 000000000..8248afe6c --- /dev/null +++ b/apps/web-tdesign/src/views/_core/README.md @@ -0,0 +1,3 @@ +# \_core + +此目录包含应用程序正常运行所需的基本视图。这些视图是应用程序布局中使用的视图。 diff --git a/apps/web-tdesign/src/views/_core/about/index.vue b/apps/web-tdesign/src/views/_core/about/index.vue new file mode 100644 index 000000000..0ee524335 --- /dev/null +++ b/apps/web-tdesign/src/views/_core/about/index.vue @@ -0,0 +1,9 @@ + + + diff --git a/apps/web-tdesign/src/views/_core/authentication/code-login.vue b/apps/web-tdesign/src/views/_core/authentication/code-login.vue new file mode 100644 index 000000000..acfd1fd78 --- /dev/null +++ b/apps/web-tdesign/src/views/_core/authentication/code-login.vue @@ -0,0 +1,69 @@ + + + diff --git a/apps/web-tdesign/src/views/_core/authentication/forget-password.vue b/apps/web-tdesign/src/views/_core/authentication/forget-password.vue new file mode 100644 index 000000000..fef0d4279 --- /dev/null +++ b/apps/web-tdesign/src/views/_core/authentication/forget-password.vue @@ -0,0 +1,43 @@ + + + diff --git a/apps/web-tdesign/src/views/_core/authentication/login.vue b/apps/web-tdesign/src/views/_core/authentication/login.vue new file mode 100644 index 000000000..89af0c270 --- /dev/null +++ b/apps/web-tdesign/src/views/_core/authentication/login.vue @@ -0,0 +1,99 @@ + + + diff --git a/apps/web-tdesign/src/views/_core/authentication/qrcode-login.vue b/apps/web-tdesign/src/views/_core/authentication/qrcode-login.vue new file mode 100644 index 000000000..23f5f2dad --- /dev/null +++ b/apps/web-tdesign/src/views/_core/authentication/qrcode-login.vue @@ -0,0 +1,10 @@ + + + diff --git a/apps/web-tdesign/src/views/_core/authentication/register.vue b/apps/web-tdesign/src/views/_core/authentication/register.vue new file mode 100644 index 000000000..1a80ff51a --- /dev/null +++ b/apps/web-tdesign/src/views/_core/authentication/register.vue @@ -0,0 +1,96 @@ + + + diff --git a/apps/web-tdesign/src/views/_core/fallback/coming-soon.vue b/apps/web-tdesign/src/views/_core/fallback/coming-soon.vue new file mode 100644 index 000000000..f394930f2 --- /dev/null +++ b/apps/web-tdesign/src/views/_core/fallback/coming-soon.vue @@ -0,0 +1,7 @@ + + + diff --git a/apps/web-tdesign/src/views/_core/fallback/forbidden.vue b/apps/web-tdesign/src/views/_core/fallback/forbidden.vue new file mode 100644 index 000000000..8ea65fedb --- /dev/null +++ b/apps/web-tdesign/src/views/_core/fallback/forbidden.vue @@ -0,0 +1,9 @@ + + + diff --git a/apps/web-tdesign/src/views/_core/fallback/internal-error.vue b/apps/web-tdesign/src/views/_core/fallback/internal-error.vue new file mode 100644 index 000000000..819a47d5e --- /dev/null +++ b/apps/web-tdesign/src/views/_core/fallback/internal-error.vue @@ -0,0 +1,9 @@ + + + diff --git a/apps/web-tdesign/src/views/_core/fallback/not-found.vue b/apps/web-tdesign/src/views/_core/fallback/not-found.vue new file mode 100644 index 000000000..4d178e9cb --- /dev/null +++ b/apps/web-tdesign/src/views/_core/fallback/not-found.vue @@ -0,0 +1,9 @@ + + + diff --git a/apps/web-tdesign/src/views/_core/fallback/offline.vue b/apps/web-tdesign/src/views/_core/fallback/offline.vue new file mode 100644 index 000000000..5de4a88de --- /dev/null +++ b/apps/web-tdesign/src/views/_core/fallback/offline.vue @@ -0,0 +1,9 @@ + + + diff --git a/apps/web-tdesign/src/views/dashboard/analytics/analytics-trends.vue b/apps/web-tdesign/src/views/dashboard/analytics/analytics-trends.vue new file mode 100644 index 000000000..f1f0b232a --- /dev/null +++ b/apps/web-tdesign/src/views/dashboard/analytics/analytics-trends.vue @@ -0,0 +1,98 @@ + + + diff --git a/apps/web-tdesign/src/views/dashboard/analytics/analytics-visits-data.vue b/apps/web-tdesign/src/views/dashboard/analytics/analytics-visits-data.vue new file mode 100644 index 000000000..190fb41f4 --- /dev/null +++ b/apps/web-tdesign/src/views/dashboard/analytics/analytics-visits-data.vue @@ -0,0 +1,82 @@ + + + diff --git a/apps/web-tdesign/src/views/dashboard/analytics/analytics-visits-sales.vue b/apps/web-tdesign/src/views/dashboard/analytics/analytics-visits-sales.vue new file mode 100644 index 000000000..02f509123 --- /dev/null +++ b/apps/web-tdesign/src/views/dashboard/analytics/analytics-visits-sales.vue @@ -0,0 +1,46 @@ + + + diff --git a/apps/web-tdesign/src/views/dashboard/analytics/analytics-visits-source.vue b/apps/web-tdesign/src/views/dashboard/analytics/analytics-visits-source.vue new file mode 100644 index 000000000..0915c7af7 --- /dev/null +++ b/apps/web-tdesign/src/views/dashboard/analytics/analytics-visits-source.vue @@ -0,0 +1,65 @@ + + + diff --git a/apps/web-tdesign/src/views/dashboard/analytics/analytics-visits.vue b/apps/web-tdesign/src/views/dashboard/analytics/analytics-visits.vue new file mode 100644 index 000000000..7e0f10133 --- /dev/null +++ b/apps/web-tdesign/src/views/dashboard/analytics/analytics-visits.vue @@ -0,0 +1,55 @@ + + + diff --git a/apps/web-tdesign/src/views/dashboard/analytics/index.vue b/apps/web-tdesign/src/views/dashboard/analytics/index.vue new file mode 100644 index 000000000..5e3d6d285 --- /dev/null +++ b/apps/web-tdesign/src/views/dashboard/analytics/index.vue @@ -0,0 +1,90 @@ + + + diff --git a/apps/web-tdesign/src/views/dashboard/workspace/index.vue b/apps/web-tdesign/src/views/dashboard/workspace/index.vue new file mode 100644 index 000000000..b95d61381 --- /dev/null +++ b/apps/web-tdesign/src/views/dashboard/workspace/index.vue @@ -0,0 +1,266 @@ + + + diff --git a/apps/web-tdesign/src/views/demos/tdesign/index.vue b/apps/web-tdesign/src/views/demos/tdesign/index.vue new file mode 100644 index 000000000..f44f96e50 --- /dev/null +++ b/apps/web-tdesign/src/views/demos/tdesign/index.vue @@ -0,0 +1,67 @@ + + + diff --git a/apps/web-tdesign/tailwind.config.mjs b/apps/web-tdesign/tailwind.config.mjs new file mode 100644 index 000000000..f17f556fa --- /dev/null +++ b/apps/web-tdesign/tailwind.config.mjs @@ -0,0 +1 @@ +export { default } from '@vben/tailwind-config'; diff --git a/apps/web-tdesign/tsconfig.json b/apps/web-tdesign/tsconfig.json new file mode 100644 index 000000000..02c287fe6 --- /dev/null +++ b/apps/web-tdesign/tsconfig.json @@ -0,0 +1,12 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@vben/tsconfig/web-app.json", + "compilerOptions": { + "baseUrl": ".", + "paths": { + "#/*": ["./src/*"] + } + }, + "references": [{ "path": "./tsconfig.node.json" }], + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"] +} diff --git a/apps/web-tdesign/tsconfig.node.json b/apps/web-tdesign/tsconfig.node.json new file mode 100644 index 000000000..c2f0d86cc --- /dev/null +++ b/apps/web-tdesign/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@vben/tsconfig/node.json", + "compilerOptions": { + "composite": true, + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "noEmit": false + }, + "include": ["vite.config.mts"] +} diff --git a/apps/web-tdesign/vite.config.mts b/apps/web-tdesign/vite.config.mts new file mode 100644 index 000000000..b6360f1d4 --- /dev/null +++ b/apps/web-tdesign/vite.config.mts @@ -0,0 +1,20 @@ +import { defineConfig } from '@vben/vite-config'; + +export default defineConfig(async () => { + return { + application: {}, + vite: { + server: { + proxy: { + '/api': { + changeOrigin: true, + rewrite: (path) => path.replace(/^\/api/, ''), + // mock代理目标地址 + target: 'http://localhost:5320/api', + ws: true, + }, + }, + }, + }, + }; +}); diff --git a/docs/src/en/guide/essentials/development.md b/docs/src/en/guide/essentials/development.md index 9ff832b7b..437810f7a 100644 --- a/docs/src/en/guide/essentials/development.md +++ b/docs/src/en/guide/essentials/development.md @@ -60,6 +60,8 @@ The execution command is: `pnpm run [script]` or `npm run [script]`. "build:ele": "pnpm run build --filter=@vben/web-ele", // Build the web-naive application separately "build:naive": "pnpm run build --filter=@vben/naive", + // Build the web-tdesign application separately + "build:tdesign": "pnpm run build --filter=@vben/web-tdesign", // Build the playground application separately "build:play": "pnpm run build --filter=@vben/playground", // Changeset version management diff --git a/docs/src/en/guide/introduction/thin.md b/docs/src/en/guide/introduction/thin.md index a310ef398..7ca0468da 100644 --- a/docs/src/en/guide/introduction/thin.md +++ b/docs/src/en/guide/introduction/thin.md @@ -56,6 +56,7 @@ After slimming down, you may need to adjust commands according to your project. "build:docs": "pnpm run build --filter=@vben/docs", "build:ele": "pnpm run build --filter=@vben/web-ele", "build:naive": "pnpm run build --filter=@vben/web-naive", + "build:tdesign": "pnpm run build --filter=@vben/web-tdesign", "build:play": "pnpm run build --filter=@vben/playground", "dev:antd": "pnpm -F @vben/web-antd run dev", "dev:docs": "pnpm -F @vben/docs run dev", diff --git a/docs/src/guide/essentials/development.md b/docs/src/guide/essentials/development.md index cb55b6b5c..7f4e5107c 100644 --- a/docs/src/guide/essentials/development.md +++ b/docs/src/guide/essentials/development.md @@ -60,6 +60,8 @@ npm 脚本是项目常见的配置,用于执行一些常见的任务,比如 "build:ele": "pnpm run build --filter=@vben/web-ele", // 单独构建 web-naive 应用 "build:naive": "pnpm run build --filter=@vben/naive", + // 单独构建 web-tdesign 应用 + "build:tdesign": "pnpm run build --filter=@vben/web-tdesign", // 单独构建 playground 应用 "build:play": "pnpm run build --filter=@vben/playground", // changeset 版本管理 diff --git a/docs/src/guide/introduction/thin.md b/docs/src/guide/introduction/thin.md index 808840058..157d51ffc 100644 --- a/docs/src/guide/introduction/thin.md +++ b/docs/src/guide/introduction/thin.md @@ -60,6 +60,7 @@ pnpm install "build:docs": "pnpm run build --filter=@vben/docs", "build:ele": "pnpm run build --filter=@vben/web-ele", "build:naive": "pnpm run build --filter=@vben/web-naive", + "build:tdesign": "pnpm run build --filter=@vben/web-tdesign", "build:play": "pnpm run build --filter=@vben/playground", "dev:antd": "pnpm -F @vben/web-antd run dev", "dev:docs": "pnpm -F @vben/docs run dev", diff --git a/package.json b/package.json index 0745b1137..1fa7eb49f 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "build:docs": "pnpm run build --filter=@vben/docs", "build:ele": "pnpm run build --filter=@vben/web-ele", "build:naive": "pnpm run build --filter=@vben/web-naive", + "build:tdesign": "pnpm run build --filter=@vben/web-tdesign", "build:play": "pnpm run build --filter=@vben/playground", "changeset": "pnpm exec changeset", "check": "pnpm run check:circular && pnpm run check:dep && pnpm run check:type && pnpm check:cspell", @@ -46,6 +47,7 @@ "dev:docs": "pnpm -F @vben/docs run dev", "dev:ele": "pnpm -F @vben/web-ele run dev", "dev:naive": "pnpm -F @vben/web-naive run dev", + "dev:tdesign": "pnpm -F @vben/web-tdesign run dev", "dev:play": "pnpm -F @vben/playground run dev", "format": "vsh lint --format", "lint": "vsh lint", diff --git a/packages/@core/base/shared/src/constants/vben.ts b/packages/@core/base/shared/src/constants/vben.ts index 777768852..da513da16 100644 --- a/packages/@core/base/shared/src/constants/vben.ts +++ b/packages/@core/base/shared/src/constants/vben.ts @@ -27,3 +27,5 @@ export const VBEN_ELE_PREVIEW_URL = 'https://ele.vben.pro'; export const VBEN_NAIVE_PREVIEW_URL = 'https://naive.vben.pro'; export const VBEN_ANT_PREVIEW_URL = 'https://ant.vben.pro'; + +export const VBEN_TD_PREVIEW_URL = 'https://tdesign.vben.pro'; diff --git a/packages/@core/base/shared/src/utils/date.ts b/packages/@core/base/shared/src/utils/date.ts index f77b824a9..2f53041f1 100644 --- a/packages/@core/base/shared/src/utils/date.ts +++ b/packages/@core/base/shared/src/utils/date.ts @@ -7,7 +7,19 @@ dayjs.extend(timezone); type FormatDate = Date | dayjs.Dayjs | number | string; -export function formatDate(time: FormatDate, format = 'YYYY-MM-DD') { +type Format = + | 'HH' + | 'HH:mm' + | 'HH:mm:ss' + | 'YYYY' + | 'YYYY-MM' + | 'YYYY-MM-DD' + | 'YYYY-MM-DD HH' + | 'YYYY-MM-DD HH:mm' + | 'YYYY-MM-DD HH:mm:ss' + | (string & {}); + +export function formatDate(time?: FormatDate, format: Format = 'YYYY-MM-DD') { try { const date = dayjs.isDayjs(time) ? time : dayjs(time); if (!date.isValid()) { @@ -16,11 +28,11 @@ export function formatDate(time: FormatDate, format = 'YYYY-MM-DD') { return date.tz().format(format); } catch (error) { console.error(`Error formatting date: ${error}`); - return String(time); + return String(time ?? ''); } } -export function formatDateTime(time: FormatDate) { +export function formatDateTime(time?: FormatDate) { return formatDate(time, 'YYYY-MM-DD HH:mm:ss'); } diff --git a/packages/@core/ui-kit/shadcn-ui/src/components/button/button.ts b/packages/@core/ui-kit/shadcn-ui/src/components/button/button.ts index c95979852..e12729a4e 100644 --- a/packages/@core/ui-kit/shadcn-ui/src/components/button/button.ts +++ b/packages/@core/ui-kit/shadcn-ui/src/components/button/button.ts @@ -13,7 +13,7 @@ export interface VbenButtonProps { /** * Change the default rendered element for the one passed as a child, merging their props and behavior. * - * Read our [Composition](https://www.reka-vue.com/guides/composition.html) guide for more details. + * Read our [Composition](https://www.reka-ui.com/docs/guides/composition) guide for more details. */ asChild?: boolean; class?: any; diff --git a/packages/icons/src/svg/icons/tdesign-logo.svg b/packages/icons/src/svg/icons/tdesign-logo.svg new file mode 100644 index 000000000..bdbba5cd9 --- /dev/null +++ b/packages/icons/src/svg/icons/tdesign-logo.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/icons/src/svg/index.ts b/packages/icons/src/svg/index.ts index 00fe7e65d..1e81686c6 100644 --- a/packages/icons/src/svg/index.ts +++ b/packages/icons/src/svg/index.ts @@ -16,6 +16,7 @@ const SvgGoogleIcon = createIconifyIcon('svg:google'); const SvgQQChatIcon = createIconifyIcon('svg:qqchat'); const SvgWeChatIcon = createIconifyIcon('svg:wechat'); const SvgDingDingIcon = createIconifyIcon('svg:dingding'); +const SvgTDesignIcon = createIconifyIcon('svg:tdesign-logo'); /** AI */ const SvgGptIcon = createIconifyIcon('svg:gpt'); @@ -65,6 +66,7 @@ export { SvgGptIcon, SvgMockIcon, SvgQQChatIcon, + SvgTDesignIcon, SvgWalletIcon, SvgWeChatIcon, SvgWxAppIcon, diff --git a/playground/src/api/request.ts b/playground/src/api/request.ts index e741552dd..a88553613 100644 --- a/playground/src/api/request.ts +++ b/playground/src/api/request.ts @@ -29,11 +29,15 @@ function createRequestClient(baseURL: string, options?: RequestClientOptions) { baseURL, transformResponse: (data: any, header: AxiosResponseHeaders) => { // storeAsString指示将BigInt存储为字符串,设为false则会存储为内置的BigInt类型 - return header.getContentType()?.toString().includes('application/json') - ? cloneDeep( - JSONBigInt({ storeAsString: true, strict: true }).parse(data), - ) - : data; + if ( + header.getContentType()?.toString().includes('application/json') && + typeof data === 'string' + ) { + return cloneDeep( + JSONBigInt({ storeAsString: true, strict: true }).parse(data), + ); + } + return data; }, }); diff --git a/playground/src/locales/langs/en-US/demos.json b/playground/src/locales/langs/en-US/demos.json index 44b12780e..8697ea3c6 100644 --- a/playground/src/locales/langs/en-US/demos.json +++ b/playground/src/locales/langs/en-US/demos.json @@ -65,6 +65,7 @@ "document": "Document", "antdv": "Ant Design Vue Version", "naive-ui": "Naive UI Version", - "element-plus": "Element Plus Version" + "element-plus": "Element Plus Version", + "tdesign": "TDesign Vue Version" } } diff --git a/playground/src/locales/langs/zh-CN/demos.json b/playground/src/locales/langs/zh-CN/demos.json index 5cd87ce56..b7823b72e 100644 --- a/playground/src/locales/langs/zh-CN/demos.json +++ b/playground/src/locales/langs/zh-CN/demos.json @@ -66,6 +66,7 @@ "document": "文档", "antdv": "Ant Design Vue 版本", "naive-ui": "Naive UI 版本", - "element-plus": "Element Plus 版本" + "element-plus": "Element Plus 版本", + "tdesign": "TDesign Vue 版本" } } diff --git a/playground/src/router/routes/modules/vben.ts b/playground/src/router/routes/modules/vben.ts index ec44d58ab..1c1777980 100644 --- a/playground/src/router/routes/modules/vben.ts +++ b/playground/src/router/routes/modules/vben.ts @@ -7,8 +7,9 @@ import { VBEN_GITHUB_URL, VBEN_LOGO_URL, VBEN_NAIVE_PREVIEW_URL, + VBEN_TD_PREVIEW_URL, } from '@vben/constants'; -import { SvgAntdvLogoIcon } from '@vben/icons'; +import { SvgAntdvLogoIcon, SvgTDesignIcon } from '@vben/icons'; import { IFrameView } from '#/layouts'; import { $t } from '#/locales'; @@ -77,6 +78,17 @@ const routes: RouteRecordRaw[] = [ title: $t('demos.vben.element-plus'), }, }, + { + name: 'VbenTDesign', + path: '/vben-admin/tdesign', + component: IFrameView, + meta: { + badgeType: 'dot', + icon: SvgTDesignIcon, + link: VBEN_TD_PREVIEW_URL, + title: $t('demos.vben.tdesign'), + }, + }, ], }, { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bbe029d79..a09ad1257 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -44,7 +44,7 @@ catalogs: version: 3.2.32 '@iconify/json': specifier: ^2.2.354 - version: 2.2.404 + version: 2.2.405 '@iconify/tailwind': specifier: ^1.2.0 version: 1.2.0 @@ -74,7 +74,7 @@ catalogs: version: 1.56.1 '@pnpm/workspace.read-manifest': specifier: ^1000.2.0 - version: 1000.2.5 + version: 1000.2.6 '@stylistic/stylelint-plugin': specifier: ^3.1.3 version: 3.1.3 @@ -173,7 +173,7 @@ catalogs: version: 5.1.1 '@vue/shared': specifier: ^3.5.17 - version: 3.5.23 + version: 3.5.24 '@vue/test-utils': specifier: ^2.4.6 version: 2.4.6 @@ -473,7 +473,7 @@ catalogs: version: 6.1.0 rollup: specifier: ^4.44.1 - version: 4.52.5 + version: 4.53.1 rollup-plugin-visualizer: specifier: ^5.14.0 version: 5.14.0 @@ -614,10 +614,10 @@ catalogs: version: 4.1.0 vxe-pc-ui: specifier: ^4.9.29 - version: 4.10.17 + version: 4.10.18 vxe-table: specifier: ^4.16.11 - version: 4.17.11 + version: 4.17.12 watermark-js-plus: specifier: ^1.6.2 version: 1.6.3 @@ -681,10 +681,10 @@ importers: version: link:scripts/vsh '@vitejs/plugin-vue': specifier: 'catalog:' - version: 6.0.1(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.23(typescript@5.9.3)) + version: 6.0.1(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)) '@vitejs/plugin-vue-jsx': specifier: 'catalog:' - version: 5.1.1(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.23(typescript@5.9.3)) + version: 5.1.1(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)) '@vue/test-utils': specifier: 'catalog:' version: 2.4.6 @@ -723,7 +723,7 @@ importers: version: 5.9.3 unbuild: specifier: 'catalog:' - version: 3.6.1(sass@1.93.3)(typescript@5.9.3)(vue-tsc@2.2.10(typescript@5.9.3))(vue@3.5.23(typescript@5.9.3)) + version: 3.6.1(sass@1.93.3)(typescript@5.9.3)(vue-tsc@2.2.10(typescript@5.9.3))(vue@3.5.24(typescript@5.9.3)) vite: specifier: 'catalog:' version: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1) @@ -732,7 +732,7 @@ importers: version: 3.2.4(@types/node@24.10.0)(happy-dom@17.6.3)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1) vue: specifier: ^3.5.17 - version: 3.5.23(typescript@5.9.3) + version: 3.5.24(typescript@5.9.3) vue-tsc: specifier: 'catalog:' version: 2.2.10(typescript@5.9.3) @@ -760,13 +760,13 @@ importers: dependencies: '@form-create/ant-design-vue': specifier: 'catalog:' - version: 3.2.32(vue@3.5.23(typescript@5.9.3)) + version: 3.2.32(vue@3.5.24(typescript@5.9.3)) '@form-create/antd-designer': specifier: 'catalog:' - version: 3.3.2(vue@3.5.23(typescript@5.9.3)) + version: 3.3.2(vue@3.5.24(typescript@5.9.3)) '@tinymce/tinymce-vue': specifier: 'catalog:' - version: 6.3.0(tinymce@7.9.1)(vue@3.5.23(typescript@5.9.3)) + version: 6.3.0(tinymce@7.9.1)(vue@3.5.24(typescript@5.9.3)) '@vben/access': specifier: workspace:* version: link:../../packages/effects/access @@ -811,16 +811,16 @@ importers: version: link:../../packages/utils '@videojs-player/vue': specifier: 'catalog:' - version: 1.0.0(@types/video.js@7.3.58)(video.js@7.21.7)(vue@3.5.23(typescript@5.9.3)) + version: 1.0.0(@types/video.js@7.3.58)(video.js@7.21.7)(vue@3.5.24(typescript@5.9.3)) '@vueuse/core': specifier: 'catalog:' - version: 13.9.0(vue@3.5.23(typescript@5.9.3)) + version: 13.9.0(vue@3.5.24(typescript@5.9.3)) '@vueuse/integrations': specifier: 'catalog:' - version: 14.0.0(async-validator@4.2.5)(axios@1.13.2)(focus-trap@7.6.6)(nprogress@0.2.0)(qrcode@1.5.4)(sortablejs@1.15.6)(vue@3.5.23(typescript@5.9.3)) + version: 14.0.0(async-validator@4.2.5)(axios@1.13.2)(focus-trap@7.6.6)(nprogress@0.2.0)(qrcode@1.5.4)(sortablejs@1.15.6)(vue@3.5.24(typescript@5.9.3)) ant-design-vue: specifier: 'catalog:' - version: 4.2.6(vue@3.5.23(typescript@5.9.3)) + version: 4.2.6(vue@3.5.24(typescript@5.9.3)) benz-amr-recorder: specifier: 'catalog:' version: 1.1.5 @@ -853,7 +853,7 @@ importers: version: 11.11.1 pinia: specifier: ^3.0.3 - version: 3.0.4(typescript@5.9.3)(vue@3.5.23(typescript@5.9.3)) + version: 3.0.4(typescript@5.9.3)(vue@3.5.24(typescript@5.9.3)) steady-xml: specifier: 'catalog:' version: 0.1.0 @@ -865,34 +865,34 @@ importers: version: 7.21.7 vue: specifier: ^3.5.17 - version: 3.5.23(typescript@5.9.3) + version: 3.5.24(typescript@5.9.3) vue-dompurify-html: specifier: 'catalog:' - version: 5.3.0(vue@3.5.23(typescript@5.9.3)) + version: 5.3.0(vue@3.5.24(typescript@5.9.3)) vue-router: specifier: 'catalog:' - version: 4.6.3(vue@3.5.23(typescript@5.9.3)) + version: 4.6.3(vue@3.5.24(typescript@5.9.3)) vue3-print-nb: specifier: 'catalog:' version: 0.1.4(typescript@5.9.3) vue3-signature: specifier: 'catalog:' - version: 0.2.4(vue@3.5.23(typescript@5.9.3)) + version: 0.2.4(vue@3.5.24(typescript@5.9.3)) vuedraggable: specifier: 'catalog:' - version: 4.1.0(vue@3.5.23(typescript@5.9.3)) + version: 4.1.0(vue@3.5.24(typescript@5.9.3)) apps/web-ele: dependencies: '@form-create/designer': specifier: 'catalog:' - version: 3.3.1(vue@3.5.23(typescript@5.9.3)) + version: 3.3.1(vue@3.5.24(typescript@5.9.3)) '@form-create/element-ui': specifier: 'catalog:' - version: 3.2.32(vue@3.5.23(typescript@5.9.3)) + version: 3.2.32(vue@3.5.24(typescript@5.9.3)) '@tinymce/tinymce-vue': specifier: 'catalog:' - version: 6.3.0(tinymce@7.9.1)(vue@3.5.23(typescript@5.9.3)) + version: 6.3.0(tinymce@7.9.1)(vue@3.5.24(typescript@5.9.3)) '@vben/access': specifier: workspace:* version: link:../../packages/effects/access @@ -937,13 +937,13 @@ importers: version: link:../../packages/utils '@videojs-player/vue': specifier: 'catalog:' - version: 1.0.0(@types/video.js@7.3.58)(video.js@7.21.7)(vue@3.5.23(typescript@5.9.3)) + version: 1.0.0(@types/video.js@7.3.58)(video.js@7.21.7)(vue@3.5.24(typescript@5.9.3)) '@vueuse/core': specifier: 'catalog:' - version: 13.9.0(vue@3.5.23(typescript@5.9.3)) + version: 13.9.0(vue@3.5.24(typescript@5.9.3)) '@vueuse/integrations': specifier: 'catalog:' - version: 14.0.0(async-validator@4.2.5)(axios@1.13.2)(focus-trap@7.6.6)(nprogress@0.2.0)(qrcode@1.5.4)(sortablejs@1.15.6)(vue@3.5.23(typescript@5.9.3)) + version: 14.0.0(async-validator@4.2.5)(axios@1.13.2)(focus-trap@7.6.6)(nprogress@0.2.0)(qrcode@1.5.4)(sortablejs@1.15.6)(vue@3.5.24(typescript@5.9.3)) benz-amr-recorder: specifier: 'catalog:' version: 1.1.5 @@ -955,13 +955,13 @@ importers: version: 1.11.19 element-plus: specifier: 'catalog:' - version: 2.11.7(vue@3.5.23(typescript@5.9.3)) + version: 2.11.7(vue@3.5.24(typescript@5.9.3)) highlight.js: specifier: 'catalog:' version: 11.11.1 pinia: specifier: ^3.0.3 - version: 3.0.4(typescript@5.9.3)(vue@3.5.23(typescript@5.9.3)) + version: 3.0.4(typescript@5.9.3)(vue@3.5.24(typescript@5.9.3)) tinymce: specifier: 'catalog:' version: 7.9.1 @@ -970,16 +970,16 @@ importers: version: 7.21.7 vue: specifier: ^3.5.17 - version: 3.5.23(typescript@5.9.3) + version: 3.5.24(typescript@5.9.3) vue-dompurify-html: specifier: 'catalog:' - version: 5.3.0(vue@3.5.23(typescript@5.9.3)) + version: 5.3.0(vue@3.5.24(typescript@5.9.3)) vue-router: specifier: 'catalog:' - version: 4.6.3(vue@3.5.23(typescript@5.9.3)) + version: 4.6.3(vue@3.5.24(typescript@5.9.3)) vuedraggable: specifier: 'catalog:' - version: 4.1.0(vue@3.5.23(typescript@5.9.3)) + version: 4.1.0(vue@3.5.24(typescript@5.9.3)) devDependencies: unplugin-element-plus: specifier: 'catalog:' @@ -1031,22 +1031,92 @@ importers: version: link:../../packages/utils '@vueuse/core': specifier: 'catalog:' - version: 13.9.0(vue@3.5.23(typescript@5.9.3)) + version: 13.9.0(vue@3.5.24(typescript@5.9.3)) dayjs: specifier: 'catalog:' version: 1.11.19 naive-ui: specifier: 'catalog:' - version: 2.43.1(vue@3.5.23(typescript@5.9.3)) + version: 2.43.1(vue@3.5.24(typescript@5.9.3)) pinia: specifier: ^3.0.3 - version: 3.0.4(typescript@5.9.3)(vue@3.5.23(typescript@5.9.3)) + version: 3.0.4(typescript@5.9.3)(vue@3.5.24(typescript@5.9.3)) vue: specifier: ^3.5.17 - version: 3.5.23(typescript@5.9.3) + version: 3.5.24(typescript@5.9.3) vue-router: specifier: 'catalog:' - version: 4.6.3(vue@3.5.23(typescript@5.9.3)) + version: 4.6.3(vue@3.5.24(typescript@5.9.3)) + + apps/web-tdesign: + dependencies: + '@vben/access': + specifier: workspace:* + version: link:../../packages/effects/access + '@vben/common-ui': + specifier: workspace:* + version: link:../../packages/effects/common-ui + '@vben/constants': + specifier: workspace:* + version: link:../../packages/constants + '@vben/hooks': + specifier: workspace:* + version: link:../../packages/effects/hooks + '@vben/icons': + specifier: workspace:* + version: link:../../packages/icons + '@vben/layouts': + specifier: workspace:* + version: link:../../packages/effects/layouts + '@vben/locales': + specifier: workspace:* + version: link:../../packages/locales + '@vben/plugins': + specifier: workspace:* + version: link:../../packages/effects/plugins + '@vben/preferences': + specifier: workspace:* + version: link:../../packages/preferences + '@vben/request': + specifier: workspace:* + version: link:../../packages/effects/request + '@vben/stores': + specifier: workspace:* + version: link:../../packages/stores + '@vben/styles': + specifier: workspace:* + version: link:../../packages/styles + '@vben/types': + specifier: workspace:* + version: link:../../packages/types + '@vben/utils': + specifier: workspace:* + version: link:../../packages/utils + '@vueuse/core': + specifier: 'catalog:' + version: 13.9.0(vue@3.5.24(typescript@5.9.3)) + dayjs: + specifier: 'catalog:' + version: 1.11.19 + lodash-es: + specifier: ^4.17.21 + version: 4.17.21 + pinia: + specifier: ^3.0.3 + version: 3.0.4(typescript@5.9.3)(vue@3.5.24(typescript@5.9.3)) + tdesign-vue-next: + specifier: ^1.17.1 + version: 1.17.2(vue@3.5.24(typescript@5.9.3)) + vue: + specifier: ^3.5.17 + version: 3.5.24(typescript@5.9.3) + vue-router: + specifier: 'catalog:' + version: 4.6.3(vue@3.5.24(typescript@5.9.3)) + devDependencies: + '@types/lodash-es': + specifier: ^4.17.12 + version: 4.17.12 docs: dependencies: @@ -1067,23 +1137,23 @@ importers: version: link:../packages/styles ant-design-vue: specifier: 'catalog:' - version: 4.2.6(vue@3.5.23(typescript@5.9.3)) + version: 4.2.6(vue@3.5.24(typescript@5.9.3)) lucide-vue-next: specifier: 'catalog:' - version: 0.507.0(vue@3.5.23(typescript@5.9.3)) + version: 0.507.0(vue@3.5.24(typescript@5.9.3)) medium-zoom: specifier: 'catalog:' version: 1.1.0 reka-ui: specifier: 'catalog:' - version: 2.6.0(typescript@5.9.3)(vue@3.5.23(typescript@5.9.3)) + version: 2.6.0(typescript@5.9.3)(vue@3.5.24(typescript@5.9.3)) vitepress-plugin-group-icons: specifier: 'catalog:' version: 1.6.5(vite@5.4.21(@types/node@24.10.0)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)) devDependencies: '@nolebase/vitepress-plugin-git-changelog': specifier: 'catalog:' - version: 2.18.2(vitepress@1.6.4(@algolia/client-search@5.42.0)(@types/node@24.10.0)(async-validator@4.2.5)(axios@1.13.2)(less@4.4.2)(nprogress@0.2.0)(postcss@8.5.6)(qrcode@1.5.4)(sass@1.93.3)(search-insights@2.17.3)(sortablejs@1.15.6)(terser@5.44.1)(typescript@5.9.3))(vue@3.5.23(typescript@5.9.3)) + version: 2.18.2(vitepress@1.6.4(@algolia/client-search@5.43.0)(@types/node@24.10.0)(async-validator@4.2.5)(axios@1.13.2)(less@4.4.2)(nprogress@0.2.0)(postcss@8.5.6)(qrcode@1.5.4)(sass@1.93.3)(search-insights@2.17.3)(sortablejs@1.15.6)(terser@5.44.1)(typescript@5.9.3))(vue@3.5.24(typescript@5.9.3)) '@vben/vite-config': specifier: workspace:* version: link:../internal/vite-config @@ -1092,10 +1162,10 @@ importers: version: 1.0.1(vite-plugin-pwa@1.1.0(vite@5.4.21(@types/node@24.10.0)(less@4.4.2)(sass@1.93.3)(terser@5.44.1))(workbox-build@7.3.0)(workbox-window@7.3.0)) vitepress: specifier: 'catalog:' - version: 1.6.4(@algolia/client-search@5.42.0)(@types/node@24.10.0)(async-validator@4.2.5)(axios@1.13.2)(less@4.4.2)(nprogress@0.2.0)(postcss@8.5.6)(qrcode@1.5.4)(sass@1.93.3)(search-insights@2.17.3)(sortablejs@1.15.6)(terser@5.44.1)(typescript@5.9.3) + version: 1.6.4(@algolia/client-search@5.43.0)(@types/node@24.10.0)(async-validator@4.2.5)(axios@1.13.2)(less@4.4.2)(nprogress@0.2.0)(postcss@8.5.6)(qrcode@1.5.4)(sass@1.93.3)(search-insights@2.17.3)(sortablejs@1.15.6)(terser@5.44.1)(typescript@5.9.3) vue: specifier: ^3.5.17 - version: 3.5.23(typescript@5.9.3) + version: 3.5.24(typescript@5.9.3) internal/lint-configs/commitlint-config: dependencies: @@ -1286,7 +1356,7 @@ importers: dependencies: '@iconify/json': specifier: 'catalog:' - version: 2.2.404 + version: 2.2.405 '@iconify/tailwind': specifier: 'catalog:' version: 1.2.0 @@ -1341,7 +1411,7 @@ importers: dependencies: '@intlify/unplugin-vue-i18n': specifier: 'catalog:' - version: 6.0.8(@vue/compiler-dom@3.5.23)(eslint@9.39.1(jiti@2.6.1))(rollup@4.52.5)(typescript@5.9.3)(vue-i18n@11.1.12(vue@3.5.23(typescript@5.9.3)))(vue@3.5.23(typescript@5.9.3)) + version: 6.0.8(@vue/compiler-dom@3.5.24)(eslint@9.39.1(jiti@2.6.1))(rollup@4.53.1)(typescript@5.9.3)(vue-i18n@11.1.12(vue@3.5.24(typescript@5.9.3)))(vue@3.5.24(typescript@5.9.3)) '@jspm/generator': specifier: 'catalog:' version: 2.7.6 @@ -1368,11 +1438,11 @@ importers: version: 1.1.0(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1))(workbox-build@7.3.0)(workbox-window@7.3.0) vite-plugin-vue-devtools: specifier: 'catalog:' - version: 7.7.7(rollup@4.52.5)(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.23(typescript@5.9.3)) + version: 7.7.7(rollup@4.53.1)(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)) devDependencies: '@pnpm/workspace.read-manifest': specifier: 'catalog:' - version: 1000.2.5 + version: 1000.2.6 '@types/archiver': specifier: 'catalog:' version: 6.0.4 @@ -1384,10 +1454,10 @@ importers: version: link:../node-utils '@vitejs/plugin-vue': specifier: 'catalog:' - version: 6.0.1(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.23(typescript@5.9.3)) + version: 6.0.1(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)) '@vitejs/plugin-vue-jsx': specifier: 'catalog:' - version: 5.1.1(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.23(typescript@5.9.3)) + version: 5.1.1(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)) dayjs: specifier: 'catalog:' version: 1.11.19 @@ -1396,10 +1466,10 @@ importers: version: 16.6.1 rollup: specifier: 'catalog:' - version: 4.52.5 + version: 4.53.1 rollup-plugin-visualizer: specifier: 'catalog:' - version: 5.14.0(rollup@4.52.5) + version: 5.14.0(rollup@4.53.1) sass: specifier: 'catalog:' version: 1.93.3 @@ -1411,7 +1481,7 @@ importers: version: 0.5.1(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1)) vite-plugin-dts: specifier: 'catalog:' - version: 4.5.4(@types/node@24.10.0)(rollup@4.52.5)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1)) + version: 4.5.4(@types/node@24.10.0)(rollup@4.53.1)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1)) vite-plugin-html: specifier: 'catalog:' version: 3.2.2(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1)) @@ -1425,13 +1495,13 @@ importers: dependencies: '@iconify/vue': specifier: 'catalog:' - version: 5.0.0(vue@3.5.23(typescript@5.9.3)) + version: 5.0.0(vue@3.5.24(typescript@5.9.3)) lucide-vue-next: specifier: 'catalog:' - version: 0.507.0(vue@3.5.23(typescript@5.9.3)) + version: 0.507.0(vue@3.5.24(typescript@5.9.3)) vue: specifier: ^3.5.17 - version: 3.5.23(typescript@5.9.3) + version: 3.5.24(typescript@5.9.3) packages/@core/base/shared: dependencies: @@ -1440,10 +1510,10 @@ importers: version: 4.2.0 '@tanstack/vue-store': specifier: 'catalog:' - version: 0.7.7(vue@3.5.23(typescript@5.9.3)) + version: 0.7.7(vue@3.5.24(typescript@5.9.3)) '@vue/shared': specifier: 'catalog:' - version: 3.5.23 + version: 3.5.24 clsx: specifier: ^2.1.1 version: 2.1.1 @@ -1504,10 +1574,10 @@ importers: dependencies: vue: specifier: ^3.5.17 - version: 3.5.23(typescript@5.9.3) + version: 3.5.24(typescript@5.9.3) vue-router: specifier: 'catalog:' - version: 4.6.3(vue@3.5.23(typescript@5.9.3)) + version: 4.6.3(vue@3.5.24(typescript@5.9.3)) packages/@core/composables: dependencies: @@ -1516,16 +1586,16 @@ importers: version: link:../base/shared '@vueuse/core': specifier: 'catalog:' - version: 13.9.0(vue@3.5.23(typescript@5.9.3)) + version: 13.9.0(vue@3.5.24(typescript@5.9.3)) reka-ui: specifier: 'catalog:' - version: 2.6.0(typescript@5.9.3)(vue@3.5.23(typescript@5.9.3)) + version: 2.6.0(typescript@5.9.3)(vue@3.5.24(typescript@5.9.3)) sortablejs: specifier: 'catalog:' version: 1.15.6 vue: specifier: ^3.5.17 - version: 3.5.23(typescript@5.9.3) + version: 3.5.24(typescript@5.9.3) devDependencies: '@types/sortablejs': specifier: 'catalog:' @@ -1541,10 +1611,10 @@ importers: version: link:../base/typings '@vueuse/core': specifier: 'catalog:' - version: 13.9.0(vue@3.5.23(typescript@5.9.3)) + version: 13.9.0(vue@3.5.24(typescript@5.9.3)) vue: specifier: ^3.5.17 - version: 3.5.23(typescript@5.9.3) + version: 3.5.24(typescript@5.9.3) packages/@core/ui-kit/form-ui: dependencies: @@ -1565,16 +1635,16 @@ importers: version: link:../../base/typings '@vee-validate/zod': specifier: 'catalog:' - version: 4.15.1(vue@3.5.23(typescript@5.9.3))(zod@3.25.76) + version: 4.15.1(vue@3.5.24(typescript@5.9.3))(zod@3.25.76) '@vueuse/core': specifier: 'catalog:' - version: 13.9.0(vue@3.5.23(typescript@5.9.3)) + version: 13.9.0(vue@3.5.24(typescript@5.9.3)) vee-validate: specifier: 'catalog:' - version: 4.15.1(vue@3.5.23(typescript@5.9.3)) + version: 4.15.1(vue@3.5.24(typescript@5.9.3)) vue: specifier: ^3.5.17 - version: 3.5.23(typescript@5.9.3) + version: 3.5.24(typescript@5.9.3) zod: specifier: 'catalog:' version: 3.25.76 @@ -1601,10 +1671,10 @@ importers: version: link:../../base/typings '@vueuse/core': specifier: 'catalog:' - version: 13.9.0(vue@3.5.23(typescript@5.9.3)) + version: 13.9.0(vue@3.5.24(typescript@5.9.3)) vue: specifier: ^3.5.17 - version: 3.5.23(typescript@5.9.3) + version: 3.5.24(typescript@5.9.3) packages/@core/ui-kit/menu-ui: dependencies: @@ -1625,10 +1695,10 @@ importers: version: link:../../base/typings '@vueuse/core': specifier: 'catalog:' - version: 13.9.0(vue@3.5.23(typescript@5.9.3)) + version: 13.9.0(vue@3.5.24(typescript@5.9.3)) vue: specifier: ^3.5.17 - version: 3.5.23(typescript@5.9.3) + version: 3.5.24(typescript@5.9.3) packages/@core/ui-kit/popup-ui: dependencies: @@ -1649,10 +1719,10 @@ importers: version: link:../../base/typings '@vueuse/core': specifier: 'catalog:' - version: 13.9.0(vue@3.5.23(typescript@5.9.3)) + version: 13.9.0(vue@3.5.24(typescript@5.9.3)) vue: specifier: ^3.5.17 - version: 3.5.23(typescript@5.9.3) + version: 3.5.24(typescript@5.9.3) packages/@core/ui-kit/shadcn-ui: dependencies: @@ -1670,22 +1740,22 @@ importers: version: link:../../base/typings '@vueuse/core': specifier: 'catalog:' - version: 13.9.0(vue@3.5.23(typescript@5.9.3)) + version: 13.9.0(vue@3.5.24(typescript@5.9.3)) class-variance-authority: specifier: 'catalog:' version: 0.7.1 lucide-vue-next: specifier: 'catalog:' - version: 0.507.0(vue@3.5.23(typescript@5.9.3)) + version: 0.507.0(vue@3.5.24(typescript@5.9.3)) reka-ui: specifier: 'catalog:' - version: 2.6.0(typescript@5.9.3)(vue@3.5.23(typescript@5.9.3)) + version: 2.6.0(typescript@5.9.3)(vue@3.5.24(typescript@5.9.3)) vee-validate: specifier: 'catalog:' - version: 4.15.1(vue@3.5.23(typescript@5.9.3)) + version: 4.15.1(vue@3.5.24(typescript@5.9.3)) vue: specifier: ^3.5.17 - version: 3.5.23(typescript@5.9.3) + version: 3.5.24(typescript@5.9.3) packages/@core/ui-kit/tabs-ui: dependencies: @@ -1703,10 +1773,10 @@ importers: version: link:../../base/typings '@vueuse/core': specifier: 'catalog:' - version: 13.9.0(vue@3.5.23(typescript@5.9.3)) + version: 13.9.0(vue@3.5.24(typescript@5.9.3)) vue: specifier: ^3.5.17 - version: 3.5.23(typescript@5.9.3) + version: 3.5.24(typescript@5.9.3) packages/constants: dependencies: @@ -1730,7 +1800,7 @@ importers: version: link:../../utils vue: specifier: ^3.5.17 - version: 3.5.23(typescript@5.9.3) + version: 3.5.24(typescript@5.9.3) packages/effects/common-ui: dependencies: @@ -1766,10 +1836,10 @@ importers: version: link:../../types '@vueuse/core': specifier: 'catalog:' - version: 13.9.0(vue@3.5.23(typescript@5.9.3)) + version: 13.9.0(vue@3.5.24(typescript@5.9.3)) '@vueuse/integrations': specifier: 'catalog:' - version: 14.0.0(async-validator@4.2.5)(axios@1.13.2)(focus-trap@7.6.6)(nprogress@0.2.0)(qrcode@1.5.4)(sortablejs@1.15.6)(vue@3.5.23(typescript@5.9.3)) + version: 14.0.0(async-validator@4.2.5)(axios@1.13.2)(focus-trap@7.6.6)(nprogress@0.2.0)(qrcode@1.5.4)(sortablejs@1.15.6)(vue@3.5.24(typescript@5.9.3)) json-bigint: specifier: 'catalog:' version: 1.0.0 @@ -1781,16 +1851,16 @@ importers: version: 6.3.7 vue: specifier: ^3.5.17 - version: 3.5.23(typescript@5.9.3) + version: 3.5.24(typescript@5.9.3) vue-json-viewer: specifier: 'catalog:' - version: 3.0.4(vue@3.5.23(typescript@5.9.3)) + version: 3.0.4(vue@3.5.24(typescript@5.9.3)) vue-router: specifier: 'catalog:' - version: 4.6.3(vue@3.5.23(typescript@5.9.3)) + version: 4.6.3(vue@3.5.24(typescript@5.9.3)) vue-tippy: specifier: 'catalog:' - version: 6.7.1(vue@3.5.23(typescript@5.9.3)) + version: 6.7.1(vue@3.5.24(typescript@5.9.3)) devDependencies: '@types/qrcode': specifier: 'catalog:' @@ -1815,13 +1885,13 @@ importers: version: link:../../utils '@vueuse/core': specifier: 'catalog:' - version: 13.9.0(vue@3.5.23(typescript@5.9.3)) + version: 13.9.0(vue@3.5.24(typescript@5.9.3)) vue: specifier: ^3.5.17 - version: 3.5.23(typescript@5.9.3) + version: 3.5.24(typescript@5.9.3) vue-router: specifier: 'catalog:' - version: 4.6.3(vue@3.5.23(typescript@5.9.3)) + version: 4.6.3(vue@3.5.24(typescript@5.9.3)) watermark-js-plus: specifier: 'catalog:' version: 1.6.3 @@ -1878,19 +1948,19 @@ importers: version: link:../../utils '@vueuse/core': specifier: 'catalog:' - version: 13.9.0(vue@3.5.23(typescript@5.9.3)) + version: 13.9.0(vue@3.5.24(typescript@5.9.3)) vue: specifier: ^3.5.17 - version: 3.5.23(typescript@5.9.3) + version: 3.5.24(typescript@5.9.3) vue-router: specifier: 'catalog:' - version: 4.6.3(vue@3.5.23(typescript@5.9.3)) + version: 4.6.3(vue@3.5.24(typescript@5.9.3)) packages/effects/plugins: dependencies: '@tinyflow-ai/vue': specifier: 'catalog:' - version: 1.1.9(svelte@5.43.4)(vue@3.5.23(typescript@5.9.3)) + version: 1.1.9(svelte@5.43.5)(vue@3.5.24(typescript@5.9.3)) '@vben-core/form-ui': specifier: workspace:* version: link:../../@core/ui-kit/form-ui @@ -1920,10 +1990,10 @@ importers: version: link:../../utils '@vueuse/core': specifier: 'catalog:' - version: 13.9.0(vue@3.5.23(typescript@5.9.3)) + version: 13.9.0(vue@3.5.24(typescript@5.9.3)) '@vueuse/motion': specifier: 'catalog:' - version: 3.0.3(vue@3.5.23(typescript@5.9.3)) + version: 3.0.3(vue@3.5.24(typescript@5.9.3)) codemirror: specifier: 'catalog:' version: 5.65.20 @@ -1947,13 +2017,13 @@ importers: version: 0.16.0(markmap-common@0.16.0) vue: specifier: ^3.5.17 - version: 3.5.23(typescript@5.9.3) + version: 3.5.24(typescript@5.9.3) vxe-pc-ui: specifier: 'catalog:' - version: 4.10.17(vue@3.5.23(typescript@5.9.3)) + version: 4.10.18(vue@3.5.24(typescript@5.9.3)) vxe-table: specifier: 'catalog:' - version: 4.17.11(vue@3.5.23(typescript@5.9.3)) + version: 4.17.12(vue@3.5.24(typescript@5.9.3)) devDependencies: '@types/codemirror': specifier: 'catalog:' @@ -2003,10 +2073,10 @@ importers: version: link:../@core/composables vue: specifier: ^3.5.17 - version: 3.5.23(typescript@5.9.3) + version: 3.5.24(typescript@5.9.3) vue-i18n: specifier: 'catalog:' - version: 11.1.12(vue@3.5.23(typescript@5.9.3)) + version: 11.1.12(vue@3.5.24(typescript@5.9.3)) packages/preferences: dependencies: @@ -2030,19 +2100,19 @@ importers: version: link:../@core/base/typings pinia: specifier: ^3.0.3 - version: 3.0.4(typescript@5.9.3)(vue@3.5.23(typescript@5.9.3)) + version: 3.0.4(typescript@5.9.3)(vue@3.5.24(typescript@5.9.3)) pinia-plugin-persistedstate: specifier: 'catalog:' - version: 4.7.1(@nuxt/kit@3.20.1)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.23(typescript@5.9.3))) + version: 4.7.1(@nuxt/kit@3.20.1)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.24(typescript@5.9.3))) secure-ls: specifier: 'catalog:' version: 2.0.0 vue: specifier: ^3.5.17 - version: 3.5.23(typescript@5.9.3) + version: 3.5.24(typescript@5.9.3) vue-router: specifier: 'catalog:' - version: 4.6.3(vue@3.5.23(typescript@5.9.3)) + version: 4.6.3(vue@3.5.24(typescript@5.9.3)) packages/styles: dependencies: @@ -2057,10 +2127,10 @@ importers: version: link:../@core/base/typings vue: specifier: ^3.5.17 - version: 3.5.23(typescript@5.9.3) + version: 3.5.24(typescript@5.9.3) vue-router: specifier: 'catalog:' - version: 4.6.3(vue@3.5.23(typescript@5.9.3)) + version: 4.6.3(vue@3.5.24(typescript@5.9.3)) packages/utils: dependencies: @@ -2072,13 +2142,13 @@ importers: version: link:../@core/base/typings vue-router: specifier: 'catalog:' - version: 4.6.3(vue@3.5.23(typescript@5.9.3)) + version: 4.6.3(vue@3.5.24(typescript@5.9.3)) playground: dependencies: '@tanstack/vue-query': specifier: 'catalog:' - version: 5.90.7(vue@3.5.23(typescript@5.9.3)) + version: 5.90.7(vue@3.5.24(typescript@5.9.3)) '@vben-core/menu-ui': specifier: workspace:* version: link:../packages/@core/ui-kit/menu-ui @@ -2126,10 +2196,10 @@ importers: version: link:../packages/utils '@vueuse/core': specifier: 'catalog:' - version: 13.9.0(vue@3.5.23(typescript@5.9.3)) + version: 13.9.0(vue@3.5.24(typescript@5.9.3)) ant-design-vue: specifier: 'catalog:' - version: 4.2.6(vue@3.5.23(typescript@5.9.3)) + version: 4.2.6(vue@3.5.24(typescript@5.9.3)) dayjs: specifier: 'catalog:' version: 1.11.19 @@ -2138,13 +2208,13 @@ importers: version: 1.0.0 pinia: specifier: ^3.0.3 - version: 3.0.4(typescript@5.9.3)(vue@3.5.23(typescript@5.9.3)) + version: 3.0.4(typescript@5.9.3)(vue@3.5.24(typescript@5.9.3)) vue: specifier: ^3.5.17 - version: 3.5.23(typescript@5.9.3) + version: 3.5.24(typescript@5.9.3) vue-router: specifier: 'catalog:' - version: 4.6.3(vue@3.5.23(typescript@5.9.3)) + version: 4.6.3(vue@3.5.24(typescript@5.9.3)) devDependencies: '@types/json-bigint': specifier: 'catalog:' @@ -2182,8 +2252,8 @@ importers: packages: - '@algolia/abtesting@1.8.0': - resolution: {integrity: sha512-Hb4BkGNnvgCj3F9XzqjiFTpA5IGkjOXwGAOV13qtc27l2qNF8X9rzSp1H5hu8XewlC0DzYtQtZZIOYzRZDyuXg==} + '@algolia/abtesting@1.9.0': + resolution: {integrity: sha512-4q9QCxFPiDIx1n5w41A1JMkrXI8p0ugCQnCGFtCKZPmWtwgWCqwVRncIbp++81xSELFZVQUfiB7Kbsla1tIBSw==} engines: {node: '>= 14.0.0'} '@algolia/autocomplete-core@1.17.7': @@ -2206,56 +2276,56 @@ packages: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' - '@algolia/client-abtesting@5.42.0': - resolution: {integrity: sha512-JLyyG7bb7XOda+w/sp8ch7rEVy6LnWs3qtxr6VJJ2XIINqGsY6U+0L3aJ6QFliBRNUeEAr2QBDxSm8u9Sal5uA==} + '@algolia/client-abtesting@5.43.0': + resolution: {integrity: sha512-YsKYkohIMxiYEAu8nppZi5EioYDUIo9Heoor8K8vMUnkUtGCOEU/Q4p5OWaYSSBx3evo09Ga9rG4jsKViIcDzQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.42.0': - resolution: {integrity: sha512-SkCrvtZpdSWjNq9NGu/TtOg4TbzRuUToXlQqV6lLePa2s/WQlEyFw7QYjrz4itprWG9ASuH+StDlq7n49F2sBA==} + '@algolia/client-analytics@5.43.0': + resolution: {integrity: sha512-kDGJWt3nzf0nu5RPFXQhNGl6Q0cn35fazxVWXhd0Fw3Vo6gcVfrcezcBenHb66laxnVJ7uwr1uKhmsu3Wy25sQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.42.0': - resolution: {integrity: sha512-6iiFbm2tRn6B2OqFv9XDTcw5LdWPudiJWIbRk+fsTX+hkPrPm4e1/SbU+lEYBciPoaTShLkDbRge4UePEyCPMQ==} + '@algolia/client-common@5.43.0': + resolution: {integrity: sha512-RAFipkAnI8xhL/Sgi/gpXgNWN5HDM6F7z4NNNOcI8ZMYysZEBsqVXojg/WdKEKkQCOHVTZ3mooIjc5BaQdyVtA==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.42.0': - resolution: {integrity: sha512-iEokmw2k6FBa8g/TT7ClyEriaP/FUEmz3iczRoCklEHWSgoABMkaeYrxRXrA2yx76AN+gyZoC8FX0iCJ55dsOg==} + '@algolia/client-insights@5.43.0': + resolution: {integrity: sha512-PmVs83THco8Qig3cAjU9a5eAGaSxsfgh7PdmWMQFE/MCmIcLPv0MVpgfcGGyPjZGYvPC4cg+3q7JJxcNSsEaTg==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.42.0': - resolution: {integrity: sha512-ivVniRqX2ARd+jGvRHTxpWeOtO9VT+rK+OmiuRgkSunoTyxk0vjeDO7QkU7+lzBOXiYgakNjkZrBtIpW9c+muw==} + '@algolia/client-personalization@5.43.0': + resolution: {integrity: sha512-Bs4zMLXvkAr19FSOZWNizlNUpRFxZVxtvyEJ+q3n3+hPZUcKjo0LIh15qghhRcQPEihjBN6Gr/U+AqRfOCsvnA==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.42.0': - resolution: {integrity: sha512-9+BIw6rerUfA+eLMIS2lF4mgoeBGTCIHiqb35PLn3699Rm3CaJXz03hChdwAWcA6SwGw0haYXYJa7LF0xI6EpA==} + '@algolia/client-query-suggestions@5.43.0': + resolution: {integrity: sha512-pwHv+z8TZAKbwAWt9+v2gIqlqcCFiMdteTdgdPn2yOBRx4WUQdsIWAaG9GiV3by8jO51FuFQnTohhauuI63y3A==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.42.0': - resolution: {integrity: sha512-NZR7yyHj2WzK6D5X8gn+/KOxPdzYEXOqVdSaK/biU8QfYUpUuEA0sCWg/XlO05tPVEcJelF/oLrrNY3UjRbOww==} + '@algolia/client-search@5.43.0': + resolution: {integrity: sha512-wKy6x6fKcnB1CsfeNNdGp4dzLzz04k8II3JLt6Sp81F8s57Ks3/K9qsysmL9SJa8P486s719bBttVLE8JJYurQ==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.42.0': - resolution: {integrity: sha512-MBkjRymf4BT6VOvMpJlg6kq8K+PkH9q+N+K4YMNdzTXlL40YwOa1wIWQ5LxP/Jhlz64kW5g9/oaMWY06Sy9dcw==} + '@algolia/ingestion@1.43.0': + resolution: {integrity: sha512-TA21h2KwqCUyPXhSAWF3R2UES/FAnzjaVPDI6cRPXeadX+pdrGN0GWat5gSUATJVcMHECn+lGvuMMRxO86o2Pg==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.42.0': - resolution: {integrity: sha512-kmLs7YfjT4cpr4FnhhRmnoSX4psh9KYZ9NAiWt/YcUV33m0B/Os5L4QId30zVXkOqAPAEpV5VbDPWep+/aoJdQ==} + '@algolia/monitoring@1.43.0': + resolution: {integrity: sha512-rvWVEiA1iLcFmHS3oIXGIBreHIxNZqEFDjiNyRtLEffgd62kul2DjXM7H5bOouDMTo1ywMWT9OeQnzrhlTGAwA==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.42.0': - resolution: {integrity: sha512-U5yZ8+Jj+A4ZC0IMfElpPcddQ9NCoawD1dKyWmjHP49nzN2Z4284IFVMAJWR6fq/0ddGf4OMjjYO9cnF8L+5tw==} + '@algolia/recommend@5.43.0': + resolution: {integrity: sha512-scCijGd38npvH2uHbYhO4f1SR8It5R2FZqOjNcMfw/7Ph7Hxvl+cd7Mo6RzIxsNRcLW5RrwjtpTK3gpDe8r/WQ==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.42.0': - resolution: {integrity: sha512-EbuxgteaYBlKgc2Fs3JzoPIKAIaevAIwmv1F+fakaEXeibG4pkmVNsyTUjpOZIgJ1kXeqNvDrcjRb6g3vYBJ9A==} + '@algolia/requester-browser-xhr@5.43.0': + resolution: {integrity: sha512-jMkRLWJYr4Hcmpl89e4vIWs69Mkf8Uwx7MG5ZKk2UxW3G3TmouGjI0Ph5mVPmg3Jf1UG3AdmVDc4XupzycT1Jw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.42.0': - resolution: {integrity: sha512-4vnFvY5Q8QZL9eDNkywFLsk/eQCRBXCBpE8HWs8iUsFNHYoamiOxAeYMin0W/nszQj6abc+jNxMChHmejO+ftQ==} + '@algolia/requester-fetch@5.43.0': + resolution: {integrity: sha512-KyQiVz+HdYtissC0J9KIGhHhKytQyJX+82GVsbv5rSCXbETnAoojvUyCn+3KRtWUvMDYCsZ+Y7hM71STTUJUJg==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.42.0': - resolution: {integrity: sha512-gkLNpU+b1pCIwk1hKTJz2NWQPT8gsfGhQasnZ5QVv4jd79fKRL/1ikd86P0AzuIQs9tbbhlMwxsSTyJmlq502w==} + '@algolia/requester-node-http@5.43.0': + resolution: {integrity: sha512-UnUBNY0U+oT0bkYDsEqVsCkErC2w7idk4CRiLSzicqY8tGylD9oP0j13X/fse1CuiAFCCr3jfl+cBlN6dC0OFw==} engines: {node: '>= 14.0.0'} '@alloc/quick-lru@5.2.0': @@ -3962,17 +4032,17 @@ packages: '@iconify-json/logos@1.2.10': resolution: {integrity: sha512-qxaXKJ6fu8jzTMPQdHtNxlfx6tBQ0jXRbHZIYy5Ilh8Lx9US9FsAdzZWUR8MXV8PnWTKGDFO4ZZee9VwerCyMA==} - '@iconify-json/octicon@1.2.17': - resolution: {integrity: sha512-U/mznjeCeZzuqpP25zWGcF4amLaYnNLs9sTN2hYALa+28n33KUXj/XjLmpAjIUvsyvn91jxfwdxSE79HfM4jCg==} + '@iconify-json/octicon@1.2.18': + resolution: {integrity: sha512-rj94lgRl70HXovRxD+xSOpSql6cj3N8rv3ouSh7UJEuAFim0RcCEt2JQhr8hiS5Lj1D65EQP7oSNMrVOkYi8kg==} - '@iconify-json/simple-icons@1.2.57': - resolution: {integrity: sha512-/yWbO502M6WfvmcV5OjEgA4uoPN/76nrn7Hri/8g9L4GiNQ6VMgXWE9vFp4tDsmGMAe4ZCov3NbH6vJCgXZ1hA==} + '@iconify-json/simple-icons@1.2.58': + resolution: {integrity: sha512-XtXEoRALqztdNc9ujYBj2tTCPKdIPKJBdLNDebFF46VV1aOAwTbAYMgNsK5GMCpTJupLCmpBWDn+gX5SpECorQ==} '@iconify-json/vscode-icons@1.2.33': resolution: {integrity: sha512-2lKDybGxXXeLeeqeNT2YVDYXs5va0YMHf06w3GemS22j/0CCTpKwKDK7REaibsCq3bRV8qX0RJDM4AbREE7L+w==} - '@iconify/json@2.2.404': - resolution: {integrity: sha512-K11bUBMW7gb/PhzJNZvDDJDq3hEVXoJArsdbr+9LQQqd2TrWEd5+PtctNcfJLu4epgjwDppaLJnN6AEPI1BL9w==} + '@iconify/json@2.2.405': + resolution: {integrity: sha512-wpZMsZoqt6tHbipJ/JmkhRK1TWkmRrTBfL2pi48qXyqUxF56+OEUVB61VkcQ1hMKj/tDAIicFSirkaRZkMwliw==} '@iconify/tailwind@1.2.0': resolution: {integrity: sha512-KgpIHWOTcRYw1XcoUqyNSrmYyfLLqZYu3AmP8zdfLk0F5TqRO8YerhlvlQmGfn7rJXgPeZN569xPAJnJ53zZxA==} @@ -3988,8 +4058,8 @@ packages: peerDependencies: vue: ^3.5.17 - '@inquirer/external-editor@1.0.2': - resolution: {integrity: sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==} + '@inquirer/external-editor@1.0.3': + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -4332,12 +4402,12 @@ packages: resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} engines: {node: '>=12'} - '@pnpm/types@1000.9.0': - resolution: {integrity: sha512-UvDTCxnbyqkTg2X0dBOuZ4IdFJ8g4UFu0Ybv/5/cZAxCWVhNl1hC/Xc9hR4tZrlBL0NRFePLRhO/iw9LmA1lbw==} + '@pnpm/types@1001.0.0': + resolution: {integrity: sha512-9P7I8Zv8hvAO81+D5KVmwveH4nmxhBNFEEeb77YYPV72bkyqzKTR6I8OGEs7TNZ6gPHufF+lIyBVEqO6SMFpJA==} engines: {node: '>=18.12'} - '@pnpm/workspace.read-manifest@1000.2.5': - resolution: {integrity: sha512-kiFdZbwoIqNEwfBVSprSXuaKHdlORingq2uR4ofH9F8r8lwpIY/2bACl6VuFASHGSZ1Bs3Oy6VicSMPQRsKTJg==} + '@pnpm/workspace.read-manifest@1000.2.6': + resolution: {integrity: sha512-XfdmbSiej5AdyclbLeI7kvQ7GQ/2GL0hILpaATQUwgVFR7oijscpcBEKtuN8AZXZSHBfuJXzsGAHIwBAyPrXLg==} engines: {node: '>=18.12'} '@polka/url@1.0.0-next.29': @@ -4472,124 +4542,124 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.52.5': - resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==} + '@rollup/rollup-android-arm-eabi@4.53.1': + resolution: {integrity: sha512-bxZtughE4VNVJlL1RdoSE545kc4JxL7op57KKoi59/gwuU5rV6jLWFXXc8jwgFoT6vtj+ZjO+Z2C5nrY0Cl6wA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.52.5': - resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==} + '@rollup/rollup-android-arm64@4.53.1': + resolution: {integrity: sha512-44a1hreb02cAAfAKmZfXVercPFaDjqXCK+iKeVOlJ9ltvnO6QqsBHgKVPTu+MJHSLLeMEUbeG2qiDYgbFPU48g==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.52.5': - resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==} + '@rollup/rollup-darwin-arm64@4.53.1': + resolution: {integrity: sha512-usmzIgD0rf1syoOZ2WZvy8YpXK5G1V3btm3QZddoGSa6mOgfXWkkv+642bfUUldomgrbiLQGrPryb7DXLovPWQ==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.52.5': - resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==} + '@rollup/rollup-darwin-x64@4.53.1': + resolution: {integrity: sha512-is3r/k4vig2Gt8mKtTlzzyaSQ+hd87kDxiN3uDSDwggJLUV56Umli6OoL+/YZa/KvtdrdyNfMKHzL/P4siOOmg==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.52.5': - resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==} + '@rollup/rollup-freebsd-arm64@4.53.1': + resolution: {integrity: sha512-QJ1ksgp/bDJkZB4daldVmHaEQkG4r8PUXitCOC2WRmRaSaHx5RwPoI3DHVfXKwDkB+Sk6auFI/+JHacTekPRSw==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.52.5': - resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==} + '@rollup/rollup-freebsd-x64@4.53.1': + resolution: {integrity: sha512-J6ma5xgAzvqsnU6a0+jgGX/gvoGokqpkx6zY4cWizRrm0ffhHDpJKQgC8dtDb3+MqfZDIqs64REbfHDMzxLMqQ==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.52.5': - resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==} + '@rollup/rollup-linux-arm-gnueabihf@4.53.1': + resolution: {integrity: sha512-JzWRR41o2U3/KMNKRuZNsDUAcAVUYhsPuMlx5RUldw0E4lvSIXFUwejtYz1HJXohUmqs/M6BBJAUBzKXZVddbg==} cpu: [arm] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.52.5': - resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==} + '@rollup/rollup-linux-arm-musleabihf@4.53.1': + resolution: {integrity: sha512-L8kRIrnfMrEoHLHtHn+4uYA52fiLDEDyezgxZtGUTiII/yb04Krq+vk3P2Try+Vya9LeCE9ZHU8CXD6J9EhzHQ==} cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.52.5': - resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==} + '@rollup/rollup-linux-arm64-gnu@4.53.1': + resolution: {integrity: sha512-ysAc0MFRV+WtQ8li8hi3EoFi7us6d1UzaS/+Dp7FYZfg3NdDljGMoVyiIp6Ucz7uhlYDBZ/zt6XI0YEZbUO11Q==} cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.52.5': - resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==} + '@rollup/rollup-linux-arm64-musl@4.53.1': + resolution: {integrity: sha512-UV6l9MJpDbDZZ/fJvqNcvO1PcivGEf1AvKuTcHoLjVZVFeAMygnamCTDikCVMRnA+qJe+B3pSbgX2+lBMqgBhA==} cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.52.5': - resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==} + '@rollup/rollup-linux-loong64-gnu@4.53.1': + resolution: {integrity: sha512-UDUtelEprkA85g95Q+nj3Xf0M4hHa4DiJ+3P3h4BuGliY4NReYYqwlc0Y8ICLjN4+uIgCEvaygYlpf0hUj90Yg==} cpu: [loong64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-gnu@4.52.5': - resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==} + '@rollup/rollup-linux-ppc64-gnu@4.53.1': + resolution: {integrity: sha512-vrRn+BYhEtNOte/zbc2wAUQReJXxEx2URfTol6OEfY2zFEUK92pkFBSXRylDM7aHi+YqEPJt9/ABYzmcrS4SgQ==} cpu: [ppc64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-gnu@4.52.5': - resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==} + '@rollup/rollup-linux-riscv64-gnu@4.53.1': + resolution: {integrity: sha512-gto/1CxHyi4A7YqZZNznQYrVlPSaodOBPKM+6xcDSCMVZN/Fzb4K+AIkNz/1yAYz9h3Ng+e2fY9H6bgawVq17w==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.52.5': - resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==} + '@rollup/rollup-linux-riscv64-musl@4.53.1': + resolution: {integrity: sha512-KZ6Vx7jAw3aLNjFR8eYVcQVdFa/cvBzDNRFM3z7XhNNunWjA03eUrEwJYPk0G8V7Gs08IThFKcAPS4WY/ybIrQ==} cpu: [riscv64] os: [linux] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.52.5': - resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==} + '@rollup/rollup-linux-s390x-gnu@4.53.1': + resolution: {integrity: sha512-HvEixy2s/rWNgpwyKpXJcHmE7om1M89hxBTBi9Fs6zVuLU4gOrEMQNbNsN/tBVIMbLyysz/iwNiGtMOpLAOlvA==} cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.52.5': - resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==} + '@rollup/rollup-linux-x64-gnu@4.53.1': + resolution: {integrity: sha512-E/n8x2MSjAQgjj9IixO4UeEUeqXLtiA7pyoXCFYLuXpBA/t2hnbIdxHfA7kK9BFsYAoNU4st1rHYdldl8dTqGA==} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.52.5': - resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==} + '@rollup/rollup-linux-x64-musl@4.53.1': + resolution: {integrity: sha512-IhJ087PbLOQXCN6Ui/3FUkI9pWNZe/Z7rEIVOzMsOs1/HSAECCvSZ7PkIbkNqL/AZn6WbZvnoVZw/qwqYMo4/w==} cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-openharmony-arm64@4.52.5': - resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==} + '@rollup/rollup-openharmony-arm64@4.53.1': + resolution: {integrity: sha512-0++oPNgLJHBblreu0SFM7b3mAsBJBTY0Ksrmu9N6ZVrPiTkRgda52mWR7TKhHAsUb9noCjFvAw9l6ZO1yzaVbA==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.52.5': - resolution: {integrity: sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==} + '@rollup/rollup-win32-arm64-msvc@4.53.1': + resolution: {integrity: sha512-VJXivz61c5uVdbmitLkDlbcTk9Or43YC2QVLRkqp86QoeFSqI81bNgjhttqhKNMKnQMWnecOCm7lZz4s+WLGpQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.52.5': - resolution: {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==} + '@rollup/rollup-win32-ia32-msvc@4.53.1': + resolution: {integrity: sha512-NmZPVTUOitCXUH6erJDzTQ/jotYw4CnkMDjCYRxNHVD9bNyfrGoIse684F9okwzKCV4AIHRbUkeTBc9F2OOH5Q==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.52.5': - resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==} + '@rollup/rollup-win32-x64-gnu@4.53.1': + resolution: {integrity: sha512-2SNj7COIdAf6yliSpLdLG8BEsp5lgzRehgfkP0Av8zKfQFKku6JcvbobvHASPJu4f3BFxej5g+HuQPvqPhHvpQ==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.52.5': - resolution: {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==} + '@rollup/rollup-win32-x64-msvc@4.53.1': + resolution: {integrity: sha512-rLarc1Ofcs3DHtgSzFO31pZsCh8g05R2azN1q3fF+H423Co87My0R+tazOEvYVKXSLh8C4LerMK41/K7wlklcg==} cpu: [x64] os: [win32] @@ -4975,12 +5045,18 @@ packages: '@types/tern@0.23.9': resolution: {integrity: sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==} + '@types/tinycolor2@1.4.6': + resolution: {integrity: sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==} + '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/validator@13.15.4': + resolution: {integrity: sha512-LSFfpSnJJY9wbC0LQxgvfb+ynbHftFo0tMsFOl/J4wexLnYMmDSPaj2ZyDv3TkfL1UePxPrxOWJfbiRS8mQv7A==} + '@types/video.js@7.3.58': resolution: {integrity: sha512-1CQjuSrgbv1/dhmcfQ83eVyYbvGyqhTvb2Opxr0QCV+iJ4J6/J+XWQ3Om59WiwCd1MN3rDUHasx5XRrpUtewYQ==} @@ -5296,17 +5372,17 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@vue/compiler-core@3.5.23': - resolution: {integrity: sha512-nW7THWj5HOp085ROk65LwaoxuzDsjIxr485F4iu63BoxsXoSqKqmsUUoP4A7Gl67DgIgi0zJ8JFgHfvny/74MA==} + '@vue/compiler-core@3.5.24': + resolution: {integrity: sha512-eDl5H57AOpNakGNAkFDH+y7kTqrQpJkZFXhWZQGyx/5Wh7B1uQYvcWkvZi11BDhscPgj8N7XV3oRwiPnx1Vrig==} - '@vue/compiler-dom@3.5.23': - resolution: {integrity: sha512-AT8RMw0vEzzzO0JU5gY0F6iCzaWUIh/aaRVordzMBKXRpoTllTT4kocHDssByPsvodNCfump/Lkdow2mT/O5KQ==} + '@vue/compiler-dom@3.5.24': + resolution: {integrity: sha512-1QHGAvs53gXkWdd3ZMGYuvQFXHW4ksKWPG8HP8/2BscrbZ0brw183q2oNWjMrSWImYLHxHrx1ItBQr50I/q2zw==} - '@vue/compiler-sfc@3.5.23': - resolution: {integrity: sha512-3QTEUo4qg7FtQwaDJa8ou1CUikx5WTtZlY61rRRDu3lK2ZKrGoAGG8mvDgOpDsQ4A1bez9s+WtBB6DS2KuFCPw==} + '@vue/compiler-sfc@3.5.24': + resolution: {integrity: sha512-8EG5YPRgmTB+YxYBM3VXy8zHD9SWHUJLIGPhDovo3Z8VOgvP+O7UP5vl0J4BBPWYD9vxtBabzW1EuEZ+Cqs14g==} - '@vue/compiler-ssr@3.5.23': - resolution: {integrity: sha512-Hld2xphbMjXs9Q9WKxPf2EqmE+Rq/FEDnK/wUBtmYq74HCV4XDdSCheAaB823OQXIIFGq9ig/RbAZkF9s4U0Ow==} + '@vue/compiler-ssr@3.5.24': + resolution: {integrity: sha512-trOvMWNBMQ/odMRHW7Ae1CdfYx+7MuiQu62Jtu36gMLXcaoqKvAyh+P73sYG9ll+6jLB6QPovqoKGGZROzkFFg==} '@vue/compiler-vue2@2.7.16': resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} @@ -5344,22 +5420,22 @@ packages: typescript: optional: true - '@vue/reactivity@3.5.23': - resolution: {integrity: sha512-ji5w0qvrPyBmBx5Ldv4QGNsw0phgRreEvjt0iUf1lei2Sm8//9ZAi78uM2ZjsT5gk0YZilLuoRCIMvtuZlHMJw==} + '@vue/reactivity@3.5.24': + resolution: {integrity: sha512-BM8kBhtlkkbnyl4q+HiF5R5BL0ycDPfihowulm02q3WYp2vxgPcJuZO866qa/0u3idbMntKEtVNuAUp5bw4teg==} - '@vue/runtime-core@3.5.23': - resolution: {integrity: sha512-LMB0S6/G7mFJcpQeQaZrbsthFbWrIX8FVTzu5x9U3Ec8YW5MY1CGAnBBHNj+TPOBu3pIbtPpjrXtcaN04X+aBw==} + '@vue/runtime-core@3.5.24': + resolution: {integrity: sha512-RYP/byyKDgNIqfX/gNb2PB55dJmM97jc9wyF3jK7QUInYKypK2exmZMNwnjueWwGceEkP6NChd3D2ZVEp9undQ==} - '@vue/runtime-dom@3.5.23': - resolution: {integrity: sha512-r/PYc8W9THzEL0UExpTkV+d31zO+Jid/RMZIDG6aS/NekOEUHuCJkJgftySWZw7JTJO/+q9Kxkg8p+i7Q7Q+ew==} + '@vue/runtime-dom@3.5.24': + resolution: {integrity: sha512-Z8ANhr/i0XIluonHVjbUkjvn+CyrxbXRIxR7wn7+X7xlcb7dJsfITZbkVOeJZdP8VZwfrWRsWdShH6pngMxRjw==} - '@vue/server-renderer@3.5.23': - resolution: {integrity: sha512-NiWZsNCsXA20/VufcrW5u+Trt/PyFlpMmxaB2KERYM8eZgUoKUjXxJQb9ypq+LZ0Sp3XHJGNBR8DkhRnkKAMUw==} + '@vue/server-renderer@3.5.24': + resolution: {integrity: sha512-Yh2j2Y4G/0/4z/xJ1Bad4mxaAk++C2v4kaa8oSYTMJBJ00/ndPuxCnWeot0/7/qafQFLh5pr6xeV6SdMcE/G1w==} peerDependencies: vue: ^3.5.17 - '@vue/shared@3.5.23': - resolution: {integrity: sha512-0YZ1DYuC5o/YJPf6pFdt2KYxVGDxkDbH/1NYJnVJWUkzr8ituBEmFVQRNX2gCaAsFEjEDnLkWpgqlZA7htgS/g==} + '@vue/shared@3.5.24': + resolution: {integrity: sha512-9cwHL2EsJBdi8NY22pngYYWzkTDhld6fAD6jlaeloNGciNSJL6bLpbxVgXl96X00Jtc6YWQv96YA/0sxex/k1A==} '@vue/test-utils@2.4.6': resolution: {integrity: sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==} @@ -5579,8 +5655,8 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - algoliasearch@5.42.0: - resolution: {integrity: sha512-X5+PtWc9EJIPafT/cj8ZG+6IU3cjRRnlHGtqMHK/9gsiupQbAyYlH5y7qt/FtsAhfX5AICHffZy69ZAsVrxWkQ==} + algoliasearch@5.43.0: + resolution: {integrity: sha512-hbkK41JsuGYhk+atBDxlcKxskjDCh3OOEDpdKZPtw+3zucBqhlojRG5e5KtCmByGyYvwZswVeaSWglgLn2fibg==} engines: {node: '>= 14.0.0'} alien-signals@0.4.14: @@ -5815,8 +5891,8 @@ packages: bintrees@1.0.2: resolution: {integrity: sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==} - birpc@2.7.0: - resolution: {integrity: sha512-tub/wFGH49vNCm0xraykcY3TcRgX/3JsALYq/Lwrtti+bTyFHkCUAWF5wgYoie8P41wYwig2mIKiqoocr1EkEQ==} + birpc@2.8.0: + resolution: {integrity: sha512-Bz2a4qD/5GRhiHSwj30c/8kC8QGj12nNDwz3D4ErQ4Xhy35dsSDvF+RA/tWpjyU0pdGtSDiEk6B5fBGE1qNVhw==} boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} @@ -6894,8 +6970,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.248: - resolution: {integrity: sha512-zsur2yunphlyAO4gIubdJEXCK6KOVvtpiuDfCIqbM9FjcnMYiyn0ICa3hWfPr0nc41zcLWobgy1iL7VvoOyA2Q==} + electron-to-chromium@1.5.249: + resolution: {integrity: sha512-5vcfL3BBe++qZ5kuFhD/p8WOM1N9m3nwvJPULJx+4xf2usSlZFJ0qoNYO2fOX4hi3ocuDcmDobtA+5SFr4OmBg==} element-plus@2.11.7: resolution: {integrity: sha512-Bh47wuzsqaNBNDkbtlOlZER1cGcOB8GsXp/+C9b95MOrk0wvoHUV4NKKK7xMkfYNFYdYysQ752oMhnExgAL6+g==} @@ -9207,8 +9283,8 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} - path-scurry@2.0.0: - resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + path-scurry@2.0.1: + resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==} engines: {node: 20 || >=22} path-type@4.0.0: @@ -10144,8 +10220,8 @@ packages: engines: {node: '>=10.0.0'} hasBin: true - rollup@4.52.5: - resolution: {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==} + rollup@4.53.1: + resolution: {integrity: sha512-n2I0V0lN3E9cxxMqBCT3opWOiQBzRN7UG60z/WDKqdX2zHUS/39lezBcsckZFsV6fUTSnfqI7kHf60jDAPGKug==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -10682,8 +10758,8 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svelte@5.43.4: - resolution: {integrity: sha512-tPNp21nDWB0PSHE+VrTvEy9cFtDp2Q+ATxQoFomISEVdikZ1QZ69UqBPz/LlT+Oc8/LYS/COYwDQZrmZEUr+JQ==} + svelte@5.43.5: + resolution: {integrity: sha512-HQoZArIewxQVNedseDsgMgnRSC4XOXczxXLF9rOJaPIJkg58INOPUiL8aEtzqZIXNSZJyw8NmqObwg/voajiHQ==} engines: {node: '>=18'} sver@1.8.4: @@ -10740,6 +10816,17 @@ packages: resolution: {integrity: sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==} engines: {node: '>=18'} + tdesign-icons-vue-next@0.4.1: + resolution: {integrity: sha512-uDPuTLRORnGcTyVGNoentNaK4V+ZcBmhYwcY3KqDaQQ5rrPeLMxu0ZVmgOEf0JtF2QZiqAxY7vodNEiLUdoRKA==} + peerDependencies: + vue: ^3.5.17 + + tdesign-vue-next@1.17.2: + resolution: {integrity: sha512-nTofPSKGQguOS+Lb62fDiLS1Rs3Ngzb8rE8sPEjfMdDjdFZ5kEUgvVp+J+8GKfgwVRAZRjv//qSzZVt6cqgXxA==} + engines: {node: '>= 18'} + peerDependencies: + vue: ^3.5.17 + temp-dir@2.0.0: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} engines: {node: '>=8'} @@ -10790,6 +10877,9 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + tinycolor2@1.6.0: + resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} + tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} @@ -11171,6 +11261,10 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + validator@13.15.22: + resolution: {integrity: sha512-uT/YQjiyLJP7HSrv/dPZqK9L28xf8hsNca01HSz1dfmI0DgMfjopp1rO/z13NeGF1tVystF0Ejx3y4rUKPw+bQ==} + engines: {node: '>= 0.10'} + vdirs@0.1.8: resolution: {integrity: sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==} peerDependencies: @@ -11457,8 +11551,8 @@ packages: peerDependencies: vue: ^3.5.17 - vue@3.5.23: - resolution: {integrity: sha512-CfvZv/vI52xUhumUvHtD6iFIS78nGWfX4IJnHfBGhpqMI0CwDq2YEngXOeaBFMRmiArcqczuVrLxurvesTYT9w==} + vue@3.5.24: + resolution: {integrity: sha512-uTHDOpVQTMjcGgrqFPSb8iO2m1DUvo+WbGqoXQz8Y1CeBYQ0FXf2z1gLRaBtHjlRz7zZUBHxjVB5VTLzYkvftg==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -11475,11 +11569,11 @@ packages: peerDependencies: vue: ^3.5.17 - vxe-pc-ui@4.10.17: - resolution: {integrity: sha512-datz5KCkS8aUMdKhV+1Ec3B1HOiT1CVNIP1KTek2bLHY0JmiLsTS1d0HeZ1fBuoazcB51ReIJ6GydCMr2A8Rpw==} + vxe-pc-ui@4.10.18: + resolution: {integrity: sha512-YNlD9vs5AfEbtne2adCUDT5qt+7gN9FvczjamYpPm+2G8pi2Vs7T7VlxMhXh6jzFIymzFn6UfV3oszgpG8cS0A==} - vxe-table@4.17.11: - resolution: {integrity: sha512-M4+7yV5EPcm0zzC9/Hamo/1qdShFyKDXz5JQgceQGDFIorSpwE6UbA2SK6muk/qMUQwvc9cSOVPKMPNGE2VftA==} + vxe-table@4.17.12: + resolution: {integrity: sha512-gutC0uNC0Et2kelZH7Cn/808m+DUm7Cef9fNTRBy+oZkieqqoBkXajf2pBTnVry+72nsXfSyg9dUMKYm6hqPcg==} w3c-keyname@2.2.8: resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} @@ -11762,117 +11856,117 @@ packages: snapshots: - '@algolia/abtesting@1.8.0': + '@algolia/abtesting@1.9.0': dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 + '@algolia/client-common': 5.43.0 + '@algolia/requester-browser-xhr': 5.43.0 + '@algolia/requester-fetch': 5.43.0 + '@algolia/requester-node-http': 5.43.0 - '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.42.0)(algoliasearch@5.42.0)(search-insights@2.17.3)': + '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.43.0)(algoliasearch@5.43.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.42.0)(algoliasearch@5.42.0)(search-insights@2.17.3) - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.42.0)(algoliasearch@5.42.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.43.0)(algoliasearch@5.43.0)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.43.0)(algoliasearch@5.43.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights - '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.42.0)(algoliasearch@5.42.0)(search-insights@2.17.3)': + '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.43.0)(algoliasearch@5.43.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.42.0)(algoliasearch@5.42.0) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.43.0)(algoliasearch@5.43.0) search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.42.0)(algoliasearch@5.42.0)': + '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.43.0)(algoliasearch@5.43.0)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.42.0)(algoliasearch@5.42.0) - '@algolia/client-search': 5.42.0 - algoliasearch: 5.42.0 + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.43.0)(algoliasearch@5.43.0) + '@algolia/client-search': 5.43.0 + algoliasearch: 5.43.0 - '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.42.0)(algoliasearch@5.42.0)': + '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.43.0)(algoliasearch@5.43.0)': dependencies: - '@algolia/client-search': 5.42.0 - algoliasearch: 5.42.0 + '@algolia/client-search': 5.43.0 + algoliasearch: 5.43.0 - '@algolia/client-abtesting@5.42.0': + '@algolia/client-abtesting@5.43.0': dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 + '@algolia/client-common': 5.43.0 + '@algolia/requester-browser-xhr': 5.43.0 + '@algolia/requester-fetch': 5.43.0 + '@algolia/requester-node-http': 5.43.0 - '@algolia/client-analytics@5.42.0': + '@algolia/client-analytics@5.43.0': dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 + '@algolia/client-common': 5.43.0 + '@algolia/requester-browser-xhr': 5.43.0 + '@algolia/requester-fetch': 5.43.0 + '@algolia/requester-node-http': 5.43.0 - '@algolia/client-common@5.42.0': {} + '@algolia/client-common@5.43.0': {} - '@algolia/client-insights@5.42.0': + '@algolia/client-insights@5.43.0': dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 + '@algolia/client-common': 5.43.0 + '@algolia/requester-browser-xhr': 5.43.0 + '@algolia/requester-fetch': 5.43.0 + '@algolia/requester-node-http': 5.43.0 - '@algolia/client-personalization@5.42.0': + '@algolia/client-personalization@5.43.0': dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 + '@algolia/client-common': 5.43.0 + '@algolia/requester-browser-xhr': 5.43.0 + '@algolia/requester-fetch': 5.43.0 + '@algolia/requester-node-http': 5.43.0 - '@algolia/client-query-suggestions@5.42.0': + '@algolia/client-query-suggestions@5.43.0': dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 + '@algolia/client-common': 5.43.0 + '@algolia/requester-browser-xhr': 5.43.0 + '@algolia/requester-fetch': 5.43.0 + '@algolia/requester-node-http': 5.43.0 - '@algolia/client-search@5.42.0': + '@algolia/client-search@5.43.0': dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 + '@algolia/client-common': 5.43.0 + '@algolia/requester-browser-xhr': 5.43.0 + '@algolia/requester-fetch': 5.43.0 + '@algolia/requester-node-http': 5.43.0 - '@algolia/ingestion@1.42.0': + '@algolia/ingestion@1.43.0': dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 + '@algolia/client-common': 5.43.0 + '@algolia/requester-browser-xhr': 5.43.0 + '@algolia/requester-fetch': 5.43.0 + '@algolia/requester-node-http': 5.43.0 - '@algolia/monitoring@1.42.0': + '@algolia/monitoring@1.43.0': dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 + '@algolia/client-common': 5.43.0 + '@algolia/requester-browser-xhr': 5.43.0 + '@algolia/requester-fetch': 5.43.0 + '@algolia/requester-node-http': 5.43.0 - '@algolia/recommend@5.42.0': + '@algolia/recommend@5.43.0': dependencies: - '@algolia/client-common': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 + '@algolia/client-common': 5.43.0 + '@algolia/requester-browser-xhr': 5.43.0 + '@algolia/requester-fetch': 5.43.0 + '@algolia/requester-node-http': 5.43.0 - '@algolia/requester-browser-xhr@5.42.0': + '@algolia/requester-browser-xhr@5.43.0': dependencies: - '@algolia/client-common': 5.42.0 + '@algolia/client-common': 5.43.0 - '@algolia/requester-fetch@5.42.0': + '@algolia/requester-fetch@5.43.0': dependencies: - '@algolia/client-common': 5.42.0 + '@algolia/client-common': 5.43.0 - '@algolia/requester-node-http@5.42.0': + '@algolia/requester-node-http@5.43.0': dependencies: - '@algolia/client-common': 5.42.0 + '@algolia/client-common': 5.43.0 '@alloc/quick-lru@5.2.0': {} @@ -11882,11 +11976,11 @@ snapshots: '@ant-design/icons-svg@4.4.2': {} - '@ant-design/icons-vue@7.0.1(vue@3.5.23(typescript@5.9.3))': + '@ant-design/icons-vue@7.0.1(vue@3.5.24(typescript@5.9.3))': dependencies: '@ant-design/colors': 6.0.0 '@ant-design/icons-svg': 4.4.2 - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) '@antfu/install-pkg@1.1.0': dependencies: @@ -12789,7 +12883,7 @@ snapshots: '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@changesets/write': 0.4.0 - '@inquirer/external-editor': 1.0.2(@types/node@24.10.0) + '@inquirer/external-editor': 1.0.3(@types/node@24.10.0) '@manypkg/get-packages': 1.1.3 ansi-colors: 4.1.3 ci-info: 3.9.0 @@ -13275,9 +13369,9 @@ snapshots: dependencies: css-render: 0.15.14 - '@css-render/vue3-ssr@0.15.14(vue@3.5.23(typescript@5.9.3))': + '@css-render/vue3-ssr@0.15.14(vue@3.5.24(typescript@5.9.3))': dependencies: - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) '@csstools/cascade-layer-name-parser@2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: @@ -13576,9 +13670,9 @@ snapshots: '@docsearch/css@3.8.2': {} - '@docsearch/js@3.8.2(@algolia/client-search@5.42.0)(search-insights@2.17.3)': + '@docsearch/js@3.8.2(@algolia/client-search@5.43.0)(search-insights@2.17.3)': dependencies: - '@docsearch/react': 3.8.2(@algolia/client-search@5.42.0)(search-insights@2.17.3) + '@docsearch/react': 3.8.2(@algolia/client-search@5.43.0)(search-insights@2.17.3) preact: 10.27.2 transitivePeerDependencies: - '@algolia/client-search' @@ -13587,12 +13681,12 @@ snapshots: - react-dom - search-insights - '@docsearch/react@3.8.2(@algolia/client-search@5.42.0)(search-insights@2.17.3)': + '@docsearch/react@3.8.2(@algolia/client-search@5.43.0)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.42.0)(algoliasearch@5.42.0)(search-insights@2.17.3) - '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.42.0)(algoliasearch@5.42.0) + '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.43.0)(algoliasearch@5.43.0)(search-insights@2.17.3) + '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.43.0)(algoliasearch@5.43.0) '@docsearch/css': 3.8.2 - algoliasearch: 5.42.0 + algoliasearch: 5.43.0 optionalDependencies: search-insights: 2.17.3 transitivePeerDependencies: @@ -13600,9 +13694,9 @@ snapshots: '@dual-bundle/import-meta-resolve@4.2.1': {} - '@element-plus/icons-vue@2.3.2(vue@3.5.23(typescript@5.9.3))': + '@element-plus/icons-vue@2.3.2(vue@3.5.24(typescript@5.9.3))': dependencies: - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) '@emnapi/core@1.7.0': dependencies: @@ -13777,36 +13871,36 @@ snapshots: '@floating-ui/utils@0.2.10': {} - '@floating-ui/vue@1.1.9(vue@3.5.23(typescript@5.9.3))': + '@floating-ui/vue@1.1.9(vue@3.5.24(typescript@5.9.3))': dependencies: '@floating-ui/dom': 1.7.4 '@floating-ui/utils': 0.2.10 - vue-demi: 0.14.10(vue@3.5.23(typescript@5.9.3)) + vue-demi: 0.14.10(vue@3.5.24(typescript@5.9.3)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@form-create/ant-design-vue@3.2.32(vue@3.5.23(typescript@5.9.3))': + '@form-create/ant-design-vue@3.2.32(vue@3.5.24(typescript@5.9.3))': dependencies: '@form-create/component-antdv-frame': 3.2.31 '@form-create/component-antdv-group': 3.2.31 '@form-create/component-antdv-upload': 3.2.31 '@form-create/component-subform': 3.1.34 - '@form-create/core': 3.2.32(vue@3.5.23(typescript@5.9.3)) + '@form-create/core': 3.2.32(vue@3.5.24(typescript@5.9.3)) '@form-create/utils': 3.2.31 - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) - '@form-create/antd-designer@3.3.2(vue@3.5.23(typescript@5.9.3))': + '@form-create/antd-designer@3.3.2(vue@3.5.24(typescript@5.9.3))': dependencies: - '@form-create/ant-design-vue': 3.2.32(vue@3.5.23(typescript@5.9.3)) + '@form-create/ant-design-vue': 3.2.32(vue@3.5.24(typescript@5.9.3)) '@form-create/component-wangeditor': 3.2.14 '@form-create/utils': 3.2.31 - ant-design-vue: 4.2.6(vue@3.5.23(typescript@5.9.3)) + ant-design-vue: 4.2.6(vue@3.5.24(typescript@5.9.3)) codemirror: 6.65.7 js-beautify: 1.15.4 signature_pad: 5.1.1 - vue: 3.5.23(typescript@5.9.3) - vuedraggable: 4.1.0(vue@3.5.23(typescript@5.9.3)) + vue: 3.5.24(typescript@5.9.3) + vuedraggable: 4.1.0(vue@3.5.24(typescript@5.9.3)) '@form-create/component-antdv-frame@3.2.31': dependencies: @@ -13854,26 +13948,26 @@ snapshots: dependencies: wangeditor: 4.7.15 - '@form-create/core@3.2.32(vue@3.5.23(typescript@5.9.3))': + '@form-create/core@3.2.32(vue@3.5.24(typescript@5.9.3))': dependencies: '@form-create/utils': 3.2.31 - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) - '@form-create/designer@3.3.1(vue@3.5.23(typescript@5.9.3))': + '@form-create/designer@3.3.1(vue@3.5.24(typescript@5.9.3))': dependencies: '@form-create/component-wangeditor': 3.2.14 - '@form-create/element-ui': 3.2.32(vue@3.5.23(typescript@5.9.3)) + '@form-create/element-ui': 3.2.32(vue@3.5.24(typescript@5.9.3)) '@form-create/utils': 3.2.31 codemirror: 6.65.7 - element-plus: 2.11.7(vue@3.5.23(typescript@5.9.3)) + element-plus: 2.11.7(vue@3.5.24(typescript@5.9.3)) js-beautify: 1.15.4 signature_pad: 5.1.1 - vue: 3.5.23(typescript@5.9.3) - vuedraggable: 4.1.0(vue@3.5.23(typescript@5.9.3)) + vue: 3.5.24(typescript@5.9.3) + vuedraggable: 4.1.0(vue@3.5.24(typescript@5.9.3)) transitivePeerDependencies: - '@vue/composition-api' - '@form-create/element-ui@3.2.32(vue@3.5.23(typescript@5.9.3))': + '@form-create/element-ui@3.2.32(vue@3.5.24(typescript@5.9.3))': dependencies: '@form-create/component-elm-checkbox': 3.2.31 '@form-create/component-elm-frame': 3.2.31 @@ -13883,9 +13977,9 @@ snapshots: '@form-create/component-elm-tree': 3.2.31 '@form-create/component-elm-upload': 3.2.31 '@form-create/component-subform': 3.1.34 - '@form-create/core': 3.2.32(vue@3.5.23(typescript@5.9.3)) + '@form-create/core': 3.2.32(vue@3.5.24(typescript@5.9.3)) '@form-create/utils': 3.2.31 - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) '@form-create/utils@3.2.31': {} @@ -13910,11 +14004,11 @@ snapshots: dependencies: '@iconify/types': 2.0.0 - '@iconify-json/octicon@1.2.17': + '@iconify-json/octicon@1.2.18': dependencies: '@iconify/types': 2.0.0 - '@iconify-json/simple-icons@1.2.57': + '@iconify-json/simple-icons@1.2.58': dependencies: '@iconify/types': 2.0.0 @@ -13922,7 +14016,7 @@ snapshots: dependencies: '@iconify/types': 2.0.0 - '@iconify/json@2.2.404': + '@iconify/json@2.2.405': dependencies: '@iconify/types': 2.0.0 pathe: 2.0.3 @@ -13946,12 +14040,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@iconify/vue@5.0.0(vue@3.5.23(typescript@5.9.3))': + '@iconify/vue@5.0.0(vue@3.5.24(typescript@5.9.3))': dependencies: '@iconify/types': 2.0.0 - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) - '@inquirer/external-editor@1.0.2(@types/node@24.10.0)': + '@inquirer/external-editor@1.0.3(@types/node@24.10.0)': dependencies: chardet: 2.1.1 iconv-lite: 0.7.0 @@ -13966,7 +14060,7 @@ snapshots: dependencies: '@swc/helpers': 0.5.17 - '@intlify/bundle-utils@10.0.1(vue-i18n@11.1.12(vue@3.5.23(typescript@5.9.3)))': + '@intlify/bundle-utils@10.0.1(vue-i18n@11.1.12(vue@3.5.24(typescript@5.9.3)))': dependencies: '@intlify/message-compiler': 11.1.12 '@intlify/shared': 11.1.12 @@ -13978,7 +14072,7 @@ snapshots: source-map-js: 1.2.1 yaml-eslint-parser: 1.3.0 optionalDependencies: - vue-i18n: 11.1.12(vue@3.5.23(typescript@5.9.3)) + vue-i18n: 11.1.12(vue@3.5.24(typescript@5.9.3)) '@intlify/core-base@11.1.12': dependencies: @@ -13992,13 +14086,13 @@ snapshots: '@intlify/shared@11.1.12': {} - '@intlify/unplugin-vue-i18n@6.0.8(@vue/compiler-dom@3.5.23)(eslint@9.39.1(jiti@2.6.1))(rollup@4.52.5)(typescript@5.9.3)(vue-i18n@11.1.12(vue@3.5.23(typescript@5.9.3)))(vue@3.5.23(typescript@5.9.3))': + '@intlify/unplugin-vue-i18n@6.0.8(@vue/compiler-dom@3.5.24)(eslint@9.39.1(jiti@2.6.1))(rollup@4.53.1)(typescript@5.9.3)(vue-i18n@11.1.12(vue@3.5.24(typescript@5.9.3)))(vue@3.5.24(typescript@5.9.3))': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) - '@intlify/bundle-utils': 10.0.1(vue-i18n@11.1.12(vue@3.5.23(typescript@5.9.3))) + '@intlify/bundle-utils': 10.0.1(vue-i18n@11.1.12(vue@3.5.24(typescript@5.9.3))) '@intlify/shared': 11.1.12 - '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.1.12)(@vue/compiler-dom@3.5.23)(vue-i18n@11.1.12(vue@3.5.23(typescript@5.9.3)))(vue@3.5.23(typescript@5.9.3)) - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.1.12)(@vue/compiler-dom@3.5.24)(vue-i18n@11.1.12(vue@3.5.24(typescript@5.9.3)))(vue@3.5.24(typescript@5.9.3)) + '@rollup/pluginutils': 5.3.0(rollup@4.53.1) '@typescript-eslint/scope-manager': 8.46.3 '@typescript-eslint/typescript-estree': 8.46.3(typescript@5.9.3) debug: 4.4.3 @@ -14009,9 +14103,9 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 unplugin: 1.16.1 - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) optionalDependencies: - vue-i18n: 11.1.12(vue@3.5.23(typescript@5.9.3)) + vue-i18n: 11.1.12(vue@3.5.24(typescript@5.9.3)) transitivePeerDependencies: - '@vue/compiler-dom' - eslint @@ -14019,14 +14113,14 @@ snapshots: - supports-color - typescript - '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.1.12)(@vue/compiler-dom@3.5.23)(vue-i18n@11.1.12(vue@3.5.23(typescript@5.9.3)))(vue@3.5.23(typescript@5.9.3))': + '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.1.12)(@vue/compiler-dom@3.5.24)(vue-i18n@11.1.12(vue@3.5.24(typescript@5.9.3)))(vue@3.5.24(typescript@5.9.3))': dependencies: '@babel/parser': 7.28.5 optionalDependencies: '@intlify/shared': 11.1.12 - '@vue/compiler-dom': 3.5.23 - vue: 3.5.23(typescript@5.9.3) - vue-i18n: 11.1.12(vue@3.5.23(typescript@5.9.3)) + '@vue/compiler-dom': 3.5.24 + vue: 3.5.24(typescript@5.9.3) + vue-i18n: 11.1.12(vue@3.5.24(typescript@5.9.3)) '@ioredis/commands@1.4.0': {} @@ -14219,17 +14313,17 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 - '@nolebase/ui@2.18.2(vitepress@1.6.4(@algolia/client-search@5.42.0)(@types/node@24.10.0)(async-validator@4.2.5)(axios@1.13.2)(less@4.4.2)(nprogress@0.2.0)(postcss@8.5.6)(qrcode@1.5.4)(sass@1.93.3)(search-insights@2.17.3)(sortablejs@1.15.6)(terser@5.44.1)(typescript@5.9.3))(vue@3.5.23(typescript@5.9.3))': + '@nolebase/ui@2.18.2(vitepress@1.6.4(@algolia/client-search@5.43.0)(@types/node@24.10.0)(async-validator@4.2.5)(axios@1.13.2)(less@4.4.2)(nprogress@0.2.0)(postcss@8.5.6)(qrcode@1.5.4)(sass@1.93.3)(search-insights@2.17.3)(sortablejs@1.15.6)(terser@5.44.1)(typescript@5.9.3))(vue@3.5.24(typescript@5.9.3))': dependencies: - '@iconify-json/octicon': 1.2.17 + '@iconify-json/octicon': 1.2.18 less: 4.4.2 - vitepress: 1.6.4(@algolia/client-search@5.42.0)(@types/node@24.10.0)(async-validator@4.2.5)(axios@1.13.2)(less@4.4.2)(nprogress@0.2.0)(postcss@8.5.6)(qrcode@1.5.4)(sass@1.93.3)(search-insights@2.17.3)(sortablejs@1.15.6)(terser@5.44.1)(typescript@5.9.3) - vue: 3.5.23(typescript@5.9.3) + vitepress: 1.6.4(@algolia/client-search@5.43.0)(@types/node@24.10.0)(async-validator@4.2.5)(axios@1.13.2)(less@4.4.2)(nprogress@0.2.0)(postcss@8.5.6)(qrcode@1.5.4)(sass@1.93.3)(search-insights@2.17.3)(sortablejs@1.15.6)(terser@5.44.1)(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) - '@nolebase/vitepress-plugin-git-changelog@2.18.2(vitepress@1.6.4(@algolia/client-search@5.42.0)(@types/node@24.10.0)(async-validator@4.2.5)(axios@1.13.2)(less@4.4.2)(nprogress@0.2.0)(postcss@8.5.6)(qrcode@1.5.4)(sass@1.93.3)(search-insights@2.17.3)(sortablejs@1.15.6)(terser@5.44.1)(typescript@5.9.3))(vue@3.5.23(typescript@5.9.3))': + '@nolebase/vitepress-plugin-git-changelog@2.18.2(vitepress@1.6.4(@algolia/client-search@5.43.0)(@types/node@24.10.0)(async-validator@4.2.5)(axios@1.13.2)(less@4.4.2)(nprogress@0.2.0)(postcss@8.5.6)(qrcode@1.5.4)(sass@1.93.3)(search-insights@2.17.3)(sortablejs@1.15.6)(terser@5.44.1)(typescript@5.9.3))(vue@3.5.24(typescript@5.9.3))': dependencies: - '@iconify-json/octicon': 1.2.17 - '@nolebase/ui': 2.18.2(vitepress@1.6.4(@algolia/client-search@5.42.0)(@types/node@24.10.0)(async-validator@4.2.5)(axios@1.13.2)(less@4.4.2)(nprogress@0.2.0)(postcss@8.5.6)(qrcode@1.5.4)(sass@1.93.3)(search-insights@2.17.3)(sortablejs@1.15.6)(terser@5.44.1)(typescript@5.9.3))(vue@3.5.23(typescript@5.9.3)) + '@iconify-json/octicon': 1.2.18 + '@nolebase/ui': 2.18.2(vitepress@1.6.4(@algolia/client-search@5.43.0)(@types/node@24.10.0)(async-validator@4.2.5)(axios@1.13.2)(less@4.4.2)(nprogress@0.2.0)(postcss@8.5.6)(qrcode@1.5.4)(sass@1.93.3)(search-insights@2.17.3)(sortablejs@1.15.6)(terser@5.44.1)(typescript@5.9.3))(vue@3.5.24(typescript@5.9.3)) colorette: 2.0.20 date-fns: 4.1.0 defu: 6.1.4 @@ -14239,7 +14333,7 @@ snapshots: gray-matter: 4.0.3 less: 4.4.2 uncrypto: 0.1.3 - vitepress: 1.6.4(@algolia/client-search@5.42.0)(@types/node@24.10.0)(async-validator@4.2.5)(axios@1.13.2)(less@4.4.2)(nprogress@0.2.0)(postcss@8.5.6)(qrcode@1.5.4)(sass@1.93.3)(search-insights@2.17.3)(sortablejs@1.15.6)(terser@5.44.1)(typescript@5.9.3) + vitepress: 1.6.4(@algolia/client-search@5.43.0)(@types/node@24.10.0)(async-validator@4.2.5)(axios@1.13.2)(less@4.4.2)(nprogress@0.2.0)(postcss@8.5.6)(qrcode@1.5.4)(sass@1.93.3)(search-insights@2.17.3)(sortablejs@1.15.6)(terser@5.44.1)(typescript@5.9.3) transitivePeerDependencies: - vue @@ -14368,13 +14462,13 @@ snapshots: '@pnpm/network.ca-file': 1.0.2 config-chain: 1.1.13 - '@pnpm/types@1000.9.0': {} + '@pnpm/types@1001.0.0': {} - '@pnpm/workspace.read-manifest@1000.2.5': + '@pnpm/workspace.read-manifest@1000.2.6': dependencies: '@pnpm/constants': 1001.3.1 '@pnpm/error': 1000.0.5 - '@pnpm/types': 1000.9.0 + '@pnpm/types': 1001.0.0 read-yaml-file: 2.1.0 '@polka/url@1.0.0-next.29': {} @@ -14399,9 +14493,9 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.47': {} - '@rollup/plugin-alias@5.1.1(rollup@4.52.5)': + '@rollup/plugin-alias@5.1.1(rollup@4.53.1)': optionalDependencies: - rollup: 4.52.5 + rollup: 4.53.1 '@rollup/plugin-babel@5.3.1(@babel/core@7.28.5)(rollup@2.79.2)': dependencies: @@ -14412,9 +14506,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@rollup/plugin-commonjs@28.0.9(rollup@4.52.5)': + '@rollup/plugin-commonjs@28.0.9(rollup@4.53.1)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + '@rollup/pluginutils': 5.3.0(rollup@4.53.1) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.5.0(picomatch@4.0.3) @@ -14422,21 +14516,21 @@ snapshots: magic-string: 0.30.21 picomatch: 4.0.3 optionalDependencies: - rollup: 4.52.5 + rollup: 4.53.1 - '@rollup/plugin-inject@5.0.5(rollup@4.52.5)': + '@rollup/plugin-inject@5.0.5(rollup@4.53.1)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + '@rollup/pluginutils': 5.3.0(rollup@4.53.1) estree-walker: 2.0.2 magic-string: 0.30.21 optionalDependencies: - rollup: 4.52.5 + rollup: 4.53.1 - '@rollup/plugin-json@6.1.0(rollup@4.52.5)': + '@rollup/plugin-json@6.1.0(rollup@4.53.1)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + '@rollup/pluginutils': 5.3.0(rollup@4.53.1) optionalDependencies: - rollup: 4.52.5 + rollup: 4.53.1 '@rollup/plugin-node-resolve@15.3.1(rollup@2.79.2)': dependencies: @@ -14448,15 +14542,15 @@ snapshots: optionalDependencies: rollup: 2.79.2 - '@rollup/plugin-node-resolve@16.0.3(rollup@4.52.5)': + '@rollup/plugin-node-resolve@16.0.3(rollup@4.53.1)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + '@rollup/pluginutils': 5.3.0(rollup@4.53.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.11 optionalDependencies: - rollup: 4.52.5 + rollup: 4.53.1 '@rollup/plugin-replace@2.4.2(rollup@2.79.2)': dependencies: @@ -14464,12 +14558,12 @@ snapshots: magic-string: 0.25.9 rollup: 2.79.2 - '@rollup/plugin-replace@6.0.3(rollup@4.52.5)': + '@rollup/plugin-replace@6.0.3(rollup@4.53.1)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + '@rollup/pluginutils': 5.3.0(rollup@4.53.1) magic-string: 0.30.21 optionalDependencies: - rollup: 4.52.5 + rollup: 4.53.1 '@rollup/plugin-terser@0.4.4(rollup@2.79.2)': dependencies: @@ -14479,13 +14573,13 @@ snapshots: optionalDependencies: rollup: 2.79.2 - '@rollup/plugin-terser@0.4.4(rollup@4.52.5)': + '@rollup/plugin-terser@0.4.4(rollup@4.53.1)': dependencies: serialize-javascript: 6.0.2 smob: 1.5.0 terser: 5.44.1 optionalDependencies: - rollup: 4.52.5 + rollup: 4.53.1 '@rollup/pluginutils@3.1.0(rollup@2.79.2)': dependencies: @@ -14507,78 +14601,78 @@ snapshots: optionalDependencies: rollup: 2.79.2 - '@rollup/pluginutils@5.3.0(rollup@4.52.5)': + '@rollup/pluginutils@5.3.0(rollup@4.53.1)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.52.5 + rollup: 4.53.1 - '@rollup/rollup-android-arm-eabi@4.52.5': + '@rollup/rollup-android-arm-eabi@4.53.1': optional: true - '@rollup/rollup-android-arm64@4.52.5': + '@rollup/rollup-android-arm64@4.53.1': optional: true - '@rollup/rollup-darwin-arm64@4.52.5': + '@rollup/rollup-darwin-arm64@4.53.1': optional: true - '@rollup/rollup-darwin-x64@4.52.5': + '@rollup/rollup-darwin-x64@4.53.1': optional: true - '@rollup/rollup-freebsd-arm64@4.52.5': + '@rollup/rollup-freebsd-arm64@4.53.1': optional: true - '@rollup/rollup-freebsd-x64@4.52.5': + '@rollup/rollup-freebsd-x64@4.53.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.52.5': + '@rollup/rollup-linux-arm-gnueabihf@4.53.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.52.5': + '@rollup/rollup-linux-arm-musleabihf@4.53.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.52.5': + '@rollup/rollup-linux-arm64-gnu@4.53.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.52.5': + '@rollup/rollup-linux-arm64-musl@4.53.1': optional: true - '@rollup/rollup-linux-loong64-gnu@4.52.5': + '@rollup/rollup-linux-loong64-gnu@4.53.1': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.52.5': + '@rollup/rollup-linux-ppc64-gnu@4.53.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.52.5': + '@rollup/rollup-linux-riscv64-gnu@4.53.1': optional: true - '@rollup/rollup-linux-riscv64-musl@4.52.5': + '@rollup/rollup-linux-riscv64-musl@4.53.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.52.5': + '@rollup/rollup-linux-s390x-gnu@4.53.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.52.5': + '@rollup/rollup-linux-x64-gnu@4.53.1': optional: true - '@rollup/rollup-linux-x64-musl@4.52.5': + '@rollup/rollup-linux-x64-musl@4.53.1': optional: true - '@rollup/rollup-openharmony-arm64@4.52.5': + '@rollup/rollup-openharmony-arm64@4.53.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.52.5': + '@rollup/rollup-win32-arm64-msvc@4.53.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.52.5': + '@rollup/rollup-win32-ia32-msvc@4.53.1': optional: true - '@rollup/rollup-win32-x64-gnu@4.52.5': + '@rollup/rollup-win32-x64-gnu@4.53.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.52.5': + '@rollup/rollup-win32-x64-msvc@4.53.1': optional: true '@rushstack/node-core-library@5.18.0(@types/node@24.10.0)': @@ -14694,9 +14788,9 @@ snapshots: magic-string: 0.25.9 string.prototype.matchall: 4.0.12 - '@svelte-put/shortcut@4.1.0(svelte@5.43.4)': + '@svelte-put/shortcut@4.1.0(svelte@5.43.5)': dependencies: - svelte: 5.43.4 + svelte: 5.43.5 '@sveltejs/acorn-typescript@1.0.6(acorn@8.15.0)': dependencies: @@ -14728,42 +14822,42 @@ snapshots: '@tanstack/virtual-core@3.13.12': {} - '@tanstack/vue-query@5.90.7(vue@3.5.23(typescript@5.9.3))': + '@tanstack/vue-query@5.90.7(vue@3.5.24(typescript@5.9.3))': dependencies: '@tanstack/match-sorter-utils': 8.19.4 '@tanstack/query-core': 5.90.7 '@vue/devtools-api': 6.6.4 - vue: 3.5.23(typescript@5.9.3) - vue-demi: 0.14.10(vue@3.5.23(typescript@5.9.3)) + vue: 3.5.24(typescript@5.9.3) + vue-demi: 0.14.10(vue@3.5.24(typescript@5.9.3)) - '@tanstack/vue-store@0.7.7(vue@3.5.23(typescript@5.9.3))': + '@tanstack/vue-store@0.7.7(vue@3.5.24(typescript@5.9.3))': dependencies: '@tanstack/store': 0.7.7 - vue: 3.5.23(typescript@5.9.3) - vue-demi: 0.14.10(vue@3.5.23(typescript@5.9.3)) + vue: 3.5.24(typescript@5.9.3) + vue-demi: 0.14.10(vue@3.5.24(typescript@5.9.3)) - '@tanstack/vue-virtual@3.13.12(vue@3.5.23(typescript@5.9.3))': + '@tanstack/vue-virtual@3.13.12(vue@3.5.24(typescript@5.9.3))': dependencies: '@tanstack/virtual-core': 3.13.12 - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) - '@tinyflow-ai/ui@1.1.9(svelte@5.43.4)': + '@tinyflow-ai/ui@1.1.9(svelte@5.43.5)': dependencies: '@floating-ui/dom': 1.7.4 - '@xyflow/svelte': 1.4.1(svelte@5.43.4) + '@xyflow/svelte': 1.4.1(svelte@5.43.5) transitivePeerDependencies: - svelte - '@tinyflow-ai/vue@1.1.9(svelte@5.43.4)(vue@3.5.23(typescript@5.9.3))': + '@tinyflow-ai/vue@1.1.9(svelte@5.43.5)(vue@3.5.24(typescript@5.9.3))': dependencies: - '@tinyflow-ai/ui': 1.1.9(svelte@5.43.4) - vue: 3.5.23(typescript@5.9.3) + '@tinyflow-ai/ui': 1.1.9(svelte@5.43.5) + vue: 3.5.24(typescript@5.9.3) transitivePeerDependencies: - svelte - '@tinymce/tinymce-vue@6.3.0(tinymce@7.9.1)(vue@3.5.23(typescript@5.9.3))': + '@tinymce/tinymce-vue@6.3.0(tinymce@7.9.1)(vue@3.5.24(typescript@5.9.3))': dependencies: - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) optionalDependencies: tinymce: 7.9.1 @@ -15013,10 +15107,14 @@ snapshots: dependencies: '@types/estree': 1.0.8 + '@types/tinycolor2@1.4.6': {} + '@types/trusted-types@2.0.7': {} '@types/unist@3.0.3': {} + '@types/validator@13.15.4': {} + '@types/video.js@7.3.58': {} '@types/web-bluetooth@0.0.16': {} @@ -15215,18 +15313,18 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vee-validate/zod@4.15.1(vue@3.5.23(typescript@5.9.3))(zod@3.25.76)': + '@vee-validate/zod@4.15.1(vue@3.5.24(typescript@5.9.3))(zod@3.25.76)': dependencies: type-fest: 4.41.0 - vee-validate: 4.15.1(vue@3.5.23(typescript@5.9.3)) + vee-validate: 4.15.1(vue@3.5.24(typescript@5.9.3)) zod: 3.25.76 transitivePeerDependencies: - vue - '@vercel/nft@0.30.3(rollup@4.52.5)': + '@vercel/nft@0.30.3(rollup@4.53.1)': dependencies: '@mapbox/node-pre-gyp': 2.0.0 - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + '@rollup/pluginutils': 5.3.0(rollup@4.53.1) acorn: 8.15.0 acorn-import-attributes: 1.9.5(acorn@8.15.0) async-sema: 3.1.1 @@ -15242,11 +15340,11 @@ snapshots: - rollup - supports-color - '@videojs-player/vue@1.0.0(@types/video.js@7.3.58)(video.js@7.21.7)(vue@3.5.23(typescript@5.9.3))': + '@videojs-player/vue@1.0.0(@types/video.js@7.3.58)(video.js@7.21.7)(vue@3.5.24(typescript@5.9.3))': dependencies: '@types/video.js': 7.3.58 video.js: 7.21.7 - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) '@videojs/http-streaming@2.16.3(video.js@7.21.7)': dependencies: @@ -15275,7 +15373,7 @@ snapshots: dependencies: vite-plugin-pwa: 1.1.0(vite@5.4.21(@types/node@24.10.0)(less@4.4.2)(sass@1.93.3)(terser@5.44.1))(workbox-build@7.3.0)(workbox-window@7.3.0) - '@vitejs/plugin-vue-jsx@5.1.1(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.23(typescript@5.9.3))': + '@vitejs/plugin-vue-jsx@5.1.1(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5) @@ -15283,20 +15381,20 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.47 '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.28.5) vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1) - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.2.4(vite@5.4.21(@types/node@24.10.0)(less@4.4.2)(sass@1.93.3)(terser@5.44.1))(vue@3.5.23(typescript@5.9.3))': + '@vitejs/plugin-vue@5.2.4(vite@5.4.21(@types/node@24.10.0)(less@4.4.2)(sass@1.93.3)(terser@5.44.1))(vue@3.5.24(typescript@5.9.3))': dependencies: vite: 5.4.21(@types/node@24.10.0)(less@4.4.2)(sass@1.93.3)(terser@5.44.1) - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) - '@vitejs/plugin-vue@6.0.1(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.23(typescript@5.9.3))': + '@vitejs/plugin-vue@6.0.1(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.0-beta.29 vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1) - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) '@vitest/expect@3.2.4': dependencies: @@ -15364,7 +15462,7 @@ snapshots: '@babel/types': 7.28.5 '@vue/babel-helper-vue-transform-on': 1.5.0 '@vue/babel-plugin-resolve-type': 1.5.0(@babel/core@7.28.5) - '@vue/shared': 3.5.23 + '@vue/shared': 3.5.24 optionalDependencies: '@babel/core': 7.28.5 transitivePeerDependencies: @@ -15377,39 +15475,39 @@ snapshots: '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 '@babel/parser': 7.28.5 - '@vue/compiler-sfc': 3.5.23 + '@vue/compiler-sfc': 3.5.24 transitivePeerDependencies: - supports-color - '@vue/compiler-core@3.5.23': + '@vue/compiler-core@3.5.24': dependencies: '@babel/parser': 7.28.5 - '@vue/shared': 3.5.23 + '@vue/shared': 3.5.24 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.23': + '@vue/compiler-dom@3.5.24': dependencies: - '@vue/compiler-core': 3.5.23 - '@vue/shared': 3.5.23 + '@vue/compiler-core': 3.5.24 + '@vue/shared': 3.5.24 - '@vue/compiler-sfc@3.5.23': + '@vue/compiler-sfc@3.5.24': dependencies: '@babel/parser': 7.28.5 - '@vue/compiler-core': 3.5.23 - '@vue/compiler-dom': 3.5.23 - '@vue/compiler-ssr': 3.5.23 - '@vue/shared': 3.5.23 + '@vue/compiler-core': 3.5.24 + '@vue/compiler-dom': 3.5.24 + '@vue/compiler-ssr': 3.5.24 + '@vue/shared': 3.5.24 estree-walker: 2.0.2 magic-string: 0.30.21 postcss: 8.5.6 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.23': + '@vue/compiler-ssr@3.5.24': dependencies: - '@vue/compiler-dom': 3.5.23 - '@vue/shared': 3.5.23 + '@vue/compiler-dom': 3.5.24 + '@vue/shared': 3.5.24 '@vue/compiler-vue2@2.7.16': dependencies: @@ -15422,7 +15520,7 @@ snapshots: dependencies: '@vue/devtools-kit': 7.7.7 - '@vue/devtools-core@7.7.7(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.23(typescript@5.9.3))': + '@vue/devtools-core@7.7.7(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3))': dependencies: '@vue/devtools-kit': 7.7.7 '@vue/devtools-shared': 7.7.7 @@ -15430,14 +15528,14 @@ snapshots: nanoid: 5.1.6 pathe: 2.0.3 vite-hot-client: 2.1.0(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1)) - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) transitivePeerDependencies: - vite '@vue/devtools-kit@7.7.7': dependencies: '@vue/devtools-shared': 7.7.7 - birpc: 2.7.0 + birpc: 2.8.0 hookable: 5.5.3 mitt: 3.0.1 perfect-debounce: 1.0.0 @@ -15451,9 +15549,9 @@ snapshots: '@vue/language-core@2.2.0(typescript@5.9.3)': dependencies: '@volar/language-core': 2.4.23 - '@vue/compiler-dom': 3.5.23 + '@vue/compiler-dom': 3.5.24 '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.5.23 + '@vue/shared': 3.5.24 alien-signals: 0.4.14 minimatch: 9.0.5 muggle-string: 0.4.1 @@ -15464,9 +15562,9 @@ snapshots: '@vue/language-core@2.2.10(typescript@5.9.3)': dependencies: '@volar/language-core': 2.4.23 - '@vue/compiler-dom': 3.5.23 + '@vue/compiler-dom': 3.5.24 '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.5.23 + '@vue/shared': 3.5.24 alien-signals: 1.0.13 minimatch: 9.0.5 muggle-string: 0.4.1 @@ -15474,29 +15572,29 @@ snapshots: optionalDependencies: typescript: 5.9.3 - '@vue/reactivity@3.5.23': + '@vue/reactivity@3.5.24': dependencies: - '@vue/shared': 3.5.23 + '@vue/shared': 3.5.24 - '@vue/runtime-core@3.5.23': + '@vue/runtime-core@3.5.24': dependencies: - '@vue/reactivity': 3.5.23 - '@vue/shared': 3.5.23 + '@vue/reactivity': 3.5.24 + '@vue/shared': 3.5.24 - '@vue/runtime-dom@3.5.23': + '@vue/runtime-dom@3.5.24': dependencies: - '@vue/reactivity': 3.5.23 - '@vue/runtime-core': 3.5.23 - '@vue/shared': 3.5.23 + '@vue/reactivity': 3.5.24 + '@vue/runtime-core': 3.5.24 + '@vue/shared': 3.5.24 csstype: 3.1.3 - '@vue/server-renderer@3.5.23(vue@3.5.23(typescript@5.9.3))': + '@vue/server-renderer@3.5.24(vue@3.5.24(typescript@5.9.3))': dependencies: - '@vue/compiler-ssr': 3.5.23 - '@vue/shared': 3.5.23 - vue: 3.5.23(typescript@5.9.3) + '@vue/compiler-ssr': 3.5.24 + '@vue/shared': 3.5.24 + vue: 3.5.24(typescript@5.9.3) - '@vue/shared@3.5.23': {} + '@vue/shared@3.5.24': {} '@vue/test-utils@2.4.6': dependencies: @@ -15508,30 +15606,30 @@ snapshots: '@types/web-bluetooth': 0.0.21 '@vueuse/metadata': 12.8.2 '@vueuse/shared': 12.8.2(typescript@5.9.3) - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) transitivePeerDependencies: - typescript - '@vueuse/core@13.9.0(vue@3.5.23(typescript@5.9.3))': + '@vueuse/core@13.9.0(vue@3.5.24(typescript@5.9.3))': dependencies: '@types/web-bluetooth': 0.0.21 '@vueuse/metadata': 13.9.0 - '@vueuse/shared': 13.9.0(vue@3.5.23(typescript@5.9.3)) - vue: 3.5.23(typescript@5.9.3) + '@vueuse/shared': 13.9.0(vue@3.5.24(typescript@5.9.3)) + vue: 3.5.24(typescript@5.9.3) - '@vueuse/core@14.0.0(vue@3.5.23(typescript@5.9.3))': + '@vueuse/core@14.0.0(vue@3.5.24(typescript@5.9.3))': dependencies: '@types/web-bluetooth': 0.0.21 '@vueuse/metadata': 14.0.0 - '@vueuse/shared': 14.0.0(vue@3.5.23(typescript@5.9.3)) - vue: 3.5.23(typescript@5.9.3) + '@vueuse/shared': 14.0.0(vue@3.5.24(typescript@5.9.3)) + vue: 3.5.24(typescript@5.9.3) - '@vueuse/core@9.13.0(vue@3.5.23(typescript@5.9.3))': + '@vueuse/core@9.13.0(vue@3.5.24(typescript@5.9.3))': dependencies: '@types/web-bluetooth': 0.0.16 '@vueuse/metadata': 9.13.0 - '@vueuse/shared': 9.13.0(vue@3.5.23(typescript@5.9.3)) - vue-demi: 0.14.10(vue@3.5.23(typescript@5.9.3)) + '@vueuse/shared': 9.13.0(vue@3.5.24(typescript@5.9.3)) + vue-demi: 0.14.10(vue@3.5.24(typescript@5.9.3)) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -15540,7 +15638,7 @@ snapshots: dependencies: '@vueuse/core': 12.8.2(typescript@5.9.3) '@vueuse/shared': 12.8.2(typescript@5.9.3) - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) optionalDependencies: async-validator: 4.2.5 axios: 1.13.2 @@ -15551,11 +15649,11 @@ snapshots: transitivePeerDependencies: - typescript - '@vueuse/integrations@14.0.0(async-validator@4.2.5)(axios@1.13.2)(focus-trap@7.6.6)(nprogress@0.2.0)(qrcode@1.5.4)(sortablejs@1.15.6)(vue@3.5.23(typescript@5.9.3))': + '@vueuse/integrations@14.0.0(async-validator@4.2.5)(axios@1.13.2)(focus-trap@7.6.6)(nprogress@0.2.0)(qrcode@1.5.4)(sortablejs@1.15.6)(vue@3.5.24(typescript@5.9.3))': dependencies: - '@vueuse/core': 14.0.0(vue@3.5.23(typescript@5.9.3)) - '@vueuse/shared': 14.0.0(vue@3.5.23(typescript@5.9.3)) - vue: 3.5.23(typescript@5.9.3) + '@vueuse/core': 14.0.0(vue@3.5.24(typescript@5.9.3)) + '@vueuse/shared': 14.0.0(vue@3.5.24(typescript@5.9.3)) + vue: 3.5.24(typescript@5.9.3) optionalDependencies: async-validator: 4.2.5 axios: 1.13.2 @@ -15572,15 +15670,15 @@ snapshots: '@vueuse/metadata@9.13.0': {} - '@vueuse/motion@3.0.3(vue@3.5.23(typescript@5.9.3))': + '@vueuse/motion@3.0.3(vue@3.5.24(typescript@5.9.3))': dependencies: - '@vueuse/core': 13.9.0(vue@3.5.23(typescript@5.9.3)) - '@vueuse/shared': 13.9.0(vue@3.5.23(typescript@5.9.3)) + '@vueuse/core': 13.9.0(vue@3.5.24(typescript@5.9.3)) + '@vueuse/shared': 13.9.0(vue@3.5.24(typescript@5.9.3)) defu: 6.1.4 framesync: 6.1.2 popmotion: 11.0.5 style-value-types: 5.1.2 - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) optionalDependencies: '@nuxt/kit': 3.20.1 transitivePeerDependencies: @@ -15588,38 +15686,38 @@ snapshots: '@vueuse/shared@12.8.2(typescript@5.9.3)': dependencies: - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) transitivePeerDependencies: - typescript - '@vueuse/shared@13.9.0(vue@3.5.23(typescript@5.9.3))': + '@vueuse/shared@13.9.0(vue@3.5.24(typescript@5.9.3))': dependencies: - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) - '@vueuse/shared@14.0.0(vue@3.5.23(typescript@5.9.3))': + '@vueuse/shared@14.0.0(vue@3.5.24(typescript@5.9.3))': dependencies: - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) - '@vueuse/shared@9.13.0(vue@3.5.23(typescript@5.9.3))': + '@vueuse/shared@9.13.0(vue@3.5.24(typescript@5.9.3))': dependencies: - vue-demi: 0.14.10(vue@3.5.23(typescript@5.9.3)) + vue-demi: 0.14.10(vue@3.5.24(typescript@5.9.3)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vxe-ui/core@4.2.13(vue@3.5.23(typescript@5.9.3))': + '@vxe-ui/core@4.2.13(vue@3.5.24(typescript@5.9.3))': dependencies: dom-zindex: 1.0.6 - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) xe-utils: 3.7.9 '@xmldom/xmldom@0.8.11': {} - '@xyflow/svelte@1.4.1(svelte@5.43.4)': + '@xyflow/svelte@1.4.1(svelte@5.43.5)': dependencies: - '@svelte-put/shortcut': 4.1.0(svelte@5.43.4) + '@svelte-put/shortcut': 4.1.0(svelte@5.43.5) '@xyflow/system': 0.0.72 - svelte: 5.43.4 + svelte: 5.43.5 '@xyflow/system@0.0.72': dependencies: @@ -15701,22 +15799,22 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - algoliasearch@5.42.0: + algoliasearch@5.43.0: dependencies: - '@algolia/abtesting': 1.8.0 - '@algolia/client-abtesting': 5.42.0 - '@algolia/client-analytics': 5.42.0 - '@algolia/client-common': 5.42.0 - '@algolia/client-insights': 5.42.0 - '@algolia/client-personalization': 5.42.0 - '@algolia/client-query-suggestions': 5.42.0 - '@algolia/client-search': 5.42.0 - '@algolia/ingestion': 1.42.0 - '@algolia/monitoring': 1.42.0 - '@algolia/recommend': 5.42.0 - '@algolia/requester-browser-xhr': 5.42.0 - '@algolia/requester-fetch': 5.42.0 - '@algolia/requester-node-http': 5.42.0 + '@algolia/abtesting': 1.9.0 + '@algolia/client-abtesting': 5.43.0 + '@algolia/client-analytics': 5.43.0 + '@algolia/client-common': 5.43.0 + '@algolia/client-insights': 5.43.0 + '@algolia/client-personalization': 5.43.0 + '@algolia/client-query-suggestions': 5.43.0 + '@algolia/client-search': 5.43.0 + '@algolia/ingestion': 1.43.0 + '@algolia/monitoring': 1.43.0 + '@algolia/recommend': 5.43.0 + '@algolia/requester-browser-xhr': 5.43.0 + '@algolia/requester-fetch': 5.43.0 + '@algolia/requester-node-http': 5.43.0 alien-signals@0.4.14: {} @@ -15742,10 +15840,10 @@ snapshots: ansi-styles@6.2.3: {} - ant-design-vue@4.2.6(vue@3.5.23(typescript@5.9.3)): + ant-design-vue@4.2.6(vue@3.5.24(typescript@5.9.3)): dependencies: '@ant-design/colors': 6.0.0 - '@ant-design/icons-vue': 7.0.1(vue@3.5.23(typescript@5.9.3)) + '@ant-design/icons-vue': 7.0.1(vue@3.5.24(typescript@5.9.3)) '@babel/runtime': 7.28.4 '@ctrl/tinycolor': 4.2.0 '@emotion/hash': 0.9.2 @@ -15764,8 +15862,8 @@ snapshots: shallow-equal: 1.2.1 stylis: 4.3.6 throttle-debounce: 5.0.2 - vue: 3.5.23(typescript@5.9.3) - vue-types: 3.0.2(vue@3.5.23(typescript@5.9.3)) + vue: 3.5.24(typescript@5.9.3) + vue-types: 3.0.2(vue@3.5.24(typescript@5.9.3)) warning: 4.0.3 any-promise@1.3.0: {} @@ -15954,7 +16052,7 @@ snapshots: bintrees@1.0.2: {} - birpc@2.7.0: {} + birpc@2.8.0: {} boolbase@1.0.0: {} @@ -16022,7 +16120,7 @@ snapshots: dependencies: baseline-browser-mapping: 2.8.25 caniuse-lite: 1.0.30001754 - electron-to-chromium: 1.5.248 + electron-to-chromium: 1.5.249 node-releases: 2.0.27 update-browserslist-db: 1.1.4(browserslist@4.27.0) @@ -16225,7 +16323,7 @@ snapshots: circular-dependency-scanner@2.3.0: dependencies: '@ast-grep/napi': 0.37.0 - '@vue/compiler-sfc': 3.5.23 + '@vue/compiler-sfc': 3.5.24 commander: 12.1.0 get-tsconfig: 4.13.0 graph-cycles: 3.0.0 @@ -16950,7 +17048,7 @@ snapshots: dependencies: '@babel/parser': 7.28.5 '@babel/traverse': 7.28.5 - '@vue/compiler-sfc': 3.5.23 + '@vue/compiler-sfc': 3.5.24 callsite: 1.0.0 camelcase: 6.3.0 cosmiconfig: 7.1.0 @@ -17152,17 +17250,17 @@ snapshots: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.248: {} + electron-to-chromium@1.5.249: {} - element-plus@2.11.7(vue@3.5.23(typescript@5.9.3)): + element-plus@2.11.7(vue@3.5.24(typescript@5.9.3)): dependencies: '@ctrl/tinycolor': 4.2.0 - '@element-plus/icons-vue': 2.3.2(vue@3.5.23(typescript@5.9.3)) + '@element-plus/icons-vue': 2.3.2(vue@3.5.24(typescript@5.9.3)) '@floating-ui/dom': 1.7.4 '@popperjs/core': '@sxzz/popperjs-es@2.11.7' '@types/lodash': 4.17.20 '@types/lodash-es': 4.17.12 - '@vueuse/core': 9.13.0(vue@3.5.23(typescript@5.9.3)) + '@vueuse/core': 9.13.0(vue@3.5.24(typescript@5.9.3)) async-validator: 4.2.5 dayjs: 1.11.19 lodash: 4.17.21 @@ -17170,7 +17268,7 @@ snapshots: lodash-unified: 1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21) memoize-one: 6.0.0 normalize-wheel-es: 1.2.0 - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) transitivePeerDependencies: - '@vue/composition-api' @@ -17825,7 +17923,7 @@ snapshots: dependencies: magic-string: 0.30.21 mlly: 1.8.0 - rollup: 4.52.5 + rollup: 4.53.1 flat-cache@4.0.1: dependencies: @@ -18028,7 +18126,7 @@ snapshots: minimatch: 10.1.1 minipass: 7.1.2 package-json-from-dist: 1.0.1 - path-scurry: 2.0.0 + path-scurry: 2.0.1 glob@7.2.3: dependencies: @@ -18958,9 +19056,9 @@ snapshots: dependencies: yallist: 4.0.0 - lucide-vue-next@0.507.0(vue@3.5.23(typescript@5.9.3)): + lucide-vue-next@0.507.0(vue@3.5.24(typescript@5.9.3)): dependencies: - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) luxon@3.7.2: {} @@ -19197,7 +19295,7 @@ snapshots: mitt@3.0.1: {} - mkdist@2.4.1(sass@1.93.3)(typescript@5.9.3)(vue-tsc@2.2.10(typescript@5.9.3))(vue@3.5.23(typescript@5.9.3)): + mkdist@2.4.1(sass@1.93.3)(typescript@5.9.3)(vue-tsc@2.2.10(typescript@5.9.3))(vue@3.5.24(typescript@5.9.3)): dependencies: autoprefixer: 10.4.21(postcss@8.5.6) citty: 0.1.6 @@ -19215,7 +19313,7 @@ snapshots: optionalDependencies: sass: 1.93.3 typescript: 5.9.3 - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) vue-tsc: 2.2.10(typescript@5.9.3) mlly@1.8.0: @@ -19269,10 +19367,10 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - naive-ui@2.43.1(vue@3.5.23(typescript@5.9.3)): + naive-ui@2.43.1(vue@3.5.24(typescript@5.9.3)): dependencies: '@css-render/plugin-bem': 0.15.14(css-render@0.15.14) - '@css-render/vue3-ssr': 0.15.14(vue@3.5.23(typescript@5.9.3)) + '@css-render/vue3-ssr': 0.15.14(vue@3.5.24(typescript@5.9.3)) '@types/katex': 0.16.7 '@types/lodash': 4.17.20 '@types/lodash-es': 4.17.12 @@ -19287,10 +19385,10 @@ snapshots: lodash-es: 4.17.21 seemly: 0.3.10 treemate: 0.3.11 - vdirs: 0.1.8(vue@3.5.23(typescript@5.9.3)) - vooks: 0.2.12(vue@3.5.23(typescript@5.9.3)) - vue: 3.5.23(typescript@5.9.3) - vueuc: 0.4.65(vue@3.5.23(typescript@5.9.3)) + vdirs: 0.1.8(vue@3.5.24(typescript@5.9.3)) + vooks: 0.2.12(vue@3.5.24(typescript@5.9.3)) + vue: 3.5.24(typescript@5.9.3) + vueuc: 0.4.65(vue@3.5.24(typescript@5.9.3)) nanoid@3.3.11: {} @@ -19313,14 +19411,14 @@ snapshots: nitropack@2.12.9: dependencies: '@cloudflare/kv-asset-handler': 0.4.0 - '@rollup/plugin-alias': 5.1.1(rollup@4.52.5) - '@rollup/plugin-commonjs': 28.0.9(rollup@4.52.5) - '@rollup/plugin-inject': 5.0.5(rollup@4.52.5) - '@rollup/plugin-json': 6.1.0(rollup@4.52.5) - '@rollup/plugin-node-resolve': 16.0.3(rollup@4.52.5) - '@rollup/plugin-replace': 6.0.3(rollup@4.52.5) - '@rollup/plugin-terser': 0.4.4(rollup@4.52.5) - '@vercel/nft': 0.30.3(rollup@4.52.5) + '@rollup/plugin-alias': 5.1.1(rollup@4.53.1) + '@rollup/plugin-commonjs': 28.0.9(rollup@4.53.1) + '@rollup/plugin-inject': 5.0.5(rollup@4.53.1) + '@rollup/plugin-json': 6.1.0(rollup@4.53.1) + '@rollup/plugin-node-resolve': 16.0.3(rollup@4.53.1) + '@rollup/plugin-replace': 6.0.3(rollup@4.53.1) + '@rollup/plugin-terser': 0.4.4(rollup@4.53.1) + '@vercel/nft': 0.30.3(rollup@4.53.1) archiver: 7.0.1 c12: 3.3.1(magicast@0.5.1) chokidar: 4.0.3 @@ -19362,8 +19460,8 @@ snapshots: pkg-types: 2.3.0 pretty-bytes: 7.1.0 radix3: 1.1.2 - rollup: 4.52.5 - rollup-plugin-visualizer: 6.0.5(rollup@4.52.5) + rollup: 4.53.1 + rollup-plugin-visualizer: 6.0.5(rollup@4.53.1) scule: 1.3.0 semver: 7.7.3 serve-placeholder: 2.0.2 @@ -19713,7 +19811,7 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 - path-scurry@2.0.0: + path-scurry@2.0.1: dependencies: lru-cache: 11.2.2 minipass: 7.1.2 @@ -19744,17 +19842,17 @@ snapshots: pify@4.0.1: {} - pinia-plugin-persistedstate@4.7.1(@nuxt/kit@3.20.1)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.23(typescript@5.9.3))): + pinia-plugin-persistedstate@4.7.1(@nuxt/kit@3.20.1)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.24(typescript@5.9.3))): dependencies: defu: 6.1.4 optionalDependencies: '@nuxt/kit': 3.20.1 - pinia: 3.0.4(typescript@5.9.3)(vue@3.5.23(typescript@5.9.3)) + pinia: 3.0.4(typescript@5.9.3)(vue@3.5.24(typescript@5.9.3)) - pinia@3.0.4(typescript@5.9.3)(vue@3.5.23(typescript@5.9.3)): + pinia@3.0.4(typescript@5.9.3)(vue@3.5.24(typescript@5.9.3)): dependencies: '@vue/devtools-api': 7.7.7 - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 @@ -20486,19 +20584,19 @@ snapshots: dependencies: jsesc: 3.1.0 - reka-ui@2.6.0(typescript@5.9.3)(vue@3.5.23(typescript@5.9.3)): + reka-ui@2.6.0(typescript@5.9.3)(vue@3.5.24(typescript@5.9.3)): dependencies: '@floating-ui/dom': 1.7.4 - '@floating-ui/vue': 1.1.9(vue@3.5.23(typescript@5.9.3)) + '@floating-ui/vue': 1.1.9(vue@3.5.24(typescript@5.9.3)) '@internationalized/date': 3.10.0 '@internationalized/number': 3.6.5 - '@tanstack/vue-virtual': 3.13.12(vue@3.5.23(typescript@5.9.3)) + '@tanstack/vue-virtual': 3.13.12(vue@3.5.24(typescript@5.9.3)) '@vueuse/core': 12.8.2(typescript@5.9.3) '@vueuse/shared': 12.8.2(typescript@5.9.3) aria-hidden: 1.2.6 defu: 6.1.4 ohash: 2.0.11 - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) transitivePeerDependencies: - '@vue/composition-api' - typescript @@ -20559,62 +20657,62 @@ snapshots: robust-predicates@3.0.2: {} - rollup-plugin-dts@6.2.3(rollup@4.52.5)(typescript@5.9.3): + rollup-plugin-dts@6.2.3(rollup@4.53.1)(typescript@5.9.3): dependencies: magic-string: 0.30.21 - rollup: 4.52.5 + rollup: 4.53.1 typescript: 5.9.3 optionalDependencies: '@babel/code-frame': 7.27.1 - rollup-plugin-visualizer@5.14.0(rollup@4.52.5): + rollup-plugin-visualizer@5.14.0(rollup@4.53.1): dependencies: open: 8.4.2 picomatch: 4.0.3 source-map: 0.7.6 yargs: 17.7.2 optionalDependencies: - rollup: 4.52.5 + rollup: 4.53.1 - rollup-plugin-visualizer@6.0.5(rollup@4.52.5): + rollup-plugin-visualizer@6.0.5(rollup@4.53.1): dependencies: open: 8.4.2 picomatch: 4.0.3 source-map: 0.7.6 yargs: 17.7.2 optionalDependencies: - rollup: 4.52.5 + rollup: 4.53.1 rollup@2.79.2: optionalDependencies: fsevents: 2.3.3 - rollup@4.52.5: + rollup@4.53.1: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.52.5 - '@rollup/rollup-android-arm64': 4.52.5 - '@rollup/rollup-darwin-arm64': 4.52.5 - '@rollup/rollup-darwin-x64': 4.52.5 - '@rollup/rollup-freebsd-arm64': 4.52.5 - '@rollup/rollup-freebsd-x64': 4.52.5 - '@rollup/rollup-linux-arm-gnueabihf': 4.52.5 - '@rollup/rollup-linux-arm-musleabihf': 4.52.5 - '@rollup/rollup-linux-arm64-gnu': 4.52.5 - '@rollup/rollup-linux-arm64-musl': 4.52.5 - '@rollup/rollup-linux-loong64-gnu': 4.52.5 - '@rollup/rollup-linux-ppc64-gnu': 4.52.5 - '@rollup/rollup-linux-riscv64-gnu': 4.52.5 - '@rollup/rollup-linux-riscv64-musl': 4.52.5 - '@rollup/rollup-linux-s390x-gnu': 4.52.5 - '@rollup/rollup-linux-x64-gnu': 4.52.5 - '@rollup/rollup-linux-x64-musl': 4.52.5 - '@rollup/rollup-openharmony-arm64': 4.52.5 - '@rollup/rollup-win32-arm64-msvc': 4.52.5 - '@rollup/rollup-win32-ia32-msvc': 4.52.5 - '@rollup/rollup-win32-x64-gnu': 4.52.5 - '@rollup/rollup-win32-x64-msvc': 4.52.5 + '@rollup/rollup-android-arm-eabi': 4.53.1 + '@rollup/rollup-android-arm64': 4.53.1 + '@rollup/rollup-darwin-arm64': 4.53.1 + '@rollup/rollup-darwin-x64': 4.53.1 + '@rollup/rollup-freebsd-arm64': 4.53.1 + '@rollup/rollup-freebsd-x64': 4.53.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.53.1 + '@rollup/rollup-linux-arm-musleabihf': 4.53.1 + '@rollup/rollup-linux-arm64-gnu': 4.53.1 + '@rollup/rollup-linux-arm64-musl': 4.53.1 + '@rollup/rollup-linux-loong64-gnu': 4.53.1 + '@rollup/rollup-linux-ppc64-gnu': 4.53.1 + '@rollup/rollup-linux-riscv64-gnu': 4.53.1 + '@rollup/rollup-linux-riscv64-musl': 4.53.1 + '@rollup/rollup-linux-s390x-gnu': 4.53.1 + '@rollup/rollup-linux-x64-gnu': 4.53.1 + '@rollup/rollup-linux-x64-musl': 4.53.1 + '@rollup/rollup-openharmony-arm64': 4.53.1 + '@rollup/rollup-win32-arm64-msvc': 4.53.1 + '@rollup/rollup-win32-ia32-msvc': 4.53.1 + '@rollup/rollup-win32-x64-gnu': 4.53.1 + '@rollup/rollup-win32-x64-msvc': 4.53.1 fsevents: 2.3.3 rotated-array-set@3.0.0: {} @@ -21221,7 +21319,7 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte@5.43.4: + svelte@5.43.5: dependencies: '@jridgewell/remapping': 2.3.5 '@jridgewell/sourcemap-codec': 1.5.5 @@ -21325,6 +21423,28 @@ snapshots: minizlib: 3.1.0 yallist: 5.0.0 + tdesign-icons-vue-next@0.4.1(vue@3.5.24(typescript@5.9.3)): + dependencies: + '@babel/runtime': 7.28.4 + vue: 3.5.24(typescript@5.9.3) + + tdesign-vue-next@1.17.2(vue@3.5.24(typescript@5.9.3)): + dependencies: + '@babel/runtime': 7.28.4 + '@popperjs/core': 2.11.8 + '@types/lodash-es': 4.17.12 + '@types/sortablejs': 1.15.9 + '@types/tinycolor2': 1.4.6 + '@types/validator': 13.15.4 + dayjs: 1.11.19 + lodash-es: 4.17.21 + mitt: 3.0.1 + sortablejs: 1.15.6 + tdesign-icons-vue-next: 0.4.1(vue@3.5.24(typescript@5.9.3)) + tinycolor2: 1.6.0 + validator: 13.15.22 + vue: 3.5.24(typescript@5.9.3) + temp-dir@2.0.0: {} tempy@0.6.0: @@ -21371,6 +21491,8 @@ snapshots: tinybench@2.9.0: {} + tinycolor2@1.6.0: {} + tinyexec@0.3.2: {} tinyexec@1.0.2: {} @@ -21520,14 +21642,14 @@ snapshots: has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 - unbuild@3.6.1(sass@1.93.3)(typescript@5.9.3)(vue-tsc@2.2.10(typescript@5.9.3))(vue@3.5.23(typescript@5.9.3)): + unbuild@3.6.1(sass@1.93.3)(typescript@5.9.3)(vue-tsc@2.2.10(typescript@5.9.3))(vue@3.5.24(typescript@5.9.3)): dependencies: - '@rollup/plugin-alias': 5.1.1(rollup@4.52.5) - '@rollup/plugin-commonjs': 28.0.9(rollup@4.52.5) - '@rollup/plugin-json': 6.1.0(rollup@4.52.5) - '@rollup/plugin-node-resolve': 16.0.3(rollup@4.52.5) - '@rollup/plugin-replace': 6.0.3(rollup@4.52.5) - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + '@rollup/plugin-alias': 5.1.1(rollup@4.53.1) + '@rollup/plugin-commonjs': 28.0.9(rollup@4.53.1) + '@rollup/plugin-json': 6.1.0(rollup@4.53.1) + '@rollup/plugin-node-resolve': 16.0.3(rollup@4.53.1) + '@rollup/plugin-replace': 6.0.3(rollup@4.53.1) + '@rollup/pluginutils': 5.3.0(rollup@4.53.1) citty: 0.1.6 consola: 3.4.2 defu: 6.1.4 @@ -21536,13 +21658,13 @@ snapshots: hookable: 5.5.3 jiti: 2.6.1 magic-string: 0.30.21 - mkdist: 2.4.1(sass@1.93.3)(typescript@5.9.3)(vue-tsc@2.2.10(typescript@5.9.3))(vue@3.5.23(typescript@5.9.3)) + mkdist: 2.4.1(sass@1.93.3)(typescript@5.9.3)(vue-tsc@2.2.10(typescript@5.9.3))(vue@3.5.24(typescript@5.9.3)) mlly: 1.8.0 pathe: 2.0.3 pkg-types: 2.3.0 pretty-bytes: 7.1.0 - rollup: 4.52.5 - rollup-plugin-dts: 6.2.3(rollup@4.52.5)(typescript@5.9.3) + rollup: 4.53.1 + rollup-plugin-dts: 6.2.3(rollup@4.53.1)(typescript@5.9.3) scule: 1.3.0 tinyglobby: 0.2.15 untyped: 2.0.0 @@ -21763,16 +21885,18 @@ snapshots: util-deprecate@1.0.2: {} - vdirs@0.1.8(vue@3.5.23(typescript@5.9.3)): + validator@13.15.22: {} + + vdirs@0.1.8(vue@3.5.24(typescript@5.9.3)): dependencies: evtd: 0.2.4 - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) - vee-validate@4.15.1(vue@3.5.23(typescript@5.9.3)): + vee-validate@4.15.1(vue@3.5.24(typescript@5.9.3)): dependencies: '@vue/devtools-api': 7.7.7 type-fest: 4.41.0 - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) vfile-message@4.0.3: dependencies: @@ -21840,10 +21964,10 @@ snapshots: transitivePeerDependencies: - supports-color - vite-plugin-dts@4.5.4(@types/node@24.10.0)(rollup@4.52.5)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1)): + vite-plugin-dts@4.5.4(@types/node@24.10.0)(rollup@4.53.1)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1)): dependencies: '@microsoft/api-extractor': 7.54.0(@types/node@24.10.0) - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + '@rollup/pluginutils': 5.3.0(rollup@4.53.1) '@volar/typescript': 2.4.23 '@vue/language-core': 2.2.0(typescript@5.9.3) compare-versions: 6.1.1 @@ -21875,10 +21999,10 @@ snapshots: pathe: 0.2.0 vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1) - vite-plugin-inspect@0.8.9(rollup@4.52.5)(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1)): + vite-plugin-inspect@0.8.9(rollup@4.53.1)(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1)): dependencies: '@antfu/utils': 0.7.10 - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + '@rollup/pluginutils': 5.3.0(rollup@4.53.1) debug: 4.4.3 error-stack-parser-es: 0.1.5 fs-extra: 11.3.2 @@ -21893,9 +22017,9 @@ snapshots: vite-plugin-lazy-import@1.0.7: dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + '@rollup/pluginutils': 5.3.0(rollup@4.53.1) es-module-lexer: 1.7.0 - rollup: 4.52.5 + rollup: 4.53.1 xe-utils: 3.7.9 vite-plugin-pwa@1.1.0(vite@5.4.21(@types/node@24.10.0)(less@4.4.2)(sass@1.93.3)(terser@5.44.1))(workbox-build@7.3.0)(workbox-window@7.3.0): @@ -21920,15 +22044,15 @@ snapshots: transitivePeerDependencies: - supports-color - vite-plugin-vue-devtools@7.7.7(rollup@4.52.5)(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.23(typescript@5.9.3)): + vite-plugin-vue-devtools@7.7.7(rollup@4.53.1)(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)): dependencies: - '@vue/devtools-core': 7.7.7(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.23(typescript@5.9.3)) + '@vue/devtools-core': 7.7.7(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1))(vue@3.5.24(typescript@5.9.3)) '@vue/devtools-kit': 7.7.7 '@vue/devtools-shared': 7.7.7 execa: 9.6.0 sirv: 3.0.2 vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1) - vite-plugin-inspect: 0.8.9(rollup@4.52.5)(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1)) + vite-plugin-inspect: 0.8.9(rollup@4.53.1)(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1)) vite-plugin-vue-inspector: 5.3.2(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1)) transitivePeerDependencies: - '@nuxt/kit' @@ -21944,7 +22068,7 @@ snapshots: '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.5) '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.28.5) '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.28.5) - '@vue/compiler-dom': 3.5.23 + '@vue/compiler-dom': 3.5.24 kolorist: 1.8.0 magic-string: 0.30.21 vite: 7.2.2(@types/node@24.10.0)(jiti@2.6.1)(less@4.4.2)(sass@1.93.3)(terser@5.44.1)(yaml@2.8.1) @@ -21955,7 +22079,7 @@ snapshots: dependencies: esbuild: 0.25.3 postcss: 8.5.6 - rollup: 4.52.5 + rollup: 4.53.1 optionalDependencies: '@types/node': 24.10.0 fsevents: 2.3.3 @@ -21969,7 +22093,7 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.52.5 + rollup: 4.53.1 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.10.0 @@ -21990,18 +22114,18 @@ snapshots: transitivePeerDependencies: - supports-color - vitepress@1.6.4(@algolia/client-search@5.42.0)(@types/node@24.10.0)(async-validator@4.2.5)(axios@1.13.2)(less@4.4.2)(nprogress@0.2.0)(postcss@8.5.6)(qrcode@1.5.4)(sass@1.93.3)(search-insights@2.17.3)(sortablejs@1.15.6)(terser@5.44.1)(typescript@5.9.3): + vitepress@1.6.4(@algolia/client-search@5.43.0)(@types/node@24.10.0)(async-validator@4.2.5)(axios@1.13.2)(less@4.4.2)(nprogress@0.2.0)(postcss@8.5.6)(qrcode@1.5.4)(sass@1.93.3)(search-insights@2.17.3)(sortablejs@1.15.6)(terser@5.44.1)(typescript@5.9.3): dependencies: '@docsearch/css': 3.8.2 - '@docsearch/js': 3.8.2(@algolia/client-search@5.42.0)(search-insights@2.17.3) - '@iconify-json/simple-icons': 1.2.57 + '@docsearch/js': 3.8.2(@algolia/client-search@5.43.0)(search-insights@2.17.3) + '@iconify-json/simple-icons': 1.2.58 '@shikijs/core': 2.5.0 '@shikijs/transformers': 2.5.0 '@shikijs/types': 2.5.0 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.4(vite@5.4.21(@types/node@24.10.0)(less@4.4.2)(sass@1.93.3)(terser@5.44.1))(vue@3.5.23(typescript@5.9.3)) + '@vitejs/plugin-vue': 5.2.4(vite@5.4.21(@types/node@24.10.0)(less@4.4.2)(sass@1.93.3)(terser@5.44.1))(vue@3.5.24(typescript@5.9.3)) '@vue/devtools-api': 7.7.7 - '@vue/shared': 3.5.23 + '@vue/shared': 3.5.24 '@vueuse/core': 12.8.2(typescript@5.9.3) '@vueuse/integrations': 12.8.2(async-validator@4.2.5)(axios@1.13.2)(focus-trap@7.6.6)(nprogress@0.2.0)(qrcode@1.5.4)(sortablejs@1.15.6)(typescript@5.9.3) focus-trap: 7.6.6 @@ -22009,7 +22133,7 @@ snapshots: minisearch: 7.2.0 shiki: 2.5.0 vite: 5.4.21(@types/node@24.10.0)(less@4.4.2)(sass@1.93.3)(terser@5.44.1) - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) optionalDependencies: postcss: 8.5.6 transitivePeerDependencies: @@ -22081,10 +22205,10 @@ snapshots: - tsx - yaml - vooks@0.2.12(vue@3.5.23(typescript@5.9.3)): + vooks@0.2.12(vue@3.5.24(typescript@5.9.3)): dependencies: evtd: 0.2.4 - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) vscode-languageserver-textdocument@1.0.12: {} @@ -22092,14 +22216,14 @@ snapshots: vue-component-type-helpers@2.2.12: {} - vue-demi@0.14.10(vue@3.5.23(typescript@5.9.3)): + vue-demi@0.14.10(vue@3.5.24(typescript@5.9.3)): dependencies: - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) - vue-dompurify-html@5.3.0(vue@3.5.23(typescript@5.9.3)): + vue-dompurify-html@5.3.0(vue@3.5.24(typescript@5.9.3)): dependencies: dompurify: 3.3.0 - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) vue-eslint-parser@10.2.0(eslint@9.39.1(jiti@2.6.1)): dependencies: @@ -22113,27 +22237,27 @@ snapshots: transitivePeerDependencies: - supports-color - vue-i18n@11.1.12(vue@3.5.23(typescript@5.9.3)): + vue-i18n@11.1.12(vue@3.5.24(typescript@5.9.3)): dependencies: '@intlify/core-base': 11.1.12 '@intlify/shared': 11.1.12 '@vue/devtools-api': 6.6.4 - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) - vue-json-viewer@3.0.4(vue@3.5.23(typescript@5.9.3)): + vue-json-viewer@3.0.4(vue@3.5.24(typescript@5.9.3)): dependencies: clipboard: 2.0.11 - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) - vue-router@4.6.3(vue@3.5.23(typescript@5.9.3)): + vue-router@4.6.3(vue@3.5.24(typescript@5.9.3)): dependencies: '@vue/devtools-api': 6.6.4 - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) - vue-tippy@6.7.1(vue@3.5.23(typescript@5.9.3)): + vue-tippy@6.7.1(vue@3.5.24(typescript@5.9.3)): dependencies: tippy.js: 6.3.7 - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) vue-tsc@2.2.10(typescript@5.9.3): dependencies: @@ -22141,58 +22265,58 @@ snapshots: '@vue/language-core': 2.2.10(typescript@5.9.3) typescript: 5.9.3 - vue-types@3.0.2(vue@3.5.23(typescript@5.9.3)): + vue-types@3.0.2(vue@3.5.24(typescript@5.9.3)): dependencies: is-plain-object: 3.0.1 - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) vue3-print-nb@0.1.4(typescript@5.9.3): dependencies: - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) transitivePeerDependencies: - typescript - vue3-signature@0.2.4(vue@3.5.23(typescript@5.9.3)): + vue3-signature@0.2.4(vue@3.5.24(typescript@5.9.3)): dependencies: default-passive-events: 2.0.0 signature_pad: 3.0.0-beta.4 - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) - vue@3.5.23(typescript@5.9.3): + vue@3.5.24(typescript@5.9.3): dependencies: - '@vue/compiler-dom': 3.5.23 - '@vue/compiler-sfc': 3.5.23 - '@vue/runtime-dom': 3.5.23 - '@vue/server-renderer': 3.5.23(vue@3.5.23(typescript@5.9.3)) - '@vue/shared': 3.5.23 + '@vue/compiler-dom': 3.5.24 + '@vue/compiler-sfc': 3.5.24 + '@vue/runtime-dom': 3.5.24 + '@vue/server-renderer': 3.5.24(vue@3.5.24(typescript@5.9.3)) + '@vue/shared': 3.5.24 optionalDependencies: typescript: 5.9.3 - vuedraggable@4.1.0(vue@3.5.23(typescript@5.9.3)): + vuedraggable@4.1.0(vue@3.5.24(typescript@5.9.3)): dependencies: sortablejs: 1.14.0 - vue: 3.5.23(typescript@5.9.3) + vue: 3.5.24(typescript@5.9.3) - vueuc@0.4.65(vue@3.5.23(typescript@5.9.3)): + vueuc@0.4.65(vue@3.5.24(typescript@5.9.3)): dependencies: - '@css-render/vue3-ssr': 0.15.14(vue@3.5.23(typescript@5.9.3)) + '@css-render/vue3-ssr': 0.15.14(vue@3.5.24(typescript@5.9.3)) '@juggle/resize-observer': 3.4.0 css-render: 0.15.14 evtd: 0.2.4 seemly: 0.3.10 - vdirs: 0.1.8(vue@3.5.23(typescript@5.9.3)) - vooks: 0.2.12(vue@3.5.23(typescript@5.9.3)) - vue: 3.5.23(typescript@5.9.3) + vdirs: 0.1.8(vue@3.5.24(typescript@5.9.3)) + vooks: 0.2.12(vue@3.5.24(typescript@5.9.3)) + vue: 3.5.24(typescript@5.9.3) - vxe-pc-ui@4.10.17(vue@3.5.23(typescript@5.9.3)): + vxe-pc-ui@4.10.18(vue@3.5.24(typescript@5.9.3)): dependencies: - '@vxe-ui/core': 4.2.13(vue@3.5.23(typescript@5.9.3)) + '@vxe-ui/core': 4.2.13(vue@3.5.24(typescript@5.9.3)) transitivePeerDependencies: - vue - vxe-table@4.17.11(vue@3.5.23(typescript@5.9.3)): + vxe-table@4.17.12(vue@3.5.24(typescript@5.9.3)): dependencies: - vxe-pc-ui: 4.10.17(vue@3.5.23(typescript@5.9.3)) + vxe-pc-ui: 4.10.18(vue@3.5.24(typescript@5.9.3)) transitivePeerDependencies: - vue diff --git a/vben-admin.code-workspace b/vben-admin.code-workspace index aa8205bda..33df5a752 100644 --- a/vben-admin.code-workspace +++ b/vben-admin.code-workspace @@ -16,6 +16,10 @@ "name": "@vben/web-naive", "path": "apps/web-naive", }, + { + "name": "@vben/web-tdesign", + "path": "apps/web-tdesign", + }, { "name": "@vben/docs", "path": "docs",