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>
This commit is contained in:
@@ -1,81 +1,159 @@
|
||||
// Shared legacy-Feather-name -> ant-design-vue icon map.
|
||||
// Shared legacy-Feather-name -> Vuesax Linear icon id map.
|
||||
//
|
||||
// Originally lived only inside TooltipBtn.vue (row-action icons). Extracted
|
||||
// here so the sidebar (navMenuItems.ts icon: values) can resolve the SAME
|
||||
// names through the SAME map instead of duplicating it — one source of
|
||||
// truth for "legacy Feather icon name" -> "ant component" across the app.
|
||||
import {
|
||||
AppstoreOutlined,
|
||||
BarChartOutlined,
|
||||
BellOutlined,
|
||||
BlockOutlined,
|
||||
BookOutlined,
|
||||
CameraOutlined,
|
||||
CheckOutlined,
|
||||
CloseOutlined,
|
||||
CreditCardOutlined,
|
||||
DeleteOutlined,
|
||||
DollarOutlined,
|
||||
EditOutlined,
|
||||
EyeOutlined,
|
||||
FileOutlined,
|
||||
FileTextOutlined,
|
||||
GiftOutlined,
|
||||
HomeOutlined,
|
||||
InboxOutlined,
|
||||
MailOutlined,
|
||||
MessageOutlined,
|
||||
PercentageOutlined,
|
||||
PlusOutlined,
|
||||
SettingOutlined,
|
||||
ShoppingOutlined,
|
||||
StopOutlined,
|
||||
TeamOutlined,
|
||||
UnorderedListOutlined,
|
||||
UserAddOutlined,
|
||||
UserOutlined,
|
||||
} from '@ant-design/icons-vue';
|
||||
|
||||
/** legacy Feather name -> ant component. */
|
||||
export const ICONS: Record<string, unknown> = {
|
||||
// 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: UnorderedListOutlined,
|
||||
FileIcon: FileOutlined,
|
||||
TrashIcon: DeleteOutlined,
|
||||
EditIcon: EditOutlined,
|
||||
CheckIcon: CheckOutlined,
|
||||
CameraIcon: CameraOutlined,
|
||||
EyeIcon: EyeOutlined,
|
||||
PlusIcon: PlusOutlined,
|
||||
XIcon: CloseOutlined,
|
||||
FileTextIcon: FileTextOutlined,
|
||||
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), added when the sidebar started
|
||||
// rendering them for the first time
|
||||
HomeIcon: HomeOutlined,
|
||||
PackageIcon: InboxOutlined,
|
||||
UserIcon: UserOutlined,
|
||||
UsersIcon: TeamOutlined,
|
||||
UserPlusIcon: UserAddOutlined,
|
||||
ShoppingBagIcon: ShoppingOutlined,
|
||||
BoxIcon: InboxOutlined,
|
||||
GridIcon: AppstoreOutlined,
|
||||
LayersIcon: BlockOutlined,
|
||||
CreditCardIcon: CreditCardOutlined,
|
||||
DollarSignIcon: DollarOutlined,
|
||||
PercentIcon: PercentageOutlined,
|
||||
GiftIcon: GiftOutlined,
|
||||
SlashIcon: StopOutlined,
|
||||
BookIcon: BookOutlined,
|
||||
MessageSquareIcon: MessageOutlined,
|
||||
MailIcon: MailOutlined,
|
||||
BellIcon: BellOutlined,
|
||||
BarChartIcon: BarChartOutlined,
|
||||
SettingsIcon: SettingOutlined,
|
||||
InboxIcon: InboxOutlined,
|
||||
// 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',
|
||||
};
|
||||
|
||||
export function resolveIcon(name: string | undefined): unknown | undefined {
|
||||
/** 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];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user