file_icons: Add separate icon keys for .NET solution and project files (#24851)

Randa Zraik and Marshall Bowers created

Add separate icon keys for .NET solution and project files.

Release Notes:

- Icon themes: Added the ability to change file icons for Visual Studio
project files:
  - Solution files (`.sln`)
  - Solution User Options files (`.suo`)
  - C# Project files (`.csproj`)
  - F# Project files (`.fsproj`)
  - Visual Basic Project files (`.vbproj`)

---------

Co-authored-by: Marshall Bowers <git@maxdeviant.com>

Change summary

assets/icons/file_icons/file_types.json | 5 +++++
crates/theme/src/icon_theme.rs          | 5 +++++
2 files changed, 10 insertions(+)

Detailed changes

assets/icons/file_icons/file_types.json 🔗

@@ -36,6 +36,7 @@
     "cpp": "cpp",
     "cr": "crystal",
     "cs": "csharp",
+    "csproj": "csproj",
     "css": "css",
     "csv": "storage",
     "cts": "typescript",
@@ -72,6 +73,7 @@
     "fp7": "storage",
     "frm": "storage",
     "fs": "fsharp",
+    "fsproj": "fsproj",
     "gdb": "storage",
     "gif": "image",
     "gitattributes": "vcs",
@@ -196,6 +198,7 @@
     "scss": "sass",
     "sdf": "storage",
     "sh": "terminal",
+    "sln": "vs_sln",
     "sol": "solidity",
     "sql": "storage",
     "sqlite": "storage",
@@ -210,6 +213,7 @@
     "stylelintrc.mjs": "stylelint",
     "stylelintrc.yaml": "stylelint",
     "stylelintrc.yml": "stylelint",
+    "suo": "vs_suo",
     "svelte": "svelte",
     "svg": "image",
     "swift": "swift",
@@ -224,6 +228,7 @@
     "ttf": "font",
     "txt": "document",
     "v": "v",
+    "vbproj": "vbproj",
     "vsh": "v",
     "vue": "vue",
     "vv": "v",

crates/theme/src/icon_theme.rs 🔗

@@ -69,6 +69,7 @@ const FILE_ICONS: &[(&str, &str)] = &[
     ("cpp", "icons/file_icons/cpp.svg"),
     ("crystal", "icons/file_icons/file.svg"),
     ("csharp", "icons/file_icons/file.svg"),
+    ("csproj", "icons/file_icons/file.svg"),
     ("css", "icons/file_icons/css.svg"),
     ("cue", "icons/file_icons/file.svg"),
     ("dart", "icons/file_icons/dart.svg"),
@@ -82,6 +83,7 @@ const FILE_ICONS: &[(&str, &str)] = &[
     ("eslint", "icons/file_icons/eslint.svg"),
     ("font", "icons/file_icons/font.svg"),
     ("fsharp", "icons/file_icons/fsharp.svg"),
+    ("fsproj", "icons/file_icons/file.svg"),
     ("gitlab", "icons/file_icons/settings.svg"),
     ("gleam", "icons/file_icons/gleam.svg"),
     ("go", "icons/file_icons/go.svg"),
@@ -130,8 +132,11 @@ const FILE_ICONS: &[(&str, &str)] = &[
     ("toml", "icons/file_icons/toml.svg"),
     ("typescript", "icons/file_icons/typescript.svg"),
     ("v", "icons/file_icons/v.svg"),
+    ("vbproj", "icons/file_icons/file.svg"),
     ("vcs", "icons/file_icons/git.svg"),
     ("video", "icons/file_icons/video.svg"),
+    ("vs_sln", "icons/file_icons/file.svg"),
+    ("vs_suo", "icons/file_icons/file.svg"),
     ("vue", "icons/file_icons/vue.svg"),
     ("zig", "icons/file_icons/zig.svg"),
 ];