@oxyhq/services
Version:
124 lines (118 loc) • 2.9 kB
JavaScript
;
/**
* Type-safe icon name utilities
*
* Provides centralized, typed icon name mappings to eliminate `as any` casts
* when using dynamic icon names with @expo/vector-icons.
*/
/**
* Profile field icons (MaterialCommunityIcons)
*/
export const PROFILE_FIELD_ICONS = {
displayName: 'account-outline',
username: 'at',
email: 'email-outline',
bio: 'text-box-outline',
location: 'map-marker-outline',
links: 'link-variant',
website: 'web',
phone: 'phone-outline',
birthday: 'cake-variant-outline'
};
/**
* Get icon name for a profile field
*/
export function getProfileFieldIcon(field) {
return PROFILE_FIELD_ICONS[field] ?? 'account-outline';
}
/**
* Settings section icons (MaterialCommunityIcons)
*/
export const SETTINGS_ICONS = {
account: 'account-cog-outline',
privacy: 'shield-account-outline',
security: 'lock-outline',
notifications: 'bell-outline',
language: 'translate',
appearance: 'palette-outline',
storage: 'folder-outline',
help: 'help-circle-outline',
about: 'information-outline',
logout: 'logout'
};
/**
* Get icon name for a settings section
*/
export function getSettingsIcon(section) {
return SETTINGS_ICONS[section] ?? 'cog-outline';
}
/**
* File type icons (MaterialCommunityIcons)
*/
export const FILE_TYPE_ICONS = {
image: 'image-outline',
video: 'video-outline',
audio: 'music-note-outline',
document: 'file-document-outline',
pdf: 'file-pdf-box',
archive: 'folder-zip-outline',
code: 'code-tags',
spreadsheet: 'file-excel-outline',
presentation: 'file-presentation-outline',
text: 'file-document-edit-outline',
unknown: 'file-outline'
};
/**
* Get icon name for a file type
*/
export function getFileTypeIcon(type) {
return FILE_TYPE_ICONS[type] ?? FILE_TYPE_ICONS.unknown;
}
/**
* Action icons (Ionicons)
*/
export const ACTION_ICONS = {
close: 'close',
back: 'chevron-back',
forward: 'chevron-forward',
add: 'add',
remove: 'remove',
delete: 'trash-outline',
edit: 'pencil-outline',
save: 'checkmark',
cancel: 'close',
search: 'search-outline',
filter: 'filter-outline',
sort: 'swap-vertical-outline',
refresh: 'refresh-outline',
share: 'share-outline',
copy: 'copy-outline',
download: 'download-outline',
upload: 'cloud-upload-outline'
};
/**
* Get icon name for an action
*/
export function getActionIcon(action) {
return ACTION_ICONS[action] ?? 'ellipsis-horizontal';
}
/**
* Status icons (Ionicons)
*/
export const STATUS_ICONS = {
success: 'checkmark-circle',
error: 'alert-circle',
warning: 'warning',
info: 'information-circle',
loading: 'hourglass-outline',
pending: 'time-outline',
online: 'ellipse',
offline: 'ellipse-outline'
};
/**
* Get icon name for a status
*/
export function getStatusIcon(status) {
return STATUS_ICONS[status] ?? 'help-circle-outline';
}
//# sourceMappingURL=iconNames.js.map