From 6ef0b1121c86c01fa75563dbb79c6568a3cf96a4 Mon Sep 17 00:00:00 2001 From: liuyun Date: Sun, 11 Oct 2026 00:12:59 +0800 Subject: [PATCH] feat: admin layout shell with Element Plus and configurable theme MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 集成 Element Plus(on-demand resolver + 中文 locale + 暗黑 css-vars) - 布局壳组件(ty-header/ty-mixbar/ty-sidebar/ty-tabs/ty-breadcrumb/ty-footer/ty-setting/ty-setting-panel),中划线 + ty 前缀 + 自动导入,props/emits 解耦 - 5 种布局/导航模式 + 主题色(#2E7FA3) + 暗黑 + 侧栏折叠/宽度 + 固定顶栏/底栏 + 面包屑/多页签/全屏/手风琴 - 默认值集中配置 src/config/layout.ts;菜单字段对齐后端 resource(src/types/resource.ts + src/config/menu.ts) Co-Authored-By: Claude Opus 4.8 --- components.d.ts | 52 ++ package.json | 1 + pnpm-lock.yaml | 1044 +++++++++++++++------------ src/App.vue | 10 +- src/components/ty-breadcrumb.vue | 27 + src/components/ty-footer.vue | 40 + src/components/ty-header.vue | 220 ++++++ src/components/ty-mixbar.vue | 75 ++ src/components/ty-setting-panel.vue | 129 ++++ src/components/ty-setting.vue | 22 + src/components/ty-sidebar.vue | 92 +++ src/components/ty-tabs.vue | 51 ++ src/config/layout.ts | 36 + src/config/menu.ts | 133 ++++ src/layouts/default.vue | 256 ++++++- src/main.ts | 1 + src/stores/modules/app.ts | 53 ++ src/stores/modules/tabs.ts | 25 + src/types/resource.ts | 20 + src/utils/theme.ts | 54 ++ stats.html | 2 +- typed-router.d.ts | 13 + vite.config.ts | 3 + 23 files changed, 1898 insertions(+), 461 deletions(-) create mode 100644 src/components/ty-breadcrumb.vue create mode 100644 src/components/ty-footer.vue create mode 100644 src/components/ty-header.vue create mode 100644 src/components/ty-mixbar.vue create mode 100644 src/components/ty-setting-panel.vue create mode 100644 src/components/ty-setting.vue create mode 100644 src/components/ty-sidebar.vue create mode 100644 src/components/ty-tabs.vue create mode 100644 src/config/layout.ts create mode 100644 src/config/menu.ts create mode 100644 src/stores/modules/app.ts create mode 100644 src/stores/modules/tabs.ts create mode 100644 src/types/resource.ts create mode 100644 src/utils/theme.ts diff --git a/components.d.ts b/components.d.ts index 538a74c..b00dff2 100644 --- a/components.d.ts +++ b/components.d.ts @@ -12,15 +12,67 @@ export {} /* prettier-ignore */ declare module 'vue' { export interface GlobalComponents { + ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb'] + ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem'] + ElColorPicker: typeof import('element-plus/es')['ElColorPicker'] + ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider'] + ElDrawer: typeof import('element-plus/es')['ElDrawer'] + ElDropdown: typeof import('element-plus/es')['ElDropdown'] + ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] + ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] + ElMenu: typeof import('element-plus/es')['ElMenu'] + ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] + ElRadioButton: typeof import('element-plus/es')['ElRadioButton'] + ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] + ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] + ElSlider: typeof import('element-plus/es')['ElSlider'] + ElSubMenu: typeof import('element-plus/es')['ElSubMenu'] + ElSwitch: typeof import('element-plus/es')['ElSwitch'] + ElTabPane: typeof import('element-plus/es')['ElTabPane'] + ElTabs: typeof import('element-plus/es')['ElTabs'] Icon: typeof import('./src/components/icon/icon.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] + TyBreadcrumb: typeof import('./src/components/ty-breadcrumb.vue')['default'] + TyFooter: typeof import('./src/components/ty-footer.vue')['default'] + TyHeader: typeof import('./src/components/ty-header.vue')['default'] + TyMixbar: typeof import('./src/components/ty-mixbar.vue')['default'] + TySetting: typeof import('./src/components/ty-setting.vue')['default'] + TySettingPanel: typeof import('./src/components/ty-setting-panel.vue')['default'] + TySidebar: typeof import('./src/components/ty-sidebar.vue')['default'] + TyTabs: typeof import('./src/components/ty-tabs.vue')['default'] } } // For TSX support declare global { + const ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb'] + const ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem'] + const ElColorPicker: typeof import('element-plus/es')['ElColorPicker'] + const ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider'] + const ElDrawer: typeof import('element-plus/es')['ElDrawer'] + const ElDropdown: typeof import('element-plus/es')['ElDropdown'] + const ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] + const ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] + const ElMenu: typeof import('element-plus/es')['ElMenu'] + const ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] + const ElRadioButton: typeof import('element-plus/es')['ElRadioButton'] + const ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] + const ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] + const ElSlider: typeof import('element-plus/es')['ElSlider'] + const ElSubMenu: typeof import('element-plus/es')['ElSubMenu'] + const ElSwitch: typeof import('element-plus/es')['ElSwitch'] + const ElTabPane: typeof import('element-plus/es')['ElTabPane'] + const ElTabs: typeof import('element-plus/es')['ElTabs'] const Icon: typeof import('./src/components/icon/icon.vue')['default'] const RouterLink: typeof import('vue-router')['RouterLink'] const RouterView: typeof import('vue-router')['RouterView'] + const TyBreadcrumb: typeof import('./src/components/ty-breadcrumb.vue')['default'] + const TyFooter: typeof import('./src/components/ty-footer.vue')['default'] + const TyHeader: typeof import('./src/components/ty-header.vue')['default'] + const TyMixbar: typeof import('./src/components/ty-mixbar.vue')['default'] + const TySetting: typeof import('./src/components/ty-setting.vue')['default'] + const TySettingPanel: typeof import('./src/components/ty-setting-panel.vue')['default'] + const TySidebar: typeof import('./src/components/ty-sidebar.vue')['default'] + const TyTabs: typeof import('./src/components/ty-tabs.vue')['default'] } \ No newline at end of file diff --git a/package.json b/package.json index 23c1d2f..591a0fb 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "dependencies": { "@iconify/vue": "^5.0.1", "@vueuse/core": "^14.3.0", + "element-plus": "^2.14.7", "pinia": "^3.0.4", "pinia-plugin-persistedstate": "^4.7.1", "vue": "^3.5.38", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3306563..fe58494 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -172,6 +172,9 @@ importers: '@vueuse/core': specifier: ^14.3.0 version: 14.3.0(vue@3.5.38(typescript@6.0.3)) + element-plus: + specifier: ^2.14.7 + version: 2.14.7(vue@3.5.38(typescript@6.0.3)) pinia: specifier: ^3.0.4 version: 3.0.4(typescript@6.0.3)(vue@3.5.38(typescript@6.0.3)) @@ -193,7 +196,7 @@ importers: version: 2.2.487 '@intlify/unplugin-vue-i18n': specifier: ^11.2.4 - version: 11.2.4(@vue/compiler-dom@3.5.38)(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4))(vue-i18n@11.4.6(vue@3.5.38(typescript@6.0.3)))(vue@3.5.38(typescript@6.0.3)) + version: 11.2.4(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)(typescript@6.0.3)(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4))(vue-i18n@11.4.6(vue@3.5.38(typescript@6.0.3)))(vue@3.5.38(typescript@6.0.3)) '@tsconfig/node24': specifier: ^24.0.4 version: 24.0.4 @@ -202,31 +205,31 @@ importers: version: 24.12.2 '@vitejs/plugin-legacy': specifier: ^7.2.1 - version: 7.2.1(terser@5.48.0)(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4)) + version: 7.2.1(supports-color@3.2.3)(terser@5.48.0)(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4)) '@vitejs/plugin-vue': specifier: ^6.0.7 version: 6.0.7(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4))(vue@3.5.38(typescript@6.0.3)) '@vitejs/plugin-vue-jsx': specifier: ^5.1.5 - version: 5.1.5(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4))(vue@3.5.38(typescript@6.0.3)) + version: 5.1.5(supports-color@3.2.3)(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4))(vue@3.5.38(typescript@6.0.3)) '@vue/eslint-config-typescript': specifier: ^14.7.0 - version: 14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(vue-eslint-parser@10.4.0(eslint@10.3.0(jiti@2.6.1))))(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) + version: 14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(vue-eslint-parser@10.4.0(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)))(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)(typescript@6.0.3) '@vue/tsconfig': specifier: ^0.9.1 version: 0.9.1(typescript@6.0.3)(vue@3.5.38(typescript@6.0.3)) eslint: specifier: ^10.2.1 - version: 10.3.0(jiti@2.6.1) + version: 10.3.0(jiti@2.6.1)(supports-color@3.2.3) eslint-config-prettier: specifier: ^10.1.8 - version: 10.1.8(eslint@10.3.0(jiti@2.6.1)) + version: 10.1.8(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3)) eslint-plugin-oxlint: specifier: ~1.60.0 version: 1.60.0(oxlint@1.60.0) eslint-plugin-vue: specifier: ~10.8.0 - version: 10.8.0(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(vue-eslint-parser@10.4.0(eslint@10.3.0(jiti@2.6.1))) + version: 10.8.0(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(vue-eslint-parser@10.4.0(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)) jiti: specifier: ^2.6.1 version: 2.6.1 @@ -274,13 +277,13 @@ importers: version: 2.0.3(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4)) vite-plugin-svg-icons: specifier: ^2.0.1 - version: 2.0.1(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4)) + version: 2.0.1(supports-color@3.2.3)(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4)) vite-plugin-vue-devtools: specifier: ^8.1.3 - version: 8.1.3(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4))(vue@3.5.38(typescript@6.0.3)) + version: 8.1.3(supports-color@3.2.3)(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4))(vue@3.5.38(typescript@6.0.3)) vite-plugin-vue-layouts: specifier: ^0.11.0 - version: 0.11.0(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4))(vue-router@5.0.6(@vue/compiler-sfc@3.5.38)(pinia@3.0.4(typescript@6.0.3)(vue@3.5.38(typescript@6.0.3)))(vue@3.5.38(typescript@6.0.3)))(vue@3.5.38(typescript@6.0.3)) + version: 0.11.0(supports-color@3.2.3)(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4))(vue-router@5.0.6(@vue/compiler-sfc@3.5.38)(pinia@3.0.4(typescript@6.0.3)(vue@3.5.38(typescript@6.0.3)))(vue@3.5.38(typescript@6.0.3)))(vue@3.5.38(typescript@6.0.3)) vue-tsc: specifier: ^3.2.8 version: 3.2.8(typescript@6.0.3) @@ -839,6 +842,15 @@ packages: resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} engines: {node: '>=6.9.0'} + '@ctrl/tinycolor@4.2.1': + resolution: {integrity: sha512-Vh5uy9Y1JBMId6J1f68TMXnZrTCvNdo9Fu2k0d1YnJngR+sM5kWTKl441c/3TFs+cG0NWOjRWgQ/iaWhbYx+7A==} + engines: {node: '>=14'} + + '@element-plus/icons-vue@2.3.2': + resolution: {integrity: sha512-OzIuTaIfC8QXEPmJvB4Y4kw34rSXdCJzxcD1kFStBvr8bK6X1zQAYDo0CNMjojnfTqRQCJ0I7prlErcoRiET2A==} + peerDependencies: + vue: ^3.2.0 + '@emnapi/core@1.10.0': resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} @@ -1034,6 +1046,15 @@ packages: resolution: {integrity: sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@floating-ui/core@1.8.0': + resolution: {integrity: sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ==} + + '@floating-ui/dom@1.8.0': + resolution: {integrity: sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg==} + + '@floating-ui/utils@0.2.12': + resolution: {integrity: sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==} + '@humanfs/core@0.19.2': resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} engines: {node: '>=18.18.0'} @@ -1092,6 +1113,10 @@ packages: resolution: {integrity: sha512-5nj3jULqeTAC1WovwMs1LQWgatTa2pM/rXN9T3XW8rdOtXW9ZF6/GLSNFTKDQmPLwclhPdgUWLJ/4w3fMeeC/Q==} engines: {node: '>= 22'} + '@intlify/shared@10.0.8': + resolution: {integrity: sha512-BcmHpb5bQyeVNrptC3UhzpBZB/YHHDoEREOUERrmF2BRxsyOEuRrq+Z96C/D4+2KJb8kuHiouzAei7BXlG0YYw==} + engines: {node: '>= 16'} + '@intlify/shared@11.4.6': resolution: {integrity: sha512-m1p1HHAMLhqSpTRH7VnXdrN0CQ4y+9vunFkpLkbD8soIuBsnQdawZXqMCgvwI2UVF9Ww7sVaw7g9tV2VO7shoA==} engines: {node: '>= 22'} @@ -1116,15 +1141,9 @@ packages: resolution: {integrity: sha512-w0+70CvTmuqbskWfzeYhn0IXxllr6mU+IeM2MU0M+j9OW64jkrvqY+pYFWrUnIIC9bEdij3NICruicwd5EgUuQ==} engines: {node: '>= 18'} peerDependencies: - '@intlify/shared': ^9.0.0 || ^10.0.0 || ^11.0.0 - '@vue/compiler-dom': ^3.0.0 vue: ^3.0.0 vue-i18n: ^9.0.0 || ^10.0.0 || ^11.0.0 peerDependenciesMeta: - '@intlify/shared': - optional: true - '@vue/compiler-dom': - optional: true vue: optional: true vue-i18n: @@ -1626,6 +1645,9 @@ packages: rollup: optional: true + '@sxzz/popperjs-es@2.11.8': + resolution: {integrity: sha512-wOwESXvvED3S8xBmcPWHs2dUuzrE4XiZeFu7e1hROIJkm02a49N120pmOXxY33sBb6hArItm5W5tcg1cBtV+HQ==} + '@tsconfig/node24@24.0.4': resolution: {integrity: sha512-2A933l5P5oCbv6qSxHs7ckKwobs8BDAe9SJ/Xr2Hy+nDlwmLE1GhFh/g/vXGRZWgxBg9nX/5piDtHR9Dkw/XuA==} @@ -1641,6 +1663,12 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/lodash-es@4.17.12': + resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} + + '@types/lodash@4.17.25': + resolution: {integrity: sha512-+K1NIO8I+F9/wNulfVvu23QYd0Pe9/OCqRrim4NoYIf1VoEDL90Ve4ClzpyqBLc7NpGGWRvYNCKZ1BE/Jpf8dQ==} + '@types/node@24.12.2': resolution: {integrity: sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==} @@ -1952,14 +1980,30 @@ packages: peerDependencies: vue: ^3.5.0 + '@vueuse/core@15.0.0': + resolution: {integrity: sha512-Zv67h5mrk7YHDJsRObx+DXaCBz6RKBUpxqLesJ+3xZNPG6yuQs7ja7kg3veFrrouYLWAqydQ7CwGEbLVxB43Ng==} + engines: {node: '>=22'} + peerDependencies: + vue: ^3.5.0 + '@vueuse/metadata@14.3.0': resolution: {integrity: sha512-BwxmbAzwAVF50+MW57GXOUEV61nFBGnlBvrTqj49PqWJu3uw7hdu72ztXeZ33RdZtDY6kO+bfCAE1PCn88Tktw==} + '@vueuse/metadata@15.0.0': + resolution: {integrity: sha512-sfWE5LADAKJ0KnjtGliMdSN8Ij/L7uP6rXIZlgPloAI4zvvefbw6H5Lt7KJA6RqQOYgVqWF5Guj50HHMIzygBg==} + engines: {node: '>=22'} + '@vueuse/shared@14.3.0': resolution: {integrity: sha512-bZpge9eSXwa4ToSiqJ7j6KRwhAsneMFoSz3LMWKQDkqimm3D/tbFlrklrs/IOqC8tEcYmXQZJ6N0UrjhBirVCg==} peerDependencies: vue: ^3.5.0 + '@vueuse/shared@15.0.0': + resolution: {integrity: sha512-vbNXhGrbV53xPOMSyOzMHQRvhMgZf7oNDw2RChUetVxwTIEkInQ1joZ9JbT0G3z2n2AJNjvmCWeM9ySYrnvogA==} + engines: {node: '>=22'} + peerDependencies: + vue: ^3.5.0 + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -2040,6 +2084,9 @@ packages: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} + async-validator@4.2.5: + resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} + atob@2.1.2: resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} engines: {node: '>= 4.5.0'} @@ -2259,6 +2306,9 @@ packages: resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} engines: {node: '>= 0.4'} + dayjs@1.11.23: + resolution: {integrity: sha512-QDTCU0M0MxR3hQfnlDJfwekQiaanm1ubOD231u73WBckQ/fsamwRLiE2GBz6D3a/xF1NgfiDLJjXBa1hYOYTtQ==} + debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -2360,6 +2410,11 @@ packages: electron-to-chromium@1.5.349: resolution: {integrity: sha512-QsWVGyRuY07Aqb234QytTfwd5d9AJlfNIQ5wIOl1L+PZDzI9d9+Fn0FRale/QYlFxt/bUnB0/nLd1jFPGxGK1A==} + element-plus@2.14.7: + resolution: {integrity: sha512-lrG7pZyCS+mpCNVpzxxyu5r35+T6V0hzkAeIwn7HA6to772XSTHKuYCZG51OfzlqaxGbNegLxs650zAF1j43gA==} + peerDependencies: + vue: ^3.3.7 + emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -3108,9 +3163,22 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} + lodash-es@4.18.1: + resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} + + lodash-unified@1.0.3: + resolution: {integrity: sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==} + peerDependencies: + '@types/lodash-es': '*' + lodash: '*' + lodash-es: '*' + lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -3142,6 +3210,9 @@ packages: mdn-data@2.27.1: resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} + memoize-one@6.0.0: + resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} + memorystream@0.3.1: resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} engines: {node: '>= 0.10.0'} @@ -3217,6 +3288,9 @@ packages: node-releases@2.0.38: resolution: {integrity: sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==} + normalize-wheel-es@1.2.0: + resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==} + npm-normalize-package-bin@4.0.0: resolution: {integrity: sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==} engines: {node: ^18.17.0 || >=20.5.0} @@ -4040,6 +4114,7 @@ packages: engines: {node: '>=v14.21.3'} peerDependencies: vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + vue: '*' vite-plugin-vue-inspector@6.0.0: resolution: {integrity: sha512-OpyITJLgZNibxlrik1EmRtvXHDjLRxNPsWkGFTERZs2LgMEdG4W0WoFt5GIgp3a3jRou+eJR8U1zOBk/XQgEbw==} @@ -4099,6 +4174,9 @@ packages: vscode-uri@3.1.0: resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + vue-component-type-helpers@3.3.12: + resolution: {integrity: sha512-HwCqmgTfLFskQc4P5TRnbduCMyPat2Ezu0elLWOGn0dD/6BKHP15B5bxce6aDi+E4kblPtru8amIBQzu0Di3qQ==} + vue-eslint-parser@10.4.0: resolution: {integrity: sha512-Vxi9pJdbN3ZnVGLODVtZ7y4Y2kzAAE2Cm0CZ3ZDRvydVYxZ6VrnBhLikBsRS+dpwj4Jv4UCv21PTEwF5rQ9WXg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4232,20 +4310,20 @@ snapshots: '@babel/compat-data@7.29.3': {} - '@babel/core@7.29.0': + '@babel/core@7.29.0(supports-color@3.2.3)': dependencies: '@babel/code-frame': 7.29.0 '@babel/generator': 7.29.1 '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) '@babel/helpers': 7.29.2 '@babel/parser': 7.29.3 '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@3.2.3) '@babel/types': 7.29.0 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 - debug: 4.4.3 + debug: 4.4.3(supports-color@3.2.3) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -4272,32 +4350,32 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.29.3(@babel/core@7.29.0)': + '@babel/helper-create-class-features-plugin@7.29.3(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-member-expression-to-functions': 7.28.5(supports-color@3.2.3) '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.29.0 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1(supports-color@3.2.3) + '@babel/traverse': 7.29.0(supports-color@3.2.3) semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.29.0)': + '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-annotate-as-pure': 7.27.3 regexpu-core: 6.4.0 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.0)': + '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - debug: 4.4.3 + debug: 4.4.3(supports-color@3.2.3) lodash.debounce: 4.0.8 resolve: 1.22.12 transitivePeerDependencies: @@ -4305,26 +4383,26 @@ snapshots: '@babel/helper-globals@7.28.0': {} - '@babel/helper-member-expression-to-functions@7.28.5': + '@babel/helper-member-expression-to-functions@7.28.5(supports-color@3.2.3)': dependencies: - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@3.2.3) '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helper-module-imports@7.28.6': + '@babel/helper-module-imports@7.28.6(supports-color@3.2.3)': dependencies: - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@3.2.3) '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-imports': 7.28.6 + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/helper-module-imports': 7.28.6(supports-color@3.2.3) '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@3.2.3) transitivePeerDependencies: - supports-color @@ -4334,27 +4412,27 @@ snapshots: '@babel/helper-plugin-utils@7.28.6': {} - '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.29.0)': + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-wrap-function': 7.28.6 - '@babel/traverse': 7.29.0 + '@babel/helper-wrap-function': 7.28.6(supports-color@3.2.3) + '@babel/traverse': 7.29.0(supports-color@3.2.3) transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.28.6(@babel/core@7.29.0)': + '@babel/helper-replace-supers@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/helper-member-expression-to-functions': 7.28.5(supports-color@3.2.3) '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@3.2.3) transitivePeerDependencies: - supports-color - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + '@babel/helper-skip-transparent-expression-wrappers@7.27.1(supports-color@3.2.3)': dependencies: - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@3.2.3) '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color @@ -4369,10 +4447,10 @@ snapshots: '@babel/helper-validator-option@7.27.1': {} - '@babel/helper-wrap-function@7.28.6': + '@babel/helper-wrap-function@7.28.6(supports-color@3.2.3)': dependencies: '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@3.2.3) '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color @@ -4390,522 +4468,522 @@ snapshots: dependencies: '@babel/types': 7.29.7 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.29.0)': + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@3.2.3) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.3(@babel/core@7.29.0)': + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.3(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1(supports-color@3.2.3) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1(supports-color@3.2.3) + '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@3.2.3) transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-decorators@7.29.0(@babel/core@7.29.0)': + '@babel/plugin-proposal-decorators@7.29.0(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-decorators': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-decorators': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3)) transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) - '@babel/plugin-syntax-decorators@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-syntax-decorators@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-assertions@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-syntax-import-assertions@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.0)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.0)': + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0(supports-color@3.2.3)) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-async-generator-functions@7.29.0(@babel/core@7.29.0)': + '@babel/plugin-transform-async-generator-functions@7.29.0(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0) - '@babel/traverse': 7.29.0 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/traverse': 7.29.0(supports-color@3.2.3) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-async-to-generator@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-imports': 7.28.6 + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/helper-module-imports': 7.28.6(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0) + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-block-scoping@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-block-scoping@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-class-static-block@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-classes@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-globals': 7.28.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) - '@babel/traverse': 7.29.0 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/traverse': 7.29.0(supports-color@3.2.3) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-computed-properties@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-computed-properties@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 '@babel/template': 7.28.6 - '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.29.0)': + '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@3.2.3) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-dotall-regex@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-dotall-regex@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0(supports-color@3.2.3)) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0)': + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0(supports-color@3.2.3)) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-explicit-resource-management@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-explicit-resource-management@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-exponentiation-operator@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-exponentiation-operator@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1(supports-color@3.2.3) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@3.2.3) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-json-strings@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-json-strings@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-literals@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-logical-assignment-operators@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-logical-assignment-operators@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.29.0(@babel/core@7.29.0)': + '@babel/plugin-transform-modules-systemjs@7.29.0(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@3.2.3) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0)': + '@babel/plugin-transform-named-capturing-groups-regex@7.29.0(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0(supports-color@3.2.3)) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-numeric-separator@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-numeric-separator@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-object-rest-spread@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-object-rest-spread@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) - '@babel/traverse': 7.29.0 + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/traverse': 7.29.0(supports-color@3.2.3) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-catch-binding@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-optional-catch-binding@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1(supports-color@3.2.3) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.29.0)': + '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-private-property-in-object@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-regenerator@7.29.0(@babel/core@7.29.0)': + '@babel/plugin-transform-regenerator@7.29.0(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-regexp-modifiers@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-regexp-modifiers@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0(supports-color@3.2.3)) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-spread@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-spread@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1(supports-color@3.2.3) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-typescript@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-typescript@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1(supports-color@3.2.3) + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3)) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-unicode-property-regex@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-unicode-property-regex@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0(supports-color@3.2.3)) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0(supports-color@3.2.3)) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-unicode-sets-regex@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-unicode-sets-regex@7.28.6(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0(supports-color@3.2.3)) '@babel/helper-plugin-utils': 7.28.6 - '@babel/preset-env@7.29.3(@babel/core@7.29.0)': + '@babel/preset-env@7.29.3(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: '@babel/compat-data': 7.29.3 - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.29.0) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array': 7.29.3(@babel/core@7.29.0) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0) - '@babel/plugin-syntax-import-assertions': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.29.0) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-async-generator-functions': 7.29.0(@babel/core@7.29.0) - '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-class-static-block': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-computed-properties': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0) - '@babel/plugin-transform-dotall-regex': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0) - '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-explicit-resource-management': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-exponentiation-operator': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-json-strings': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-logical-assignment-operators': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-modules-systemjs': 7.29.0(@babel/core@7.29.0) - '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0) - '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-numeric-separator': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-optional-catch-binding': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0) - '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-regenerator': 7.29.0(@babel/core@7.29.0) - '@babel/plugin-transform-regexp-modifiers': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-unicode-property-regex': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-unicode-sets-regex': 7.28.6(@babel/core@7.29.0) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.0) - babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.0) - babel-plugin-polyfill-corejs3: 0.14.2(@babel/core@7.29.0) - babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.0) + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array': 7.29.3(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-syntax-import-assertions': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-async-generator-functions': 7.29.0(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/plugin-transform-class-static-block': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/plugin-transform-computed-properties': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/plugin-transform-dotall-regex': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-explicit-resource-management': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/plugin-transform-exponentiation-operator': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/plugin-transform-json-strings': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-logical-assignment-operators': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/plugin-transform-modules-systemjs': 7.29.0(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/plugin-transform-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-numeric-separator': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/plugin-transform-optional-catch-binding': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-regenerator': 7.29.0(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-regexp-modifiers': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-unicode-property-regex': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-unicode-sets-regex': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.0(supports-color@3.2.3)) + babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + babel-plugin-polyfill-corejs3: 0.14.2(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) core-js-compat: 3.49.0 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.0)': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.0(supports-color@3.2.3))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 '@babel/types': 7.29.0 esutils: 2.0.3 @@ -4916,7 +4994,7 @@ snapshots: '@babel/parser': 7.29.3 '@babel/types': 7.29.0 - '@babel/traverse@7.29.0': + '@babel/traverse@7.29.0(supports-color@3.2.3)': dependencies: '@babel/code-frame': 7.29.0 '@babel/generator': 7.29.1 @@ -4924,7 +5002,7 @@ snapshots: '@babel/parser': 7.29.3 '@babel/template': 7.28.6 '@babel/types': 7.29.0 - debug: 4.4.3 + debug: 4.4.3(supports-color@3.2.3) transitivePeerDependencies: - supports-color @@ -4938,6 +5016,12 @@ snapshots: '@babel/helper-string-parser': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 + '@ctrl/tinycolor@4.2.1': {} + + '@element-plus/icons-vue@2.3.2(vue@3.5.38(typescript@6.0.3))': + dependencies: + vue: 3.5.38(typescript@6.0.3) + '@emnapi/core@1.10.0': dependencies: '@emnapi/wasi-threads': 1.2.1 @@ -5032,17 +5116,17 @@ snapshots: '@esbuild/win32-x64@0.25.12': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@10.3.0(jiti@2.6.1))': + '@eslint-community/eslint-utils@4.9.1(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))': dependencies: - eslint: 10.3.0(jiti@2.6.1) + eslint: 10.3.0(jiti@2.6.1)(supports-color@3.2.3) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.23.5': + '@eslint/config-array@0.23.5(supports-color@3.2.3)': dependencies: '@eslint/object-schema': 3.0.5 - debug: 4.4.3 + debug: 4.4.3(supports-color@3.2.3) minimatch: 10.2.5 transitivePeerDependencies: - supports-color @@ -5062,6 +5146,17 @@ snapshots: '@eslint/core': 1.2.1 levn: 0.4.1 + '@floating-ui/core@1.8.0': + dependencies: + '@floating-ui/utils': 0.2.12 + + '@floating-ui/dom@1.8.0': + dependencies: + '@floating-ui/core': 1.8.0 + '@floating-ui/utils': 0.2.12 + + '@floating-ui/utils@0.2.12': {} + '@humanfs/core@0.19.2': dependencies: '@humanfs/types': 0.15.0 @@ -5126,18 +5221,20 @@ snapshots: '@intlify/shared': 11.4.6 source-map-js: 1.2.1 + '@intlify/shared@10.0.8': {} + '@intlify/shared@11.4.6': {} - '@intlify/unplugin-vue-i18n@11.2.4(@vue/compiler-dom@3.5.38)(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4))(vue-i18n@11.4.6(vue@3.5.38(typescript@6.0.3)))(vue@3.5.38(typescript@6.0.3))': + '@intlify/unplugin-vue-i18n@11.2.4(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)(typescript@6.0.3)(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4))(vue-i18n@11.4.6(vue@3.5.38(typescript@6.0.3)))(vue@3.5.38(typescript@6.0.3))': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3)) '@intlify/bundle-utils': 11.2.4(vue-i18n@11.4.6(vue@3.5.38(typescript@6.0.3))) '@intlify/shared': 11.4.6 - '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.4.6)(@vue/compiler-dom@3.5.38)(vue-i18n@11.4.6(vue@3.5.38(typescript@6.0.3)))(vue@3.5.38(typescript@6.0.3)) + '@intlify/vue-i18n-extensions': 8.0.0(vue-i18n@11.4.6(vue@3.5.38(typescript@6.0.3)))(vue@3.5.38(typescript@6.0.3)) '@rollup/pluginutils': 5.3.0 '@typescript-eslint/scope-manager': 8.59.1 - '@typescript-eslint/typescript-estree': 8.59.1(typescript@6.0.3) - debug: 4.4.3 + '@typescript-eslint/typescript-estree': 8.59.1(supports-color@3.2.3)(typescript@6.0.3) + debug: 4.4.3(supports-color@3.2.3) fast-glob: 3.3.3 pathe: 2.0.3 picocolors: 1.1.1 @@ -5147,18 +5244,17 @@ snapshots: vite: 8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4) vue-i18n: 11.4.6(vue@3.5.38(typescript@6.0.3)) transitivePeerDependencies: - - '@vue/compiler-dom' - eslint - rollup - supports-color - typescript - '@intlify/vue-i18n-extensions@8.0.0(@intlify/shared@11.4.6)(@vue/compiler-dom@3.5.38)(vue-i18n@11.4.6(vue@3.5.38(typescript@6.0.3)))(vue@3.5.38(typescript@6.0.3))': + '@intlify/vue-i18n-extensions@8.0.0(vue-i18n@11.4.6(vue@3.5.38(typescript@6.0.3)))(vue@3.5.38(typescript@6.0.3))': dependencies: '@babel/parser': 7.29.7 - optionalDependencies: - '@intlify/shared': 11.4.6 + '@intlify/shared': 10.0.8 '@vue/compiler-dom': 3.5.38 + optionalDependencies: vue: 3.5.38(typescript@6.0.3) vue-i18n: 11.4.6(vue@3.5.38(typescript@6.0.3)) @@ -5456,6 +5552,8 @@ snapshots: estree-walker: 2.0.2 picomatch: 4.0.4 + '@sxzz/popperjs-es@2.11.8': {} + '@tsconfig/node24@24.0.4': {} '@tybys/wasm-util@0.10.2': @@ -5469,6 +5567,12 @@ snapshots: '@types/json-schema@7.0.15': {} + '@types/lodash-es@4.17.12': + dependencies: + '@types/lodash': 4.17.25 + + '@types/lodash@4.17.25': {} + '@types/node@24.12.2': dependencies: undici-types: 7.16.0 @@ -5479,15 +5583,15 @@ snapshots: '@types/web-bluetooth@0.0.21': {} - '@typescript-eslint/eslint-plugin@8.59.1(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.59.1(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) + '@typescript-eslint/parser': 8.59.1(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)(typescript@6.0.3) '@typescript-eslint/scope-manager': 8.59.1 - '@typescript-eslint/type-utils': 8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) - '@typescript-eslint/utils': 8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) + '@typescript-eslint/type-utils': 8.59.1(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)(typescript@6.0.3) + '@typescript-eslint/utils': 8.59.1(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)(typescript@6.0.3) '@typescript-eslint/visitor-keys': 8.59.1 - eslint: 10.3.0(jiti@2.6.1) + eslint: 10.3.0(jiti@2.6.1)(supports-color@3.2.3) ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@6.0.3) @@ -5495,23 +5599,23 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)': + '@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)(typescript@6.0.3)': dependencies: '@typescript-eslint/scope-manager': 8.59.1 '@typescript-eslint/types': 8.59.1 - '@typescript-eslint/typescript-estree': 8.59.1(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.59.1(supports-color@3.2.3)(typescript@6.0.3) '@typescript-eslint/visitor-keys': 8.59.1 - debug: 4.4.3 - eslint: 10.3.0(jiti@2.6.1) + debug: 4.4.3(supports-color@3.2.3) + eslint: 10.3.0(jiti@2.6.1)(supports-color@3.2.3) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.59.1(typescript@6.0.3)': + '@typescript-eslint/project-service@8.59.1(supports-color@3.2.3)(typescript@6.0.3)': dependencies: '@typescript-eslint/tsconfig-utils': 8.59.1(typescript@6.0.3) '@typescript-eslint/types': 8.59.1 - debug: 4.4.3 + debug: 4.4.3(supports-color@3.2.3) typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -5525,13 +5629,13 @@ snapshots: dependencies: typescript: 6.0.3 - '@typescript-eslint/type-utils@8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.59.1(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)(typescript@6.0.3)': dependencies: '@typescript-eslint/types': 8.59.1 - '@typescript-eslint/typescript-estree': 8.59.1(typescript@6.0.3) - '@typescript-eslint/utils': 8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) - debug: 4.4.3 - eslint: 10.3.0(jiti@2.6.1) + '@typescript-eslint/typescript-estree': 8.59.1(supports-color@3.2.3)(typescript@6.0.3) + '@typescript-eslint/utils': 8.59.1(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)(typescript@6.0.3) + debug: 4.4.3(supports-color@3.2.3) + eslint: 10.3.0(jiti@2.6.1)(supports-color@3.2.3) ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: @@ -5539,13 +5643,13 @@ snapshots: '@typescript-eslint/types@8.59.1': {} - '@typescript-eslint/typescript-estree@8.59.1(typescript@6.0.3)': + '@typescript-eslint/typescript-estree@8.59.1(supports-color@3.2.3)(typescript@6.0.3)': dependencies: - '@typescript-eslint/project-service': 8.59.1(typescript@6.0.3) + '@typescript-eslint/project-service': 8.59.1(supports-color@3.2.3)(typescript@6.0.3) '@typescript-eslint/tsconfig-utils': 8.59.1(typescript@6.0.3) '@typescript-eslint/types': 8.59.1 '@typescript-eslint/visitor-keys': 8.59.1 - debug: 4.4.3 + debug: 4.4.3(supports-color@3.2.3) minimatch: 10.2.5 semver: 7.7.4 tinyglobby: 0.2.16 @@ -5554,13 +5658,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)': + '@typescript-eslint/utils@8.59.1(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)(typescript@6.0.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3)) '@typescript-eslint/scope-manager': 8.59.1 '@typescript-eslint/types': 8.59.1 - '@typescript-eslint/typescript-estree': 8.59.1(typescript@6.0.3) - eslint: 10.3.0(jiti@2.6.1) + '@typescript-eslint/typescript-estree': 8.59.1(supports-color@3.2.3)(typescript@6.0.3) + eslint: 10.3.0(jiti@2.6.1)(supports-color@3.2.3) typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -5699,14 +5803,14 @@ snapshots: unplugin-utils: 0.3.1 vite: 8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4) - '@vitejs/plugin-legacy@7.2.1(terser@5.48.0)(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4))': + '@vitejs/plugin-legacy@7.2.1(supports-color@3.2.3)(terser@5.48.0)(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4))': dependencies: - '@babel/core': 7.29.0 - '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-modules-systemjs': 7.29.0(@babel/core@7.29.0) - '@babel/preset-env': 7.29.3(@babel/core@7.29.0) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.0) - babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-modules-systemjs': 7.29.0(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/preset-env': 7.29.3(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) browserslist: 4.28.2 browserslist-to-esbuild: 2.1.1(browserslist@4.28.2) core-js: 3.49.0 @@ -5718,13 +5822,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue-jsx@5.1.5(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4))(vue@3.5.38(typescript@6.0.3))': + '@vitejs/plugin-vue-jsx@5.1.5(supports-color@3.2.3)(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4))(vue@3.5.38(typescript@6.0.3))': dependencies: - '@babel/core': 7.29.0 - '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) '@rolldown/pluginutils': 1.0.0-rc.18 - '@vue/babel-plugin-jsx': 2.0.1(@babel/core@7.29.0) + '@vue/babel-plugin-jsx': 2.0.1(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) vite: 8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4) vue: 3.5.38(typescript@6.0.3) transitivePeerDependencies: @@ -5762,54 +5866,54 @@ snapshots: '@vue/babel-helper-vue-transform-on@2.0.1': {} - '@vue/babel-plugin-jsx@1.5.0(@babel/core@7.29.0)': + '@vue/babel-plugin-jsx@1.5.0(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/helper-module-imports': 7.28.6 + '@babel/helper-module-imports': 7.28.6(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3)) '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@3.2.3) '@babel/types': 7.29.7 '@vue/babel-helper-vue-transform-on': 1.5.0 - '@vue/babel-plugin-resolve-type': 1.5.0(@babel/core@7.29.0) + '@vue/babel-plugin-resolve-type': 1.5.0(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) '@vue/shared': 3.5.38 optionalDependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) transitivePeerDependencies: - supports-color - '@vue/babel-plugin-jsx@2.0.1(@babel/core@7.29.0)': + '@vue/babel-plugin-jsx@2.0.1(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: - '@babel/helper-module-imports': 7.28.6 + '@babel/helper-module-imports': 7.28.6(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3)) '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@3.2.3) '@babel/types': 7.29.0 '@vue/babel-helper-vue-transform-on': 2.0.1 - '@vue/babel-plugin-resolve-type': 2.0.1(@babel/core@7.29.0) + '@vue/babel-plugin-resolve-type': 2.0.1(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) '@vue/shared': 3.5.33 optionalDependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@3.2.3) transitivePeerDependencies: - supports-color - '@vue/babel-plugin-resolve-type@1.5.0(@babel/core@7.29.0)': + '@vue/babel-plugin-resolve-type@1.5.0(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: '@babel/code-frame': 7.29.0 - '@babel/core': 7.29.0 - '@babel/helper-module-imports': 7.28.6 + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/helper-module-imports': 7.28.6(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 '@babel/parser': 7.29.7 '@vue/compiler-sfc': 3.5.38 transitivePeerDependencies: - supports-color - '@vue/babel-plugin-resolve-type@2.0.1(@babel/core@7.29.0)': + '@vue/babel-plugin-resolve-type@2.0.1(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3)': dependencies: '@babel/code-frame': 7.29.0 - '@babel/core': 7.29.0 - '@babel/helper-module-imports': 7.28.6 + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/helper-module-imports': 7.28.6(supports-color@3.2.3) '@babel/helper-plugin-utils': 7.28.6 '@babel/parser': 7.29.3 '@vue/compiler-sfc': 3.5.33 @@ -5924,14 +6028,14 @@ snapshots: '@vue/devtools-shared@8.1.3': {} - '@vue/eslint-config-typescript@14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(vue-eslint-parser@10.4.0(eslint@10.3.0(jiti@2.6.1))))(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)': + '@vue/eslint-config-typescript@14.7.0(eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(vue-eslint-parser@10.4.0(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)))(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)(typescript@6.0.3)': dependencies: - '@typescript-eslint/utils': 8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) - eslint: 10.3.0(jiti@2.6.1) - eslint-plugin-vue: 10.8.0(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(vue-eslint-parser@10.4.0(eslint@10.3.0(jiti@2.6.1))) + '@typescript-eslint/utils': 8.59.1(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)(typescript@6.0.3) + eslint: 10.3.0(jiti@2.6.1)(supports-color@3.2.3) + eslint-plugin-vue: 10.8.0(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(vue-eslint-parser@10.4.0(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)) fast-glob: 3.3.3 - typescript-eslint: 8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) - vue-eslint-parser: 10.4.0(eslint@10.3.0(jiti@2.6.1)) + typescript-eslint: 8.59.1(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)(typescript@6.0.3) + vue-eslint-parser: 10.4.0(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3) optionalDependencies: typescript: 6.0.3 transitivePeerDependencies: @@ -5985,12 +6089,25 @@ snapshots: '@vueuse/shared': 14.3.0(vue@3.5.38(typescript@6.0.3)) vue: 3.5.38(typescript@6.0.3) + '@vueuse/core@15.0.0(vue@3.5.38(typescript@6.0.3))': + dependencies: + '@types/web-bluetooth': 0.0.21 + '@vueuse/metadata': 15.0.0 + '@vueuse/shared': 15.0.0(vue@3.5.38(typescript@6.0.3)) + vue: 3.5.38(typescript@6.0.3) + '@vueuse/metadata@14.3.0': {} + '@vueuse/metadata@15.0.0': {} + '@vueuse/shared@14.3.0(vue@3.5.38(typescript@6.0.3))': dependencies: vue: 3.5.38(typescript@6.0.3) + '@vueuse/shared@15.0.0(vue@3.5.38(typescript@6.0.3))': + dependencies: + vue: 3.5.38(typescript@6.0.3) + acorn-jsx@5.3.2(acorn@8.16.0): dependencies: acorn: 8.16.0 @@ -6055,41 +6172,43 @@ snapshots: async-function@1.0.0: {} + async-validator@4.2.5: {} + atob@2.1.2: {} available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.1.0 - babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.0): + babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3): dependencies: '@babel/compat-data': 7.29.3 - '@babel/core': 7.29.0 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.0): + babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3): dependencies: - '@babel/core': 7.29.0 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) core-js-compat: 3.49.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.14.2(@babel/core@7.29.0): + babel-plugin-polyfill-corejs3@0.14.2(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3): dependencies: - '@babel/core': 7.29.0 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) core-js-compat: 3.49.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.29.0): + babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3): dependencies: - '@babel/core': 7.29.0 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) transitivePeerDependencies: - supports-color @@ -6119,7 +6238,7 @@ snapshots: dependencies: balanced-match: 4.0.4 - braces@2.3.2: + braces@2.3.2(supports-color@3.2.3): dependencies: arr-flatten: 1.1.0 array-unique: 0.3.2 @@ -6127,7 +6246,7 @@ snapshots: fill-range: 4.0.0 isobject: 3.0.1 repeat-element: 1.1.4 - snapdragon: 0.8.2 + snapdragon: 0.8.2(supports-color@3.2.3) snapdragon-node: 2.1.1 split-string: 3.1.0 to-regex: 3.0.2 @@ -6307,13 +6426,19 @@ snapshots: es-errors: 1.3.0 is-data-view: 1.0.2 - debug@2.6.9: + dayjs@1.11.23: {} + + debug@2.6.9(supports-color@3.2.3): dependencies: ms: 2.0.0 + optionalDependencies: + supports-color: 3.2.3 - debug@4.4.3: + debug@4.4.3(supports-color@3.2.3): dependencies: ms: 2.1.3 + optionalDependencies: + supports-color: 3.2.3 decode-uri-component@0.2.2: {} @@ -6403,6 +6528,25 @@ snapshots: electron-to-chromium@1.5.349: {} + element-plus@2.14.7(vue@3.5.38(typescript@6.0.3)): + dependencies: + '@ctrl/tinycolor': 4.2.1 + '@element-plus/icons-vue': 2.3.2(vue@3.5.38(typescript@6.0.3)) + '@floating-ui/dom': 1.8.0 + '@popperjs/core': '@sxzz/popperjs-es@2.11.8' + '@types/lodash': 4.17.25 + '@types/lodash-es': 4.17.12 + '@vueuse/core': 15.0.0(vue@3.5.38(typescript@6.0.3)) + async-validator: 4.2.5 + dayjs: 1.11.23 + lodash: 4.18.1 + lodash-es: 4.18.1 + lodash-unified: 1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.18.1)(lodash@4.18.1) + memoize-one: 6.0.0 + normalize-wheel-es: 1.2.0 + vue: 3.5.38(typescript@6.0.3) + vue-component-type-helpers: 3.3.12 + emoji-regex@10.6.0: {} emojis-list@3.0.0: {} @@ -6538,27 +6682,27 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@10.1.8(eslint@10.3.0(jiti@2.6.1)): + eslint-config-prettier@10.1.8(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3)): dependencies: - eslint: 10.3.0(jiti@2.6.1) + eslint: 10.3.0(jiti@2.6.1)(supports-color@3.2.3) eslint-plugin-oxlint@1.60.0(oxlint@1.60.0): dependencies: jsonc-parser: 3.3.1 oxlint: 1.60.0 - eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(vue-eslint-parser@10.4.0(eslint@10.3.0(jiti@2.6.1))): + eslint-plugin-vue@10.8.0(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(vue-eslint-parser@10.4.0(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.6.1)) - eslint: 10.3.0(jiti@2.6.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3)) + eslint: 10.3.0(jiti@2.6.1)(supports-color@3.2.3) natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 7.1.1 semver: 7.7.4 - vue-eslint-parser: 10.4.0(eslint@10.3.0(jiti@2.6.1)) + vue-eslint-parser: 10.4.0(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3) xml-name-validator: 4.0.0 optionalDependencies: - '@typescript-eslint/parser': 8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) + '@typescript-eslint/parser': 8.59.1(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)(typescript@6.0.3) eslint-scope@9.1.2: dependencies: @@ -6571,11 +6715,11 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.3.0(jiti@2.6.1): + eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3)) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.23.5 + '@eslint/config-array': 0.23.5(supports-color@3.2.3) '@eslint/config-helpers': 0.5.5 '@eslint/core': 1.2.1 '@eslint/plugin-kit': 0.7.1 @@ -6585,7 +6729,7 @@ snapshots: '@types/estree': 1.0.8 ajv: 6.15.0 cross-spawn: 7.0.6 - debug: 4.4.3 + debug: 4.4.3(supports-color@3.2.3) escape-string-regexp: 4.0.0 eslint-scope: 9.1.2 eslint-visitor-keys: 5.0.1 @@ -6642,14 +6786,14 @@ snapshots: etag@1.8.1: {} - expand-brackets@2.1.4: + expand-brackets@2.1.4(supports-color@3.2.3): dependencies: - debug: 2.6.9 + debug: 2.6.9(supports-color@3.2.3) define-property: 0.2.5 extend-shallow: 2.0.1 posix-character-classes: 0.1.1 regex-not: 1.0.2 - snapdragon: 0.8.2 + snapdragon: 0.8.2(supports-color@3.2.3) to-regex: 3.0.2 transitivePeerDependencies: - supports-color @@ -6665,15 +6809,15 @@ snapshots: assign-symbols: 1.0.0 is-extendable: 1.0.1 - extglob@2.0.4: + extglob@2.0.4(supports-color@3.2.3): dependencies: array-unique: 0.3.2 define-property: 1.0.0 - expand-brackets: 2.1.4 + expand-brackets: 2.1.4(supports-color@3.2.3) extend-shallow: 2.0.1 fragment-cache: 0.2.1 regex-not: 1.0.2 - snapdragon: 0.8.2 + snapdragon: 0.8.2(supports-color@3.2.3) to-regex: 3.0.2 transitivePeerDependencies: - supports-color @@ -7199,8 +7343,18 @@ snapshots: dependencies: p-locate: 5.0.0 + lodash-es@4.18.1: {} + + lodash-unified@1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.18.1)(lodash@4.18.1): + dependencies: + '@types/lodash-es': 4.17.12 + lodash: 4.18.1 + lodash-es: 4.18.1 + lodash.debounce@4.0.8: {} + lodash@4.18.1: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -7235,6 +7389,8 @@ snapshots: mdn-data@2.27.1: {} + memoize-one@6.0.0: {} + memorystream@0.3.1: {} meow@13.2.0: {} @@ -7245,20 +7401,20 @@ snapshots: merge2@1.4.1: {} - micromatch@3.1.0: + micromatch@3.1.0(supports-color@3.2.3): dependencies: arr-diff: 4.0.0 array-unique: 0.3.2 - braces: 2.3.2 + braces: 2.3.2(supports-color@3.2.3) define-property: 1.0.0 extend-shallow: 2.0.1 - extglob: 2.0.4 + extglob: 2.0.4(supports-color@3.2.3) fragment-cache: 0.2.1 kind-of: 5.1.0 - nanomatch: 1.2.13 + nanomatch: 1.2.13(supports-color@3.2.3) object.pick: 1.3.0 regex-not: 1.0.2 - snapdragon: 0.8.2 + snapdragon: 0.8.2(supports-color@3.2.3) to-regex: 3.0.2 transitivePeerDependencies: - supports-color @@ -7298,7 +7454,7 @@ snapshots: nanoid@3.3.12: {} - nanomatch@1.2.13: + nanomatch@1.2.13(supports-color@3.2.3): dependencies: arr-diff: 4.0.0 array-unique: 0.3.2 @@ -7309,7 +7465,7 @@ snapshots: kind-of: 6.0.3 object.pick: 1.3.0 regex-not: 1.0.2 - snapdragon: 0.8.2 + snapdragon: 0.8.2(supports-color@3.2.3) to-regex: 3.0.2 transitivePeerDependencies: - supports-color @@ -7323,6 +7479,8 @@ snapshots: node-releases@2.0.38: {} + normalize-wheel-es@1.2.0: {} + npm-normalize-package-bin@4.0.0: {} npm-run-all2@8.0.4: @@ -7837,10 +7995,10 @@ snapshots: dependencies: kind-of: 3.2.2 - snapdragon@0.8.2: + snapdragon@0.8.2(supports-color@3.2.3): dependencies: base: 0.11.2 - debug: 2.6.9 + debug: 2.6.9(supports-color@3.2.3) define-property: 0.2.5 extend-shallow: 2.0.1 map-cache: 0.2.2 @@ -7950,7 +8108,7 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svg-baker@1.7.0: + svg-baker@1.7.0(supports-color@3.2.3): dependencies: bluebird: 3.7.2 clone: 2.1.2 @@ -7958,7 +8116,7 @@ snapshots: image-size: 0.5.5 loader-utils: 1.4.2 merge-options: 1.0.1 - micromatch: 3.1.0 + micromatch: 3.1.0(supports-color@3.2.3) postcss: 5.2.18 postcss-prefix-selector: 1.16.1(postcss@5.2.18) posthtml-rename-id: 1.0.12 @@ -8086,13 +8244,13 @@ snapshots: typed-array-buffer: 1.0.3 typed-array-byte-offset: 1.0.4 - typescript-eslint@8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3): + typescript-eslint@8.59.1(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.59.1(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) - '@typescript-eslint/parser': 8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.59.1(typescript@6.0.3) - '@typescript-eslint/utils': 8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) - eslint: 10.3.0(jiti@2.6.1) + '@typescript-eslint/eslint-plugin': 8.59.1(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)(typescript@6.0.3) + '@typescript-eslint/parser': 8.59.1(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.59.1(supports-color@3.2.3)(typescript@6.0.3) + '@typescript-eslint/utils': 8.59.1(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3)(typescript@6.0.3) + eslint: 10.3.0(jiti@2.6.1)(supports-color@3.2.3) typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -8295,10 +8453,10 @@ snapshots: pathe: 2.0.3 vite: 8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4) - vite-plugin-inspect@11.3.3(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4)): + vite-plugin-inspect@11.3.3(supports-color@3.2.3)(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4)): dependencies: ansis: 4.2.0 - debug: 4.4.3 + debug: 4.4.3(supports-color@3.2.3) error-stack-parser-es: 1.0.5 ohash: 2.0.11 open: 10.2.0 @@ -8310,42 +8468,42 @@ snapshots: transitivePeerDependencies: - supports-color - vite-plugin-svg-icons@2.0.1(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4)): + vite-plugin-svg-icons@2.0.1(supports-color@3.2.3)(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4)): dependencies: '@types/svgo': 2.6.4 cors: 2.8.6 - debug: 4.4.3 + debug: 4.4.3(supports-color@3.2.3) etag: 1.8.1 fs-extra: 10.1.0 pathe: 0.2.0 - svg-baker: 1.7.0 + svg-baker: 1.7.0(supports-color@3.2.3) svgo: 2.8.2 vite: 8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4) transitivePeerDependencies: - supports-color - vite-plugin-vue-devtools@8.1.3(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4))(vue@3.5.38(typescript@6.0.3)): + vite-plugin-vue-devtools@8.1.3(supports-color@3.2.3)(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4))(vue@3.5.38(typescript@6.0.3)): dependencies: '@vue/devtools-core': 8.1.3(vue@3.5.38(typescript@6.0.3)) '@vue/devtools-kit': 8.1.3 '@vue/devtools-shared': 8.1.3 sirv: 3.0.2 vite: 8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4) - vite-plugin-inspect: 11.3.3(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4)) - vite-plugin-vue-inspector: 6.0.0(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4)) + vite-plugin-inspect: 11.3.3(supports-color@3.2.3)(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4)) + vite-plugin-vue-inspector: 6.0.0(supports-color@3.2.3)(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4)) + vue: 3.5.38(typescript@6.0.3) transitivePeerDependencies: - '@nuxt/kit' - supports-color - - vue - vite-plugin-vue-inspector@6.0.0(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4)): + vite-plugin-vue-inspector@6.0.0(supports-color@3.2.3)(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4)): dependencies: - '@babel/core': 7.29.0 - '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.29.0) - '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.0) - '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) - '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@3.2.3) + '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.0(supports-color@3.2.3)) + '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) + '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.29.0(supports-color@3.2.3))(supports-color@3.2.3) '@vue/compiler-dom': 3.5.38 kolorist: 1.8.0 magic-string: 0.30.21 @@ -8353,9 +8511,9 @@ snapshots: transitivePeerDependencies: - supports-color - vite-plugin-vue-layouts@0.11.0(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4))(vue-router@5.0.6(@vue/compiler-sfc@3.5.38)(pinia@3.0.4(typescript@6.0.3)(vue@3.5.38(typescript@6.0.3)))(vue@3.5.38(typescript@6.0.3)))(vue@3.5.38(typescript@6.0.3)): + vite-plugin-vue-layouts@0.11.0(supports-color@3.2.3)(vite@8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4))(vue-router@5.0.6(@vue/compiler-sfc@3.5.38)(pinia@3.0.4(typescript@6.0.3)(vue@3.5.38(typescript@6.0.3)))(vue@3.5.38(typescript@6.0.3)))(vue@3.5.38(typescript@6.0.3)): dependencies: - debug: 4.4.3 + debug: 4.4.3(supports-color@3.2.3) fast-glob: 3.3.3 vite: 8.0.16(@types/node@24.12.2)(jiti@2.6.1)(sass@1.101.0)(terser@5.48.0)(yaml@2.8.4) vue: 3.5.38(typescript@6.0.3) @@ -8380,10 +8538,12 @@ snapshots: vscode-uri@3.1.0: {} - vue-eslint-parser@10.4.0(eslint@10.3.0(jiti@2.6.1)): + vue-component-type-helpers@3.3.12: {} + + vue-eslint-parser@10.4.0(eslint@10.3.0(jiti@2.6.1)(supports-color@3.2.3))(supports-color@3.2.3): dependencies: - debug: 4.4.3 - eslint: 10.3.0(jiti@2.6.1) + debug: 4.4.3(supports-color@3.2.3) + eslint: 10.3.0(jiti@2.6.1)(supports-color@3.2.3) eslint-scope: 9.1.2 eslint-visitor-keys: 5.0.1 espree: 11.2.0 diff --git a/src/App.vue b/src/App.vue index 1e7c0c3..02c5506 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,5 +1,9 @@ - - + + diff --git a/src/components/ty-breadcrumb.vue b/src/components/ty-breadcrumb.vue new file mode 100644 index 0000000..89df525 --- /dev/null +++ b/src/components/ty-breadcrumb.vue @@ -0,0 +1,27 @@ + + + + + diff --git a/src/components/ty-footer.vue b/src/components/ty-footer.vue new file mode 100644 index 0000000..56f4855 --- /dev/null +++ b/src/components/ty-footer.vue @@ -0,0 +1,40 @@ + + + + + diff --git a/src/components/ty-header.vue b/src/components/ty-header.vue new file mode 100644 index 0000000..6ff2c79 --- /dev/null +++ b/src/components/ty-header.vue @@ -0,0 +1,220 @@ + + + + + diff --git a/src/components/ty-mixbar.vue b/src/components/ty-mixbar.vue new file mode 100644 index 0000000..9d1f121 --- /dev/null +++ b/src/components/ty-mixbar.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/src/components/ty-setting-panel.vue b/src/components/ty-setting-panel.vue new file mode 100644 index 0000000..caab778 --- /dev/null +++ b/src/components/ty-setting-panel.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/src/components/ty-setting.vue b/src/components/ty-setting.vue new file mode 100644 index 0000000..abfce88 --- /dev/null +++ b/src/components/ty-setting.vue @@ -0,0 +1,22 @@ + + + diff --git a/src/components/ty-sidebar.vue b/src/components/ty-sidebar.vue new file mode 100644 index 0000000..9fa0012 --- /dev/null +++ b/src/components/ty-sidebar.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/src/components/ty-tabs.vue b/src/components/ty-tabs.vue new file mode 100644 index 0000000..566628a --- /dev/null +++ b/src/components/ty-tabs.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/src/config/layout.ts b/src/config/layout.ts new file mode 100644 index 0000000..53478c3 --- /dev/null +++ b/src/config/layout.ts @@ -0,0 +1,36 @@ +/** 布局类型:horizontal 上下(顶部一级导航+左侧菜单)/ top 纯上下(仅顶部)/ sidebar 左右(仅左侧菜单)。 */ +export type LayoutType = 'horizontal' | 'top' | 'sidebar' + +/** 布局/主题设置。默认值在此集中配置,改一处统一生效(用户页面修改覆盖并持久化)。 */ +export interface LayoutSettings { + layout: LayoutType + mixbar: boolean + themeColor: string + isDark: boolean + headerFixed: boolean + sidebarWidth: number + footerFixed: boolean + sidebarCollapsed: boolean + showBreadcrumb: boolean + showTabs: boolean + showFullscreen: boolean + menuAccordion: boolean +} + +export const SIDEBAR_WIDTH_MIN = 200 +export const SIDEBAR_WIDTH_MAX = 340 + +export const defaultLayout: LayoutSettings = { + layout: 'horizontal', + mixbar: false, + themeColor: '#2E7FA3', + isDark: false, + headerFixed: true, + sidebarWidth: 210, + footerFixed: false, + sidebarCollapsed: false, + showBreadcrumb: true, + showTabs: true, + showFullscreen: true, + menuAccordion: false, +} diff --git a/src/config/menu.ts b/src/config/menu.ts new file mode 100644 index 0000000..266f03c --- /dev/null +++ b/src/config/menu.ts @@ -0,0 +1,133 @@ +import type { ResourceNode } from '@/types/resource' + +/** + * 占位菜单树(字段严格对齐后端 resource,children 已按 parentCode 组装)。 + * 后续替换为后端「当前用户菜单树」接口返回,数据结构不变。 + */ +export const placeholderMenus: ResourceNode[] = [ + { + id: 'menu-dashboard', + code: 'dashboard', + name: '工作台', + parentCode: null, + type: 'menu', + path: '/', + component: 'dashboard/index', + icon: 'mdi:view-dashboard', + sort: 1, + }, + { + id: 'menu-system', + code: 'system', + name: '系统管理', + parentCode: null, + type: 'menu', + path: '/system', + component: 'Layout', + icon: 'mdi:cog', + sort: 2, + children: [ + { + id: 'menu-user', + code: 'user', + name: '用户管理', + parentCode: 'system', + type: 'menu', + path: '/system/user', + component: 'system/user/index', + icon: 'mdi:account-group', + sort: 1, + }, + { + id: 'menu-role', + code: 'role', + name: '角色管理', + parentCode: 'system', + type: 'menu', + path: '/system/role', + component: 'system/role/index', + icon: 'mdi:account-key', + sort: 2, + }, + { + id: 'menu-resource', + code: 'resource', + name: '资源管理', + parentCode: 'system', + type: 'menu', + path: '/system/resource', + component: 'system/resource/index', + icon: 'mdi:view-list', + sort: 3, + }, + { + id: 'menu-org', + code: 'org', + name: '组织管理', + parentCode: 'system', + type: 'menu', + path: '/system/org', + component: 'system/org/index', + icon: 'mdi:sitemap', + sort: 4, + }, + { + id: 'menu-dict', + code: 'dict', + name: '字典管理', + parentCode: 'system', + type: 'menu', + path: '/system/dict', + component: 'system/dict/index', + icon: 'mdi:book-open-variant', + sort: 5, + }, + { + id: 'menu-config', + code: 'config', + name: '参数配置', + parentCode: 'system', + type: 'menu', + path: '/system/config', + component: 'system/config/index', + icon: 'mdi:tune', + sort: 6, + }, + ], + }, + { + id: 'menu-monitor', + code: 'monitor', + name: '系统监控', + parentCode: null, + type: 'menu', + path: '/monitor', + component: 'Layout', + icon: 'mdi:monitor-dashboard', + sort: 3, + children: [ + { + id: 'menu-audit', + code: 'audit', + name: '操作日志', + parentCode: 'monitor', + type: 'menu', + path: '/monitor/audit', + component: 'monitor/audit/index', + icon: 'mdi:clipboard-text', + sort: 1, + }, + { + id: 'menu-login-log', + code: 'login-log', + name: '登录日志', + parentCode: 'monitor', + type: 'menu', + path: '/monitor/login-log', + component: 'monitor/login-log/index', + icon: 'mdi:login', + sort: 2, + }, + ], + }, +] diff --git a/src/layouts/default.vue b/src/layouts/default.vue index 76e52e9..c54d605 100644 --- a/src/layouts/default.vue +++ b/src/layouts/default.vue @@ -1,23 +1,249 @@ - - + diff --git a/src/main.ts b/src/main.ts index 7a70045..313bfeb 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,4 +1,5 @@ import { createApp } from 'vue' +import 'element-plus/theme-chalk/dark/css-vars.css' import App from './App.vue' import { installRouter } from './router' diff --git a/src/stores/modules/app.ts b/src/stores/modules/app.ts new file mode 100644 index 0000000..d91d559 --- /dev/null +++ b/src/stores/modules/app.ts @@ -0,0 +1,53 @@ +import { computed, ref } from 'vue' +import { defineStore } from 'pinia' +import { defaultLayout, type LayoutType } from '@/config/layout' + +/** + * 布局/主题偏好。默认值来自 src/config/layout.ts(集中配置), + * 用户在页面上的修改会覆盖默认值并持久化到 localStorage。 + */ +export const useAppStore = defineStore( + 'appStore', + () => { + const layout = ref(defaultLayout.layout) + const mixbar = ref(defaultLayout.mixbar) + const themeColor = ref(defaultLayout.themeColor) + const isDark = ref(defaultLayout.isDark) + const headerFixed = ref(defaultLayout.headerFixed) + const sidebarWidth = ref(defaultLayout.sidebarWidth) + const footerFixed = ref(defaultLayout.footerFixed) + const sidebarCollapsed = ref(defaultLayout.sidebarCollapsed) + const showBreadcrumb = ref(defaultLayout.showBreadcrumb) + const showTabs = ref(defaultLayout.showTabs) + const showFullscreen = ref(defaultLayout.showFullscreen) + const menuAccordion = ref(defaultLayout.menuAccordion) + + /** 是否有顶栏:horizontal / top 有,sidebar(左右)无。 */ + const hasHeader = computed(() => layout.value !== 'sidebar') + + /** 是否渲染侧边栏:horizontal / sidebar 有,top 无。 */ + const hasSidebar = computed(() => layout.value !== 'top') + + /** 是否渲染 MixBar。 */ + const hasMixbar = computed(() => mixbar.value && hasSidebar.value) + + return { + layout, + mixbar, + themeColor, + isDark, + headerFixed, + sidebarWidth, + footerFixed, + sidebarCollapsed, + showBreadcrumb, + showTabs, + showFullscreen, + menuAccordion, + hasHeader, + hasSidebar, + hasMixbar, + } + }, + { persist: true }, +) diff --git a/src/stores/modules/tabs.ts b/src/stores/modules/tabs.ts new file mode 100644 index 0000000..72c5f79 --- /dev/null +++ b/src/stores/modules/tabs.ts @@ -0,0 +1,25 @@ +import { ref } from 'vue' +import { defineStore } from 'pinia' + +export interface TabItem { + path: string + title: string + closable: boolean +} + +/** 多页签状态(会话级,不持久化)。 */ +export const useTabsStore = defineStore('tabsStore', () => { + const tabs = ref([]) + + function addTab(tab: TabItem): void { + if (!tabs.value.some((t) => t.path === tab.path)) { + tabs.value.push(tab) + } + } + + function removeTab(path: string): void { + tabs.value = tabs.value.filter((t) => t.path !== path) + } + + return { tabs, addTab, removeTab } +}) diff --git a/src/types/resource.ts b/src/types/resource.ts new file mode 100644 index 0000000..6de5038 --- /dev/null +++ b/src/types/resource.ts @@ -0,0 +1,20 @@ +/** 资源类型(对齐后端 sys_resource.type)。 */ +export type ResourceType = 'menu' | 'button' | 'api' + +/** + * 资源/菜单节点,字段严格对齐后端 Resource 模型 + * (id/code/name/parentCode/type/path/component/icon/sort)。 + * `children` 为前端按 parentCode 组装的渲染字段。 + */ +export interface ResourceNode { + id: string + code: string + name: string + parentCode: string | null + type: ResourceType + path: string | null + component: string | null + icon: string | null + sort: number + children?: ResourceNode[] +} diff --git a/src/utils/theme.ts b/src/utils/theme.ts new file mode 100644 index 0000000..e04bc7e --- /dev/null +++ b/src/utils/theme.ts @@ -0,0 +1,54 @@ +/** 十六进制颜色 → RGB 三元组。 */ +function hexToRgb(hex: string): [number, number, number] { + let h = hex.replace('#', '') + if (h.length === 3) h = h.split('').map((c) => c + c).join('') + const num = parseInt(h, 16) + return [(num >> 16) & 255, (num >> 8) & 255, num & 255] +} + +/** RGB → 十六进制颜色。 */ +function rgbToHex(r: number, g: number, b: number): string { + return `#${[r, g, b].map((v) => Math.round(v).toString(16).padStart(2, '0')).join('')}` +} + +/** 颜色混合:weight 为 target 占比(0=纯 base,1=纯 target)。 */ +function mix(base: string, target: string, weight: number): string { + const [r1, g1, b1] = hexToRgb(base) + const [r2, g2, b2] = hexToRgb(target) + return rgbToHex(r1 + (r2 - r1) * weight, g1 + (g2 - g1) * weight, b1 + (b2 - b1) * weight) +} + +/** 应用主题色:写入 Element Plus 主色派生变量与 --wm-color-* 令牌(内联样式优先级最高,明暗皆生效)。 */ +export function applyThemeColor(primary: string): void { + const root = document.documentElement + const set = (name: string, value: string) => root.style.setProperty(name, value) + + set('--el-color-primary', primary) + set('--el-color-primary-light-3', mix(primary, '#ffffff', 0.3)) + set('--el-color-primary-light-5', mix(primary, '#ffffff', 0.5)) + set('--el-color-primary-light-7', mix(primary, '#ffffff', 0.7)) + set('--el-color-primary-light-8', mix(primary, '#ffffff', 0.8)) + set('--el-color-primary-light-9', mix(primary, '#ffffff', 0.9)) + set('--el-color-primary-dark-2', mix(primary, '#000000', 0.2)) + + // 同步 --wm-color-primary 及色阶,保证 UnoCSS(text-primary 等)一致 + set('--wm-color-primary', primary) + ;[1, 2, 3, 5, 7, 8, 9].forEach((i) => { + set(`--wm-color-primary-light-${i}`, mix(primary, '#ffffff', i / 10)) + }) + set('--wm-color-primary-dark-1', mix(primary, '#000000', 0.1)) + set('--wm-color-primary-dark-2', mix(primary, '#000000', 0.2)) +} + +/** 应用暗黑模式:同时切换 Element Plus 的 html.dark 与现有 data-theme 令牌。 */ +export function applyDarkMode(isDark: boolean): void { + const root = document.documentElement + root.classList.toggle('dark', isDark) + root.setAttribute('data-theme', isDark ? 'dark' : 'light') +} + +/** 统一应用主题(颜色 + 暗黑)。 */ +export function applyTheme(themeColor: string, isDark: boolean): void { + applyThemeColor(themeColor) + applyDarkMode(isDark) +} diff --git a/stats.html b/stats.html index b947902..20cd71f 100644 --- a/stats.html +++ b/stats.html @@ -4930,7 +4930,7 @@ var drawChart = (function (exports) {