From 836c39c80cfca9b925ddc3ecac202366e0514a47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81d=C3=A1m=20Kov=C3=A1cs?= Date: Mon, 16 May 2022 21:48:29 +0200 Subject: [PATCH] Icons, Style refactor --- .../ViewModels/IElementViewModel.cs | 1 + .../ViewModels/ElementViewModel.cs | 2 + .../Models/ISymlinkElement.cs | 6 + .../IconProviders/IIconProvider.cs | 10 + .../Models/ImagePath.cs | 20 + .../Models/ImagePathType.cs | 8 + .../Avalonia/FileTime.GuiApp.App/App.axaml | 186 +-- .../Avalonia/FileTime.GuiApp.App/Startup.cs | 2 + .../Converters/ItemToImageConverter.cs | 61 + .../FileTime.GuiApp/FileTime.GuiApp.csproj | 1 + .../IconProviders/MaterialIconProvider.cs | 1373 +++++++++++++++++ .../IconProviders/SpecialPathWithIcon.cs | 15 + .../FileTime.GuiApp/Resources/Brushes.axaml | 50 + .../Resources/Converters.axaml | 34 + .../Resources/SolarizedDarkTheme.axaml | 27 + .../FileTime.GuiApp/Resources/Styles.axaml | 81 + .../FileTime.GuiApp/Views/ItemView.axaml | 4 +- 17 files changed, 1699 insertions(+), 182 deletions(-) create mode 100644 src/Core/FileTime.Core.Abstraction/Models/ISymlinkElement.cs create mode 100644 src/GuiApp/Avalonia/FileTime.GuiApp.Abstractions/IconProviders/IIconProvider.cs create mode 100644 src/GuiApp/Avalonia/FileTime.GuiApp.Abstractions/Models/ImagePath.cs create mode 100644 src/GuiApp/Avalonia/FileTime.GuiApp.Abstractions/Models/ImagePathType.cs create mode 100644 src/GuiApp/Avalonia/FileTime.GuiApp/Converters/ItemToImageConverter.cs create mode 100644 src/GuiApp/Avalonia/FileTime.GuiApp/IconProviders/MaterialIconProvider.cs create mode 100644 src/GuiApp/Avalonia/FileTime.GuiApp/IconProviders/SpecialPathWithIcon.cs create mode 100644 src/GuiApp/Avalonia/FileTime.GuiApp/Resources/Brushes.axaml create mode 100644 src/GuiApp/Avalonia/FileTime.GuiApp/Resources/Converters.axaml create mode 100644 src/GuiApp/Avalonia/FileTime.GuiApp/Resources/SolarizedDarkTheme.axaml create mode 100644 src/GuiApp/Avalonia/FileTime.GuiApp/Resources/Styles.axaml diff --git a/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IElementViewModel.cs b/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IElementViewModel.cs index 504e3e1..1350e76 100644 --- a/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IElementViewModel.cs +++ b/src/AppCommon/FileTime.App.Core.Abstraction/ViewModels/IElementViewModel.cs @@ -6,5 +6,6 @@ namespace FileTime.App.Core.ViewModels; public interface IElementViewModel : IItemViewModel, IInitable { + IElement? Element { get; } long? Size { get; set; } } \ No newline at end of file diff --git a/src/AppCommon/FileTime.App.Core/ViewModels/ElementViewModel.cs b/src/AppCommon/FileTime.App.Core/ViewModels/ElementViewModel.cs index f4dce66..efc917a 100644 --- a/src/AppCommon/FileTime.App.Core/ViewModels/ElementViewModel.cs +++ b/src/AppCommon/FileTime.App.Core/ViewModels/ElementViewModel.cs @@ -8,6 +8,8 @@ namespace FileTime.App.Core.ViewModels; [ViewModel(GenerateConstructor = false)] public partial class ElementViewModel : ItemViewModel, IElementViewModel { + public IElement? Element => BaseItem as Element; + [Property] private long? _size; diff --git a/src/Core/FileTime.Core.Abstraction/Models/ISymlinkElement.cs b/src/Core/FileTime.Core.Abstraction/Models/ISymlinkElement.cs new file mode 100644 index 0000000..3da0cce --- /dev/null +++ b/src/Core/FileTime.Core.Abstraction/Models/ISymlinkElement.cs @@ -0,0 +1,6 @@ +namespace FileTime.Core.Models; + +public interface ISymlinkElement +{ + IItem RealItem { get; } +} \ No newline at end of file diff --git a/src/GuiApp/Avalonia/FileTime.GuiApp.Abstractions/IconProviders/IIconProvider.cs b/src/GuiApp/Avalonia/FileTime.GuiApp.Abstractions/IconProviders/IIconProvider.cs new file mode 100644 index 0000000..47a37c2 --- /dev/null +++ b/src/GuiApp/Avalonia/FileTime.GuiApp.Abstractions/IconProviders/IIconProvider.cs @@ -0,0 +1,10 @@ +using FileTime.Core.Models; +using FileTime.GuiApp.Models; + +namespace FileTime.GuiApp.IconProviders; + +public interface IIconProvider +{ + ImagePath GetImage(IItem item); + bool EnableAdvancedIcons { get; set; } +} \ No newline at end of file diff --git a/src/GuiApp/Avalonia/FileTime.GuiApp.Abstractions/Models/ImagePath.cs b/src/GuiApp/Avalonia/FileTime.GuiApp.Abstractions/Models/ImagePath.cs new file mode 100644 index 0000000..a420a41 --- /dev/null +++ b/src/GuiApp/Avalonia/FileTime.GuiApp.Abstractions/Models/ImagePath.cs @@ -0,0 +1,20 @@ +namespace FileTime.GuiApp.Models; + +public class ImagePath +{ + public string? Path { get; } + public ImagePathType Type { get; } + public object? Image { get; } + + public ImagePath(ImagePathType type, string path) + { + Path = path; + Type = type; + } + + public ImagePath(ImagePathType type, object image) + { + Image = image; + Type = type; + } +} \ No newline at end of file diff --git a/src/GuiApp/Avalonia/FileTime.GuiApp.Abstractions/Models/ImagePathType.cs b/src/GuiApp/Avalonia/FileTime.GuiApp.Abstractions/Models/ImagePathType.cs new file mode 100644 index 0000000..4d39c99 --- /dev/null +++ b/src/GuiApp/Avalonia/FileTime.GuiApp.Abstractions/Models/ImagePathType.cs @@ -0,0 +1,8 @@ +namespace FileTime.GuiApp.Models; + +public enum ImagePathType +{ + Asset, + Absolute, + Raw +} \ No newline at end of file diff --git a/src/GuiApp/Avalonia/FileTime.GuiApp.App/App.axaml b/src/GuiApp/Avalonia/FileTime.GuiApp.App/App.axaml index c04fdb9..9b8b682 100644 --- a/src/GuiApp/Avalonia/FileTime.GuiApp.App/App.axaml +++ b/src/GuiApp/Avalonia/FileTime.GuiApp.App/App.axaml @@ -6,189 +6,15 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> - #E7073642 - #083e4c - #D0083e4c - #80083e4c - - #00000000 - #10000000 - #93a1a1 - #00000000 - #10000000 - #b58900 - - #93a1a1 - #268bd2 - #fdf6e3 - #7793a1a1 - #93a1a1 - #073642 - #b58900 - #b58900 - #002b36 - - #dc322f - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/src/GuiApp/Avalonia/FileTime.GuiApp.App/Startup.cs b/src/GuiApp/Avalonia/FileTime.GuiApp.App/Startup.cs index 54e27f1..d2804ce 100644 --- a/src/GuiApp/Avalonia/FileTime.GuiApp.App/Startup.cs +++ b/src/GuiApp/Avalonia/FileTime.GuiApp.App/Startup.cs @@ -3,6 +3,7 @@ using System.IO; using FileTime.App.Core.Services; using FileTime.App.Core.ViewModels; using FileTime.GuiApp.Configuration; +using FileTime.GuiApp.IconProviders; using FileTime.GuiApp.Logging; using FileTime.GuiApp.Services; using FileTime.GuiApp.ViewModels; @@ -33,6 +34,7 @@ public static class Startup .AddSingleton() .AddSingleton() .AddSingleton() + .AddSingleton() .AddSingleton(); } diff --git a/src/GuiApp/Avalonia/FileTime.GuiApp/Converters/ItemToImageConverter.cs b/src/GuiApp/Avalonia/FileTime.GuiApp/Converters/ItemToImageConverter.cs new file mode 100644 index 0000000..fcaac18 --- /dev/null +++ b/src/GuiApp/Avalonia/FileTime.GuiApp/Converters/ItemToImageConverter.cs @@ -0,0 +1,61 @@ +using System.Globalization; +using Avalonia.Data.Converters; +using Avalonia.Svg.Skia; +using FileTime.App.Core.ViewModels; +using FileTime.Core.Models; +using FileTime.GuiApp.IconProviders; +using Microsoft.Extensions.DependencyInjection; + +namespace FileTime.GuiApp.Converters; + +public class ItemToImageConverter : IValueConverter +{ + private readonly IIconProvider _iconProvider; + + public ItemToImageConverter() + { + _iconProvider = DI.ServiceProvider.GetRequiredService(); + } + + public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) + { + if (value == null) return null; + + IItem item = value switch + { + IContainerViewModel container => container.Container!, + IElementViewModel element => element.Element!, + IItem i => i, + _ => throw new NotImplementedException() + }; + + SvgSource? source; + try + { + var path = _iconProvider.GetImage(item)!; + if (path.Type == Models.ImagePathType.Absolute) + { + source = SvgSource.Load(path.Path!, null); + } + else if (path.Type == Models.ImagePathType.Raw) + { + return path.Image; + } + else + { + source = SvgSource.Load("avares://FileTime.GuiApp" + path.Path, null); + } + } + catch + { + source = SvgSource.Load("avares://FileTime.GuiApp/Assets/material/file.svg", null); + } + + return new SvgImage {Source = source}; + } + + public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/src/GuiApp/Avalonia/FileTime.GuiApp/FileTime.GuiApp.csproj b/src/GuiApp/Avalonia/FileTime.GuiApp/FileTime.GuiApp.csproj index 13e9ad3..42bbdb3 100644 --- a/src/GuiApp/Avalonia/FileTime.GuiApp/FileTime.GuiApp.csproj +++ b/src/GuiApp/Avalonia/FileTime.GuiApp/FileTime.GuiApp.csproj @@ -31,6 +31,7 @@ + diff --git a/src/GuiApp/Avalonia/FileTime.GuiApp/IconProviders/MaterialIconProvider.cs b/src/GuiApp/Avalonia/FileTime.GuiApp/IconProviders/MaterialIconProvider.cs new file mode 100644 index 0000000..d5390dd --- /dev/null +++ b/src/GuiApp/Avalonia/FileTime.GuiApp/IconProviders/MaterialIconProvider.cs @@ -0,0 +1,1373 @@ +using System.Runtime.InteropServices; +using FileTime.Core.Models; +using FileTime.GuiApp.Models; +using FileTime.Providers.Local; +using Syroot.Windows.IO; + +namespace FileTime.GuiApp.IconProviders; + +public class MaterialIconProvider : IIconProvider +{ + private static readonly Dictionary _iconsByExtension = new(); + private static readonly Dictionary _iconsByFileName = new(); + + private readonly List _specialPaths = new(); + public bool EnableAdvancedIcons { get; set; } = true; + + static MaterialIconProvider() + { + InitMatches(); + } + + public MaterialIconProvider() + { + if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) return; + + _specialPaths.Add(new SpecialPathWithIcon(KnownFolders.Desktop.Path, GetAssetPath("desktop.svg"))); + _specialPaths.Add(new SpecialPathWithIcon(KnownFolders.Documents.Path, GetAssetPath("folder-resource.svg"))); + _specialPaths.Add(new SpecialPathWithIcon(KnownFolders.DownloadsLocalized.Path, GetAssetPath("folder-download.svg"))); + _specialPaths.Add(new SpecialPathWithIcon(KnownFolders.MusicLocalized.Path, GetAssetPath("folder-music.svg"))); + _specialPaths.Add(new SpecialPathWithIcon(KnownFolders.Pictures.Path, GetAssetPath("folder-images.svg"))); + _specialPaths.Add(new SpecialPathWithIcon(KnownFolders.Profile.Path, GetAssetPath("folder-home.svg"))); + _specialPaths.Add(new SpecialPathWithIcon(KnownFolders.Videos.Path, GetAssetPath("folder-video.svg"))); + } + + public ImagePath GetImage(IItem item) + { + item = item is ISymlinkElement symlinkElement ? symlinkElement.RealItem : item; + var icon = item is IContainer ? "folder.svg" : "file.svg"; + var localPath = item.NativePath?.Path; + + if (!EnableAdvancedIcons) return GetAssetPath(icon); + + if (localPath != null && _specialPaths.Find(p => p.Path == localPath) is SpecialPathWithIcon specialPath) + { + return specialPath.IconPath; + } + + if (item is not IElement element) return GetAssetPath(icon); + + if (element.Provider is ILocalContentProvider && (localPath?.EndsWith(".svg") ?? false)) + { + return new ImagePath(ImagePathType.Absolute, localPath); + } + + string? possibleIcon = null; + var fileName = element.Name; + var extension = element.Name.Contains('.') ? element.Name.Split('.').Last() : null; + + if (_iconsByFileName.TryGetValue(fileName, out var value)) possibleIcon = value; + else if (_iconsByExtension.FirstOrDefault(k => fileName.EndsWith("." + k.Key)) is KeyValuePair {Key: { }} matchingExtension) possibleIcon = matchingExtension.Value; + + if (possibleIcon != null) + { + icon = possibleIcon + ".svg"; + } + + return GetAssetPath(icon); + } + + private static ImagePath GetAssetPath(string iconName) + { + return new ImagePath(ImagePathType.Asset, "/Assets/material/" + iconName); + } + + private static void InitMatches() + { + //Manually added + _iconsByExtension.Add("ts", "typescript"); + + //Generated + _iconsByExtension.Add("htm", "html"); + _iconsByExtension.Add("xhtml", "html"); + _iconsByExtension.Add("html_vm", "html"); + _iconsByExtension.Add("asp", "html"); + _iconsByExtension.Add("jade", "pug"); + _iconsByExtension.Add("pug", "pug"); + _iconsByExtension.Add("md", "markdown"); + _iconsByExtension.Add("markdown", "markdown"); + _iconsByExtension.Add("rst", "markdown"); + _iconsByExtension.Add("blink", "blink"); + _iconsByExtension.Add("css", "css"); + _iconsByExtension.Add("scss", "sass"); + _iconsByExtension.Add("sass", "sass"); + _iconsByExtension.Add("less", "less"); + _iconsByExtension.Add("json", "json"); + _iconsByExtension.Add("tsbuildinfo", "json"); + _iconsByExtension.Add("json5", "json"); + _iconsByExtension.Add("jsonl", "json"); + _iconsByExtension.Add("ndjson", "json"); + _iconsByExtension.Add("jinja", "jinja"); + _iconsByExtension.Add("jinja2", "jinja"); + _iconsByExtension.Add("j2", "jinja"); + _iconsByExtension.Add("jinja-html", "jinja"); + _iconsByExtension.Add("proto", "proto"); + _iconsByExtension.Add("sublime-project", "sublime"); + _iconsByExtension.Add("sublime-workspace", "sublime"); + _iconsByExtension.Add("tw", "twine"); + _iconsByExtension.Add("twee", "twine"); + _iconsByExtension.Add("yml", "yaml"); + _iconsByExtension.Add("yaml", "yaml"); + _iconsByExtension.Add("yml.dist", "yaml"); + _iconsByExtension.Add("yaml.dist", "yaml"); + _iconsByExtension.Add("YAML-tmLanguage", "yaml"); + _iconsByExtension.Add("xml", "xml"); + _iconsByExtension.Add("plist", "xml"); + _iconsByExtension.Add("xsd", "xml"); + _iconsByExtension.Add("dtd", "xml"); + _iconsByExtension.Add("xsl", "xml"); + _iconsByExtension.Add("xslt", "xml"); + _iconsByExtension.Add("resx", "xml"); + _iconsByExtension.Add("iml", "xml"); + _iconsByExtension.Add("xquery", "xml"); + _iconsByExtension.Add("tmLanguage", "xml"); + _iconsByExtension.Add("manifest", "xml"); + _iconsByExtension.Add("project", "xml"); + _iconsByExtension.Add("xml.dist", "xml"); + _iconsByExtension.Add("xml.dist.sample", "xml"); + _iconsByExtension.Add("dmn", "xml"); + _iconsByExtension.Add("png", "image"); + _iconsByExtension.Add("jpeg", "image"); + _iconsByExtension.Add("jpg", "image"); + _iconsByExtension.Add("gif", "image"); + _iconsByExtension.Add("ico", "image"); + _iconsByExtension.Add("tif", "image"); + _iconsByExtension.Add("tiff", "image"); + _iconsByExtension.Add("psd", "image"); + _iconsByExtension.Add("psb", "image"); + _iconsByExtension.Add("ami", "image"); + _iconsByExtension.Add("apx", "image"); + _iconsByExtension.Add("bmp", "image"); + _iconsByExtension.Add("bpg", "image"); + _iconsByExtension.Add("brk", "image"); + _iconsByExtension.Add("cur", "image"); + _iconsByExtension.Add("dds", "image"); + _iconsByExtension.Add("dng", "image"); + _iconsByExtension.Add("exr", "image"); + _iconsByExtension.Add("fpx", "image"); + _iconsByExtension.Add("gbr", "image"); + _iconsByExtension.Add("img", "image"); + _iconsByExtension.Add("jbig2", "image"); + _iconsByExtension.Add("jb2", "image"); + _iconsByExtension.Add("jng", "image"); + _iconsByExtension.Add("jxr", "image"); + _iconsByExtension.Add("pgf", "image"); + _iconsByExtension.Add("pic", "image"); + _iconsByExtension.Add("raw", "image"); + _iconsByExtension.Add("webp", "image"); + _iconsByExtension.Add("eps", "image"); + _iconsByExtension.Add("afphoto", "image"); + _iconsByExtension.Add("ase", "image"); + _iconsByExtension.Add("aseprite", "image"); + _iconsByExtension.Add("clip", "image"); + _iconsByExtension.Add("cpt", "image"); + _iconsByExtension.Add("heif", "image"); + _iconsByExtension.Add("heic", "image"); + _iconsByExtension.Add("kra", "image"); + _iconsByExtension.Add("mdp", "image"); + _iconsByExtension.Add("ora", "image"); + _iconsByExtension.Add("pdn", "image"); + _iconsByExtension.Add("reb", "image"); + _iconsByExtension.Add("sai", "image"); + _iconsByExtension.Add("tga", "image"); + _iconsByExtension.Add("xcf", "image"); + _iconsByExtension.Add("jfif", "image"); + _iconsByExtension.Add("ppm", "image"); + _iconsByExtension.Add("pbm", "image"); + _iconsByExtension.Add("pgm", "image"); + _iconsByExtension.Add("pnm", "image"); + _iconsByExtension.Add("esx", "javascript"); + _iconsByExtension.Add("mjs", "javascript"); + _iconsByExtension.Add("jsx", "react"); + _iconsByExtension.Add("tsx", "react_ts"); + _iconsByExtension.Add("ini", "settings"); + _iconsByExtension.Add("dlc", "settings"); + _iconsByExtension.Add("dll", "settings"); + _iconsByExtension.Add("config", "settings"); + _iconsByExtension.Add("conf", "settings"); + _iconsByExtension.Add("properties", "settings"); + _iconsByExtension.Add("prop", "settings"); + _iconsByExtension.Add("settings", "settings"); + _iconsByExtension.Add("option", "settings"); + _iconsByExtension.Add("props", "settings"); + _iconsByExtension.Add("toml", "settings"); + _iconsByExtension.Add("prefs", "settings"); + _iconsByExtension.Add("sln.dotsettings", "settings"); + _iconsByExtension.Add("sln.dotsettings.user", "settings"); + _iconsByExtension.Add("cfg", "settings"); + _iconsByExtension.Add("d.ts", "typescript-def"); + _iconsByExtension.Add("marko", "markojs"); + _iconsByExtension.Add("astro", "astro"); + _iconsByExtension.Add("pdf", "pdf"); + _iconsByExtension.Add("xlsx", "table"); + _iconsByExtension.Add("xls", "table"); + _iconsByExtension.Add("csv", "table"); + _iconsByExtension.Add("tsv", "table"); + _iconsByExtension.Add("vscodeignore", "vscode"); + _iconsByExtension.Add("vsixmanifest", "vscode"); + _iconsByExtension.Add("vsix", "vscode"); + _iconsByExtension.Add("code-workplace", "vscode"); + _iconsByExtension.Add("csproj", "visualstudio"); + _iconsByExtension.Add("ruleset", "visualstudio"); + _iconsByExtension.Add("sln", "visualstudio"); + _iconsByExtension.Add("suo", "visualstudio"); + _iconsByExtension.Add("vb", "visualstudio"); + _iconsByExtension.Add("vbs", "visualstudio"); + _iconsByExtension.Add("vcxitems", "visualstudio"); + _iconsByExtension.Add("vcxitems.filters", "visualstudio"); + _iconsByExtension.Add("vcxproj", "visualstudio"); + _iconsByExtension.Add("vcxproj.filters", "visualstudio"); + _iconsByExtension.Add("pdb", "database"); + _iconsByExtension.Add("sql", "database"); + _iconsByExtension.Add("pks", "database"); + _iconsByExtension.Add("pkb", "database"); + _iconsByExtension.Add("accdb", "database"); + _iconsByExtension.Add("mdb", "database"); + _iconsByExtension.Add("sqlite", "database"); + _iconsByExtension.Add("sqlite3", "database"); + _iconsByExtension.Add("pgsql", "database"); + _iconsByExtension.Add("postgres", "database"); + _iconsByExtension.Add("psql", "database"); + _iconsByExtension.Add("db", "database"); + _iconsByExtension.Add("db3", "database"); + _iconsByExtension.Add("kql", "kusto"); + _iconsByExtension.Add("cs", "csharp"); + _iconsByExtension.Add("csx", "csharp"); + _iconsByExtension.Add("qs", "qsharp"); + _iconsByExtension.Add("zip", "zip"); + _iconsByExtension.Add("tar", "zip"); + _iconsByExtension.Add("gz", "zip"); + _iconsByExtension.Add("xz", "zip"); + _iconsByExtension.Add("br", "zip"); + _iconsByExtension.Add("bzip2", "zip"); + _iconsByExtension.Add("gzip", "zip"); + _iconsByExtension.Add("brotli", "zip"); + _iconsByExtension.Add("7z", "zip"); + _iconsByExtension.Add("rar", "zip"); + _iconsByExtension.Add("tgz", "zip"); + _iconsByExtension.Add("vala", "vala"); + _iconsByExtension.Add("zig", "zig"); + _iconsByExtension.Add("exe", "exe"); + _iconsByExtension.Add("msi", "exe"); + _iconsByExtension.Add("dat", "hex"); + _iconsByExtension.Add("bin", "hex"); + _iconsByExtension.Add("hex", "hex"); + _iconsByExtension.Add("java", "java"); + _iconsByExtension.Add("jsp", "java"); + _iconsByExtension.Add("jar", "jar"); + _iconsByExtension.Add("class", "javaclass"); + _iconsByExtension.Add("c", "c"); + _iconsByExtension.Add("i", "c"); + _iconsByExtension.Add("mi", "c"); + _iconsByExtension.Add("h", "h"); + _iconsByExtension.Add("cc", "cpp"); + _iconsByExtension.Add("cpp", "cpp"); + _iconsByExtension.Add("cxx", "cpp"); + _iconsByExtension.Add("c++", "cpp"); + _iconsByExtension.Add("cp", "cpp"); + _iconsByExtension.Add("mm", "cpp"); + _iconsByExtension.Add("mii", "cpp"); + _iconsByExtension.Add("ii", "cpp"); + _iconsByExtension.Add("hh", "hpp"); + _iconsByExtension.Add("hpp", "hpp"); + _iconsByExtension.Add("hxx", "hpp"); + _iconsByExtension.Add("h++", "hpp"); + _iconsByExtension.Add("hp", "hpp"); + _iconsByExtension.Add("tcc", "hpp"); + _iconsByExtension.Add("inl", "hpp"); + _iconsByExtension.Add("go", "go"); + _iconsByExtension.Add("py", "python"); + _iconsByExtension.Add("pyc", "python-misc"); + _iconsByExtension.Add("whl", "python-misc"); + _iconsByExtension.Add("url", "url"); + _iconsByExtension.Add("sh", "console"); + _iconsByExtension.Add("ksh", "console"); + _iconsByExtension.Add("csh", "console"); + _iconsByExtension.Add("tcsh", "console"); + _iconsByExtension.Add("zsh", "console"); + _iconsByExtension.Add("bash", "console"); + _iconsByExtension.Add("bat", "console"); + _iconsByExtension.Add("cmd", "console"); + _iconsByExtension.Add("awk", "console"); + _iconsByExtension.Add("fish", "console"); + _iconsByExtension.Add("exp", "console"); + _iconsByExtension.Add("ps1", "powershell"); + _iconsByExtension.Add("psm1", "powershell"); + _iconsByExtension.Add("psd1", "powershell"); + _iconsByExtension.Add("ps1xml", "powershell"); + _iconsByExtension.Add("psc1", "powershell"); + _iconsByExtension.Add("pssc", "powershell"); + _iconsByExtension.Add("gradle", "gradle"); + _iconsByExtension.Add("doc", "word"); + _iconsByExtension.Add("docx", "word"); + _iconsByExtension.Add("rtf", "word"); + _iconsByExtension.Add("cer", "certificate"); + _iconsByExtension.Add("cert", "certificate"); + _iconsByExtension.Add("crt", "certificate"); + _iconsByExtension.Add("pub", "key"); + _iconsByExtension.Add("key", "key"); + _iconsByExtension.Add("pem", "key"); + _iconsByExtension.Add("asc", "key"); + _iconsByExtension.Add("gpg", "key"); + _iconsByExtension.Add("passwd", "key"); + _iconsByExtension.Add("woff", "font"); + _iconsByExtension.Add("woff2", "font"); + _iconsByExtension.Add("ttf", "font"); + _iconsByExtension.Add("eot", "font"); + _iconsByExtension.Add("suit", "font"); + _iconsByExtension.Add("otf", "font"); + _iconsByExtension.Add("bmap", "font"); + _iconsByExtension.Add("fnt", "font"); + _iconsByExtension.Add("odttf", "font"); + _iconsByExtension.Add("ttc", "font"); + _iconsByExtension.Add("font", "font"); + _iconsByExtension.Add("fonts", "font"); + _iconsByExtension.Add("sui", "font"); + _iconsByExtension.Add("ntf", "font"); + _iconsByExtension.Add("mrf", "font"); + _iconsByExtension.Add("lib", "lib"); + _iconsByExtension.Add("bib", "lib"); + _iconsByExtension.Add("rb", "ruby"); + _iconsByExtension.Add("erb", "ruby"); + _iconsByExtension.Add("fs", "fsharp"); + _iconsByExtension.Add("fsx", "fsharp"); + _iconsByExtension.Add("fsi", "fsharp"); + _iconsByExtension.Add("fsproj", "fsharp"); + _iconsByExtension.Add("swift", "swift"); + _iconsByExtension.Add("ino", "arduino"); + _iconsByExtension.Add("dockerignore", "docker"); + _iconsByExtension.Add("dockerfile", "docker"); + _iconsByExtension.Add("tex", "tex"); + _iconsByExtension.Add("sty", "tex"); + _iconsByExtension.Add("dtx", "tex"); + _iconsByExtension.Add("ltx", "tex"); + _iconsByExtension.Add("pptx", "powerpoint"); + _iconsByExtension.Add("ppt", "powerpoint"); + _iconsByExtension.Add("pptm", "powerpoint"); + _iconsByExtension.Add("potx", "powerpoint"); + _iconsByExtension.Add("potm", "powerpoint"); + _iconsByExtension.Add("ppsx", "powerpoint"); + _iconsByExtension.Add("ppsm", "powerpoint"); + _iconsByExtension.Add("pps", "powerpoint"); + _iconsByExtension.Add("ppam", "powerpoint"); + _iconsByExtension.Add("ppa", "powerpoint"); + _iconsByExtension.Add("webm", "video"); + _iconsByExtension.Add("mkv", "video"); + _iconsByExtension.Add("flv", "video"); + _iconsByExtension.Add("vob", "video"); + _iconsByExtension.Add("ogv", "video"); + _iconsByExtension.Add("ogg", "video"); + _iconsByExtension.Add("gifv", "video"); + _iconsByExtension.Add("avi", "video"); + _iconsByExtension.Add("mov", "video"); + _iconsByExtension.Add("qt", "video"); + _iconsByExtension.Add("wmv", "video"); + _iconsByExtension.Add("yuv", "video"); + _iconsByExtension.Add("rm", "video"); + _iconsByExtension.Add("rmvb", "video"); + _iconsByExtension.Add("mp4", "video"); + _iconsByExtension.Add("m4v", "video"); + _iconsByExtension.Add("mpg", "video"); + _iconsByExtension.Add("mp2", "video"); + _iconsByExtension.Add("mpeg", "video"); + _iconsByExtension.Add("mpe", "video"); + _iconsByExtension.Add("mpv", "video"); + _iconsByExtension.Add("m2v", "video"); + _iconsByExtension.Add("vdi", "virtual"); + _iconsByExtension.Add("vbox", "virtual"); + _iconsByExtension.Add("vbox-prev", "virtual"); + _iconsByExtension.Add("ics", "email"); + _iconsByExtension.Add("mp3", "audio"); + _iconsByExtension.Add("flac", "audio"); + _iconsByExtension.Add("m4a", "audio"); + _iconsByExtension.Add("wma", "audio"); + _iconsByExtension.Add("aiff", "audio"); + _iconsByExtension.Add("wav", "audio"); + _iconsByExtension.Add("coffee", "coffee"); + _iconsByExtension.Add("cson", "coffee"); + _iconsByExtension.Add("iced", "coffee"); + _iconsByExtension.Add("txt", "document"); + _iconsByExtension.Add("graphql", "graphql"); + _iconsByExtension.Add("gql", "graphql"); + _iconsByExtension.Add("rs", "rust"); + _iconsByExtension.Add("raml", "raml"); + _iconsByExtension.Add("xaml", "xaml"); + _iconsByExtension.Add("hs", "haskell"); + _iconsByExtension.Add("kt", "kotlin"); + _iconsByExtension.Add("kts", "kotlin"); + _iconsByExtension.Add("patch", "git"); + _iconsByExtension.Add("lua", "lua"); + _iconsByExtension.Add("clj", "clojure"); + _iconsByExtension.Add("cljs", "clojure"); + _iconsByExtension.Add("cljc", "clojure"); + _iconsByExtension.Add("groovy", "groovy"); + _iconsByExtension.Add("r", "r"); + _iconsByExtension.Add("rmd", "r"); + _iconsByExtension.Add("dart", "dart"); + _iconsByExtension.Add("as", "actionscript"); + _iconsByExtension.Add("mxml", "mxml"); + _iconsByExtension.Add("ahk", "autohotkey"); + _iconsByExtension.Add("swf", "flash"); + _iconsByExtension.Add("swc", "swc"); + _iconsByExtension.Add("cmake", "cmake"); + _iconsByExtension.Add("asm", "assembly"); + _iconsByExtension.Add("a51", "assembly"); + _iconsByExtension.Add("inc", "assembly"); + _iconsByExtension.Add("nasm", "assembly"); + _iconsByExtension.Add("s", "assembly"); + _iconsByExtension.Add("ms", "assembly"); + _iconsByExtension.Add("agc", "assembly"); + _iconsByExtension.Add("ags", "assembly"); + _iconsByExtension.Add("aea", "assembly"); + _iconsByExtension.Add("argus", "assembly"); + _iconsByExtension.Add("mitigus", "assembly"); + _iconsByExtension.Add("binsource", "assembly"); + _iconsByExtension.Add("vue", "vue"); + _iconsByExtension.Add("ml", "ocaml"); + _iconsByExtension.Add("mli", "ocaml"); + _iconsByExtension.Add("cmx", "ocaml"); + _iconsByExtension.Add("odin", "odin"); + _iconsByExtension.Add("js.map", "javascript-map"); + _iconsByExtension.Add("mjs.map", "javascript-map"); + _iconsByExtension.Add("cjs.map", "javascript-map"); + _iconsByExtension.Add("css.map", "css-map"); + _iconsByExtension.Add("lock", "lock"); + _iconsByExtension.Add("hbs", "handlebars"); + _iconsByExtension.Add("mustache", "handlebars"); + _iconsByExtension.Add("pm", "perl"); + _iconsByExtension.Add("raku", "perl"); + _iconsByExtension.Add("hx", "haxe"); + _iconsByExtension.Add("spec.ts", "test-ts"); + _iconsByExtension.Add("e2e-spec.ts", "test-ts"); + _iconsByExtension.Add("test.ts", "test-ts"); + _iconsByExtension.Add("ts.snap", "test-ts"); + _iconsByExtension.Add("spec.tsx", "test-jsx"); + _iconsByExtension.Add("test.tsx", "test-jsx"); + _iconsByExtension.Add("tsx.snap", "test-jsx"); + _iconsByExtension.Add("spec.jsx", "test-jsx"); + _iconsByExtension.Add("test.jsx", "test-jsx"); + _iconsByExtension.Add("jsx.snap", "test-jsx"); + _iconsByExtension.Add("spec.js", "test-js"); + _iconsByExtension.Add("spec.cjs", "test-js"); + _iconsByExtension.Add("spec.mjs", "test-js"); + _iconsByExtension.Add("e2e-spec.js", "test-js"); + _iconsByExtension.Add("e2e-spec.cjs", "test-js"); + _iconsByExtension.Add("e2e-spec.mjs", "test-js"); + _iconsByExtension.Add("test.js", "test-js"); + _iconsByExtension.Add("test.cjs", "test-js"); + _iconsByExtension.Add("test.mjs", "test-js"); + _iconsByExtension.Add("js.snap", "test-js"); + _iconsByExtension.Add("pp", "puppet"); + _iconsByExtension.Add("ex", "elixir"); + _iconsByExtension.Add("exs", "elixir"); + _iconsByExtension.Add("eex", "elixir"); + _iconsByExtension.Add("leex", "elixir"); + _iconsByExtension.Add("heex", "elixir"); + _iconsByExtension.Add("ls", "livescript"); + _iconsByExtension.Add("erl", "erlang"); + _iconsByExtension.Add("twig", "twig"); + _iconsByExtension.Add("jl", "julia"); + _iconsByExtension.Add("elm", "elm"); + _iconsByExtension.Add("pure", "purescript"); + _iconsByExtension.Add("purs", "purescript"); + _iconsByExtension.Add("tpl", "smarty"); + _iconsByExtension.Add("styl", "stylus"); + _iconsByExtension.Add("re", "reason"); + _iconsByExtension.Add("rei", "reason"); + _iconsByExtension.Add("cmj", "bucklescript"); + _iconsByExtension.Add("merlin", "merlin"); + _iconsByExtension.Add("vhd", "verilog"); + _iconsByExtension.Add("sv", "verilog"); + _iconsByExtension.Add("svh", "verilog"); + _iconsByExtension.Add("nb", "mathematica"); + _iconsByExtension.Add("wl", "wolframlanguage"); + _iconsByExtension.Add("wls", "wolframlanguage"); + _iconsByExtension.Add("njk", "nunjucks"); + _iconsByExtension.Add("nunjucks", "nunjucks"); + _iconsByExtension.Add("robot", "robot"); + _iconsByExtension.Add("sol", "solidity"); + _iconsByExtension.Add("au3", "autoit"); + _iconsByExtension.Add("haml", "haml"); + _iconsByExtension.Add("yang", "yang"); + _iconsByExtension.Add("mjml", "mjml"); + _iconsByExtension.Add("tf", "terraform"); + _iconsByExtension.Add("tf.json", "terraform"); + _iconsByExtension.Add("tfvars", "terraform"); + _iconsByExtension.Add("tfstate", "terraform"); + _iconsByExtension.Add("blade.php", "laravel"); + _iconsByExtension.Add("inky.php", "laravel"); + _iconsByExtension.Add("applescript", "applescript"); + _iconsByExtension.Add("ipa", "applescript"); + _iconsByExtension.Add("cake", "cake"); + _iconsByExtension.Add("feature", "cucumber"); + _iconsByExtension.Add("nim", "nim"); + _iconsByExtension.Add("nimble", "nim"); + _iconsByExtension.Add("apib", "apiblueprint"); + _iconsByExtension.Add("apiblueprint", "apiblueprint"); + _iconsByExtension.Add("riot", "riot"); + _iconsByExtension.Add("tag", "riot"); + _iconsByExtension.Add("vfl", "vfl"); + _iconsByExtension.Add("kl", "kl"); + _iconsByExtension.Add("pcss", "postcss"); + _iconsByExtension.Add("sss", "postcss"); + _iconsByExtension.Add("todo", "todo"); + _iconsByExtension.Add("cfml", "coldfusion"); + _iconsByExtension.Add("cfc", "coldfusion"); + _iconsByExtension.Add("lucee", "coldfusion"); + _iconsByExtension.Add("cfm", "coldfusion"); + _iconsByExtension.Add("cabal", "cabal"); + _iconsByExtension.Add("nix", "nix"); + _iconsByExtension.Add("slim", "slim"); + _iconsByExtension.Add("http", "http"); + _iconsByExtension.Add("rest", "http"); + _iconsByExtension.Add("rql", "restql"); + _iconsByExtension.Add("restql", "restql"); + _iconsByExtension.Add("kv", "kivy"); + _iconsByExtension.Add("graphcool", "graphcool"); + _iconsByExtension.Add("sbt", "sbt"); + _iconsByExtension.Add("apk", "android"); + _iconsByExtension.Add("smali", "android"); + _iconsByExtension.Add("dex", "android"); + _iconsByExtension.Add("env", "tune"); + _iconsByExtension.Add("gitlab-ci.yml", "gitlab"); + _iconsByExtension.Add("jenkinsfile", "jenkins"); + _iconsByExtension.Add("jenkins", "jenkins"); + _iconsByExtension.Add("cr", "crystal"); + _iconsByExtension.Add("ecr", "crystal"); + _iconsByExtension.Add("drone.yml", "drone"); + _iconsByExtension.Add("cu", "cuda"); + _iconsByExtension.Add("cuh", "cuda"); + _iconsByExtension.Add("log", "log"); + _iconsByExtension.Add("def", "dotjs"); + _iconsByExtension.Add("dot", "dotjs"); + _iconsByExtension.Add("jst", "dotjs"); + _iconsByExtension.Add("ejs", "ejs"); + _iconsByExtension.Add(".wakatime-project", "wakatime"); + _iconsByExtension.Add("pde", "processing"); + _iconsByExtension.Add("stories.js", "storybook"); + _iconsByExtension.Add("stories.jsx", "storybook"); + _iconsByExtension.Add("stories.mdx", "storybook"); + _iconsByExtension.Add("story.js", "storybook"); + _iconsByExtension.Add("story.jsx", "storybook"); + _iconsByExtension.Add("stories.ts", "storybook"); + _iconsByExtension.Add("stories.tsx", "storybook"); + _iconsByExtension.Add("story.ts", "storybook"); + _iconsByExtension.Add("story.tsx", "storybook"); + _iconsByExtension.Add("stories.svelte", "storybook"); + _iconsByExtension.Add("story.mdx", "storybook"); + _iconsByExtension.Add("wpy", "wepy"); + _iconsByExtension.Add("hcl", "hcl"); + _iconsByExtension.Add("san", "san"); + _iconsByExtension.Add("djt", "django"); + _iconsByExtension.Add("red", "red"); + _iconsByExtension.Add("fxp", "foxpro"); + _iconsByExtension.Add("prg", "foxpro"); + _iconsByExtension.Add("pot", "i18n"); + _iconsByExtension.Add("po", "i18n"); + _iconsByExtension.Add("mo", "i18n"); + _iconsByExtension.Add("wat", "webassembly"); + _iconsByExtension.Add("wasm", "webassembly"); + _iconsByExtension.Add("ipynb", "jupyter"); + _iconsByExtension.Add("d", "d"); + _iconsByExtension.Add("mdx", "mdx"); + _iconsByExtension.Add("bal", "ballerina"); + _iconsByExtension.Add("balx", "ballerina"); + _iconsByExtension.Add("rkt", "racket"); + _iconsByExtension.Add("bzl", "bazel"); + _iconsByExtension.Add("bazel", "bazel"); + _iconsByExtension.Add("mint", "mint"); + _iconsByExtension.Add("vm", "velocity"); + _iconsByExtension.Add("fhtml", "velocity"); + _iconsByExtension.Add("vtl", "velocity"); + _iconsByExtension.Add("gd", "godot"); + _iconsByExtension.Add("godot", "godot-assets"); + _iconsByExtension.Add("tres", "godot-assets"); + _iconsByExtension.Add("tscn", "godot-assets"); + _iconsByExtension.Add("azure-pipelines.yml", "azure-pipelines"); + _iconsByExtension.Add("azure-pipelines.yaml", "azure-pipelines"); + _iconsByExtension.Add("azcli", "azure"); + _iconsByExtension.Add("vagrantfile", "vagrant"); + _iconsByExtension.Add("prisma", "prisma"); + _iconsByExtension.Add("cshtml", "razor"); + _iconsByExtension.Add("vbhtml", "razor"); + _iconsByExtension.Add("abc", "abc"); + _iconsByExtension.Add("ad", "asciidoc"); + _iconsByExtension.Add("adoc", "asciidoc"); + _iconsByExtension.Add("asciidoc", "asciidoc"); + _iconsByExtension.Add("edge", "edge"); + _iconsByExtension.Add("ss", "scheme"); + _iconsByExtension.Add("scm", "scheme"); + _iconsByExtension.Add("lisp", "lisp"); + _iconsByExtension.Add("lsp", "lisp"); + _iconsByExtension.Add("cl", "lisp"); + _iconsByExtension.Add("fast", "lisp"); + _iconsByExtension.Add("stl", "3d"); + _iconsByExtension.Add("obj", "3d"); + _iconsByExtension.Add("ac", "3d"); + _iconsByExtension.Add("blend", "3d"); + _iconsByExtension.Add("mesh", "3d"); + _iconsByExtension.Add("mqo", "3d"); + _iconsByExtension.Add("pmd", "3d"); + _iconsByExtension.Add("pmx", "3d"); + _iconsByExtension.Add("skp", "3d"); + _iconsByExtension.Add("vac", "3d"); + _iconsByExtension.Add("vdp", "3d"); + _iconsByExtension.Add("vox", "3d"); + _iconsByExtension.Add("svg", "svg"); + _iconsByExtension.Add("svelte", "svelte"); + _iconsByExtension.Add("vimrc", "vim"); + _iconsByExtension.Add("gvimrc", "vim"); + _iconsByExtension.Add("exrc", "vim"); + _iconsByExtension.Add("vim", "vim"); + _iconsByExtension.Add("viminfo", "vim"); + _iconsByExtension.Add("moon", "moonscript"); + _iconsByExtension.Add("prw", "advpl_prw"); + _iconsByExtension.Add("prx", "advpl_prw"); + _iconsByExtension.Add("ptm", "advpl_ptm"); + _iconsByExtension.Add("tlpp", "advpl_tlpp"); + _iconsByExtension.Add("ch", "advpl_include"); + _iconsByExtension.Add("iso", "disc"); + _iconsByExtension.Add("f", "fortran"); + _iconsByExtension.Add("f77", "fortran"); + _iconsByExtension.Add("f90", "fortran"); + _iconsByExtension.Add("f95", "fortran"); + _iconsByExtension.Add("f03", "fortran"); + _iconsByExtension.Add("f08", "fortran"); + _iconsByExtension.Add("tcl", "tcl"); + _iconsByExtension.Add("liquid", "liquid"); + _iconsByExtension.Add("p", "prolog"); + _iconsByExtension.Add("pro", "prolog"); + _iconsByExtension.Add("pl", "prolog"); + _iconsByExtension.Add("coco", "coconut"); + _iconsByExtension.Add("sketch", "sketch"); + _iconsByExtension.Add("pwn", "pawn"); + _iconsByExtension.Add("amx", "pawn"); + _iconsByExtension.Add("4th", "forth"); + _iconsByExtension.Add("fth", "forth"); + _iconsByExtension.Add("frt", "forth"); + _iconsByExtension.Add("iuml", "uml"); + _iconsByExtension.Add("pu", "uml"); + _iconsByExtension.Add("puml", "uml"); + _iconsByExtension.Add("plantuml", "uml"); + _iconsByExtension.Add("wsd", "uml"); + _iconsByExtension.Add("wrap", "meson"); + _iconsByExtension.Add("dhall", "dhall"); + _iconsByExtension.Add("dhallb", "dhall"); + _iconsByExtension.Add("sml", "sml"); + _iconsByExtension.Add("mlton", "sml"); + _iconsByExtension.Add("mlb", "sml"); + _iconsByExtension.Add("sig", "sml"); + _iconsByExtension.Add("fun", "sml"); + _iconsByExtension.Add("cm", "sml"); + _iconsByExtension.Add("lex", "sml"); + _iconsByExtension.Add("use", "sml"); + _iconsByExtension.Add("grm", "sml"); + _iconsByExtension.Add("opam", "opam"); + _iconsByExtension.Add("imba", "imba"); + _iconsByExtension.Add("drawio", "drawio"); + _iconsByExtension.Add("dio", "drawio"); + _iconsByExtension.Add("pas", "pascal"); + _iconsByExtension.Add("unity", "shaderlab"); + _iconsByExtension.Add("sas", "sas"); + _iconsByExtension.Add("sas7bdat", "sas"); + _iconsByExtension.Add("sashdat", "sas"); + _iconsByExtension.Add("astore", "sas"); + _iconsByExtension.Add("ast", "sas"); + _iconsByExtension.Add("sast", "sas"); + _iconsByExtension.Add("nupkg", "nuget"); + _iconsByExtension.Add("command", "command"); + _iconsByExtension.Add("dsc", "denizenscript"); + _iconsByExtension.Add("code-search", "search"); + _iconsByExtension.Add("mcfunction", "minecraft"); + _iconsByExtension.Add("mcmeta", "minecraft"); + _iconsByExtension.Add("mcr", "minecraft"); + _iconsByExtension.Add("mca", "minecraft"); + _iconsByExtension.Add("mcgame", "minecraft"); + _iconsByExtension.Add("mclevel", "minecraft"); + _iconsByExtension.Add("mcworld", "minecraft"); + _iconsByExtension.Add("mine", "minecraft"); + _iconsByExtension.Add("mus", "minecraft"); + _iconsByExtension.Add("res", "rescript"); + _iconsByExtension.Add("resi", "rescript"); + _iconsByExtension.Add("b", "brainfuck"); + _iconsByExtension.Add("bf", "brainfuck"); + _iconsByExtension.Add("bicep", "bicep"); + _iconsByExtension.Add("cob", "cobol"); + _iconsByExtension.Add("cbl", "cobol"); + _iconsByExtension.Add("gr", "grain"); + _iconsByExtension.Add("lol", "lolcode"); + _iconsByExtension.Add("idr", "idris"); + _iconsByExtension.Add("ibc", "idris"); + _iconsByExtension.Add("pipeline", "pipeline"); + _iconsByExtension.Add("rego", "opa"); + _iconsByExtension.Add("windi", "windicss"); + _iconsByExtension.Add("scala", "scala"); + _iconsByExtension.Add("sc", "scala"); + _iconsByExtension.Add("ly", "lilypond"); + _iconsByExtension.Add("v", "vlang"); + _iconsByExtension.Add("pgn", "chess"); + _iconsByExtension.Add("fen", "chess"); + _iconsByExtension.Add("gmi", "gemini"); + _iconsByExtension.Add("gemini", "gemini"); + _iconsByExtension.Add("tsconfig.json", "tsconfig"); + _iconsByExtension.Add("tauri", "tauri"); + _iconsByExtension.Add("jsconfig.json", "jsconfig"); + _iconsByExtension.Add("ada", "ada"); + _iconsByExtension.Add("adb", "ada"); + _iconsByExtension.Add("ads", "ada"); + _iconsByExtension.Add("ali", "ada"); + _iconsByExtension.Add("horusec-config.json", "horusec"); + _iconsByExtension.Add("coarc", "coala"); + _iconsByExtension.Add("coafile", "coala"); + _iconsByExtension.Add("bubble", "dinophp"); + _iconsByExtension.Add("html.bubble", "dinophp"); + _iconsByExtension.Add("php.bubble", "dinophp"); + _iconsByExtension.Add("tl", "teal"); + _iconsByExtension.Add("template", "template"); + _iconsByExtension.Add("sy", "siyuan"); + _iconsByExtension.Add("ndst.yml", "ndst"); + _iconsByExtension.Add("ndst.yaml", "ndst"); + _iconsByExtension.Add("ndst.json", "ndst"); + _iconsByExtension.Add("tobi", "tobi"); + _iconsByFileName.Add(".pug-lintrc", "pug"); + _iconsByFileName.Add(".pug-lintrc.js", "pug"); + _iconsByFileName.Add(".pug-lintrc.json", "pug"); + _iconsByFileName.Add(".jscsrc", "json"); + _iconsByFileName.Add(".jshintrc", "json"); + _iconsByFileName.Add("composer.lock", "json"); + _iconsByFileName.Add(".jsbeautifyrc", "json"); + _iconsByFileName.Add(".esformatter", "json"); + _iconsByFileName.Add("cdp.pid", "json"); + _iconsByFileName.Add(".lintstagedrc", "json"); + _iconsByFileName.Add(".htaccess", "xml"); + _iconsByFileName.Add(".jshintignore", "settings"); + _iconsByFileName.Add(".buildignore", "settings"); + _iconsByFileName.Add(".mrconfig", "settings"); + _iconsByFileName.Add(".yardopts", "settings"); + _iconsByFileName.Add("manifest.mf", "settings"); + _iconsByFileName.Add(".clang-format", "settings"); + _iconsByFileName.Add(".clang-tidy", "settings"); + _iconsByFileName.Add("astro.config.js", "astro"); + _iconsByFileName.Add("astro.config.mjs", "astro"); + _iconsByFileName.Add("astro.config.cjs", "astro"); + _iconsByFileName.Add("go.mod", "go-mod"); + _iconsByFileName.Add("go.sum", "go-mod"); + _iconsByFileName.Add("requirements.txt", "python-misc"); + _iconsByFileName.Add("pipfile", "python-misc"); + _iconsByFileName.Add(".python-version", "python-misc"); + _iconsByFileName.Add("manifest.in", "python-misc"); + _iconsByFileName.Add("pylintrc", "python-misc"); + _iconsByFileName.Add(".pylintrc", "python-misc"); + _iconsByFileName.Add("pre-commit", "console"); + _iconsByFileName.Add("pre-push", "console"); + _iconsByFileName.Add("post-merge", "console"); + _iconsByFileName.Add("gradle.properties", "gradle"); + _iconsByFileName.Add("gradlew", "gradle"); + _iconsByFileName.Add("gradle-wrapper.properties", "gradle"); + _iconsByFileName.Add("copying", "certificate"); + _iconsByFileName.Add("copying.md", "certificate"); + _iconsByFileName.Add("copying.txt", "certificate"); + _iconsByFileName.Add("copyright", "certificate"); + _iconsByFileName.Add("copyright.txt", "certificate"); + _iconsByFileName.Add("copyright.md", "certificate"); + _iconsByFileName.Add("license", "certificate"); + _iconsByFileName.Add("license.md", "certificate"); + _iconsByFileName.Add("license.txt", "certificate"); + _iconsByFileName.Add("licence", "certificate"); + _iconsByFileName.Add("licence.md", "certificate"); + _iconsByFileName.Add("licence.txt", "certificate"); + _iconsByFileName.Add(".htpasswd", "key"); + _iconsByFileName.Add("gemfile", "gemfile"); + _iconsByFileName.Add(".rubocop.yml", "rubocop"); + _iconsByFileName.Add(".rubocop-todo.yml", "rubocop"); + _iconsByFileName.Add(".rubocop_todo.yml", "rubocop"); + _iconsByFileName.Add("dockerfile", "docker"); + _iconsByFileName.Add("dockerfile.prod", "docker"); + _iconsByFileName.Add("dockerfile.production", "docker"); + _iconsByFileName.Add("dockerfile.alpha", "docker"); + _iconsByFileName.Add("dockerfile.beta", "docker"); + _iconsByFileName.Add("dockerfile.stage", "docker"); + _iconsByFileName.Add("dockerfile.staging", "docker"); + _iconsByFileName.Add("dockerfile.dev", "docker"); + _iconsByFileName.Add("dockerfile.development", "docker"); + _iconsByFileName.Add("dockerfile.local", "docker"); + _iconsByFileName.Add("dockerfile.test", "docker"); + _iconsByFileName.Add("dockerfile.testing", "docker"); + _iconsByFileName.Add("dockerfile.ci", "docker"); + _iconsByFileName.Add("dockerfile.web", "docker"); + _iconsByFileName.Add("dockerfile.worker", "docker"); + _iconsByFileName.Add("docker-compose.yml", "docker"); + _iconsByFileName.Add("docker-compose.override.yml", "docker"); + _iconsByFileName.Add("docker-compose.prod.yml", "docker"); + _iconsByFileName.Add("docker-compose.production.yml", "docker"); + _iconsByFileName.Add("docker-compose.alpha.yml", "docker"); + _iconsByFileName.Add("docker-compose.beta.yml", "docker"); + _iconsByFileName.Add("docker-compose.stage.yml", "docker"); + _iconsByFileName.Add("docker-compose.staging.yml", "docker"); + _iconsByFileName.Add("docker-compose.dev.yml", "docker"); + _iconsByFileName.Add("docker-compose.development.yml", "docker"); + _iconsByFileName.Add("docker-compose.local.yml", "docker"); + _iconsByFileName.Add("docker-compose.test.yml", "docker"); + _iconsByFileName.Add("docker-compose.testing.yml", "docker"); + _iconsByFileName.Add("docker-compose.ci.yml", "docker"); + _iconsByFileName.Add("docker-compose.web.yml", "docker"); + _iconsByFileName.Add("docker-compose.worker.yml", "docker"); + _iconsByFileName.Add("docker-compose.yaml", "docker"); + _iconsByFileName.Add("docker-compose.override.yaml", "docker"); + _iconsByFileName.Add("docker-compose.prod.yaml", "docker"); + _iconsByFileName.Add("docker-compose.production.yaml", "docker"); + _iconsByFileName.Add("docker-compose.alpha.yaml", "docker"); + _iconsByFileName.Add("docker-compose.beta.yaml", "docker"); + _iconsByFileName.Add("docker-compose.stage.yaml", "docker"); + _iconsByFileName.Add("docker-compose.staging.yaml", "docker"); + _iconsByFileName.Add("docker-compose.dev.yaml", "docker"); + _iconsByFileName.Add("docker-compose.development.yaml", "docker"); + _iconsByFileName.Add("docker-compose.local.yaml", "docker"); + _iconsByFileName.Add("docker-compose.test.yaml", "docker"); + _iconsByFileName.Add("docker-compose.testing.yaml", "docker"); + _iconsByFileName.Add("docker-compose.ci.yaml", "docker"); + _iconsByFileName.Add("docker-compose.web.yaml", "docker"); + _iconsByFileName.Add("docker-compose.worker.yaml", "docker"); + _iconsByFileName.Add(".mailmap", "email"); + _iconsByFileName.Add(".graphqlconfig", "graphql"); + _iconsByFileName.Add(".graphqlrc", "graphql"); + _iconsByFileName.Add(".graphqlrc.json", "graphql"); + _iconsByFileName.Add(".graphqlrc.js", "graphql"); + _iconsByFileName.Add(".graphqlrc.ts", "graphql"); + _iconsByFileName.Add(".graphqlrc.toml", "graphql"); + _iconsByFileName.Add(".graphqlrc.yaml", "graphql"); + _iconsByFileName.Add(".graphqlrc.yml", "graphql"); + _iconsByFileName.Add("graphql.config.json", "graphql"); + _iconsByFileName.Add("graphql.config.js", "graphql"); + _iconsByFileName.Add("graphql.config.ts", "graphql"); + _iconsByFileName.Add("graphql.config.toml", "graphql"); + _iconsByFileName.Add("graphql.config.yaml", "graphql"); + _iconsByFileName.Add("graphql.config.yml", "graphql"); + _iconsByFileName.Add(".gitignore", "git"); + _iconsByFileName.Add(".gitignore_global", "git"); + _iconsByFileName.Add(".gitconfig", "git"); + _iconsByFileName.Add(".gitattributes", "git"); + _iconsByFileName.Add(".gitmodules", "git"); + _iconsByFileName.Add(".gitkeep", "git"); + _iconsByFileName.Add(".gitinclude", "git"); + _iconsByFileName.Add("git-history", "git"); + _iconsByFileName.Add(".luacheckrc", "lua"); + _iconsByFileName.Add(".Rhistory", "r"); + _iconsByFileName.Add(".pubignore", "dart"); + _iconsByFileName.Add("cmakelists.txt", "cmake"); + _iconsByFileName.Add("cmakecache.txt", "cmake"); + _iconsByFileName.Add("vue.config.js", "vue-config"); + _iconsByFileName.Add("vue.config.ts", "vue-config"); + _iconsByFileName.Add("vetur.config.js", "vue-config"); + _iconsByFileName.Add("vetur.config.ts", "vue-config"); + _iconsByFileName.Add("nuxt.config.js", "nuxt"); + _iconsByFileName.Add("nuxt.config.ts", "nuxt"); + _iconsByFileName.Add("security.md", "lock"); + _iconsByFileName.Add("security.txt", "lock"); + _iconsByFileName.Add("security", "lock"); + _iconsByFileName.Add(".mjmlconfig", "mjml"); + _iconsByFileName.Add("vercel.json", "vercel"); + _iconsByFileName.Add(".vercelignore", "vercel"); + _iconsByFileName.Add("now.json", "vercel"); + _iconsByFileName.Add(".nowignore", "vercel"); + _iconsByFileName.Add("next.config.js", "next"); + _iconsByFileName.Add("next.config.ts", "next"); + _iconsByFileName.Add("next.config.mjs", "next"); + _iconsByFileName.Add("artisan", "laravel"); + _iconsByFileName.Add(".vfl", "vfl"); + _iconsByFileName.Add(".kl", "kl"); + _iconsByFileName.Add("postcss.config.js", "postcss"); + _iconsByFileName.Add("postcss.config.cjs", "postcss"); + _iconsByFileName.Add(".postcssrc.js", "postcss"); + _iconsByFileName.Add(".postcssrc", "postcss"); + _iconsByFileName.Add(".postcssrc.json", "postcss"); + _iconsByFileName.Add(".postcssrc.yml", "postcss"); + _iconsByFileName.Add("posthtml.config.js", "posthtml"); + _iconsByFileName.Add(".posthtmlrc.js", "posthtml"); + _iconsByFileName.Add(".posthtmlrc", "posthtml"); + _iconsByFileName.Add(".posthtmlrc.json", "posthtml"); + _iconsByFileName.Add(".posthtmlrc.yml", "posthtml"); + _iconsByFileName.Add("cabal.project", "cabal"); + _iconsByFileName.Add("cabal.project.freeze", "cabal"); + _iconsByFileName.Add("cabal.project.local", "cabal"); + _iconsByFileName.Add("CNAME", "http"); + _iconsByFileName.Add("project.graphcool", "graphcool"); + _iconsByFileName.Add("webpack.js", "webpack"); + _iconsByFileName.Add("webpack.cjs", "webpack"); + _iconsByFileName.Add("webpack.ts", "webpack"); + _iconsByFileName.Add("webpack.base.js", "webpack"); + _iconsByFileName.Add("webpack.base.cjs", "webpack"); + _iconsByFileName.Add("webpack.base.ts", "webpack"); + _iconsByFileName.Add("webpack.config.js", "webpack"); + _iconsByFileName.Add("webpack.config.cjs", "webpack"); + _iconsByFileName.Add("webpack.config.ts", "webpack"); + _iconsByFileName.Add("webpack.common.js", "webpack"); + _iconsByFileName.Add("webpack.common.cjs", "webpack"); + _iconsByFileName.Add("webpack.common.ts", "webpack"); + _iconsByFileName.Add("webpack.config.common.js", "webpack"); + _iconsByFileName.Add("webpack.config.common.cjs", "webpack"); + _iconsByFileName.Add("webpack.config.common.ts", "webpack"); + _iconsByFileName.Add("webpack.config.common.babel.js", "webpack"); + _iconsByFileName.Add("webpack.config.common.babel.ts", "webpack"); + _iconsByFileName.Add("webpack.dev.js", "webpack"); + _iconsByFileName.Add("webpack.dev.cjs", "webpack"); + _iconsByFileName.Add("webpack.dev.ts", "webpack"); + _iconsByFileName.Add("webpack.development.js", "webpack"); + _iconsByFileName.Add("webpack.development.cjs", "webpack"); + _iconsByFileName.Add("webpack.development.ts", "webpack"); + _iconsByFileName.Add("webpack.config.dev.js", "webpack"); + _iconsByFileName.Add("webpack.config.dev.cjs", "webpack"); + _iconsByFileName.Add("webpack.config.dev.ts", "webpack"); + _iconsByFileName.Add("webpack.config.dev.babel.js", "webpack"); + _iconsByFileName.Add("webpack.config.dev.babel.ts", "webpack"); + _iconsByFileName.Add("webpack.mix.js", "webpack"); + _iconsByFileName.Add("webpack.mix.cjs", "webpack"); + _iconsByFileName.Add("webpack.prod.js", "webpack"); + _iconsByFileName.Add("webpack.prod.cjs", "webpack"); + _iconsByFileName.Add("webpack.prod.config.js", "webpack"); + _iconsByFileName.Add("webpack.prod.config.cjs", "webpack"); + _iconsByFileName.Add("webpack.prod.ts", "webpack"); + _iconsByFileName.Add("webpack.production.js", "webpack"); + _iconsByFileName.Add("webpack.production.cjs", "webpack"); + _iconsByFileName.Add("webpack.production.ts", "webpack"); + _iconsByFileName.Add("webpack.server.js", "webpack"); + _iconsByFileName.Add("webpack.server.cjs", "webpack"); + _iconsByFileName.Add("webpack.server.ts", "webpack"); + _iconsByFileName.Add("webpack.client.js", "webpack"); + _iconsByFileName.Add("webpack.client.cjs", "webpack"); + _iconsByFileName.Add("webpack.client.ts", "webpack"); + _iconsByFileName.Add("webpack.config.server.js", "webpack"); + _iconsByFileName.Add("webpack.config.server.cjs", "webpack"); + _iconsByFileName.Add("webpack.config.server.ts", "webpack"); + _iconsByFileName.Add("webpack.config.client.js", "webpack"); + _iconsByFileName.Add("webpack.config.client.cjs", "webpack"); + _iconsByFileName.Add("webpack.config.client.ts", "webpack"); + _iconsByFileName.Add("webpack.config.production.babel.js", "webpack"); + _iconsByFileName.Add("webpack.config.production.babel.ts", "webpack"); + _iconsByFileName.Add("webpack.config.prod.babel.js", "webpack"); + _iconsByFileName.Add("webpack.config.prod.babel.cjs", "webpack"); + _iconsByFileName.Add("webpack.config.prod.babel.ts", "webpack"); + _iconsByFileName.Add("webpack.config.prod.js", "webpack"); + _iconsByFileName.Add("webpack.config.prod.cjs", "webpack"); + _iconsByFileName.Add("webpack.config.prod.ts", "webpack"); + _iconsByFileName.Add("webpack.config.production.js", "webpack"); + _iconsByFileName.Add("webpack.config.production.cjs", "webpack"); + _iconsByFileName.Add("webpack.config.production.ts", "webpack"); + _iconsByFileName.Add("webpack.config.staging.js", "webpack"); + _iconsByFileName.Add("webpack.config.staging.cjs", "webpack"); + _iconsByFileName.Add("webpack.config.staging.ts", "webpack"); + _iconsByFileName.Add("webpack.config.babel.js", "webpack"); + _iconsByFileName.Add("webpack.config.babel.ts", "webpack"); + _iconsByFileName.Add("webpack.config.base.babel.js", "webpack"); + _iconsByFileName.Add("webpack.config.base.babel.ts", "webpack"); + _iconsByFileName.Add("webpack.config.base.js", "webpack"); + _iconsByFileName.Add("webpack.config.base.cjs", "webpack"); + _iconsByFileName.Add("webpack.config.base.ts", "webpack"); + _iconsByFileName.Add("webpack.config.staging.babel.js", "webpack"); + _iconsByFileName.Add("webpack.config.staging.babel.ts", "webpack"); + _iconsByFileName.Add("webpack.config.coffee", "webpack"); + _iconsByFileName.Add("webpack.config.test.js", "webpack"); + _iconsByFileName.Add("webpack.config.test.cjs", "webpack"); + _iconsByFileName.Add("webpack.config.test.ts", "webpack"); + _iconsByFileName.Add("webpack.config.vendor.js", "webpack"); + _iconsByFileName.Add("webpack.config.vendor.cjs", "webpack"); + _iconsByFileName.Add("webpack.config.vendor.ts", "webpack"); + _iconsByFileName.Add("webpack.config.vendor.production.js", "webpack"); + _iconsByFileName.Add("webpack.config.vendor.production.cjs", "webpack"); + _iconsByFileName.Add("webpack.config.vendor.production.ts", "webpack"); + _iconsByFileName.Add("webpack.test.js", "webpack"); + _iconsByFileName.Add("webpack.test.cjs", "webpack"); + _iconsByFileName.Add("webpack.test.ts", "webpack"); + _iconsByFileName.Add("webpack.dist.js", "webpack"); + _iconsByFileName.Add("webpack.dist.cjs", "webpack"); + _iconsByFileName.Add("webpack.dist.ts", "webpack"); + _iconsByFileName.Add("webpackfile.js", "webpack"); + _iconsByFileName.Add("webpackfile.cjs", "webpack"); + _iconsByFileName.Add("webpackfile.ts", "webpack"); + _iconsByFileName.Add("ionic.config.json", "ionic"); + _iconsByFileName.Add(".io-config.json", "ionic"); + _iconsByFileName.Add("gulpfile.js", "gulp"); + _iconsByFileName.Add("gulpfile.mjs", "gulp"); + _iconsByFileName.Add("gulpfile.ts", "gulp"); + _iconsByFileName.Add("gulpfile.babel.js", "gulp"); + _iconsByFileName.Add("package.json", "nodejs"); + _iconsByFileName.Add("package-lock.json", "nodejs"); + _iconsByFileName.Add(".nvmrc", "nodejs"); + _iconsByFileName.Add(".esmrc", "nodejs"); + _iconsByFileName.Add(".node-version", "nodejs"); + _iconsByFileName.Add(".npmignore", "npm"); + _iconsByFileName.Add(".npmrc", "npm"); + _iconsByFileName.Add(".yarnrc", "yarn"); + _iconsByFileName.Add("yarn.lock", "yarn"); + _iconsByFileName.Add(".yarnclean", "yarn"); + _iconsByFileName.Add(".yarn-integrity", "yarn"); + _iconsByFileName.Add("yarn-error.log", "yarn"); + _iconsByFileName.Add(".yarnrc.yml", "yarn"); + _iconsByFileName.Add(".yarnrc.yaml", "yarn"); + _iconsByFileName.Add("androidmanifest.xml", "android"); + _iconsByFileName.Add(".env.defaults", "tune"); + _iconsByFileName.Add(".env.example", "tune"); + _iconsByFileName.Add(".env.sample", "tune"); + _iconsByFileName.Add(".env.template", "tune"); + _iconsByFileName.Add(".env.schema", "tune"); + _iconsByFileName.Add(".env.local", "tune"); + _iconsByFileName.Add(".env.dev", "tune"); + _iconsByFileName.Add(".env.development", "tune"); + _iconsByFileName.Add(".env.qa", "tune"); + _iconsByFileName.Add(".env.dist", "tune"); + _iconsByFileName.Add(".env.prod", "tune"); + _iconsByFileName.Add(".env.production", "tune"); + _iconsByFileName.Add(".env.stage", "tune"); + _iconsByFileName.Add(".env.staging", "tune"); + _iconsByFileName.Add(".env.preview", "tune"); + _iconsByFileName.Add(".env.test", "tune"); + _iconsByFileName.Add(".env.testing", "tune"); + _iconsByFileName.Add(".env.development.local", "tune"); + _iconsByFileName.Add(".env.qa.local", "tune"); + _iconsByFileName.Add(".env.production.local", "tune"); + _iconsByFileName.Add(".env.staging.local", "tune"); + _iconsByFileName.Add(".env.test.local", "tune"); + _iconsByFileName.Add(".babelrc", "babel"); + _iconsByFileName.Add(".babelrc.cjs", "babel"); + _iconsByFileName.Add(".babelrc.js", "babel"); + _iconsByFileName.Add(".babelrc.mjs", "babel"); + _iconsByFileName.Add(".babelrc.json", "babel"); + _iconsByFileName.Add("babel.config.cjs", "babel"); + _iconsByFileName.Add("babel.config.js", "babel"); + _iconsByFileName.Add("babel.config.mjs", "babel"); + _iconsByFileName.Add("babel.config.json", "babel"); + _iconsByFileName.Add("babel-transform.js", "babel"); + _iconsByFileName.Add(".babel-plugin-macrosrc", "babel"); + _iconsByFileName.Add(".babel-plugin-macrosrc.json", "babel"); + _iconsByFileName.Add(".babel-plugin-macrosrc.yaml", "babel"); + _iconsByFileName.Add(".babel-plugin-macrosrc.yml", "babel"); + _iconsByFileName.Add(".babel-plugin-macrosrc.js", "babel"); + _iconsByFileName.Add("babel-plugin-macros.config.js", "babel"); + _iconsByFileName.Add("contributing.md", "contributing"); + _iconsByFileName.Add("readme.md", "readme"); + _iconsByFileName.Add("readme.txt", "readme"); + _iconsByFileName.Add("readme", "readme"); + _iconsByFileName.Add("changelog", "changelog"); + _iconsByFileName.Add("changelog.md", "changelog"); + _iconsByFileName.Add("changelog.txt", "changelog"); + _iconsByFileName.Add("changes", "changelog"); + _iconsByFileName.Add("changes.md", "changelog"); + _iconsByFileName.Add("changes.txt", "changelog"); + _iconsByFileName.Add("credits", "credits"); + _iconsByFileName.Add("credits.txt", "credits"); + _iconsByFileName.Add("credits.md", "credits"); + _iconsByFileName.Add("authors", "authors"); + _iconsByFileName.Add("authors.md", "authors"); + _iconsByFileName.Add("authors.txt", "authors"); + _iconsByFileName.Add(".flowconfig", "flow"); + _iconsByFileName.Add("favicon.ico", "favicon"); + _iconsByFileName.Add("karma.conf.js", "karma"); + _iconsByFileName.Add("karma.conf.ts", "karma"); + _iconsByFileName.Add("karma.conf.coffee", "karma"); + _iconsByFileName.Add("karma.config.js", "karma"); + _iconsByFileName.Add("karma.config.ts", "karma"); + _iconsByFileName.Add("karma-main.js", "karma"); + _iconsByFileName.Add("karma-main.ts", "karma"); + _iconsByFileName.Add(".bithoundrc", "bithound"); + _iconsByFileName.Add("svgo.config.js", "svgo"); + _iconsByFileName.Add(".appveyor.yml", "appveyor"); + _iconsByFileName.Add("appveyor.yml", "appveyor"); + _iconsByFileName.Add(".travis.yml", "travis"); + _iconsByFileName.Add(".codecov.yml", "codecov"); + _iconsByFileName.Add("codecov.yml", "codecov"); + _iconsByFileName.Add("protractor.conf.js", "protractor"); + _iconsByFileName.Add("protractor.conf.ts", "protractor"); + _iconsByFileName.Add("protractor.conf.coffee", "protractor"); + _iconsByFileName.Add("protractor.config.js", "protractor"); + _iconsByFileName.Add("protractor.config.ts", "protractor"); + _iconsByFileName.Add("fuse.js", "fusebox"); + _iconsByFileName.Add("procfile", "heroku"); + _iconsByFileName.Add("procfile.windows", "heroku"); + _iconsByFileName.Add(".editorconfig", "editorconfig"); + _iconsByFileName.Add(".bowerrc", "bower"); + _iconsByFileName.Add("bower.json", "bower"); + _iconsByFileName.Add(".eslintrc.js", "eslint"); + _iconsByFileName.Add(".eslintrc.cjs", "eslint"); + _iconsByFileName.Add(".eslintrc.yaml", "eslint"); + _iconsByFileName.Add(".eslintrc.yml", "eslint"); + _iconsByFileName.Add(".eslintrc.json", "eslint"); + _iconsByFileName.Add(".eslintrc-md.js", "eslint"); + _iconsByFileName.Add(".eslintrc-jsdoc.js", "eslint"); + _iconsByFileName.Add(".eslintrc", "eslint"); + _iconsByFileName.Add(".eslintignore", "eslint"); + _iconsByFileName.Add(".eslintcache", "eslint"); + _iconsByFileName.Add("code_of_conduct.md", "conduct"); + _iconsByFileName.Add("code_of_conduct.txt", "conduct"); + _iconsByFileName.Add(".watchmanconfig", "watchman"); + _iconsByFileName.Add("aurelia.json", "aurelia"); + _iconsByFileName.Add("mocha.opts", "mocha"); + _iconsByFileName.Add(".mocharc.yml", "mocha"); + _iconsByFileName.Add(".mocharc.yaml", "mocha"); + _iconsByFileName.Add(".mocharc.js", "mocha"); + _iconsByFileName.Add(".mocharc.json", "mocha"); + _iconsByFileName.Add(".mocharc.jsonc", "mocha"); + _iconsByFileName.Add("jenkinsfile", "jenkins"); + _iconsByFileName.Add("firebase.json", "firebase"); + _iconsByFileName.Add(".firebaserc", "firebase"); + _iconsByFileName.Add("firestore.rules", "firebase"); + _iconsByFileName.Add("firestore.indexes.json", "firebase"); + _iconsByFileName.Add("rollup.config.js", "rollup"); + _iconsByFileName.Add("rollup.config.ts", "rollup"); + _iconsByFileName.Add("rollup-config.js", "rollup"); + _iconsByFileName.Add("rollup-config.ts", "rollup"); + _iconsByFileName.Add("rollup.config.common.js", "rollup"); + _iconsByFileName.Add("rollup.config.common.ts", "rollup"); + _iconsByFileName.Add("rollup.config.base.js", "rollup"); + _iconsByFileName.Add("rollup.config.base.ts", "rollup"); + _iconsByFileName.Add("rollup.config.prod.js", "rollup"); + _iconsByFileName.Add("rollup.config.prod.ts", "rollup"); + _iconsByFileName.Add("rollup.config.dev.js", "rollup"); + _iconsByFileName.Add("rollup.config.dev.ts", "rollup"); + _iconsByFileName.Add("rollup.config.prod.vendor.js", "rollup"); + _iconsByFileName.Add("rollup.config.prod.vendor.ts", "rollup"); + _iconsByFileName.Add(".hhconfig", "hack"); + _iconsByFileName.Add(".stylelintrc", "stylelint"); + _iconsByFileName.Add("stylelint.config.js", "stylelint"); + _iconsByFileName.Add("stylelint.config.cjs", "stylelint"); + _iconsByFileName.Add(".stylelintrc.json", "stylelint"); + _iconsByFileName.Add(".stylelintrc.yaml", "stylelint"); + _iconsByFileName.Add(".stylelintrc.yml", "stylelint"); + _iconsByFileName.Add(".stylelintrc.js", "stylelint"); + _iconsByFileName.Add(".stylelintrc.cjs", "stylelint"); + _iconsByFileName.Add(".stylelintignore", "stylelint"); + _iconsByFileName.Add(".codeclimate.yml", "code-climate"); + _iconsByFileName.Add(".prettierrc", "prettier"); + _iconsByFileName.Add("prettier.config.js", "prettier"); + _iconsByFileName.Add("prettier.config.cjs", "prettier"); + _iconsByFileName.Add(".prettierrc.js", "prettier"); + _iconsByFileName.Add(".prettierrc.cjs", "prettier"); + _iconsByFileName.Add(".prettierrc.json", "prettier"); + _iconsByFileName.Add(".prettierrc.json5", "prettier"); + _iconsByFileName.Add(".prettierrc.yaml", "prettier"); + _iconsByFileName.Add(".prettierrc.yml", "prettier"); + _iconsByFileName.Add(".prettierignore", "prettier"); + _iconsByFileName.Add(".prettierrc.toml", "prettier"); + _iconsByFileName.Add(".renovaterc", "renovate"); + _iconsByFileName.Add(".renovaterc.json", "renovate"); + _iconsByFileName.Add("renovate-config.json", "renovate"); + _iconsByFileName.Add("renovate.json", "renovate"); + _iconsByFileName.Add("renovate.json5", "renovate"); + _iconsByFileName.Add("apollo.config.js", "apollo"); + _iconsByFileName.Add("nodemon.json", "nodemon"); + _iconsByFileName.Add("nodemon-debug.json", "nodemon"); + _iconsByFileName.Add(".hintrc", "webhint"); + _iconsByFileName.Add("browserslist", "browserlist"); + _iconsByFileName.Add(".browserslistrc", "browserlist"); + _iconsByFileName.Add(".snyk", "snyk"); + _iconsByFileName.Add(".drone.yml", "drone"); + _iconsByFileName.Add(".sequelizerc", "sequelize"); + _iconsByFileName.Add("gatsby.config.js", "gatsby"); + _iconsByFileName.Add("gatsby-config.js", "gatsby"); + _iconsByFileName.Add("gatsby-node.js", "gatsby"); + _iconsByFileName.Add("gatsby-browser.js", "gatsby"); + _iconsByFileName.Add("gatsby-ssr.js", "gatsby"); + _iconsByFileName.Add(".wakatime-project", "wakatime"); + _iconsByFileName.Add("circle.yml", "circleci"); + _iconsByFileName.Add(".cfignore", "cloudfoundry"); + _iconsByFileName.Add("gruntfile.js", "grunt"); + _iconsByFileName.Add("gruntfile.ts", "grunt"); + _iconsByFileName.Add("gruntfile.coffee", "grunt"); + _iconsByFileName.Add("gruntfile.babel.js", "grunt"); + _iconsByFileName.Add("gruntfile.babel.ts", "grunt"); + _iconsByFileName.Add("gruntfile.babel.coffee", "grunt"); + _iconsByFileName.Add("jest.config.js", "jest"); + _iconsByFileName.Add("jest.config.ts", "jest"); + _iconsByFileName.Add("jest.config.cjs", "jest"); + _iconsByFileName.Add("jest.config.mjs", "jest"); + _iconsByFileName.Add("jest.config.json", "jest"); + _iconsByFileName.Add("jest.e2e.config.js", "jest"); + _iconsByFileName.Add("jest.e2e.config.ts", "jest"); + _iconsByFileName.Add("jest.e2e.config.cjs", "jest"); + _iconsByFileName.Add("jest.e2e.config.mjs", "jest"); + _iconsByFileName.Add("jest.e2e.config.json", "jest"); + _iconsByFileName.Add("jest.e2e.json", "jest"); + _iconsByFileName.Add("jest-unit.config.js", "jest"); + _iconsByFileName.Add("jest-e2e.config.js", "jest"); + _iconsByFileName.Add("jest-e2e.config.ts", "jest"); + _iconsByFileName.Add("jest-e2e.config.cjs", "jest"); + _iconsByFileName.Add("jest-e2e.config.mjs", "jest"); + _iconsByFileName.Add("jest-e2e.config.json", "jest"); + _iconsByFileName.Add("jest-e2e.json", "jest"); + _iconsByFileName.Add("jest-github-actions-reporter.js", "jest"); + _iconsByFileName.Add("jest.setup.js", "jest"); + _iconsByFileName.Add("jest.setup.ts", "jest"); + _iconsByFileName.Add("jest.json", "jest"); + _iconsByFileName.Add(".jestrc", "jest"); + _iconsByFileName.Add(".jestrc.js", "jest"); + _iconsByFileName.Add(".jestrc.json", "jest"); + _iconsByFileName.Add("jest.teardown.js", "jest"); + _iconsByFileName.Add("fastfile", "fastlane"); + _iconsByFileName.Add("appfile", "fastlane"); + _iconsByFileName.Add(".helmignore", "helm"); + _iconsByFileName.Add("wallaby.js", "wallaby"); + _iconsByFileName.Add("wallaby.conf.js", "wallaby"); + _iconsByFileName.Add("stencil.config.js", "stencil"); + _iconsByFileName.Add("stencil.config.ts", "stencil"); + _iconsByFileName.Add("makefile", "makefile"); + _iconsByFileName.Add(".releaserc", "semantic-release"); + _iconsByFileName.Add(".releaserc.yaml", "semantic-release"); + _iconsByFileName.Add(".releaserc.yml", "semantic-release"); + _iconsByFileName.Add(".releaserc.json", "semantic-release"); + _iconsByFileName.Add(".releaserc.js", "semantic-release"); + _iconsByFileName.Add("release.config.js", "semantic-release"); + _iconsByFileName.Add("bitbucket-pipelines.yaml", "bitbucket"); + _iconsByFileName.Add("bitbucket-pipelines.yml", "bitbucket"); + _iconsByFileName.Add(".bazelignore", "bazel"); + _iconsByFileName.Add(".bazelrc", "bazel"); + _iconsByFileName.Add(".bazelversion", "bazel"); + _iconsByFileName.Add("azure-pipelines.yml", "azure-pipelines"); + _iconsByFileName.Add("azure-pipelines.yaml", "azure-pipelines"); + _iconsByFileName.Add("vagrantfile", "vagrant"); + _iconsByFileName.Add("prisma.yml", "prisma"); + _iconsByFileName.Add(".nycrc", "istanbul"); + _iconsByFileName.Add(".nycrc.json", "istanbul"); + _iconsByFileName.Add("tailwind.js", "tailwindcss"); + _iconsByFileName.Add("tailwind.ts", "tailwindcss"); + _iconsByFileName.Add("tailwind.config.js", "tailwindcss"); + _iconsByFileName.Add("tailwind.config.ts", "tailwindcss"); + _iconsByFileName.Add("tailwind.config.cjs", "tailwindcss"); + _iconsByFileName.Add("buildkite.yml", "buildkite"); + _iconsByFileName.Add("buildkite.yaml", "buildkite"); + _iconsByFileName.Add("netlify.json", "netlify"); + _iconsByFileName.Add("netlify.yml", "netlify"); + _iconsByFileName.Add("netlify.yaml", "netlify"); + _iconsByFileName.Add("netlify.toml", "netlify"); + _iconsByFileName.Add("svelte.config.js", "svelte"); + _iconsByFileName.Add("svelte.config.cjs", "svelte"); + _iconsByFileName.Add("nest-cli.json", "nest"); + _iconsByFileName.Add(".nest-cli.json", "nest"); + _iconsByFileName.Add("nestconfig.json", "nest"); + _iconsByFileName.Add(".nestconfig.json", "nest"); + _iconsByFileName.Add(".percy.yml", "percy"); + _iconsByFileName.Add(".gitpod.yml", "gitpod"); + _iconsByFileName.Add("codeowners", "codeowners"); + _iconsByFileName.Add(".gcloudignore", "gcp"); + _iconsByFileName.Add(".huskyrc", "husky"); + _iconsByFileName.Add("husky.config.js", "husky"); + _iconsByFileName.Add(".huskyrc.json", "husky"); + _iconsByFileName.Add(".huskyrc.js", "husky"); + _iconsByFileName.Add(".huskyrc.yaml", "husky"); + _iconsByFileName.Add(".huskyrc.yml", "husky"); + _iconsByFileName.Add("tiltfile", "tilt"); + _iconsByFileName.Add("capacitor.config.json", "capacitor"); + _iconsByFileName.Add(".adonisrc.json", "adonis"); + _iconsByFileName.Add("ace", "adonis"); + _iconsByFileName.Add("meson.build", "meson"); + _iconsByFileName.Add("meson_options.txt", "meson"); + _iconsByFileName.Add(".commitlintrc", "commitlint"); + _iconsByFileName.Add(".commitlintrc.js", "commitlint"); + _iconsByFileName.Add("commitlint.config.js", "commitlint"); + _iconsByFileName.Add(".commitlintrc.json", "commitlint"); + _iconsByFileName.Add(".commitlint.yaml", "commitlint"); + _iconsByFileName.Add(".commitlint.yml", "commitlint"); + _iconsByFileName.Add(".commitlintrc.yaml", "commitlint"); + _iconsByFileName.Add(".commitlintrc.yml", "commitlint"); + _iconsByFileName.Add("commitlint.config.cjs", "commitlint"); + _iconsByFileName.Add("commitlint.config.ts", "commitlint"); + _iconsByFileName.Add(".commitlintrc.ts", "commitlint"); + _iconsByFileName.Add(".commitlintrc.cjs", "commitlint"); + _iconsByFileName.Add(".buckconfig", "buck"); + _iconsByFileName.Add("nx.json", "nrwl"); + _iconsByFileName.Add(".nxignore", "nrwl"); + _iconsByFileName.Add("dune", "dune"); + _iconsByFileName.Add("dune-project", "dune"); + _iconsByFileName.Add("dune-workspace", "dune"); + _iconsByFileName.Add("dune-workspace.dev", "dune"); + _iconsByFileName.Add("roadmap.md", "roadmap"); + _iconsByFileName.Add("roadmap.txt", "roadmap"); + _iconsByFileName.Add("timeline.md", "roadmap"); + _iconsByFileName.Add("timeline.txt", "roadmap"); + _iconsByFileName.Add("milestones.md", "roadmap"); + _iconsByFileName.Add("milestones.txt", "roadmap"); + _iconsByFileName.Add("nuget.config", "nuget"); + _iconsByFileName.Add(".nuspec", "nuget"); + _iconsByFileName.Add("nuget.exe", "nuget"); + _iconsByFileName.Add("stryker.conf.js", "stryker"); + _iconsByFileName.Add("stryker.conf.json", "stryker"); + _iconsByFileName.Add(".modernizrrc", "modernizr"); + _iconsByFileName.Add(".modernizrrc.js", "modernizr"); + _iconsByFileName.Add(".modernizrrc.json", "modernizr"); + _iconsByFileName.Add(".slugignore", "slug"); + _iconsByFileName.Add("stitches.config.js", "stitches"); + _iconsByFileName.Add("stitches.config.ts", "stitches"); + _iconsByFileName.Add("nginx.conf", "nginx"); + _iconsByFileName.Add(".replit", "replit"); + _iconsByFileName.Add("snowpack.config.cjs", "snowpack"); + _iconsByFileName.Add("snowpack.config.js", "snowpack"); + _iconsByFileName.Add("snowpack.config.mjs", "snowpack"); + _iconsByFileName.Add("snowpack.deps.json", "snowpack"); + _iconsByFileName.Add("snowpack.config.ts", "snowpack"); + _iconsByFileName.Add("snowpack.config.json", "snowpack"); + _iconsByFileName.Add("quasar.conf.js", "quasar"); + _iconsByFileName.Add("dependabot.yml", "dependabot"); + _iconsByFileName.Add("vite.config.js", "vite"); + _iconsByFileName.Add("vite.config.mjs", "vite"); + _iconsByFileName.Add("vite.config.cjs", "vite"); + _iconsByFileName.Add("vite.config.ts", "vite"); + _iconsByFileName.Add("lerna.json", "lerna"); + _iconsByFileName.Add("windi.config.js", "windicss"); + _iconsByFileName.Add("windi.config.ts", "windicss"); + _iconsByFileName.Add("windi.config.cjs", "windicss"); + _iconsByFileName.Add("windi.config.json", "windicss"); + _iconsByFileName.Add(".textlintrc", "textlint"); + _iconsByFileName.Add("vpkg.json", "vlang"); + _iconsByFileName.Add("v.mod", "vlang"); + _iconsByFileName.Add(".sentryclirc", "sentry"); + _iconsByFileName.Add(".phpunit.result.cache", "phpunit"); + _iconsByFileName.Add(".phpunit-watcher.yml", "phpunit"); + _iconsByFileName.Add("phpunit.xml", "phpunit"); + _iconsByFileName.Add("phpunit.xml.dist", "phpunit"); + _iconsByFileName.Add("phpunit-watcher.yml", "phpunit"); + _iconsByFileName.Add("phpunit-watcher.yml.dist", "phpunit"); + _iconsByFileName.Add(".php_cs", "php-cs-fixer"); + _iconsByFileName.Add(".php_cs.dist", "php-cs-fixer"); + _iconsByFileName.Add(".php_cs.php", "php-cs-fixer"); + _iconsByFileName.Add(".php_cs.dist.php", "php-cs-fixer"); + _iconsByFileName.Add(".php-cs-fixer.php", "php-cs-fixer"); + _iconsByFileName.Add(".php-cs-fixer.dist.php", "php-cs-fixer"); + _iconsByFileName.Add("robots.txt", "robots"); + _iconsByFileName.Add("tsconfig.json", "tsconfig"); + _iconsByFileName.Add("tsconfig.app.json", "tsconfig"); + _iconsByFileName.Add("tsconfig.editor.json", "tsconfig"); + _iconsByFileName.Add("tsconfig.spec.json", "tsconfig"); + _iconsByFileName.Add("tsconfig.base.json", "tsconfig"); + _iconsByFileName.Add("tsconfig.build.json", "tsconfig"); + _iconsByFileName.Add("tsconfig.eslint.json", "tsconfig"); + _iconsByFileName.Add("tsconfig.lib.json", "tsconfig"); + _iconsByFileName.Add("tauri.config.json", "tauri"); + _iconsByFileName.Add("tauri.linux.conf.json", "tauri"); + _iconsByFileName.Add("tauri.windows.conf.json", "tauri"); + _iconsByFileName.Add("tauri.macos.conf.json", "tauri"); + _iconsByFileName.Add("jsconfig.json", "jsconfig"); + _iconsByFileName.Add("maven.config", "maven"); + _iconsByFileName.Add("jvm.config", "maven"); + _iconsByFileName.Add(".ember-cli", "ember"); + _iconsByFileName.Add(".ember-cli.js", "ember"); + _iconsByFileName.Add("ember-cli-builds.js", "ember"); + _iconsByFileName.Add("horusec-config.json", "horusec"); + _iconsByFileName.Add(".astylerc", "astyle"); + _iconsByFileName.Add(".lighthouserc.js", "lighthouse"); + _iconsByFileName.Add("lighthouserc.js", "lighthouse"); + _iconsByFileName.Add(".lighthouserc.json", "lighthouse"); + _iconsByFileName.Add("lighthouserc.json", "lighthouse"); + _iconsByFileName.Add(".lighthouserc.yml", "lighthouse"); + _iconsByFileName.Add("lighthouserc.yml", "lighthouse"); + _iconsByFileName.Add(".lighthouserc.yaml", "lighthouse"); + _iconsByFileName.Add("lighthouserc.yaml", "lighthouse"); + _iconsByFileName.Add(".svgrrc", "svgr"); + _iconsByFileName.Add("svgr.config.js", "svgr"); + _iconsByFileName.Add(".svgrrc.js", "svgr"); + _iconsByFileName.Add(".svgrrc.yaml", "svgr"); + _iconsByFileName.Add(".svgrrc.yml", "svgr"); + _iconsByFileName.Add(".svgrrc.json", "svgr"); + _iconsByFileName.Add("rome.json", "rome"); + _iconsByFileName.Add("cypress.json", "cypress"); + _iconsByFileName.Add("cypress.env.json", "cypress"); + _iconsByFileName.Add(".tobimake", "tobimake"); + } +} \ No newline at end of file diff --git a/src/GuiApp/Avalonia/FileTime.GuiApp/IconProviders/SpecialPathWithIcon.cs b/src/GuiApp/Avalonia/FileTime.GuiApp/IconProviders/SpecialPathWithIcon.cs new file mode 100644 index 0000000..9f739a7 --- /dev/null +++ b/src/GuiApp/Avalonia/FileTime.GuiApp/IconProviders/SpecialPathWithIcon.cs @@ -0,0 +1,15 @@ +using FileTime.GuiApp.Models; + +namespace FileTime.GuiApp.IconProviders; + +public class SpecialPathWithIcon +{ + public string Path { get; } + public ImagePath IconPath { get; } + + public SpecialPathWithIcon(string path, ImagePath iconPath) + { + Path = path; + IconPath = iconPath; + } +} \ No newline at end of file diff --git a/src/GuiApp/Avalonia/FileTime.GuiApp/Resources/Brushes.axaml b/src/GuiApp/Avalonia/FileTime.GuiApp/Resources/Brushes.axaml new file mode 100644 index 0000000..20a39c2 --- /dev/null +++ b/src/GuiApp/Avalonia/FileTime.GuiApp/Resources/Brushes.axaml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/GuiApp/Avalonia/FileTime.GuiApp/Resources/Converters.axaml b/src/GuiApp/Avalonia/FileTime.GuiApp/Resources/Converters.axaml new file mode 100644 index 0000000..6dadfa1 --- /dev/null +++ b/src/GuiApp/Avalonia/FileTime.GuiApp/Resources/Converters.axaml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/GuiApp/Avalonia/FileTime.GuiApp/Resources/SolarizedDarkTheme.axaml b/src/GuiApp/Avalonia/FileTime.GuiApp/Resources/SolarizedDarkTheme.axaml new file mode 100644 index 0000000..42fe1dc --- /dev/null +++ b/src/GuiApp/Avalonia/FileTime.GuiApp/Resources/SolarizedDarkTheme.axaml @@ -0,0 +1,27 @@ + + + #E7073642 + #083e4c + #D0083e4c + #80083e4c + + #00000000 + #10000000 + #93a1a1 + #00000000 + #10000000 + #b58900 + + #93a1a1 + #268bd2 + #fdf6e3 + #7793a1a1 + #93a1a1 + #073642 + #b58900 + #b58900 + #002b36 + + #dc322f + \ No newline at end of file diff --git a/src/GuiApp/Avalonia/FileTime.GuiApp/Resources/Styles.axaml b/src/GuiApp/Avalonia/FileTime.GuiApp/Resources/Styles.axaml new file mode 100644 index 0000000..23b3bb2 --- /dev/null +++ b/src/GuiApp/Avalonia/FileTime.GuiApp/Resources/Styles.axaml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/GuiApp/Avalonia/FileTime.GuiApp/Views/ItemView.axaml b/src/GuiApp/Avalonia/FileTime.GuiApp/Views/ItemView.axaml index 3fa6284..ff91d41 100644 --- a/src/GuiApp/Avalonia/FileTime.GuiApp/Views/ItemView.axaml +++ b/src/GuiApp/Avalonia/FileTime.GuiApp/Views/ItemView.axaml @@ -19,12 +19,12 @@ - + Source="{Binding Converter={StaticResource ItemToImageConverter}}" />