UNPKG

@oxyhq/services

Version:

OxyHQ Expo/React Native SDK — UI components, screens, and native features

124 lines (118 loc) 2.9 kB
"use strict"; /** * 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