Files
hair-keeper/src/constants/menu-icons.ts

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
}