79 lines
1.5 KiB
TypeScript
79 lines
1.5 KiB
TypeScript
import {
|
|
Home,
|
|
History,
|
|
BarChart3,
|
|
Settings,
|
|
UserCog,
|
|
Layout,
|
|
Sofa,
|
|
Code2,
|
|
FolderKanban,
|
|
FolderTree,
|
|
Rocket,
|
|
Server,
|
|
Boxes,
|
|
Folder,
|
|
Blocks,
|
|
FileText,
|
|
HardDriveUpload,
|
|
List,
|
|
Network,
|
|
ArrowLeftRight,
|
|
Package,
|
|
ShoppingCart,
|
|
Store,
|
|
ShoppingBag,
|
|
ClipboardCheck,
|
|
FileBarChart,
|
|
Globe,
|
|
Menu,
|
|
LucideIcon,
|
|
User,
|
|
Building
|
|
} from 'lucide-react'
|
|
|
|
/**
|
|
* 菜单图标映射表
|
|
* 将字符串图标名称映射到实际的 Lucide 图标组件
|
|
*/
|
|
export const menuIconMap: Record<string, LucideIcon> = {
|
|
'Home': Home,
|
|
'History': History,
|
|
'BarChart3': BarChart3,
|
|
'Settings': Settings,
|
|
'UserCog': UserCog,
|
|
'Layout': Layout,
|
|
'Sofa': Sofa,
|
|
'Code2': Code2,
|
|
'FolderKanban': FolderKanban,
|
|
'FolderTree': FolderTree,
|
|
'Rocket': Rocket,
|
|
'Server': Server,
|
|
'Boxes': Boxes,
|
|
'Folder': Folder,
|
|
'Blocks': Blocks,
|
|
'FileText': FileText,
|
|
'HardDriveUpload': HardDriveUpload,
|
|
'List': List,
|
|
'Network': Network,
|
|
'ArrowLeftRight': ArrowLeftRight,
|
|
'Package': Package,
|
|
'ShoppingCart': ShoppingCart,
|
|
'Store': Store,
|
|
'ShoppingBag': ShoppingBag,
|
|
'ClipboardCheck': ClipboardCheck,
|
|
'FileBarChart': FileBarChart,
|
|
'Globe': Globe,
|
|
'User': User,
|
|
'Building': Building
|
|
}
|
|
|
|
/**
|
|
* 根据图标名称获取对应的 Lucide 图标组件
|
|
* @param iconName 图标名称
|
|
* @returns Lucide 图标组件,如果找不到则返回通用菜单图标
|
|
*/
|
|
export function getMenuIcon(iconName?: string): LucideIcon {
|
|
if (!iconName) return Menu
|
|
return menuIconMap[iconName] || Menu
|
|
} |