Files
hedena_gold/apps/admin-panel/src/components/icons.ts
T
s.esmaeiliandCursor 7dd883ca30 Replace Ant Design Vue icons with a local admin Icon component.
Drop @ant-design/icons-vue and wire list pages, nav, and forms through the shared icons map.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-16 00:21:21 +03:30

160 lines
6.5 KiB
TypeScript

// Shared legacy-Feather-name -> Vuesax Linear icon id map.
//
// Originally Feather names mapped to @ant-design/icons-vue components.
// Now they resolve to the same `vuesax-linear:*` pack used by the user-app
// Icon component, so sidebar (navMenuItems.ts) and TooltipBtn share one
// string map instead of Ant components.
export const ICONS: Record<string, string> = {
// row-action icons (TooltipBtn.vue's original set)
ListIcon: 'vuesax-linear:row-vertical',
FileIcon: 'vuesax-linear:document',
TrashIcon: 'vuesax-linear:trash',
EditIcon: 'vuesax-linear:edit-2',
CheckIcon: 'vuesax-linear:tick-circle',
CameraIcon: 'vuesax-linear:camera',
EyeIcon: 'vuesax-linear:eye',
PlusIcon: 'vuesax-linear:add',
XIcon: 'vuesax-linear:close-circle',
FileTextIcon: 'vuesax-linear:document-text',
// sidebar icons (navMenuItems.ts)
HomeIcon: 'vuesax-linear:home-2',
PackageIcon: 'vuesax-linear:box',
UserIcon: 'vuesax-linear:user',
UsersIcon: 'vuesax-linear:people',
UserPlusIcon: 'vuesax-linear:user-add',
ShoppingBagIcon: 'vuesax-linear:bag-2',
BoxIcon: 'vuesax-linear:box-1',
GridIcon: 'vuesax-linear:category-2',
LayersIcon: 'vuesax-linear:layer',
CreditCardIcon: 'vuesax-linear:card',
DollarSignIcon: 'vuesax-linear:dollar-circle',
PercentIcon: 'vuesax-linear:percentage-square',
GiftIcon: 'vuesax-linear:gift',
SlashIcon: 'vuesax-linear:slash',
BookIcon: 'vuesax-linear:book',
MessageSquareIcon: 'vuesax-linear:message-text',
MailIcon: 'vuesax-linear:sms',
BellIcon: 'vuesax-linear:notification',
BarChartIcon: 'vuesax-linear:chart',
SettingsIcon: 'vuesax-linear:setting-2',
InboxIcon: 'vuesax-linear:box',
};
/** Direct Ant Design icon component name → Vuesax id (for view migrations). */
export const ANT_TO_VUESAX: Record<string, string> = {
EditOutlined: 'vuesax-linear:edit-2',
DeleteOutlined: 'vuesax-linear:trash',
EyeOutlined: 'vuesax-linear:eye',
PlusOutlined: 'vuesax-linear:add',
CloseOutlined: 'vuesax-linear:close-circle',
CheckOutlined: 'vuesax-linear:tick-circle',
SearchOutlined: 'vuesax-linear:search-normal-1',
SettingOutlined: 'vuesax-linear:setting-2',
UserOutlined: 'vuesax-linear:user',
TeamOutlined: 'vuesax-linear:people',
UserAddOutlined: 'vuesax-linear:user-add',
HomeOutlined: 'vuesax-linear:home-2',
InboxOutlined: 'vuesax-linear:box',
AppstoreOutlined: 'vuesax-linear:category-2',
ShoppingOutlined: 'vuesax-linear:bag-2',
CreditCardOutlined: 'vuesax-linear:card',
DollarOutlined: 'vuesax-linear:dollar-circle',
PercentageOutlined: 'vuesax-linear:percentage-square',
GiftOutlined: 'vuesax-linear:gift',
StopOutlined: 'vuesax-linear:slash',
BookOutlined: 'vuesax-linear:book',
MessageOutlined: 'vuesax-linear:message-text',
MailOutlined: 'vuesax-linear:sms',
BellOutlined: 'vuesax-linear:notification',
BarChartOutlined: 'vuesax-linear:chart',
FileOutlined: 'vuesax-linear:document',
FileTextOutlined: 'vuesax-linear:document-text',
UnorderedListOutlined: 'vuesax-linear:row-vertical',
CameraOutlined: 'vuesax-linear:camera',
BlockOutlined: 'vuesax-linear:layer',
CloudUploadOutlined: 'vuesax-linear:document-upload',
UploadOutlined: 'vuesax-linear:document-upload',
LoadingOutlined: 'vuesax-linear:refresh-2',
MenuFoldOutlined: 'vuesax-linear:menu',
MenuUnfoldOutlined: 'vuesax-linear:menu',
LogoutOutlined: 'vuesax-linear:logout',
SafetyCertificateOutlined: 'vuesax-linear:security-safe',
LockOutlined: 'vuesax-linear:lock',
MobileOutlined: 'vuesax-linear:mobile',
ExclamationCircleOutlined: 'vuesax-linear:info-circle',
InfoCircleOutlined: 'vuesax-linear:info-circle',
WarningOutlined: 'vuesax-linear:warning-2',
ArrowLeftOutlined: 'vuesax-linear:arrow-left',
ArrowRightOutlined: 'vuesax-linear:arrow-right',
FilterOutlined: 'vuesax-linear:filter',
DownloadOutlined: 'vuesax-linear:document-download',
ExportOutlined: 'vuesax-linear:export',
ImportOutlined: 'vuesax-linear:import',
SyncOutlined: 'vuesax-linear:refresh-2',
ReloadOutlined: 'vuesax-linear:refresh-2',
EnvironmentOutlined: 'vuesax-linear:location',
PhoneOutlined: 'vuesax-linear:call',
CalendarOutlined: 'vuesax-linear:calendar',
ClockCircleOutlined: 'vuesax-linear:clock',
CopyOutlined: 'vuesax-linear:copy',
SaveOutlined: 'vuesax-linear:save-2',
PrinterOutlined: 'vuesax-linear:printer',
LinkOutlined: 'vuesax-linear:link',
MoreOutlined: 'vuesax-linear:more',
EllipsisOutlined: 'vuesax-linear:more',
DownOutlined: 'vuesax-linear:arrow-down',
UpOutlined: 'vuesax-linear:arrow-up',
LeftOutlined: 'vuesax-linear:arrow-left',
RightOutlined: 'vuesax-linear:arrow-right',
CaretDownOutlined: 'vuesax-linear:arrow-down',
CaretUpOutlined: 'vuesax-linear:arrow-up',
MinusOutlined: 'vuesax-linear:minus',
MinusCircleOutlined: 'vuesax-linear:minus-cirlce',
PlusCircleOutlined: 'vuesax-linear:add-circle',
CheckCircleOutlined: 'vuesax-linear:tick-circle',
CloseCircleOutlined: 'vuesax-linear:close-circle',
QuestionCircleOutlined: 'vuesax-linear:message-question',
StarOutlined: 'vuesax-linear:star',
HeartOutlined: 'vuesax-linear:heart',
PictureOutlined: 'vuesax-linear:gallery',
PaperClipOutlined: 'vuesax-linear:paperclip-2',
SendOutlined: 'vuesax-linear:send-2',
WalletOutlined: 'vuesax-linear:wallet-2',
ShopOutlined: 'vuesax-linear:shop',
BankOutlined: 'vuesax-linear:bank',
TagOutlined: 'vuesax-linear:tag',
TagsOutlined: 'vuesax-linear:tag-2',
DashboardOutlined: 'vuesax-linear:element-3',
ProfileOutlined: 'vuesax-linear:profile',
IdcardOutlined: 'vuesax-linear:personalcard',
SolutionOutlined: 'vuesax-linear:briefcase',
AuditOutlined: 'vuesax-linear:clipboard-text',
FormOutlined: 'vuesax-linear:edit',
TableOutlined: 'vuesax-linear:grid-6',
DatabaseOutlined: 'vuesax-linear:data',
ApiOutlined: 'vuesax-linear:code',
ToolOutlined: 'vuesax-linear:setting',
ClearOutlined: 'vuesax-linear:broom',
RetweetOutlined: 'vuesax-linear:arrange-square-2',
SwapOutlined: 'vuesax-linear:arrow-swap-horizontal',
HistoryOutlined: 'vuesax-linear:clock',
FieldTimeOutlined: 'vuesax-linear:timer',
RiseOutlined: 'vuesax-linear:chart-2',
FallOutlined: 'vuesax-linear:chart-1',
PoweroffOutlined: 'vuesax-linear:logout',
LoginOutlined: 'vuesax-linear:login',
KeyOutlined: 'vuesax-linear:key',
UnlockOutlined: 'vuesax-linear:unlock',
};
export function resolveIcon(name: string | undefined): string | undefined {
if (!name) return undefined;
return ICONS[name];
}
export function resolveAntIcon(name: string | undefined): string | undefined {
if (!name) return undefined;
return ANT_TO_VUESAX[name] ?? ICONS[name];
}