master
  1const imageExtensions = [
  2  'avif',
  3  'bmp',
  4  'gif',
  5  'ico',
  6  'jpeg',
  7  'jpg',
  8  'png',
  9  'svg',
 10  'tiff',
 11  'webp',
 12];
 13
 14const documentExtensions = [
 15  'doc',
 16  'docx',
 17  'equb',
 18  'log',
 19  'md',
 20  'mdoc',
 21  'mdx',
 22  'pdf',
 23  'ppt',
 24  'pptx',
 25  'txt',
 26  'wps',
 27  'xls',
 28  'xlsx',
 29];
 30
 31const codeExtensions = [
 32  'astro',
 33  'bat',
 34  'c',
 35  'cjs',
 36  'cmd',
 37  'cpp',
 38  'cs',
 39  'css',
 40  'csv',
 41  'dart',
 42  'ejs',
 43  'fish',
 44  'go',
 45  'h',
 46  'hpp',
 47  'hs',
 48  'html',
 49  'ini',
 50  'java',
 51  'js',
 52  'json',
 53  'kt',
 54  'kts',
 55  'less',
 56  'log',
 57  'lua',
 58  'm',
 59  'makefile',
 60  'mjs',
 61  'nu',
 62  'php',
 63  'plist',
 64  'ps1',
 65  'py',
 66  'r',
 67  'rb',
 68  'rs',
 69  'scss',
 70  'sh',
 71  'styl',
 72  'svelte',
 73  'swift',
 74  'toml',
 75  'ts',
 76  'tsx',
 77  'typ',
 78  'typst',
 79  'vue',
 80  'xml',
 81  'yml',
 82  'yaml',
 83  'zsh',
 84  'zig',
 85];
 86
 87const gitRelatedExtensions = ['gitattributes', 'gitignore', 'gitkeep', 'gitmodules'];
 88
 89// Map extensions to icons
 90
 91const iconMap: Record<string, string> = {};
 92
 93imageExtensions.forEach((ext) => {
 94  iconMap[ext] = 'mdi:file-image';
 95});
 96
 97documentExtensions.forEach((ext) => {
 98  iconMap[ext] = 'mdi:file-document';
 99});
100
101codeExtensions.forEach((ext) => {
102  iconMap[ext] = 'mdi:file-code';
103});
104
105gitRelatedExtensions.forEach((ext) => {
106  iconMap[ext] = 'mdi:git';
107});
108
109// Default icon
110const defaultIcon = 'mdi:file';
111
112export function fileIcon(fileName: string) {
113  const ext = fileName.split('.').pop()?.toLowerCase();
114  return ext && iconMap[ext] ? iconMap[ext] : defaultIcon;
115}