material-icon-theme 4.24.0 → 4.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +5 -5
  3. package/icons/bitbucket.svg +13 -1
  4. package/icons/bun.svg +2 -0
  5. package/icons/bun_light.svg +2 -0
  6. package/icons/c.svg +4 -1
  7. package/icons/cpp.svg +4 -1
  8. package/icons/csharp.svg +4 -1
  9. package/icons/deno.svg +1 -0
  10. package/icons/deno_light.svg +1 -0
  11. package/icons/folder-gamemaker-open.svg +2 -0
  12. package/icons/folder-gamemaker.svg +2 -0
  13. package/icons/folder-godot-open.svg +2 -0
  14. package/icons/folder-godot.svg +8 -0
  15. package/icons/folder-mercurial-open.svg +5 -0
  16. package/icons/folder-mercurial.svg +2 -0
  17. package/icons/folder-netlify-open.svg +5 -1
  18. package/icons/folder-netlify.svg +2 -1
  19. package/icons/folder-plastic-open.svg +8 -0
  20. package/icons/folder-plastic.svg +2 -0
  21. package/icons/gamemaker.svg +4 -0
  22. package/icons/godot-assets.svg +7 -1
  23. package/icons/godot.svg +7 -1
  24. package/icons/mercurial.svg +6 -0
  25. package/icons/netlify.svg +7 -1
  26. package/icons/netlify_light.svg +7 -0
  27. package/icons/objective-c.svg +4 -0
  28. package/icons/objective-cpp.svg +1 -0
  29. package/icons/pascal.svg +6 -1
  30. package/icons/plastic.svg +7 -0
  31. package/icons/rc.svg +2 -0
  32. package/icons/tldraw.svg +4 -0
  33. package/icons/tldraw_light.svg +4 -0
  34. package/icons/typst.svg +2 -0
  35. package/images/contributors.png +0 -0
  36. package/images/fileIcons.png +0 -0
  37. package/images/folderIcons.png +0 -0
  38. package/package.json +12 -1
  39. package/package.nls.de.json +2 -0
  40. package/package.nls.json +2 -0
  41. package/src/commands/fileColor.ts +96 -0
  42. package/src/commands/folderColor.ts +3 -3
  43. package/src/commands/index.ts +2 -0
  44. package/src/commands/restoreConfig.ts +1 -0
  45. package/src/helpers/fileConfig.ts +2 -1
  46. package/src/i18n/lang-de.ts +5 -3
  47. package/src/i18n/lang-en.ts +5 -3
  48. package/src/i18n/lang-es.ts +5 -3
  49. package/src/i18n/lang-fr.ts +5 -3
  50. package/src/i18n/lang-ja.ts +5 -3
  51. package/src/i18n/lang-nl.ts +5 -3
  52. package/src/i18n/lang-pl.ts +5 -3
  53. package/src/i18n/lang-pt-br.ts +5 -3
  54. package/src/i18n/lang-pt-pt.ts +5 -3
  55. package/src/i18n/lang-ru.ts +5 -3
  56. package/src/i18n/lang-uk.ts +5 -3
  57. package/src/i18n/lang-zh-cn.ts +5 -3
  58. package/src/i18n/lang-zh-tw.ts +5 -3
  59. package/src/icons/fileIcons.ts +97 -9
  60. package/src/icons/folderIcons.ts +18 -1
  61. package/src/icons/generator/fileGenerator.ts +17 -0
  62. package/src/icons/generator/folderGenerator.ts +3 -3
  63. package/src/icons/generator/jsonGenerator.ts +17 -1
  64. package/src/icons/languageIcons.ts +4 -1
  65. package/src/models/i18n/translation.ts +5 -3
  66. package/src/models/icons/iconJsonOptions.ts +1 -0
  67. package/icons/file.svg +0 -1
  68. package/images/bloop.png +0 -0
  69. package/images/stepsize.png +0 -0
@@ -0,0 +1,96 @@
1
+ import { QuickPickItem, window as codeWindow } from 'vscode';
2
+ import { getMaterialIconsJSON, setThemeConfig } from '../helpers';
3
+ import { translate } from '../i18n';
4
+ import { getDefaultIconOptions, validateHEXColorCode } from '../icons';
5
+
6
+ interface FileColor {
7
+ label: string;
8
+ hex: string;
9
+ }
10
+
11
+ const iconPalette: FileColor[] = [
12
+ { label: 'Grey (Default)', hex: '#90a4ae' },
13
+ { label: 'Blue', hex: '#42a5f5' },
14
+ { label: 'Green', hex: '#7CB342' },
15
+ { label: 'Teal', hex: '#26A69A' },
16
+ { label: 'Red', hex: '#EF5350' },
17
+ { label: 'Orange', hex: '#FF7043' },
18
+ { label: 'Yellow', hex: '#FDD835' },
19
+ { label: 'Custom Color', hex: 'Custom HEX Code' },
20
+ ];
21
+
22
+ /** Command to toggle the file icons. */
23
+ export const changeFileColor = async () => {
24
+ try {
25
+ const status = checkFileColorStatus();
26
+ const response = await showQuickPickItems(status);
27
+ if (response) {
28
+ handleQuickPickActions(response);
29
+ }
30
+ } catch (error) {
31
+ console.error(error);
32
+ }
33
+ };
34
+
35
+ /** Show QuickPick items to select preferred color for the file icons. */
36
+ const showQuickPickItems = (currentColor: string) => {
37
+ const options = iconPalette.map(
38
+ (color): QuickPickItem => ({
39
+ description: color.label,
40
+ label: isColorActive(color, currentColor) ? '\u2714' : '\u25FB',
41
+ })
42
+ );
43
+
44
+ return codeWindow.showQuickPick(options, {
45
+ placeHolder: translate('colorSelect.color'),
46
+ ignoreFocusOut: false,
47
+ matchOnDescription: true,
48
+ });
49
+ };
50
+
51
+ /** Handle the actions from the QuickPick. */
52
+ const handleQuickPickActions = async (value: QuickPickItem) => {
53
+ if (!value || !value.description) return;
54
+ if (value.description === 'Custom Color') {
55
+ const value = await codeWindow.showInputBox({
56
+ placeHolder: translate('colorSelect.hexCode'),
57
+ ignoreFocusOut: true,
58
+ validateInput: validateColorInput,
59
+ });
60
+ if (value) {
61
+ setColorConfig(value);
62
+ }
63
+ } else {
64
+ const hexCode = iconPalette.find((c) => c.label === value.description)?.hex;
65
+ if (hexCode) {
66
+ setColorConfig(hexCode);
67
+ }
68
+ }
69
+ };
70
+
71
+ const validateColorInput = (colorInput: string) => {
72
+ if (!validateHEXColorCode(colorInput)) {
73
+ return translate('colorSelect.wrongHexCode');
74
+ }
75
+ return undefined;
76
+ };
77
+
78
+ /** Check status of the file color */
79
+ export const checkFileColorStatus = (): string => {
80
+ const defaultOptions = getDefaultIconOptions();
81
+ const config = getMaterialIconsJSON();
82
+ return config?.options?.files?.color ?? defaultOptions.files.color!;
83
+ };
84
+
85
+ const setColorConfig = (value: string) => {
86
+ setThemeConfig('files.color', value.toLowerCase(), true);
87
+ };
88
+
89
+ const isColorActive = (color: FileColor, currentColor: string): boolean => {
90
+ if (color.label === 'Custom Color') {
91
+ return !iconPalette.some(
92
+ (c) => c.hex.toLowerCase() === currentColor.toLowerCase()
93
+ );
94
+ }
95
+ return color.hex.toLowerCase() === currentColor.toLowerCase();
96
+ };
@@ -42,7 +42,7 @@ const showQuickPickItems = (currentColor: string) => {
42
42
  );
43
43
 
44
44
  return codeWindow.showQuickPick(options, {
45
- placeHolder: translate('folders.color'),
45
+ placeHolder: translate('colorSelect.color'),
46
46
  ignoreFocusOut: false,
47
47
  matchOnDescription: true,
48
48
  });
@@ -53,7 +53,7 @@ const handleQuickPickActions = async (value: QuickPickItem) => {
53
53
  if (!value || !value.description) return;
54
54
  if (value.description === 'Custom Color') {
55
55
  const value = await codeWindow.showInputBox({
56
- placeHolder: translate('folders.hexCode'),
56
+ placeHolder: translate('colorSelect.hexCode'),
57
57
  ignoreFocusOut: true,
58
58
  validateInput: validateColorInput,
59
59
  });
@@ -70,7 +70,7 @@ const handleQuickPickActions = async (value: QuickPickItem) => {
70
70
 
71
71
  const validateColorInput = (colorInput: string) => {
72
72
  if (!validateHEXColorCode(colorInput)) {
73
- return translate('folders.wrongHexCode');
73
+ return translate('colorSelect.wrongHexCode');
74
74
  }
75
75
  return undefined;
76
76
  };
@@ -1,6 +1,7 @@
1
1
  import { commands } from 'vscode';
2
2
  import { activateIcons } from './activate';
3
3
  import { toggleExplorerArrows } from './explorerArrows';
4
+ import { changeFileColor } from './fileColor';
4
5
  import { changeFolderColor } from './folderColor';
5
6
  import { changeFolderTheme } from './folders';
6
7
  import { toggleGrayscale } from './grayscale';
@@ -14,6 +15,7 @@ const extensionCommands: { [commmand: string]: () => Promise<void> } = {
14
15
  toggleIconPacks,
15
16
  changeFolderTheme,
16
17
  changeFolderColor,
18
+ changeFileColor,
17
19
  restoreDefaultConfig,
18
20
  toggleExplorerArrows,
19
21
  changeOpacity,
@@ -5,6 +5,7 @@ export const restoreDefaultConfig = async () => {
5
5
  await setThemeConfig('activeIconPack', undefined, true);
6
6
  await setThemeConfig('folders.theme', undefined, true);
7
7
  await setThemeConfig('folders.color', undefined, true);
8
+ await setThemeConfig('files.color', undefined, true);
8
9
  await setThemeConfig('hidesExplorerArrows', undefined, true);
9
10
  await setThemeConfig('opacity', undefined, true);
10
11
  await setThemeConfig('saturation', undefined, true);
@@ -12,7 +12,8 @@ export const getFileConfigHash = (options: IconJsonOptions): string => {
12
12
  if (
13
13
  options.saturation !== defaults.saturation ||
14
14
  options.opacity !== defaults.opacity ||
15
- options.folders?.color !== defaults.folders.color
15
+ options.folders?.color !== defaults.folders.color ||
16
+ options.files?.color !== defaults.files.color
16
17
  ) {
17
18
  fileConfigString += `~${getHash(JSON.stringify(options))}`;
18
19
  }
@@ -10,14 +10,16 @@ export const translation: Translation = {
10
10
  },
11
11
  folders: {
12
12
  toggleIcons: 'Wähle ein Ordner Design',
13
- color: 'Wähle eine Ordner Farbe',
14
- hexCode: 'Gebe einen HEX Farbcode ein',
15
- wrongHexCode: 'Ungültiger HEX Farbcode',
16
13
  disabled: 'Keine Ordner Icons',
17
14
  theme: {
18
15
  description: "Wähle das '%0' Design",
19
16
  },
20
17
  },
18
+ colorSelect: {
19
+ color: 'Wähle eine Farbe',
20
+ hexCode: 'Gebe einen HEX Farbcode ein',
21
+ wrongHexCode: 'Ungültiger HEX Farbcode',
22
+ },
21
23
  opacity: {
22
24
  inputPlaceholder: 'Wert der Deckkraft (zwischen 0 und 1)',
23
25
  wrongValue: 'Der Wert muss zwischen 0 und 1 liegen!',
@@ -10,14 +10,16 @@ export const translation: Translation = {
10
10
  },
11
11
  folders: {
12
12
  toggleIcons: 'Pick a folder theme',
13
- color: 'Choose a folder color',
14
- hexCode: 'Insert a HEX color code',
15
- wrongHexCode: 'Invalid HEX color code!',
16
13
  disabled: 'No folder icons',
17
14
  theme: {
18
15
  description: "Select the '%0' folder theme",
19
16
  },
20
17
  },
18
+ colorSelect: {
19
+ color: 'Choose a color',
20
+ hexCode: 'Insert a HEX color code',
21
+ wrongHexCode: 'Invalid HEX color code!',
22
+ },
21
23
  opacity: {
22
24
  inputPlaceholder: 'Opacity value (between 0 and 1)',
23
25
  wrongValue: 'Please enter a floating-point number between 0 and 1.',
@@ -10,14 +10,16 @@ export const translation: Translation = {
10
10
  },
11
11
  folders: {
12
12
  toggleIcons: 'Cambiar activación de iconos de carpetas',
13
- color: 'Elija un color de carpeta',
14
- hexCode: 'Insertar un código de color HEX',
15
- wrongHexCode: '¡Código de color HEX inválido!',
16
13
  disabled: 'Sin iconos de carpeta',
17
14
  theme: {
18
15
  description: "Iconos de carpeta '%0'",
19
16
  },
20
17
  },
18
+ colorSelect: {
19
+ color: 'Elija un color',
20
+ hexCode: 'Insertar un código de color HEX',
21
+ wrongHexCode: '¡Código de color HEX inválido!',
22
+ },
21
23
  opacity: {
22
24
  inputPlaceholder: 'Valor de opacidad (entre 0 y 1)',
23
25
  wrongValue: '¡El valor debe estar entre 0 y 1!',
@@ -10,14 +10,16 @@ export const translation: Translation = {
10
10
  },
11
11
  folders: {
12
12
  toggleIcons: 'Basculer les icônes de dossiers',
13
- color: 'Choisissez une couleur de dossier',
14
- hexCode: 'Insérer un code couleur HEX',
15
- wrongHexCode: 'Code couleur HEX non valide!',
16
13
  disabled: 'Aucune icônes de dossiers',
17
14
  theme: {
18
15
  description: "Icônes de dossiers '%0'",
19
16
  },
20
17
  },
18
+ colorSelect: {
19
+ color: 'Choisissez une couleur',
20
+ hexCode: 'Insérer un code couleur HEX',
21
+ wrongHexCode: 'Code couleur HEX non valide!',
22
+ },
21
23
  opacity: {
22
24
  inputPlaceholder: "Valeur d'opacité (entre 0 et 1)",
23
25
  wrongValue: 'La valeur doit être comprise entre 0 et 1!',
@@ -10,14 +10,16 @@ export const translation: Translation = {
10
10
  },
11
11
  folders: {
12
12
  toggleIcons: 'フォルダーアイコンを切り替える',
13
- color: 'フォルダーの色を切り替える',
14
- hexCode: 'HEX カラーコードを入力する',
15
- wrongHexCode: '無効な HEX カラーコードです!',
16
13
  disabled: 'フォルダーアイコンを表示しない',
17
14
  theme: {
18
15
  description: "フォルダーテーマ '%0' を選択する",
19
16
  },
20
17
  },
18
+ colorSelect: {
19
+ color: '色を変える',
20
+ hexCode: 'HEX カラーコードを入力する',
21
+ wrongHexCode: '無効な HEX カラーコードです!',
22
+ },
21
23
  opacity: {
22
24
  inputPlaceholder: '不透明度(0〜1)',
23
25
  wrongValue: '値は0から1の間にしてください!',
@@ -10,14 +10,16 @@ export const translation: Translation = {
10
10
  },
11
11
  folders: {
12
12
  toggleIcons: 'Kies een folderthema',
13
- color: 'Kies een folderkleur',
14
- hexCode: 'Voeg een HEX kleurcode in',
15
- wrongHexCode: 'Ongeldige HEX kleurcode!',
16
13
  disabled: 'Geen foldericons',
17
14
  theme: {
18
15
  description: "Selecteer het '%0' folderthema",
19
16
  },
20
17
  },
18
+ colorSelect: {
19
+ color: 'Kies een kleur',
20
+ hexCode: 'Voeg een HEX kleurcode in',
21
+ wrongHexCode: 'Ongeldige HEX kleurcode!',
22
+ },
21
23
  opacity: {
22
24
  inputPlaceholder: 'Doorzichtbaarheidswaarde (tussen 0 en 1)',
23
25
  wrongValue: 'De waarde moet tussen de 0 en 1 zijn!',
@@ -10,14 +10,16 @@ export const translation: Translation = {
10
10
  },
11
11
  folders: {
12
12
  toggleIcons: 'Wybierz motyw folderów',
13
- color: 'Wybierz kolor folderów',
14
- hexCode: 'Podaj kolor w formacie HEX',
15
- wrongHexCode: 'Nieprawidłowy kolor HEX!',
16
13
  disabled: 'Brak ikon folderów',
17
14
  theme: {
18
15
  description: "Wybierz motyw folderów '%0'",
19
16
  },
20
17
  },
18
+ colorSelect: {
19
+ color: 'Wybierz kolor',
20
+ hexCode: 'Podaj kolor w formacie HEX',
21
+ wrongHexCode: 'Nieprawidłowy kolor HEX!',
22
+ },
21
23
  opacity: {
22
24
  inputPlaceholder: 'Wartość przezroczystości (pomiędzy 0 a 1)',
23
25
  wrongValue: 'Wartość musi być pomiędzy 0 i 1!',
@@ -10,14 +10,16 @@ export const translation: Translation = {
10
10
  },
11
11
  folders: {
12
12
  toggleIcons: 'Escolha um tema para as pastas',
13
- color: 'Escolha uma cor para as pastas',
14
- hexCode: 'Insira um código de cor hexadecimal',
15
- wrongHexCode: 'Código de cor hexadecimal inválido!',
16
13
  disabled: 'Nenhum ícone de pasta',
17
14
  theme: {
18
15
  description: "Selecionar o tema para pastas '%0'",
19
16
  },
20
17
  },
18
+ colorSelect: {
19
+ color: 'Escolha uma cor',
20
+ hexCode: 'Insira um código de cor hexadecimal',
21
+ wrongHexCode: 'Código de cor hexadecimal inválido!',
22
+ },
21
23
  opacity: {
22
24
  inputPlaceholder: 'Valor de opacidade (entre 0 e 1)',
23
25
  wrongValue: 'O valor deve estar entre 0 e 1!',
@@ -10,14 +10,16 @@ export const translation: Translation = {
10
10
  },
11
11
  folders: {
12
12
  toggleIcons: 'Escolhe um tema para os directórios',
13
- color: 'Escolhe uma cor para os directórios',
14
- hexCode: 'Insira um código de cor hexadecimal',
15
- wrongHexCode: 'Código de cor hexadecimal inválido!',
16
13
  disabled: 'Nenhum ícone do directório',
17
14
  theme: {
18
15
  description: "Seleccionar o tema para directórios '%0'",
19
16
  },
20
17
  },
18
+ colorSelect: {
19
+ color: 'Escolhe uma cor',
20
+ hexCode: 'Insira um código de cor hexadecimal',
21
+ wrongHexCode: 'Código de cor hexadecimal inválido!',
22
+ },
21
23
  opacity: {
22
24
  inputPlaceholder: 'Valor de opacidade (entre 0 e 1)',
23
25
  wrongValue: 'O valor deve estar entre 0 e 1!',
@@ -10,14 +10,16 @@ export const translation: Translation = {
10
10
  },
11
11
  folders: {
12
12
  toggleIcons: 'Выбрать тему папки',
13
- color: 'Выбрать цвет папки',
14
- hexCode: 'Вставить HEX-код цвета',
15
- wrongHexCode: 'Неверный HEX-код цвета!',
16
13
  disabled: 'Нет иконок для папки',
17
14
  theme: {
18
15
  description: "Выбрать '%0' тему папки",
19
16
  },
20
17
  },
18
+ colorSelect: {
19
+ color: 'Выберите цвет',
20
+ hexCode: 'Вставить HEX-код цвета',
21
+ wrongHexCode: 'Неверный HEX-код цвета!',
22
+ },
21
23
  opacity: {
22
24
  inputPlaceholder: 'Значение непрозрачности (между 0 и 1)',
23
25
  wrongValue: 'Значение должно быть между 0 и 1!',
@@ -10,14 +10,16 @@ export const translation: Translation = {
10
10
  },
11
11
  folders: {
12
12
  toggleIcons: 'Переключити теку icons',
13
- color: 'Виберіть колір папки',
14
- hexCode: 'Введіть HEX колірний код',
15
- wrongHexCode: 'Недійсний HEX колірний код!',
16
13
  disabled: 'Немає піктограм папок',
17
14
  theme: {
18
15
  description: "Виберіть тему папки '%0'",
19
16
  },
20
17
  },
18
+ colorSelect: {
19
+ color: 'Виберіть колір',
20
+ hexCode: 'Введіть HEX колірний код',
21
+ wrongHexCode: 'Недійсний HEX колірний код!',
22
+ },
21
23
  opacity: {
22
24
  inputPlaceholder: 'Значення непрозорості (від 0 до 1)',
23
25
  wrongValue: 'Значення має бути від 0 до 1!',
@@ -10,14 +10,16 @@ export const translation: Translation = {
10
10
  },
11
11
  folders: {
12
12
  toggleIcons: '切换文件夹图标的显示',
13
- color: '选择一个文件夹颜色',
14
- hexCode: '插入HEX颜色代码',
15
- wrongHexCode: '无效的HEX颜色代码!',
16
13
  disabled: '不显示文件夹图标',
17
14
  theme: {
18
15
  description: "'%0'主题的文件夹图标",
19
16
  },
20
17
  },
18
+ colorSelect: {
19
+ color: '选择颜色',
20
+ hexCode: '插入HEX颜色代码',
21
+ wrongHexCode: '无效的HEX颜色代码!',
22
+ },
21
23
  opacity: {
22
24
  inputPlaceholder: '不透明度值(0和1之间)',
23
25
  wrongValue: '该值必须介于0和1之间!',
@@ -10,14 +10,16 @@ export const translation: Translation = {
10
10
  },
11
11
  folders: {
12
12
  toggleIcons: '切換文件夾圖標的顯示',
13
- color: '選擇一個文件夾顏色',
14
- hexCode: '插入HEX顏色代碼',
15
- wrongHexCode: '無效的HEX顏色代碼!',
16
13
  disabled: '不顯示文件夾圖標',
17
14
  theme: {
18
15
  description: "'%0'主題的文件夾圖標",
19
16
  },
20
17
  },
18
+ colorSelect: {
19
+ color: '选择颜色',
20
+ hexCode: '插入HEX顏色代碼',
21
+ wrongHexCode: '無效的HEX顏色代碼!',
22
+ },
21
23
  opacity: {
22
24
  inputPlaceholder: '不透明度值(0和1之間)',
23
25
  wrongValue: '該值必須介於0和1之間!',
@@ -350,12 +350,15 @@ export const fileIcons: FileIcons = {
350
350
  { name: 'h', fileExtensions: ['h'] },
351
351
  {
352
352
  name: 'cpp',
353
- fileExtensions: ['cc', 'cpp', 'cxx', 'c++', 'cp', 'mm', 'mii', 'ii'],
353
+ fileExtensions: ['cc', 'cpp', 'cxx', 'c++', 'cp', 'mii', 'ii'],
354
354
  },
355
355
  {
356
356
  name: 'hpp',
357
357
  fileExtensions: ['hh', 'hpp', 'hxx', 'h++', 'hp', 'tcc', 'inl'],
358
358
  },
359
+ { name: 'objective-c', fileExtensions: ['m'] },
360
+ { name: 'objective-cpp', fileExtensions: ['mm'] },
361
+ { name: 'rc', fileExtensions: ['rc'] },
359
362
  { name: 'go', fileExtensions: ['go'] },
360
363
  {
361
364
  name: 'go-mod',
@@ -621,16 +624,20 @@ export const fileIcons: FileIcons = {
621
624
  name: 'git',
622
625
  fileExtensions: ['patch'],
623
626
  fileNames: [
627
+ '.git',
624
628
  '.gitignore',
625
- '.git-blame-ignore',
626
- '.git-blame-ignore-revs',
627
629
  '.gitignore-global',
628
630
  '.gitignore_global',
629
- '.gitconfig',
630
631
  '.gitattributes',
632
+ '.gitattributes-global',
633
+ '.gitattributes_global',
634
+ '.gitconfig',
631
635
  '.gitmodules',
632
636
  '.gitkeep',
633
637
  '.gitinclude',
638
+ '.git-blame-ignore',
639
+ '.git-blame-ignore-revs',
640
+ '.git-for-windows-updater',
634
641
  'git-history',
635
642
  ],
636
643
  },
@@ -717,6 +724,8 @@ export const fileIcons: FileIcons = {
717
724
  'test.cts',
718
725
  'test.mts',
719
726
  'ts.snap',
727
+ 'spec-d.ts',
728
+ 'test-d.ts',
720
729
  ],
721
730
  },
722
731
  {
@@ -730,6 +739,8 @@ export const fileIcons: FileIcons = {
730
739
  'jsx.snap',
731
740
  'cy.jsx',
732
741
  'cy.tsx',
742
+ 'spec-d.tsx',
743
+ 'test-d.tsx',
733
744
  ],
734
745
  },
735
746
  {
@@ -885,7 +896,11 @@ export const fileIcons: FileIcons = {
885
896
  '.posthtmlrc.yml',
886
897
  ],
887
898
  },
888
- { name: 'todo', fileExtensions: ['todo'] },
899
+ {
900
+ name: 'todo',
901
+ fileExtensions: ['todo'],
902
+ fileNames: ['todo.md', 'todos.md'],
903
+ },
889
904
  { name: 'coldfusion', fileExtensions: ['cfml', 'cfc', 'lucee', 'cfm'] },
890
905
  {
891
906
  name: 'cabal',
@@ -1483,9 +1498,11 @@ export const fileIcons: FileIcons = {
1483
1498
  {
1484
1499
  name: 'gatsby',
1485
1500
  fileNames: [
1486
- 'gatsby-config.ts',
1487
1501
  'gatsby-config.js',
1502
+ 'gatsby-config.mjs',
1503
+ 'gatsby-config.ts',
1488
1504
  'gatsby-node.js',
1505
+ 'gatsby-node.mjs',
1489
1506
  'gatsby-node.ts',
1490
1507
  'gatsby-browser.js',
1491
1508
  'gatsby-browser.tsx',
@@ -1613,7 +1630,20 @@ export const fileIcons: FileIcons = {
1613
1630
  { name: 'mint', fileExtensions: ['mint'] },
1614
1631
  { name: 'velocity', fileExtensions: ['vm', 'fhtml', 'vtl'] },
1615
1632
  { name: 'godot', fileExtensions: ['gd'] },
1616
- { name: 'godot-assets', fileExtensions: ['godot', 'tres', 'tscn'] },
1633
+ {
1634
+ name: 'godot-assets',
1635
+ fileExtensions: [
1636
+ 'godot',
1637
+ 'tres',
1638
+ 'tscn',
1639
+ 'gdns',
1640
+ 'gdnlib',
1641
+ 'gdshader',
1642
+ 'gdshaderinc',
1643
+ 'gdextension',
1644
+ ],
1645
+ fileNames: ['.gdignore', '._sc_', '_sc_'],
1646
+ },
1617
1647
  {
1618
1648
  name: 'azure-pipelines',
1619
1649
  fileNames: ['azure-pipelines.yml', 'azure-pipelines.yaml'],
@@ -1672,6 +1702,7 @@ export const fileIcons: FileIcons = {
1672
1702
  'netlify.yaml',
1673
1703
  'netlify.toml',
1674
1704
  ],
1705
+ light: true,
1675
1706
  },
1676
1707
  { name: 'svg', fileExtensions: ['svg'] },
1677
1708
  {
@@ -1861,7 +1892,19 @@ export const fileIcons: FileIcons = {
1861
1892
  fileExtensions: ['nupkg'],
1862
1893
  },
1863
1894
  { name: 'command', fileExtensions: ['command'] },
1864
- { name: 'stryker', fileNames: ['stryker.conf.js', 'stryker.conf.json'] },
1895
+ {
1896
+ name: 'stryker',
1897
+ fileNames: [
1898
+ 'stryker.conf.json',
1899
+ 'stryker.conf.js',
1900
+ 'stryker.conf.cjs',
1901
+ 'stryker.conf.mjs',
1902
+ '.stryker.conf.json',
1903
+ '.stryker.conf.js',
1904
+ '.stryker.conf.cjs',
1905
+ '.stryker.conf.mjs',
1906
+ ],
1907
+ },
1865
1908
  { name: 'denizenscript', fileExtensions: ['dsc'] },
1866
1909
  {
1867
1910
  name: 'modernizr',
@@ -1894,6 +1937,8 @@ export const fileIcons: FileIcons = {
1894
1937
  'mcstructure',
1895
1938
  'mcpack',
1896
1939
  'mcaddon',
1940
+ 'mctemplate',
1941
+ 'mcproject',
1897
1942
  ],
1898
1943
  fileNames: ['.mcattributes', '.mcdefinitions', '.mcignore'],
1899
1944
  },
@@ -2014,6 +2059,7 @@ export const fileIcons: FileIcons = {
2014
2059
  'tsconfig.cjs.json',
2015
2060
  'tsconfig.esm.json',
2016
2061
  'tsconfig.mjs.json',
2062
+ 'tsconfig.doc.json',
2017
2063
  ],
2018
2064
  fileExtensions: ['tsconfig.json'],
2019
2065
  },
@@ -2038,7 +2084,16 @@ export const fileIcons: FileIcons = {
2038
2084
  fileNames: ['maven.config', 'jvm.config', 'pom.xml'],
2039
2085
  },
2040
2086
  { name: 'ada', fileExtensions: ['ada', 'adb', 'ads', 'ali'] },
2041
- { name: 'serverless', fileNames: ['serverless.yml'] },
2087
+ {
2088
+ name: 'serverless',
2089
+ fileNames: [
2090
+ 'serverless.yml',
2091
+ 'serverless.yaml',
2092
+ 'serverless.json',
2093
+ 'serverless.js',
2094
+ 'serverless.ts',
2095
+ ],
2096
+ },
2042
2097
  {
2043
2098
  name: 'supabase',
2044
2099
  fileNames: ['supabase.js', 'supabase.py'],
@@ -2173,6 +2228,7 @@ export const fileIcons: FileIcons = {
2173
2228
  fileExtensions: ['cdc'],
2174
2229
  },
2175
2230
  { name: 'caddy', fileNames: ['Caddyfile'] },
2231
+ { name: 'bun', fileNames: ['bun.lockb'], light: true },
2176
2232
  { name: 'antlr', fileExtensions: ['g4'] },
2177
2233
  { name: 'stylable', fileExtensions: ['st.css'] },
2178
2234
  { name: 'pinejs', fileExtensions: ['pine'] },
@@ -2202,5 +2258,37 @@ export const fileIcons: FileIcons = {
2202
2258
  '.cracorc',
2203
2259
  ],
2204
2260
  },
2261
+ {
2262
+ name: 'gamemaker',
2263
+ fileExtensions: ['gml', 'yy', 'yyp', 'yyz'],
2264
+ },
2265
+ { name: 'tldraw', fileExtensions: ['tldr'], light: true },
2266
+ {
2267
+ name: 'mercurial',
2268
+ fileNames: [
2269
+ '.hg',
2270
+ '.hgignore',
2271
+ '.hgflow',
2272
+ '.hgrc',
2273
+ 'hgrc',
2274
+ 'mercurial.ini',
2275
+ ],
2276
+ },
2277
+ {
2278
+ name: 'deno',
2279
+ fileNames: ['deno.json', 'deno.jsonc', 'deno.lock'],
2280
+ light: true,
2281
+ },
2282
+ {
2283
+ name: 'plastic',
2284
+ fileNames: [
2285
+ 'plastic.branchexplorer',
2286
+ 'plastic.selector',
2287
+ 'plastic.wktree',
2288
+ 'plastic.workspace',
2289
+ 'plastic.workspaces',
2290
+ ],
2291
+ },
2292
+ { name: 'typst', fileExtensions: ['typ'] },
2205
2293
  ],
2206
2294
  };