From 87706ad4256cbb1d845744ad77d33354d0e268f6 Mon Sep 17 00:00:00 2001
From: dap <15891557205@163.com>
Date: Fri, 23 Jan 2026 11:21:01 +0800
Subject: [PATCH] =?UTF-8?q?refactor(icons):=20=E7=A7=BB=E9=99=A4=E7=A6=BB?=
=?UTF-8?q?=E7=BA=BF=E5=9B=BE=E6=A0=87=E4=BE=9D=E8=B5=96=E5=B9=B6=E6=94=B9?=
=?UTF-8?q?=E7=94=A8CSS=E7=B1=BB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
移除 `@iconify/icons-flat-color-icons/folder`、`@iconify/icons-material-symbols/menu` 和 `@iconify/icons-mdi/button-pointer` 的显式导入与离线图标包装导出。将树组件和菜单视图中的图标使用方式从组件实例更改为CSS类(例如 `icons-[flat-color-icons--folder]`)。这消除了对特定离线图标包的依赖,使图标管理更统一并可能减少打包体积。
---
.../web-antd/src/components/tree/src/data.tsx | 12 ++++--------
apps/web-antd/src/views/system/menu/data.tsx | 19 ++++++++++++++-----
packages/icons/src/iconify-offline/index.ts | 17 -----------------
3 files changed, 18 insertions(+), 30 deletions(-)
diff --git a/apps/web-antd/src/components/tree/src/data.tsx b/apps/web-antd/src/components/tree/src/data.tsx
index 2bbaf317..b58886f3 100644
--- a/apps/web-antd/src/components/tree/src/data.tsx
+++ b/apps/web-antd/src/components/tree/src/data.tsx
@@ -2,9 +2,11 @@ import type { VxeGridProps } from '#/adapter/vxe-table';
import type { ID } from '#/api/common';
import type { MenuOption } from '#/api/system/menu/model';
-import { h, markRaw } from 'vue';
+import { h } from 'vue';
-import { FolderIcon, MenuIcon, OkButtonIcon, VbenIcon } from '@vben/icons';
+import { VbenIcon } from '@vben/icons';
+
+import { menuTypes } from '#/views/system/menu/data';
export interface Permission {
checked: boolean;
@@ -16,12 +18,6 @@ export interface MenuPermissionOption extends MenuOption {
permissions: Permission[];
}
-const menuTypes = {
- C: { icon: markRaw(MenuIcon), value: '菜单' },
- F: { icon: markRaw(OkButtonIcon), value: '按钮' },
- M: { icon: markRaw(FolderIcon), value: '目录' },
-};
-
export const nodeOptions = [
{ label: '节点关联', value: true },
{ label: '节点独立', value: false },
diff --git a/apps/web-antd/src/views/system/menu/data.tsx b/apps/web-antd/src/views/system/menu/data.tsx
index e5177cab..079b34f3 100644
--- a/apps/web-antd/src/views/system/menu/data.tsx
+++ b/apps/web-antd/src/views/system/menu/data.tsx
@@ -4,7 +4,7 @@ import type { VxeGridProps } from '#/adapter/vxe-table';
import { h } from 'vue';
import { DictEnum } from '@vben/constants';
-import { FolderIcon, MenuIcon, OkButtonIcon, VbenIcon } from '@vben/icons';
+import { VbenIcon } from '@vben/icons';
import { $t } from '@vben/locales';
import { getPopupContainer } from '@vben/utils';
@@ -51,10 +51,19 @@ export const yesNoOptions = [
];
// (M目录 C菜单 F按钮)
-const menuTypes = {
- C: { icon: MenuIcon, value: '菜单' },
- F: { icon: OkButtonIcon, value: '按钮' },
- M: { icon: FolderIcon, value: '目录' },
+export const menuTypes = {
+ C: {
+ icon: ,
+ value: '菜单',
+ },
+ F: {
+ icon: ,
+ value: '按钮',
+ },
+ M: {
+ icon: ,
+ value: '目录',
+ },
};
export const columns: VxeGridProps['columns'] = [
{
diff --git a/packages/icons/src/iconify-offline/index.ts b/packages/icons/src/iconify-offline/index.ts
index 59d4431b..f36396d0 100644
--- a/packages/icons/src/iconify-offline/index.ts
+++ b/packages/icons/src/iconify-offline/index.ts
@@ -1,8 +1,5 @@
import { createIconifyOfflineIcon } from '@vben-core/icons';
-import folderIcon from '@iconify/icons-flat-color-icons/folder';
-import menuIcon from '@iconify/icons-material-symbols/menu';
-import okButtonIcon from '@iconify/icons-mdi/button-pointer';
import dingdingFill from '@iconify/icons-ri/dingding-fill';
import giteeIcon from '@iconify/icons-simple-icons/gitee';
@@ -17,17 +14,3 @@ export const GiteeIcon = createIconifyOfflineIcon(
'simple-icons:gitee',
giteeIcon,
);
-
-// 菜单类型 目录/按钮/菜单
-export const FolderIcon = createIconifyOfflineIcon(
- 'flat-color-icons:folder',
- folderIcon,
-);
-export const OkButtonIcon = createIconifyOfflineIcon(
- 'mdi:button-pointer',
- okButtonIcon,
-);
-export const MenuIcon = createIconifyOfflineIcon(
- 'material-symbols:menu',
- menuIcon,
-);