diff --git a/Cargo.lock b/Cargo.lock
index 53fc85d..2d19d9b 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -137,6 +137,12 @@ dependencies = [
"x11rb",
]
+[[package]]
+name = "arrayref"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb"
+
[[package]]
name = "arrayvec"
version = "0.7.7"
@@ -161,6 +167,12 @@ version = "1.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
+[[package]]
+name = "base64"
+version = "0.22.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
+
[[package]]
name = "bincode"
version = "1.3.3"
@@ -478,6 +490,12 @@ version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f"
+[[package]]
+name = "data-url"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be1e0bca6c3637f992fc1cc7cbc52a78c1ef6db076dbf1059c4323d6a2048376"
+
[[package]]
name = "defmt"
version = "1.1.0"
@@ -702,6 +720,21 @@ dependencies = [
"winit",
]
+[[package]]
+name = "egui_extras"
+version = "0.35.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2bd33be7338367bf21f54d62e069d58a5fb3ae033fa8bc6df7a77b9ef4cf957"
+dependencies = [
+ "ahash",
+ "egui",
+ "enum-map",
+ "itertools",
+ "log",
+ "profiling",
+ "resvg",
+]
+
[[package]]
name = "egui_glow"
version = "0.35.0"
@@ -733,6 +766,26 @@ dependencies = [
"serde",
]
+[[package]]
+name = "enum-map"
+version = "2.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9"
+dependencies = [
+ "enum-map-derive",
+]
+
+[[package]]
+name = "enum-map-derive"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
[[package]]
name = "enumn"
version = "0.1.14"
@@ -867,6 +920,12 @@ dependencies = [
"miniz_oxide",
]
+[[package]]
+name = "float-cmp"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4"
+
[[package]]
name = "fnv"
version = "1.0.7"
@@ -955,6 +1014,7 @@ dependencies = [
"directories",
"eframe",
"egui",
+ "egui_extras",
"env_logger",
"fontdb",
"harfrust",
@@ -1314,10 +1374,16 @@ dependencies = [
"byteorder-lite",
"moxcms",
"num-traits",
- "png",
+ "png 0.18.1",
"tiff",
]
+[[package]]
+name = "imagesize"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edcd27d72f2f071c64249075f42e205ff93c9a4c5f6c6da53e79ed9f9832c285"
+
[[package]]
name = "indexmap"
version = "2.14.0"
@@ -1459,6 +1525,17 @@ version = "3.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc"
+[[package]]
+name = "kurbo"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c62026ae44756f8a599ba21140f350303d4f08dcdcc71b5ad9c9bb8128c13c62"
+dependencies = [
+ "arrayvec",
+ "euclid",
+ "smallvec",
+]
+
[[package]]
name = "kurbo"
version = "0.13.1"
@@ -2053,7 +2130,7 @@ checksum = "839c8299360d2e998bdb106dc0a6cd71dcc5f4df51df1b620361bf50e283cca6"
dependencies = [
"bytemuck",
"color",
- "kurbo",
+ "kurbo 0.13.1",
"linebender_resource_handle",
"smallvec",
]
@@ -2064,6 +2141,12 @@ version = "2.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
+[[package]]
+name = "pico-args"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315"
+
[[package]]
name = "pin-project"
version = "1.1.13"
@@ -2102,6 +2185,19 @@ version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6"
+[[package]]
+name = "png"
+version = "0.17.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526"
+dependencies = [
+ "bitflags 1.3.2",
+ "crc32fast",
+ "fdeflate",
+ "flate2",
+ "miniz_oxide",
+]
+
[[package]]
name = "png"
version = "0.18.1"
@@ -2339,6 +2435,20 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832"
+[[package]]
+name = "resvg"
+version = "0.45.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8928798c0a55e03c9ca6c4c6846f76377427d2c1e1f7e6de3c06ae57942df43"
+dependencies = [
+ "log",
+ "pico-args",
+ "rgb",
+ "svgtypes",
+ "tiny-skia",
+ "usvg",
+]
+
[[package]]
name = "rfd"
version = "0.17.2"
@@ -2366,6 +2476,15 @@ dependencies = [
"windows-sys 0.61.2",
]
+[[package]]
+name = "rgb"
+version = "0.8.53"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4"
+dependencies = [
+ "bytemuck",
+]
+
[[package]]
name = "ron"
version = "0.12.2"
@@ -2543,6 +2662,21 @@ version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e"
+[[package]]
+name = "simplecss"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a9c6883ca9c3c7c90e888de77b7a5c849c779d25d74a1269b0218b14e8b136c"
+dependencies = [
+ "log",
+]
+
+[[package]]
+name = "siphasher"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649"
+
[[package]]
name = "skrifa"
version = "0.42.1"
@@ -2661,6 +2795,25 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+[[package]]
+name = "strict-num"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731"
+dependencies = [
+ "float-cmp",
+]
+
+[[package]]
+name = "svgtypes"
+version = "0.15.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68c7541fff44b35860c1a7a47a7cadf3e4a304c457b58f9870d9706ece028afc"
+dependencies = [
+ "kurbo 0.11.3",
+ "siphasher",
+]
+
[[package]]
name = "syn"
version = "2.0.118"
@@ -2755,6 +2908,32 @@ dependencies = [
"zune-jpeg",
]
+[[package]]
+name = "tiny-skia"
+version = "0.11.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab"
+dependencies = [
+ "arrayref",
+ "arrayvec",
+ "bytemuck",
+ "cfg-if",
+ "log",
+ "png 0.17.16",
+ "tiny-skia-path",
+]
+
+[[package]]
+name = "tiny-skia-path"
+version = "0.11.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93"
+dependencies = [
+ "arrayref",
+ "bytemuck",
+ "strict-num",
+]
+
[[package]]
name = "tinystr"
version = "0.8.3"
@@ -2898,6 +3077,28 @@ dependencies = [
"serde",
]
+[[package]]
+name = "usvg"
+version = "0.45.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "80be9b06fbae3b8b303400ab20778c80bbaf338f563afe567cf3c9eea17b47ef"
+dependencies = [
+ "base64",
+ "data-url",
+ "flate2",
+ "imagesize",
+ "kurbo 0.11.3",
+ "log",
+ "pico-args",
+ "roxmltree",
+ "simplecss",
+ "siphasher",
+ "strict-num",
+ "svgtypes",
+ "tiny-skia-path",
+ "xmlwriter",
+]
+
[[package]]
name = "utf8_iter"
version = "1.0.4"
@@ -3638,6 +3839,12 @@ version = "0.8.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f"
+[[package]]
+name = "xmlwriter"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec7a2a501ed189703dba8b08142f057e887dfc4b2cc4db2d343ac6376ba3e0b9"
+
[[package]]
name = "yoke"
version = "0.8.3"
diff --git a/Cargo.toml b/Cargo.toml
index c3ede95..e886b92 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -19,6 +19,7 @@ categories = ["text-editors", "gui"]
directories = "6.0.0"
eframe = { version = "0.35.0", default-features = false, features = ["default_fonts", "glow", "persistence", "wayland", "x11"] }
egui = { version = "0.35.0", default-features = false }
+egui_extras = { version = "0.35.0", default-features = false, features = ["svg"] }
env_logger = "0.11.11"
fontdb = "0.23.0"
harfrust = "0.7.0"
diff --git a/assets/file-icons/catppuccin-icons-LICENSE.md b/assets/file-icons/catppuccin-icons-LICENSE.md
new file mode 100644
index 0000000..0d49490
--- /dev/null
+++ b/assets/file-icons/catppuccin-icons-LICENSE.md
@@ -0,0 +1,35 @@
+# Catppuccin Icons (file-type icons)
+
+The SVG file-type icons under `mocha/` are the Catppuccin Mocha flavour of the
+[`catppuccin/zed-icons`](https://github.com/catppuccin/zed-icons) set, vendored
+at commit `6d953c8c7566b9e721d15b54e802dd77ae26fa9c`.
+
+The Rust lookup tables in `frext/src/file_icon_table.rs` and the embed table in
+`frext/src/file_icon_bytes.rs` are generated from the upstream icon-theme
+manifest (`icon_themes/catppuccin-icons.json`) at that same commit.
+
+## License
+
+```text
+MIT License
+
+Copyright (c) 2021 Catppuccin
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+```
diff --git a/assets/file-icons/mocha/3d.svg b/assets/file-icons/mocha/3d.svg
new file mode 100644
index 0000000..80d732e
--- /dev/null
+++ b/assets/file-icons/mocha/3d.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/_file.svg b/assets/file-icons/mocha/_file.svg
new file mode 100644
index 0000000..02ad12f
--- /dev/null
+++ b/assets/file-icons/mocha/_file.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/_folder.svg b/assets/file-icons/mocha/_folder.svg
new file mode 100644
index 0000000..6a52169
--- /dev/null
+++ b/assets/file-icons/mocha/_folder.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/_folder_open.svg b/assets/file-icons/mocha/_folder_open.svg
new file mode 100644
index 0000000..e66842a
--- /dev/null
+++ b/assets/file-icons/mocha/_folder_open.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/adobe-ae.svg b/assets/file-icons/mocha/adobe-ae.svg
new file mode 100644
index 0000000..f01277d
--- /dev/null
+++ b/assets/file-icons/mocha/adobe-ae.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/adobe-ai.svg b/assets/file-icons/mocha/adobe-ai.svg
new file mode 100644
index 0000000..b28cba9
--- /dev/null
+++ b/assets/file-icons/mocha/adobe-ai.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/adobe-id.svg b/assets/file-icons/mocha/adobe-id.svg
new file mode 100644
index 0000000..44d2224
--- /dev/null
+++ b/assets/file-icons/mocha/adobe-id.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/adobe-ps.svg b/assets/file-icons/mocha/adobe-ps.svg
new file mode 100644
index 0000000..e7c26c9
--- /dev/null
+++ b/assets/file-icons/mocha/adobe-ps.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/adobe-xd.svg b/assets/file-icons/mocha/adobe-xd.svg
new file mode 100644
index 0000000..7c8ca79
--- /dev/null
+++ b/assets/file-icons/mocha/adobe-xd.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/adonis.svg b/assets/file-icons/mocha/adonis.svg
new file mode 100644
index 0000000..4c9f73c
--- /dev/null
+++ b/assets/file-icons/mocha/adonis.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/alex.svg b/assets/file-icons/mocha/alex.svg
new file mode 100644
index 0000000..784f4f7
--- /dev/null
+++ b/assets/file-icons/mocha/alex.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/amber.svg b/assets/file-icons/mocha/amber.svg
new file mode 100644
index 0000000..cdcce75
--- /dev/null
+++ b/assets/file-icons/mocha/amber.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/android.svg b/assets/file-icons/mocha/android.svg
new file mode 100644
index 0000000..16c2b2b
--- /dev/null
+++ b/assets/file-icons/mocha/android.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/angular.svg b/assets/file-icons/mocha/angular.svg
new file mode 100644
index 0000000..09c77d1
--- /dev/null
+++ b/assets/file-icons/mocha/angular.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/ansible-lint.svg b/assets/file-icons/mocha/ansible-lint.svg
new file mode 100644
index 0000000..e7ed216
--- /dev/null
+++ b/assets/file-icons/mocha/ansible-lint.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/antlr.svg b/assets/file-icons/mocha/antlr.svg
new file mode 100644
index 0000000..a5a21b4
--- /dev/null
+++ b/assets/file-icons/mocha/antlr.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/apache.svg b/assets/file-icons/mocha/apache.svg
new file mode 100644
index 0000000..319f710
--- /dev/null
+++ b/assets/file-icons/mocha/apache.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/api-blueprint.svg b/assets/file-icons/mocha/api-blueprint.svg
new file mode 100644
index 0000000..1e772fd
--- /dev/null
+++ b/assets/file-icons/mocha/api-blueprint.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/apollo.svg b/assets/file-icons/mocha/apollo.svg
new file mode 100644
index 0000000..8d6e9f3
--- /dev/null
+++ b/assets/file-icons/mocha/apollo.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/apple.svg b/assets/file-icons/mocha/apple.svg
new file mode 100644
index 0000000..94e4d4e
--- /dev/null
+++ b/assets/file-icons/mocha/apple.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/arduino.svg b/assets/file-icons/mocha/arduino.svg
new file mode 100644
index 0000000..7f915ca
--- /dev/null
+++ b/assets/file-icons/mocha/arduino.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/asciidoc.svg b/assets/file-icons/mocha/asciidoc.svg
new file mode 100644
index 0000000..18d3aeb
--- /dev/null
+++ b/assets/file-icons/mocha/asciidoc.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/assembly.svg b/assets/file-icons/mocha/assembly.svg
new file mode 100644
index 0000000..f1ab500
--- /dev/null
+++ b/assets/file-icons/mocha/assembly.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/astro-config.svg b/assets/file-icons/mocha/astro-config.svg
new file mode 100644
index 0000000..8b6b031
--- /dev/null
+++ b/assets/file-icons/mocha/astro-config.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/astro.svg b/assets/file-icons/mocha/astro.svg
new file mode 100644
index 0000000..ea879fa
--- /dev/null
+++ b/assets/file-icons/mocha/astro.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/audio.svg b/assets/file-icons/mocha/audio.svg
new file mode 100644
index 0000000..510f3b4
--- /dev/null
+++ b/assets/file-icons/mocha/audio.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/autohotkey.svg b/assets/file-icons/mocha/autohotkey.svg
new file mode 100644
index 0000000..1f747ef
--- /dev/null
+++ b/assets/file-icons/mocha/autohotkey.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/azure-pipelines.svg b/assets/file-icons/mocha/azure-pipelines.svg
new file mode 100644
index 0000000..48b1ee1
--- /dev/null
+++ b/assets/file-icons/mocha/azure-pipelines.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/babel.svg b/assets/file-icons/mocha/babel.svg
new file mode 100644
index 0000000..ee7a607
--- /dev/null
+++ b/assets/file-icons/mocha/babel.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/bash.svg b/assets/file-icons/mocha/bash.svg
new file mode 100644
index 0000000..cd7f25b
--- /dev/null
+++ b/assets/file-icons/mocha/bash.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/batch.svg b/assets/file-icons/mocha/batch.svg
new file mode 100644
index 0000000..5a98106
--- /dev/null
+++ b/assets/file-icons/mocha/batch.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/bazel.svg b/assets/file-icons/mocha/bazel.svg
new file mode 100644
index 0000000..518de6f
--- /dev/null
+++ b/assets/file-icons/mocha/bazel.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/benchmark.svg b/assets/file-icons/mocha/benchmark.svg
new file mode 100644
index 0000000..4d6aa0e
--- /dev/null
+++ b/assets/file-icons/mocha/benchmark.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/bicep.svg b/assets/file-icons/mocha/bicep.svg
new file mode 100644
index 0000000..1e0414e
--- /dev/null
+++ b/assets/file-icons/mocha/bicep.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/file-icons/mocha/binary.svg b/assets/file-icons/mocha/binary.svg
new file mode 100644
index 0000000..5076e1b
--- /dev/null
+++ b/assets/file-icons/mocha/binary.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/biome.svg b/assets/file-icons/mocha/biome.svg
new file mode 100644
index 0000000..b81c3bb
--- /dev/null
+++ b/assets/file-icons/mocha/biome.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/bitbucket.svg b/assets/file-icons/mocha/bitbucket.svg
new file mode 100644
index 0000000..c74a5cc
--- /dev/null
+++ b/assets/file-icons/mocha/bitbucket.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/blink.svg b/assets/file-icons/mocha/blink.svg
new file mode 100644
index 0000000..439cc18
--- /dev/null
+++ b/assets/file-icons/mocha/blink.svg
@@ -0,0 +1,10 @@
+
diff --git a/assets/file-icons/mocha/blitz.svg b/assets/file-icons/mocha/blitz.svg
new file mode 100644
index 0000000..805ba53
--- /dev/null
+++ b/assets/file-icons/mocha/blitz.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/bower.svg b/assets/file-icons/mocha/bower.svg
new file mode 100644
index 0000000..b5dde30
--- /dev/null
+++ b/assets/file-icons/mocha/bower.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/browserslist.svg b/assets/file-icons/mocha/browserslist.svg
new file mode 100644
index 0000000..cc48bc7
--- /dev/null
+++ b/assets/file-icons/mocha/browserslist.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/bun-lock.svg b/assets/file-icons/mocha/bun-lock.svg
new file mode 100644
index 0000000..9147463
--- /dev/null
+++ b/assets/file-icons/mocha/bun-lock.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/bun.svg b/assets/file-icons/mocha/bun.svg
new file mode 100644
index 0000000..4b940fd
--- /dev/null
+++ b/assets/file-icons/mocha/bun.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/c-header.svg b/assets/file-icons/mocha/c-header.svg
new file mode 100644
index 0000000..e080ca6
--- /dev/null
+++ b/assets/file-icons/mocha/c-header.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/c.svg b/assets/file-icons/mocha/c.svg
new file mode 100644
index 0000000..fbea307
--- /dev/null
+++ b/assets/file-icons/mocha/c.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/cabal.svg b/assets/file-icons/mocha/cabal.svg
new file mode 100644
index 0000000..81f3321
--- /dev/null
+++ b/assets/file-icons/mocha/cabal.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/caddy.svg b/assets/file-icons/mocha/caddy.svg
new file mode 100644
index 0000000..94870c2
--- /dev/null
+++ b/assets/file-icons/mocha/caddy.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/capacitor.svg b/assets/file-icons/mocha/capacitor.svg
new file mode 100644
index 0000000..a808c03
--- /dev/null
+++ b/assets/file-icons/mocha/capacitor.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/cargo-lock.svg b/assets/file-icons/mocha/cargo-lock.svg
new file mode 100644
index 0000000..1980ace
--- /dev/null
+++ b/assets/file-icons/mocha/cargo-lock.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/cargo.svg b/assets/file-icons/mocha/cargo.svg
new file mode 100644
index 0000000..ceca602
--- /dev/null
+++ b/assets/file-icons/mocha/cargo.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/certificate.svg b/assets/file-icons/mocha/certificate.svg
new file mode 100644
index 0000000..00f71d5
--- /dev/null
+++ b/assets/file-icons/mocha/certificate.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/changelog.svg b/assets/file-icons/mocha/changelog.svg
new file mode 100644
index 0000000..2e239b1
--- /dev/null
+++ b/assets/file-icons/mocha/changelog.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/circle-ci.svg b/assets/file-icons/mocha/circle-ci.svg
new file mode 100644
index 0000000..3ffee25
--- /dev/null
+++ b/assets/file-icons/mocha/circle-ci.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/clojure.svg b/assets/file-icons/mocha/clojure.svg
new file mode 100644
index 0000000..76f3a7b
--- /dev/null
+++ b/assets/file-icons/mocha/clojure.svg
@@ -0,0 +1,10 @@
+
diff --git a/assets/file-icons/mocha/cmake.svg b/assets/file-icons/mocha/cmake.svg
new file mode 100644
index 0000000..00cc5d6
--- /dev/null
+++ b/assets/file-icons/mocha/cmake.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/cobol.svg b/assets/file-icons/mocha/cobol.svg
new file mode 100644
index 0000000..5dbede1
--- /dev/null
+++ b/assets/file-icons/mocha/cobol.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/code-climate.svg b/assets/file-icons/mocha/code-climate.svg
new file mode 100644
index 0000000..70d1255
--- /dev/null
+++ b/assets/file-icons/mocha/code-climate.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/code-of-conduct.svg b/assets/file-icons/mocha/code-of-conduct.svg
new file mode 100644
index 0000000..27eb40d
--- /dev/null
+++ b/assets/file-icons/mocha/code-of-conduct.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/codeowners.svg b/assets/file-icons/mocha/codeowners.svg
new file mode 100644
index 0000000..d8d6161
--- /dev/null
+++ b/assets/file-icons/mocha/codeowners.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/coffeescript.svg b/assets/file-icons/mocha/coffeescript.svg
new file mode 100644
index 0000000..792044e
--- /dev/null
+++ b/assets/file-icons/mocha/coffeescript.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/commitlint.svg b/assets/file-icons/mocha/commitlint.svg
new file mode 100644
index 0000000..48c32e0
--- /dev/null
+++ b/assets/file-icons/mocha/commitlint.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/config.svg b/assets/file-icons/mocha/config.svg
new file mode 100644
index 0000000..b54c7f8
--- /dev/null
+++ b/assets/file-icons/mocha/config.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/contributing.svg b/assets/file-icons/mocha/contributing.svg
new file mode 100644
index 0000000..c9ddabd
--- /dev/null
+++ b/assets/file-icons/mocha/contributing.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/cpp-header.svg b/assets/file-icons/mocha/cpp-header.svg
new file mode 100644
index 0000000..dc0f4b0
--- /dev/null
+++ b/assets/file-icons/mocha/cpp-header.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/cpp.svg b/assets/file-icons/mocha/cpp.svg
new file mode 100644
index 0000000..29d42f9
--- /dev/null
+++ b/assets/file-icons/mocha/cpp.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/crystal.svg b/assets/file-icons/mocha/crystal.svg
new file mode 100644
index 0000000..d5929e5
--- /dev/null
+++ b/assets/file-icons/mocha/crystal.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/csharp.svg b/assets/file-icons/mocha/csharp.svg
new file mode 100644
index 0000000..af1c719
--- /dev/null
+++ b/assets/file-icons/mocha/csharp.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/cspell.svg b/assets/file-icons/mocha/cspell.svg
new file mode 100644
index 0000000..bcb9716
--- /dev/null
+++ b/assets/file-icons/mocha/cspell.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/css-map.svg b/assets/file-icons/mocha/css-map.svg
new file mode 100644
index 0000000..2b6c903
--- /dev/null
+++ b/assets/file-icons/mocha/css-map.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/css.svg b/assets/file-icons/mocha/css.svg
new file mode 100644
index 0000000..e263e09
--- /dev/null
+++ b/assets/file-icons/mocha/css.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/csv.svg b/assets/file-icons/mocha/csv.svg
new file mode 100644
index 0000000..bb67be5
--- /dev/null
+++ b/assets/file-icons/mocha/csv.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/cucumber.svg b/assets/file-icons/mocha/cucumber.svg
new file mode 100644
index 0000000..79e972a
--- /dev/null
+++ b/assets/file-icons/mocha/cucumber.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/cuda.svg b/assets/file-icons/mocha/cuda.svg
new file mode 100644
index 0000000..7ec5910
--- /dev/null
+++ b/assets/file-icons/mocha/cuda.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/cue.svg b/assets/file-icons/mocha/cue.svg
new file mode 100644
index 0000000..fab6447
--- /dev/null
+++ b/assets/file-icons/mocha/cue.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/cursor-ignore.svg b/assets/file-icons/mocha/cursor-ignore.svg
new file mode 100644
index 0000000..f3c2af7
--- /dev/null
+++ b/assets/file-icons/mocha/cursor-ignore.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/cursor.svg b/assets/file-icons/mocha/cursor.svg
new file mode 100644
index 0000000..f9f99c0
--- /dev/null
+++ b/assets/file-icons/mocha/cursor.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/cypress.svg b/assets/file-icons/mocha/cypress.svg
new file mode 100644
index 0000000..b56d8e7
--- /dev/null
+++ b/assets/file-icons/mocha/cypress.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/d.svg b/assets/file-icons/mocha/d.svg
new file mode 100644
index 0000000..22583e6
--- /dev/null
+++ b/assets/file-icons/mocha/d.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/darklua.svg b/assets/file-icons/mocha/darklua.svg
new file mode 100644
index 0000000..ec580a4
--- /dev/null
+++ b/assets/file-icons/mocha/darklua.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/dart-generated.svg b/assets/file-icons/mocha/dart-generated.svg
new file mode 100644
index 0000000..2d55bd2
--- /dev/null
+++ b/assets/file-icons/mocha/dart-generated.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/dart.svg b/assets/file-icons/mocha/dart.svg
new file mode 100644
index 0000000..6f7473f
--- /dev/null
+++ b/assets/file-icons/mocha/dart.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/database.svg b/assets/file-icons/mocha/database.svg
new file mode 100644
index 0000000..44cd9b1
--- /dev/null
+++ b/assets/file-icons/mocha/database.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/deno.svg b/assets/file-icons/mocha/deno.svg
new file mode 100644
index 0000000..c0f5b57
--- /dev/null
+++ b/assets/file-icons/mocha/deno.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/deno_lock.svg b/assets/file-icons/mocha/deno_lock.svg
new file mode 100644
index 0000000..19d326f
--- /dev/null
+++ b/assets/file-icons/mocha/deno_lock.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/dependabot.svg b/assets/file-icons/mocha/dependabot.svg
new file mode 100644
index 0000000..3a80194
--- /dev/null
+++ b/assets/file-icons/mocha/dependabot.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/devcontainer.svg b/assets/file-icons/mocha/devcontainer.svg
new file mode 100644
index 0000000..955c2a8
--- /dev/null
+++ b/assets/file-icons/mocha/devcontainer.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/dhall.svg b/assets/file-icons/mocha/dhall.svg
new file mode 100644
index 0000000..c74f75b
--- /dev/null
+++ b/assets/file-icons/mocha/dhall.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/diff.svg b/assets/file-icons/mocha/diff.svg
new file mode 100644
index 0000000..0469a09
--- /dev/null
+++ b/assets/file-icons/mocha/diff.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/django.svg b/assets/file-icons/mocha/django.svg
new file mode 100644
index 0000000..5e1e3e3
--- /dev/null
+++ b/assets/file-icons/mocha/django.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/docker-compose.svg b/assets/file-icons/mocha/docker-compose.svg
new file mode 100644
index 0000000..75e080f
--- /dev/null
+++ b/assets/file-icons/mocha/docker-compose.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/docker-ignore.svg b/assets/file-icons/mocha/docker-ignore.svg
new file mode 100644
index 0000000..3ef25c1
--- /dev/null
+++ b/assets/file-icons/mocha/docker-ignore.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/docker.svg b/assets/file-icons/mocha/docker.svg
new file mode 100644
index 0000000..02a9161
--- /dev/null
+++ b/assets/file-icons/mocha/docker.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/docusaurus.svg b/assets/file-icons/mocha/docusaurus.svg
new file mode 100644
index 0000000..f213e9f
--- /dev/null
+++ b/assets/file-icons/mocha/docusaurus.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/drawio.svg b/assets/file-icons/mocha/drawio.svg
new file mode 100644
index 0000000..a9ee11f
--- /dev/null
+++ b/assets/file-icons/mocha/drawio.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/drizzle-orm.svg b/assets/file-icons/mocha/drizzle-orm.svg
new file mode 100644
index 0000000..cc4d6f0
--- /dev/null
+++ b/assets/file-icons/mocha/drizzle-orm.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/dub-selections.svg b/assets/file-icons/mocha/dub-selections.svg
new file mode 100644
index 0000000..fe02ece
--- /dev/null
+++ b/assets/file-icons/mocha/dub-selections.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/dub.svg b/assets/file-icons/mocha/dub.svg
new file mode 100644
index 0000000..de1bd06
--- /dev/null
+++ b/assets/file-icons/mocha/dub.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/editorconfig.svg b/assets/file-icons/mocha/editorconfig.svg
new file mode 100644
index 0000000..dd5770f
--- /dev/null
+++ b/assets/file-icons/mocha/editorconfig.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/ejs.svg b/assets/file-icons/mocha/ejs.svg
new file mode 100644
index 0000000..4c3cf62
--- /dev/null
+++ b/assets/file-icons/mocha/ejs.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/eleventy.svg b/assets/file-icons/mocha/eleventy.svg
new file mode 100644
index 0000000..a85e57f
--- /dev/null
+++ b/assets/file-icons/mocha/eleventy.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/elixir.svg b/assets/file-icons/mocha/elixir.svg
new file mode 100644
index 0000000..19ed9c8
--- /dev/null
+++ b/assets/file-icons/mocha/elixir.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/elm.svg b/assets/file-icons/mocha/elm.svg
new file mode 100644
index 0000000..05dfce0
--- /dev/null
+++ b/assets/file-icons/mocha/elm.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/ember.svg b/assets/file-icons/mocha/ember.svg
new file mode 100644
index 0000000..c0f1d94
--- /dev/null
+++ b/assets/file-icons/mocha/ember.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/env.svg b/assets/file-icons/mocha/env.svg
new file mode 100644
index 0000000..4a444fd
--- /dev/null
+++ b/assets/file-icons/mocha/env.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/envrc.svg b/assets/file-icons/mocha/envrc.svg
new file mode 100644
index 0000000..6a47e97
--- /dev/null
+++ b/assets/file-icons/mocha/envrc.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/erlang.svg b/assets/file-icons/mocha/erlang.svg
new file mode 100644
index 0000000..f071f4a
--- /dev/null
+++ b/assets/file-icons/mocha/erlang.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/esbuild.svg b/assets/file-icons/mocha/esbuild.svg
new file mode 100644
index 0000000..7d14635
--- /dev/null
+++ b/assets/file-icons/mocha/esbuild.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/eslint-ignore.svg b/assets/file-icons/mocha/eslint-ignore.svg
new file mode 100644
index 0000000..cf21708
--- /dev/null
+++ b/assets/file-icons/mocha/eslint-ignore.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/eslint.svg b/assets/file-icons/mocha/eslint.svg
new file mode 100644
index 0000000..1543d1b
--- /dev/null
+++ b/assets/file-icons/mocha/eslint.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/exe.svg b/assets/file-icons/mocha/exe.svg
new file mode 100644
index 0000000..4f3f4bf
--- /dev/null
+++ b/assets/file-icons/mocha/exe.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/fastlane.svg b/assets/file-icons/mocha/fastlane.svg
new file mode 100644
index 0000000..aaa5031
--- /dev/null
+++ b/assets/file-icons/mocha/fastlane.svg
@@ -0,0 +1,14 @@
+
diff --git a/assets/file-icons/mocha/favicon.svg b/assets/file-icons/mocha/favicon.svg
new file mode 100644
index 0000000..dd6b409
--- /dev/null
+++ b/assets/file-icons/mocha/favicon.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/figma.svg b/assets/file-icons/mocha/figma.svg
new file mode 100644
index 0000000..fa03857
--- /dev/null
+++ b/assets/file-icons/mocha/figma.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/firebase.svg b/assets/file-icons/mocha/firebase.svg
new file mode 100644
index 0000000..871553b
--- /dev/null
+++ b/assets/file-icons/mocha/firebase.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/flutter.svg b/assets/file-icons/mocha/flutter.svg
new file mode 100644
index 0000000..a8aa024
--- /dev/null
+++ b/assets/file-icons/mocha/flutter.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/folder_admin.svg b/assets/file-icons/mocha/folder_admin.svg
new file mode 100644
index 0000000..6b3038e
--- /dev/null
+++ b/assets/file-icons/mocha/folder_admin.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_admin_open.svg b/assets/file-icons/mocha/folder_admin_open.svg
new file mode 100644
index 0000000..4095fd9
--- /dev/null
+++ b/assets/file-icons/mocha/folder_admin_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_android.svg b/assets/file-icons/mocha/folder_android.svg
new file mode 100644
index 0000000..beec76e
--- /dev/null
+++ b/assets/file-icons/mocha/folder_android.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_android_open.svg b/assets/file-icons/mocha/folder_android_open.svg
new file mode 100644
index 0000000..83d6385
--- /dev/null
+++ b/assets/file-icons/mocha/folder_android_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_animation.svg b/assets/file-icons/mocha/folder_animation.svg
new file mode 100644
index 0000000..e232262
--- /dev/null
+++ b/assets/file-icons/mocha/folder_animation.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_animation_open.svg b/assets/file-icons/mocha/folder_animation_open.svg
new file mode 100644
index 0000000..1e95ae3
--- /dev/null
+++ b/assets/file-icons/mocha/folder_animation_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_api.svg b/assets/file-icons/mocha/folder_api.svg
new file mode 100644
index 0000000..ccc8c3e
--- /dev/null
+++ b/assets/file-icons/mocha/folder_api.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_api_open.svg b/assets/file-icons/mocha/folder_api_open.svg
new file mode 100644
index 0000000..005319d
--- /dev/null
+++ b/assets/file-icons/mocha/folder_api_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_app.svg b/assets/file-icons/mocha/folder_app.svg
new file mode 100644
index 0000000..e1561b9
--- /dev/null
+++ b/assets/file-icons/mocha/folder_app.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/folder_app_open.svg b/assets/file-icons/mocha/folder_app_open.svg
new file mode 100644
index 0000000..b9ebcd8
--- /dev/null
+++ b/assets/file-icons/mocha/folder_app_open.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/folder_assets.svg b/assets/file-icons/mocha/folder_assets.svg
new file mode 100644
index 0000000..ff6e19e
--- /dev/null
+++ b/assets/file-icons/mocha/folder_assets.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/file-icons/mocha/folder_assets_open.svg b/assets/file-icons/mocha/folder_assets_open.svg
new file mode 100644
index 0000000..71be7e8
--- /dev/null
+++ b/assets/file-icons/mocha/folder_assets_open.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/file-icons/mocha/folder_audio.svg b/assets/file-icons/mocha/folder_audio.svg
new file mode 100644
index 0000000..73acba9
--- /dev/null
+++ b/assets/file-icons/mocha/folder_audio.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/folder_audio_open.svg b/assets/file-icons/mocha/folder_audio_open.svg
new file mode 100644
index 0000000..cc7c4f5
--- /dev/null
+++ b/assets/file-icons/mocha/folder_audio_open.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/folder_audit.svg b/assets/file-icons/mocha/folder_audit.svg
new file mode 100644
index 0000000..cb4053d
--- /dev/null
+++ b/assets/file-icons/mocha/folder_audit.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/folder_audit_open.svg b/assets/file-icons/mocha/folder_audit_open.svg
new file mode 100644
index 0000000..f2bccbd
--- /dev/null
+++ b/assets/file-icons/mocha/folder_audit_open.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/folder_aws.svg b/assets/file-icons/mocha/folder_aws.svg
new file mode 100644
index 0000000..ad313f6
--- /dev/null
+++ b/assets/file-icons/mocha/folder_aws.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/folder_aws_open.svg b/assets/file-icons/mocha/folder_aws_open.svg
new file mode 100644
index 0000000..58f429f
--- /dev/null
+++ b/assets/file-icons/mocha/folder_aws_open.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/folder_azure-devops.svg b/assets/file-icons/mocha/folder_azure-devops.svg
new file mode 100644
index 0000000..3bf51a9
--- /dev/null
+++ b/assets/file-icons/mocha/folder_azure-devops.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/folder_azure-devops_open.svg b/assets/file-icons/mocha/folder_azure-devops_open.svg
new file mode 100644
index 0000000..19ce85e
--- /dev/null
+++ b/assets/file-icons/mocha/folder_azure-devops_open.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/folder_azure-pipelines.svg b/assets/file-icons/mocha/folder_azure-pipelines.svg
new file mode 100644
index 0000000..1ef788d
--- /dev/null
+++ b/assets/file-icons/mocha/folder_azure-pipelines.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_azure-pipelines_open.svg b/assets/file-icons/mocha/folder_azure-pipelines_open.svg
new file mode 100644
index 0000000..06d50a3
--- /dev/null
+++ b/assets/file-icons/mocha/folder_azure-pipelines_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_benchmark.svg b/assets/file-icons/mocha/folder_benchmark.svg
new file mode 100644
index 0000000..f16cc03
--- /dev/null
+++ b/assets/file-icons/mocha/folder_benchmark.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_benchmark_open.svg b/assets/file-icons/mocha/folder_benchmark_open.svg
new file mode 100644
index 0000000..ddb9800
--- /dev/null
+++ b/assets/file-icons/mocha/folder_benchmark_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_caddy.svg b/assets/file-icons/mocha/folder_caddy.svg
new file mode 100644
index 0000000..146d7ef
--- /dev/null
+++ b/assets/file-icons/mocha/folder_caddy.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/folder_caddy_open.svg b/assets/file-icons/mocha/folder_caddy_open.svg
new file mode 100644
index 0000000..2b7be58
--- /dev/null
+++ b/assets/file-icons/mocha/folder_caddy_open.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/folder_cargo.svg b/assets/file-icons/mocha/folder_cargo.svg
new file mode 100644
index 0000000..ebe20ad
--- /dev/null
+++ b/assets/file-icons/mocha/folder_cargo.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_cargo_open.svg b/assets/file-icons/mocha/folder_cargo_open.svg
new file mode 100644
index 0000000..2986935
--- /dev/null
+++ b/assets/file-icons/mocha/folder_cargo_open.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/folder_circle-ci.svg b/assets/file-icons/mocha/folder_circle-ci.svg
new file mode 100644
index 0000000..5318b7f
--- /dev/null
+++ b/assets/file-icons/mocha/folder_circle-ci.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/folder_circle-ci_open.svg b/assets/file-icons/mocha/folder_circle-ci_open.svg
new file mode 100644
index 0000000..9b47043
--- /dev/null
+++ b/assets/file-icons/mocha/folder_circle-ci_open.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/folder_client.svg b/assets/file-icons/mocha/folder_client.svg
new file mode 100644
index 0000000..3c3c420
--- /dev/null
+++ b/assets/file-icons/mocha/folder_client.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_client_open.svg b/assets/file-icons/mocha/folder_client_open.svg
new file mode 100644
index 0000000..643f0b0
--- /dev/null
+++ b/assets/file-icons/mocha/folder_client_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_cloud.svg b/assets/file-icons/mocha/folder_cloud.svg
new file mode 100644
index 0000000..596441a
--- /dev/null
+++ b/assets/file-icons/mocha/folder_cloud.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_cloud_open.svg b/assets/file-icons/mocha/folder_cloud_open.svg
new file mode 100644
index 0000000..62bb4d1
--- /dev/null
+++ b/assets/file-icons/mocha/folder_cloud_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_command.svg b/assets/file-icons/mocha/folder_command.svg
new file mode 100644
index 0000000..dcadcad
--- /dev/null
+++ b/assets/file-icons/mocha/folder_command.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_command_open.svg b/assets/file-icons/mocha/folder_command_open.svg
new file mode 100644
index 0000000..785a43e
--- /dev/null
+++ b/assets/file-icons/mocha/folder_command_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_components.svg b/assets/file-icons/mocha/folder_components.svg
new file mode 100644
index 0000000..6155193
--- /dev/null
+++ b/assets/file-icons/mocha/folder_components.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_components_open.svg b/assets/file-icons/mocha/folder_components_open.svg
new file mode 100644
index 0000000..0acf6cc
--- /dev/null
+++ b/assets/file-icons/mocha/folder_components_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_composables.svg b/assets/file-icons/mocha/folder_composables.svg
new file mode 100644
index 0000000..12ca569
--- /dev/null
+++ b/assets/file-icons/mocha/folder_composables.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_composables_open.svg b/assets/file-icons/mocha/folder_composables_open.svg
new file mode 100644
index 0000000..b675dbc
--- /dev/null
+++ b/assets/file-icons/mocha/folder_composables_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_config.svg b/assets/file-icons/mocha/folder_config.svg
new file mode 100644
index 0000000..1f0b655
--- /dev/null
+++ b/assets/file-icons/mocha/folder_config.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_config_open.svg b/assets/file-icons/mocha/folder_config_open.svg
new file mode 100644
index 0000000..f549bf7
--- /dev/null
+++ b/assets/file-icons/mocha/folder_config_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_connection.svg b/assets/file-icons/mocha/folder_connection.svg
new file mode 100644
index 0000000..ab7d2f6
--- /dev/null
+++ b/assets/file-icons/mocha/folder_connection.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_connection_open.svg b/assets/file-icons/mocha/folder_connection_open.svg
new file mode 100644
index 0000000..8dd1235
--- /dev/null
+++ b/assets/file-icons/mocha/folder_connection_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_constant.svg b/assets/file-icons/mocha/folder_constant.svg
new file mode 100644
index 0000000..ac756b2
--- /dev/null
+++ b/assets/file-icons/mocha/folder_constant.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_constant_open.svg b/assets/file-icons/mocha/folder_constant_open.svg
new file mode 100644
index 0000000..02ef533
--- /dev/null
+++ b/assets/file-icons/mocha/folder_constant_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_content.svg b/assets/file-icons/mocha/folder_content.svg
new file mode 100644
index 0000000..e1ee5a7
--- /dev/null
+++ b/assets/file-icons/mocha/folder_content.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/folder_content_open.svg b/assets/file-icons/mocha/folder_content_open.svg
new file mode 100644
index 0000000..242b2d6
--- /dev/null
+++ b/assets/file-icons/mocha/folder_content_open.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/folder_controllers.svg b/assets/file-icons/mocha/folder_controllers.svg
new file mode 100644
index 0000000..52250f2
--- /dev/null
+++ b/assets/file-icons/mocha/folder_controllers.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_controllers_open.svg b/assets/file-icons/mocha/folder_controllers_open.svg
new file mode 100644
index 0000000..6b20598
--- /dev/null
+++ b/assets/file-icons/mocha/folder_controllers_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_core.svg b/assets/file-icons/mocha/folder_core.svg
new file mode 100644
index 0000000..7c6b0af
--- /dev/null
+++ b/assets/file-icons/mocha/folder_core.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_core_open.svg b/assets/file-icons/mocha/folder_core_open.svg
new file mode 100644
index 0000000..c0e4461
--- /dev/null
+++ b/assets/file-icons/mocha/folder_core_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_coverage.svg b/assets/file-icons/mocha/folder_coverage.svg
new file mode 100644
index 0000000..faeb5d7
--- /dev/null
+++ b/assets/file-icons/mocha/folder_coverage.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_coverage_open.svg b/assets/file-icons/mocha/folder_coverage_open.svg
new file mode 100644
index 0000000..f2533f2
--- /dev/null
+++ b/assets/file-icons/mocha/folder_coverage_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_cursor.svg b/assets/file-icons/mocha/folder_cursor.svg
new file mode 100644
index 0000000..c2863f1
--- /dev/null
+++ b/assets/file-icons/mocha/folder_cursor.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/folder_cursor_open.svg b/assets/file-icons/mocha/folder_cursor_open.svg
new file mode 100644
index 0000000..78d90a5
--- /dev/null
+++ b/assets/file-icons/mocha/folder_cursor_open.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/folder_cypress.svg b/assets/file-icons/mocha/folder_cypress.svg
new file mode 100644
index 0000000..2bc7ee9
--- /dev/null
+++ b/assets/file-icons/mocha/folder_cypress.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_cypress_open.svg b/assets/file-icons/mocha/folder_cypress_open.svg
new file mode 100644
index 0000000..d10dcd2
--- /dev/null
+++ b/assets/file-icons/mocha/folder_cypress_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_database.svg b/assets/file-icons/mocha/folder_database.svg
new file mode 100644
index 0000000..46b0e4c
--- /dev/null
+++ b/assets/file-icons/mocha/folder_database.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_database_open.svg b/assets/file-icons/mocha/folder_database_open.svg
new file mode 100644
index 0000000..83066b4
--- /dev/null
+++ b/assets/file-icons/mocha/folder_database_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_debug.svg b/assets/file-icons/mocha/folder_debug.svg
new file mode 100644
index 0000000..0b800f1
--- /dev/null
+++ b/assets/file-icons/mocha/folder_debug.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_debug_open.svg b/assets/file-icons/mocha/folder_debug_open.svg
new file mode 100644
index 0000000..a76dcfd
--- /dev/null
+++ b/assets/file-icons/mocha/folder_debug_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_devcontainer.svg b/assets/file-icons/mocha/folder_devcontainer.svg
new file mode 100644
index 0000000..25495d6
--- /dev/null
+++ b/assets/file-icons/mocha/folder_devcontainer.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/folder_devcontainer_open.svg b/assets/file-icons/mocha/folder_devcontainer_open.svg
new file mode 100644
index 0000000..a017b2d
--- /dev/null
+++ b/assets/file-icons/mocha/folder_devcontainer_open.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/folder_direnv.svg b/assets/file-icons/mocha/folder_direnv.svg
new file mode 100644
index 0000000..dbc1484
--- /dev/null
+++ b/assets/file-icons/mocha/folder_direnv.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_direnv_open.svg b/assets/file-icons/mocha/folder_direnv_open.svg
new file mode 100644
index 0000000..d3055ec
--- /dev/null
+++ b/assets/file-icons/mocha/folder_direnv_open.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/folder_dist.svg b/assets/file-icons/mocha/folder_dist.svg
new file mode 100644
index 0000000..c0cd095
--- /dev/null
+++ b/assets/file-icons/mocha/folder_dist.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_dist_open.svg b/assets/file-icons/mocha/folder_dist_open.svg
new file mode 100644
index 0000000..a56fe1c
--- /dev/null
+++ b/assets/file-icons/mocha/folder_dist_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_docker.svg b/assets/file-icons/mocha/folder_docker.svg
new file mode 100644
index 0000000..56a49e9
--- /dev/null
+++ b/assets/file-icons/mocha/folder_docker.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/folder_docker_open.svg b/assets/file-icons/mocha/folder_docker_open.svg
new file mode 100644
index 0000000..e692fff
--- /dev/null
+++ b/assets/file-icons/mocha/folder_docker_open.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/folder_docs.svg b/assets/file-icons/mocha/folder_docs.svg
new file mode 100644
index 0000000..bf8026d
--- /dev/null
+++ b/assets/file-icons/mocha/folder_docs.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_docs_open.svg b/assets/file-icons/mocha/folder_docs_open.svg
new file mode 100644
index 0000000..ac36aed
--- /dev/null
+++ b/assets/file-icons/mocha/folder_docs_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_download.svg b/assets/file-icons/mocha/folder_download.svg
new file mode 100644
index 0000000..034f754
--- /dev/null
+++ b/assets/file-icons/mocha/folder_download.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_download_open.svg b/assets/file-icons/mocha/folder_download_open.svg
new file mode 100644
index 0000000..f013a72
--- /dev/null
+++ b/assets/file-icons/mocha/folder_download_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_drizzle-orm.svg b/assets/file-icons/mocha/folder_drizzle-orm.svg
new file mode 100644
index 0000000..cf402c0
--- /dev/null
+++ b/assets/file-icons/mocha/folder_drizzle-orm.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_drizzle-orm_open.svg b/assets/file-icons/mocha/folder_drizzle-orm_open.svg
new file mode 100644
index 0000000..c0eb3bc
--- /dev/null
+++ b/assets/file-icons/mocha/folder_drizzle-orm_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_examples.svg b/assets/file-icons/mocha/folder_examples.svg
new file mode 100644
index 0000000..4a6c5e2
--- /dev/null
+++ b/assets/file-icons/mocha/folder_examples.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_examples_open.svg b/assets/file-icons/mocha/folder_examples_open.svg
new file mode 100644
index 0000000..840d7bf
--- /dev/null
+++ b/assets/file-icons/mocha/folder_examples_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_fastlane.svg b/assets/file-icons/mocha/folder_fastlane.svg
new file mode 100644
index 0000000..b6ff107
--- /dev/null
+++ b/assets/file-icons/mocha/folder_fastlane.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/folder_fastlane_open.svg b/assets/file-icons/mocha/folder_fastlane_open.svg
new file mode 100644
index 0000000..04e53da
--- /dev/null
+++ b/assets/file-icons/mocha/folder_fastlane_open.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/folder_firebase.svg b/assets/file-icons/mocha/folder_firebase.svg
new file mode 100644
index 0000000..2a50c38
--- /dev/null
+++ b/assets/file-icons/mocha/folder_firebase.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_firebase_open.svg b/assets/file-icons/mocha/folder_firebase_open.svg
new file mode 100644
index 0000000..35a39c3
--- /dev/null
+++ b/assets/file-icons/mocha/folder_firebase_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_fonts.svg b/assets/file-icons/mocha/folder_fonts.svg
new file mode 100644
index 0000000..0320b88
--- /dev/null
+++ b/assets/file-icons/mocha/folder_fonts.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_fonts_open.svg b/assets/file-icons/mocha/folder_fonts_open.svg
new file mode 100644
index 0000000..b663ad4
--- /dev/null
+++ b/assets/file-icons/mocha/folder_fonts_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_forgejo.svg b/assets/file-icons/mocha/folder_forgejo.svg
new file mode 100644
index 0000000..4352f8b
--- /dev/null
+++ b/assets/file-icons/mocha/folder_forgejo.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/folder_forgejo_open.svg b/assets/file-icons/mocha/folder_forgejo_open.svg
new file mode 100644
index 0000000..c55ca61
--- /dev/null
+++ b/assets/file-icons/mocha/folder_forgejo_open.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/folder_functions.svg b/assets/file-icons/mocha/folder_functions.svg
new file mode 100644
index 0000000..4af8497
--- /dev/null
+++ b/assets/file-icons/mocha/folder_functions.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_functions_open.svg b/assets/file-icons/mocha/folder_functions_open.svg
new file mode 100644
index 0000000..9b9672c
--- /dev/null
+++ b/assets/file-icons/mocha/folder_functions_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_fvm.svg b/assets/file-icons/mocha/folder_fvm.svg
new file mode 100644
index 0000000..04ebc72
--- /dev/null
+++ b/assets/file-icons/mocha/folder_fvm.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_fvm_open.svg b/assets/file-icons/mocha/folder_fvm_open.svg
new file mode 100644
index 0000000..48d307f
--- /dev/null
+++ b/assets/file-icons/mocha/folder_fvm_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_git.svg b/assets/file-icons/mocha/folder_git.svg
new file mode 100644
index 0000000..e7cd1a9
--- /dev/null
+++ b/assets/file-icons/mocha/folder_git.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_git_open.svg b/assets/file-icons/mocha/folder_git_open.svg
new file mode 100644
index 0000000..2e54186
--- /dev/null
+++ b/assets/file-icons/mocha/folder_git_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_github.svg b/assets/file-icons/mocha/folder_github.svg
new file mode 100644
index 0000000..09a634e
--- /dev/null
+++ b/assets/file-icons/mocha/folder_github.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_github_open.svg b/assets/file-icons/mocha/folder_github_open.svg
new file mode 100644
index 0000000..b770b81
--- /dev/null
+++ b/assets/file-icons/mocha/folder_github_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_gitlab.svg b/assets/file-icons/mocha/folder_gitlab.svg
new file mode 100644
index 0000000..ec1a2b4
--- /dev/null
+++ b/assets/file-icons/mocha/folder_gitlab.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_gitlab_open.svg b/assets/file-icons/mocha/folder_gitlab_open.svg
new file mode 100644
index 0000000..d5cf201
--- /dev/null
+++ b/assets/file-icons/mocha/folder_gitlab_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_gradle.svg b/assets/file-icons/mocha/folder_gradle.svg
new file mode 100644
index 0000000..3ecb900
--- /dev/null
+++ b/assets/file-icons/mocha/folder_gradle.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/folder_gradle_open.svg b/assets/file-icons/mocha/folder_gradle_open.svg
new file mode 100644
index 0000000..45bddda
--- /dev/null
+++ b/assets/file-icons/mocha/folder_gradle_open.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/folder_graphql.svg b/assets/file-icons/mocha/folder_graphql.svg
new file mode 100644
index 0000000..5ab2916
--- /dev/null
+++ b/assets/file-icons/mocha/folder_graphql.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/folder_graphql_open.svg b/assets/file-icons/mocha/folder_graphql_open.svg
new file mode 100644
index 0000000..4d7b02a
--- /dev/null
+++ b/assets/file-icons/mocha/folder_graphql_open.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/folder_hooks.svg b/assets/file-icons/mocha/folder_hooks.svg
new file mode 100644
index 0000000..1877880
--- /dev/null
+++ b/assets/file-icons/mocha/folder_hooks.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_hooks_open.svg b/assets/file-icons/mocha/folder_hooks_open.svg
new file mode 100644
index 0000000..47c1081
--- /dev/null
+++ b/assets/file-icons/mocha/folder_hooks_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_husky.svg b/assets/file-icons/mocha/folder_husky.svg
new file mode 100644
index 0000000..6aec964
--- /dev/null
+++ b/assets/file-icons/mocha/folder_husky.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/folder_husky_open.svg b/assets/file-icons/mocha/folder_husky_open.svg
new file mode 100644
index 0000000..239c5ff
--- /dev/null
+++ b/assets/file-icons/mocha/folder_husky_open.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/folder_images.svg b/assets/file-icons/mocha/folder_images.svg
new file mode 100644
index 0000000..8c42571
--- /dev/null
+++ b/assets/file-icons/mocha/folder_images.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/folder_images_open.svg b/assets/file-icons/mocha/folder_images_open.svg
new file mode 100644
index 0000000..5808cba
--- /dev/null
+++ b/assets/file-icons/mocha/folder_images_open.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/folder_include.svg b/assets/file-icons/mocha/folder_include.svg
new file mode 100644
index 0000000..7ca96e7
--- /dev/null
+++ b/assets/file-icons/mocha/folder_include.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/file-icons/mocha/folder_include_open.svg b/assets/file-icons/mocha/folder_include_open.svg
new file mode 100644
index 0000000..85b35e9
--- /dev/null
+++ b/assets/file-icons/mocha/folder_include_open.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/file-icons/mocha/folder_intellij.svg b/assets/file-icons/mocha/folder_intellij.svg
new file mode 100644
index 0000000..d54541d
--- /dev/null
+++ b/assets/file-icons/mocha/folder_intellij.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/folder_intellij_open.svg b/assets/file-icons/mocha/folder_intellij_open.svg
new file mode 100644
index 0000000..19dcb62
--- /dev/null
+++ b/assets/file-icons/mocha/folder_intellij_open.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/folder_javascript.svg b/assets/file-icons/mocha/folder_javascript.svg
new file mode 100644
index 0000000..85e84a9
--- /dev/null
+++ b/assets/file-icons/mocha/folder_javascript.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/folder_javascript_open.svg b/assets/file-icons/mocha/folder_javascript_open.svg
new file mode 100644
index 0000000..73a5d0d
--- /dev/null
+++ b/assets/file-icons/mocha/folder_javascript_open.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/folder_kubernetes.svg b/assets/file-icons/mocha/folder_kubernetes.svg
new file mode 100644
index 0000000..84f314a
--- /dev/null
+++ b/assets/file-icons/mocha/folder_kubernetes.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/folder_kubernetes_open.svg b/assets/file-icons/mocha/folder_kubernetes_open.svg
new file mode 100644
index 0000000..bd415eb
--- /dev/null
+++ b/assets/file-icons/mocha/folder_kubernetes_open.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/folder_layouts.svg b/assets/file-icons/mocha/folder_layouts.svg
new file mode 100644
index 0000000..85c356f
--- /dev/null
+++ b/assets/file-icons/mocha/folder_layouts.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_layouts_open.svg b/assets/file-icons/mocha/folder_layouts_open.svg
new file mode 100644
index 0000000..f309b9f
--- /dev/null
+++ b/assets/file-icons/mocha/folder_layouts_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_lib.svg b/assets/file-icons/mocha/folder_lib.svg
new file mode 100644
index 0000000..60dfa34
--- /dev/null
+++ b/assets/file-icons/mocha/folder_lib.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/folder_lib_open.svg b/assets/file-icons/mocha/folder_lib_open.svg
new file mode 100644
index 0000000..fa93ac6
--- /dev/null
+++ b/assets/file-icons/mocha/folder_lib_open.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/folder_linux.svg b/assets/file-icons/mocha/folder_linux.svg
new file mode 100644
index 0000000..74a4c11
--- /dev/null
+++ b/assets/file-icons/mocha/folder_linux.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/file-icons/mocha/folder_linux_open.svg b/assets/file-icons/mocha/folder_linux_open.svg
new file mode 100644
index 0000000..1009c11
--- /dev/null
+++ b/assets/file-icons/mocha/folder_linux_open.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/file-icons/mocha/folder_locales.svg b/assets/file-icons/mocha/folder_locales.svg
new file mode 100644
index 0000000..4f70571
--- /dev/null
+++ b/assets/file-icons/mocha/folder_locales.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_locales_open.svg b/assets/file-icons/mocha/folder_locales_open.svg
new file mode 100644
index 0000000..47f1cae
--- /dev/null
+++ b/assets/file-icons/mocha/folder_locales_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_luau.svg b/assets/file-icons/mocha/folder_luau.svg
new file mode 100644
index 0000000..0ab58d0
--- /dev/null
+++ b/assets/file-icons/mocha/folder_luau.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/file-icons/mocha/folder_luau_open.svg b/assets/file-icons/mocha/folder_luau_open.svg
new file mode 100644
index 0000000..9c23bdc
--- /dev/null
+++ b/assets/file-icons/mocha/folder_luau_open.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/file-icons/mocha/folder_lune.svg b/assets/file-icons/mocha/folder_lune.svg
new file mode 100644
index 0000000..caa8d5f
--- /dev/null
+++ b/assets/file-icons/mocha/folder_lune.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/file-icons/mocha/folder_lune_open.svg b/assets/file-icons/mocha/folder_lune_open.svg
new file mode 100644
index 0000000..8189504
--- /dev/null
+++ b/assets/file-icons/mocha/folder_lune_open.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/file-icons/mocha/folder_macos.svg b/assets/file-icons/mocha/folder_macos.svg
new file mode 100644
index 0000000..f092eb3
--- /dev/null
+++ b/assets/file-icons/mocha/folder_macos.svg
@@ -0,0 +1,10 @@
+
diff --git a/assets/file-icons/mocha/folder_macos_open.svg b/assets/file-icons/mocha/folder_macos_open.svg
new file mode 100644
index 0000000..1cc14a3
--- /dev/null
+++ b/assets/file-icons/mocha/folder_macos_open.svg
@@ -0,0 +1,10 @@
+
diff --git a/assets/file-icons/mocha/folder_messages.svg b/assets/file-icons/mocha/folder_messages.svg
new file mode 100644
index 0000000..92596ad
--- /dev/null
+++ b/assets/file-icons/mocha/folder_messages.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/folder_messages_open.svg b/assets/file-icons/mocha/folder_messages_open.svg
new file mode 100644
index 0000000..b4d58a7
--- /dev/null
+++ b/assets/file-icons/mocha/folder_messages_open.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/folder_middleware.svg b/assets/file-icons/mocha/folder_middleware.svg
new file mode 100644
index 0000000..2bf54fa
--- /dev/null
+++ b/assets/file-icons/mocha/folder_middleware.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_middleware_open.svg b/assets/file-icons/mocha/folder_middleware_open.svg
new file mode 100644
index 0000000..bca866c
--- /dev/null
+++ b/assets/file-icons/mocha/folder_middleware_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_mocks.svg b/assets/file-icons/mocha/folder_mocks.svg
new file mode 100644
index 0000000..fab7a73
--- /dev/null
+++ b/assets/file-icons/mocha/folder_mocks.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_mocks_open.svg b/assets/file-icons/mocha/folder_mocks_open.svg
new file mode 100644
index 0000000..41f8d32
--- /dev/null
+++ b/assets/file-icons/mocha/folder_mocks_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_moonrepo.svg b/assets/file-icons/mocha/folder_moonrepo.svg
new file mode 100644
index 0000000..aa3c6ac
--- /dev/null
+++ b/assets/file-icons/mocha/folder_moonrepo.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/file-icons/mocha/folder_moonrepo_open.svg b/assets/file-icons/mocha/folder_moonrepo_open.svg
new file mode 100644
index 0000000..e3485fd
--- /dev/null
+++ b/assets/file-icons/mocha/folder_moonrepo_open.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/file-icons/mocha/folder_next.svg b/assets/file-icons/mocha/folder_next.svg
new file mode 100644
index 0000000..de6f428
--- /dev/null
+++ b/assets/file-icons/mocha/folder_next.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_next_open.svg b/assets/file-icons/mocha/folder_next_open.svg
new file mode 100644
index 0000000..ccffc94
--- /dev/null
+++ b/assets/file-icons/mocha/folder_next_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_nix.svg b/assets/file-icons/mocha/folder_nix.svg
new file mode 100644
index 0000000..4a5e873
--- /dev/null
+++ b/assets/file-icons/mocha/folder_nix.svg
@@ -0,0 +1,11 @@
+
diff --git a/assets/file-icons/mocha/folder_nix_open.svg b/assets/file-icons/mocha/folder_nix_open.svg
new file mode 100644
index 0000000..7b2ba7d
--- /dev/null
+++ b/assets/file-icons/mocha/folder_nix_open.svg
@@ -0,0 +1,11 @@
+
diff --git a/assets/file-icons/mocha/folder_node.svg b/assets/file-icons/mocha/folder_node.svg
new file mode 100644
index 0000000..12fb859
--- /dev/null
+++ b/assets/file-icons/mocha/folder_node.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_node_open.svg b/assets/file-icons/mocha/folder_node_open.svg
new file mode 100644
index 0000000..5d2c327
--- /dev/null
+++ b/assets/file-icons/mocha/folder_node_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_nuxt.svg b/assets/file-icons/mocha/folder_nuxt.svg
new file mode 100644
index 0000000..95d817b
--- /dev/null
+++ b/assets/file-icons/mocha/folder_nuxt.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_nuxt_open.svg b/assets/file-icons/mocha/folder_nuxt_open.svg
new file mode 100644
index 0000000..22520a6
--- /dev/null
+++ b/assets/file-icons/mocha/folder_nuxt_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_packages.svg b/assets/file-icons/mocha/folder_packages.svg
new file mode 100644
index 0000000..f7efb2e
--- /dev/null
+++ b/assets/file-icons/mocha/folder_packages.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_packages_open.svg b/assets/file-icons/mocha/folder_packages_open.svg
new file mode 100644
index 0000000..b080d76
--- /dev/null
+++ b/assets/file-icons/mocha/folder_packages_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_pesde.svg b/assets/file-icons/mocha/folder_pesde.svg
new file mode 100644
index 0000000..ec03300
--- /dev/null
+++ b/assets/file-icons/mocha/folder_pesde.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_pesde_open.svg b/assets/file-icons/mocha/folder_pesde_open.svg
new file mode 100644
index 0000000..99eb85a
--- /dev/null
+++ b/assets/file-icons/mocha/folder_pesde_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_plugins.svg b/assets/file-icons/mocha/folder_plugins.svg
new file mode 100644
index 0000000..8b0dc9b
--- /dev/null
+++ b/assets/file-icons/mocha/folder_plugins.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_plugins_open.svg b/assets/file-icons/mocha/folder_plugins_open.svg
new file mode 100644
index 0000000..2514b8e
--- /dev/null
+++ b/assets/file-icons/mocha/folder_plugins_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_pre-commit.svg b/assets/file-icons/mocha/folder_pre-commit.svg
new file mode 100644
index 0000000..8dbbe28
--- /dev/null
+++ b/assets/file-icons/mocha/folder_pre-commit.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/file-icons/mocha/folder_pre-commit_open.svg b/assets/file-icons/mocha/folder_pre-commit_open.svg
new file mode 100644
index 0000000..9acd745
--- /dev/null
+++ b/assets/file-icons/mocha/folder_pre-commit_open.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/file-icons/mocha/folder_prisma.svg b/assets/file-icons/mocha/folder_prisma.svg
new file mode 100644
index 0000000..e07667a
--- /dev/null
+++ b/assets/file-icons/mocha/folder_prisma.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_prisma_open.svg b/assets/file-icons/mocha/folder_prisma_open.svg
new file mode 100644
index 0000000..d5570cf
--- /dev/null
+++ b/assets/file-icons/mocha/folder_prisma_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_private.svg b/assets/file-icons/mocha/folder_private.svg
new file mode 100644
index 0000000..4f286ee
--- /dev/null
+++ b/assets/file-icons/mocha/folder_private.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/file-icons/mocha/folder_private_open.svg b/assets/file-icons/mocha/folder_private_open.svg
new file mode 100644
index 0000000..671e2cc
--- /dev/null
+++ b/assets/file-icons/mocha/folder_private_open.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/file-icons/mocha/folder_proto.svg b/assets/file-icons/mocha/folder_proto.svg
new file mode 100644
index 0000000..adb2865
--- /dev/null
+++ b/assets/file-icons/mocha/folder_proto.svg
@@ -0,0 +1,11 @@
+
diff --git a/assets/file-icons/mocha/folder_proto_open.svg b/assets/file-icons/mocha/folder_proto_open.svg
new file mode 100644
index 0000000..52f668b
--- /dev/null
+++ b/assets/file-icons/mocha/folder_proto_open.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/folder_public.svg b/assets/file-icons/mocha/folder_public.svg
new file mode 100644
index 0000000..ddcae09
--- /dev/null
+++ b/assets/file-icons/mocha/folder_public.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_public_open.svg b/assets/file-icons/mocha/folder_public_open.svg
new file mode 100644
index 0000000..08e99f9
--- /dev/null
+++ b/assets/file-icons/mocha/folder_public_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_queue.svg b/assets/file-icons/mocha/folder_queue.svg
new file mode 100644
index 0000000..f7a1de5
--- /dev/null
+++ b/assets/file-icons/mocha/folder_queue.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_queue_open.svg b/assets/file-icons/mocha/folder_queue_open.svg
new file mode 100644
index 0000000..875ca2e
--- /dev/null
+++ b/assets/file-icons/mocha/folder_queue_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_redux.svg b/assets/file-icons/mocha/folder_redux.svg
new file mode 100644
index 0000000..0f4af6d
--- /dev/null
+++ b/assets/file-icons/mocha/folder_redux.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_redux_open.svg b/assets/file-icons/mocha/folder_redux_open.svg
new file mode 100644
index 0000000..ae441ca
--- /dev/null
+++ b/assets/file-icons/mocha/folder_redux_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_renovate.svg b/assets/file-icons/mocha/folder_renovate.svg
new file mode 100644
index 0000000..069ca26
--- /dev/null
+++ b/assets/file-icons/mocha/folder_renovate.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/folder_renovate_open.svg b/assets/file-icons/mocha/folder_renovate_open.svg
new file mode 100644
index 0000000..03c68be
--- /dev/null
+++ b/assets/file-icons/mocha/folder_renovate_open.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/folder_roblox.svg b/assets/file-icons/mocha/folder_roblox.svg
new file mode 100644
index 0000000..d7ebfc9
--- /dev/null
+++ b/assets/file-icons/mocha/folder_roblox.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/folder_roblox_open.svg b/assets/file-icons/mocha/folder_roblox_open.svg
new file mode 100644
index 0000000..6b897e3
--- /dev/null
+++ b/assets/file-icons/mocha/folder_roblox_open.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/folder_routes.svg b/assets/file-icons/mocha/folder_routes.svg
new file mode 100644
index 0000000..80a6058
--- /dev/null
+++ b/assets/file-icons/mocha/folder_routes.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_routes_open.svg b/assets/file-icons/mocha/folder_routes_open.svg
new file mode 100644
index 0000000..118cd86
--- /dev/null
+++ b/assets/file-icons/mocha/folder_routes_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_sass.svg b/assets/file-icons/mocha/folder_sass.svg
new file mode 100644
index 0000000..7342a57
--- /dev/null
+++ b/assets/file-icons/mocha/folder_sass.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_sass_open.svg b/assets/file-icons/mocha/folder_sass_open.svg
new file mode 100644
index 0000000..324aed0
--- /dev/null
+++ b/assets/file-icons/mocha/folder_sass_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_scripts.svg b/assets/file-icons/mocha/folder_scripts.svg
new file mode 100644
index 0000000..6c09136
--- /dev/null
+++ b/assets/file-icons/mocha/folder_scripts.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_scripts_open.svg b/assets/file-icons/mocha/folder_scripts_open.svg
new file mode 100644
index 0000000..a2d392c
--- /dev/null
+++ b/assets/file-icons/mocha/folder_scripts_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_security.svg b/assets/file-icons/mocha/folder_security.svg
new file mode 100644
index 0000000..a7754e1
--- /dev/null
+++ b/assets/file-icons/mocha/folder_security.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/folder_security_open.svg b/assets/file-icons/mocha/folder_security_open.svg
new file mode 100644
index 0000000..1c2ab7c
--- /dev/null
+++ b/assets/file-icons/mocha/folder_security_open.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/folder_server.svg b/assets/file-icons/mocha/folder_server.svg
new file mode 100644
index 0000000..0d5815e
--- /dev/null
+++ b/assets/file-icons/mocha/folder_server.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_server_open.svg b/assets/file-icons/mocha/folder_server_open.svg
new file mode 100644
index 0000000..39d9b57
--- /dev/null
+++ b/assets/file-icons/mocha/folder_server_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_shared.svg b/assets/file-icons/mocha/folder_shared.svg
new file mode 100644
index 0000000..4bee5b4
--- /dev/null
+++ b/assets/file-icons/mocha/folder_shared.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/folder_shared_open.svg b/assets/file-icons/mocha/folder_shared_open.svg
new file mode 100644
index 0000000..5d51aa5
--- /dev/null
+++ b/assets/file-icons/mocha/folder_shared_open.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/folder_src.svg b/assets/file-icons/mocha/folder_src.svg
new file mode 100644
index 0000000..8158f13
--- /dev/null
+++ b/assets/file-icons/mocha/folder_src.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_src_open.svg b/assets/file-icons/mocha/folder_src_open.svg
new file mode 100644
index 0000000..1089b7f
--- /dev/null
+++ b/assets/file-icons/mocha/folder_src_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_storybook.svg b/assets/file-icons/mocha/folder_storybook.svg
new file mode 100644
index 0000000..f43004e
--- /dev/null
+++ b/assets/file-icons/mocha/folder_storybook.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_storybook_open.svg b/assets/file-icons/mocha/folder_storybook_open.svg
new file mode 100644
index 0000000..5d4f7a9
--- /dev/null
+++ b/assets/file-icons/mocha/folder_storybook_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_styles.svg b/assets/file-icons/mocha/folder_styles.svg
new file mode 100644
index 0000000..8c3425c
--- /dev/null
+++ b/assets/file-icons/mocha/folder_styles.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_styles_open.svg b/assets/file-icons/mocha/folder_styles_open.svg
new file mode 100644
index 0000000..04f19b6
--- /dev/null
+++ b/assets/file-icons/mocha/folder_styles_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_svg.svg b/assets/file-icons/mocha/folder_svg.svg
new file mode 100644
index 0000000..4573cc8
--- /dev/null
+++ b/assets/file-icons/mocha/folder_svg.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_svg_open.svg b/assets/file-icons/mocha/folder_svg_open.svg
new file mode 100644
index 0000000..ff76d22
--- /dev/null
+++ b/assets/file-icons/mocha/folder_svg_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_tauri.svg b/assets/file-icons/mocha/folder_tauri.svg
new file mode 100644
index 0000000..8d15663
--- /dev/null
+++ b/assets/file-icons/mocha/folder_tauri.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/folder_tauri_open.svg b/assets/file-icons/mocha/folder_tauri_open.svg
new file mode 100644
index 0000000..7f44f8d
--- /dev/null
+++ b/assets/file-icons/mocha/folder_tauri_open.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/folder_temp.svg b/assets/file-icons/mocha/folder_temp.svg
new file mode 100644
index 0000000..f13ecf9
--- /dev/null
+++ b/assets/file-icons/mocha/folder_temp.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_temp_open.svg b/assets/file-icons/mocha/folder_temp_open.svg
new file mode 100644
index 0000000..5fe464b
--- /dev/null
+++ b/assets/file-icons/mocha/folder_temp_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_templates.svg b/assets/file-icons/mocha/folder_templates.svg
new file mode 100644
index 0000000..6137c66
--- /dev/null
+++ b/assets/file-icons/mocha/folder_templates.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_templates_open.svg b/assets/file-icons/mocha/folder_templates_open.svg
new file mode 100644
index 0000000..d919448
--- /dev/null
+++ b/assets/file-icons/mocha/folder_templates_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_tests.svg b/assets/file-icons/mocha/folder_tests.svg
new file mode 100644
index 0000000..48955d7
--- /dev/null
+++ b/assets/file-icons/mocha/folder_tests.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_tests_open.svg b/assets/file-icons/mocha/folder_tests_open.svg
new file mode 100644
index 0000000..1dc6a20
--- /dev/null
+++ b/assets/file-icons/mocha/folder_tests_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_themes.svg b/assets/file-icons/mocha/folder_themes.svg
new file mode 100644
index 0000000..559519f
--- /dev/null
+++ b/assets/file-icons/mocha/folder_themes.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/folder_themes_open.svg b/assets/file-icons/mocha/folder_themes_open.svg
new file mode 100644
index 0000000..de32f53
--- /dev/null
+++ b/assets/file-icons/mocha/folder_themes_open.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/folder_turbo.svg b/assets/file-icons/mocha/folder_turbo.svg
new file mode 100644
index 0000000..99f99e5
--- /dev/null
+++ b/assets/file-icons/mocha/folder_turbo.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/folder_turbo_open.svg b/assets/file-icons/mocha/folder_turbo_open.svg
new file mode 100644
index 0000000..676b5a6
--- /dev/null
+++ b/assets/file-icons/mocha/folder_turbo_open.svg
@@ -0,0 +1,10 @@
+
diff --git a/assets/file-icons/mocha/folder_types.svg b/assets/file-icons/mocha/folder_types.svg
new file mode 100644
index 0000000..e7bfbcb
--- /dev/null
+++ b/assets/file-icons/mocha/folder_types.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_types_open.svg b/assets/file-icons/mocha/folder_types_open.svg
new file mode 100644
index 0000000..d4dde51
--- /dev/null
+++ b/assets/file-icons/mocha/folder_types_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_upload.svg b/assets/file-icons/mocha/folder_upload.svg
new file mode 100644
index 0000000..2708236
--- /dev/null
+++ b/assets/file-icons/mocha/folder_upload.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/folder_upload_open.svg b/assets/file-icons/mocha/folder_upload_open.svg
new file mode 100644
index 0000000..e6f83a8
--- /dev/null
+++ b/assets/file-icons/mocha/folder_upload_open.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/folder_utils.svg b/assets/file-icons/mocha/folder_utils.svg
new file mode 100644
index 0000000..e8ed965
--- /dev/null
+++ b/assets/file-icons/mocha/folder_utils.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_utils_open.svg b/assets/file-icons/mocha/folder_utils_open.svg
new file mode 100644
index 0000000..1b25bda
--- /dev/null
+++ b/assets/file-icons/mocha/folder_utils_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_vercel.svg b/assets/file-icons/mocha/folder_vercel.svg
new file mode 100644
index 0000000..ba80124
--- /dev/null
+++ b/assets/file-icons/mocha/folder_vercel.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_vercel_open.svg b/assets/file-icons/mocha/folder_vercel_open.svg
new file mode 100644
index 0000000..1e672eb
--- /dev/null
+++ b/assets/file-icons/mocha/folder_vercel_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_video.svg b/assets/file-icons/mocha/folder_video.svg
new file mode 100644
index 0000000..bf10921
--- /dev/null
+++ b/assets/file-icons/mocha/folder_video.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_video_open.svg b/assets/file-icons/mocha/folder_video_open.svg
new file mode 100644
index 0000000..7728a69
--- /dev/null
+++ b/assets/file-icons/mocha/folder_video_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_views.svg b/assets/file-icons/mocha/folder_views.svg
new file mode 100644
index 0000000..6930768
--- /dev/null
+++ b/assets/file-icons/mocha/folder_views.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_views_open.svg b/assets/file-icons/mocha/folder_views_open.svg
new file mode 100644
index 0000000..3b46e59
--- /dev/null
+++ b/assets/file-icons/mocha/folder_views_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_vscode.svg b/assets/file-icons/mocha/folder_vscode.svg
new file mode 100644
index 0000000..6ec465e
--- /dev/null
+++ b/assets/file-icons/mocha/folder_vscode.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_vscode_open.svg b/assets/file-icons/mocha/folder_vscode_open.svg
new file mode 100644
index 0000000..802df14
--- /dev/null
+++ b/assets/file-icons/mocha/folder_vscode_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_windows.svg b/assets/file-icons/mocha/folder_windows.svg
new file mode 100644
index 0000000..5222b27
--- /dev/null
+++ b/assets/file-icons/mocha/folder_windows.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/folder_windows_open.svg b/assets/file-icons/mocha/folder_windows_open.svg
new file mode 100644
index 0000000..0ee1b98
--- /dev/null
+++ b/assets/file-icons/mocha/folder_windows_open.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/folder_workflows.svg b/assets/file-icons/mocha/folder_workflows.svg
new file mode 100644
index 0000000..73639a6
--- /dev/null
+++ b/assets/file-icons/mocha/folder_workflows.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_workflows_open.svg b/assets/file-icons/mocha/folder_workflows_open.svg
new file mode 100644
index 0000000..cc3c48e
--- /dev/null
+++ b/assets/file-icons/mocha/folder_workflows_open.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/folder_wxt.svg b/assets/file-icons/mocha/folder_wxt.svg
new file mode 100644
index 0000000..27d4a9d
--- /dev/null
+++ b/assets/file-icons/mocha/folder_wxt.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/folder_wxt_open.svg b/assets/file-icons/mocha/folder_wxt_open.svg
new file mode 100644
index 0000000..308031f
--- /dev/null
+++ b/assets/file-icons/mocha/folder_wxt_open.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/folder_xcode.svg b/assets/file-icons/mocha/folder_xcode.svg
new file mode 100644
index 0000000..bf26db9
--- /dev/null
+++ b/assets/file-icons/mocha/folder_xcode.svg
@@ -0,0 +1,12 @@
+
diff --git a/assets/file-icons/mocha/folder_xcode_open.svg b/assets/file-icons/mocha/folder_xcode_open.svg
new file mode 100644
index 0000000..077496f
--- /dev/null
+++ b/assets/file-icons/mocha/folder_xcode_open.svg
@@ -0,0 +1,10 @@
+
diff --git a/assets/file-icons/mocha/folder_xmake.svg b/assets/file-icons/mocha/folder_xmake.svg
new file mode 100644
index 0000000..25f1060
--- /dev/null
+++ b/assets/file-icons/mocha/folder_xmake.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/folder_xmake_open.svg b/assets/file-icons/mocha/folder_xmake_open.svg
new file mode 100644
index 0000000..fbc2ad7
--- /dev/null
+++ b/assets/file-icons/mocha/folder_xmake_open.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/folder_yarn.svg b/assets/file-icons/mocha/folder_yarn.svg
new file mode 100644
index 0000000..46669c5
--- /dev/null
+++ b/assets/file-icons/mocha/folder_yarn.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/folder_yarn_open.svg b/assets/file-icons/mocha/folder_yarn_open.svg
new file mode 100644
index 0000000..855301b
--- /dev/null
+++ b/assets/file-icons/mocha/folder_yarn_open.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/font.svg b/assets/file-icons/mocha/font.svg
new file mode 100644
index 0000000..113c326
--- /dev/null
+++ b/assets/file-icons/mocha/font.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/foreman.svg b/assets/file-icons/mocha/foreman.svg
new file mode 100644
index 0000000..a879f0c
--- /dev/null
+++ b/assets/file-icons/mocha/foreman.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/fortran.svg b/assets/file-icons/mocha/fortran.svg
new file mode 100644
index 0000000..db8fbac
--- /dev/null
+++ b/assets/file-icons/mocha/fortran.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/fsharp.svg b/assets/file-icons/mocha/fsharp.svg
new file mode 100644
index 0000000..fc65a8c
--- /dev/null
+++ b/assets/file-icons/mocha/fsharp.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/fvm.svg b/assets/file-icons/mocha/fvm.svg
new file mode 100644
index 0000000..6a25f50
--- /dev/null
+++ b/assets/file-icons/mocha/fvm.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/gatsby.svg b/assets/file-icons/mocha/gatsby.svg
new file mode 100644
index 0000000..c05ceac
--- /dev/null
+++ b/assets/file-icons/mocha/gatsby.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/gcp.svg b/assets/file-icons/mocha/gcp.svg
new file mode 100644
index 0000000..961736e
--- /dev/null
+++ b/assets/file-icons/mocha/gcp.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/git-cliff.svg b/assets/file-icons/mocha/git-cliff.svg
new file mode 100644
index 0000000..8fbe9d2
--- /dev/null
+++ b/assets/file-icons/mocha/git-cliff.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/file-icons/mocha/git.svg b/assets/file-icons/mocha/git.svg
new file mode 100644
index 0000000..f66c6e5
--- /dev/null
+++ b/assets/file-icons/mocha/git.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/gitlab.svg b/assets/file-icons/mocha/gitlab.svg
new file mode 100644
index 0000000..c87c49d
--- /dev/null
+++ b/assets/file-icons/mocha/gitlab.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/gitpod.svg b/assets/file-icons/mocha/gitpod.svg
new file mode 100644
index 0000000..a40f114
--- /dev/null
+++ b/assets/file-icons/mocha/gitpod.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/gleam-config.svg b/assets/file-icons/mocha/gleam-config.svg
new file mode 100644
index 0000000..d69dd6c
--- /dev/null
+++ b/assets/file-icons/mocha/gleam-config.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/file-icons/mocha/gleam.svg b/assets/file-icons/mocha/gleam.svg
new file mode 100644
index 0000000..b3abf95
--- /dev/null
+++ b/assets/file-icons/mocha/gleam.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/go-mod.svg b/assets/file-icons/mocha/go-mod.svg
new file mode 100644
index 0000000..5cc22b6
--- /dev/null
+++ b/assets/file-icons/mocha/go-mod.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/go-template.svg b/assets/file-icons/mocha/go-template.svg
new file mode 100644
index 0000000..c4c0151
--- /dev/null
+++ b/assets/file-icons/mocha/go-template.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/go.svg b/assets/file-icons/mocha/go.svg
new file mode 100644
index 0000000..9c402b3
--- /dev/null
+++ b/assets/file-icons/mocha/go.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/godot-assets.svg b/assets/file-icons/mocha/godot-assets.svg
new file mode 100644
index 0000000..bba5ad0
--- /dev/null
+++ b/assets/file-icons/mocha/godot-assets.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/godot.svg b/assets/file-icons/mocha/godot.svg
new file mode 100644
index 0000000..2680cd3
--- /dev/null
+++ b/assets/file-icons/mocha/godot.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/gradle.svg b/assets/file-icons/mocha/gradle.svg
new file mode 100644
index 0000000..3aefed8
--- /dev/null
+++ b/assets/file-icons/mocha/gradle.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/graphql.svg b/assets/file-icons/mocha/graphql.svg
new file mode 100644
index 0000000..6425cd4
--- /dev/null
+++ b/assets/file-icons/mocha/graphql.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/groovy.svg b/assets/file-icons/mocha/groovy.svg
new file mode 100644
index 0000000..0d9bfe5
--- /dev/null
+++ b/assets/file-icons/mocha/groovy.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/gulp.svg b/assets/file-icons/mocha/gulp.svg
new file mode 100644
index 0000000..c7ac7ae
--- /dev/null
+++ b/assets/file-icons/mocha/gulp.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/hacking.svg b/assets/file-icons/mocha/hacking.svg
new file mode 100644
index 0000000..d60b98b
--- /dev/null
+++ b/assets/file-icons/mocha/hacking.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/haml.svg b/assets/file-icons/mocha/haml.svg
new file mode 100644
index 0000000..97985ee
--- /dev/null
+++ b/assets/file-icons/mocha/haml.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/handlebars.svg b/assets/file-icons/mocha/handlebars.svg
new file mode 100644
index 0000000..0d9007f
--- /dev/null
+++ b/assets/file-icons/mocha/handlebars.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/hardhat.svg b/assets/file-icons/mocha/hardhat.svg
new file mode 100644
index 0000000..b6976b7
--- /dev/null
+++ b/assets/file-icons/mocha/hardhat.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/hare.svg b/assets/file-icons/mocha/hare.svg
new file mode 100644
index 0000000..aeb6806
--- /dev/null
+++ b/assets/file-icons/mocha/hare.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/haskell.svg b/assets/file-icons/mocha/haskell.svg
new file mode 100644
index 0000000..26f16e9
--- /dev/null
+++ b/assets/file-icons/mocha/haskell.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/haxe.svg b/assets/file-icons/mocha/haxe.svg
new file mode 100644
index 0000000..77fe5e7
--- /dev/null
+++ b/assets/file-icons/mocha/haxe.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/helm.svg b/assets/file-icons/mocha/helm.svg
new file mode 100644
index 0000000..fd94529
--- /dev/null
+++ b/assets/file-icons/mocha/helm.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/heroku.svg b/assets/file-icons/mocha/heroku.svg
new file mode 100644
index 0000000..f57b93a
--- /dev/null
+++ b/assets/file-icons/mocha/heroku.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/histoire.svg b/assets/file-icons/mocha/histoire.svg
new file mode 100644
index 0000000..277f186
--- /dev/null
+++ b/assets/file-icons/mocha/histoire.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/html.svg b/assets/file-icons/mocha/html.svg
new file mode 100644
index 0000000..756a251
--- /dev/null
+++ b/assets/file-icons/mocha/html.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/http.svg b/assets/file-icons/mocha/http.svg
new file mode 100644
index 0000000..2395acb
--- /dev/null
+++ b/assets/file-icons/mocha/http.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/huff.svg b/assets/file-icons/mocha/huff.svg
new file mode 100644
index 0000000..e3d8bf9
--- /dev/null
+++ b/assets/file-icons/mocha/huff.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/hugo.svg b/assets/file-icons/mocha/hugo.svg
new file mode 100644
index 0000000..4e05c71
--- /dev/null
+++ b/assets/file-icons/mocha/hugo.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/humans.svg b/assets/file-icons/mocha/humans.svg
new file mode 100644
index 0000000..185ddf4
--- /dev/null
+++ b/assets/file-icons/mocha/humans.svg
@@ -0,0 +1,13 @@
+
diff --git a/assets/file-icons/mocha/husky.svg b/assets/file-icons/mocha/husky.svg
new file mode 100644
index 0000000..d3e46d3
--- /dev/null
+++ b/assets/file-icons/mocha/husky.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/image.svg b/assets/file-icons/mocha/image.svg
new file mode 100644
index 0000000..565e4ee
--- /dev/null
+++ b/assets/file-icons/mocha/image.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/ionic.svg b/assets/file-icons/mocha/ionic.svg
new file mode 100644
index 0000000..5a95179
--- /dev/null
+++ b/assets/file-icons/mocha/ionic.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/java-class.svg b/assets/file-icons/mocha/java-class.svg
new file mode 100644
index 0000000..759455c
--- /dev/null
+++ b/assets/file-icons/mocha/java-class.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/java-jar.svg b/assets/file-icons/mocha/java-jar.svg
new file mode 100644
index 0000000..8503fef
--- /dev/null
+++ b/assets/file-icons/mocha/java-jar.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/java.svg b/assets/file-icons/mocha/java.svg
new file mode 100644
index 0000000..2646818
--- /dev/null
+++ b/assets/file-icons/mocha/java.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/javascript-config.svg b/assets/file-icons/mocha/javascript-config.svg
new file mode 100644
index 0000000..0f54334
--- /dev/null
+++ b/assets/file-icons/mocha/javascript-config.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/javascript-map.svg b/assets/file-icons/mocha/javascript-map.svg
new file mode 100644
index 0000000..d841570
--- /dev/null
+++ b/assets/file-icons/mocha/javascript-map.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/javascript-react.svg b/assets/file-icons/mocha/javascript-react.svg
new file mode 100644
index 0000000..f350d82
--- /dev/null
+++ b/assets/file-icons/mocha/javascript-react.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/javascript-test.svg b/assets/file-icons/mocha/javascript-test.svg
new file mode 100644
index 0000000..3c6b5aa
--- /dev/null
+++ b/assets/file-icons/mocha/javascript-test.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/javascript.svg b/assets/file-icons/mocha/javascript.svg
new file mode 100644
index 0000000..8647aee
--- /dev/null
+++ b/assets/file-icons/mocha/javascript.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/jest.svg b/assets/file-icons/mocha/jest.svg
new file mode 100644
index 0000000..dab134c
--- /dev/null
+++ b/assets/file-icons/mocha/jest.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/jinja.svg b/assets/file-icons/mocha/jinja.svg
new file mode 100644
index 0000000..24a0f21
--- /dev/null
+++ b/assets/file-icons/mocha/jinja.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/json-schema.svg b/assets/file-icons/mocha/json-schema.svg
new file mode 100644
index 0000000..d3f48d9
--- /dev/null
+++ b/assets/file-icons/mocha/json-schema.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/json.svg b/assets/file-icons/mocha/json.svg
new file mode 100644
index 0000000..1b7b2bd
--- /dev/null
+++ b/assets/file-icons/mocha/json.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/juce.svg b/assets/file-icons/mocha/juce.svg
new file mode 100644
index 0000000..1fb832a
--- /dev/null
+++ b/assets/file-icons/mocha/juce.svg
@@ -0,0 +1,14 @@
+
diff --git a/assets/file-icons/mocha/jule.svg b/assets/file-icons/mocha/jule.svg
new file mode 100644
index 0000000..1a88eea
--- /dev/null
+++ b/assets/file-icons/mocha/jule.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/file-icons/mocha/julia.svg b/assets/file-icons/mocha/julia.svg
new file mode 100644
index 0000000..1782bac
--- /dev/null
+++ b/assets/file-icons/mocha/julia.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/jupyter.svg b/assets/file-icons/mocha/jupyter.svg
new file mode 100644
index 0000000..da82908
--- /dev/null
+++ b/assets/file-icons/mocha/jupyter.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/just.svg b/assets/file-icons/mocha/just.svg
new file mode 100644
index 0000000..5c9a05c
--- /dev/null
+++ b/assets/file-icons/mocha/just.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/file-icons/mocha/kdl.svg b/assets/file-icons/mocha/kdl.svg
new file mode 100644
index 0000000..f2b6ac3
--- /dev/null
+++ b/assets/file-icons/mocha/kdl.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/file-icons/mocha/key.svg b/assets/file-icons/mocha/key.svg
new file mode 100644
index 0000000..8802790
--- /dev/null
+++ b/assets/file-icons/mocha/key.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/knip.svg b/assets/file-icons/mocha/knip.svg
new file mode 100644
index 0000000..f76c9c0
--- /dev/null
+++ b/assets/file-icons/mocha/knip.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/kotlin.svg b/assets/file-icons/mocha/kotlin.svg
new file mode 100644
index 0000000..32c2d33
--- /dev/null
+++ b/assets/file-icons/mocha/kotlin.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/laravel.svg b/assets/file-icons/mocha/laravel.svg
new file mode 100644
index 0000000..0a499b6
--- /dev/null
+++ b/assets/file-icons/mocha/laravel.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/latex.svg b/assets/file-icons/mocha/latex.svg
new file mode 100644
index 0000000..180f9ab
--- /dev/null
+++ b/assets/file-icons/mocha/latex.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/latte.svg b/assets/file-icons/mocha/latte.svg
new file mode 100644
index 0000000..e4f6c76
--- /dev/null
+++ b/assets/file-icons/mocha/latte.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/lerna.svg b/assets/file-icons/mocha/lerna.svg
new file mode 100644
index 0000000..418e22f
--- /dev/null
+++ b/assets/file-icons/mocha/lerna.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/less.svg b/assets/file-icons/mocha/less.svg
new file mode 100644
index 0000000..ce504e2
--- /dev/null
+++ b/assets/file-icons/mocha/less.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/lib.svg b/assets/file-icons/mocha/lib.svg
new file mode 100644
index 0000000..18386ea
--- /dev/null
+++ b/assets/file-icons/mocha/lib.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/license.svg b/assets/file-icons/mocha/license.svg
new file mode 100644
index 0000000..08ad5bf
--- /dev/null
+++ b/assets/file-icons/mocha/license.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/lint-staged.svg b/assets/file-icons/mocha/lint-staged.svg
new file mode 100644
index 0000000..b7287db
--- /dev/null
+++ b/assets/file-icons/mocha/lint-staged.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/liquid.svg b/assets/file-icons/mocha/liquid.svg
new file mode 100644
index 0000000..8bbca16
--- /dev/null
+++ b/assets/file-icons/mocha/liquid.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/lisp.svg b/assets/file-icons/mocha/lisp.svg
new file mode 100644
index 0000000..06c1b7d
--- /dev/null
+++ b/assets/file-icons/mocha/lisp.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/lock.svg b/assets/file-icons/mocha/lock.svg
new file mode 100644
index 0000000..44ed745
--- /dev/null
+++ b/assets/file-icons/mocha/lock.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/log.svg b/assets/file-icons/mocha/log.svg
new file mode 100644
index 0000000..a5d03c5
--- /dev/null
+++ b/assets/file-icons/mocha/log.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/lua-check.svg b/assets/file-icons/mocha/lua-check.svg
new file mode 100644
index 0000000..53521c5
--- /dev/null
+++ b/assets/file-icons/mocha/lua-check.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/lua-client.svg b/assets/file-icons/mocha/lua-client.svg
new file mode 100644
index 0000000..3eee61b
--- /dev/null
+++ b/assets/file-icons/mocha/lua-client.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/lua-rocks.svg b/assets/file-icons/mocha/lua-rocks.svg
new file mode 100644
index 0000000..16abeac
--- /dev/null
+++ b/assets/file-icons/mocha/lua-rocks.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/lua-server.svg b/assets/file-icons/mocha/lua-server.svg
new file mode 100644
index 0000000..4d9f6b3
--- /dev/null
+++ b/assets/file-icons/mocha/lua-server.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/lua-test.svg b/assets/file-icons/mocha/lua-test.svg
new file mode 100644
index 0000000..4afe71b
--- /dev/null
+++ b/assets/file-icons/mocha/lua-test.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/lua.svg b/assets/file-icons/mocha/lua.svg
new file mode 100644
index 0000000..6912d71
--- /dev/null
+++ b/assets/file-icons/mocha/lua.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/luau-check.svg b/assets/file-icons/mocha/luau-check.svg
new file mode 100644
index 0000000..8c0d5b8
--- /dev/null
+++ b/assets/file-icons/mocha/luau-check.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/luau-client.svg b/assets/file-icons/mocha/luau-client.svg
new file mode 100644
index 0000000..64184b3
--- /dev/null
+++ b/assets/file-icons/mocha/luau-client.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/luau-config.svg b/assets/file-icons/mocha/luau-config.svg
new file mode 100644
index 0000000..f89caf3
--- /dev/null
+++ b/assets/file-icons/mocha/luau-config.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/luau-server.svg b/assets/file-icons/mocha/luau-server.svg
new file mode 100644
index 0000000..defe074
--- /dev/null
+++ b/assets/file-icons/mocha/luau-server.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/luau-test.svg b/assets/file-icons/mocha/luau-test.svg
new file mode 100644
index 0000000..644e16f
--- /dev/null
+++ b/assets/file-icons/mocha/luau-test.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/file-icons/mocha/luau.svg b/assets/file-icons/mocha/luau.svg
new file mode 100644
index 0000000..23c829d
--- /dev/null
+++ b/assets/file-icons/mocha/luau.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/macos.svg b/assets/file-icons/mocha/macos.svg
new file mode 100644
index 0000000..177937f
--- /dev/null
+++ b/assets/file-icons/mocha/macos.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/makefile.svg b/assets/file-icons/mocha/makefile.svg
new file mode 100644
index 0000000..7e1fc1c
--- /dev/null
+++ b/assets/file-icons/mocha/makefile.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/mantle.svg b/assets/file-icons/mocha/mantle.svg
new file mode 100644
index 0000000..3823bea
--- /dev/null
+++ b/assets/file-icons/mocha/mantle.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/markdown-mdx.svg b/assets/file-icons/mocha/markdown-mdx.svg
new file mode 100644
index 0000000..996d35f
--- /dev/null
+++ b/assets/file-icons/mocha/markdown-mdx.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/markdown.svg b/assets/file-icons/mocha/markdown.svg
new file mode 100644
index 0000000..5aef18a
--- /dev/null
+++ b/assets/file-icons/mocha/markdown.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/marko.svg b/assets/file-icons/mocha/marko.svg
new file mode 100644
index 0000000..f21ff1a
--- /dev/null
+++ b/assets/file-icons/mocha/marko.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/matlab.svg b/assets/file-icons/mocha/matlab.svg
new file mode 100644
index 0000000..75a6419
--- /dev/null
+++ b/assets/file-icons/mocha/matlab.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/mdbook.svg b/assets/file-icons/mocha/mdbook.svg
new file mode 100644
index 0000000..8754a36
--- /dev/null
+++ b/assets/file-icons/mocha/mdbook.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/mermaid.svg b/assets/file-icons/mocha/mermaid.svg
new file mode 100644
index 0000000..57ef9c6
--- /dev/null
+++ b/assets/file-icons/mocha/mermaid.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/meson.svg b/assets/file-icons/mocha/meson.svg
new file mode 100644
index 0000000..671121a
--- /dev/null
+++ b/assets/file-icons/mocha/meson.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/midi.svg b/assets/file-icons/mocha/midi.svg
new file mode 100644
index 0000000..06837ac
--- /dev/null
+++ b/assets/file-icons/mocha/midi.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/mjml.svg b/assets/file-icons/mocha/mjml.svg
new file mode 100644
index 0000000..f97ce3d
--- /dev/null
+++ b/assets/file-icons/mocha/mjml.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/modernizr.svg b/assets/file-icons/mocha/modernizr.svg
new file mode 100644
index 0000000..408d0f8
--- /dev/null
+++ b/assets/file-icons/mocha/modernizr.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/moonrepo.svg b/assets/file-icons/mocha/moonrepo.svg
new file mode 100644
index 0000000..623e8ba
--- /dev/null
+++ b/assets/file-icons/mocha/moonrepo.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/moonwave.svg b/assets/file-icons/mocha/moonwave.svg
new file mode 100644
index 0000000..631dd50
--- /dev/null
+++ b/assets/file-icons/mocha/moonwave.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/ms-excel.svg b/assets/file-icons/mocha/ms-excel.svg
new file mode 100644
index 0000000..a12948d
--- /dev/null
+++ b/assets/file-icons/mocha/ms-excel.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/ms-powerpoint.svg b/assets/file-icons/mocha/ms-powerpoint.svg
new file mode 100644
index 0000000..07d9c11
--- /dev/null
+++ b/assets/file-icons/mocha/ms-powerpoint.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/ms-word.svg b/assets/file-icons/mocha/ms-word.svg
new file mode 100644
index 0000000..5c86c17
--- /dev/null
+++ b/assets/file-icons/mocha/ms-word.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/msbuild.svg b/assets/file-icons/mocha/msbuild.svg
new file mode 100644
index 0000000..000379c
--- /dev/null
+++ b/assets/file-icons/mocha/msbuild.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/nativescript.svg b/assets/file-icons/mocha/nativescript.svg
new file mode 100644
index 0000000..c40d95c
--- /dev/null
+++ b/assets/file-icons/mocha/nativescript.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/nest.svg b/assets/file-icons/mocha/nest.svg
new file mode 100644
index 0000000..ae75484
--- /dev/null
+++ b/assets/file-icons/mocha/nest.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/netlify.svg b/assets/file-icons/mocha/netlify.svg
new file mode 100644
index 0000000..abafd67
--- /dev/null
+++ b/assets/file-icons/mocha/netlify.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/next.svg b/assets/file-icons/mocha/next.svg
new file mode 100644
index 0000000..f5ccf15
--- /dev/null
+++ b/assets/file-icons/mocha/next.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/nextflow.svg b/assets/file-icons/mocha/nextflow.svg
new file mode 100644
index 0000000..bb84a05
--- /dev/null
+++ b/assets/file-icons/mocha/nextflow.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/nginx.svg b/assets/file-icons/mocha/nginx.svg
new file mode 100644
index 0000000..652f443
--- /dev/null
+++ b/assets/file-icons/mocha/nginx.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/nim.svg b/assets/file-icons/mocha/nim.svg
new file mode 100644
index 0000000..576cdef
--- /dev/null
+++ b/assets/file-icons/mocha/nim.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/ninja.svg b/assets/file-icons/mocha/ninja.svg
new file mode 100644
index 0000000..e1a385e
--- /dev/null
+++ b/assets/file-icons/mocha/ninja.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/nix-lock.svg b/assets/file-icons/mocha/nix-lock.svg
new file mode 100644
index 0000000..805d76f
--- /dev/null
+++ b/assets/file-icons/mocha/nix-lock.svg
@@ -0,0 +1,11 @@
+
diff --git a/assets/file-icons/mocha/nix.svg b/assets/file-icons/mocha/nix.svg
new file mode 100644
index 0000000..373393f
--- /dev/null
+++ b/assets/file-icons/mocha/nix.svg
@@ -0,0 +1,10 @@
+
diff --git a/assets/file-icons/mocha/nodemon.svg b/assets/file-icons/mocha/nodemon.svg
new file mode 100644
index 0000000..8e5aeec
--- /dev/null
+++ b/assets/file-icons/mocha/nodemon.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/npm-ignore.svg b/assets/file-icons/mocha/npm-ignore.svg
new file mode 100644
index 0000000..ad21fe3
--- /dev/null
+++ b/assets/file-icons/mocha/npm-ignore.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/npm-lock.svg b/assets/file-icons/mocha/npm-lock.svg
new file mode 100644
index 0000000..9e13126
--- /dev/null
+++ b/assets/file-icons/mocha/npm-lock.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/npm.svg b/assets/file-icons/mocha/npm.svg
new file mode 100644
index 0000000..38e7b9c
--- /dev/null
+++ b/assets/file-icons/mocha/npm.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/nuget.svg b/assets/file-icons/mocha/nuget.svg
new file mode 100644
index 0000000..ec173d6
--- /dev/null
+++ b/assets/file-icons/mocha/nuget.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/nunjucks.svg b/assets/file-icons/mocha/nunjucks.svg
new file mode 100644
index 0000000..dfe5d20
--- /dev/null
+++ b/assets/file-icons/mocha/nunjucks.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/nuxt-ignore.svg b/assets/file-icons/mocha/nuxt-ignore.svg
new file mode 100644
index 0000000..6faf371
--- /dev/null
+++ b/assets/file-icons/mocha/nuxt-ignore.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/nuxt.svg b/assets/file-icons/mocha/nuxt.svg
new file mode 100644
index 0000000..0d1ef11
--- /dev/null
+++ b/assets/file-icons/mocha/nuxt.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/nx-ignore.svg b/assets/file-icons/mocha/nx-ignore.svg
new file mode 100644
index 0000000..da7c2c6
--- /dev/null
+++ b/assets/file-icons/mocha/nx-ignore.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/nx.svg b/assets/file-icons/mocha/nx.svg
new file mode 100644
index 0000000..6ae2fe5
--- /dev/null
+++ b/assets/file-icons/mocha/nx.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/ocaml.svg b/assets/file-icons/mocha/ocaml.svg
new file mode 100644
index 0000000..a670299
--- /dev/null
+++ b/assets/file-icons/mocha/ocaml.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/odin.svg b/assets/file-icons/mocha/odin.svg
new file mode 100644
index 0000000..4013e6c
--- /dev/null
+++ b/assets/file-icons/mocha/odin.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/opentofu.svg b/assets/file-icons/mocha/opentofu.svg
new file mode 100644
index 0000000..8cd0a06
--- /dev/null
+++ b/assets/file-icons/mocha/opentofu.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/org.svg b/assets/file-icons/mocha/org.svg
new file mode 100644
index 0000000..52d59dc
--- /dev/null
+++ b/assets/file-icons/mocha/org.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/package-json.svg b/assets/file-icons/mocha/package-json.svg
new file mode 100644
index 0000000..cd3328e
--- /dev/null
+++ b/assets/file-icons/mocha/package-json.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/panda-css.svg b/assets/file-icons/mocha/panda-css.svg
new file mode 100644
index 0000000..bee30fd
--- /dev/null
+++ b/assets/file-icons/mocha/panda-css.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/pdf.svg b/assets/file-icons/mocha/pdf.svg
new file mode 100644
index 0000000..c5c055e
--- /dev/null
+++ b/assets/file-icons/mocha/pdf.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/perl.svg b/assets/file-icons/mocha/perl.svg
new file mode 100644
index 0000000..d179805
--- /dev/null
+++ b/assets/file-icons/mocha/perl.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/pesde-lock.svg b/assets/file-icons/mocha/pesde-lock.svg
new file mode 100644
index 0000000..8a7bd9b
--- /dev/null
+++ b/assets/file-icons/mocha/pesde-lock.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/pesde.svg b/assets/file-icons/mocha/pesde.svg
new file mode 100644
index 0000000..5a0d973
--- /dev/null
+++ b/assets/file-icons/mocha/pesde.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/php.svg b/assets/file-icons/mocha/php.svg
new file mode 100644
index 0000000..a33275f
--- /dev/null
+++ b/assets/file-icons/mocha/php.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/phrase.svg b/assets/file-icons/mocha/phrase.svg
new file mode 100644
index 0000000..ca1bfa1
--- /dev/null
+++ b/assets/file-icons/mocha/phrase.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/phtml.svg b/assets/file-icons/mocha/phtml.svg
new file mode 100644
index 0000000..afaf4af
--- /dev/null
+++ b/assets/file-icons/mocha/phtml.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/pixi-lock.svg b/assets/file-icons/mocha/pixi-lock.svg
new file mode 100644
index 0000000..91f2229
--- /dev/null
+++ b/assets/file-icons/mocha/pixi-lock.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/pixi.svg b/assets/file-icons/mocha/pixi.svg
new file mode 100644
index 0000000..0685d9d
--- /dev/null
+++ b/assets/file-icons/mocha/pixi.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/plantuml.svg b/assets/file-icons/mocha/plantuml.svg
new file mode 100644
index 0000000..0f19c60
--- /dev/null
+++ b/assets/file-icons/mocha/plantuml.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/playwright.svg b/assets/file-icons/mocha/playwright.svg
new file mode 100644
index 0000000..594514d
--- /dev/null
+++ b/assets/file-icons/mocha/playwright.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/plop.svg b/assets/file-icons/mocha/plop.svg
new file mode 100644
index 0000000..bda4fc7
--- /dev/null
+++ b/assets/file-icons/mocha/plop.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/pnpm-lock.svg b/assets/file-icons/mocha/pnpm-lock.svg
new file mode 100644
index 0000000..1614ce1
--- /dev/null
+++ b/assets/file-icons/mocha/pnpm-lock.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/pnpm.svg b/assets/file-icons/mocha/pnpm.svg
new file mode 100644
index 0000000..5489e51
--- /dev/null
+++ b/assets/file-icons/mocha/pnpm.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/poetry-lock.svg b/assets/file-icons/mocha/poetry-lock.svg
new file mode 100644
index 0000000..7d2839e
--- /dev/null
+++ b/assets/file-icons/mocha/poetry-lock.svg
@@ -0,0 +1,13 @@
+
diff --git a/assets/file-icons/mocha/postcss.svg b/assets/file-icons/mocha/postcss.svg
new file mode 100644
index 0000000..2d29ddf
--- /dev/null
+++ b/assets/file-icons/mocha/postcss.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/powershell.svg b/assets/file-icons/mocha/powershell.svg
new file mode 100644
index 0000000..62f3b4a
--- /dev/null
+++ b/assets/file-icons/mocha/powershell.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/pre-commit.svg b/assets/file-icons/mocha/pre-commit.svg
new file mode 100644
index 0000000..a91c88d
--- /dev/null
+++ b/assets/file-icons/mocha/pre-commit.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/premake.svg b/assets/file-icons/mocha/premake.svg
new file mode 100644
index 0000000..d4e63b9
--- /dev/null
+++ b/assets/file-icons/mocha/premake.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/prettier-ignore.svg b/assets/file-icons/mocha/prettier-ignore.svg
new file mode 100644
index 0000000..b02d394
--- /dev/null
+++ b/assets/file-icons/mocha/prettier-ignore.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/prettier.svg b/assets/file-icons/mocha/prettier.svg
new file mode 100644
index 0000000..d986ddb
--- /dev/null
+++ b/assets/file-icons/mocha/prettier.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/prisma.svg b/assets/file-icons/mocha/prisma.svg
new file mode 100644
index 0000000..ba189ae
--- /dev/null
+++ b/assets/file-icons/mocha/prisma.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/prolog.svg b/assets/file-icons/mocha/prolog.svg
new file mode 100644
index 0000000..754536f
--- /dev/null
+++ b/assets/file-icons/mocha/prolog.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/properties.svg b/assets/file-icons/mocha/properties.svg
new file mode 100644
index 0000000..5d94cf2
--- /dev/null
+++ b/assets/file-icons/mocha/properties.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/proto.svg b/assets/file-icons/mocha/proto.svg
new file mode 100644
index 0000000..6ec677a
--- /dev/null
+++ b/assets/file-icons/mocha/proto.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/prototools.svg b/assets/file-icons/mocha/prototools.svg
new file mode 100644
index 0000000..1364097
--- /dev/null
+++ b/assets/file-icons/mocha/prototools.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/pug.svg b/assets/file-icons/mocha/pug.svg
new file mode 100644
index 0000000..1b381af
--- /dev/null
+++ b/assets/file-icons/mocha/pug.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/puppet.svg b/assets/file-icons/mocha/puppet.svg
new file mode 100644
index 0000000..abc1a74
--- /dev/null
+++ b/assets/file-icons/mocha/puppet.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/puppeteer.svg b/assets/file-icons/mocha/puppeteer.svg
new file mode 100644
index 0000000..bc9cfae
--- /dev/null
+++ b/assets/file-icons/mocha/puppeteer.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/file-icons/mocha/python-compiled.svg b/assets/file-icons/mocha/python-compiled.svg
new file mode 100644
index 0000000..c965571
--- /dev/null
+++ b/assets/file-icons/mocha/python-compiled.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/python-config.svg b/assets/file-icons/mocha/python-config.svg
new file mode 100644
index 0000000..f32a121
--- /dev/null
+++ b/assets/file-icons/mocha/python-config.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/file-icons/mocha/python.svg b/assets/file-icons/mocha/python.svg
new file mode 100644
index 0000000..c7100c0
--- /dev/null
+++ b/assets/file-icons/mocha/python.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/r.svg b/assets/file-icons/mocha/r.svg
new file mode 100644
index 0000000..7bab460
--- /dev/null
+++ b/assets/file-icons/mocha/r.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/racket.svg b/assets/file-icons/mocha/racket.svg
new file mode 100644
index 0000000..129d170
--- /dev/null
+++ b/assets/file-icons/mocha/racket.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/razor.svg b/assets/file-icons/mocha/razor.svg
new file mode 100644
index 0000000..4395fb1
--- /dev/null
+++ b/assets/file-icons/mocha/razor.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/rdata.svg b/assets/file-icons/mocha/rdata.svg
new file mode 100644
index 0000000..16006a3
--- /dev/null
+++ b/assets/file-icons/mocha/rdata.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/readme.svg b/assets/file-icons/mocha/readme.svg
new file mode 100644
index 0000000..6ef8c40
--- /dev/null
+++ b/assets/file-icons/mocha/readme.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/reason.svg b/assets/file-icons/mocha/reason.svg
new file mode 100644
index 0000000..9a1f77d
--- /dev/null
+++ b/assets/file-icons/mocha/reason.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/redwood.svg b/assets/file-icons/mocha/redwood.svg
new file mode 100644
index 0000000..1bd5df9
--- /dev/null
+++ b/assets/file-icons/mocha/redwood.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/release.svg b/assets/file-icons/mocha/release.svg
new file mode 100644
index 0000000..bc25a55
--- /dev/null
+++ b/assets/file-icons/mocha/release.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/remix.svg b/assets/file-icons/mocha/remix.svg
new file mode 100644
index 0000000..3690acd
--- /dev/null
+++ b/assets/file-icons/mocha/remix.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/renovate.svg b/assets/file-icons/mocha/renovate.svg
new file mode 100644
index 0000000..30a1fbe
--- /dev/null
+++ b/assets/file-icons/mocha/renovate.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/rescript.svg b/assets/file-icons/mocha/rescript.svg
new file mode 100644
index 0000000..e0609a7
--- /dev/null
+++ b/assets/file-icons/mocha/rescript.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/rmd.svg b/assets/file-icons/mocha/rmd.svg
new file mode 100644
index 0000000..5ef1813
--- /dev/null
+++ b/assets/file-icons/mocha/rmd.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/roblox.svg b/assets/file-icons/mocha/roblox.svg
new file mode 100644
index 0000000..37c4cb9
--- /dev/null
+++ b/assets/file-icons/mocha/roblox.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/robots.svg b/assets/file-icons/mocha/robots.svg
new file mode 100644
index 0000000..fcb9f7e
--- /dev/null
+++ b/assets/file-icons/mocha/robots.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/rocket.svg b/assets/file-icons/mocha/rocket.svg
new file mode 100644
index 0000000..31c1536
--- /dev/null
+++ b/assets/file-icons/mocha/rocket.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/rokit.svg b/assets/file-icons/mocha/rokit.svg
new file mode 100644
index 0000000..2003719
--- /dev/null
+++ b/assets/file-icons/mocha/rokit.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/rollup.svg b/assets/file-icons/mocha/rollup.svg
new file mode 100644
index 0000000..0135be5
--- /dev/null
+++ b/assets/file-icons/mocha/rollup.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/rproj.svg b/assets/file-icons/mocha/rproj.svg
new file mode 100644
index 0000000..48db29c
--- /dev/null
+++ b/assets/file-icons/mocha/rproj.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/file-icons/mocha/rsml.svg b/assets/file-icons/mocha/rsml.svg
new file mode 100644
index 0000000..0a2ee89
--- /dev/null
+++ b/assets/file-icons/mocha/rsml.svg
@@ -0,0 +1,10 @@
+
diff --git a/assets/file-icons/mocha/ruby-gem-lock.svg b/assets/file-icons/mocha/ruby-gem-lock.svg
new file mode 100644
index 0000000..11fb6ee
--- /dev/null
+++ b/assets/file-icons/mocha/ruby-gem-lock.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/ruby-gem.svg b/assets/file-icons/mocha/ruby-gem.svg
new file mode 100644
index 0000000..4c83742
--- /dev/null
+++ b/assets/file-icons/mocha/ruby-gem.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/ruby.svg b/assets/file-icons/mocha/ruby.svg
new file mode 100644
index 0000000..1718aec
--- /dev/null
+++ b/assets/file-icons/mocha/ruby.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/ruff.svg b/assets/file-icons/mocha/ruff.svg
new file mode 100644
index 0000000..7385f7f
--- /dev/null
+++ b/assets/file-icons/mocha/ruff.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/rust-config.svg b/assets/file-icons/mocha/rust-config.svg
new file mode 100644
index 0000000..8a1d4fc
--- /dev/null
+++ b/assets/file-icons/mocha/rust-config.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/rust.svg b/assets/file-icons/mocha/rust.svg
new file mode 100644
index 0000000..898f91c
--- /dev/null
+++ b/assets/file-icons/mocha/rust.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/salesforce.svg b/assets/file-icons/mocha/salesforce.svg
new file mode 100644
index 0000000..1e63b74
--- /dev/null
+++ b/assets/file-icons/mocha/salesforce.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/sass.svg b/assets/file-icons/mocha/sass.svg
new file mode 100644
index 0000000..314f7a8
--- /dev/null
+++ b/assets/file-icons/mocha/sass.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/scala.svg b/assets/file-icons/mocha/scala.svg
new file mode 100644
index 0000000..63e7a31
--- /dev/null
+++ b/assets/file-icons/mocha/scala.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/scheme.svg b/assets/file-icons/mocha/scheme.svg
new file mode 100644
index 0000000..34d47ff
--- /dev/null
+++ b/assets/file-icons/mocha/scheme.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/search.svg b/assets/file-icons/mocha/search.svg
new file mode 100644
index 0000000..6b0248b
--- /dev/null
+++ b/assets/file-icons/mocha/search.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/security.svg b/assets/file-icons/mocha/security.svg
new file mode 100644
index 0000000..e7a8da2
--- /dev/null
+++ b/assets/file-icons/mocha/security.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/semantic-release.svg b/assets/file-icons/mocha/semantic-release.svg
new file mode 100644
index 0000000..770bf53
--- /dev/null
+++ b/assets/file-icons/mocha/semantic-release.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/semgrep-ignore.svg b/assets/file-icons/mocha/semgrep-ignore.svg
new file mode 100644
index 0000000..6f4e602
--- /dev/null
+++ b/assets/file-icons/mocha/semgrep-ignore.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/semgrep.svg b/assets/file-icons/mocha/semgrep.svg
new file mode 100644
index 0000000..4cafb3e
--- /dev/null
+++ b/assets/file-icons/mocha/semgrep.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/sentry.svg b/assets/file-icons/mocha/sentry.svg
new file mode 100644
index 0000000..55ef7fb
--- /dev/null
+++ b/assets/file-icons/mocha/sentry.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/serverless.svg b/assets/file-icons/mocha/serverless.svg
new file mode 100644
index 0000000..b35dbad
--- /dev/null
+++ b/assets/file-icons/mocha/serverless.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/shader.svg b/assets/file-icons/mocha/shader.svg
new file mode 100644
index 0000000..5788293
--- /dev/null
+++ b/assets/file-icons/mocha/shader.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/sketch.svg b/assets/file-icons/mocha/sketch.svg
new file mode 100644
index 0000000..f480916
--- /dev/null
+++ b/assets/file-icons/mocha/sketch.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/slidesk.svg b/assets/file-icons/mocha/slidesk.svg
new file mode 100644
index 0000000..c6bfe80
--- /dev/null
+++ b/assets/file-icons/mocha/slidesk.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/snowpack.svg b/assets/file-icons/mocha/snowpack.svg
new file mode 100644
index 0000000..e113235
--- /dev/null
+++ b/assets/file-icons/mocha/snowpack.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/solidity.svg b/assets/file-icons/mocha/solidity.svg
new file mode 100644
index 0000000..468ab05
--- /dev/null
+++ b/assets/file-icons/mocha/solidity.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/sonar-cloud.svg b/assets/file-icons/mocha/sonar-cloud.svg
new file mode 100644
index 0000000..2c98e50
--- /dev/null
+++ b/assets/file-icons/mocha/sonar-cloud.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/spwn.svg b/assets/file-icons/mocha/spwn.svg
new file mode 100644
index 0000000..e4b2d80
--- /dev/null
+++ b/assets/file-icons/mocha/spwn.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/squirrel.svg b/assets/file-icons/mocha/squirrel.svg
new file mode 100644
index 0000000..059906f
--- /dev/null
+++ b/assets/file-icons/mocha/squirrel.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/stackblitz.svg b/assets/file-icons/mocha/stackblitz.svg
new file mode 100644
index 0000000..75c5751
--- /dev/null
+++ b/assets/file-icons/mocha/stackblitz.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/stata.svg b/assets/file-icons/mocha/stata.svg
new file mode 100644
index 0000000..dadfd45
--- /dev/null
+++ b/assets/file-icons/mocha/stata.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/stencil.svg b/assets/file-icons/mocha/stencil.svg
new file mode 100644
index 0000000..35033bf
--- /dev/null
+++ b/assets/file-icons/mocha/stencil.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/stitches.svg b/assets/file-icons/mocha/stitches.svg
new file mode 100644
index 0000000..b9f307b
--- /dev/null
+++ b/assets/file-icons/mocha/stitches.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/storybook-svelte.svg b/assets/file-icons/mocha/storybook-svelte.svg
new file mode 100644
index 0000000..dea0879
--- /dev/null
+++ b/assets/file-icons/mocha/storybook-svelte.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/storybook-vue.svg b/assets/file-icons/mocha/storybook-vue.svg
new file mode 100644
index 0000000..805ad49
--- /dev/null
+++ b/assets/file-icons/mocha/storybook-vue.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/storybook.svg b/assets/file-icons/mocha/storybook.svg
new file mode 100644
index 0000000..bbea935
--- /dev/null
+++ b/assets/file-icons/mocha/storybook.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/stylelint-ignore.svg b/assets/file-icons/mocha/stylelint-ignore.svg
new file mode 100644
index 0000000..e683f83
--- /dev/null
+++ b/assets/file-icons/mocha/stylelint-ignore.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/stylelint.svg b/assets/file-icons/mocha/stylelint.svg
new file mode 100644
index 0000000..d65ca64
--- /dev/null
+++ b/assets/file-icons/mocha/stylelint.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/stylua-ignore.svg b/assets/file-icons/mocha/stylua-ignore.svg
new file mode 100644
index 0000000..8201d50
--- /dev/null
+++ b/assets/file-icons/mocha/stylua-ignore.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/stylua.svg b/assets/file-icons/mocha/stylua.svg
new file mode 100644
index 0000000..2f75dfd
--- /dev/null
+++ b/assets/file-icons/mocha/stylua.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/sublime.svg b/assets/file-icons/mocha/sublime.svg
new file mode 100644
index 0000000..e7a8b10
--- /dev/null
+++ b/assets/file-icons/mocha/sublime.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/super-collider.svg b/assets/file-icons/mocha/super-collider.svg
new file mode 100644
index 0000000..9ea2839
--- /dev/null
+++ b/assets/file-icons/mocha/super-collider.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/svelte-config.svg b/assets/file-icons/mocha/svelte-config.svg
new file mode 100644
index 0000000..16169cd
--- /dev/null
+++ b/assets/file-icons/mocha/svelte-config.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/svelte.svg b/assets/file-icons/mocha/svelte.svg
new file mode 100644
index 0000000..0e2a54b
--- /dev/null
+++ b/assets/file-icons/mocha/svelte.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/svg.svg b/assets/file-icons/mocha/svg.svg
new file mode 100644
index 0000000..5d05596
--- /dev/null
+++ b/assets/file-icons/mocha/svg.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/swift.svg b/assets/file-icons/mocha/swift.svg
new file mode 100644
index 0000000..61a3e9d
--- /dev/null
+++ b/assets/file-icons/mocha/swift.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/swiftformat.svg b/assets/file-icons/mocha/swiftformat.svg
new file mode 100644
index 0000000..cc7665a
--- /dev/null
+++ b/assets/file-icons/mocha/swiftformat.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/tailwind.svg b/assets/file-icons/mocha/tailwind.svg
new file mode 100644
index 0000000..d3980d2
--- /dev/null
+++ b/assets/file-icons/mocha/tailwind.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/taskfile.svg b/assets/file-icons/mocha/taskfile.svg
new file mode 100644
index 0000000..e7bfc77
--- /dev/null
+++ b/assets/file-icons/mocha/taskfile.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/tauri-ignore.svg b/assets/file-icons/mocha/tauri-ignore.svg
new file mode 100644
index 0000000..71af2d1
--- /dev/null
+++ b/assets/file-icons/mocha/tauri-ignore.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/tauri.svg b/assets/file-icons/mocha/tauri.svg
new file mode 100644
index 0000000..1a00772
--- /dev/null
+++ b/assets/file-icons/mocha/tauri.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/terraform.svg b/assets/file-icons/mocha/terraform.svg
new file mode 100644
index 0000000..e9e082e
--- /dev/null
+++ b/assets/file-icons/mocha/terraform.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/text.svg b/assets/file-icons/mocha/text.svg
new file mode 100644
index 0000000..1c93214
--- /dev/null
+++ b/assets/file-icons/mocha/text.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/todo.svg b/assets/file-icons/mocha/todo.svg
new file mode 100644
index 0000000..1259312
--- /dev/null
+++ b/assets/file-icons/mocha/todo.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/toml.svg b/assets/file-icons/mocha/toml.svg
new file mode 100644
index 0000000..6253d35
--- /dev/null
+++ b/assets/file-icons/mocha/toml.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/turbo.svg b/assets/file-icons/mocha/turbo.svg
new file mode 100644
index 0000000..a167c4f
--- /dev/null
+++ b/assets/file-icons/mocha/turbo.svg
@@ -0,0 +1,10 @@
+
diff --git a/assets/file-icons/mocha/twig.svg b/assets/file-icons/mocha/twig.svg
new file mode 100644
index 0000000..a59f680
--- /dev/null
+++ b/assets/file-icons/mocha/twig.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/twine.svg b/assets/file-icons/mocha/twine.svg
new file mode 100644
index 0000000..0d9afb5
--- /dev/null
+++ b/assets/file-icons/mocha/twine.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/typescript-config.svg b/assets/file-icons/mocha/typescript-config.svg
new file mode 100644
index 0000000..58cee24
--- /dev/null
+++ b/assets/file-icons/mocha/typescript-config.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/typescript-def.svg b/assets/file-icons/mocha/typescript-def.svg
new file mode 100644
index 0000000..b817eae
--- /dev/null
+++ b/assets/file-icons/mocha/typescript-def.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/typescript-react.svg b/assets/file-icons/mocha/typescript-react.svg
new file mode 100644
index 0000000..d495144
--- /dev/null
+++ b/assets/file-icons/mocha/typescript-react.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/typescript-test.svg b/assets/file-icons/mocha/typescript-test.svg
new file mode 100644
index 0000000..f7b3f34
--- /dev/null
+++ b/assets/file-icons/mocha/typescript-test.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/typescript.svg b/assets/file-icons/mocha/typescript.svg
new file mode 100644
index 0000000..2ddb5d7
--- /dev/null
+++ b/assets/file-icons/mocha/typescript.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/typst.svg b/assets/file-icons/mocha/typst.svg
new file mode 100644
index 0000000..e03ac62
--- /dev/null
+++ b/assets/file-icons/mocha/typst.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/unity.svg b/assets/file-icons/mocha/unity.svg
new file mode 100644
index 0000000..f31fd7e
--- /dev/null
+++ b/assets/file-icons/mocha/unity.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/unocss.svg b/assets/file-icons/mocha/unocss.svg
new file mode 100644
index 0000000..61c29cf
--- /dev/null
+++ b/assets/file-icons/mocha/unocss.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/url.svg b/assets/file-icons/mocha/url.svg
new file mode 100644
index 0000000..2931009
--- /dev/null
+++ b/assets/file-icons/mocha/url.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/uv.svg b/assets/file-icons/mocha/uv.svg
new file mode 100644
index 0000000..f9ecd30
--- /dev/null
+++ b/assets/file-icons/mocha/uv.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/v.svg b/assets/file-icons/mocha/v.svg
new file mode 100644
index 0000000..9013e67
--- /dev/null
+++ b/assets/file-icons/mocha/v.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/vala.svg b/assets/file-icons/mocha/vala.svg
new file mode 100644
index 0000000..0f4eb4a
--- /dev/null
+++ b/assets/file-icons/mocha/vala.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/vanilla-extract.svg b/assets/file-icons/mocha/vanilla-extract.svg
new file mode 100644
index 0000000..4d5e7ba
--- /dev/null
+++ b/assets/file-icons/mocha/vanilla-extract.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/vapi.svg b/assets/file-icons/mocha/vapi.svg
new file mode 100644
index 0000000..d9180b4
--- /dev/null
+++ b/assets/file-icons/mocha/vapi.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/vento.svg b/assets/file-icons/mocha/vento.svg
new file mode 100644
index 0000000..b2861f2
--- /dev/null
+++ b/assets/file-icons/mocha/vento.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/file-icons/mocha/vercel-ignore.svg b/assets/file-icons/mocha/vercel-ignore.svg
new file mode 100644
index 0000000..0350c64
--- /dev/null
+++ b/assets/file-icons/mocha/vercel-ignore.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/vercel.svg b/assets/file-icons/mocha/vercel.svg
new file mode 100644
index 0000000..467e1ab
--- /dev/null
+++ b/assets/file-icons/mocha/vercel.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/verilog.svg b/assets/file-icons/mocha/verilog.svg
new file mode 100644
index 0000000..24a91de
--- /dev/null
+++ b/assets/file-icons/mocha/verilog.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/vhs.svg b/assets/file-icons/mocha/vhs.svg
new file mode 100644
index 0000000..306ae20
--- /dev/null
+++ b/assets/file-icons/mocha/vhs.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/video.svg b/assets/file-icons/mocha/video.svg
new file mode 100644
index 0000000..22a612c
--- /dev/null
+++ b/assets/file-icons/mocha/video.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/vim.svg b/assets/file-icons/mocha/vim.svg
new file mode 100644
index 0000000..3851098
--- /dev/null
+++ b/assets/file-icons/mocha/vim.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/visual-studio.svg b/assets/file-icons/mocha/visual-studio.svg
new file mode 100644
index 0000000..77b8966
--- /dev/null
+++ b/assets/file-icons/mocha/visual-studio.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/vital.svg b/assets/file-icons/mocha/vital.svg
new file mode 100644
index 0000000..d0e0973
--- /dev/null
+++ b/assets/file-icons/mocha/vital.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/vite.svg b/assets/file-icons/mocha/vite.svg
new file mode 100644
index 0000000..23f1c8e
--- /dev/null
+++ b/assets/file-icons/mocha/vite.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/vitest.svg b/assets/file-icons/mocha/vitest.svg
new file mode 100644
index 0000000..7576282
--- /dev/null
+++ b/assets/file-icons/mocha/vitest.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/vs-codium.svg b/assets/file-icons/mocha/vs-codium.svg
new file mode 100644
index 0000000..0e3d5f0
--- /dev/null
+++ b/assets/file-icons/mocha/vs-codium.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/vscode-ignore.svg b/assets/file-icons/mocha/vscode-ignore.svg
new file mode 100644
index 0000000..34e356f
--- /dev/null
+++ b/assets/file-icons/mocha/vscode-ignore.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/vscode.svg b/assets/file-icons/mocha/vscode.svg
new file mode 100644
index 0000000..b64cc1f
--- /dev/null
+++ b/assets/file-icons/mocha/vscode.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/vue-config.svg b/assets/file-icons/mocha/vue-config.svg
new file mode 100644
index 0000000..c7646c3
--- /dev/null
+++ b/assets/file-icons/mocha/vue-config.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/vue.svg b/assets/file-icons/mocha/vue.svg
new file mode 100644
index 0000000..4ce08c7
--- /dev/null
+++ b/assets/file-icons/mocha/vue.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/wally.svg b/assets/file-icons/mocha/wally.svg
new file mode 100644
index 0000000..0b90f5b
--- /dev/null
+++ b/assets/file-icons/mocha/wally.svg
@@ -0,0 +1,27 @@
+
diff --git a/assets/file-icons/mocha/web-assembly.svg b/assets/file-icons/mocha/web-assembly.svg
new file mode 100644
index 0000000..b13928f
--- /dev/null
+++ b/assets/file-icons/mocha/web-assembly.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/webpack.svg b/assets/file-icons/mocha/webpack.svg
new file mode 100644
index 0000000..957d049
--- /dev/null
+++ b/assets/file-icons/mocha/webpack.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/windi.svg b/assets/file-icons/mocha/windi.svg
new file mode 100644
index 0000000..261c276
--- /dev/null
+++ b/assets/file-icons/mocha/windi.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/workflow.svg b/assets/file-icons/mocha/workflow.svg
new file mode 100644
index 0000000..d8faf0a
--- /dev/null
+++ b/assets/file-icons/mocha/workflow.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/wrangler.svg b/assets/file-icons/mocha/wrangler.svg
new file mode 100644
index 0000000..2ea1a43
--- /dev/null
+++ b/assets/file-icons/mocha/wrangler.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/file-icons/mocha/wxt.svg b/assets/file-icons/mocha/wxt.svg
new file mode 100644
index 0000000..7951775
--- /dev/null
+++ b/assets/file-icons/mocha/wxt.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/xaml.svg b/assets/file-icons/mocha/xaml.svg
new file mode 100644
index 0000000..7134f09
--- /dev/null
+++ b/assets/file-icons/mocha/xaml.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/file-icons/mocha/xcode.svg b/assets/file-icons/mocha/xcode.svg
new file mode 100644
index 0000000..c93b7ec
--- /dev/null
+++ b/assets/file-icons/mocha/xcode.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/xmake.svg b/assets/file-icons/mocha/xmake.svg
new file mode 100644
index 0000000..36da79e
--- /dev/null
+++ b/assets/file-icons/mocha/xmake.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/xml.svg b/assets/file-icons/mocha/xml.svg
new file mode 100644
index 0000000..69044ec
--- /dev/null
+++ b/assets/file-icons/mocha/xml.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/yaml.svg b/assets/file-icons/mocha/yaml.svg
new file mode 100644
index 0000000..74a560e
--- /dev/null
+++ b/assets/file-icons/mocha/yaml.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/yarn-lock.svg b/assets/file-icons/mocha/yarn-lock.svg
new file mode 100644
index 0000000..ee9f6a0
--- /dev/null
+++ b/assets/file-icons/mocha/yarn-lock.svg
@@ -0,0 +1,7 @@
+
diff --git a/assets/file-icons/mocha/yarn.svg b/assets/file-icons/mocha/yarn.svg
new file mode 100644
index 0000000..01e14aa
--- /dev/null
+++ b/assets/file-icons/mocha/yarn.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/file-icons/mocha/zap.svg b/assets/file-icons/mocha/zap.svg
new file mode 100644
index 0000000..c8b58f8
--- /dev/null
+++ b/assets/file-icons/mocha/zap.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/zig.svg b/assets/file-icons/mocha/zig.svg
new file mode 100644
index 0000000..0f12463
--- /dev/null
+++ b/assets/file-icons/mocha/zig.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/file-icons/mocha/zip.svg b/assets/file-icons/mocha/zip.svg
new file mode 100644
index 0000000..efa0d71
--- /dev/null
+++ b/assets/file-icons/mocha/zip.svg
@@ -0,0 +1,3 @@
+
diff --git a/flake.nix b/flake.nix
index 1a78446..ffd941b 100644
--- a/flake.nix
+++ b/flake.nix
@@ -139,6 +139,13 @@
# Bundled font binaries: the whitespace / line-ending fixer hooks
# would corrupt these (they edit them as if they were text).
"\\.ttf$"
+ # Vendored Catppuccin file-type icon assets and the Rust lookup
+ # tables generated from them: third-party / machine-generated, so
+ # they are not ours to lint (codespell trips on icon names like
+ # the `ags` and `tese` file extensions).
+ "^assets/file-icons/"
+ "^frext/src/file_icon_table\\.rs$"
+ "^frext/src/file_icon_bytes\\.rs$"
];
baseModule = precommit.lib.mkBaseCheck { inherit system extraExcludes; };
diff --git a/frext/Cargo.toml b/frext/Cargo.toml
index 84192c9..a4070ae 100644
--- a/frext/Cargo.toml
+++ b/frext/Cargo.toml
@@ -16,6 +16,7 @@ categories.workspace = true
directories = { workspace = true }
eframe = { workspace = true }
egui = { workspace = true }
+egui_extras = { workspace = true }
env_logger = { workspace = true }
fontdb = { workspace = true }
log = { workspace = true }
diff --git a/frext/src/app.rs b/frext/src/app.rs
index 34e7a04..6e64b87 100644
--- a/frext/src/app.rs
+++ b/frext/src/app.rs
@@ -799,18 +799,30 @@ impl FrextApp {
.map_or_else(String::new, |n| n.to_string_lossy().into_owned());
let was_open = ws.is_expanded(&sub);
- // `default_open` seeds the header's state from the persisted
- // expanded set on first sight; thereafter egui owns the live
- // open/closed state and a header click toggles it. We mirror
- // each toggle back into the workspace via `expand_changes`.
- let response = egui::CollapsingHeader::new(name)
- .id_salt(&sub)
- .default_open(was_open)
- .show(ui, |ui| {
+ // Drive a `CollapsingState` directly (rather than the simpler
+ // `CollapsingHeader`) so the folder's type-specific icon can sit
+ // in the header next to its name. The persisted expanded set seeds
+ // the state on first sight; thereafter egui owns the live
+ // open/closed state and a header click toggles it, which we mirror
+ // back into the workspace via `expand_changes`.
+ let id = ui.make_persistent_id(&sub);
+ let state = egui::collapsing_header::CollapsingState::load_with_default_open(
+ ui.ctx(),
+ id,
+ was_open,
+ );
+ let is_open = state.is_open();
+
+ let (_toggle, header, _body) = state
+ .show_header(ui, |ui| {
+ Self::file_icon(ui, crate::file_icon::icon_for_dir(&name, is_open));
+ ui.label(name);
+ })
+ .body(|ui| {
Self::tree_dir(ui, ws, &sub, active_canonical, file_to_open, expand_changes);
});
- if response.header_response.clicked() {
+ if header.response.clicked() {
expand_changes.push((sub.clone(), !was_open));
}
}
@@ -824,11 +836,32 @@ impl FrextApp {
let is_active = active_canonical
.is_some_and(|active| file.canonicalize().ok().as_deref() == Some(active));
- if ui.selectable_label(is_active, name).clicked() {
+ let clicked = ui
+ .horizontal(|ui| {
+ Self::file_icon(ui, crate::file_icon::icon_for_file(&name));
+ ui.selectable_label(is_active, name).clicked()
+ })
+ .inner;
+ if clicked {
*file_to_open = Some(file);
}
}
}
+
+ /// Draw the file-type icon for `stem` inline, sized to the current text
+ /// row. A stem with no embedded artwork (which should not occur for stems
+ /// produced by [`crate::file_icon`]) simply renders nothing, leaving the
+ /// row icon-less rather than failing.
+ fn file_icon(ui: &mut egui::Ui, stem: &'static str) {
+ let size = ui.text_style_height(&egui::TextStyle::Body);
+ if let Some(source) = crate::file_icon::image_source(stem) {
+ ui.add(
+ egui::Image::new(source)
+ .fit_to_exact_size(egui::vec2(size, size))
+ .maintain_aspect_ratio(true),
+ );
+ }
+ }
}
impl eframe::App for FrextApp {
diff --git a/frext/src/file_icon.rs b/frext/src/file_icon.rs
new file mode 100644
index 0000000..b3c7e01
--- /dev/null
+++ b/frext/src/file_icon.rs
@@ -0,0 +1,273 @@
+//! File-type icons for the sidebar file tree.
+//!
+//! The icon artwork is the Catppuccin Mocha flavour of the
+//! [`catppuccin/zed-icons`](https://github.com/catppuccin/zed-icons) set,
+//! vendored under `assets/file-icons/mocha/` and embedded at compile time. The
+//! lookup tables (`file_icon_table`) and the embedded bytes
+//! (`file_icon_bytes`) are generated from the upstream icon-theme manifest; the
+//! logic that consumes them lives here so it stays testable.
+//!
+//! Resolution mirrors the upstream icon theme: a file's full name is matched
+//! against the stem table first (so `Cargo.toml` gets the cargo icon rather
+//! than the generic TOML one), then its trailing dotted segments are matched
+//! against the suffix table longest-first (so `app.component.ts` prefers a
+//! `component.ts` rule over a bare `ts` rule). Folders are matched by their
+//! lowercased name against the named-directory table, falling back to the
+//! generic open/closed folder icons.
+
+use crate::{file_icon_bytes::ICON_BYTES, file_icon_table};
+
+/// The SVG stem of the icon for a file named `name`.
+///
+/// `name` is the file name only (no directory component). The returned value
+/// is a key into [`icon_bytes`]; it is never empty and always resolves to an
+/// embedded icon.
+#[must_use]
+pub fn icon_for_file(name: &str) -> &'static str {
+ // Full-name rules win (e.g. `README.md`, `Makefile`, `Dockerfile`).
+ if let Some(stem) = lookup(file_icon_table::FILE_STEMS, name) {
+ return stem;
+ }
+
+ // Then suffix rules, matched longest trailing-dotted-segment first so a
+ // multi-part suffix beats a single extension.
+ for candidate in suffix_candidates(name) {
+ if let Some(stem) = lookup_suffix(candidate) {
+ return stem;
+ }
+ }
+
+ file_icon_table::DEFAULT_FILE
+}
+
+/// The SVG stem of the icon for a directory named `name`.
+///
+/// `expanded` selects the open or closed variant. Folder names are matched
+/// case-insensitively against the named-directory table.
+#[must_use]
+pub fn icon_for_dir(name: &str, expanded: bool) -> &'static str {
+ let lower = name.to_lowercase();
+ for &(folder, collapsed, opened) in file_icon_table::NAMED_DIRS {
+ if folder == lower {
+ return if expanded { opened } else { collapsed };
+ }
+ }
+
+ if expanded {
+ file_icon_table::DEFAULT_DIR_EXPANDED
+ } else {
+ file_icon_table::DEFAULT_DIR_COLLAPSED
+ }
+}
+
+/// The embedded SVG bytes for an icon `stem`, or `None` if no such icon is
+/// bundled (which should not happen for stems returned by [`icon_for_file`] or
+/// [`icon_for_dir`], since every referenced icon is vendored).
+#[must_use]
+pub fn icon_bytes(stem: &str) -> Option<&'static [u8]> {
+ ICON_BYTES
+ .binary_search_by(|&(key, _)| key.cmp(stem))
+ .ok()
+ .map(|index| ICON_BYTES[index].1)
+}
+
+/// An [`egui::ImageSource`] for the icon `stem`, ready to hand to
+/// [`egui::Image::new`].
+///
+/// The `uri` is stable per stem so egui's image cache reuses a single rendered
+/// texture across frames and rows. Returns `None` when the stem is not bundled.
+#[must_use]
+pub fn image_source(stem: &'static str) -> Option> {
+ let bytes = icon_bytes(stem)?;
+ Some(egui::ImageSource::Bytes {
+ // The `.svg` extension routes the bytes to egui_extras' SVG loader,
+ // and the `frext-file-icon://` scheme keeps these URIs from colliding
+ // with any other image source in the app.
+ uri: stem_uri(stem).into(),
+ bytes: egui::load::Bytes::Static(bytes),
+ })
+}
+
+/// The cache URI for an icon `stem`. Pure and deterministic so it can be tested
+/// without an egui context.
+#[must_use]
+fn stem_uri(stem: &str) -> String {
+ format!("frext-file-icon://{stem}.svg")
+}
+
+/// Look up `key` in a sorted `(key, value)` table by binary search.
+fn lookup(table: &[(&str, &'static str)], key: &str) -> Option<&'static str> {
+ table
+ .binary_search_by(|&(table_key, _)| table_key.cmp(key))
+ .ok()
+ .map(|index| table[index].1)
+}
+
+/// Look up a suffix candidate, trying an exact (case-sensitive) match first —
+/// the upstream table carries a handful of case-sensitive keys such as
+/// `Dockerfile` and `Rproj` — then a lowercased match for the common case.
+fn lookup_suffix(candidate: &str) -> Option<&'static str> {
+ if let Some(stem) = lookup(file_icon_table::FILE_SUFFIXES, candidate) {
+ return Some(stem);
+ }
+ let lower = candidate.to_lowercase();
+ if lower != candidate {
+ return lookup(file_icon_table::FILE_SUFFIXES, &lower);
+ }
+ None
+}
+
+/// The trailing dotted-segment candidates of `name`, longest first.
+///
+/// `app.component.ts` yields `app.component.ts`, `component.ts`, then `ts`. A
+/// leading-dot dotfile such as `.gitignore` yields `gitignore` (the upstream
+/// suffix keys are stored without the leading dot for that style of match,
+/// while full dotfile names like `.alexrc` are caught by the stem table).
+fn suffix_candidates(name: &str) -> impl Iterator- {
+ // Byte offsets of each '.' in the name, ascending.
+ let dots: Vec = name
+ .char_indices()
+ .filter(|&(_, c)| c == '.')
+ .map(|(i, _)| i)
+ .collect();
+
+ dots.into_iter().map(move |dot| {
+ // Skip the dot itself so `foo.ts` yields the candidate `ts`.
+ &name[dot + 1..]
+ })
+}
+
+#[cfg(test)]
+mod tests {
+ // `unwrap` is acceptable in test code: a panic on an unexpected `None`
+ // is exactly the failure signal we want from a test.
+ #![allow(clippy::unwrap_used)]
+
+ use super::*;
+
+ #[test]
+ fn every_referenced_icon_is_embedded() {
+ // The default stems, plus every stem named by the lookup tables, must
+ // resolve to embedded bytes — otherwise a real file would render with
+ // a missing icon.
+ for stem in [
+ file_icon_table::DEFAULT_FILE,
+ file_icon_table::DEFAULT_DIR_COLLAPSED,
+ file_icon_table::DEFAULT_DIR_EXPANDED,
+ ] {
+ assert!(icon_bytes(stem).is_some(), "missing default icon: {stem}");
+ }
+ for &(_, stem) in file_icon_table::FILE_STEMS {
+ assert!(icon_bytes(stem).is_some(), "missing stem icon: {stem}");
+ }
+ for &(_, stem) in file_icon_table::FILE_SUFFIXES {
+ assert!(icon_bytes(stem).is_some(), "missing suffix icon: {stem}");
+ }
+ for &(_, collapsed, expanded) in file_icon_table::NAMED_DIRS {
+ assert!(
+ icon_bytes(collapsed).is_some(),
+ "missing dir icon: {collapsed}"
+ );
+ assert!(
+ icon_bytes(expanded).is_some(),
+ "missing dir icon: {expanded}"
+ );
+ }
+ }
+
+ #[test]
+ fn embed_table_is_sorted_for_binary_search() {
+ assert!(
+ ICON_BYTES.windows(2).all(|w| w[0].0 < w[1].0),
+ "ICON_BYTES must be sorted by stem"
+ );
+ }
+
+ #[test]
+ fn lookup_tables_are_sorted_for_binary_search() {
+ assert!(
+ file_icon_table::FILE_STEMS
+ .windows(2)
+ .all(|w| w[0].0 < w[1].0),
+ "FILE_STEMS must be sorted by key"
+ );
+ assert!(
+ file_icon_table::FILE_SUFFIXES
+ .windows(2)
+ .all(|w| w[0].0 < w[1].0),
+ "FILE_SUFFIXES must be sorted by key"
+ );
+ }
+
+ #[test]
+ fn unknown_file_falls_back_to_the_generic_icon() {
+ assert_eq!(
+ icon_for_file("mystery.unheardofextension"),
+ file_icon_table::DEFAULT_FILE
+ );
+ assert_eq!(
+ icon_for_file("no_extension_at_all"),
+ file_icon_table::DEFAULT_FILE
+ );
+ }
+
+ #[test]
+ fn rust_source_gets_the_rust_icon() {
+ // `rs` is a stable suffix rule in the upstream set.
+ assert_eq!(icon_for_file("main.rs"), "rust");
+ }
+
+ #[test]
+ fn full_name_rules_beat_suffix_rules() {
+ // `Cargo.toml` resolves to the cargo icon via the stem table, not the
+ // generic TOML icon its `toml` suffix would otherwise select.
+ let by_name = icon_for_file("Cargo.toml");
+ let by_suffix = lookup_suffix("toml").unwrap();
+ assert_ne!(
+ by_name, by_suffix,
+ "Cargo.toml should not resolve to the generic toml icon"
+ );
+ }
+
+ #[test]
+ fn longer_suffixes_win_over_shorter_ones() {
+ // `app.component.ts` should not silently resolve to the same icon as a
+ // bare `.ts` file when a `component.ts` rule exists. We assert the
+ // candidate ordering directly so the test does not depend on which
+ // specific framework rules upstream ships.
+ let candidates: Vec<&str> = suffix_candidates("app.component.ts").collect();
+ assert_eq!(candidates, vec!["component.ts", "ts"]);
+ }
+
+ #[test]
+ fn suffix_candidates_handles_dotfiles_and_plain_names() {
+ assert_eq!(
+ suffix_candidates(".gitignore").collect::>(),
+ vec!["gitignore"]
+ );
+ assert!(suffix_candidates("plain").next().is_none());
+ }
+
+ #[test]
+ fn directories_use_open_and_closed_variants() {
+ let closed = icon_for_dir("some_unknown_folder", false);
+ let open = icon_for_dir("some_unknown_folder", true);
+ assert_eq!(closed, file_icon_table::DEFAULT_DIR_COLLAPSED);
+ assert_eq!(open, file_icon_table::DEFAULT_DIR_EXPANDED);
+ assert_ne!(closed, open);
+ }
+
+ #[test]
+ fn named_directories_are_matched_case_insensitively() {
+ // `.github` is a named directory in the upstream set; the lookup must
+ // not depend on the exact case the user has on disk.
+ let lower = icon_for_dir(".github", false);
+ let upper = icon_for_dir(".GITHUB", false);
+ assert_eq!(lower, upper);
+ }
+
+ #[test]
+ fn stem_uri_is_stable_and_svg_suffixed() {
+ assert_eq!(stem_uri("rust"), "frext-file-icon://rust.svg");
+ }
+}
diff --git a/frext/src/file_icon_bytes.rs b/frext/src/file_icon_bytes.rs
new file mode 100644
index 0000000..16f138a
--- /dev/null
+++ b/frext/src/file_icon_bytes.rs
@@ -0,0 +1,2475 @@
+//! Generated embed table: SVG stem to compiled-in bytes for the
+//! Catppuccin Mocha file-icon set. Generated; do not edit by hand.
+
+/// Every vendored icon, as `(stem, svg_bytes)`, sorted by stem so a
+/// binary search can resolve a stem to its bytes.
+pub const ICON_BYTES: &[(&str, &[u8])] = &[
+ ("3d", include_bytes!("../../assets/file-icons/mocha/3d.svg")),
+ (
+ "_file",
+ include_bytes!("../../assets/file-icons/mocha/_file.svg"),
+ ),
+ (
+ "_folder",
+ include_bytes!("../../assets/file-icons/mocha/_folder.svg"),
+ ),
+ (
+ "_folder_open",
+ include_bytes!("../../assets/file-icons/mocha/_folder_open.svg"),
+ ),
+ (
+ "adobe-ae",
+ include_bytes!("../../assets/file-icons/mocha/adobe-ae.svg"),
+ ),
+ (
+ "adobe-ai",
+ include_bytes!("../../assets/file-icons/mocha/adobe-ai.svg"),
+ ),
+ (
+ "adobe-id",
+ include_bytes!("../../assets/file-icons/mocha/adobe-id.svg"),
+ ),
+ (
+ "adobe-ps",
+ include_bytes!("../../assets/file-icons/mocha/adobe-ps.svg"),
+ ),
+ (
+ "adobe-xd",
+ include_bytes!("../../assets/file-icons/mocha/adobe-xd.svg"),
+ ),
+ (
+ "adonis",
+ include_bytes!("../../assets/file-icons/mocha/adonis.svg"),
+ ),
+ (
+ "alex",
+ include_bytes!("../../assets/file-icons/mocha/alex.svg"),
+ ),
+ (
+ "amber",
+ include_bytes!("../../assets/file-icons/mocha/amber.svg"),
+ ),
+ (
+ "android",
+ include_bytes!("../../assets/file-icons/mocha/android.svg"),
+ ),
+ (
+ "angular",
+ include_bytes!("../../assets/file-icons/mocha/angular.svg"),
+ ),
+ (
+ "ansible-lint",
+ include_bytes!("../../assets/file-icons/mocha/ansible-lint.svg"),
+ ),
+ (
+ "antlr",
+ include_bytes!("../../assets/file-icons/mocha/antlr.svg"),
+ ),
+ (
+ "apache",
+ include_bytes!("../../assets/file-icons/mocha/apache.svg"),
+ ),
+ (
+ "api-blueprint",
+ include_bytes!("../../assets/file-icons/mocha/api-blueprint.svg"),
+ ),
+ (
+ "apollo",
+ include_bytes!("../../assets/file-icons/mocha/apollo.svg"),
+ ),
+ (
+ "apple",
+ include_bytes!("../../assets/file-icons/mocha/apple.svg"),
+ ),
+ (
+ "arduino",
+ include_bytes!("../../assets/file-icons/mocha/arduino.svg"),
+ ),
+ (
+ "asciidoc",
+ include_bytes!("../../assets/file-icons/mocha/asciidoc.svg"),
+ ),
+ (
+ "assembly",
+ include_bytes!("../../assets/file-icons/mocha/assembly.svg"),
+ ),
+ (
+ "astro",
+ include_bytes!("../../assets/file-icons/mocha/astro.svg"),
+ ),
+ (
+ "astro-config",
+ include_bytes!("../../assets/file-icons/mocha/astro-config.svg"),
+ ),
+ (
+ "audio",
+ include_bytes!("../../assets/file-icons/mocha/audio.svg"),
+ ),
+ (
+ "autohotkey",
+ include_bytes!("../../assets/file-icons/mocha/autohotkey.svg"),
+ ),
+ (
+ "azure-pipelines",
+ include_bytes!("../../assets/file-icons/mocha/azure-pipelines.svg"),
+ ),
+ (
+ "babel",
+ include_bytes!("../../assets/file-icons/mocha/babel.svg"),
+ ),
+ (
+ "bash",
+ include_bytes!("../../assets/file-icons/mocha/bash.svg"),
+ ),
+ (
+ "batch",
+ include_bytes!("../../assets/file-icons/mocha/batch.svg"),
+ ),
+ (
+ "bazel",
+ include_bytes!("../../assets/file-icons/mocha/bazel.svg"),
+ ),
+ (
+ "benchmark",
+ include_bytes!("../../assets/file-icons/mocha/benchmark.svg"),
+ ),
+ (
+ "bicep",
+ include_bytes!("../../assets/file-icons/mocha/bicep.svg"),
+ ),
+ (
+ "binary",
+ include_bytes!("../../assets/file-icons/mocha/binary.svg"),
+ ),
+ (
+ "biome",
+ include_bytes!("../../assets/file-icons/mocha/biome.svg"),
+ ),
+ (
+ "bitbucket",
+ include_bytes!("../../assets/file-icons/mocha/bitbucket.svg"),
+ ),
+ (
+ "blink",
+ include_bytes!("../../assets/file-icons/mocha/blink.svg"),
+ ),
+ (
+ "blitz",
+ include_bytes!("../../assets/file-icons/mocha/blitz.svg"),
+ ),
+ (
+ "bower",
+ include_bytes!("../../assets/file-icons/mocha/bower.svg"),
+ ),
+ (
+ "browserslist",
+ include_bytes!("../../assets/file-icons/mocha/browserslist.svg"),
+ ),
+ (
+ "bun",
+ include_bytes!("../../assets/file-icons/mocha/bun.svg"),
+ ),
+ (
+ "bun-lock",
+ include_bytes!("../../assets/file-icons/mocha/bun-lock.svg"),
+ ),
+ ("c", include_bytes!("../../assets/file-icons/mocha/c.svg")),
+ (
+ "c-header",
+ include_bytes!("../../assets/file-icons/mocha/c-header.svg"),
+ ),
+ (
+ "cabal",
+ include_bytes!("../../assets/file-icons/mocha/cabal.svg"),
+ ),
+ (
+ "caddy",
+ include_bytes!("../../assets/file-icons/mocha/caddy.svg"),
+ ),
+ (
+ "capacitor",
+ include_bytes!("../../assets/file-icons/mocha/capacitor.svg"),
+ ),
+ (
+ "cargo",
+ include_bytes!("../../assets/file-icons/mocha/cargo.svg"),
+ ),
+ (
+ "cargo-lock",
+ include_bytes!("../../assets/file-icons/mocha/cargo-lock.svg"),
+ ),
+ (
+ "certificate",
+ include_bytes!("../../assets/file-icons/mocha/certificate.svg"),
+ ),
+ (
+ "changelog",
+ include_bytes!("../../assets/file-icons/mocha/changelog.svg"),
+ ),
+ (
+ "circle-ci",
+ include_bytes!("../../assets/file-icons/mocha/circle-ci.svg"),
+ ),
+ (
+ "clojure",
+ include_bytes!("../../assets/file-icons/mocha/clojure.svg"),
+ ),
+ (
+ "cmake",
+ include_bytes!("../../assets/file-icons/mocha/cmake.svg"),
+ ),
+ (
+ "cobol",
+ include_bytes!("../../assets/file-icons/mocha/cobol.svg"),
+ ),
+ (
+ "code-climate",
+ include_bytes!("../../assets/file-icons/mocha/code-climate.svg"),
+ ),
+ (
+ "code-of-conduct",
+ include_bytes!("../../assets/file-icons/mocha/code-of-conduct.svg"),
+ ),
+ (
+ "codeowners",
+ include_bytes!("../../assets/file-icons/mocha/codeowners.svg"),
+ ),
+ (
+ "coffeescript",
+ include_bytes!("../../assets/file-icons/mocha/coffeescript.svg"),
+ ),
+ (
+ "commitlint",
+ include_bytes!("../../assets/file-icons/mocha/commitlint.svg"),
+ ),
+ (
+ "config",
+ include_bytes!("../../assets/file-icons/mocha/config.svg"),
+ ),
+ (
+ "contributing",
+ include_bytes!("../../assets/file-icons/mocha/contributing.svg"),
+ ),
+ (
+ "cpp",
+ include_bytes!("../../assets/file-icons/mocha/cpp.svg"),
+ ),
+ (
+ "cpp-header",
+ include_bytes!("../../assets/file-icons/mocha/cpp-header.svg"),
+ ),
+ (
+ "crystal",
+ include_bytes!("../../assets/file-icons/mocha/crystal.svg"),
+ ),
+ (
+ "csharp",
+ include_bytes!("../../assets/file-icons/mocha/csharp.svg"),
+ ),
+ (
+ "cspell",
+ include_bytes!("../../assets/file-icons/mocha/cspell.svg"),
+ ),
+ (
+ "css",
+ include_bytes!("../../assets/file-icons/mocha/css.svg"),
+ ),
+ (
+ "css-map",
+ include_bytes!("../../assets/file-icons/mocha/css-map.svg"),
+ ),
+ (
+ "csv",
+ include_bytes!("../../assets/file-icons/mocha/csv.svg"),
+ ),
+ (
+ "cucumber",
+ include_bytes!("../../assets/file-icons/mocha/cucumber.svg"),
+ ),
+ (
+ "cuda",
+ include_bytes!("../../assets/file-icons/mocha/cuda.svg"),
+ ),
+ (
+ "cue",
+ include_bytes!("../../assets/file-icons/mocha/cue.svg"),
+ ),
+ (
+ "cursor",
+ include_bytes!("../../assets/file-icons/mocha/cursor.svg"),
+ ),
+ (
+ "cursor-ignore",
+ include_bytes!("../../assets/file-icons/mocha/cursor-ignore.svg"),
+ ),
+ (
+ "cypress",
+ include_bytes!("../../assets/file-icons/mocha/cypress.svg"),
+ ),
+ ("d", include_bytes!("../../assets/file-icons/mocha/d.svg")),
+ (
+ "darklua",
+ include_bytes!("../../assets/file-icons/mocha/darklua.svg"),
+ ),
+ (
+ "dart",
+ include_bytes!("../../assets/file-icons/mocha/dart.svg"),
+ ),
+ (
+ "dart-generated",
+ include_bytes!("../../assets/file-icons/mocha/dart-generated.svg"),
+ ),
+ (
+ "database",
+ include_bytes!("../../assets/file-icons/mocha/database.svg"),
+ ),
+ (
+ "deno",
+ include_bytes!("../../assets/file-icons/mocha/deno.svg"),
+ ),
+ (
+ "deno_lock",
+ include_bytes!("../../assets/file-icons/mocha/deno_lock.svg"),
+ ),
+ (
+ "dependabot",
+ include_bytes!("../../assets/file-icons/mocha/dependabot.svg"),
+ ),
+ (
+ "devcontainer",
+ include_bytes!("../../assets/file-icons/mocha/devcontainer.svg"),
+ ),
+ (
+ "dhall",
+ include_bytes!("../../assets/file-icons/mocha/dhall.svg"),
+ ),
+ (
+ "diff",
+ include_bytes!("../../assets/file-icons/mocha/diff.svg"),
+ ),
+ (
+ "django",
+ include_bytes!("../../assets/file-icons/mocha/django.svg"),
+ ),
+ (
+ "docker",
+ include_bytes!("../../assets/file-icons/mocha/docker.svg"),
+ ),
+ (
+ "docker-compose",
+ include_bytes!("../../assets/file-icons/mocha/docker-compose.svg"),
+ ),
+ (
+ "docker-ignore",
+ include_bytes!("../../assets/file-icons/mocha/docker-ignore.svg"),
+ ),
+ (
+ "docusaurus",
+ include_bytes!("../../assets/file-icons/mocha/docusaurus.svg"),
+ ),
+ (
+ "drawio",
+ include_bytes!("../../assets/file-icons/mocha/drawio.svg"),
+ ),
+ (
+ "drizzle-orm",
+ include_bytes!("../../assets/file-icons/mocha/drizzle-orm.svg"),
+ ),
+ (
+ "dub",
+ include_bytes!("../../assets/file-icons/mocha/dub.svg"),
+ ),
+ (
+ "dub-selections",
+ include_bytes!("../../assets/file-icons/mocha/dub-selections.svg"),
+ ),
+ (
+ "editorconfig",
+ include_bytes!("../../assets/file-icons/mocha/editorconfig.svg"),
+ ),
+ (
+ "ejs",
+ include_bytes!("../../assets/file-icons/mocha/ejs.svg"),
+ ),
+ (
+ "eleventy",
+ include_bytes!("../../assets/file-icons/mocha/eleventy.svg"),
+ ),
+ (
+ "elixir",
+ include_bytes!("../../assets/file-icons/mocha/elixir.svg"),
+ ),
+ (
+ "elm",
+ include_bytes!("../../assets/file-icons/mocha/elm.svg"),
+ ),
+ (
+ "ember",
+ include_bytes!("../../assets/file-icons/mocha/ember.svg"),
+ ),
+ (
+ "env",
+ include_bytes!("../../assets/file-icons/mocha/env.svg"),
+ ),
+ (
+ "envrc",
+ include_bytes!("../../assets/file-icons/mocha/envrc.svg"),
+ ),
+ (
+ "erlang",
+ include_bytes!("../../assets/file-icons/mocha/erlang.svg"),
+ ),
+ (
+ "esbuild",
+ include_bytes!("../../assets/file-icons/mocha/esbuild.svg"),
+ ),
+ (
+ "eslint",
+ include_bytes!("../../assets/file-icons/mocha/eslint.svg"),
+ ),
+ (
+ "eslint-ignore",
+ include_bytes!("../../assets/file-icons/mocha/eslint-ignore.svg"),
+ ),
+ (
+ "exe",
+ include_bytes!("../../assets/file-icons/mocha/exe.svg"),
+ ),
+ (
+ "fastlane",
+ include_bytes!("../../assets/file-icons/mocha/fastlane.svg"),
+ ),
+ (
+ "favicon",
+ include_bytes!("../../assets/file-icons/mocha/favicon.svg"),
+ ),
+ (
+ "figma",
+ include_bytes!("../../assets/file-icons/mocha/figma.svg"),
+ ),
+ (
+ "firebase",
+ include_bytes!("../../assets/file-icons/mocha/firebase.svg"),
+ ),
+ (
+ "flutter",
+ include_bytes!("../../assets/file-icons/mocha/flutter.svg"),
+ ),
+ (
+ "folder_admin",
+ include_bytes!("../../assets/file-icons/mocha/folder_admin.svg"),
+ ),
+ (
+ "folder_admin_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_admin_open.svg"),
+ ),
+ (
+ "folder_android",
+ include_bytes!("../../assets/file-icons/mocha/folder_android.svg"),
+ ),
+ (
+ "folder_android_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_android_open.svg"),
+ ),
+ (
+ "folder_animation",
+ include_bytes!("../../assets/file-icons/mocha/folder_animation.svg"),
+ ),
+ (
+ "folder_animation_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_animation_open.svg"),
+ ),
+ (
+ "folder_api",
+ include_bytes!("../../assets/file-icons/mocha/folder_api.svg"),
+ ),
+ (
+ "folder_api_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_api_open.svg"),
+ ),
+ (
+ "folder_app",
+ include_bytes!("../../assets/file-icons/mocha/folder_app.svg"),
+ ),
+ (
+ "folder_app_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_app_open.svg"),
+ ),
+ (
+ "folder_assets",
+ include_bytes!("../../assets/file-icons/mocha/folder_assets.svg"),
+ ),
+ (
+ "folder_assets_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_assets_open.svg"),
+ ),
+ (
+ "folder_audio",
+ include_bytes!("../../assets/file-icons/mocha/folder_audio.svg"),
+ ),
+ (
+ "folder_audio_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_audio_open.svg"),
+ ),
+ (
+ "folder_audit",
+ include_bytes!("../../assets/file-icons/mocha/folder_audit.svg"),
+ ),
+ (
+ "folder_audit_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_audit_open.svg"),
+ ),
+ (
+ "folder_aws",
+ include_bytes!("../../assets/file-icons/mocha/folder_aws.svg"),
+ ),
+ (
+ "folder_aws_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_aws_open.svg"),
+ ),
+ (
+ "folder_azure-devops",
+ include_bytes!("../../assets/file-icons/mocha/folder_azure-devops.svg"),
+ ),
+ (
+ "folder_azure-devops_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_azure-devops_open.svg"),
+ ),
+ (
+ "folder_azure-pipelines",
+ include_bytes!("../../assets/file-icons/mocha/folder_azure-pipelines.svg"),
+ ),
+ (
+ "folder_azure-pipelines_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_azure-pipelines_open.svg"),
+ ),
+ (
+ "folder_benchmark",
+ include_bytes!("../../assets/file-icons/mocha/folder_benchmark.svg"),
+ ),
+ (
+ "folder_benchmark_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_benchmark_open.svg"),
+ ),
+ (
+ "folder_caddy",
+ include_bytes!("../../assets/file-icons/mocha/folder_caddy.svg"),
+ ),
+ (
+ "folder_caddy_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_caddy_open.svg"),
+ ),
+ (
+ "folder_cargo",
+ include_bytes!("../../assets/file-icons/mocha/folder_cargo.svg"),
+ ),
+ (
+ "folder_cargo_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_cargo_open.svg"),
+ ),
+ (
+ "folder_circle-ci",
+ include_bytes!("../../assets/file-icons/mocha/folder_circle-ci.svg"),
+ ),
+ (
+ "folder_circle-ci_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_circle-ci_open.svg"),
+ ),
+ (
+ "folder_client",
+ include_bytes!("../../assets/file-icons/mocha/folder_client.svg"),
+ ),
+ (
+ "folder_client_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_client_open.svg"),
+ ),
+ (
+ "folder_cloud",
+ include_bytes!("../../assets/file-icons/mocha/folder_cloud.svg"),
+ ),
+ (
+ "folder_cloud_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_cloud_open.svg"),
+ ),
+ (
+ "folder_command",
+ include_bytes!("../../assets/file-icons/mocha/folder_command.svg"),
+ ),
+ (
+ "folder_command_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_command_open.svg"),
+ ),
+ (
+ "folder_components",
+ include_bytes!("../../assets/file-icons/mocha/folder_components.svg"),
+ ),
+ (
+ "folder_components_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_components_open.svg"),
+ ),
+ (
+ "folder_composables",
+ include_bytes!("../../assets/file-icons/mocha/folder_composables.svg"),
+ ),
+ (
+ "folder_composables_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_composables_open.svg"),
+ ),
+ (
+ "folder_config",
+ include_bytes!("../../assets/file-icons/mocha/folder_config.svg"),
+ ),
+ (
+ "folder_config_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_config_open.svg"),
+ ),
+ (
+ "folder_connection",
+ include_bytes!("../../assets/file-icons/mocha/folder_connection.svg"),
+ ),
+ (
+ "folder_connection_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_connection_open.svg"),
+ ),
+ (
+ "folder_constant",
+ include_bytes!("../../assets/file-icons/mocha/folder_constant.svg"),
+ ),
+ (
+ "folder_constant_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_constant_open.svg"),
+ ),
+ (
+ "folder_content",
+ include_bytes!("../../assets/file-icons/mocha/folder_content.svg"),
+ ),
+ (
+ "folder_content_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_content_open.svg"),
+ ),
+ (
+ "folder_controllers",
+ include_bytes!("../../assets/file-icons/mocha/folder_controllers.svg"),
+ ),
+ (
+ "folder_controllers_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_controllers_open.svg"),
+ ),
+ (
+ "folder_core",
+ include_bytes!("../../assets/file-icons/mocha/folder_core.svg"),
+ ),
+ (
+ "folder_core_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_core_open.svg"),
+ ),
+ (
+ "folder_coverage",
+ include_bytes!("../../assets/file-icons/mocha/folder_coverage.svg"),
+ ),
+ (
+ "folder_coverage_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_coverage_open.svg"),
+ ),
+ (
+ "folder_cursor",
+ include_bytes!("../../assets/file-icons/mocha/folder_cursor.svg"),
+ ),
+ (
+ "folder_cursor_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_cursor_open.svg"),
+ ),
+ (
+ "folder_cypress",
+ include_bytes!("../../assets/file-icons/mocha/folder_cypress.svg"),
+ ),
+ (
+ "folder_cypress_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_cypress_open.svg"),
+ ),
+ (
+ "folder_database",
+ include_bytes!("../../assets/file-icons/mocha/folder_database.svg"),
+ ),
+ (
+ "folder_database_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_database_open.svg"),
+ ),
+ (
+ "folder_debug",
+ include_bytes!("../../assets/file-icons/mocha/folder_debug.svg"),
+ ),
+ (
+ "folder_debug_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_debug_open.svg"),
+ ),
+ (
+ "folder_devcontainer",
+ include_bytes!("../../assets/file-icons/mocha/folder_devcontainer.svg"),
+ ),
+ (
+ "folder_devcontainer_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_devcontainer_open.svg"),
+ ),
+ (
+ "folder_direnv",
+ include_bytes!("../../assets/file-icons/mocha/folder_direnv.svg"),
+ ),
+ (
+ "folder_direnv_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_direnv_open.svg"),
+ ),
+ (
+ "folder_dist",
+ include_bytes!("../../assets/file-icons/mocha/folder_dist.svg"),
+ ),
+ (
+ "folder_dist_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_dist_open.svg"),
+ ),
+ (
+ "folder_docker",
+ include_bytes!("../../assets/file-icons/mocha/folder_docker.svg"),
+ ),
+ (
+ "folder_docker_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_docker_open.svg"),
+ ),
+ (
+ "folder_docs",
+ include_bytes!("../../assets/file-icons/mocha/folder_docs.svg"),
+ ),
+ (
+ "folder_docs_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_docs_open.svg"),
+ ),
+ (
+ "folder_download",
+ include_bytes!("../../assets/file-icons/mocha/folder_download.svg"),
+ ),
+ (
+ "folder_download_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_download_open.svg"),
+ ),
+ (
+ "folder_drizzle-orm",
+ include_bytes!("../../assets/file-icons/mocha/folder_drizzle-orm.svg"),
+ ),
+ (
+ "folder_drizzle-orm_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_drizzle-orm_open.svg"),
+ ),
+ (
+ "folder_examples",
+ include_bytes!("../../assets/file-icons/mocha/folder_examples.svg"),
+ ),
+ (
+ "folder_examples_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_examples_open.svg"),
+ ),
+ (
+ "folder_fastlane",
+ include_bytes!("../../assets/file-icons/mocha/folder_fastlane.svg"),
+ ),
+ (
+ "folder_fastlane_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_fastlane_open.svg"),
+ ),
+ (
+ "folder_firebase",
+ include_bytes!("../../assets/file-icons/mocha/folder_firebase.svg"),
+ ),
+ (
+ "folder_firebase_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_firebase_open.svg"),
+ ),
+ (
+ "folder_fonts",
+ include_bytes!("../../assets/file-icons/mocha/folder_fonts.svg"),
+ ),
+ (
+ "folder_fonts_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_fonts_open.svg"),
+ ),
+ (
+ "folder_forgejo",
+ include_bytes!("../../assets/file-icons/mocha/folder_forgejo.svg"),
+ ),
+ (
+ "folder_forgejo_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_forgejo_open.svg"),
+ ),
+ (
+ "folder_functions",
+ include_bytes!("../../assets/file-icons/mocha/folder_functions.svg"),
+ ),
+ (
+ "folder_functions_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_functions_open.svg"),
+ ),
+ (
+ "folder_fvm",
+ include_bytes!("../../assets/file-icons/mocha/folder_fvm.svg"),
+ ),
+ (
+ "folder_fvm_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_fvm_open.svg"),
+ ),
+ (
+ "folder_git",
+ include_bytes!("../../assets/file-icons/mocha/folder_git.svg"),
+ ),
+ (
+ "folder_git_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_git_open.svg"),
+ ),
+ (
+ "folder_github",
+ include_bytes!("../../assets/file-icons/mocha/folder_github.svg"),
+ ),
+ (
+ "folder_github_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_github_open.svg"),
+ ),
+ (
+ "folder_gitlab",
+ include_bytes!("../../assets/file-icons/mocha/folder_gitlab.svg"),
+ ),
+ (
+ "folder_gitlab_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_gitlab_open.svg"),
+ ),
+ (
+ "folder_gradle",
+ include_bytes!("../../assets/file-icons/mocha/folder_gradle.svg"),
+ ),
+ (
+ "folder_gradle_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_gradle_open.svg"),
+ ),
+ (
+ "folder_graphql",
+ include_bytes!("../../assets/file-icons/mocha/folder_graphql.svg"),
+ ),
+ (
+ "folder_graphql_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_graphql_open.svg"),
+ ),
+ (
+ "folder_hooks",
+ include_bytes!("../../assets/file-icons/mocha/folder_hooks.svg"),
+ ),
+ (
+ "folder_hooks_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_hooks_open.svg"),
+ ),
+ (
+ "folder_husky",
+ include_bytes!("../../assets/file-icons/mocha/folder_husky.svg"),
+ ),
+ (
+ "folder_husky_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_husky_open.svg"),
+ ),
+ (
+ "folder_images",
+ include_bytes!("../../assets/file-icons/mocha/folder_images.svg"),
+ ),
+ (
+ "folder_images_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_images_open.svg"),
+ ),
+ (
+ "folder_include",
+ include_bytes!("../../assets/file-icons/mocha/folder_include.svg"),
+ ),
+ (
+ "folder_include_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_include_open.svg"),
+ ),
+ (
+ "folder_intellij",
+ include_bytes!("../../assets/file-icons/mocha/folder_intellij.svg"),
+ ),
+ (
+ "folder_intellij_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_intellij_open.svg"),
+ ),
+ (
+ "folder_javascript",
+ include_bytes!("../../assets/file-icons/mocha/folder_javascript.svg"),
+ ),
+ (
+ "folder_javascript_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_javascript_open.svg"),
+ ),
+ (
+ "folder_kubernetes",
+ include_bytes!("../../assets/file-icons/mocha/folder_kubernetes.svg"),
+ ),
+ (
+ "folder_kubernetes_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_kubernetes_open.svg"),
+ ),
+ (
+ "folder_layouts",
+ include_bytes!("../../assets/file-icons/mocha/folder_layouts.svg"),
+ ),
+ (
+ "folder_layouts_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_layouts_open.svg"),
+ ),
+ (
+ "folder_lib",
+ include_bytes!("../../assets/file-icons/mocha/folder_lib.svg"),
+ ),
+ (
+ "folder_lib_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_lib_open.svg"),
+ ),
+ (
+ "folder_linux",
+ include_bytes!("../../assets/file-icons/mocha/folder_linux.svg"),
+ ),
+ (
+ "folder_linux_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_linux_open.svg"),
+ ),
+ (
+ "folder_locales",
+ include_bytes!("../../assets/file-icons/mocha/folder_locales.svg"),
+ ),
+ (
+ "folder_locales_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_locales_open.svg"),
+ ),
+ (
+ "folder_luau",
+ include_bytes!("../../assets/file-icons/mocha/folder_luau.svg"),
+ ),
+ (
+ "folder_luau_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_luau_open.svg"),
+ ),
+ (
+ "folder_lune",
+ include_bytes!("../../assets/file-icons/mocha/folder_lune.svg"),
+ ),
+ (
+ "folder_lune_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_lune_open.svg"),
+ ),
+ (
+ "folder_macos",
+ include_bytes!("../../assets/file-icons/mocha/folder_macos.svg"),
+ ),
+ (
+ "folder_macos_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_macos_open.svg"),
+ ),
+ (
+ "folder_messages",
+ include_bytes!("../../assets/file-icons/mocha/folder_messages.svg"),
+ ),
+ (
+ "folder_messages_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_messages_open.svg"),
+ ),
+ (
+ "folder_middleware",
+ include_bytes!("../../assets/file-icons/mocha/folder_middleware.svg"),
+ ),
+ (
+ "folder_middleware_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_middleware_open.svg"),
+ ),
+ (
+ "folder_mocks",
+ include_bytes!("../../assets/file-icons/mocha/folder_mocks.svg"),
+ ),
+ (
+ "folder_mocks_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_mocks_open.svg"),
+ ),
+ (
+ "folder_moonrepo",
+ include_bytes!("../../assets/file-icons/mocha/folder_moonrepo.svg"),
+ ),
+ (
+ "folder_moonrepo_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_moonrepo_open.svg"),
+ ),
+ (
+ "folder_next",
+ include_bytes!("../../assets/file-icons/mocha/folder_next.svg"),
+ ),
+ (
+ "folder_next_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_next_open.svg"),
+ ),
+ (
+ "folder_nix",
+ include_bytes!("../../assets/file-icons/mocha/folder_nix.svg"),
+ ),
+ (
+ "folder_nix_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_nix_open.svg"),
+ ),
+ (
+ "folder_node",
+ include_bytes!("../../assets/file-icons/mocha/folder_node.svg"),
+ ),
+ (
+ "folder_node_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_node_open.svg"),
+ ),
+ (
+ "folder_nuxt",
+ include_bytes!("../../assets/file-icons/mocha/folder_nuxt.svg"),
+ ),
+ (
+ "folder_nuxt_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_nuxt_open.svg"),
+ ),
+ (
+ "folder_packages",
+ include_bytes!("../../assets/file-icons/mocha/folder_packages.svg"),
+ ),
+ (
+ "folder_packages_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_packages_open.svg"),
+ ),
+ (
+ "folder_pesde",
+ include_bytes!("../../assets/file-icons/mocha/folder_pesde.svg"),
+ ),
+ (
+ "folder_pesde_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_pesde_open.svg"),
+ ),
+ (
+ "folder_plugins",
+ include_bytes!("../../assets/file-icons/mocha/folder_plugins.svg"),
+ ),
+ (
+ "folder_plugins_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_plugins_open.svg"),
+ ),
+ (
+ "folder_pre-commit",
+ include_bytes!("../../assets/file-icons/mocha/folder_pre-commit.svg"),
+ ),
+ (
+ "folder_pre-commit_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_pre-commit_open.svg"),
+ ),
+ (
+ "folder_prisma",
+ include_bytes!("../../assets/file-icons/mocha/folder_prisma.svg"),
+ ),
+ (
+ "folder_prisma_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_prisma_open.svg"),
+ ),
+ (
+ "folder_private",
+ include_bytes!("../../assets/file-icons/mocha/folder_private.svg"),
+ ),
+ (
+ "folder_private_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_private_open.svg"),
+ ),
+ (
+ "folder_proto",
+ include_bytes!("../../assets/file-icons/mocha/folder_proto.svg"),
+ ),
+ (
+ "folder_proto_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_proto_open.svg"),
+ ),
+ (
+ "folder_public",
+ include_bytes!("../../assets/file-icons/mocha/folder_public.svg"),
+ ),
+ (
+ "folder_public_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_public_open.svg"),
+ ),
+ (
+ "folder_queue",
+ include_bytes!("../../assets/file-icons/mocha/folder_queue.svg"),
+ ),
+ (
+ "folder_queue_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_queue_open.svg"),
+ ),
+ (
+ "folder_redux",
+ include_bytes!("../../assets/file-icons/mocha/folder_redux.svg"),
+ ),
+ (
+ "folder_redux_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_redux_open.svg"),
+ ),
+ (
+ "folder_renovate",
+ include_bytes!("../../assets/file-icons/mocha/folder_renovate.svg"),
+ ),
+ (
+ "folder_renovate_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_renovate_open.svg"),
+ ),
+ (
+ "folder_roblox",
+ include_bytes!("../../assets/file-icons/mocha/folder_roblox.svg"),
+ ),
+ (
+ "folder_roblox_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_roblox_open.svg"),
+ ),
+ (
+ "folder_routes",
+ include_bytes!("../../assets/file-icons/mocha/folder_routes.svg"),
+ ),
+ (
+ "folder_routes_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_routes_open.svg"),
+ ),
+ (
+ "folder_sass",
+ include_bytes!("../../assets/file-icons/mocha/folder_sass.svg"),
+ ),
+ (
+ "folder_sass_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_sass_open.svg"),
+ ),
+ (
+ "folder_scripts",
+ include_bytes!("../../assets/file-icons/mocha/folder_scripts.svg"),
+ ),
+ (
+ "folder_scripts_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_scripts_open.svg"),
+ ),
+ (
+ "folder_security",
+ include_bytes!("../../assets/file-icons/mocha/folder_security.svg"),
+ ),
+ (
+ "folder_security_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_security_open.svg"),
+ ),
+ (
+ "folder_server",
+ include_bytes!("../../assets/file-icons/mocha/folder_server.svg"),
+ ),
+ (
+ "folder_server_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_server_open.svg"),
+ ),
+ (
+ "folder_shared",
+ include_bytes!("../../assets/file-icons/mocha/folder_shared.svg"),
+ ),
+ (
+ "folder_shared_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_shared_open.svg"),
+ ),
+ (
+ "folder_src",
+ include_bytes!("../../assets/file-icons/mocha/folder_src.svg"),
+ ),
+ (
+ "folder_src_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_src_open.svg"),
+ ),
+ (
+ "folder_storybook",
+ include_bytes!("../../assets/file-icons/mocha/folder_storybook.svg"),
+ ),
+ (
+ "folder_storybook_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_storybook_open.svg"),
+ ),
+ (
+ "folder_styles",
+ include_bytes!("../../assets/file-icons/mocha/folder_styles.svg"),
+ ),
+ (
+ "folder_styles_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_styles_open.svg"),
+ ),
+ (
+ "folder_svg",
+ include_bytes!("../../assets/file-icons/mocha/folder_svg.svg"),
+ ),
+ (
+ "folder_svg_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_svg_open.svg"),
+ ),
+ (
+ "folder_tauri",
+ include_bytes!("../../assets/file-icons/mocha/folder_tauri.svg"),
+ ),
+ (
+ "folder_tauri_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_tauri_open.svg"),
+ ),
+ (
+ "folder_temp",
+ include_bytes!("../../assets/file-icons/mocha/folder_temp.svg"),
+ ),
+ (
+ "folder_temp_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_temp_open.svg"),
+ ),
+ (
+ "folder_templates",
+ include_bytes!("../../assets/file-icons/mocha/folder_templates.svg"),
+ ),
+ (
+ "folder_templates_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_templates_open.svg"),
+ ),
+ (
+ "folder_tests",
+ include_bytes!("../../assets/file-icons/mocha/folder_tests.svg"),
+ ),
+ (
+ "folder_tests_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_tests_open.svg"),
+ ),
+ (
+ "folder_themes",
+ include_bytes!("../../assets/file-icons/mocha/folder_themes.svg"),
+ ),
+ (
+ "folder_themes_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_themes_open.svg"),
+ ),
+ (
+ "folder_turbo",
+ include_bytes!("../../assets/file-icons/mocha/folder_turbo.svg"),
+ ),
+ (
+ "folder_turbo_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_turbo_open.svg"),
+ ),
+ (
+ "folder_types",
+ include_bytes!("../../assets/file-icons/mocha/folder_types.svg"),
+ ),
+ (
+ "folder_types_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_types_open.svg"),
+ ),
+ (
+ "folder_upload",
+ include_bytes!("../../assets/file-icons/mocha/folder_upload.svg"),
+ ),
+ (
+ "folder_upload_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_upload_open.svg"),
+ ),
+ (
+ "folder_utils",
+ include_bytes!("../../assets/file-icons/mocha/folder_utils.svg"),
+ ),
+ (
+ "folder_utils_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_utils_open.svg"),
+ ),
+ (
+ "folder_vercel",
+ include_bytes!("../../assets/file-icons/mocha/folder_vercel.svg"),
+ ),
+ (
+ "folder_vercel_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_vercel_open.svg"),
+ ),
+ (
+ "folder_video",
+ include_bytes!("../../assets/file-icons/mocha/folder_video.svg"),
+ ),
+ (
+ "folder_video_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_video_open.svg"),
+ ),
+ (
+ "folder_views",
+ include_bytes!("../../assets/file-icons/mocha/folder_views.svg"),
+ ),
+ (
+ "folder_views_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_views_open.svg"),
+ ),
+ (
+ "folder_vscode",
+ include_bytes!("../../assets/file-icons/mocha/folder_vscode.svg"),
+ ),
+ (
+ "folder_vscode_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_vscode_open.svg"),
+ ),
+ (
+ "folder_windows",
+ include_bytes!("../../assets/file-icons/mocha/folder_windows.svg"),
+ ),
+ (
+ "folder_windows_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_windows_open.svg"),
+ ),
+ (
+ "folder_workflows",
+ include_bytes!("../../assets/file-icons/mocha/folder_workflows.svg"),
+ ),
+ (
+ "folder_workflows_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_workflows_open.svg"),
+ ),
+ (
+ "folder_wxt",
+ include_bytes!("../../assets/file-icons/mocha/folder_wxt.svg"),
+ ),
+ (
+ "folder_wxt_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_wxt_open.svg"),
+ ),
+ (
+ "folder_xcode",
+ include_bytes!("../../assets/file-icons/mocha/folder_xcode.svg"),
+ ),
+ (
+ "folder_xcode_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_xcode_open.svg"),
+ ),
+ (
+ "folder_xmake",
+ include_bytes!("../../assets/file-icons/mocha/folder_xmake.svg"),
+ ),
+ (
+ "folder_xmake_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_xmake_open.svg"),
+ ),
+ (
+ "folder_yarn",
+ include_bytes!("../../assets/file-icons/mocha/folder_yarn.svg"),
+ ),
+ (
+ "folder_yarn_open",
+ include_bytes!("../../assets/file-icons/mocha/folder_yarn_open.svg"),
+ ),
+ (
+ "font",
+ include_bytes!("../../assets/file-icons/mocha/font.svg"),
+ ),
+ (
+ "foreman",
+ include_bytes!("../../assets/file-icons/mocha/foreman.svg"),
+ ),
+ (
+ "fortran",
+ include_bytes!("../../assets/file-icons/mocha/fortran.svg"),
+ ),
+ (
+ "fsharp",
+ include_bytes!("../../assets/file-icons/mocha/fsharp.svg"),
+ ),
+ (
+ "fvm",
+ include_bytes!("../../assets/file-icons/mocha/fvm.svg"),
+ ),
+ (
+ "gatsby",
+ include_bytes!("../../assets/file-icons/mocha/gatsby.svg"),
+ ),
+ (
+ "gcp",
+ include_bytes!("../../assets/file-icons/mocha/gcp.svg"),
+ ),
+ (
+ "git",
+ include_bytes!("../../assets/file-icons/mocha/git.svg"),
+ ),
+ (
+ "git-cliff",
+ include_bytes!("../../assets/file-icons/mocha/git-cliff.svg"),
+ ),
+ (
+ "gitlab",
+ include_bytes!("../../assets/file-icons/mocha/gitlab.svg"),
+ ),
+ (
+ "gitpod",
+ include_bytes!("../../assets/file-icons/mocha/gitpod.svg"),
+ ),
+ (
+ "gleam",
+ include_bytes!("../../assets/file-icons/mocha/gleam.svg"),
+ ),
+ (
+ "gleam-config",
+ include_bytes!("../../assets/file-icons/mocha/gleam-config.svg"),
+ ),
+ ("go", include_bytes!("../../assets/file-icons/mocha/go.svg")),
+ (
+ "go-mod",
+ include_bytes!("../../assets/file-icons/mocha/go-mod.svg"),
+ ),
+ (
+ "go-template",
+ include_bytes!("../../assets/file-icons/mocha/go-template.svg"),
+ ),
+ (
+ "godot",
+ include_bytes!("../../assets/file-icons/mocha/godot.svg"),
+ ),
+ (
+ "godot-assets",
+ include_bytes!("../../assets/file-icons/mocha/godot-assets.svg"),
+ ),
+ (
+ "gradle",
+ include_bytes!("../../assets/file-icons/mocha/gradle.svg"),
+ ),
+ (
+ "graphql",
+ include_bytes!("../../assets/file-icons/mocha/graphql.svg"),
+ ),
+ (
+ "groovy",
+ include_bytes!("../../assets/file-icons/mocha/groovy.svg"),
+ ),
+ (
+ "gulp",
+ include_bytes!("../../assets/file-icons/mocha/gulp.svg"),
+ ),
+ (
+ "hacking",
+ include_bytes!("../../assets/file-icons/mocha/hacking.svg"),
+ ),
+ (
+ "haml",
+ include_bytes!("../../assets/file-icons/mocha/haml.svg"),
+ ),
+ (
+ "handlebars",
+ include_bytes!("../../assets/file-icons/mocha/handlebars.svg"),
+ ),
+ (
+ "hardhat",
+ include_bytes!("../../assets/file-icons/mocha/hardhat.svg"),
+ ),
+ (
+ "hare",
+ include_bytes!("../../assets/file-icons/mocha/hare.svg"),
+ ),
+ (
+ "haskell",
+ include_bytes!("../../assets/file-icons/mocha/haskell.svg"),
+ ),
+ (
+ "haxe",
+ include_bytes!("../../assets/file-icons/mocha/haxe.svg"),
+ ),
+ (
+ "helm",
+ include_bytes!("../../assets/file-icons/mocha/helm.svg"),
+ ),
+ (
+ "heroku",
+ include_bytes!("../../assets/file-icons/mocha/heroku.svg"),
+ ),
+ (
+ "histoire",
+ include_bytes!("../../assets/file-icons/mocha/histoire.svg"),
+ ),
+ (
+ "html",
+ include_bytes!("../../assets/file-icons/mocha/html.svg"),
+ ),
+ (
+ "http",
+ include_bytes!("../../assets/file-icons/mocha/http.svg"),
+ ),
+ (
+ "huff",
+ include_bytes!("../../assets/file-icons/mocha/huff.svg"),
+ ),
+ (
+ "hugo",
+ include_bytes!("../../assets/file-icons/mocha/hugo.svg"),
+ ),
+ (
+ "humans",
+ include_bytes!("../../assets/file-icons/mocha/humans.svg"),
+ ),
+ (
+ "husky",
+ include_bytes!("../../assets/file-icons/mocha/husky.svg"),
+ ),
+ (
+ "image",
+ include_bytes!("../../assets/file-icons/mocha/image.svg"),
+ ),
+ (
+ "ionic",
+ include_bytes!("../../assets/file-icons/mocha/ionic.svg"),
+ ),
+ (
+ "java",
+ include_bytes!("../../assets/file-icons/mocha/java.svg"),
+ ),
+ (
+ "java-class",
+ include_bytes!("../../assets/file-icons/mocha/java-class.svg"),
+ ),
+ (
+ "java-jar",
+ include_bytes!("../../assets/file-icons/mocha/java-jar.svg"),
+ ),
+ (
+ "javascript",
+ include_bytes!("../../assets/file-icons/mocha/javascript.svg"),
+ ),
+ (
+ "javascript-config",
+ include_bytes!("../../assets/file-icons/mocha/javascript-config.svg"),
+ ),
+ (
+ "javascript-map",
+ include_bytes!("../../assets/file-icons/mocha/javascript-map.svg"),
+ ),
+ (
+ "javascript-react",
+ include_bytes!("../../assets/file-icons/mocha/javascript-react.svg"),
+ ),
+ (
+ "javascript-test",
+ include_bytes!("../../assets/file-icons/mocha/javascript-test.svg"),
+ ),
+ (
+ "jest",
+ include_bytes!("../../assets/file-icons/mocha/jest.svg"),
+ ),
+ (
+ "jinja",
+ include_bytes!("../../assets/file-icons/mocha/jinja.svg"),
+ ),
+ (
+ "json",
+ include_bytes!("../../assets/file-icons/mocha/json.svg"),
+ ),
+ (
+ "json-schema",
+ include_bytes!("../../assets/file-icons/mocha/json-schema.svg"),
+ ),
+ (
+ "juce",
+ include_bytes!("../../assets/file-icons/mocha/juce.svg"),
+ ),
+ (
+ "jule",
+ include_bytes!("../../assets/file-icons/mocha/jule.svg"),
+ ),
+ (
+ "julia",
+ include_bytes!("../../assets/file-icons/mocha/julia.svg"),
+ ),
+ (
+ "jupyter",
+ include_bytes!("../../assets/file-icons/mocha/jupyter.svg"),
+ ),
+ (
+ "just",
+ include_bytes!("../../assets/file-icons/mocha/just.svg"),
+ ),
+ (
+ "kdl",
+ include_bytes!("../../assets/file-icons/mocha/kdl.svg"),
+ ),
+ (
+ "key",
+ include_bytes!("../../assets/file-icons/mocha/key.svg"),
+ ),
+ (
+ "knip",
+ include_bytes!("../../assets/file-icons/mocha/knip.svg"),
+ ),
+ (
+ "kotlin",
+ include_bytes!("../../assets/file-icons/mocha/kotlin.svg"),
+ ),
+ (
+ "laravel",
+ include_bytes!("../../assets/file-icons/mocha/laravel.svg"),
+ ),
+ (
+ "latex",
+ include_bytes!("../../assets/file-icons/mocha/latex.svg"),
+ ),
+ (
+ "latte",
+ include_bytes!("../../assets/file-icons/mocha/latte.svg"),
+ ),
+ (
+ "lerna",
+ include_bytes!("../../assets/file-icons/mocha/lerna.svg"),
+ ),
+ (
+ "less",
+ include_bytes!("../../assets/file-icons/mocha/less.svg"),
+ ),
+ (
+ "lib",
+ include_bytes!("../../assets/file-icons/mocha/lib.svg"),
+ ),
+ (
+ "license",
+ include_bytes!("../../assets/file-icons/mocha/license.svg"),
+ ),
+ (
+ "lint-staged",
+ include_bytes!("../../assets/file-icons/mocha/lint-staged.svg"),
+ ),
+ (
+ "liquid",
+ include_bytes!("../../assets/file-icons/mocha/liquid.svg"),
+ ),
+ (
+ "lisp",
+ include_bytes!("../../assets/file-icons/mocha/lisp.svg"),
+ ),
+ (
+ "lock",
+ include_bytes!("../../assets/file-icons/mocha/lock.svg"),
+ ),
+ (
+ "log",
+ include_bytes!("../../assets/file-icons/mocha/log.svg"),
+ ),
+ (
+ "lua",
+ include_bytes!("../../assets/file-icons/mocha/lua.svg"),
+ ),
+ (
+ "lua-check",
+ include_bytes!("../../assets/file-icons/mocha/lua-check.svg"),
+ ),
+ (
+ "lua-client",
+ include_bytes!("../../assets/file-icons/mocha/lua-client.svg"),
+ ),
+ (
+ "lua-rocks",
+ include_bytes!("../../assets/file-icons/mocha/lua-rocks.svg"),
+ ),
+ (
+ "lua-server",
+ include_bytes!("../../assets/file-icons/mocha/lua-server.svg"),
+ ),
+ (
+ "lua-test",
+ include_bytes!("../../assets/file-icons/mocha/lua-test.svg"),
+ ),
+ (
+ "luau",
+ include_bytes!("../../assets/file-icons/mocha/luau.svg"),
+ ),
+ (
+ "luau-check",
+ include_bytes!("../../assets/file-icons/mocha/luau-check.svg"),
+ ),
+ (
+ "luau-client",
+ include_bytes!("../../assets/file-icons/mocha/luau-client.svg"),
+ ),
+ (
+ "luau-config",
+ include_bytes!("../../assets/file-icons/mocha/luau-config.svg"),
+ ),
+ (
+ "luau-server",
+ include_bytes!("../../assets/file-icons/mocha/luau-server.svg"),
+ ),
+ (
+ "luau-test",
+ include_bytes!("../../assets/file-icons/mocha/luau-test.svg"),
+ ),
+ (
+ "macos",
+ include_bytes!("../../assets/file-icons/mocha/macos.svg"),
+ ),
+ (
+ "makefile",
+ include_bytes!("../../assets/file-icons/mocha/makefile.svg"),
+ ),
+ (
+ "mantle",
+ include_bytes!("../../assets/file-icons/mocha/mantle.svg"),
+ ),
+ (
+ "markdown",
+ include_bytes!("../../assets/file-icons/mocha/markdown.svg"),
+ ),
+ (
+ "markdown-mdx",
+ include_bytes!("../../assets/file-icons/mocha/markdown-mdx.svg"),
+ ),
+ (
+ "marko",
+ include_bytes!("../../assets/file-icons/mocha/marko.svg"),
+ ),
+ (
+ "matlab",
+ include_bytes!("../../assets/file-icons/mocha/matlab.svg"),
+ ),
+ (
+ "mdbook",
+ include_bytes!("../../assets/file-icons/mocha/mdbook.svg"),
+ ),
+ (
+ "mermaid",
+ include_bytes!("../../assets/file-icons/mocha/mermaid.svg"),
+ ),
+ (
+ "meson",
+ include_bytes!("../../assets/file-icons/mocha/meson.svg"),
+ ),
+ (
+ "midi",
+ include_bytes!("../../assets/file-icons/mocha/midi.svg"),
+ ),
+ (
+ "mjml",
+ include_bytes!("../../assets/file-icons/mocha/mjml.svg"),
+ ),
+ (
+ "modernizr",
+ include_bytes!("../../assets/file-icons/mocha/modernizr.svg"),
+ ),
+ (
+ "moonrepo",
+ include_bytes!("../../assets/file-icons/mocha/moonrepo.svg"),
+ ),
+ (
+ "moonwave",
+ include_bytes!("../../assets/file-icons/mocha/moonwave.svg"),
+ ),
+ (
+ "ms-excel",
+ include_bytes!("../../assets/file-icons/mocha/ms-excel.svg"),
+ ),
+ (
+ "ms-powerpoint",
+ include_bytes!("../../assets/file-icons/mocha/ms-powerpoint.svg"),
+ ),
+ (
+ "ms-word",
+ include_bytes!("../../assets/file-icons/mocha/ms-word.svg"),
+ ),
+ (
+ "msbuild",
+ include_bytes!("../../assets/file-icons/mocha/msbuild.svg"),
+ ),
+ (
+ "nativescript",
+ include_bytes!("../../assets/file-icons/mocha/nativescript.svg"),
+ ),
+ (
+ "nest",
+ include_bytes!("../../assets/file-icons/mocha/nest.svg"),
+ ),
+ (
+ "netlify",
+ include_bytes!("../../assets/file-icons/mocha/netlify.svg"),
+ ),
+ (
+ "next",
+ include_bytes!("../../assets/file-icons/mocha/next.svg"),
+ ),
+ (
+ "nextflow",
+ include_bytes!("../../assets/file-icons/mocha/nextflow.svg"),
+ ),
+ (
+ "nginx",
+ include_bytes!("../../assets/file-icons/mocha/nginx.svg"),
+ ),
+ (
+ "nim",
+ include_bytes!("../../assets/file-icons/mocha/nim.svg"),
+ ),
+ (
+ "ninja",
+ include_bytes!("../../assets/file-icons/mocha/ninja.svg"),
+ ),
+ (
+ "nix",
+ include_bytes!("../../assets/file-icons/mocha/nix.svg"),
+ ),
+ (
+ "nix-lock",
+ include_bytes!("../../assets/file-icons/mocha/nix-lock.svg"),
+ ),
+ (
+ "nodemon",
+ include_bytes!("../../assets/file-icons/mocha/nodemon.svg"),
+ ),
+ (
+ "npm",
+ include_bytes!("../../assets/file-icons/mocha/npm.svg"),
+ ),
+ (
+ "npm-ignore",
+ include_bytes!("../../assets/file-icons/mocha/npm-ignore.svg"),
+ ),
+ (
+ "npm-lock",
+ include_bytes!("../../assets/file-icons/mocha/npm-lock.svg"),
+ ),
+ (
+ "nuget",
+ include_bytes!("../../assets/file-icons/mocha/nuget.svg"),
+ ),
+ (
+ "nunjucks",
+ include_bytes!("../../assets/file-icons/mocha/nunjucks.svg"),
+ ),
+ (
+ "nuxt",
+ include_bytes!("../../assets/file-icons/mocha/nuxt.svg"),
+ ),
+ (
+ "nuxt-ignore",
+ include_bytes!("../../assets/file-icons/mocha/nuxt-ignore.svg"),
+ ),
+ ("nx", include_bytes!("../../assets/file-icons/mocha/nx.svg")),
+ (
+ "nx-ignore",
+ include_bytes!("../../assets/file-icons/mocha/nx-ignore.svg"),
+ ),
+ (
+ "ocaml",
+ include_bytes!("../../assets/file-icons/mocha/ocaml.svg"),
+ ),
+ (
+ "odin",
+ include_bytes!("../../assets/file-icons/mocha/odin.svg"),
+ ),
+ (
+ "opentofu",
+ include_bytes!("../../assets/file-icons/mocha/opentofu.svg"),
+ ),
+ (
+ "org",
+ include_bytes!("../../assets/file-icons/mocha/org.svg"),
+ ),
+ (
+ "package-json",
+ include_bytes!("../../assets/file-icons/mocha/package-json.svg"),
+ ),
+ (
+ "panda-css",
+ include_bytes!("../../assets/file-icons/mocha/panda-css.svg"),
+ ),
+ (
+ "pdf",
+ include_bytes!("../../assets/file-icons/mocha/pdf.svg"),
+ ),
+ (
+ "perl",
+ include_bytes!("../../assets/file-icons/mocha/perl.svg"),
+ ),
+ (
+ "pesde",
+ include_bytes!("../../assets/file-icons/mocha/pesde.svg"),
+ ),
+ (
+ "pesde-lock",
+ include_bytes!("../../assets/file-icons/mocha/pesde-lock.svg"),
+ ),
+ (
+ "php",
+ include_bytes!("../../assets/file-icons/mocha/php.svg"),
+ ),
+ (
+ "phrase",
+ include_bytes!("../../assets/file-icons/mocha/phrase.svg"),
+ ),
+ (
+ "phtml",
+ include_bytes!("../../assets/file-icons/mocha/phtml.svg"),
+ ),
+ (
+ "pixi",
+ include_bytes!("../../assets/file-icons/mocha/pixi.svg"),
+ ),
+ (
+ "pixi-lock",
+ include_bytes!("../../assets/file-icons/mocha/pixi-lock.svg"),
+ ),
+ (
+ "plantuml",
+ include_bytes!("../../assets/file-icons/mocha/plantuml.svg"),
+ ),
+ (
+ "playwright",
+ include_bytes!("../../assets/file-icons/mocha/playwright.svg"),
+ ),
+ (
+ "plop",
+ include_bytes!("../../assets/file-icons/mocha/plop.svg"),
+ ),
+ (
+ "pnpm",
+ include_bytes!("../../assets/file-icons/mocha/pnpm.svg"),
+ ),
+ (
+ "pnpm-lock",
+ include_bytes!("../../assets/file-icons/mocha/pnpm-lock.svg"),
+ ),
+ (
+ "poetry-lock",
+ include_bytes!("../../assets/file-icons/mocha/poetry-lock.svg"),
+ ),
+ (
+ "postcss",
+ include_bytes!("../../assets/file-icons/mocha/postcss.svg"),
+ ),
+ (
+ "powershell",
+ include_bytes!("../../assets/file-icons/mocha/powershell.svg"),
+ ),
+ (
+ "pre-commit",
+ include_bytes!("../../assets/file-icons/mocha/pre-commit.svg"),
+ ),
+ (
+ "premake",
+ include_bytes!("../../assets/file-icons/mocha/premake.svg"),
+ ),
+ (
+ "prettier",
+ include_bytes!("../../assets/file-icons/mocha/prettier.svg"),
+ ),
+ (
+ "prettier-ignore",
+ include_bytes!("../../assets/file-icons/mocha/prettier-ignore.svg"),
+ ),
+ (
+ "prisma",
+ include_bytes!("../../assets/file-icons/mocha/prisma.svg"),
+ ),
+ (
+ "prolog",
+ include_bytes!("../../assets/file-icons/mocha/prolog.svg"),
+ ),
+ (
+ "properties",
+ include_bytes!("../../assets/file-icons/mocha/properties.svg"),
+ ),
+ (
+ "proto",
+ include_bytes!("../../assets/file-icons/mocha/proto.svg"),
+ ),
+ (
+ "prototools",
+ include_bytes!("../../assets/file-icons/mocha/prototools.svg"),
+ ),
+ (
+ "pug",
+ include_bytes!("../../assets/file-icons/mocha/pug.svg"),
+ ),
+ (
+ "puppet",
+ include_bytes!("../../assets/file-icons/mocha/puppet.svg"),
+ ),
+ (
+ "puppeteer",
+ include_bytes!("../../assets/file-icons/mocha/puppeteer.svg"),
+ ),
+ (
+ "python",
+ include_bytes!("../../assets/file-icons/mocha/python.svg"),
+ ),
+ (
+ "python-compiled",
+ include_bytes!("../../assets/file-icons/mocha/python-compiled.svg"),
+ ),
+ (
+ "python-config",
+ include_bytes!("../../assets/file-icons/mocha/python-config.svg"),
+ ),
+ ("r", include_bytes!("../../assets/file-icons/mocha/r.svg")),
+ (
+ "racket",
+ include_bytes!("../../assets/file-icons/mocha/racket.svg"),
+ ),
+ (
+ "razor",
+ include_bytes!("../../assets/file-icons/mocha/razor.svg"),
+ ),
+ (
+ "rdata",
+ include_bytes!("../../assets/file-icons/mocha/rdata.svg"),
+ ),
+ (
+ "readme",
+ include_bytes!("../../assets/file-icons/mocha/readme.svg"),
+ ),
+ (
+ "reason",
+ include_bytes!("../../assets/file-icons/mocha/reason.svg"),
+ ),
+ (
+ "redwood",
+ include_bytes!("../../assets/file-icons/mocha/redwood.svg"),
+ ),
+ (
+ "release",
+ include_bytes!("../../assets/file-icons/mocha/release.svg"),
+ ),
+ (
+ "remix",
+ include_bytes!("../../assets/file-icons/mocha/remix.svg"),
+ ),
+ (
+ "renovate",
+ include_bytes!("../../assets/file-icons/mocha/renovate.svg"),
+ ),
+ (
+ "rescript",
+ include_bytes!("../../assets/file-icons/mocha/rescript.svg"),
+ ),
+ (
+ "rmd",
+ include_bytes!("../../assets/file-icons/mocha/rmd.svg"),
+ ),
+ (
+ "roblox",
+ include_bytes!("../../assets/file-icons/mocha/roblox.svg"),
+ ),
+ (
+ "robots",
+ include_bytes!("../../assets/file-icons/mocha/robots.svg"),
+ ),
+ (
+ "rocket",
+ include_bytes!("../../assets/file-icons/mocha/rocket.svg"),
+ ),
+ (
+ "rokit",
+ include_bytes!("../../assets/file-icons/mocha/rokit.svg"),
+ ),
+ (
+ "rollup",
+ include_bytes!("../../assets/file-icons/mocha/rollup.svg"),
+ ),
+ (
+ "rproj",
+ include_bytes!("../../assets/file-icons/mocha/rproj.svg"),
+ ),
+ (
+ "rsml",
+ include_bytes!("../../assets/file-icons/mocha/rsml.svg"),
+ ),
+ (
+ "ruby",
+ include_bytes!("../../assets/file-icons/mocha/ruby.svg"),
+ ),
+ (
+ "ruby-gem",
+ include_bytes!("../../assets/file-icons/mocha/ruby-gem.svg"),
+ ),
+ (
+ "ruby-gem-lock",
+ include_bytes!("../../assets/file-icons/mocha/ruby-gem-lock.svg"),
+ ),
+ (
+ "ruff",
+ include_bytes!("../../assets/file-icons/mocha/ruff.svg"),
+ ),
+ (
+ "rust",
+ include_bytes!("../../assets/file-icons/mocha/rust.svg"),
+ ),
+ (
+ "rust-config",
+ include_bytes!("../../assets/file-icons/mocha/rust-config.svg"),
+ ),
+ (
+ "salesforce",
+ include_bytes!("../../assets/file-icons/mocha/salesforce.svg"),
+ ),
+ (
+ "sass",
+ include_bytes!("../../assets/file-icons/mocha/sass.svg"),
+ ),
+ (
+ "scala",
+ include_bytes!("../../assets/file-icons/mocha/scala.svg"),
+ ),
+ (
+ "scheme",
+ include_bytes!("../../assets/file-icons/mocha/scheme.svg"),
+ ),
+ (
+ "search",
+ include_bytes!("../../assets/file-icons/mocha/search.svg"),
+ ),
+ (
+ "security",
+ include_bytes!("../../assets/file-icons/mocha/security.svg"),
+ ),
+ (
+ "semantic-release",
+ include_bytes!("../../assets/file-icons/mocha/semantic-release.svg"),
+ ),
+ (
+ "semgrep",
+ include_bytes!("../../assets/file-icons/mocha/semgrep.svg"),
+ ),
+ (
+ "semgrep-ignore",
+ include_bytes!("../../assets/file-icons/mocha/semgrep-ignore.svg"),
+ ),
+ (
+ "sentry",
+ include_bytes!("../../assets/file-icons/mocha/sentry.svg"),
+ ),
+ (
+ "serverless",
+ include_bytes!("../../assets/file-icons/mocha/serverless.svg"),
+ ),
+ (
+ "shader",
+ include_bytes!("../../assets/file-icons/mocha/shader.svg"),
+ ),
+ (
+ "sketch",
+ include_bytes!("../../assets/file-icons/mocha/sketch.svg"),
+ ),
+ (
+ "slidesk",
+ include_bytes!("../../assets/file-icons/mocha/slidesk.svg"),
+ ),
+ (
+ "snowpack",
+ include_bytes!("../../assets/file-icons/mocha/snowpack.svg"),
+ ),
+ (
+ "solidity",
+ include_bytes!("../../assets/file-icons/mocha/solidity.svg"),
+ ),
+ (
+ "sonar-cloud",
+ include_bytes!("../../assets/file-icons/mocha/sonar-cloud.svg"),
+ ),
+ (
+ "spwn",
+ include_bytes!("../../assets/file-icons/mocha/spwn.svg"),
+ ),
+ (
+ "squirrel",
+ include_bytes!("../../assets/file-icons/mocha/squirrel.svg"),
+ ),
+ (
+ "stackblitz",
+ include_bytes!("../../assets/file-icons/mocha/stackblitz.svg"),
+ ),
+ (
+ "stata",
+ include_bytes!("../../assets/file-icons/mocha/stata.svg"),
+ ),
+ (
+ "stencil",
+ include_bytes!("../../assets/file-icons/mocha/stencil.svg"),
+ ),
+ (
+ "stitches",
+ include_bytes!("../../assets/file-icons/mocha/stitches.svg"),
+ ),
+ (
+ "storybook",
+ include_bytes!("../../assets/file-icons/mocha/storybook.svg"),
+ ),
+ (
+ "storybook-svelte",
+ include_bytes!("../../assets/file-icons/mocha/storybook-svelte.svg"),
+ ),
+ (
+ "storybook-vue",
+ include_bytes!("../../assets/file-icons/mocha/storybook-vue.svg"),
+ ),
+ (
+ "stylelint",
+ include_bytes!("../../assets/file-icons/mocha/stylelint.svg"),
+ ),
+ (
+ "stylelint-ignore",
+ include_bytes!("../../assets/file-icons/mocha/stylelint-ignore.svg"),
+ ),
+ (
+ "stylua",
+ include_bytes!("../../assets/file-icons/mocha/stylua.svg"),
+ ),
+ (
+ "stylua-ignore",
+ include_bytes!("../../assets/file-icons/mocha/stylua-ignore.svg"),
+ ),
+ (
+ "sublime",
+ include_bytes!("../../assets/file-icons/mocha/sublime.svg"),
+ ),
+ (
+ "super-collider",
+ include_bytes!("../../assets/file-icons/mocha/super-collider.svg"),
+ ),
+ (
+ "svelte",
+ include_bytes!("../../assets/file-icons/mocha/svelte.svg"),
+ ),
+ (
+ "svelte-config",
+ include_bytes!("../../assets/file-icons/mocha/svelte-config.svg"),
+ ),
+ (
+ "svg",
+ include_bytes!("../../assets/file-icons/mocha/svg.svg"),
+ ),
+ (
+ "swift",
+ include_bytes!("../../assets/file-icons/mocha/swift.svg"),
+ ),
+ (
+ "swiftformat",
+ include_bytes!("../../assets/file-icons/mocha/swiftformat.svg"),
+ ),
+ (
+ "tailwind",
+ include_bytes!("../../assets/file-icons/mocha/tailwind.svg"),
+ ),
+ (
+ "taskfile",
+ include_bytes!("../../assets/file-icons/mocha/taskfile.svg"),
+ ),
+ (
+ "tauri",
+ include_bytes!("../../assets/file-icons/mocha/tauri.svg"),
+ ),
+ (
+ "tauri-ignore",
+ include_bytes!("../../assets/file-icons/mocha/tauri-ignore.svg"),
+ ),
+ (
+ "terraform",
+ include_bytes!("../../assets/file-icons/mocha/terraform.svg"),
+ ),
+ (
+ "text",
+ include_bytes!("../../assets/file-icons/mocha/text.svg"),
+ ),
+ (
+ "todo",
+ include_bytes!("../../assets/file-icons/mocha/todo.svg"),
+ ),
+ (
+ "toml",
+ include_bytes!("../../assets/file-icons/mocha/toml.svg"),
+ ),
+ (
+ "turbo",
+ include_bytes!("../../assets/file-icons/mocha/turbo.svg"),
+ ),
+ (
+ "twig",
+ include_bytes!("../../assets/file-icons/mocha/twig.svg"),
+ ),
+ (
+ "twine",
+ include_bytes!("../../assets/file-icons/mocha/twine.svg"),
+ ),
+ (
+ "typescript",
+ include_bytes!("../../assets/file-icons/mocha/typescript.svg"),
+ ),
+ (
+ "typescript-config",
+ include_bytes!("../../assets/file-icons/mocha/typescript-config.svg"),
+ ),
+ (
+ "typescript-def",
+ include_bytes!("../../assets/file-icons/mocha/typescript-def.svg"),
+ ),
+ (
+ "typescript-react",
+ include_bytes!("../../assets/file-icons/mocha/typescript-react.svg"),
+ ),
+ (
+ "typescript-test",
+ include_bytes!("../../assets/file-icons/mocha/typescript-test.svg"),
+ ),
+ (
+ "typst",
+ include_bytes!("../../assets/file-icons/mocha/typst.svg"),
+ ),
+ (
+ "unity",
+ include_bytes!("../../assets/file-icons/mocha/unity.svg"),
+ ),
+ (
+ "unocss",
+ include_bytes!("../../assets/file-icons/mocha/unocss.svg"),
+ ),
+ (
+ "url",
+ include_bytes!("../../assets/file-icons/mocha/url.svg"),
+ ),
+ ("uv", include_bytes!("../../assets/file-icons/mocha/uv.svg")),
+ ("v", include_bytes!("../../assets/file-icons/mocha/v.svg")),
+ (
+ "vala",
+ include_bytes!("../../assets/file-icons/mocha/vala.svg"),
+ ),
+ (
+ "vanilla-extract",
+ include_bytes!("../../assets/file-icons/mocha/vanilla-extract.svg"),
+ ),
+ (
+ "vapi",
+ include_bytes!("../../assets/file-icons/mocha/vapi.svg"),
+ ),
+ (
+ "vento",
+ include_bytes!("../../assets/file-icons/mocha/vento.svg"),
+ ),
+ (
+ "vercel",
+ include_bytes!("../../assets/file-icons/mocha/vercel.svg"),
+ ),
+ (
+ "vercel-ignore",
+ include_bytes!("../../assets/file-icons/mocha/vercel-ignore.svg"),
+ ),
+ (
+ "verilog",
+ include_bytes!("../../assets/file-icons/mocha/verilog.svg"),
+ ),
+ (
+ "vhs",
+ include_bytes!("../../assets/file-icons/mocha/vhs.svg"),
+ ),
+ (
+ "video",
+ include_bytes!("../../assets/file-icons/mocha/video.svg"),
+ ),
+ (
+ "vim",
+ include_bytes!("../../assets/file-icons/mocha/vim.svg"),
+ ),
+ (
+ "visual-studio",
+ include_bytes!("../../assets/file-icons/mocha/visual-studio.svg"),
+ ),
+ (
+ "vital",
+ include_bytes!("../../assets/file-icons/mocha/vital.svg"),
+ ),
+ (
+ "vite",
+ include_bytes!("../../assets/file-icons/mocha/vite.svg"),
+ ),
+ (
+ "vitest",
+ include_bytes!("../../assets/file-icons/mocha/vitest.svg"),
+ ),
+ (
+ "vs-codium",
+ include_bytes!("../../assets/file-icons/mocha/vs-codium.svg"),
+ ),
+ (
+ "vscode",
+ include_bytes!("../../assets/file-icons/mocha/vscode.svg"),
+ ),
+ (
+ "vscode-ignore",
+ include_bytes!("../../assets/file-icons/mocha/vscode-ignore.svg"),
+ ),
+ (
+ "vue",
+ include_bytes!("../../assets/file-icons/mocha/vue.svg"),
+ ),
+ (
+ "vue-config",
+ include_bytes!("../../assets/file-icons/mocha/vue-config.svg"),
+ ),
+ (
+ "wally",
+ include_bytes!("../../assets/file-icons/mocha/wally.svg"),
+ ),
+ (
+ "web-assembly",
+ include_bytes!("../../assets/file-icons/mocha/web-assembly.svg"),
+ ),
+ (
+ "webpack",
+ include_bytes!("../../assets/file-icons/mocha/webpack.svg"),
+ ),
+ (
+ "windi",
+ include_bytes!("../../assets/file-icons/mocha/windi.svg"),
+ ),
+ (
+ "workflow",
+ include_bytes!("../../assets/file-icons/mocha/workflow.svg"),
+ ),
+ (
+ "wrangler",
+ include_bytes!("../../assets/file-icons/mocha/wrangler.svg"),
+ ),
+ (
+ "wxt",
+ include_bytes!("../../assets/file-icons/mocha/wxt.svg"),
+ ),
+ (
+ "xaml",
+ include_bytes!("../../assets/file-icons/mocha/xaml.svg"),
+ ),
+ (
+ "xcode",
+ include_bytes!("../../assets/file-icons/mocha/xcode.svg"),
+ ),
+ (
+ "xmake",
+ include_bytes!("../../assets/file-icons/mocha/xmake.svg"),
+ ),
+ (
+ "xml",
+ include_bytes!("../../assets/file-icons/mocha/xml.svg"),
+ ),
+ (
+ "yaml",
+ include_bytes!("../../assets/file-icons/mocha/yaml.svg"),
+ ),
+ (
+ "yarn",
+ include_bytes!("../../assets/file-icons/mocha/yarn.svg"),
+ ),
+ (
+ "yarn-lock",
+ include_bytes!("../../assets/file-icons/mocha/yarn-lock.svg"),
+ ),
+ (
+ "zap",
+ include_bytes!("../../assets/file-icons/mocha/zap.svg"),
+ ),
+ (
+ "zig",
+ include_bytes!("../../assets/file-icons/mocha/zig.svg"),
+ ),
+ (
+ "zip",
+ include_bytes!("../../assets/file-icons/mocha/zip.svg"),
+ ),
+];
diff --git a/frext/src/file_icon_table.rs b/frext/src/file_icon_table.rs
new file mode 100644
index 0000000..14b7dc9
--- /dev/null
+++ b/frext/src/file_icon_table.rs
@@ -0,0 +1,2332 @@
+//! Generated file-type icon lookup tables for the Catppuccin Mocha
+//! icon set (vendored from `catppuccin/zed-icons`, commit
+//! `6d953c8c7566b9e721d15b54e802dd77ae26fa9c`).
+//!
+//! This file is generated. Do not edit by hand; regenerate from the
+//! upstream manifest. See `assets/file-icons/` for the SVG assets and
+//! the module `crate::file_icon` for the runtime lookup that consumes
+//! these tables.
+
+/// The SVG stem used when no suffix or full-name rule matches a file.
+pub const DEFAULT_FILE: &str = "_file";
+
+/// The SVG stem for a collapsed directory with no specific rule.
+pub const DEFAULT_DIR_COLLAPSED: &str = "_folder";
+
+/// The SVG stem for an expanded directory with no specific rule.
+pub const DEFAULT_DIR_EXPANDED: &str = "_folder_open";
+
+/// Lower-priority match: file extension (suffix) to SVG stem.
+///
+/// Keys are matched case-sensitively against the longest trailing
+/// dotted component of the file name, then progressively shorter ones.
+pub const FILE_SUFFIXES: &[(&str, &str)] = &[
+ ("._sc_", "godot-assets"),
+ (".adonisrc.json", "adonis"),
+ (".alexrc", "alex"),
+ (".alexrc.js", "alex"),
+ (".alexrc.yaml", "alex"),
+ (".alexrc.yml", "alex"),
+ (".angular-cli.json", "angular"),
+ (".ansible-lint", "ansible-lint"),
+ (".babel-plugin-macrosrc", "babel"),
+ (".babel-plugin-macrosrc.js", "babel"),
+ (".babel-plugin-macrosrc.json", "babel"),
+ (".babel-plugin-macrosrc.yaml", "babel"),
+ (".babel-plugin-macrosrc.yml", "babel"),
+ (".babelrc", "babel"),
+ (".babelrc.cjs", "babel"),
+ (".babelrc.js", "babel"),
+ (".babelrc.json", "babel"),
+ (".babelrc.mjs", "babel"),
+ (".bazelrc", "bazel"),
+ (".blitz.config.compiled.js", "blitz"),
+ (".bowerrc", "bower"),
+ (".browserslistrc", "browserslist"),
+ (".codeclimate.yml", "code-climate"),
+ (".commitlint.yaml", "commitlint"),
+ (".commitlint.yml", "commitlint"),
+ (".commitlintrc", "commitlint"),
+ (".commitlintrc.cjs", "commitlint"),
+ (".commitlintrc.cts", "commitlint"),
+ (".commitlintrc.js", "commitlint"),
+ (".commitlintrc.json", "commitlint"),
+ (".commitlintrc.ts", "commitlint"),
+ (".commitlintrc.yaml", "commitlint"),
+ (".commitlintrc.yml", "commitlint"),
+ (".cspell.json", "cspell"),
+ (".cspell.yaml", "cspell"),
+ (".cspell.yml", "cspell"),
+ (".cursorignore", "cursor-ignore"),
+ (".cursorindexingignore", "cursor-ignore"),
+ (".cursorrules", "cursor"),
+ (".devcontainer.json", "devcontainer"),
+ (".ds_store", "macos"),
+ (".editorconfig", "editorconfig"),
+ (".eleventy.js", "eleventy"),
+ (".eleventyignore", "eleventy"),
+ (".ember-cli", "ember"),
+ (".ember-cli.js", "ember"),
+ (".env.alpha", "env"),
+ (".env.cat", "env"),
+ (".env.defaults", "env"),
+ (".env.dev", "env"),
+ (".env.dev.local", "env"),
+ (".env.development", "env"),
+ (".env.development.local", "env"),
+ (".env.dist", "env"),
+ (".env.e2e", "env"),
+ (".env.example", "env"),
+ (".env.local", "env"),
+ (".env.preview", "env"),
+ (".env.prod", "env"),
+ (".env.prod.local", "env"),
+ (".env.production", "env"),
+ (".env.production.local", "env"),
+ (".env.qa", "env"),
+ (".env.qa.local", "env"),
+ (".env.sample", "env"),
+ (".env.schema", "env"),
+ (".env.stage", "env"),
+ (".env.staging", "env"),
+ (".env.staging.local", "env"),
+ (".env.template", "env"),
+ (".env.test", "env"),
+ (".env.test.local", "env"),
+ (".env.testing", "env"),
+ (".env.uat", "env"),
+ (".envrc", "envrc"),
+ (".esformatter", "json"),
+ (".eslintcache,", "eslint-ignore"),
+ (".eslintignore", "eslint-ignore"),
+ (".eslintrc", "eslint"),
+ (".eslintrc-jsdoc.js", "eslint"),
+ (".eslintrc-md.js", "eslint"),
+ (".eslintrc.cjs", "eslint"),
+ (".eslintrc.js", "eslint"),
+ (".eslintrc.json", "eslint"),
+ (".eslintrc.yaml", "eslint"),
+ (".eslintrc.yml", "eslint"),
+ (".esmrc", "package-json"),
+ (".firebaserc", "firebase"),
+ (".flutter-plugins", "flutter"),
+ (".flutter-plugins-dependencies", "flutter"),
+ (".fvmrc", "fvm"),
+ (".gdignore", "godot-assets"),
+ (".git", "git"),
+ (".git-blame-ignore", "git"),
+ (".git-blame-ignore-revs", "git"),
+ (".git-for-windows-updater", "git"),
+ (".gitattributes", "git"),
+ (".gitattributes-global", "git"),
+ (".gitattributes_global", "git"),
+ (".gitconfig", "git"),
+ (".gitignore", "git"),
+ (".gitignore-global", "git"),
+ (".gitignore_global", "git"),
+ (".gitinclude", "git"),
+ (".gitkeep", "git"),
+ (".gitmessage", "git"),
+ (".gitmodules", "git"),
+ (".gitpod.yml", "gitpod"),
+ (".gitpreserve", "git"),
+ (".goreleaser.yaml", "release"),
+ (".graphqlconfig", "graphql"),
+ (".graphqlrc", "graphql"),
+ (".graphqlrc.cjs", "graphql"),
+ (".graphqlrc.js", "graphql"),
+ (".graphqlrc.json", "graphql"),
+ (".graphqlrc.toml", "graphql"),
+ (".graphqlrc.ts", "graphql"),
+ (".graphqlrc.yaml", "graphql"),
+ (".graphqlrc.yml", "graphql"),
+ (".helmignore", "helm"),
+ (".histoire.js", "histoire"),
+ (".histoire.ts", "histoire"),
+ (".htaccess", "xml"),
+ (".htpasswd", "key"),
+ (".huskyrc", "husky"),
+ (".huskyrc.js", "husky"),
+ (".huskyrc.json", "husky"),
+ (".huskyrc.yaml", "husky"),
+ (".huskyrc.yml", "husky"),
+ (".io-config.json", "ionic"),
+ (".jestrc", "jest"),
+ (".jestrc.js", "jest"),
+ (".jestrc.json", "jest"),
+ (".jsbeautifyrc", "json"),
+ (".jscsrc", "json"),
+ (".jshintrc", "json"),
+ (".justfile", "just"),
+ (".keep", "git"),
+ (".knip.jsonc", "knip"),
+ (".lintstagedrc", "lint-staged"),
+ (".lintstagedrc.cjs", "lint-staged"),
+ (".lintstagedrc.cts", "lint-staged"),
+ (".lintstagedrc.js", "lint-staged"),
+ (".lintstagedrc.json", "lint-staged"),
+ (".lintstagedrc.mjs", "lint-staged"),
+ (".lintstagedrc.mts", "lint-staged"),
+ (".lintstagedrc.ts", "lint-staged"),
+ (".lintstagedrc.yaml", "lint-staged"),
+ (".lintstagedrc.yml", "lint-staged"),
+ (".liquidrc", "liquid"),
+ (".liquidrc.json", "liquid"),
+ (".luacheckrc", "lua"),
+ (".luaurc", "luau-config"),
+ (".mantle-state.yml", "mantle"),
+ (".metadata", "flutter"),
+ (".mjmlconfig", "mjml"),
+ (".modernizrrc", "modernizr"),
+ (".modernizrrc.js", "modernizr"),
+ (".modernizrrc.json", "modernizr"),
+ (".nest-cli.json", "nest"),
+ (".nestconfig.json", "nest"),
+ (".node-version", "package-json"),
+ (".nowignore", "vercel-ignore"),
+ (".npmignore", "npm-ignore"),
+ (".npmrc", "npm"),
+ (".nuspec", "nuget"),
+ (".nuxtignore", "nuxt-ignore"),
+ (".nuxtrc", "nuxt"),
+ (".nvmrc", "package-json"),
+ (".nxignore", "nx-ignore"),
+ (".phrase.yaml", "phrase"),
+ (".phrase.yml", "phrase"),
+ (".phraseapp.yaml", "phrase"),
+ (".phraseapp.yml", "phrase"),
+ (".pnpmfile.cjs", "pnpm"),
+ (".postcssrc", "postcss"),
+ (".postcssrc.cjs", "postcss"),
+ (".postcssrc.cts", "postcss"),
+ (".postcssrc.js", "postcss"),
+ (".postcssrc.json", "postcss"),
+ (".postcssrc.ts", "postcss"),
+ (".postcssrc.yaml", "postcss"),
+ (".postcssrc.yml", "postcss"),
+ (".pre-commit-config.yaml", "pre-commit"),
+ (".pre-commit-hooks.yaml", "pre-commit"),
+ (".prettierignore", "prettier-ignore"),
+ (".prettierrc", "prettier"),
+ (".prettierrc.cjs", "prettier"),
+ (".prettierrc.cts", "prettier"),
+ (".prettierrc.js", "prettier"),
+ (".prettierrc.json", "prettier"),
+ (".prettierrc.json5", "prettier"),
+ (".prettierrc.mjs", "prettier"),
+ (".prettierrc.mts", "prettier"),
+ (".prettierrc.toml", "prettier"),
+ (".prettierrc.ts", "prettier"),
+ (".prettierrc.yaml", "prettier"),
+ (".prettierrc.yml", "prettier"),
+ (".prototools", "prototools"),
+ (".pug-lintrc", "pug"),
+ (".pug-lintrc.js", "pug"),
+ (".pug-lintrc.json", "pug"),
+ (".puppeteerrc", "puppeteer"),
+ (".puppeteerrc.cjs,", "puppeteer"),
+ (".puppeteerrc.js,", "puppeteer"),
+ (".puppeteerrc.json,", "puppeteer"),
+ (".puppeteerrc.yaml,", "puppeteer"),
+ (".python-version", "python-config"),
+ (".release-please-manifest.json", "gcp"),
+ (".releaserc", "semantic-release"),
+ (".releaserc.cjs", "semantic-release"),
+ (".releaserc.js", "semantic-release"),
+ (".releaserc.json", "semantic-release"),
+ (".releaserc.yaml", "semantic-release"),
+ (".releaserc.yml", "semantic-release"),
+ (".renovaterc", "renovate"),
+ (".renovaterc.json", "renovate"),
+ (".rhistory", "r"),
+ (".rock", "lua-rocks"),
+ (".rockspec", "lua-rocks"),
+ (".ruby-version", "ruby"),
+ (".ruff.toml", "ruff"),
+ (".rustfmt.toml", "rust-config"),
+ (".semgrepignore", "semgrep-ignore"),
+ (".sentryclirc", "sentry"),
+ (".sonarcloud.properties", "sonar-cloud"),
+ (".stackblitzrc", "stackblitz"),
+ (".stylelintcache", "stylelint-ignore"),
+ (".stylelintignore", "stylelint-ignore"),
+ (".stylelintrc", "stylelint"),
+ (".stylelintrc.cjs", "stylelint"),
+ (".stylelintrc.cts", "stylelint"),
+ (".stylelintrc.js", "stylelint"),
+ (".stylelintrc.json", "stylelint"),
+ (".stylelintrc.mjs", "stylelint"),
+ (".stylelintrc.mts", "stylelint"),
+ (".stylelintrc.ts", "stylelint"),
+ (".stylelintrc.yaml", "stylelint"),
+ (".stylelintrc.yml", "stylelint"),
+ (".styluaignore", "stylua-ignore"),
+ (".swiftformat", "swiftformat"),
+ (".taskrc.yaml", "taskfile"),
+ (".taskrc.yml", "taskfile"),
+ (".taurignore", "tauri-ignore"),
+ (".vercelignore", "vercel-ignore"),
+ (".vscodeignore", "vscode-ignore"),
+ (".vuerc", "vue-config"),
+ (".whitesource", "json"),
+ (".yarn-integrity", "yarn"),
+ (".yarnclean", "yarn"),
+ (".yarnrc", "yarn"),
+ (".yarnrc.yaml", "yarn"),
+ (".yarnrc.yml", "yarn"),
+ ("7z", "zip"),
+ ("CNAME", "http"),
+ ("Dockerfile", "docker"),
+ ("RData", "rdata"),
+ ("Rhistory", "r"),
+ ("Rmd", "rmd"),
+ ("Rproj", "rproj"),
+ ("Tauri.toml", "tauri"),
+ ("_sc_", "godot-assets"),
+ ("a51", "assembly"),
+ ("aac", "audio"),
+ ("ab", "amber"),
+ ("accdb", "database"),
+ ("ace", "adonis"),
+ ("ado", "stata"),
+ ("adoc", "asciidoc"),
+ ("aea", "assembly"),
+ ("aep", "adobe-ae"),
+ ("afphoto", "image"),
+ ("aftman.toml", "foreman"),
+ ("agc", "assembly"),
+ ("ags", "assembly"),
+ ("ahk", "autohotkey"),
+ ("ai", "adobe-ai"),
+ ("aiff", "audio"),
+ ("alac", "audio"),
+ ("amber", "amber"),
+ ("ami", "image"),
+ ("androidmanifest.xml", "android"),
+ ("angular-cli.json", "angular"),
+ ("angular.json", "angular"),
+ ("ansible-lint.yaml", "ansible-lint"),
+ ("ansible-lint.yml", "ansible-lint"),
+ ("apib", "api-blueprint"),
+ ("apiblueprint", "api-blueprint"),
+ ("apk", "android"),
+ ("apollo.config.js", "apollo"),
+ ("apollo.config.ts", "apollo"),
+ ("appfile", "fastlane"),
+ ("apple-app-site-association", "apple"),
+ ("apple-developer-merchantid-domain-association", "apple"),
+ ("applypatch-msg", "bash"),
+ ("apx", "image"),
+ ("argus", "assembly"),
+ ("arj", "zip"),
+ ("artisan", "laravel"),
+ ("asc", "key"),
+ ("asciidoc", "asciidoc"),
+ ("ase", "image"),
+ ("aseprite", "image"),
+ ("aseprite-extension", "zip"),
+ ("asm", "assembly"),
+ ("asp", "html"),
+ ("astro", "astro"),
+ ("astro.config.cjs", "astro-config"),
+ ("astro.config.cts", "astro-config"),
+ ("astro.config.js", "astro-config"),
+ ("astro.config.mjs", "astro-config"),
+ ("astro.config.mts", "astro-config"),
+ ("astro.config.ts", "astro-config"),
+ ("avi", "video"),
+ ("avif", "image"),
+ ("awk", "bash"),
+ ("axaml", "xaml"),
+ ("azure-pipelines-main.yaml", "azure-pipelines"),
+ ("azure-pipelines-main.yml", "azure-pipelines"),
+ ("azure-pipelines.yaml", "azure-pipelines"),
+ ("azure-pipelines.yml", "azure-pipelines"),
+ ("babel-plugin-macros.config.js", "babel"),
+ ("babel-transform.js", "babel"),
+ ("babel.config.cjs", "babel"),
+ ("babel.config.js", "babel"),
+ ("babel.config.json", "babel"),
+ ("babel.config.mjs", "babel"),
+ ("bash", "bash"),
+ ("bat", "batch"),
+ ("bazel", "bazel"),
+ ("benchmark.md", "benchmark"),
+ ("benchmark.rst", "benchmark"),
+ ("benchmark.txt", "benchmark"),
+ ("benchmarks.md", "benchmark"),
+ ("benchmarks.rst", "benchmark"),
+ ("benchmarks.txt", "benchmark"),
+ ("bib", "lib"),
+ ("bicep", "bicep"),
+ ("bicepconfig.json", "bicep"),
+ ("bicepparam", "bicep"),
+ ("bin", "binary"),
+ ("binsource", "assembly"),
+ ("biome.json", "biome"),
+ ("biome.jsonc", "biome"),
+ ("bitbucket-pipelines.yaml", "bitbucket"),
+ ("bitbucket-pipelines.yml", "bitbucket"),
+ ("blade.php", "laravel"),
+ ("blink", "blink"),
+ ("blitz.config.js", "blitz"),
+ ("blitz.config.ts", "blitz"),
+ ("bmap", "font"),
+ ("bmp", "image"),
+ ("book.toml", "mdbook"),
+ ("bower.json", "bower"),
+ ("bpg", "image"),
+ ("brk", "image"),
+ ("browserslist", "browserslist"),
+ ("bun.lock", "bun-lock"),
+ ("bun.lockb", "bun-lock"),
+ ("bunfig.toml", "bun"),
+ ("bz", "zip"),
+ ("bz2", "zip"),
+ ("bzl", "bazel"),
+ ("c", "c"),
+ ("c++", "cpp"),
+ ("cabal", "cabal"),
+ ("cabal.project", "cabal"),
+ ("caddyfile", "caddy"),
+ ("capacitor.config.json", "capacitor"),
+ ("capacitor.config.ts", "capacitor"),
+ ("cargo.lock", "cargo-lock"),
+ ("cargo.toml", "cargo"),
+ ("cbl", "cobol"),
+ ("cc", "cpp"),
+ ("cdp.pid", "json"),
+ ("cer", "certificate"),
+ ("cert", "certificate"),
+ ("cfg", "properties"),
+ ("changelog", "changelog"),
+ ("changelog.md", "changelog"),
+ ("changelog.rst", "changelog"),
+ ("changelog.txt", "changelog"),
+ ("changes", "changelog"),
+ ("changes.md", "changelog"),
+ ("changes.rst", "changelog"),
+ ("changes.txt", "changelog"),
+ ("chart.lock", "helm"),
+ ("circle.yml", "circle-ci"),
+ ("cjs", "javascript"),
+ ("cjs.map", "javascript-map"),
+ ("cl", "lisp"),
+ ("class", "java-class"),
+ ("client.lua", "lua-client"),
+ ("client.luau", "luau-client"),
+ ("cliff.toml", "git-cliff"),
+ ("clip", "image"),
+ ("clippy.toml", "rust-config"),
+ ("clj", "clojure"),
+ ("cljc", "clojure"),
+ ("cljs", "clojure"),
+ ("cls", "salesforce"),
+ ("cmake", "cmake"),
+ ("cmakecache.txt", "cmake"),
+ ("cmakelists.txt", "cmake"),
+ ("cmd", "batch"),
+ ("cmx", "ocaml"),
+ ("cob", "cobol"),
+ ("code-profile", "vscode"),
+ ("code-search", "search"),
+ ("code-snippets", "vscode"),
+ ("code-workplace", "vscode"),
+ ("code-workspace", "vscode"),
+ ("code_of_conduct", "code-of-conduct"),
+ ("code_of_conduct.md", "code-of-conduct"),
+ ("code_of_conduct.txt", "code-of-conduct"),
+ ("codeowners", "codeowners"),
+ ("coffee", "coffeescript"),
+ ("commit-msg", "bash"),
+ ("commitlint.config.cjs", "commitlint"),
+ ("commitlint.config.cts", "commitlint"),
+ ("commitlint.config.js", "commitlint"),
+ ("commitlint.config.ts", "commitlint"),
+ ("comp", "shader"),
+ ("comp.glsl", "shader"),
+ ("comp.hlsl", "shader"),
+ ("compose.alpha.yaml", "docker-compose"),
+ ("compose.alpha.yml", "docker-compose"),
+ ("compose.beta.yaml", "docker-compose"),
+ ("compose.beta.yml", "docker-compose"),
+ ("compose.ci.yaml", "docker-compose"),
+ ("compose.ci.yml", "docker-compose"),
+ ("compose.dev.yaml", "docker-compose"),
+ ("compose.dev.yml", "docker-compose"),
+ ("compose.development.yaml", "docker-compose"),
+ ("compose.development.yml", "docker-compose"),
+ ("compose.local.yaml", "docker-compose"),
+ ("compose.local.yml", "docker-compose"),
+ ("compose.override.yaml", "docker-compose"),
+ ("compose.override.yml", "docker-compose"),
+ ("compose.prod.yaml", "docker-compose"),
+ ("compose.prod.yml", "docker-compose"),
+ ("compose.production.yaml", "docker-compose"),
+ ("compose.production.yml", "docker-compose"),
+ ("compose.stage.yaml", "docker-compose"),
+ ("compose.stage.yml", "docker-compose"),
+ ("compose.staging.yaml", "docker-compose"),
+ ("compose.staging.yml", "docker-compose"),
+ ("compose.test.yaml", "docker-compose"),
+ ("compose.test.yml", "docker-compose"),
+ ("compose.testing.yaml", "docker-compose"),
+ ("compose.testing.yml", "docker-compose"),
+ ("compose.web.yaml", "docker-compose"),
+ ("compose.web.yml", "docker-compose"),
+ ("compose.worker.yaml", "docker-compose"),
+ ("compose.worker.yml", "docker-compose"),
+ ("compose.yaml", "docker-compose"),
+ ("compose.yml", "docker-compose"),
+ ("composer.lock", "json"),
+ ("compute.glsl", "shader"),
+ ("compute.hlsl", "shader"),
+ ("computeshader", "shader"),
+ ("conf", "properties"),
+ ("config", "properties"),
+ ("config.dart", "dart-generated"),
+ ("containerfile", "docker"),
+ ("containerfile.alpha", "docker"),
+ ("containerfile.beta", "docker"),
+ ("containerfile.ci", "docker"),
+ ("containerfile.dev", "docker"),
+ ("containerfile.development", "docker"),
+ ("containerfile.local", "docker"),
+ ("containerfile.prod", "docker"),
+ ("containerfile.production", "docker"),
+ ("containerfile.stage", "docker"),
+ ("containerfile.staging", "docker"),
+ ("containerfile.test", "docker"),
+ ("containerfile.testing", "docker"),
+ ("containerfile.web", "docker"),
+ ("containerfile.worker", "docker"),
+ ("containerignore", "docker-ignore"),
+ ("contributing", "contributing"),
+ ("contributing.md", "contributing"),
+ ("contributing.rst", "contributing"),
+ ("contributing.txt", "contributing"),
+ ("copying", "license"),
+ ("copying.md", "license"),
+ ("copying.rst", "license"),
+ ("copying.txt", "license"),
+ ("copyright", "license"),
+ ("copyright.md", "license"),
+ ("copyright.rst", "license"),
+ ("copyright.txt", "license"),
+ ("cp", "cpp"),
+ ("cpp", "cpp"),
+ ("cpt", "image"),
+ ("cr", "crystal"),
+ ("crt", "certificate"),
+ ("cs", "csharp"),
+ ("csh", "bash"),
+ ("csharp", "csharp"),
+ ("cshtml", "razor"),
+ ("cson", "coffeescript"),
+ ("cspell.config.cjs", "cspell"),
+ ("cspell.config.js", "cspell"),
+ ("cspell.config.yaml", "cspell"),
+ ("cspell.config.yml", "cspell"),
+ ("cspell.json", "cspell"),
+ ("cspell.yaml", "cspell"),
+ ("cspell.yml", "cspell"),
+ ("csproj", "visual-studio"),
+ ("csproj.user", "visual-studio"),
+ ("css", "css"),
+ ("css.map", "css-map"),
+ ("css.ts", "vanilla-extract"),
+ ("csv", "csv"),
+ ("csx", "csharp"),
+ ("cts", "typescript"),
+ ("cu", "cuda"),
+ ("cue", "cue"),
+ ("cuh", "cuda"),
+ ("cur", "image"),
+ ("cxx", "cpp"),
+ ("cy.js", "javascript-test"),
+ ("cy.jsx", "javascript-test"),
+ ("cy.ts", "typescript-test"),
+ ("cy.tsx", "typescript-test"),
+ ("cypress.config.cjs", "cypress"),
+ ("cypress.config.js", "cypress"),
+ ("cypress.config.mjs", "cypress"),
+ ("cypress.config.ts", "cypress"),
+ ("cypress.env.json", "cypress"),
+ ("cypress.json", "cypress"),
+ ("d", "d"),
+ ("d.cts", "typescript-def"),
+ ("d.mts", "typescript-def"),
+ ("d.ts", "typescript-def"),
+ ("darklua.json", "darklua"),
+ ("darklua.json5", "darklua"),
+ ("dart", "dart"),
+ ("dat", "database"),
+ ("db", "zip"),
+ ("db3", "database"),
+ ("dds", "image"),
+ ("deliverfile", "fastlane"),
+ ("deno.json", "deno"),
+ ("deno.jsonc", "deno"),
+ ("deno.lock", "deno_lock"),
+ ("dependabot.yaml", "dependabot"),
+ ("dependabot.yml", "dependabot"),
+ ("devcontainer.json", "devcontainer"),
+ ("dex", "android"),
+ ("dhall", "dhall"),
+ ("dhallb", "dhall"),
+ ("di", "d"),
+ ("dio", "drawio"),
+ ("directory.build.props", "msbuild"),
+ ("directory.build.rsp", "msbuild"),
+ ("directory.build.targets", "msbuild"),
+ ("directory.packages.props", "msbuild"),
+ ("djt", "django"),
+ ("dlc", "properties"),
+ ("dmn", "xml"),
+ ("dng", "image"),
+ ("do", "stata"),
+ ("doc", "ms-word"),
+ ("docker-compose.alpha.yaml", "docker-compose"),
+ ("docker-compose.alpha.yml", "docker-compose"),
+ ("docker-compose.beta.yaml", "docker-compose"),
+ ("docker-compose.beta.yml", "docker-compose"),
+ ("docker-compose.ci.yaml", "docker-compose"),
+ ("docker-compose.ci.yml", "docker-compose"),
+ ("docker-compose.dev.yaml", "docker-compose"),
+ ("docker-compose.dev.yml", "docker-compose"),
+ ("docker-compose.development.yaml", "docker-compose"),
+ ("docker-compose.development.yml", "docker-compose"),
+ ("docker-compose.local.yaml", "docker-compose"),
+ ("docker-compose.local.yml", "docker-compose"),
+ ("docker-compose.override.yaml", "docker-compose"),
+ ("docker-compose.override.yml", "docker-compose"),
+ ("docker-compose.prod.yaml", "docker-compose"),
+ ("docker-compose.prod.yml", "docker-compose"),
+ ("docker-compose.production.yaml", "docker-compose"),
+ ("docker-compose.production.yml", "docker-compose"),
+ ("docker-compose.stage.yaml", "docker-compose"),
+ ("docker-compose.stage.yml", "docker-compose"),
+ ("docker-compose.staging.yaml", "docker-compose"),
+ ("docker-compose.staging.yml", "docker-compose"),
+ ("docker-compose.test.yaml", "docker-compose"),
+ ("docker-compose.test.yml", "docker-compose"),
+ ("docker-compose.testing.yaml", "docker-compose"),
+ ("docker-compose.testing.yml", "docker-compose"),
+ ("docker-compose.web.yaml", "docker-compose"),
+ ("docker-compose.web.yml", "docker-compose"),
+ ("docker-compose.worker.yaml", "docker-compose"),
+ ("docker-compose.worker.yml", "docker-compose"),
+ ("docker-compose.yaml", "docker-compose"),
+ ("docker-compose.yml", "docker-compose"),
+ ("dockerfile", "docker"),
+ ("dockerfile.alpha", "docker"),
+ ("dockerfile.beta", "docker"),
+ ("dockerfile.ci", "docker"),
+ ("dockerfile.dev", "docker"),
+ ("dockerfile.development", "docker"),
+ ("dockerfile.local", "docker"),
+ ("dockerfile.prod", "docker"),
+ ("dockerfile.production", "docker"),
+ ("dockerfile.stage", "docker"),
+ ("dockerfile.staging", "docker"),
+ ("dockerfile.test", "docker"),
+ ("dockerfile.testing", "docker"),
+ ("dockerfile.web", "docker"),
+ ("dockerfile.worker", "docker"),
+ ("dockerignore", "docker-ignore"),
+ ("docm", "ms-word"),
+ ("docusaurus.config.cjs", "docusaurus"),
+ ("docusaurus.config.js", "docusaurus"),
+ ("docusaurus.config.mjs", "docusaurus"),
+ ("docusaurus.config.ts", "docusaurus"),
+ ("docx", "ms-word"),
+ ("dot", "ms-word"),
+ ("dotm", "ms-word"),
+ ("dotx", "ms-word"),
+ ("drawio", "drawio"),
+ ("drizzle.config.js", "drizzle-orm"),
+ ("drizzle.config.ts", "drizzle-orm"),
+ ("dta", "stata"),
+ ("dtd", "xml"),
+ ("dtx", "latex"),
+ ("dub.json", "dub"),
+ ("dub.sdl", "dub"),
+ ("dub.selections.json", "dub-selections"),
+ ("e2e-spec.cjs", "javascript-test"),
+ ("e2e-spec.cts", "typescript-test"),
+ ("e2e-spec.js", "javascript-test"),
+ ("e2e-spec.mjs", "javascript-test"),
+ ("e2e-spec.mts", "typescript-test"),
+ ("e2e-spec.ts", "typescript-test"),
+ ("ecr", "crystal"),
+ ("eex", "elixir"),
+ ("ejs", "ejs"),
+ ("eleventy.config.cjs", "eleventy"),
+ ("eleventy.config.js", "eleventy"),
+ ("eleventy.config.mjs", "eleventy"),
+ ("elm", "elm"),
+ ("ember-cli-builds.js", "ember"),
+ ("entitlements", "certificate"),
+ ("env", "env"),
+ ("eot", "font"),
+ ("epp", "puppet"),
+ ("eps", "image"),
+ ("erb", "ruby"),
+ ("erl", "erlang"),
+ ("esbuild.cjs", "esbuild"),
+ ("esbuild.config.cjs", "esbuild"),
+ ("esbuild.config.js", "esbuild"),
+ ("esbuild.config.mjs", "esbuild"),
+ ("esbuild.config.ts", "esbuild"),
+ ("esbuild.js", "esbuild"),
+ ("esbuild.mjs", "esbuild"),
+ ("esbuild.ts", "esbuild"),
+ ("eslint.config.cjs", "eslint"),
+ ("eslint.config.cts", "eslint"),
+ ("eslint.config.js", "eslint"),
+ ("eslint.config.mjs", "eslint"),
+ ("eslint.config.mts", "eslint"),
+ ("eslint.config.ts", "eslint"),
+ ("esx", "javascript"),
+ ("ex", "elixir"),
+ ("exe", "exe"),
+ ("exr", "image"),
+ ("exrc", "vim"),
+ ("exs", "elixir"),
+ ("f", "fortran"),
+ ("f03", "fortran"),
+ ("f08", "fortran"),
+ ("f77", "fortran"),
+ ("f90", "fortran"),
+ ("f95", "fortran"),
+ ("fast", "lisp"),
+ ("fastfile", "fastlane"),
+ ("favicon.ico", "favicon"),
+ ("fbx", "3d"),
+ ("feature", "cucumber"),
+ ("features", "cucumber"),
+ ("fig", "figma"),
+ ("firebase.json", "firebase"),
+ ("firestore.indexes.json", "firebase"),
+ ("firestore.rules", "firebase"),
+ ("fish", "bash"),
+ ("flac", "audio"),
+ ("flake.lock", "nix-lock"),
+ ("flv", "video"),
+ ("fnt", "font"),
+ ("font", "font"),
+ ("fonts", "font"),
+ ("for", "fortran"),
+ ("foreman.toml", "foreman"),
+ ("fpx", "image"),
+ ("frag", "shader"),
+ ("frag.glsl", "shader"),
+ ("fragment.glsl", "shader"),
+ ("fragmentshader", "shader"),
+ ("freezed.dart", "dart-generated"),
+ ("fs", "fsharp"),
+ ("fs.glsl", "shader"),
+ ("fsi", "fsharp"),
+ ("fsproj", "visual-studio"),
+ ("fsproj.user", "visual-studio"),
+ ("fsx", "fsharp"),
+ ("fvm_config.json", "fvm"),
+ ("g.dart", "dart-generated"),
+ ("g4", "antlr"),
+ ("gatsby-browser.js", "gatsby"),
+ ("gatsby-browser.tsx", "gatsby"),
+ ("gatsby-config.js", "gatsby"),
+ ("gatsby-config.mjs", "gatsby"),
+ ("gatsby-config.ts", "gatsby"),
+ ("gatsby-node.js", "gatsby"),
+ ("gatsby-node.mjs", "gatsby"),
+ ("gatsby-node.ts", "gatsby"),
+ ("gatsby-ssr.js", "gatsby"),
+ ("gatsby-ssr.tsx", "gatsby"),
+ ("gbr", "image"),
+ ("gd", "godot"),
+ ("gd.uid", "godot-assets"),
+ ("gdextension", "godot-assets"),
+ ("gdnlib", "godot-assets"),
+ ("gdns", "godot-assets"),
+ ("gdshader", "godot-assets"),
+ ("gdshaderinc", "godot-assets"),
+ ("gemfile", "ruby-gem"),
+ ("gemfile.lock", "ruby-gem-lock"),
+ ("geom", "shader"),
+ ("geom.glsl", "shader"),
+ ("geom.hlsl", "shader"),
+ ("geometry.glsl", "shader"),
+ ("geometry.hlsl", "shader"),
+ ("geometryshader", "shader"),
+ ("gif", "image"),
+ ("gifv", "video"),
+ ("git-history", "git"),
+ ("gitlab-ci.yaml", "gitlab"),
+ ("gitlab-ci.yml", "gitlab"),
+ ("glb", "3d"),
+ ("gleam", "gleam"),
+ ("gleam.toml", "gleam-config"),
+ ("glsl", "shader"),
+ ("gltf", "3d"),
+ ("gnumakefile", "makefile"),
+ ("go", "go"),
+ ("go.html", "go-template"),
+ ("go.mod", "go-mod"),
+ ("go.sum", "go-mod"),
+ ("go.tmp", "go-template"),
+ ("go.work", "go-mod"),
+ ("go.work.sum", "go-mod"),
+ ("godot", "godot-assets"),
+ ("gohtml", "go-template"),
+ ("gotmpl", "go-template"),
+ ("gpg", "key"),
+ ("gql", "graphql"),
+ ("gr.dart", "dart-generated"),
+ ("gradle", "gradle"),
+ ("gradle-wrapper.properties", "gradle"),
+ ("gradle.properties", "gradle"),
+ ("gradlew", "gradle"),
+ ("graphql", "graphql"),
+ ("graphql.config.cjs", "graphql"),
+ ("graphql.config.js", "graphql"),
+ ("graphql.config.json", "graphql"),
+ ("graphql.config.toml", "graphql"),
+ ("graphql.config.ts", "graphql"),
+ ("graphql.config.yaml", "graphql"),
+ ("graphql.config.yml", "graphql"),
+ ("groovy", "groovy"),
+ ("gs.glsl", "shader"),
+ ("gulpfile.babel.js", "gulp"),
+ ("gulpfile.cts", "gulp"),
+ ("gulpfile.js", "gulp"),
+ ("gulpfile.mjs", "gulp"),
+ ("gulpfile.mts", "gulp"),
+ ("gulpfile.ts", "gulp"),
+ ("gvimrc", "vim"),
+ ("gymfile", "fastlane"),
+ ("gz", "zip"),
+ ("h", "c-header"),
+ ("h++", "cpp-header"),
+ ("ha", "hare"),
+ ("hacking", "hacking"),
+ ("hacking.md", "hacking"),
+ ("hacking.txt", "hacking"),
+ ("haml", "haml"),
+ ("hardhat.config.js", "hardhat"),
+ ("hardhat.config.ts", "hardhat"),
+ ("hbs", "handlebars"),
+ ("heex", "elixir"),
+ ("heic", "image"),
+ ("heif", "image"),
+ ("hh", "cpp-header"),
+ ("histoire.config.js", "histoire"),
+ ("histoire.config.ts", "histoire"),
+ ("hjson", "json"),
+ ("hlsl", "shader"),
+ ("hp", "cpp-header"),
+ ("hpp", "cpp-header"),
+ ("hs", "haskell"),
+ ("htm", "html"),
+ ("html", "html"),
+ ("html_vm", "html"),
+ ("http", "http"),
+ ("huff", "huff"),
+ ("hugo.json", "hugo"),
+ ("hugo.toml", "hugo"),
+ ("hugo.yaml", "hugo"),
+ ("humans.txt", "humans"),
+ ("husky.config.js", "husky"),
+ ("hx", "haxe"),
+ ("hxx", "cpp-header"),
+ ("i", "c"),
+ ("iced", "coffeescript"),
+ ("icns", "image"),
+ ("ico", "image"),
+ ("ii", "cpp"),
+ ("img", "image"),
+ ("iml", "xml"),
+ ("inc", "assembly"),
+ ("indb", "adobe-id"),
+ ("indd", "adobe-id"),
+ ("indl", "adobe-id"),
+ ("ini", "properties"),
+ ("inky.php", "laravel"),
+ ("inl", "cpp-header"),
+ ("ino", "arduino"),
+ ("ionic.config.json", "ionic"),
+ ("ipynb", "jupyter"),
+ ("j2", "jinja"),
+ ("jade", "pug"),
+ ("jar", "java-jar"),
+ ("java", "java"),
+ ("jb2", "image"),
+ ("jbig2", "image"),
+ ("jest-e2e.config.cjs", "jest"),
+ ("jest-e2e.config.cts", "jest"),
+ ("jest-e2e.config.js", "jest"),
+ ("jest-e2e.config.json", "jest"),
+ ("jest-e2e.config.mjs", "jest"),
+ ("jest-e2e.config.mts", "jest"),
+ ("jest-e2e.config.ts", "jest"),
+ ("jest-e2e.json", "jest"),
+ ("jest-github-actions-reporter.js", "jest"),
+ ("jest-preset.cjs", "jest"),
+ ("jest-preset.js", "jest"),
+ ("jest-preset.json", "jest"),
+ ("jest-preset.mjs", "jest"),
+ ("jest-unit.config.js", "jest"),
+ ("jest.config.cjs", "jest"),
+ ("jest.config.cts", "jest"),
+ ("jest.config.js", "jest"),
+ ("jest.config.json", "jest"),
+ ("jest.config.mjs", "jest"),
+ ("jest.config.mts", "jest"),
+ ("jest.config.ts", "jest"),
+ ("jest.e2e.config.cjs", "jest"),
+ ("jest.e2e.config.cts", "jest"),
+ ("jest.e2e.config.js", "jest"),
+ ("jest.e2e.config.json", "jest"),
+ ("jest.e2e.config.mjs", "jest"),
+ ("jest.e2e.config.mts", "jest"),
+ ("jest.e2e.config.ts", "jest"),
+ ("jest.e2e.json", "jest"),
+ ("jest.json", "jest"),
+ ("jest.preset.cjs", "jest"),
+ ("jest.preset.js", "jest"),
+ ("jest.preset.json", "jest"),
+ ("jest.preset.mjs", "jest"),
+ ("jest.setup.js", "jest"),
+ ("jest.setup.ts", "jest"),
+ ("jest.teardown.js", "jest"),
+ ("jfif", "image"),
+ ("jinja", "jinja"),
+ ("jinja-html", "jinja"),
+ ("jinja2", "jinja"),
+ ("jl", "julia"),
+ ("jng", "image"),
+ ("jpeg", "image"),
+ ("jpg", "image"),
+ ("jrxml", "xml"),
+ ("js", "javascript"),
+ ("js.map", "javascript-map"),
+ ("js.snap", "javascript-test"),
+ ("jsconfig.json", "javascript-config"),
+ ("json", "json"),
+ ("json5", "json"),
+ ("jsonc", "json"),
+ ("jsonl", "json"),
+ ("jsp", "java"),
+ ("jsx", "javascript-react"),
+ ("jsx.snap", "javascript-test"),
+ ("jucer", "juce"),
+ ("jule", "jule"),
+ ("jule.mod", "jule"),
+ ("just", "just"),
+ ("justfile", "just"),
+ ("jvm.config", "apache"),
+ ("jxr", "image"),
+ ("kbuild", "makefile"),
+ ("kdl", "kdl"),
+ ("key", "key"),
+ ("keystore", "key"),
+ ("knip.config.js", "knip"),
+ ("knip.config.ts", "knip"),
+ ("knip.js", "knip"),
+ ("knip.json", "knip"),
+ ("knip.jsonc", "knip"),
+ ("knip.ts", "knip"),
+ ("kra", "image"),
+ ("ksh", "bash"),
+ ("kt", "kotlin"),
+ ("kts", "kotlin"),
+ ("latte", "latte"),
+ ("leex", "elixir"),
+ ("lerna.json", "lerna"),
+ ("less", "less"),
+ ("lib", "lib"),
+ ("licence", "license"),
+ ("licence-agpl", "license"),
+ ("licence-apache", "license"),
+ ("licence-bsd", "license"),
+ ("licence-gpl", "license"),
+ ("licence-lgpl", "license"),
+ ("licence-mit", "license"),
+ ("licence.md", "license"),
+ ("licence.rst", "license"),
+ ("licence.txt", "license"),
+ ("license", "license"),
+ ("license-agpl", "license"),
+ ("license-apache", "license"),
+ ("license-bsd", "license"),
+ ("license-gpl", "license"),
+ ("license-lgpl", "license"),
+ ("license-mit", "license"),
+ ("license.md", "license"),
+ ("license.rst", "license"),
+ ("license.txt", "license"),
+ ("lint-staged.config.cjs", "lint-staged"),
+ ("lint-staged.config.cts", "lint-staged"),
+ ("lint-staged.config.js", "lint-staged"),
+ ("lint-staged.config.mjs", "lint-staged"),
+ ("lint-staged.config.mts", "lint-staged"),
+ ("lint-staged.config.ts", "lint-staged"),
+ ("liquid", "liquid"),
+ ("lisp", "lisp"),
+ ("log", "log"),
+ ("lsp", "lisp"),
+ ("ltx", "latex"),
+ ("lua", "lua"),
+ ("luau", "luau"),
+ ("m", "matlab"),
+ ("m2v", "video"),
+ ("m4a", "audio"),
+ ("m4p", "audio"),
+ ("m4v", "video"),
+ ("ma", "3d"),
+ ("makefile", "makefile"),
+ ("manifest", "xml"),
+ ("mantle.yml", "mantle"),
+ ("markdown", "markdown"),
+ ("marko", "marko"),
+ ("mat", "matlab"),
+ ("matchfile", "fastlane"),
+ ("maven.config", "apache"),
+ ("mb", "3d"),
+ ("md", "markdown"),
+ ("mdb", "database"),
+ ("mdp", "image"),
+ ("mdx", "markdown-mdx"),
+ ("mermaid", "mermaid"),
+ ("meson.build", "meson"),
+ ("meson_options.txt", "meson"),
+ ("mi", "c"),
+ ("mid", "midi"),
+ ("midi", "midi"),
+ ("mii", "cpp"),
+ ("mitigus", "assembly"),
+ ("mjml", "mjml"),
+ ("mjs", "javascript"),
+ ("mjs.map", "javascript-map"),
+ ("mk", "makefile"),
+ ("mkv", "video"),
+ ("ml", "ocaml"),
+ ("mli", "ocaml"),
+ ("mmd", "mermaid"),
+ ("mogg", "audio"),
+ ("moon.yaml", "moonrepo"),
+ ("moon.yml", "moonrepo"),
+ ("moonwave.toml", "moonwave"),
+ ("mov", "video"),
+ ("mp2", "video"),
+ ("mp3", "audio"),
+ ("mp4", "video"),
+ ("mpe", "video"),
+ ("mpeg", "video"),
+ ("mpg", "video"),
+ ("mpv", "video"),
+ ("mrf", "font"),
+ ("ms", "assembly"),
+ ("msi", "exe"),
+ ("mts", "typescript"),
+ ("mustache", "handlebars"),
+ ("nasm", "assembly"),
+ ("nativescript.config.js", "nativescript"),
+ ("nativescript.config.ts", "nativescript"),
+ ("ndjson", "json"),
+ ("nest-cli.json", "nest"),
+ ("nestconfig.json", "nest"),
+ ("netlify.json", "netlify"),
+ ("netlify.toml", "netlify"),
+ ("netlify.yaml", "netlify"),
+ ("netlify.yml", "netlify"),
+ ("next.config.js", "next"),
+ ("next.config.mjs", "next"),
+ ("next.config.mts", "next"),
+ ("next.config.ts", "next"),
+ ("nf", "nextflow"),
+ ("ng-package.json", "angular"),
+ ("ng-template", "angular"),
+ ("nginx", "nginx"),
+ ("nginx.conf", "nginx"),
+ ("nginxconf", "nginx"),
+ ("nginxconfig", "nginx"),
+ ("nim", "nim"),
+ ("nimble", "nim"),
+ ("ninja", "ninja"),
+ ("nix", "nix"),
+ ("njk", "nunjucks"),
+ ("nodemon-debug.json", "nodemon"),
+ ("nodemon.json", "nodemon"),
+ ("now.json", "vercel"),
+ ("nqp", "perl"),
+ ("ntf", "font"),
+ ("nuget.config", "nuget"),
+ ("nuget.exe", "nuget"),
+ ("nunjucks", "nunjucks"),
+ ("nupkg", "nuget"),
+ ("nut", "squirrel"),
+ ("nuxt.config.js", "nuxt"),
+ ("nuxt.config.ts", "nuxt"),
+ ("nx.json", "nx"),
+ ("obj", "3d"),
+ ("odin", "odin"),
+ ("odp", "ms-powerpoint"),
+ ("ods", "ms-excel"),
+ ("odt", "ms-word"),
+ ("odttf", "font"),
+ ("oga", "audio"),
+ ("ogg", "video"),
+ ("ogv", "video"),
+ ("option", "properties"),
+ ("opus", "audio"),
+ ("ora", "image"),
+ ("org", "org"),
+ ("otf", "font"),
+ ("owners", "codeowners"),
+ ("p", "prolog"),
+ ("p6", "perl"),
+ ("package-lock.json", "npm-lock"),
+ ("package.json", "package-json"),
+ ("panda.config.cjs", "panda-css"),
+ ("panda.config.js", "panda-css"),
+ ("panda.config.mjs", "panda-css"),
+ ("panda.config.mts", "panda-css"),
+ ("panda.config.ts", "panda-css"),
+ ("paq8n", "zip"),
+ ("paq8o", "zip"),
+ ("passwd", "key"),
+ ("patch", "git"),
+ ("pbm", "image"),
+ ("pcss", "postcss"),
+ ("pdb", "database"),
+ ("pdf", "pdf"),
+ ("pdn", "image"),
+ ("pem", "key"),
+ ("pesde.lock", "pesde-lock"),
+ ("pesde.toml", "pesde"),
+ ("pfx", "certificate"),
+ ("pgf", "image"),
+ ("pgm", "image"),
+ ("pgsql", "database"),
+ ("php", "php"),
+ ("phtml", "phtml"),
+ ("pic", "image"),
+ ("pixel.hlsl", "shader"),
+ ("pixi.lock", "pixi-lock"),
+ ("pixi.toml", "pixi"),
+ ("pkb", "database"),
+ ("pkg", "zip"),
+ ("pks", "database"),
+ ("pl", "perl"),
+ ("pl6", "perl"),
+ ("plantuml", "plantuml"),
+ ("playwright-ct.config.js", "playwright"),
+ ("playwright-ct.config.mjs", "playwright"),
+ ("playwright-ct.config.ts", "playwright"),
+ ("playwright.config.base.js", "playwright"),
+ ("playwright.config.base.mjs", "playwright"),
+ ("playwright.config.base.ts", "playwright"),
+ ("playwright.config.js", "playwright"),
+ ("playwright.config.mjs", "playwright"),
+ ("playwright.config.ts", "playwright"),
+ ("plist", "xml"),
+ ("plopfile.cjs", "plop"),
+ ("plopfile.js", "plop"),
+ ("plopfile.mjs", "plop"),
+ ("plopfile.ts", "plop"),
+ ("plpgsql", "database"),
+ ("pm", "perl"),
+ ("pm6", "perl"),
+ ("png", "image"),
+ ("pnm", "image"),
+ ("pnpm-lock.yaml", "pnpm-lock"),
+ ("pnpm-workspace.yaml", "pnpm"),
+ ("pod", "perl"),
+ ("poetry.lock", "poetry-lock"),
+ ("pom.xml", "apache"),
+ ("post-applypatch", "bash"),
+ ("post-checkout", "bash"),
+ ("post-commit", "bash"),
+ ("post-merge", "bash"),
+ ("post-receive", "bash"),
+ ("post-rewrite", "bash"),
+ ("post-update", "bash"),
+ ("postcss.config.cjs", "postcss"),
+ ("postcss.config.cts", "postcss"),
+ ("postcss.config.js", "postcss"),
+ ("postcss.config.mjs", "postcss"),
+ ("postcss.config.mts", "postcss"),
+ ("postcss.config.ts", "postcss"),
+ ("postgres", "database"),
+ ("potm", "ms-powerpoint"),
+ ("potx", "ms-powerpoint"),
+ ("pp", "puppet"),
+ ("ppa", "ms-powerpoint"),
+ ("ppam", "ms-powerpoint"),
+ ("ppm", "image"),
+ ("pps", "ms-powerpoint"),
+ ("ppsm", "ms-powerpoint"),
+ ("ppsx", "ms-powerpoint"),
+ ("ppt", "ms-powerpoint"),
+ ("pptm", "ms-powerpoint"),
+ ("pptx", "ms-powerpoint"),
+ ("prc", "3d"),
+ ("pre-applypatch", "bash"),
+ ("pre-auto-gc", "bash"),
+ ("pre-commit", "bash"),
+ ("pre-push", "bash"),
+ ("pre-rebase", "bash"),
+ ("pre-receive", "bash"),
+ ("prefs", "properties"),
+ ("premake.lua", "premake"),
+ ("premake4.lua", "premake"),
+ ("premake5.lua", "premake"),
+ ("prepare-commit-message", "bash"),
+ ("prettier.config.cjs", "prettier"),
+ ("prettier.config.cts", "prettier"),
+ ("prettier.config.js", "prettier"),
+ ("prettier.config.mjs", "prettier"),
+ ("prettier.config.mts", "prettier"),
+ ("prettier.config.ts", "prettier"),
+ ("prisma", "prisma"),
+ ("prisma.config.cjs", "prisma"),
+ ("prisma.config.cts", "prisma"),
+ ("prisma.config.js", "prisma"),
+ ("prisma.config.mjs", "prisma"),
+ ("prisma.config.mts", "prisma"),
+ ("prisma.config.ts", "prisma"),
+ ("prisma.yml", "prisma"),
+ ("pro", "prolog"),
+ ("procfile", "heroku"),
+ ("project", "xml"),
+ ("prop", "properties"),
+ ("properties", "properties"),
+ ("props", "properties"),
+ ("proto", "proto"),
+ ("ps1", "powershell"),
+ ("ps1xml", "powershell"),
+ ("psb", "image"),
+ ("psc1", "powershell"),
+ ("psd", "adobe-ps"),
+ ("psd1", "powershell"),
+ ("psgi", "perl"),
+ ("psm1", "powershell"),
+ ("psql", "database"),
+ ("pssc", "powershell"),
+ ("psv", "csv"),
+ ("pu", "plantuml"),
+ ("pub", "key"),
+ ("pug", "pug"),
+ ("puml", "plantuml"),
+ ("puppeteer.config.cjs", "puppeteer"),
+ ("puppeteer.config.js", "puppeteer"),
+ ("px.hlsl", "shader"),
+ ("py", "python"),
+ ("pyc", "python-compiled"),
+ ("pyd", "python-compiled"),
+ ("pyo", "python-compiled"),
+ ("pyproject.toml", "python-config"),
+ ("qt", "video"),
+ ("r", "r"),
+ ("raku", "perl"),
+ ("rakudoc", "perl"),
+ ("rakumod", "perl"),
+ ("rakutest", "perl"),
+ ("rar", "zip"),
+ ("raw", "image"),
+ ("rb", "ruby"),
+ ("rbs", "ruby"),
+ ("rbxl", "roblox"),
+ ("rbxlx", "roblox"),
+ ("rbxm", "roblox"),
+ ("rbxmx", "roblox"),
+ ("rdata", "rdata"),
+ ("re", "reason"),
+ ("readme", "readme"),
+ ("readme.md", "readme"),
+ ("readme.rst", "readme"),
+ ("readme.txt", "readme"),
+ ("reb", "image"),
+ ("redwood.toml", "redwood"),
+ ("rei", "reason"),
+ ("release-please-config.json", "gcp"),
+ ("release.config.cjs", "semantic-release"),
+ ("release.config.js", "semantic-release"),
+ ("remix.config.js", "remix"),
+ ("remix.config.ts", "remix"),
+ ("renovate-config.json", "renovate"),
+ ("renovate.json", "renovate"),
+ ("renovate.json5", "renovate"),
+ ("requirements-dev.txt", "python-config"),
+ ("requirements-test.txt", "python-config"),
+ ("requirements.txt", "python-config"),
+ ("res", "rescript"),
+ ("rest", "http"),
+ ("resx", "xml"),
+ ("rkt", "racket"),
+ ("rm", "video"),
+ ("rmd", "rmd"),
+ ("rmvb", "video"),
+ ("robots.txt", "robots"),
+ ("rocket.toml", "rocket"),
+ ("rokit.toml", "rokit"),
+ ("rollup-config.js", "rollup"),
+ ("rollup-config.mjs", "rollup"),
+ ("rollup-config.ts", "rollup"),
+ ("rollup.config.base.js", "rollup"),
+ ("rollup.config.base.mjs", "rollup"),
+ ("rollup.config.base.ts", "rollup"),
+ ("rollup.config.common.js", "rollup"),
+ ("rollup.config.common.mjs", "rollup"),
+ ("rollup.config.common.ts", "rollup"),
+ ("rollup.config.dev.js", "rollup"),
+ ("rollup.config.dev.mjs", "rollup"),
+ ("rollup.config.dev.ts", "rollup"),
+ ("rollup.config.js", "rollup"),
+ ("rollup.config.mjs", "rollup"),
+ ("rollup.config.prod.js", "rollup"),
+ ("rollup.config.prod.mjs", "rollup"),
+ ("rollup.config.prod.ts", "rollup"),
+ ("rollup.config.prod.vendor.js", "rollup"),
+ ("rollup.config.prod.vendor.mjs", "rollup"),
+ ("rollup.config.prod.vendor.ts", "rollup"),
+ ("rollup.config.ts", "rollup"),
+ ("ron", "rust"),
+ ("rproj", "rproj"),
+ ("rs", "rust"),
+ ("rsml", "rsml"),
+ ("rst", "markdown"),
+ ("rtf", "ms-word"),
+ ("ruff.toml", "ruff"),
+ ("ruleset", "visual-studio"),
+ ("rust-toolchain.toml", "rust-config"),
+ ("rustfmt.toml", "rust-config"),
+ ("s", "assembly"),
+ ("sai", "image"),
+ ("sass", "sass"),
+ ("sc", "super-collider"),
+ ("scala", "scala"),
+ ("scanfile", "fastlane"),
+ ("scd", "super-collider"),
+ ("schema.json", "json-schema"),
+ ("scm", "scheme"),
+ ("scss", "sass"),
+ ("sdf", "slidesk"),
+ ("sdt", "slidesk"),
+ ("security", "security"),
+ ("security.md", "security"),
+ ("security.txt", "security"),
+ ("selene.toml", "luau-check"),
+ ("selene.yaml", "luau-check"),
+ ("selene.yml", "luau-check"),
+ ("semgrep.yml", "semgrep"),
+ ("server.lua", "lua-server"),
+ ("server.luau", "luau-server"),
+ ("serverless.js", "serverless"),
+ ("serverless.json", "serverless"),
+ ("serverless.ts", "serverless"),
+ ("serverless.yaml", "serverless"),
+ ("serverless.yml", "serverless"),
+ ("settings", "properties"),
+ ("sh", "bash"),
+ ("shader", "shader"),
+ ("sketch", "sketch"),
+ ("sln", "visual-studio"),
+ ("sln.dotsettings", "properties"),
+ ("sln.dotsettings.user", "properties"),
+ ("slnf", "visual-studio"),
+ ("slnx", "visual-studio"),
+ ("smali", "android"),
+ ("snapfile", "fastlane"),
+ ("snowpack.config.cjs", "snowpack"),
+ ("snowpack.config.cts", "snowpack"),
+ ("snowpack.config.js", "snowpack"),
+ ("snowpack.config.json", "snowpack"),
+ ("snowpack.config.mjs", "snowpack"),
+ ("snowpack.config.mts", "snowpack"),
+ ("snowpack.config.ts", "snowpack"),
+ ("snowpack.deps.json", "snowpack"),
+ ("sol", "solidity"),
+ ("sonar-project.properties", "sonar-cloud"),
+ ("sonarcloud.yaml", "sonar-cloud"),
+ ("spec-d.ts", "typescript-test"),
+ ("spec.cjs", "javascript-test"),
+ ("spec.cts", "typescript-test"),
+ ("spec.js", "javascript-test"),
+ ("spec.jsx", "javascript-test"),
+ ("spec.lua", "lua-test"),
+ ("spec.luau", "luau-test"),
+ ("spec.mjs", "javascript-test"),
+ ("spec.mts", "typescript-test"),
+ ("spec.ts", "typescript-test"),
+ ("spec.tsx", "typescript-test"),
+ ("spwn", "spwn"),
+ ("sql", "database"),
+ ("sqlite", "database"),
+ ("sqlite3", "database"),
+ ("sss", "postcss"),
+ ("stencil.config.js", "stencil"),
+ ("stencil.config.ts", "stencil"),
+ ("stitches.config.js", "stitches"),
+ ("stitches.config.ts", "stitches"),
+ ("stl", "3d"),
+ ("storage.rules", "firebase"),
+ ("stories.js", "storybook"),
+ ("stories.jsx", "storybook"),
+ ("stories.mdx", "storybook"),
+ ("stories.svelte", "storybook-svelte"),
+ ("stories.ts", "storybook"),
+ ("stories.tsx", "storybook"),
+ ("stories.vue", "storybook-vue"),
+ ("story.js", "storybook"),
+ ("story.jsx", "storybook"),
+ ("story.mdx", "storybook"),
+ ("story.svelte", "storybook-svelte"),
+ ("story.ts", "storybook"),
+ ("story.tsx", "storybook"),
+ ("story.vue", "storybook-vue"),
+ ("sty", "latex"),
+ ("stylelint.config.cjs", "stylelint"),
+ ("stylelint.config.cts", "stylelint"),
+ ("stylelint.config.js", "stylelint"),
+ ("stylelint.config.mjs", "stylelint"),
+ ("stylelint.config.mts", "stylelint"),
+ ("stylelint.config.ts", "stylelint"),
+ ("stylua.toml", "stylua"),
+ ("sublime-project", "sublime"),
+ ("sublime-workspace", "sublime"),
+ ("sui", "font"),
+ ("suit", "font"),
+ ("suo", "visual-studio"),
+ ("sv", "verilog"),
+ ("svelte", "svelte"),
+ ("svelte.config.cjs", "svelte-config"),
+ ("svelte.config.js", "svelte-config"),
+ ("svelte.config.mjs", "svelte-config"),
+ ("svelte.config.ts", "svelte-config"),
+ ("svg", "svg"),
+ ("svh", "verilog"),
+ ("swift", "swift"),
+ ("t", "perl"),
+ ("tailwind.config.cjs", "tailwind"),
+ ("tailwind.config.cts", "tailwind"),
+ ("tailwind.config.js", "tailwind"),
+ ("tailwind.config.mjs", "tailwind"),
+ ("tailwind.config.mts", "tailwind"),
+ ("tailwind.config.ts", "tailwind"),
+ ("tailwind.js", "tailwind"),
+ ("tailwind.ts", "tailwind"),
+ ("tape", "vhs"),
+ ("tar", "zip"),
+ ("taskfile.dist.yaml", "taskfile"),
+ ("taskfile.dist.yml", "taskfile"),
+ ("taskfile.yaml", "taskfile"),
+ ("taskfile.yml", "taskfile"),
+ ("tauri", "tauri"),
+ ("tauri.conf.json", "tauri"),
+ ("tauri.conf.json5", "tauri"),
+ ("tauri.config.json", "tauri"),
+ ("tauri.linux.conf.json", "tauri"),
+ ("tauri.macos.conf.json", "tauri"),
+ ("tauri.windows.conf.json", "tauri"),
+ ("tbz", "zip"),
+ ("tbz2", "zip"),
+ ("tcc", "cpp-header"),
+ ("tcsh", "bash"),
+ ("templ", "go-template"),
+ ("tesc", "shader"),
+ ("tesc.glsl", "shader"),
+ ("tese", "shader"),
+ ("tese.glsl", "shader"),
+ ("tess.hlsl", "shader"),
+ ("tessellation.hlsl", "shader"),
+ ("test-d.ts", "typescript-test"),
+ ("test.cjs", "javascript-test"),
+ ("test.cts", "typescript-test"),
+ ("test.js", "javascript-test"),
+ ("test.jsx", "javascript-test"),
+ ("test.lua", "lua-test"),
+ ("test.luau", "luau-test"),
+ ("test.mjs", "javascript-test"),
+ ("test.mts", "typescript-test"),
+ ("test.ts", "typescript-test"),
+ ("test.tsx", "typescript-test"),
+ ("tex", "latex"),
+ ("tf", "terraform"),
+ ("tf.json", "terraform"),
+ ("tfbackend", "terraform"),
+ ("tfstate", "terraform"),
+ ("tfvars", "terraform"),
+ ("tga", "image"),
+ ("tgz", "zip"),
+ ("thrift", "apache"),
+ ("tif", "image"),
+ ("tiff", "image"),
+ ("tmLanguage", "xml"),
+ ("tmpl", "go-template"),
+ ("todo", "todo"),
+ ("todo.md", "todo"),
+ ("todos.md", "todo"),
+ ("tofu", "opentofu"),
+ ("tofu.json", "opentofu"),
+ ("toml", "toml"),
+ ("tres", "godot-assets"),
+ ("ts", "typescript"),
+ ("ts.glsl", "shader"),
+ ("ts.snap", "typescript-test"),
+ ("tsbuildinfo", "json"),
+ ("tscn", "godot-assets"),
+ ("tsconfig.app.json", "typescript-config"),
+ ("tsconfig.base.json", "typescript-config"),
+ ("tsconfig.build.json", "typescript-config"),
+ ("tsconfig.cjs.json", "typescript-config"),
+ ("tsconfig.components.json", "typescript-config"),
+ ("tsconfig.config.json", "typescript-config"),
+ ("tsconfig.cypress-ct.json", "typescript-config"),
+ ("tsconfig.doc.json", "typescript-config"),
+ ("tsconfig.e2e.json", "typescript-config"),
+ ("tsconfig.editor.json", "typescript-config"),
+ ("tsconfig.eslint.json", "typescript-config"),
+ ("tsconfig.esm.json", "typescript-config"),
+ ("tsconfig.json", "typescript-config"),
+ ("tsconfig.lib.json", "typescript-config"),
+ ("tsconfig.lib.prod.json", "typescript-config"),
+ ("tsconfig.main.json", "typescript-config"),
+ ("tsconfig.mjs.json", "typescript-config"),
+ ("tsconfig.node.json", "typescript-config"),
+ ("tsconfig.paths.json", "typescript-config"),
+ ("tsconfig.spec.json", "typescript-config"),
+ ("tsconfig.test.json", "typescript-config"),
+ ("tsconfig.vitest.json", "typescript-config"),
+ ("tsconfig.web.json", "typescript-config"),
+ ("tsconfig.webworker.json", "typescript-config"),
+ ("tsconfig.worker.json", "typescript-config"),
+ ("tsv", "csv"),
+ ("tsx", "typescript-react"),
+ ("tsx.snap", "typescript-test"),
+ ("ttc", "font"),
+ ("ttf", "font"),
+ ("turbo.json", "turbo"),
+ ("tw", "twine"),
+ ("twee", "twine"),
+ ("twig", "twig"),
+ ("txt", "text"),
+ ("typ", "typst"),
+ ("typst.toml", "typst"),
+ ("u3d", "3d"),
+ ("unity", "unity"),
+ ("unlicence", "license"),
+ ("unlicense", "license"),
+ ("uno.config.js", "unocss"),
+ ("uno.config.mjs", "unocss"),
+ ("uno.config.mts", "unocss"),
+ ("uno.config.ts", "unocss"),
+ ("unocss.config.js", "unocss"),
+ ("unocss.config.mjs", "unocss"),
+ ("unocss.config.mts", "unocss"),
+ ("unocss.config.ts", "unocss"),
+ ("update", "bash"),
+ ("url", "url"),
+ ("usd", "3d"),
+ ("uv.lock", "uv"),
+ ("v", "v"),
+ ("v.mod", "v"),
+ ("vala", "vala"),
+ ("vapi", "vapi"),
+ ("vb", "visual-studio"),
+ ("vbhtml", "razor"),
+ ("vbproj", "visual-studio"),
+ ("vbproj.user", "visual-studio"),
+ ("vbs", "visual-studio"),
+ ("vcxitems", "visual-studio"),
+ ("vcxitems.filters", "visual-studio"),
+ ("vcxproj", "visual-studio"),
+ ("vcxproj.filters", "visual-studio"),
+ ("vercel.json", "vercel"),
+ ("vert", "shader"),
+ ("vert.glsl", "shader"),
+ ("vertex.glsl", "shader"),
+ ("vertexshader", "shader"),
+ ("vhd", "verilog"),
+ ("vim", "vim"),
+ ("viminfo", "vim"),
+ ("vimrc", "vim"),
+ ("vital", "vital"),
+ ("vitalbank", "vital"),
+ ("vitallfo", "vital"),
+ ("vitalskin", "vital"),
+ ("vitaltable", "vital"),
+ ("vitaltheme", "vital"),
+ ("vite.config.cjs", "vite"),
+ ("vite.config.cts", "vite"),
+ ("vite.config.js", "vite"),
+ ("vite.config.mjs", "vite"),
+ ("vite.config.mts", "vite"),
+ ("vite.config.ts", "vite"),
+ ("vitest.config.cjs", "vitest"),
+ ("vitest.config.cts", "vitest"),
+ ("vitest.config.js", "vitest"),
+ ("vitest.config.mjs", "vitest"),
+ ("vitest.config.mts", "vitest"),
+ ("vitest.config.ts", "vitest"),
+ ("vitest.workspace.js", "vitest"),
+ ("vitest.workspace.json", "vitest"),
+ ("vitest.workspace.ts", "vitest"),
+ ("vob", "video"),
+ ("vpkg.json", "v"),
+ ("vs.glsl", "shader"),
+ ("vsix", "vscode"),
+ ("vsixmanifest", "vscode"),
+ ("vto", "vento"),
+ ("vue", "vue"),
+ ("vue.config.cjs", "vue-config"),
+ ("vue.config.cts", "vue-config"),
+ ("vue.config.js", "vue-config"),
+ ("vue.config.mjs", "vue-config"),
+ ("vue.config.mts", "vue-config"),
+ ("vue.config.ts", "vue-config"),
+ ("wally.lock", "wally"),
+ ("wally.toml", "wally"),
+ ("wasm", "web-assembly"),
+ ("wat", "web-assembly"),
+ ("wav", "audio"),
+ ("webm", "video"),
+ ("webmanifest", "json"),
+ ("webp", "image"),
+ ("webpack.base.cjs", "webpack"),
+ ("webpack.base.cts", "webpack"),
+ ("webpack.base.js", "webpack"),
+ ("webpack.base.mjs", "webpack"),
+ ("webpack.base.mts", "webpack"),
+ ("webpack.base.ts", "webpack"),
+ ("webpack.cjs", "webpack"),
+ ("webpack.client.cjs", "webpack"),
+ ("webpack.client.cts", "webpack"),
+ ("webpack.client.js", "webpack"),
+ ("webpack.client.mjs", "webpack"),
+ ("webpack.client.mts", "webpack"),
+ ("webpack.client.ts", "webpack"),
+ ("webpack.common.cjs", "webpack"),
+ ("webpack.common.cts", "webpack"),
+ ("webpack.common.js", "webpack"),
+ ("webpack.common.mjs", "webpack"),
+ ("webpack.common.mts", "webpack"),
+ ("webpack.common.ts", "webpack"),
+ ("webpack.config.babel.js", "webpack"),
+ ("webpack.config.babel.ts", "webpack"),
+ ("webpack.config.base.babel.js", "webpack"),
+ ("webpack.config.base.babel.ts", "webpack"),
+ ("webpack.config.base.cjs", "webpack"),
+ ("webpack.config.base.cts", "webpack"),
+ ("webpack.config.base.js", "webpack"),
+ ("webpack.config.base.mjs", "webpack"),
+ ("webpack.config.base.mts", "webpack"),
+ ("webpack.config.base.ts", "webpack"),
+ ("webpack.config.cjs", "webpack"),
+ ("webpack.config.client.cjs", "webpack"),
+ ("webpack.config.client.cts", "webpack"),
+ ("webpack.config.client.js", "webpack"),
+ ("webpack.config.client.mjs", "webpack"),
+ ("webpack.config.client.mts", "webpack"),
+ ("webpack.config.client.ts", "webpack"),
+ ("webpack.config.coffee", "webpack"),
+ ("webpack.config.common.babel.js", "webpack"),
+ ("webpack.config.common.babel.ts", "webpack"),
+ ("webpack.config.common.cjs", "webpack"),
+ ("webpack.config.common.cts", "webpack"),
+ ("webpack.config.common.js", "webpack"),
+ ("webpack.config.common.mjs", "webpack"),
+ ("webpack.config.common.mts", "webpack"),
+ ("webpack.config.common.ts", "webpack"),
+ ("webpack.config.cts", "webpack"),
+ ("webpack.config.dev.babel.js", "webpack"),
+ ("webpack.config.dev.babel.ts", "webpack"),
+ ("webpack.config.dev.cjs", "webpack"),
+ ("webpack.config.dev.cts", "webpack"),
+ ("webpack.config.dev.js", "webpack"),
+ ("webpack.config.dev.mjs", "webpack"),
+ ("webpack.config.dev.mts", "webpack"),
+ ("webpack.config.dev.ts", "webpack"),
+ ("webpack.config.js", "webpack"),
+ ("webpack.config.main.js", "webpack"),
+ ("webpack.config.mjs", "webpack"),
+ ("webpack.config.mts", "webpack"),
+ ("webpack.config.prod.babel.cjs", "webpack"),
+ ("webpack.config.prod.babel.cts", "webpack"),
+ ("webpack.config.prod.babel.js", "webpack"),
+ ("webpack.config.prod.babel.mjs", "webpack"),
+ ("webpack.config.prod.babel.mts", "webpack"),
+ ("webpack.config.prod.babel.ts", "webpack"),
+ ("webpack.config.prod.cjs", "webpack"),
+ ("webpack.config.prod.cts", "webpack"),
+ ("webpack.config.prod.js", "webpack"),
+ ("webpack.config.prod.mjs", "webpack"),
+ ("webpack.config.prod.mts", "webpack"),
+ ("webpack.config.prod.ts", "webpack"),
+ ("webpack.config.production.babel.js", "webpack"),
+ ("webpack.config.production.babel.ts", "webpack"),
+ ("webpack.config.production.cjs", "webpack"),
+ ("webpack.config.production.cts", "webpack"),
+ ("webpack.config.production.js", "webpack"),
+ ("webpack.config.production.mjs", "webpack"),
+ ("webpack.config.production.mts", "webpack"),
+ ("webpack.config.production.ts", "webpack"),
+ ("webpack.config.renderer.ts", "webpack"),
+ ("webpack.config.server.cjs", "webpack"),
+ ("webpack.config.server.cts", "webpack"),
+ ("webpack.config.server.js", "webpack"),
+ ("webpack.config.server.mjs", "webpack"),
+ ("webpack.config.server.mts", "webpack"),
+ ("webpack.config.server.ts", "webpack"),
+ ("webpack.config.staging.babel.js", "webpack"),
+ ("webpack.config.staging.babel.ts", "webpack"),
+ ("webpack.config.staging.cjs", "webpack"),
+ ("webpack.config.staging.cts", "webpack"),
+ ("webpack.config.staging.js", "webpack"),
+ ("webpack.config.staging.mjs", "webpack"),
+ ("webpack.config.staging.mts", "webpack"),
+ ("webpack.config.staging.ts", "webpack"),
+ ("webpack.config.test.cjs", "webpack"),
+ ("webpack.config.test.cts", "webpack"),
+ ("webpack.config.test.js", "webpack"),
+ ("webpack.config.test.mjs", "webpack"),
+ ("webpack.config.test.mts", "webpack"),
+ ("webpack.config.test.ts", "webpack"),
+ ("webpack.config.ts", "webpack"),
+ ("webpack.config.vendor.cjs", "webpack"),
+ ("webpack.config.vendor.cts", "webpack"),
+ ("webpack.config.vendor.js", "webpack"),
+ ("webpack.config.vendor.mjs", "webpack"),
+ ("webpack.config.vendor.mts", "webpack"),
+ ("webpack.config.vendor.production.cjs", "webpack"),
+ ("webpack.config.vendor.production.cts", "webpack"),
+ ("webpack.config.vendor.production.js", "webpack"),
+ ("webpack.config.vendor.production.mjs", "webpack"),
+ ("webpack.config.vendor.production.mts", "webpack"),
+ ("webpack.config.vendor.production.ts", "webpack"),
+ ("webpack.config.vendor.ts", "webpack"),
+ ("webpack.cts", "webpack"),
+ ("webpack.dev.cjs", "webpack"),
+ ("webpack.dev.cts", "webpack"),
+ ("webpack.dev.js", "webpack"),
+ ("webpack.dev.mjs", "webpack"),
+ ("webpack.dev.mts", "webpack"),
+ ("webpack.dev.ts", "webpack"),
+ ("webpack.development.cjs", "webpack"),
+ ("webpack.development.cts", "webpack"),
+ ("webpack.development.js", "webpack"),
+ ("webpack.development.mjs", "webpack"),
+ ("webpack.development.mts", "webpack"),
+ ("webpack.development.ts", "webpack"),
+ ("webpack.dist.cjs", "webpack"),
+ ("webpack.dist.cts", "webpack"),
+ ("webpack.dist.js", "webpack"),
+ ("webpack.dist.mjs", "webpack"),
+ ("webpack.dist.mts", "webpack"),
+ ("webpack.dist.ts", "webpack"),
+ ("webpack.js", "webpack"),
+ ("webpack.mix.cjs", "webpack"),
+ ("webpack.mix.cts", "webpack"),
+ ("webpack.mix.js", "webpack"),
+ ("webpack.mix.mjs", "webpack"),
+ ("webpack.mix.mts", "webpack"),
+ ("webpack.mix.ts", "webpack"),
+ ("webpack.mjs", "webpack"),
+ ("webpack.mts", "webpack"),
+ ("webpack.prod.cjs", "webpack"),
+ ("webpack.prod.config.cjs", "webpack"),
+ ("webpack.prod.config.cts", "webpack"),
+ ("webpack.prod.config.js", "webpack"),
+ ("webpack.prod.config.mjs", "webpack"),
+ ("webpack.prod.config.mts", "webpack"),
+ ("webpack.prod.config.ts", "webpack"),
+ ("webpack.prod.cts", "webpack"),
+ ("webpack.prod.js", "webpack"),
+ ("webpack.prod.mjs", "webpack"),
+ ("webpack.prod.mts", "webpack"),
+ ("webpack.prod.ts", "webpack"),
+ ("webpack.production.cjs", "webpack"),
+ ("webpack.production.cts", "webpack"),
+ ("webpack.production.js", "webpack"),
+ ("webpack.production.mjs", "webpack"),
+ ("webpack.production.mts", "webpack"),
+ ("webpack.production.ts", "webpack"),
+ ("webpack.server.cjs", "webpack"),
+ ("webpack.server.cts", "webpack"),
+ ("webpack.server.js", "webpack"),
+ ("webpack.server.mjs", "webpack"),
+ ("webpack.server.mts", "webpack"),
+ ("webpack.server.ts", "webpack"),
+ ("webpack.test.cjs", "webpack"),
+ ("webpack.test.cts", "webpack"),
+ ("webpack.test.js", "webpack"),
+ ("webpack.test.mjs", "webpack"),
+ ("webpack.test.mts", "webpack"),
+ ("webpack.test.ts", "webpack"),
+ ("webpack.ts", "webpack"),
+ ("webpackfile.cjs", "webpack"),
+ ("webpackfile.cts", "webpack"),
+ ("webpackfile.js", "webpack"),
+ ("webpackfile.mjs", "webpack"),
+ ("webpackfile.mts", "webpack"),
+ ("webpackfile.ts", "webpack"),
+ ("wgsl", "shader"),
+ ("windi", "windi"),
+ ("windi.config.cjs", "windi"),
+ ("windi.config.cts", "windi"),
+ ("windi.config.js", "windi"),
+ ("windi.config.json", "windi"),
+ ("windi.config.ts", "windi"),
+ ("wma", "audio"),
+ ("wmv", "video"),
+ ("woff", "font"),
+ ("woff2", "font"),
+ ("workflows/yaml", "workflow"),
+ ("workflows/yml", "workflow"),
+ ("wrangler.json", "wrangler"),
+ ("wrangler.jsonc", "wrangler"),
+ ("wrangler.toml", "wrangler"),
+ ("wrap", "meson"),
+ ("wv", "audio"),
+ ("wxt.config.js", "wxt"),
+ ("wxt.config.ts", "wxt"),
+ ("xaml", "xaml"),
+ ("xcf", "image"),
+ ("xcsettings", "xcode"),
+ ("xcworkspacedata", "xcode"),
+ ("xd", "adobe-xd"),
+ ("xhtml", "html"),
+ ("xls", "ms-excel"),
+ ("xlsb", "ms-excel"),
+ ("xlsm", "ms-excel"),
+ ("xlsx", "ms-excel"),
+ ("xlt", "ms-excel"),
+ ("xltm", "ms-excel"),
+ ("xltx", "ms-excel"),
+ ("xmake.lua", "xmake"),
+ ("xml", "xml"),
+ ("xml.dist", "xml"),
+ ("xml.dist.sample", "xml"),
+ ("xquery", "xml"),
+ ("xsd", "xml"),
+ ("xsl", "xml"),
+ ("xslt", "xml"),
+ ("xz", "zip"),
+ ("yaml", "yaml"),
+ ("yarn-error.log", "yarn"),
+ ("yarn.config.cjs", "yarn"),
+ ("yarn.lock", "yarn-lock"),
+ ("yml", "yaml"),
+ ("yuv", "video"),
+ ("z", "zip"),
+ ("zap", "zap"),
+ ("zig", "zig"),
+ ("zip", "zip"),
+ ("zpaq", "zip"),
+ ("zsh", "bash"),
+ ("zst", "zip"),
+];
+
+/// Highest-priority match: full file name to SVG stem.
+pub const FILE_STEMS: &[(&str, &str)] = &[
+ (".DS_Store", "macos"),
+ ("CMakeLists.txt", "cmake"),
+ ("Caddyfile", "caddy"),
+ ("Cargo.lock", "cargo-lock"),
+ ("Cargo.toml", "cargo"),
+ ("LICENSE", "license"),
+ ("Makefile", "makefile"),
+ ("README", "readme"),
+ ("README.md", "readme"),
+ ("README.txt", "readme"),
+];
+
+/// Folder-name (lowercased) to `(collapsed, expanded)` SVG stems.
+pub const NAMED_DIRS: &[(&str, &str, &str)] = &[
+ (".aws", "folder_aws", "folder_aws_open"),
+ (
+ ".azure-devops",
+ "folder_azure-devops",
+ "folder_azure-devops_open",
+ ),
+ (
+ ".azure-pipelines",
+ "folder_azure-pipelines",
+ "folder_azure-pipelines_open",
+ ),
+ (
+ ".azuredevops",
+ "folder_azure-devops",
+ "folder_azure-devops_open",
+ ),
+ (".cache", "folder_temp", "folder_temp_open"),
+ (".caddy", "folder_caddy", "folder_caddy_open"),
+ (".caddyfiles", "folder_caddy", "folder_caddy_open"),
+ (".cargo", "folder_cargo", "folder_cargo_open"),
+ (".ci", "folder_workflows", "folder_workflows_open"),
+ (".circleci", "folder_circle-ci", "folder_circle-ci_open"),
+ (".config", "folder_config", "folder_config_open"),
+ (".cursor", "folder_cursor", "folder_cursor_open"),
+ (".cypress", "folder_cypress", "folder_cypress_open"),
+ (
+ ".devcontainer",
+ "folder_devcontainer",
+ "folder_devcontainer_open",
+ ),
+ (".direnv", "folder_direnv", "folder_direnv_open"),
+ (".docker", "folder_docker", "folder_docker_open"),
+ (".fastlane", "folder_fastlane", "folder_fastlane_open"),
+ (".firebase", "folder_firebase", "folder_firebase_open"),
+ (".forgejo", "folder_forgejo", "folder_forgejo_open"),
+ (".fvm", "folder_fvm", "folder_fvm_open"),
+ (".git", "folder_git", "folder_git_open"),
+ (".githooks", "folder_git", "folder_git_open"),
+ (".github", "folder_github", "folder_github_open"),
+ (".gitlab", "folder_gitlab", "folder_gitlab_open"),
+ (".gradle", "folder_gradle", "folder_gradle_open"),
+ (".husky", "folder_husky", "folder_husky_open"),
+ (".idea", "folder_intellij", "folder_intellij_open"),
+ (".k8s", "folder_kubernetes", "folder_kubernetes_open"),
+ (".kubernetes", "folder_kubernetes", "folder_kubernetes_open"),
+ (".lib", "folder_lib", "folder_lib_open"),
+ (".libraries", "folder_lib", "folder_lib_open"),
+ (".library", "folder_lib", "folder_lib_open"),
+ (".libs", "folder_lib", "folder_lib_open"),
+ (".moon", "folder_moonrepo", "folder_moonrepo_open"),
+ (".next", "folder_next", "folder_next_open"),
+ (".now", "folder_vercel", "folder_vercel_open"),
+ (".nuxt", "folder_nuxt", "folder_nuxt_open"),
+ (".nyc-output", "folder_coverage", "folder_coverage_open"),
+ (".nyc_output", "folder_coverage", "folder_coverage_open"),
+ (".output", "folder_dist", "folder_dist_open"),
+ (".pesde", "folder_pesde", "folder_pesde_open"),
+ (".renovate", "folder_renovate", "folder_renovate_open"),
+ (".setting", "folder_config", "folder_config_open"),
+ (".settings", "folder_config", "folder_config_open"),
+ (".storybook", "folder_storybook", "folder_storybook_open"),
+ (".submodules", "folder_git", "folder_git_open"),
+ (".temp", "folder_temp", "folder_temp_open"),
+ (".tmp", "folder_temp", "folder_temp_open"),
+ (".turbo", "folder_turbo", "folder_turbo_open"),
+ (".tx", "folder_locales", "folder_locales_open"),
+ (".vercel", "folder_vercel", "folder_vercel_open"),
+ (".vscode", "folder_vscode", "folder_vscode_open"),
+ (".vscode-test", "folder_vscode", "folder_vscode_open"),
+ (".wxt", "folder_wxt", "folder_wxt_open"),
+ (".xmake", "folder_xmake", "folder_xmake_open"),
+ (".yarn", "folder_yarn", "folder_yarn_open"),
+ ("@types", "folder_types", "folder_types_open"),
+ ("META-INF", "folder_config", "folder_config_open"),
+ ("__fixtures__", "folder_tests", "folder_tests_open"),
+ (
+ "__integration-test__",
+ "folder_coverage",
+ "folder_coverage_open",
+ ),
+ (
+ "__integration-tests__",
+ "folder_coverage",
+ "folder_coverage_open",
+ ),
+ ("__mocks__", "folder_tests", "folder_tests_open"),
+ ("__snapshots__", "folder_tests", "folder_tests_open"),
+ ("__stories__", "folder_storybook", "folder_storybook_open"),
+ ("__test__", "folder_tests", "folder_tests_open"),
+ ("__tests__", "folder_tests", "folder_tests_open"),
+ ("_data", "folder_database", "folder_database_open"),
+ ("_draft", "folder_mocks", "folder_mocks_open"),
+ ("_drafts", "folder_mocks", "folder_mocks_open"),
+ ("_image", "folder_images", "folder_images_open"),
+ ("_images", "folder_images", "folder_images_open"),
+ ("_img", "folder_images", "folder_images_open"),
+ ("_imgs", "folder_images", "folder_images_open"),
+ ("_layouts", "folder_layouts", "folder_layouts_open"),
+ ("_plugins", "folder_plugins", "folder_plugins_open"),
+ ("_post", "folder_docs", "folder_docs_open"),
+ ("_posts", "folder_docs", "folder_docs_open"),
+ ("_sass", "folder_sass", "folder_sass_open"),
+ ("_scss", "folder_sass", "folder_sass_open"),
+ ("_site", "folder_public", "folder_public_open"),
+ ("addon", "folder_plugins", "folder_plugins_open"),
+ ("addons", "folder_plugins", "folder_plugins_open"),
+ ("admin", "folder_admin", "folder_admin_open"),
+ ("admins", "folder_admin", "folder_admin_open"),
+ ("android", "folder_android", "folder_android_open"),
+ ("anim", "folder_animation", "folder_animation_open"),
+ ("animated", "folder_animation", "folder_animation_open"),
+ ("animation", "folder_animation", "folder_animation_open"),
+ ("animations", "folder_animation", "folder_animation_open"),
+ ("anims", "folder_animation", "folder_animation_open"),
+ ("api", "folder_api", "folder_api_open"),
+ ("apis", "folder_api", "folder_api_open"),
+ ("app", "folder_app", "folder_app_open"),
+ ("apps", "folder_app", "folder_app_open"),
+ ("article", "folder_docs", "folder_docs_open"),
+ ("articles", "folder_docs", "folder_docs_open"),
+ ("asset", "folder_assets", "folder_assets_open"),
+ ("assets", "folder_assets", "folder_assets_open"),
+ ("aud", "folder_audio", "folder_audio_open"),
+ ("audio", "folder_audio", "folder_audio_open"),
+ ("audios", "folder_audio", "folder_audio_open"),
+ ("audit", "folder_audit", "folder_audit_open"),
+ ("audits", "folder_audit", "folder_audit_open"),
+ ("auds", "folder_audio", "folder_audio_open"),
+ ("aws", "folder_aws", "folder_aws_open"),
+ ("backend", "folder_server", "folder_server_open"),
+ ("bench", "folder_benchmark", "folder_benchmark_open"),
+ ("benches", "folder_benchmark", "folder_benchmark_open"),
+ ("benchmark", "folder_benchmark", "folder_benchmark_open"),
+ ("benchmarks", "folder_benchmark", "folder_benchmark_open"),
+ ("bin", "folder_dist", "folder_dist_open"),
+ ("browser", "folder_public", "folder_public_open"),
+ ("browsers", "folder_public", "folder_public_open"),
+ ("build", "folder_dist", "folder_dist_open"),
+ ("bull", "folder_queue", "folder_queue_open"),
+ ("cache", "folder_temp", "folder_temp_open"),
+ ("cached", "folder_temp", "folder_temp_open"),
+ ("caddy", "folder_caddy", "folder_caddy_open"),
+ ("caddyfiles", "folder_caddy", "folder_caddy_open"),
+ ("calc", "folder_functions", "folder_functions_open"),
+ ("calcs", "folder_functions", "folder_functions_open"),
+ ("calculation", "folder_functions", "folder_functions_open"),
+ ("calculations", "folder_functions", "folder_functions_open"),
+ ("cfg", "folder_config", "folder_config_open"),
+ ("cfgs", "folder_config", "folder_config_open"),
+ ("ci", "folder_workflows", "folder_workflows_open"),
+ ("cli", "folder_command", "folder_command_open"),
+ ("client", "folder_client", "folder_client_open"),
+ ("clients", "folder_client", "folder_client_open"),
+ ("clis", "folder_command", "folder_command_open"),
+ ("cloud", "folder_cloud", "folder_cloud_open"),
+ ("cmd", "folder_command", "folder_command_open"),
+ ("code", "folder_src", "folder_src_open"),
+ ("command", "folder_command", "folder_command_open"),
+ ("commands", "folder_command", "folder_command_open"),
+ ("components", "folder_components", "folder_components_open"),
+ (
+ "composable",
+ "folder_composables",
+ "folder_composables_open",
+ ),
+ (
+ "composables",
+ "folder_composables",
+ "folder_composables_open",
+ ),
+ ("concept", "folder_mocks", "folder_mocks_open"),
+ ("concepts", "folder_mocks", "folder_mocks_open"),
+ ("conf", "folder_config", "folder_config_open"),
+ ("config", "folder_config", "folder_config_open"),
+ ("configs", "folder_config", "folder_config_open"),
+ ("configuration", "folder_config", "folder_config_open"),
+ ("configurations", "folder_config", "folder_config_open"),
+ ("confs", "folder_config", "folder_config_open"),
+ ("connection", "folder_connection", "folder_connection_open"),
+ ("connections", "folder_connection", "folder_connection_open"),
+ ("constant", "folder_constant", "folder_constant_open"),
+ ("constants", "folder_constant", "folder_constant_open"),
+ ("content", "folder_content", "folder_content_open"),
+ ("contents", "folder_content", "folder_content_open"),
+ (
+ "controller",
+ "folder_controllers",
+ "folder_controllers_open",
+ ),
+ (
+ "controllers",
+ "folder_controllers",
+ "folder_controllers_open",
+ ),
+ ("core", "folder_core", "folder_core_open"),
+ ("coverage", "folder_coverage", "folder_coverage_open"),
+ ("crate", "folder_packages", "folder_packages_open"),
+ ("crates", "folder_packages", "folder_packages_open"),
+ ("css", "folder_styles", "folder_styles_open"),
+ ("cypress", "folder_cypress", "folder_cypress_open"),
+ ("data", "folder_database", "folder_database_open"),
+ ("database", "folder_database", "folder_database_open"),
+ ("databases", "folder_database", "folder_database_open"),
+ ("db", "folder_database", "folder_database_open"),
+ ("debug", "folder_debug", "folder_debug_open"),
+ ("debugging", "folder_debug", "folder_debug_open"),
+ ("demo", "folder_examples", "folder_examples_open"),
+ ("demos", "folder_examples", "folder_examples_open"),
+ ("dist", "folder_dist", "folder_dist_open"),
+ ("dist-newstyle", "folder_dist", "folder_dist_open"),
+ ("doc", "folder_docs", "folder_docs_open"),
+ ("docker", "folder_docker", "folder_docker_open"),
+ ("dockerfiles", "folder_docker", "folder_docker_open"),
+ ("docs", "folder_docs", "folder_docs_open"),
+ ("document", "folder_docs", "folder_docs_open"),
+ ("documentation", "folder_docs", "folder_docs_open"),
+ ("documents", "folder_docs", "folder_docs_open"),
+ ("download", "folder_download", "folder_download_open"),
+ ("downloads", "folder_download", "folder_download_open"),
+ ("draft", "folder_mocks", "folder_mocks_open"),
+ ("drafts", "folder_mocks", "folder_mocks_open"),
+ ("drizzle", "folder_drizzle-orm", "folder_drizzle-orm_open"),
+ ("e2e", "folder_coverage", "folder_coverage_open"),
+ ("example", "folder_examples", "folder_examples_open"),
+ ("examples", "folder_examples", "folder_examples_open"),
+ ("extension", "folder_plugins", "folder_plugins_open"),
+ ("extensions", "folder_plugins", "folder_plugins_open"),
+ ("fastlane", "folder_fastlane", "folder_fastlane_open"),
+ ("fig", "folder_images", "folder_images_open"),
+ ("figs", "folder_images", "folder_images_open"),
+ ("figure", "folder_images", "folder_images_open"),
+ ("figures", "folder_images", "folder_images_open"),
+ ("firebase", "folder_firebase", "folder_firebase_open"),
+ ("fixture", "folder_mocks", "folder_mocks_open"),
+ ("fixtures", "folder_mocks", "folder_mocks_open"),
+ ("font", "folder_fonts", "folder_fonts_open"),
+ ("fonts", "folder_fonts", "folder_fonts_open"),
+ ("fragments", "folder_components", "folder_components_open"),
+ ("frontend", "folder_client", "folder_client_open"),
+ ("frontends", "folder_client", "folder_client_open"),
+ ("func", "folder_functions", "folder_functions_open"),
+ ("funcs", "folder_functions", "folder_functions_open"),
+ ("function", "folder_functions", "folder_functions_open"),
+ ("functions", "folder_functions", "folder_functions_open"),
+ ("githooks", "folder_git", "folder_git_open"),
+ ("github", "folder_github", "folder_github_open"),
+ ("gql", "folder_graphql", "folder_graphql_open"),
+ ("gradle", "folder_gradle", "folder_gradle_open"),
+ ("graphql", "folder_graphql", "folder_graphql_open"),
+ ("handler", "folder_controllers", "folder_controllers_open"),
+ ("handlers", "folder_controllers", "folder_controllers_open"),
+ ("hook", "folder_hooks", "folder_hooks_open"),
+ ("hooks", "folder_hooks", "folder_hooks_open"),
+ ("html", "folder_views", "folder_views_open"),
+ ("husky", "folder_husky", "folder_husky_open"),
+ ("i18n", "folder_locales", "folder_locales_open"),
+ ("ico", "folder_images", "folder_images_open"),
+ ("icon", "folder_images", "folder_images_open"),
+ ("icons", "folder_images", "folder_images_open"),
+ ("icos", "folder_images", "folder_images_open"),
+ ("image", "folder_images", "folder_images_open"),
+ ("images", "folder_images", "folder_images_open"),
+ ("img", "folder_images", "folder_images_open"),
+ ("imgs", "folder_images", "folder_images_open"),
+ ("include", "folder_include", "folder_include_open"),
+ ("includes", "folder_include", "folder_include_open"),
+ ("integration", "folder_connection", "folder_connection_open"),
+ (
+ "integration-test",
+ "folder_coverage",
+ "folder_coverage_open",
+ ),
+ (
+ "integration-tests",
+ "folder_coverage",
+ "folder_coverage_open",
+ ),
+ (
+ "integrations",
+ "folder_connection",
+ "folder_connection_open",
+ ),
+ (
+ "internationalization",
+ "folder_locales",
+ "folder_locales_open",
+ ),
+ ("it", "folder_coverage", "folder_coverage_open"),
+ ("javascript", "folder_javascript", "folder_javascript_open"),
+ ("js", "folder_javascript", "folder_javascript_open"),
+ ("k8s", "folder_kubernetes", "folder_kubernetes_open"),
+ ("kubernetes", "folder_kubernetes", "folder_kubernetes_open"),
+ ("l10n", "folder_locales", "folder_locales_open"),
+ ("lambda", "folder_functions", "folder_functions_open"),
+ ("lambdas", "folder_functions", "folder_functions_open"),
+ ("lang", "folder_locales", "folder_locales_open"),
+ ("langs", "folder_locales", "folder_locales_open"),
+ ("language", "folder_locales", "folder_locales_open"),
+ ("languages", "folder_locales", "folder_locales_open"),
+ ("layout", "folder_layouts", "folder_layouts_open"),
+ ("layouts", "folder_layouts", "folder_layouts_open"),
+ ("lib", "folder_lib", "folder_lib_open"),
+ ("libraries", "folder_lib", "folder_lib_open"),
+ ("library", "folder_lib", "folder_lib_open"),
+ ("libs", "folder_lib", "folder_lib_open"),
+ ("linux", "folder_linux", "folder_linux_open"),
+ ("locale", "folder_locales", "folder_locales_open"),
+ ("locales", "folder_locales", "folder_locales_open"),
+ ("localization", "folder_locales", "folder_locales_open"),
+ ("logic", "folder_functions", "folder_functions_open"),
+ ("luau_packages", "folder_luau", "folder_luau_open"),
+ ("lune_packages", "folder_lune", "folder_lune_open"),
+ ("mac", "folder_macos", "folder_macos_open"),
+ ("macos", "folder_macos", "folder_macos_open"),
+ ("manager", "folder_admin", "folder_admin_open"),
+ ("managers", "folder_admin", "folder_admin_open"),
+ ("math", "folder_functions", "folder_functions_open"),
+ ("maths", "folder_functions", "folder_functions_open"),
+ ("measure", "folder_benchmark", "folder_benchmark_open"),
+ ("measurement", "folder_benchmark", "folder_benchmark_open"),
+ ("measures", "folder_benchmark", "folder_benchmark_open"),
+ ("message", "folder_messages", "folder_messages_open"),
+ ("messages", "folder_messages", "folder_messages_open"),
+ ("middleware", "folder_middleware", "folder_middleware_open"),
+ ("middlewares", "folder_middleware", "folder_middleware_open"),
+ ("mock", "folder_mocks", "folder_mocks_open"),
+ ("mocks", "folder_mocks", "folder_mocks_open"),
+ ("mod", "folder_plugins", "folder_plugins_open"),
+ ("modding", "folder_plugins", "folder_plugins_open"),
+ ("moderator", "folder_admin", "folder_admin_open"),
+ ("moderators", "folder_admin", "folder_admin_open"),
+ ("mods", "folder_plugins", "folder_plugins_open"),
+ ("module", "folder_plugins", "folder_plugins_open"),
+ ("modules", "folder_plugins", "folder_plugins_open"),
+ ("movie", "folder_video", "folder_video_open"),
+ ("movies", "folder_video", "folder_video_open"),
+ ("mq", "folder_queue", "folder_queue_open"),
+ ("music", "folder_audio", "folder_audio_open"),
+ ("nix", "folder_nix", "folder_nix_open"),
+ ("node_modules", "folder_node", "folder_node_open"),
+ ("now", "folder_vercel", "folder_vercel_open"),
+ ("nuxt", "folder_nuxt", "folder_nuxt_open"),
+ ("option", "folder_config", "folder_config_open"),
+ ("options", "folder_config", "folder_config_open"),
+ ("out", "folder_dist", "folder_dist_open"),
+ ("package", "folder_packages", "folder_packages_open"),
+ ("packages", "folder_packages", "folder_packages_open"),
+ ("page", "folder_views", "folder_views_open"),
+ ("pages", "folder_views", "folder_views_open"),
+ ("patches", "folder_git", "folder_git_open"),
+ ("performance", "folder_benchmark", "folder_benchmark_open"),
+ ("pesde", "folder_pesde", "folder_pesde_open"),
+ ("photo", "folder_images", "folder_images_open"),
+ ("photograph", "folder_images", "folder_images_open"),
+ ("photographs", "folder_images", "folder_images_open"),
+ ("photos", "folder_images", "folder_images_open"),
+ ("pic", "folder_images", "folder_images_open"),
+ ("pics", "folder_images", "folder_images_open"),
+ ("picture", "folder_images", "folder_images_open"),
+ ("pictures", "folder_images", "folder_images_open"),
+ ("pkg", "folder_packages", "folder_packages_open"),
+ ("pkgs", "folder_packages", "folder_packages_open"),
+ ("plugin", "folder_plugins", "folder_plugins_open"),
+ ("plugins", "folder_plugins", "folder_plugins_open"),
+ ("post", "folder_docs", "folder_docs_open"),
+ ("posts", "folder_docs", "folder_docs_open"),
+ (
+ "pre-commit-channel",
+ "folder_pre-commit",
+ "folder_pre-commit_open",
+ ),
+ ("prisma", "folder_prisma", "folder_prisma_open"),
+ ("private", "folder_private", "folder_private_open"),
+ ("proto", "folder_proto", "folder_proto_open"),
+ ("protobuf", "folder_proto", "folder_proto_open"),
+ ("protobufs", "folder_proto", "folder_proto_open"),
+ ("protos", "folder_proto", "folder_proto_open"),
+ ("provider", "folder_controllers", "folder_controllers_open"),
+ ("providers", "folder_controllers", "folder_controllers_open"),
+ ("public", "folder_public", "folder_public_open"),
+ ("public_html", "folder_views", "folder_views_open"),
+ ("pwa", "folder_client", "folder_client_open"),
+ ("queue", "folder_queue", "folder_queue_open"),
+ ("queues", "folder_queue", "folder_queue_open"),
+ ("redux", "folder_redux", "folder_redux_open"),
+ ("release", "folder_dist", "folder_dist_open"),
+ ("renovate", "folder_renovate", "folder_renovate_open"),
+ ("restapi", "folder_api", "folder_api_open"),
+ ("roblox_packages", "folder_roblox", "folder_roblox_open"),
+ (
+ "roblox_server_packages",
+ "folder_roblox",
+ "folder_roblox_open",
+ ),
+ ("router", "folder_routes", "folder_routes_open"),
+ ("routers", "folder_routes", "folder_routes_open"),
+ ("routes", "folder_routes", "folder_routes_open"),
+ ("sample", "folder_examples", "folder_examples_open"),
+ ("sample-data", "folder_examples", "folder_examples_open"),
+ ("samples", "folder_examples", "folder_examples_open"),
+ ("sass", "folder_sass", "folder_sass_open"),
+ ("screen", "folder_views", "folder_views_open"),
+ ("screengrab", "folder_images", "folder_images_open"),
+ ("screengrabs", "folder_images", "folder_images_open"),
+ ("screens", "folder_views", "folder_views_open"),
+ ("screenshot", "folder_images", "folder_images_open"),
+ ("screenshots", "folder_images", "folder_images_open"),
+ ("script", "folder_scripts", "folder_scripts_open"),
+ ("scripting", "folder_scripts", "folder_scripts_open"),
+ ("scripts", "folder_scripts", "folder_scripts_open"),
+ ("scss", "folder_sass", "folder_sass_open"),
+ ("security", "folder_security", "folder_security_open"),
+ ("server", "folder_server", "folder_server_open"),
+ ("servers", "folder_server", "folder_server_open"),
+ ("service", "folder_controllers", "folder_controllers_open"),
+ ("services", "folder_controllers", "folder_controllers_open"),
+ ("setting", "folder_config", "folder_config_open"),
+ ("settings", "folder_config", "folder_config_open"),
+ ("share", "folder_shared", "folder_shared_open"),
+ ("shared", "folder_shared", "folder_shared_open"),
+ ("site", "folder_public", "folder_public_open"),
+ ("sketch", "folder_mocks", "folder_mocks_open"),
+ ("sketches", "folder_mocks", "folder_mocks_open"),
+ ("sound", "folder_audio", "folder_audio_open"),
+ ("sounds", "folder_audio", "folder_audio_open"),
+ ("source", "folder_src", "folder_src_open"),
+ ("sources", "folder_src", "folder_src_open"),
+ ("spec", "folder_tests", "folder_tests_open"),
+ ("specs", "folder_tests", "folder_tests_open"),
+ ("sql", "folder_database", "folder_database_open"),
+ ("src", "folder_src", "folder_src_open"),
+ ("src-tauri", "folder_tauri", "folder_tauri_open"),
+ ("srcs", "folder_src", "folder_src_open"),
+ ("stories", "folder_storybook", "folder_storybook_open"),
+ ("storybook", "folder_storybook", "folder_storybook_open"),
+ ("style", "folder_styles", "folder_styles_open"),
+ ("styles", "folder_styles", "folder_styles_open"),
+ ("stylesheet", "folder_styles", "folder_styles_open"),
+ ("stylesheets", "folder_styles", "folder_styles_open"),
+ ("submodules", "folder_git", "folder_git_open"),
+ ("svg", "folder_svg", "folder_svg_open"),
+ ("svgs", "folder_svg", "folder_svg_open"),
+ ("temp", "folder_temp", "folder_temp_open"),
+ ("template", "folder_templates", "folder_templates_open"),
+ ("templates", "folder_templates", "folder_templates_open"),
+ ("test", "folder_tests", "folder_tests_open"),
+ ("testing", "folder_tests", "folder_tests_open"),
+ ("tests", "folder_tests", "folder_tests_open"),
+ ("theme", "folder_themes", "folder_themes_open"),
+ ("themes", "folder_themes", "folder_themes_open"),
+ ("tmp", "folder_temp", "folder_temp_open"),
+ ("translate", "folder_locales", "folder_locales_open"),
+ ("translation", "folder_locales", "folder_locales_open"),
+ ("translations", "folder_locales", "folder_locales_open"),
+ ("trigger", "folder_hooks", "folder_hooks_open"),
+ ("triggers", "folder_hooks", "folder_hooks_open"),
+ ("types", "folder_types", "folder_types_open"),
+ ("typings", "folder_types", "folder_types_open"),
+ ("upload", "folder_upload", "folder_upload_open"),
+ ("uploads", "folder_upload", "folder_upload_open"),
+ ("util", "folder_utils", "folder_utils_open"),
+ ("utilities", "folder_utils", "folder_utils_open"),
+ ("utility", "folder_utils", "folder_utils_open"),
+ ("utils", "folder_utils", "folder_utils_open"),
+ ("vercel", "folder_vercel", "folder_vercel_open"),
+ ("vid", "folder_video", "folder_video_open"),
+ ("video", "folder_video", "folder_video_open"),
+ ("videos", "folder_video", "folder_video_open"),
+ ("vids", "folder_video", "folder_video_open"),
+ ("view", "folder_views", "folder_views_open"),
+ ("views", "folder_views", "folder_views_open"),
+ ("web", "folder_public", "folder_public_open"),
+ ("website", "folder_public", "folder_public_open"),
+ ("widget", "folder_components", "folder_components_open"),
+ ("widgets", "folder_components", "folder_components_open"),
+ ("windows", "folder_windows", "folder_windows_open"),
+ ("workflow", "folder_workflows", "folder_workflows_open"),
+ ("workflows", "folder_workflows", "folder_workflows_open"),
+ ("www", "folder_public", "folder_public_open"),
+ ("wwwroot", "folder_public", "folder_public_open"),
+ ("xcodeproj", "folder_xcode", "folder_xcode_open"),
+ ("xcschemes", "folder_xcode", "folder_xcode_open"),
+ ("xcshareddata", "folder_xcode", "folder_xcode_open"),
+ ("xcworkspace", "folder_xcode", "folder_xcode_open"),
+ ("xmake", "folder_xmake", "folder_xmake_open"),
+];
diff --git a/frext/src/lib.rs b/frext/src/lib.rs
index 79d59d2..98f5a59 100644
--- a/frext/src/lib.rs
+++ b/frext/src/lib.rs
@@ -6,6 +6,9 @@
pub mod app;
pub mod error;
+pub mod file_icon;
+mod file_icon_bytes;
+mod file_icon_table;
pub mod font;
pub mod highlight;
pub mod icon;
diff --git a/frext/src/main.rs b/frext/src/main.rs
index 513c66e..50f6995 100644
--- a/frext/src/main.rs
+++ b/frext/src/main.rs
@@ -49,6 +49,9 @@ fn main() -> eframe::Result<()> {
Box::new(move |cc| {
frext::font::apply(&cc.egui_ctx);
frext::theme::apply(&cc.egui_ctx);
+ // Register egui_extras' image loaders (SVG) so the sidebar's
+ // file-type icons render.
+ egui_extras::install_image_loaders(&cc.egui_ctx);
Ok(Box::new(FrextApp::with_args(store, &files, dir.as_deref())))
}),
)