Browse Source

refactor: splitting and reorganizing style files

vince 10 months ago
parent
commit
04a1533a1e
56 changed files with 412 additions and 157 deletions
  1. 0 3
      .editorconfig
  2. 4 0
      .vscode/launch.json
  3. 0 1
      .vscode/settings.json
  4. 1 0
      apps/web-antd/src/bootstrap.ts
  5. 1 1
      internal/lint-configs/eslint-config/src/configs/perfectionist.ts
  6. 2 0
      internal/tailwind-config/package.json
  7. 4 0
      packages/@core/shared/design-tokens/src/default/index.css
  8. 0 22
      packages/@core/shared/design/build.config.ts
  9. 18 12
      packages/@core/shared/design/package.json
  10. 0 0
      packages/@core/shared/design/src/css/nprogress.css
  11. 0 0
      packages/@core/shared/design/src/css/tailwind.css
  12. 0 1
      packages/@core/shared/design/src/index.scss
  13. 5 0
      packages/@core/shared/design/src/index.ts
  14. 1 1
      packages/@core/shared/design/src/scss-bem/bem.scss
  15. 0 0
      packages/@core/shared/design/src/scss-bem/constants.scss
  16. 0 5
      packages/@core/shared/design/src/scss/base.scss
  17. 1 1
      packages/@core/shared/design/src/scss/index.scss
  18. 7 0
      packages/@core/shared/design/vite.config.mts
  19. 1 1
      packages/@core/ui-kit/menu-ui/src/components/normal-menu/normal-menu.vue
  20. 1 1
      packages/@core/ui-kit/menu-ui/src/styles/index.scss
  21. 1 1
      packages/@core/ui-kit/shadcn-ui/package.json
  22. 0 1
      packages/@core/ui-kit/shadcn-ui/src/components/breadcrumb/breadcrumb.vue
  23. 2 2
      packages/@core/ui-kit/shadcn-ui/src/components/button/button.vue
  24. 2 2
      packages/@core/ui-kit/shadcn-ui/src/components/button/icon-button.vue
  25. 1 0
      packages/@core/ui-kit/shadcn-ui/src/components/checkbox/checkbox.vue
  26. 1 0
      packages/@core/ui-kit/shadcn-ui/src/components/context-menu/context-menu.vue
  27. 1 0
      packages/@core/ui-kit/shadcn-ui/src/components/hover-card/hover-card.vue
  28. 1 1
      packages/@core/ui-kit/shadcn-ui/src/components/input-password/input-password.vue
  29. 1 0
      packages/@core/ui-kit/shadcn-ui/src/components/popover/popover.vue
  30. 1 2
      packages/@core/ui-kit/shadcn-ui/src/components/scrollbar/scrollbar.vue
  31. 1 0
      packages/@core/ui-kit/shadcn-ui/src/components/segmented/segmented.vue
  32. 2 1
      packages/@core/ui-kit/shadcn-ui/src/components/sheet/sheet.vue
  33. 1 0
      packages/@core/ui-kit/shadcn-ui/src/components/tooltip/tooltip.vue
  34. 1 1
      packages/@core/ui-kit/shadcn-ui/src/components/ui/alert-dialog/AlertDialogAction.vue
  35. 1 1
      packages/@core/ui-kit/shadcn-ui/src/components/ui/alert-dialog/AlertDialogCancel.vue
  36. 1 1
      packages/@core/ui-kit/shadcn-ui/src/components/ui/toggle-group/ToggleGroupItem.vue
  37. 1 1
      packages/@core/ui-kit/tabs-ui/src/components/chrome-tabs/chrome-tabs.scss
  38. 2 6
      packages/@core/ui-kit/tabs-ui/src/components/chrome-tabs/tabs.vue
  39. 1 1
      packages/@core/ui-kit/tabs-ui/src/tabs-view.vue
  40. 0 0
      packages/@core/ui-kit/tabs-ui/src/types.ts
  41. 0 3
      packages/business/chart-ui/package.json
  42. 1 6
      packages/business/universal-ui/package.json
  43. 0 4
      packages/business/widgets/package.json
  44. 25 31
      packages/business/widgets/src/theme-toggle/theme-button.vue
  45. 0 0
      packages/icons/build.config.ts
  46. 19 4
      packages/icons/package.json
  47. 9 0
      packages/styles/package.json
  48. 8 0
      packages/styles/src/antd/base.css
  49. 1 0
      packages/styles/src/antd/index.ts
  50. 1 0
      packages/styles/src/bem/bem.scss
  51. 0 3
      packages/styles/src/index.scss
  52. 0 4
      packages/styles/src/index.ts
  53. 0 0
      packages/styles/src/tokens/dark.scss
  54. 0 8
      packages/styles/src/tokens/light.scss
  55. 14 1
      packages/styles/vite.config.mts
  56. 266 23
      pnpm-lock.yaml

+ 0 - 3
.editorconfig

@@ -16,6 +16,3 @@ indent_size = 2
 
 [*.md]
 trim_trailing_whitespace = false
-
-[Makefile]
-indent_style = tab

+ 4 - 0
.vscode/launch.json

@@ -1,10 +1,14 @@
 {
+  "$schema": "https://json.schemastore.org/launchsettings.json",
+  "version": "0.2.0",
   "configurations": [
     {
       "type": "chrome", // chrome、edge
       "name": "vben admin pro dev", // 调试的名称,可以自定义
       "request": "launch",
       "url": "http://localhost:5173",
+      "env": { "NODE_ENV": "development" },
+      "sourceMaps": true,
       "webRoot": "${workspaceFolder}/apps/web-antd/src"
     }
   ]

+ 0 - 1
.vscode/settings.json

@@ -60,7 +60,6 @@
   },
 
   "files.exclude": {
-    "**/.editorconfig": true,
     "**/.eslintcache": true,
     "**/bower_components": true,
     "**/.turbo": true,

+ 1 - 0
apps/web-antd/src/bootstrap.ts

@@ -1,6 +1,7 @@
 import { createApp } from 'vue';
 
 import '@vben/styles';
+import '@vben/styles/antd';
 import { preferences } from '@vben-core/preferences';
 
 import { loadMessages, setupI18n } from '#/locales';

+ 1 - 1
internal/lint-configs/eslint-config/src/configs/perfectionist.ts

@@ -26,7 +26,7 @@ export async function perfectionist(): Promise<Linter.FlatConfig[]> {
                 vue: 'vue',
               },
               value: {
-                vben: ['@vben*', '@vben/*', '@vben-core/*'],
+                vben: ['@vben*', '@vben/**/**', '@vben-core/**/**'],
                 vue: ['vue', 'vue-*', '@vue*'],
               },
             },

+ 2 - 0
internal/tailwind-config/package.json

@@ -37,6 +37,8 @@
     },
     "./postcss": {
       "types": "./src/postcss.config.ts",
+      "import": "./dist/postcss.config.mjs",
+      "require": "./dist/postcss.config.cjs",
       "default": "./dist/postcss.config.mjs"
     },
     "./*": "./*"

+ 4 - 0
packages/@core/shared/design-tokens/src/default/index.css

@@ -1,5 +1,9 @@
 /* https://gavin-yyc.github.io/colorconvert/ */
 :root {
+  --font-geist-sans: 'geist-sans', -apple-system, blinkmacsystemfont, 'Segoe UI',
+    roboto, helvetica, arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
+    'Segoe UI Symbol';
+
   /* Default background color of <body />...etc */
   --background: 0 0 100%;
   --foreground: 210 6% 21%;

+ 0 - 22
packages/@core/shared/design/build.config.ts

@@ -1,22 +0,0 @@
-import { defineBuildConfig } from 'unbuild';
-
-export default defineBuildConfig({
-  clean: true,
-  declaration: true,
-  entries: [
-    {
-      builder: 'mkdist',
-      input: './src',
-      loaders: ['sass'],
-      outDir: './dist',
-      pattern: ['index.scss'],
-    },
-    {
-      builder: 'mkdist',
-      input: './src',
-      loaders: ['postcss'],
-      outDir: './dist',
-      pattern: ['tailwind.css'],
-    },
-  ],
-});

+ 18 - 12
packages/@core/shared/design/package.json

@@ -11,25 +11,31 @@
   "license": "MIT",
   "type": "module",
   "scripts": {
-    "build": "pnpm unbuild",
-    "prepublishOnly": "npm run build",
-    "stub": "pnpm unbuild --stub"
+    "build": "pnpm vite build",
+    "prepublishOnly": "npm run build"
   },
   "files": [
     "dist",
     "src"
   ],
+  "main": "./dist/index.mjs",
+  "module": "./dist/index.mjs",
   "exports": {
-    ".": {
-      "development": "./src/scss/index.scss",
-      "default": "./dist/index.css"
-    },
-    "./tailwind": {
-      "development": "./src/tailwind.css",
-      "default": "./dist/tailwind.css"
+    "./bem": {
+      "development": "./src/scss-bem/bem.scss",
+      "default": "./dist/bem.scss"
     },
-    "./global": {
-      "default": "./src/scss/global.scss"
+    ".": {
+      "types": "./src/index.ts",
+      "development": "./src/index.ts",
+      "default": "./dist/index.mjs"
+    }
+  },
+  "publishConfig": {
+    "exports": {
+      ".": {
+        "default": "./dist/index.mjs"
+      }
     }
   },
   "dependencies": {

+ 0 - 0
packages/styles/src/common/nprogress.css → packages/@core/shared/design/src/css/nprogress.css


+ 0 - 0
packages/@core/shared/design/src/tailwind.css → packages/@core/shared/design/src/css/tailwind.css


+ 0 - 1
packages/@core/shared/design/src/index.scss

@@ -1 +0,0 @@
-@import './scss/index';

+ 5 - 0
packages/@core/shared/design/src/index.ts

@@ -0,0 +1,5 @@
+import './scss/index.scss';
+import './css/tailwind.css';
+import './css/nprogress.css';
+
+export {};

+ 1 - 1
packages/@core/shared/design/src/scss/global.scss → packages/@core/shared/design/src/scss-bem/bem.scss

@@ -1,4 +1,4 @@
-@forward './common/constants.scss';
+@forward './constants.scss';
 
 @mixin b($block) {
   $B: $namespace + '-' + $block !global;

+ 0 - 0
packages/@core/shared/design/src/scss/common/constants.scss → packages/@core/shared/design/src/scss-bem/constants.scss


+ 0 - 5
packages/@core/shared/design/src/scss/common/base.scss → packages/@core/shared/design/src/scss/base.scss

@@ -1,5 +1,4 @@
 #app,
-.ant-app,
 body,
 html {
   width: 100%;
@@ -7,10 +6,6 @@ html {
   overscroll-behavior: none;
 }
 
-.ant-app {
-  color: inherit;
-}
-
 *,
 ::after,
 ::before {

+ 1 - 1
packages/@core/shared/design/src/scss/index.scss

@@ -1,4 +1,4 @@
 /** css 样式重置 */
 @import 'modern-normalize/modern-normalize.css';
-@import './common/base';
+@import './base';
 @import './transition';

+ 7 - 0
packages/@core/shared/design/vite.config.mts

@@ -0,0 +1,7 @@
+import { defineConfig } from '@vben/vite-config';
+
+export default defineConfig({
+  vite: {
+    publicDir: 'src/scss-bem',
+  },
+});

+ 1 - 1
packages/@core/ui-kit/menu-ui/src/components/normal-menu/normal-menu.vue

@@ -58,7 +58,7 @@ function handleMouseenter(menu: MenuRecordRaw) {
   </ul>
 </template>
 <style lang="scss" scoped>
-@import '@vben-core/design/global';
+@import '@vben-core/design/bem';
 
 @include b('normal-menu') {
   --menu-item-margin-y: 4px;

+ 1 - 1
packages/@core/ui-kit/menu-ui/src/styles/index.scss

@@ -1,4 +1,4 @@
-@import '@vben-core/design/global';
+@import '@vben-core/design/bem';
 
 .#{$namespace}-menu__popup-container,
 .#{$namespace}-menu {

+ 1 - 1
packages/@core/ui-kit/shadcn-ui/package.json

@@ -49,7 +49,7 @@
     "@vben-core/typings": "workspace:*",
     "@vueuse/core": "^10.11.0",
     "class-variance-authority": "^0.7.0",
-    "lucide-vue-next": "^0.401.0",
+    "lucide-vue-next": "^0.402.0",
     "radix-vue": "^1.9.0",
     "vue": "^3.4.31"
   }

+ 0 - 1
packages/@core/ui-kit/shadcn-ui/src/components/breadcrumb/breadcrumb.vue

@@ -2,7 +2,6 @@
 import type { IBreadcrumb } from './interface';
 
 import { IcRoundKeyboardArrowDown } from '@vben-core/iconify';
-
 import {
   Breadcrumb,
   BreadcrumbItem,

+ 2 - 2
packages/@core/ui-kit/shadcn-ui/src/components/button/button.vue

@@ -3,12 +3,12 @@ import type { HTMLAttributes } from 'vue';
 import { computed } from 'vue';
 
 import { MdiLoading } from '@vben-core/iconify';
-import { cn } from '@vben-core/toolkit';
-
 import {
   type ButtonVariants,
   buttonVariants,
 } from '@vben-core/shadcn-ui/components/ui/button';
+import { cn } from '@vben-core/toolkit';
+
 import { Primitive, type PrimitiveProps } from 'radix-vue';
 
 interface Props extends PrimitiveProps {

+ 2 - 2
packages/@core/ui-kit/shadcn-ui/src/components/button/icon-button.vue

@@ -1,10 +1,10 @@
 <script setup lang="ts">
 import { type HTMLAttributes, computed, useSlots } from 'vue';
 
-import { cn } from '@vben-core/toolkit';
-
 import { VbenTooltip } from '@vben-core/shadcn-ui/components/tooltip';
 import { ButtonVariants } from '@vben-core/shadcn-ui/components/ui/button';
+import { cn } from '@vben-core/toolkit';
+
 import { type PrimitiveProps } from 'radix-vue';
 
 import VbenButton from './button.vue';

+ 1 - 0
packages/@core/ui-kit/shadcn-ui/src/components/checkbox/checkbox.vue

@@ -2,6 +2,7 @@
 import type { CheckboxRootEmits, CheckboxRootProps } from 'radix-vue';
 
 import { Checkbox } from '@vben-core/shadcn-ui/components/ui/checkbox';
+
 import { useForwardPropsEmits } from 'radix-vue';
 
 const props = defineProps<

+ 1 - 0
packages/@core/ui-kit/shadcn-ui/src/components/context-menu/context-menu.vue

@@ -18,6 +18,7 @@ import {
   ContextMenuShortcut,
   ContextMenuTrigger,
 } from '@vben-core/shadcn-ui/components/ui/context-menu';
+
 import { useForwardPropsEmits } from 'radix-vue';
 
 const props = defineProps<

+ 1 - 0
packages/@core/ui-kit/shadcn-ui/src/components/hover-card/hover-card.vue

@@ -8,6 +8,7 @@ import {
   HoverCardContent,
   HoverCardTrigger,
 } from '@vben-core/shadcn-ui/components/ui/hover-card';
+
 import { HoverCardContentProps, useForwardPropsEmits } from 'radix-vue';
 
 const props = defineProps<

+ 1 - 1
packages/@core/ui-kit/shadcn-ui/src/components/input-password/input-password.vue

@@ -5,11 +5,11 @@ import {
   IcOutlineVisibility,
   IcOutlineVisibilityOff,
 } from '@vben-core/iconify';
-
 import {
   type InputProps,
   VbenInput,
 } from '@vben-core/shadcn-ui/components/input';
+
 import { useForwardProps } from 'radix-vue';
 
 import PasswordStrength from './password-strength.vue';

+ 1 - 0
packages/@core/ui-kit/shadcn-ui/src/components/popover/popover.vue

@@ -12,6 +12,7 @@ import {
   Popover as PopoverRoot,
   PopoverTrigger,
 } from '@vben-core/shadcn-ui/components/ui/popover';
+
 import { useForwardPropsEmits } from 'radix-vue';
 
 const props = withDefaults(

+ 1 - 2
packages/@core/ui-kit/shadcn-ui/src/components/scrollbar/scrollbar.vue

@@ -2,9 +2,8 @@
 import type { HTMLAttributes } from 'vue';
 import { ref } from 'vue';
 
-import { cn } from '@vben-core/toolkit';
-
 import { ScrollArea } from '@vben-core/shadcn-ui/components/ui/scroll-area';
+import { cn } from '@vben-core/toolkit';
 
 interface Props {
   class?: HTMLAttributes['class'];

+ 1 - 0
packages/@core/ui-kit/shadcn-ui/src/components/segmented/segmented.vue

@@ -8,6 +8,7 @@ import {
   TabsContent,
   TabsList,
 } from '@vben-core/shadcn-ui/components/ui/tabs';
+
 import { TabsTrigger } from 'radix-vue';
 
 import TabsIndicator from './tabs-indicator.vue';

+ 2 - 1
packages/@core/ui-kit/shadcn-ui/src/components/sheet/sheet.vue

@@ -1,7 +1,6 @@
 <script setup lang="ts">
 import { computed, useSlots } from 'vue';
 
-import { Cross2Icon } from '@radix-icons/vue';
 import {
   VbenButton,
   VbenIconButton,
@@ -18,6 +17,8 @@ import {
   SheetTrigger,
 } from '@vben-core/shadcn-ui/components/ui/sheet';
 
+import { Cross2Icon } from '@radix-icons/vue';
+
 interface Props {
   cancelText?: string;
   description?: string;

+ 1 - 0
packages/@core/ui-kit/shadcn-ui/src/components/tooltip/tooltip.vue

@@ -5,6 +5,7 @@ import {
   TooltipProvider,
   TooltipTrigger,
 } from '@vben-core/shadcn-ui/components/ui/tooltip';
+
 import { TooltipContentProps } from 'radix-vue';
 
 interface Props {

+ 1 - 1
packages/@core/ui-kit/shadcn-ui/src/components/ui/alert-dialog/AlertDialogAction.vue

@@ -1,9 +1,9 @@
 <script setup lang="ts">
 import { type HTMLAttributes, computed } from 'vue';
 
+import { buttonVariants } from '@vben-core/shadcn-ui/components/ui/button';
 import { cn } from '@vben-core/toolkit';
 
-import { buttonVariants } from '@vben-core/shadcn-ui/components/ui/button';
 import { AlertDialogAction, type AlertDialogActionProps } from 'radix-vue';
 
 const props = defineProps<

+ 1 - 1
packages/@core/ui-kit/shadcn-ui/src/components/ui/alert-dialog/AlertDialogCancel.vue

@@ -1,9 +1,9 @@
 <script setup lang="ts">
 import { type HTMLAttributes, computed } from 'vue';
 
+import { buttonVariants } from '@vben-core/shadcn-ui/components/ui/button';
 import { cn } from '@vben-core/toolkit';
 
-import { buttonVariants } from '@vben-core/shadcn-ui/components/ui/button';
 import { AlertDialogCancel, type AlertDialogCancelProps } from 'radix-vue';
 
 const props = defineProps<

+ 1 - 1
packages/@core/ui-kit/shadcn-ui/src/components/ui/toggle-group/ToggleGroupItem.vue

@@ -3,9 +3,9 @@ import type { VariantProps } from 'class-variance-authority';
 
 import { type HTMLAttributes, computed, inject } from 'vue';
 
+import { toggleVariants } from '@vben-core/shadcn-ui/components/ui/toggle';
 import { cn } from '@vben-core/toolkit';
 
-import { toggleVariants } from '@vben-core/shadcn-ui/components/ui/toggle';
 import {
   ToggleGroupItem,
   type ToggleGroupItemProps,

+ 1 - 1
packages/@core/ui-kit/tabs-ui/src/components/chrome-tabs/chrome-tabs.scss

@@ -1,4 +1,4 @@
-@import '@vben-core/design/global';
+@import '@vben-core/design/bem';
 
 @include b('chrome-tabs') {
   --tabs-background: hsl(var(--background));

+ 2 - 6
packages/@core/ui-kit/tabs-ui/src/components/chrome-tabs/tabs.vue

@@ -1,7 +1,7 @@
 <script setup lang="ts">
 import type { TabItem } from '@vben-core/typings';
 
-import type { TabsProps } from '../../interface';
+import type { TabsProps } from '../../types';
 
 import { computed, nextTick, onMounted, ref, watch } from 'vue';
 
@@ -84,11 +84,7 @@ function handleUnPushPin(tab: TabItem) {
 
 <template>
   <div :class="b()" class="relative size-full pt-1">
-    <div
-      ref="contentRef"
-      :class="e('content')"
-      class="relative h-8 overflow-hidden"
-    >
+    <div ref="contentRef" class="relative h-8 overflow-hidden">
       <TransitionGroup name="slide-down">
         <Tab
           v-for="(tab, i) in tabsView"

+ 1 - 1
packages/@core/ui-kit/tabs-ui/src/tabs-view.vue

@@ -4,7 +4,7 @@ import type { TabItem } from '@vben-core/typings';
 import { useForwardPropsEmits } from '@vben-core/shadcn-ui';
 
 import { ChromeTabs } from './components';
-import { TabsProps } from './interface';
+import { TabsProps } from './types';
 
 interface Props extends TabsProps {}
 

+ 0 - 0
packages/@core/ui-kit/tabs-ui/src/interface.ts → packages/@core/ui-kit/tabs-ui/src/types.ts


+ 0 - 3
packages/business/chart-ui/package.json

@@ -36,9 +36,6 @@
       }
     }
   },
-  "peerDependencies": {
-    "@vben-core/design": "workspace:*"
-  },
   "dependencies": {
     "@vben-core/preferences": "workspace:*",
     "@vueuse/core": "^10.11.0",

+ 1 - 6
packages/business/universal-ui/package.json

@@ -36,11 +36,7 @@
       }
     }
   },
-  "peerDependencies": {
-    "@vben-core/design": "workspace:*"
-  },
   "dependencies": {
-    "@vben-core/design": "workspace:*",
     "@vben-core/iconify": "workspace:*",
     "@vben-core/locales": "workspace:*",
     "@vben-core/shadcn-ui": "workspace:*",
@@ -52,7 +48,6 @@
     "vue-router": "^4.4.0"
   },
   "devDependencies": {
-    "@types/qrcode": "^1.5.5",
-    "@vben/types": "workspace:*"
+    "@types/qrcode": "^1.5.5"
   }
 }

+ 0 - 4
packages/business/widgets/package.json

@@ -36,12 +36,8 @@
       }
     }
   },
-  "peerDependencies": {
-    "@vben-core/design": "workspace:*"
-  },
   "dependencies": {
     "@vben-core/colorful": "workspace:*",
-    "@vben-core/design": "workspace:*",
     "@vben-core/iconify": "workspace:*",
     "@vben-core/locales": "workspace:*",
     "@vben-core/preferences": "workspace:*",

+ 25 - 31
packages/business/widgets/src/theme-toggle/theme-button.vue

@@ -86,9 +86,9 @@ function toggleTheme(event: MouseEvent) {
 <template>
   <VbenButton
     :aria-label="theme"
-    :class="[b(), is(theme)]"
+    :class="[b(), is(theme), `is-${theme}`]"
     aria-live="polite"
-    class="cursor-pointer border-none bg-none"
+    class="theme-toggle cursor-pointer border-none bg-none"
     v-bind="bindProps"
     @click.stop="toggleTheme"
   >
@@ -96,6 +96,7 @@ function toggleTheme(event: MouseEvent) {
       <mask
         id="theme-toggle-moon"
         :class="e('moon')"
+        class="theme-toggle__moon"
         fill="hsl(var(--foreground)/80%)"
         stroke="none"
       >
@@ -105,12 +106,13 @@ function toggleTheme(event: MouseEvent) {
       <circle
         id="sun"
         :class="e('sun')"
+        class="theme-toggle__sun"
         cx="12"
         cy="12"
         mask="url(#theme-toggle-moon)"
         r="11"
       />
-      <g :class="e('sun-beams')">
+      <g :class="e('sun-beams')" class="theme-toggle__sun-beams">
         <line x1="12" x2="12" y1="1" y2="3" />
         <line x1="12" x2="12" y1="21" y2="23" />
         <line x1="4.22" x2="5.64" y1="4.22" y2="5.64" />
@@ -125,16 +127,14 @@ function toggleTheme(event: MouseEvent) {
 </template>
 
 <style lang="scss" scoped>
-@import '@vben-core/design/global';
-
-@include b('theme-toggle') {
-  @include e('moon') {
+.theme-toggle {
+  &__moon {
     & > circle {
       transition: transform 0.5s cubic-bezier(0, 0, 0.3, 1);
     }
   }
 
-  @include e('sun') {
+  &__sun {
     fill: hsl(var(--foreground) / 80%);
     stroke: none;
     transition: transform 1.6s cubic-bezier(0.25, 0, 0.2, 1);
@@ -145,7 +145,7 @@ function toggleTheme(event: MouseEvent) {
     }
   }
 
-  @include e('sun-beams') {
+  &__sun-beams {
     stroke: hsl(var(--foreground) / 80%);
     stroke-width: 2px;
     transition:
@@ -158,38 +158,32 @@ function toggleTheme(event: MouseEvent) {
     }
   }
 
-  @include is('light') {
-    @include b('theme-toggle') {
-      @include e('sun') {
-        transform: scale(0.5);
-      }
+  &.is-light {
+    .theme-toggle__sun {
+      transform: scale(0.5);
+    }
 
-      @include e('sun-beams') {
-        transform: rotateZ(0.25turn);
-      }
+    .theme-toggle__sun-beams {
+      transform: rotateZ(0.25turn);
     }
   }
 
-  @include is('dark') {
-    @include b('theme-toggle') {
-      @include e('moon') {
-        & > circle {
-          transform: translateX(-20px);
-        }
+  &.is-dark {
+    .theme-toggle__moon {
+      & > circle {
+        transform: translateX(-20px);
       }
+    }
 
-      @include e('sun-beams') {
-        opacity: 0;
-      }
+    .theme-toggle__sun-beams {
+      opacity: 0;
     }
   }
 
   &:hover > svg {
-    @include b('theme-toggle') {
-      &__moon,
-      &__sun {
-        fill: hsl(var(--foreground));
-      }
+    .theme-toggle__sun,
+    .theme-toggle__moon {
+      fill: hsl(var(--foreground));
     }
   }
 }

+ 0 - 0
packages/utils/build.config.ts → packages/icons/build.config.ts


+ 19 - 4
packages/icons/package.json

@@ -10,17 +10,32 @@
   },
   "license": "MIT",
   "type": "module",
+  "scripts": {
+    "build": "pnpm unbuild",
+    "stub": "pnpm unbuild --stub"
+  },
   "files": [
     "dist"
   ],
-  "main": "./src/index.ts",
-  "module": "./src/index.ts",
+  "main": "./dist/index.mjs",
+  "module": "./dist/index.mjs",
   "exports": {
     ".": {
-      "default": "./src/index.ts"
+      "types": "./src/index.ts",
+      "development": "./src/index.ts",
+      "default": "./dist/index.mjs"
+    }
+  },
+  "publishConfig": {
+    "exports": {
+      ".": {
+        "types": "./dist/index.d.ts",
+        "default": "./dist/index.mjs"
+      }
     }
   },
   "dependencies": {
-    "@vben-core/iconify": "workspace:*"
+    "@vben-core/iconify": "workspace:*",
+    "vue": "^3.4.31"
   }
 }

+ 9 - 0
packages/styles/package.json

@@ -24,6 +24,15 @@
       "types": "./src/index.ts",
       "development": "./src/index.ts",
       "default": "./dist/index.mjs"
+    },
+    "./antd": {
+      "types": "./src/antd/index.ts",
+      "development": "./src/antd/index.ts",
+      "default": "./dist/antd.mjs"
+    },
+    "./bem": {
+      "development": "./src/bem/bem.scss",
+      "default": "./dist/bem.scss"
     }
   },
   "publishConfig": {

+ 8 - 0
packages/styles/src/antd/base.css

@@ -0,0 +1,8 @@
+/* ant-design-vue 组件库的一些样式重置 */
+
+.ant-app {
+  width: 100%;
+  height: 100%;
+  overscroll-behavior: none;
+  color: inherit;
+}

+ 1 - 0
packages/styles/src/antd/index.ts

@@ -0,0 +1 @@
+import './base.css';

+ 1 - 0
packages/styles/src/bem/bem.scss

@@ -0,0 +1 @@
+@import '@vben-core/design/bem';

+ 0 - 3
packages/styles/src/index.scss

@@ -1,3 +0,0 @@
-@import './tokens/light';
-@import './tokens/dark';
-@import './common/nprogress.css';

+ 0 - 4
packages/styles/src/index.ts

@@ -1,6 +1,2 @@
 import '@vben-core/design';
 import '@vben-core/design-tokens';
-
-import '@vben-core/design/tailwind';
-
-import './index.scss';

+ 0 - 0
packages/styles/src/tokens/dark.scss


+ 0 - 8
packages/styles/src/tokens/light.scss

@@ -1,8 +0,0 @@
-/* https://gavin-yyc.github.io/colorconvert/ */
-:root {
-  --font-geist-sans: 'geist-sans', -apple-system, blinkmacsystemfont, 'Segoe UI',
-    roboto, helvetica, arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
-    'Segoe UI Symbol';
-
-  /* authentication */
-}

+ 14 - 1
packages/styles/vite.config.mts

@@ -1,3 +1,16 @@
 import { defineConfig } from '@vben/vite-config';
 
-export default defineConfig();
+export default defineConfig({
+  vite: {
+    build: {
+      lib: {
+        entry: {
+          antd: 'src/antd/index.ts',
+          index: 'src/index.ts',
+        },
+        fileName: (_format, name) => `${name}.mjs`,
+      },
+    },
+    publicDir: 'src/bem',
+  },
+});

+ 266 - 23
pnpm-lock.yaml

@@ -543,7 +543,7 @@ importers:
         version: 1.77.6
       unplugin-turbo-console:
         specifier: ^1.8.9
-        version: 1.8.9(esbuild@0.21.5)(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.6)(terser@5.31.1))(vue@3.4.31(typescript@5.5.3))(webpack@5.92.1(esbuild@0.21.5))
+        version: 1.8.9(esbuild@0.23.0)(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.6)(terser@5.31.1))(vue@3.4.31(typescript@5.5.3))(webpack@5.92.1(esbuild@0.23.0))
       vite:
         specifier: ^5.3.3
         version: 5.3.3(@types/node@20.14.10)(sass@1.77.6)(terser@5.31.1)
@@ -776,8 +776,8 @@ importers:
         specifier: ^0.7.0
         version: 0.7.0
       lucide-vue-next:
-        specifier: ^0.401.0
-        version: 0.401.0(vue@3.4.31(typescript@5.5.3))
+        specifier: ^0.402.0
+        version: 0.402.0(vue@3.4.31(typescript@5.5.3))
       radix-vue:
         specifier: ^1.9.0
         version: 1.9.0(vue@3.4.31(typescript@5.5.3))
@@ -833,9 +833,6 @@ importers:
 
   packages/business/chart-ui:
     dependencies:
-      '@vben-core/design':
-        specifier: workspace:*
-        version: link:../../@core/shared/design
       '@vben-core/preferences':
         specifier: workspace:*
         version: link:../../@core/forward/preferences
@@ -900,9 +897,6 @@ importers:
 
   packages/business/universal-ui:
     dependencies:
-      '@vben-core/design':
-        specifier: workspace:*
-        version: link:../../@core/shared/design
       '@vben-core/iconify':
         specifier: workspace:*
         version: link:../../@core/shared/iconify
@@ -940,9 +934,6 @@ importers:
       '@vben-core/colorful':
         specifier: workspace:*
         version: link:../../@core/shared/colorful
-      '@vben-core/design':
-        specifier: workspace:*
-        version: link:../../@core/shared/design
       '@vben-core/iconify':
         specifier: workspace:*
         version: link:../../@core/shared/iconify
@@ -982,6 +973,9 @@ importers:
       '@vben-core/iconify':
         specifier: workspace:*
         version: link:../@core/shared/iconify
+      vue:
+        specifier: ^3.4.31
+        version: 3.4.31(typescript@5.5.3)
 
   packages/styles:
     dependencies:
@@ -2520,6 +2514,12 @@ packages:
     cpu: [ppc64]
     os: [aix]
 
+  '@esbuild/aix-ppc64@0.23.0':
+    resolution: {integrity: sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==}
+    engines: {node: '>=18'}
+    cpu: [ppc64]
+    os: [aix]
+
   '@esbuild/android-arm64@0.19.12':
     resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==}
     engines: {node: '>=12'}
@@ -2538,6 +2538,12 @@ packages:
     cpu: [arm64]
     os: [android]
 
+  '@esbuild/android-arm64@0.23.0':
+    resolution: {integrity: sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==}
+    engines: {node: '>=18'}
+    cpu: [arm64]
+    os: [android]
+
   '@esbuild/android-arm@0.19.12':
     resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==}
     engines: {node: '>=12'}
@@ -2556,6 +2562,12 @@ packages:
     cpu: [arm]
     os: [android]
 
+  '@esbuild/android-arm@0.23.0':
+    resolution: {integrity: sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==}
+    engines: {node: '>=18'}
+    cpu: [arm]
+    os: [android]
+
   '@esbuild/android-x64@0.19.12':
     resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==}
     engines: {node: '>=12'}
@@ -2574,6 +2586,12 @@ packages:
     cpu: [x64]
     os: [android]
 
+  '@esbuild/android-x64@0.23.0':
+    resolution: {integrity: sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==}
+    engines: {node: '>=18'}
+    cpu: [x64]
+    os: [android]
+
   '@esbuild/darwin-arm64@0.19.12':
     resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==}
     engines: {node: '>=12'}
@@ -2592,6 +2610,12 @@ packages:
     cpu: [arm64]
     os: [darwin]
 
+  '@esbuild/darwin-arm64@0.23.0':
+    resolution: {integrity: sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==}
+    engines: {node: '>=18'}
+    cpu: [arm64]
+    os: [darwin]
+
   '@esbuild/darwin-x64@0.19.12':
     resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==}
     engines: {node: '>=12'}
@@ -2610,6 +2634,12 @@ packages:
     cpu: [x64]
     os: [darwin]
 
+  '@esbuild/darwin-x64@0.23.0':
+    resolution: {integrity: sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==}
+    engines: {node: '>=18'}
+    cpu: [x64]
+    os: [darwin]
+
   '@esbuild/freebsd-arm64@0.19.12':
     resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==}
     engines: {node: '>=12'}
@@ -2628,6 +2658,12 @@ packages:
     cpu: [arm64]
     os: [freebsd]
 
+  '@esbuild/freebsd-arm64@0.23.0':
+    resolution: {integrity: sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==}
+    engines: {node: '>=18'}
+    cpu: [arm64]
+    os: [freebsd]
+
   '@esbuild/freebsd-x64@0.19.12':
     resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==}
     engines: {node: '>=12'}
@@ -2646,6 +2682,12 @@ packages:
     cpu: [x64]
     os: [freebsd]
 
+  '@esbuild/freebsd-x64@0.23.0':
+    resolution: {integrity: sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==}
+    engines: {node: '>=18'}
+    cpu: [x64]
+    os: [freebsd]
+
   '@esbuild/linux-arm64@0.19.12':
     resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==}
     engines: {node: '>=12'}
@@ -2664,6 +2706,12 @@ packages:
     cpu: [arm64]
     os: [linux]
 
+  '@esbuild/linux-arm64@0.23.0':
+    resolution: {integrity: sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==}
+    engines: {node: '>=18'}
+    cpu: [arm64]
+    os: [linux]
+
   '@esbuild/linux-arm@0.19.12':
     resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==}
     engines: {node: '>=12'}
@@ -2682,6 +2730,12 @@ packages:
     cpu: [arm]
     os: [linux]
 
+  '@esbuild/linux-arm@0.23.0':
+    resolution: {integrity: sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==}
+    engines: {node: '>=18'}
+    cpu: [arm]
+    os: [linux]
+
   '@esbuild/linux-ia32@0.19.12':
     resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==}
     engines: {node: '>=12'}
@@ -2700,6 +2754,12 @@ packages:
     cpu: [ia32]
     os: [linux]
 
+  '@esbuild/linux-ia32@0.23.0':
+    resolution: {integrity: sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==}
+    engines: {node: '>=18'}
+    cpu: [ia32]
+    os: [linux]
+
   '@esbuild/linux-loong64@0.19.12':
     resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==}
     engines: {node: '>=12'}
@@ -2718,6 +2778,12 @@ packages:
     cpu: [loong64]
     os: [linux]
 
+  '@esbuild/linux-loong64@0.23.0':
+    resolution: {integrity: sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==}
+    engines: {node: '>=18'}
+    cpu: [loong64]
+    os: [linux]
+
   '@esbuild/linux-mips64el@0.19.12':
     resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==}
     engines: {node: '>=12'}
@@ -2736,6 +2802,12 @@ packages:
     cpu: [mips64el]
     os: [linux]
 
+  '@esbuild/linux-mips64el@0.23.0':
+    resolution: {integrity: sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==}
+    engines: {node: '>=18'}
+    cpu: [mips64el]
+    os: [linux]
+
   '@esbuild/linux-ppc64@0.19.12':
     resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==}
     engines: {node: '>=12'}
@@ -2754,6 +2826,12 @@ packages:
     cpu: [ppc64]
     os: [linux]
 
+  '@esbuild/linux-ppc64@0.23.0':
+    resolution: {integrity: sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==}
+    engines: {node: '>=18'}
+    cpu: [ppc64]
+    os: [linux]
+
   '@esbuild/linux-riscv64@0.19.12':
     resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==}
     engines: {node: '>=12'}
@@ -2772,6 +2850,12 @@ packages:
     cpu: [riscv64]
     os: [linux]
 
+  '@esbuild/linux-riscv64@0.23.0':
+    resolution: {integrity: sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==}
+    engines: {node: '>=18'}
+    cpu: [riscv64]
+    os: [linux]
+
   '@esbuild/linux-s390x@0.19.12':
     resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==}
     engines: {node: '>=12'}
@@ -2790,6 +2874,12 @@ packages:
     cpu: [s390x]
     os: [linux]
 
+  '@esbuild/linux-s390x@0.23.0':
+    resolution: {integrity: sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==}
+    engines: {node: '>=18'}
+    cpu: [s390x]
+    os: [linux]
+
   '@esbuild/linux-x64@0.19.12':
     resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==}
     engines: {node: '>=12'}
@@ -2808,6 +2898,12 @@ packages:
     cpu: [x64]
     os: [linux]
 
+  '@esbuild/linux-x64@0.23.0':
+    resolution: {integrity: sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==}
+    engines: {node: '>=18'}
+    cpu: [x64]
+    os: [linux]
+
   '@esbuild/netbsd-x64@0.19.12':
     resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==}
     engines: {node: '>=12'}
@@ -2826,6 +2922,18 @@ packages:
     cpu: [x64]
     os: [netbsd]
 
+  '@esbuild/netbsd-x64@0.23.0':
+    resolution: {integrity: sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==}
+    engines: {node: '>=18'}
+    cpu: [x64]
+    os: [netbsd]
+
+  '@esbuild/openbsd-arm64@0.23.0':
+    resolution: {integrity: sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==}
+    engines: {node: '>=18'}
+    cpu: [arm64]
+    os: [openbsd]
+
   '@esbuild/openbsd-x64@0.19.12':
     resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==}
     engines: {node: '>=12'}
@@ -2844,6 +2952,12 @@ packages:
     cpu: [x64]
     os: [openbsd]
 
+  '@esbuild/openbsd-x64@0.23.0':
+    resolution: {integrity: sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==}
+    engines: {node: '>=18'}
+    cpu: [x64]
+    os: [openbsd]
+
   '@esbuild/sunos-x64@0.19.12':
     resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==}
     engines: {node: '>=12'}
@@ -2862,6 +2976,12 @@ packages:
     cpu: [x64]
     os: [sunos]
 
+  '@esbuild/sunos-x64@0.23.0':
+    resolution: {integrity: sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==}
+    engines: {node: '>=18'}
+    cpu: [x64]
+    os: [sunos]
+
   '@esbuild/win32-arm64@0.19.12':
     resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==}
     engines: {node: '>=12'}
@@ -2880,6 +3000,12 @@ packages:
     cpu: [arm64]
     os: [win32]
 
+  '@esbuild/win32-arm64@0.23.0':
+    resolution: {integrity: sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==}
+    engines: {node: '>=18'}
+    cpu: [arm64]
+    os: [win32]
+
   '@esbuild/win32-ia32@0.19.12':
     resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==}
     engines: {node: '>=12'}
@@ -2898,6 +3024,12 @@ packages:
     cpu: [ia32]
     os: [win32]
 
+  '@esbuild/win32-ia32@0.23.0':
+    resolution: {integrity: sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==}
+    engines: {node: '>=18'}
+    cpu: [ia32]
+    os: [win32]
+
   '@esbuild/win32-x64@0.19.12':
     resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==}
     engines: {node: '>=12'}
@@ -2916,6 +3048,12 @@ packages:
     cpu: [x64]
     os: [win32]
 
+  '@esbuild/win32-x64@0.23.0':
+    resolution: {integrity: sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==}
+    engines: {node: '>=18'}
+    cpu: [x64]
+    os: [win32]
+
   '@eslint-community/eslint-utils@4.4.0':
     resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -5182,6 +5320,11 @@ packages:
     engines: {node: '>=12'}
     hasBin: true
 
+  esbuild@0.23.0:
+    resolution: {integrity: sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==}
+    engines: {node: '>=18'}
+    hasBin: true
+
   escalade@3.1.2:
     resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
     engines: {node: '>=6'}
@@ -6569,8 +6712,8 @@ packages:
     resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
     engines: {node: '>=10'}
 
-  lucide-vue-next@0.401.0:
-    resolution: {integrity: sha512-opzeFpfz9LsvLL0f8skVIcT2PZ2viFTuwLLAFyILY/ZO21egsaRAo2hS53nxTmUttu2jyLBNhP9wlT2n88OOuw==}
+  lucide-vue-next@0.402.0:
+    resolution: {integrity: sha512-oxFgGTh/6aFDORHDCUlG8kvueJjEuR0dkX7HoSfNyCBDas8Dg8QQyZQFHo5D5aoThik+JAg80ByefkcJw85w9Q==}
     peerDependencies:
       vue: ^3.4.31
 
@@ -11318,6 +11461,9 @@ snapshots:
   '@esbuild/aix-ppc64@0.21.5':
     optional: true
 
+  '@esbuild/aix-ppc64@0.23.0':
+    optional: true
+
   '@esbuild/android-arm64@0.19.12':
     optional: true
 
@@ -11327,6 +11473,9 @@ snapshots:
   '@esbuild/android-arm64@0.21.5':
     optional: true
 
+  '@esbuild/android-arm64@0.23.0':
+    optional: true
+
   '@esbuild/android-arm@0.19.12':
     optional: true
 
@@ -11336,6 +11485,9 @@ snapshots:
   '@esbuild/android-arm@0.21.5':
     optional: true
 
+  '@esbuild/android-arm@0.23.0':
+    optional: true
+
   '@esbuild/android-x64@0.19.12':
     optional: true
 
@@ -11345,6 +11497,9 @@ snapshots:
   '@esbuild/android-x64@0.21.5':
     optional: true
 
+  '@esbuild/android-x64@0.23.0':
+    optional: true
+
   '@esbuild/darwin-arm64@0.19.12':
     optional: true
 
@@ -11354,6 +11509,9 @@ snapshots:
   '@esbuild/darwin-arm64@0.21.5':
     optional: true
 
+  '@esbuild/darwin-arm64@0.23.0':
+    optional: true
+
   '@esbuild/darwin-x64@0.19.12':
     optional: true
 
@@ -11363,6 +11521,9 @@ snapshots:
   '@esbuild/darwin-x64@0.21.5':
     optional: true
 
+  '@esbuild/darwin-x64@0.23.0':
+    optional: true
+
   '@esbuild/freebsd-arm64@0.19.12':
     optional: true
 
@@ -11372,6 +11533,9 @@ snapshots:
   '@esbuild/freebsd-arm64@0.21.5':
     optional: true
 
+  '@esbuild/freebsd-arm64@0.23.0':
+    optional: true
+
   '@esbuild/freebsd-x64@0.19.12':
     optional: true
 
@@ -11381,6 +11545,9 @@ snapshots:
   '@esbuild/freebsd-x64@0.21.5':
     optional: true
 
+  '@esbuild/freebsd-x64@0.23.0':
+    optional: true
+
   '@esbuild/linux-arm64@0.19.12':
     optional: true
 
@@ -11390,6 +11557,9 @@ snapshots:
   '@esbuild/linux-arm64@0.21.5':
     optional: true
 
+  '@esbuild/linux-arm64@0.23.0':
+    optional: true
+
   '@esbuild/linux-arm@0.19.12':
     optional: true
 
@@ -11399,6 +11569,9 @@ snapshots:
   '@esbuild/linux-arm@0.21.5':
     optional: true
 
+  '@esbuild/linux-arm@0.23.0':
+    optional: true
+
   '@esbuild/linux-ia32@0.19.12':
     optional: true
 
@@ -11408,6 +11581,9 @@ snapshots:
   '@esbuild/linux-ia32@0.21.5':
     optional: true
 
+  '@esbuild/linux-ia32@0.23.0':
+    optional: true
+
   '@esbuild/linux-loong64@0.19.12':
     optional: true
 
@@ -11417,6 +11593,9 @@ snapshots:
   '@esbuild/linux-loong64@0.21.5':
     optional: true
 
+  '@esbuild/linux-loong64@0.23.0':
+    optional: true
+
   '@esbuild/linux-mips64el@0.19.12':
     optional: true
 
@@ -11426,6 +11605,9 @@ snapshots:
   '@esbuild/linux-mips64el@0.21.5':
     optional: true
 
+  '@esbuild/linux-mips64el@0.23.0':
+    optional: true
+
   '@esbuild/linux-ppc64@0.19.12':
     optional: true
 
@@ -11435,6 +11617,9 @@ snapshots:
   '@esbuild/linux-ppc64@0.21.5':
     optional: true
 
+  '@esbuild/linux-ppc64@0.23.0':
+    optional: true
+
   '@esbuild/linux-riscv64@0.19.12':
     optional: true
 
@@ -11444,6 +11629,9 @@ snapshots:
   '@esbuild/linux-riscv64@0.21.5':
     optional: true
 
+  '@esbuild/linux-riscv64@0.23.0':
+    optional: true
+
   '@esbuild/linux-s390x@0.19.12':
     optional: true
 
@@ -11453,6 +11641,9 @@ snapshots:
   '@esbuild/linux-s390x@0.21.5':
     optional: true
 
+  '@esbuild/linux-s390x@0.23.0':
+    optional: true
+
   '@esbuild/linux-x64@0.19.12':
     optional: true
 
@@ -11462,6 +11653,9 @@ snapshots:
   '@esbuild/linux-x64@0.21.5':
     optional: true
 
+  '@esbuild/linux-x64@0.23.0':
+    optional: true
+
   '@esbuild/netbsd-x64@0.19.12':
     optional: true
 
@@ -11471,6 +11665,12 @@ snapshots:
   '@esbuild/netbsd-x64@0.21.5':
     optional: true
 
+  '@esbuild/netbsd-x64@0.23.0':
+    optional: true
+
+  '@esbuild/openbsd-arm64@0.23.0':
+    optional: true
+
   '@esbuild/openbsd-x64@0.19.12':
     optional: true
 
@@ -11480,6 +11680,9 @@ snapshots:
   '@esbuild/openbsd-x64@0.21.5':
     optional: true
 
+  '@esbuild/openbsd-x64@0.23.0':
+    optional: true
+
   '@esbuild/sunos-x64@0.19.12':
     optional: true
 
@@ -11489,6 +11692,9 @@ snapshots:
   '@esbuild/sunos-x64@0.21.5':
     optional: true
 
+  '@esbuild/sunos-x64@0.23.0':
+    optional: true
+
   '@esbuild/win32-arm64@0.19.12':
     optional: true
 
@@ -11498,6 +11704,9 @@ snapshots:
   '@esbuild/win32-arm64@0.21.5':
     optional: true
 
+  '@esbuild/win32-arm64@0.23.0':
+    optional: true
+
   '@esbuild/win32-ia32@0.19.12':
     optional: true
 
@@ -11507,6 +11716,9 @@ snapshots:
   '@esbuild/win32-ia32@0.21.5':
     optional: true
 
+  '@esbuild/win32-ia32@0.23.0':
+    optional: true
+
   '@esbuild/win32-x64@0.19.12':
     optional: true
 
@@ -11516,6 +11728,9 @@ snapshots:
   '@esbuild/win32-x64@0.21.5':
     optional: true
 
+  '@esbuild/win32-x64@0.23.0':
+    optional: true
+
   '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)':
     dependencies:
       eslint: 8.57.0
@@ -14256,6 +14471,34 @@ snapshots:
       '@esbuild/win32-ia32': 0.21.5
       '@esbuild/win32-x64': 0.21.5
 
+  esbuild@0.23.0:
+    optionalDependencies:
+      '@esbuild/aix-ppc64': 0.23.0
+      '@esbuild/android-arm': 0.23.0
+      '@esbuild/android-arm64': 0.23.0
+      '@esbuild/android-x64': 0.23.0
+      '@esbuild/darwin-arm64': 0.23.0
+      '@esbuild/darwin-x64': 0.23.0
+      '@esbuild/freebsd-arm64': 0.23.0
+      '@esbuild/freebsd-x64': 0.23.0
+      '@esbuild/linux-arm': 0.23.0
+      '@esbuild/linux-arm64': 0.23.0
+      '@esbuild/linux-ia32': 0.23.0
+      '@esbuild/linux-loong64': 0.23.0
+      '@esbuild/linux-mips64el': 0.23.0
+      '@esbuild/linux-ppc64': 0.23.0
+      '@esbuild/linux-riscv64': 0.23.0
+      '@esbuild/linux-s390x': 0.23.0
+      '@esbuild/linux-x64': 0.23.0
+      '@esbuild/netbsd-x64': 0.23.0
+      '@esbuild/openbsd-arm64': 0.23.0
+      '@esbuild/openbsd-x64': 0.23.0
+      '@esbuild/sunos-x64': 0.23.0
+      '@esbuild/win32-arm64': 0.23.0
+      '@esbuild/win32-ia32': 0.23.0
+      '@esbuild/win32-x64': 0.23.0
+    optional: true
+
   escalade@3.1.2: {}
 
   escape-goat@4.0.0: {}
@@ -15789,7 +16032,7 @@ snapshots:
     dependencies:
       yallist: 4.0.0
 
-  lucide-vue-next@0.401.0(vue@3.4.31(typescript@5.5.3)):
+  lucide-vue-next@0.402.0(vue@3.4.31(typescript@5.5.3)):
     dependencies:
       vue: 3.4.31(typescript@5.5.3)
 
@@ -17853,16 +18096,16 @@ snapshots:
     optionalDependencies:
       esbuild: 0.20.2
 
-  terser-webpack-plugin@5.3.10(esbuild@0.21.5)(webpack@5.92.1(esbuild@0.21.5)):
+  terser-webpack-plugin@5.3.10(esbuild@0.23.0)(webpack@5.92.1(esbuild@0.23.0)):
     dependencies:
       '@jridgewell/trace-mapping': 0.3.25
       jest-worker: 27.5.1
       schema-utils: 3.3.0
       serialize-javascript: 6.0.2
       terser: 5.31.1
-      webpack: 5.92.1(esbuild@0.21.5)
+      webpack: 5.92.1(esbuild@0.23.0)
     optionalDependencies:
-      esbuild: 0.21.5
+      esbuild: 0.23.0
     optional: true
 
   terser@5.31.1:
@@ -18177,7 +18420,7 @@ snapshots:
 
   unpipe@1.0.0: {}
 
-  unplugin-turbo-console@1.8.9(esbuild@0.21.5)(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.6)(terser@5.31.1))(vue@3.4.31(typescript@5.5.3))(webpack@5.92.1(esbuild@0.21.5)):
+  unplugin-turbo-console@1.8.9(esbuild@0.23.0)(rollup@4.18.0)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.6)(terser@5.31.1))(vue@3.4.31(typescript@5.5.3))(webpack@5.92.1(esbuild@0.23.0)):
     dependencies:
       '@rollup/pluginutils': 5.1.0(rollup@4.18.0)
       ast-kit: 0.12.2
@@ -18188,11 +18431,11 @@ snapshots:
       pathe: 1.1.2
       unplugin: 1.11.0
     optionalDependencies:
-      esbuild: 0.21.5
+      esbuild: 0.23.0
       rollup: 4.18.0
       vite: 5.3.3(@types/node@20.14.10)(sass@1.77.6)(terser@5.31.1)
       vue: 3.4.31(typescript@5.5.3)
-      webpack: 5.92.1(esbuild@0.21.5)
+      webpack: 5.92.1(esbuild@0.23.0)
     transitivePeerDependencies:
       - uWebSockets.js
 
@@ -18616,7 +18859,7 @@ snapshots:
       - esbuild
       - uglify-js
 
-  webpack@5.92.1(esbuild@0.21.5):
+  webpack@5.92.1(esbuild@0.23.0):
     dependencies:
       '@types/eslint-scope': 3.7.7
       '@types/estree': 1.0.5
@@ -18639,7 +18882,7 @@ snapshots:
       neo-async: 2.6.2
       schema-utils: 3.3.0
       tapable: 2.2.1
-      terser-webpack-plugin: 5.3.10(esbuild@0.21.5)(webpack@5.92.1(esbuild@0.21.5))
+      terser-webpack-plugin: 5.3.10(esbuild@0.23.0)(webpack@5.92.1(esbuild@0.23.0))
       watchpack: 2.4.1
       webpack-sources: 3.2.3
     transitivePeerDependencies: