const iconMap = [ { label: 'PDF', exts: ['pdf'], icon: '📕', colorClass: 'text-red-500' }, { label: 'Word', exts: ['doc', 'docx'], icon: '📝', colorClass: 'text-blue-500' }, { label: 'Excel', exts: ['xls', 'xlsx', 'csv'], icon: '📊', colorClass: 'text-green-500' }, { label: 'PowerPoint', exts: ['ppt', 'pptx'], icon: '📈', colorClass: 'text-orange-500' }, { label: 'Image', exts: ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'svg', 'webp', 'heic'], icon: '🖼️', colorClass: 'text-purple-500' }, { label: 'Archive', exts: ['zip', 'rar', '7z', 'tar', 'gz'], icon: '🗜️', colorClass: 'text-amber-500' }, { label: 'Audio', exts: ['mp3', 'wav', 'ogg', 'flac', 'aac'], icon: '🎵', colorClass: 'text-pink-500' }, { label: 'Vidéo', exts: ['mp4', 'mov', 'avi', 'mkv', 'webm'], icon: '🎬', colorClass: 'text-indigo-500' }, { label: 'Texte', exts: ['txt', 'md', 'rtf'], icon: '📄', colorClass: 'text-gray-500' }, { label: 'Code', exts: ['json', 'xml', 'yml', 'yaml', 'js', 'ts', 'py', 'java', 'cs'], icon: '💻', colorClass: 'text-sky-500' } ] const mimeGroups = [ { prefix: 'image/', icon: '🖼️', colorClass: 'text-purple-500' }, { prefix: 'video/', icon: '🎬', colorClass: 'text-indigo-500' }, { prefix: 'audio/', icon: '🎵', colorClass: 'text-pink-500' }, { prefix: 'text/', icon: '📄', colorClass: 'text-gray-500' }, { prefix: 'application/pdf', icon: '📕', colorClass: 'text-red-500' }, { prefix: 'application/zip', icon: '🗜️', colorClass: 'text-amber-500' }, { prefix: 'application/x-', icon: '🗜️', colorClass: 'text-amber-500' } ] export const getFileIcon = ({ name = '', mime = '' } = {}) => { const extension = name.split('.').pop()?.toLowerCase() || '' if (extension) { const match = iconMap.find(entry => entry.exts.includes(extension)) if (match) { return { icon: match.icon, colorClass: match.colorClass, label: match.label } } } if (mime) { const match = mimeGroups.find(entry => mime.startsWith(entry.prefix)) if (match) { return { icon: match.icon, colorClass: match.colorClass, label: mime } } } return { icon: '📁', colorClass: 'text-primary', label: 'Document' } } export const describeFileType = ({ name = '', mime = '' } = {}) => { const icon = getFileIcon({ name, mime }) return icon.label }