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}