#pragma once
#include <string>
#include <format>
#include <unordered_map>

enum class BuiltinIcon : std::uint16_t {
  Aarch64,
  AddPerson,
  Adonisjs,
  Aftereffects,
  AirplaneFilled,
  AirplaneLanding,
  AirplaneTakeoff,
  Airplane,
  Airpods,
  Akka,
  AlarmRinging,
  Alarm,
  Algolia,
  AlignCentre,
  AlignLeft,
  AlignRight,
  Alpinejs,
  Amazonwebservices,
  AmericanFootball,
  Anaconda,
  Anchor,
  Android,
  Androidstudio,
  Angular,
  Angularjs,
  Angularmaterial,
  Ansible,
  Antdesign,
  Apache,
  Apacheairflow,
  Apachekafka,
  Apachespark,
  Apl,
  AppWindowGrid2x2,
  AppWindowGrid3x3,
  AppWindowList,
  AppWindowSidebarLeft,
  AppWindowSidebarRight,
  AppWindow,
  Appcelerator,
  Apple,
  Appwrite,
  Archlinux,
  Arduino,
  Argocd,
  ArrowClockwise,
  ArrowCounterClockwise,
  ArrowDownCircleFilled,
  ArrowDownCircle,
  ArrowDown,
  ArrowLeftCircleFilled,
  ArrowLeftCircle,
  ArrowLeft,
  ArrowNe,
  ArrowRightCircleFilled,
  ArrowRightCircle,
  ArrowRight,
  ArrowUpCircleFilled,
  ArrowUpCircle,
  ArrowUp,
  ArrowsContract,
  ArrowsExpand,
  Astro,
  AtSymbol,
  Atom,
  Awk,
  Axios,
  Azure,
  Azuredevops,
  Azuresqldatabase,
  Babel,
  Backbonejs,
  Ballerina,
  Bamboo,
  BandAid,
  BankNote,
  BarChart,
  BarCode,
  Bash,
  BathTub,
  BatteryCharging,
  BatteryDisabled,
  Battery,
  Beats,
  Behance,
  BellDisabled,
  Bell,
  Bike,
  Binoculars,
  Bird,
  Bitbucket,
  BlankDocument,
  Blazor,
  Blender,
  Bluetooth,
  Boat,
  Bold,
  BoltDisabled,
  Bolt,
  Book,
  Bookmark,
  Bootstrap,
  Bower,
  Box,
  Browserstack,
  Brush,
  Bug,
  Building,
  BulletPoints,
  BullsEyeMissed,
  BullsEye,
  Bulma,
  Bun,
  Buoy,
  C,
  Cairo,
  Cakephp,
  Calculator,
  Calendar,
  Camera,
  Canva,
  Capacitor,
  Car,
  Carbon,
  Carousel,
  Cart,
  Cassandra,
  Cd,
  Center,
  Centos,
  Ceylon,
  CheckCircle,
  CheckList,
  CheckRosette,
  Check,
  Checkmark,
  ChessPiece,
  ChevronDownSmall,
  ChevronDown,
  ChevronLeftSmall,
  ChevronLeft,
  ChevronRightSmall,
  ChevronRight,
  ChevronUpDown,
  ChevronUpSmall,
  ChevronUp,
  Chrome,
  CircleDisabled,
  CircleEllipsis,
  CircleFilled,
  CircleProgress100,
  CircleProgress25,
  CircleProgress50,
  CircleProgress75,
  CircleProgress,
  Circle,
  Circleci,
  Clarity,
  Claude,
  ClearFormatting,
  Clion,
  Clock,
  Clojure,
  Clojurescript,
  CloudLightning,
  CloudRain,
  CloudSnow,
  CloudSun,
  Cloud,
  Cloudflare,
  Cloudflareworkers,
  Cmake,
  CodeBlock,
  Code,
  Codeac,
  Codecov,
  Codeigniter,
  Codepen,
  Coffeescript,
  Cog,
  Coin,
  Coins,
  CommandSymbol,
  Compass,
  Composer,
  ComputerChip,
  Confluence,
  Consul,
  Contao,
  Contrast,
  CopyClipboard,
  Corejs,
  Cosmosdb,
  Couchbase,
  Couchdb,
  Cplusplus,
  CreditCard,
  CricketBall,
  Crop,
  Crown,
  Crypto,
  Crystal,
  Csharp,
  Css3,
  Cucumber,
  Cypressio,
  D3js,
  Dart,
  Datagrip,
  Dataspell,
  Dbeaver,
  Debian,
  Deepseek,
  DeleteDocument,
  Denojs,
  Desktop,
  Devices,
  Devicon,
  Digitalocean,
  Discord,
  Discordjs,
  Django,
  Djangorest,
  Dna,
  Docker,
  Doctrine,
  DotNet,
  Dot,
  Dotnetcore,
  Download,
  Dreamweaver,
  Droplets,
  Dropwizard,
  Drupal,
  Duplicate,
  Dynamodb,
  Eclipse,
  Ecto,
  EditShape,
  Eject,
  Elasticsearch,
  Electron,
  Eleventy,
  Elixir,
  Ellipsis,
  Elm,
  Emacs,
  Embeddedc,
  Ember,
  EmojiSad,
  Emoji,
  EnterKey,
  Envelope,
  Envoy,
  Eraser,
  Erlang,
  Eslint,
  Exclamationmark2,
  Exclamationmark3,
  Exclamationmark,
  Express,
  EyeDisabled,
  EyeDropper,
  Eye,
  Facebook,
  Fastapi,
  Fastify,
  Faunadb,
  Feathersjs,
  Fedora,
  Female,
  Figma,
  Filezilla,
  FilmStrip,
  Filter,
  Finder,
  Fingerprint,
  Firebase,
  Firefox,
  Flag,
  Flask,
  FloatingWindow,
  Flutter,
  Folder,
  Footprints,
  Fortran,
  ForwardFilled,
  Forward,
  Foundation,
  FountainTip,
  Framermotion,
  Framework7,
  Fsharp,
  FullSignal,
  Fullscreen,
  GameController,
  Gatling,
  Gatsby,
  Gauge,
  Gazebo,
  Gcc,
  Gemini,
  Gemma,
  Gentoo,
  Geopin,
  Germ,
  Ghost,
  Gift,
  Gimp,
  Git,
  Gitbook,
  Github,
  Githubactions,
  Githubcodespaces,
  Gitlab,
  Gitpod,
  Gitter,
  Glasses,
  Globe01,
  Go,
  Goal,
  Godot,
  Goland,
  Google,
  Googlecloud,
  Gradle,
  Grafana,
  Grails,
  Graphql,
  Groovy,
  Grpc,
  Grunt,
  Gulp,
  Hadoop,
  Hammer,
  Handlebars,
  HardDrive,
  Hardhat,
  Harvester,
  Hashtag,
  Haskell,
  Haxe,
  Heading,
  Headphones,
  HeartDisabled,
  Heart,
  Heartbeat,
  Helm,
  Heroku,
  Hibernate,
  Highlight,
  Homebrew,
  Hourglass,
  House,
  Html5,
  Hugo,
  Humidity,
  Ie10,
  Ifttt,
  Illustrator,
  Image,
  Important01,
  Influxdb,
  Info01,
  Inkscape,
  Insomnia,
  Intellij,
  Ionic,
  Italics,
  Jaegertracing,
  Jamstack,
  Jasmine,
  Java,
  Javascript,
  Jeet,
  Jekyll,
  Jenkins,
  Jest,
  Jetbrains,
  Jetpackcompose,
  Jira,
  Jiraalign,
  Jquery,
  Json,
  Jule,
  Julia,
  Junit,
  Jupyter,
  K3os,
  K3s,
  K6,
  Kaggle,
  Karatelabs,
  Karma,
  Kdeneon,
  Keras,
  Key,
  KeyboardShift,
  Keyboard,
  Kibana,
  Knexjs,
  Knockout,
  Kotlin,
  Krakenjs,
  Ktor,
  Kubernetes,
  Labview,
  Laravel,
  Latex,
  Layers,
  Leaderboard,
  Leaf,
  Less,
  LightBulbOff,
  LightBulb,
  LineChart,
  Link,
  Linkedin,
  Linux,
  Liquibase,
  Livestream01,
  LivestreamDisabled01,
  Livewire,
  Llava,
  Llvm,
  LockDisabled,
  LockUnlocked,
  Lock,
  Lodash,
  Logout,
  Logstash,
  Lorry,
  Lowercase,
  Lua,
  Lumen,
  Magento,
  MagnifyingGlass,
  Male,
  Map,
  Mariadb,
  Markdown,
  Mask,
  Materializecss,
  Materialui,
  Matlab,
  Matplotlib,
  Maven,
  Maximize,
  Maya,
  MedicalSupport,
  Megaphone,
  MemoryStick,
  Meteor,
  MicrophoneDisabled,
  Microphone,
  Microsoftsqlserver,
  Minimize,
  Minitab,
  MinusCircleFilled,
  MinusCircle,
  Minus,
  Mistral,
  Mithril,
  Mobile,
  Mobx,
  Mocha,
  Modx,
  Moleculer,
  Mongodb,
  Mongoose,
  Monitor,
  Moodle,
  MoonDown,
  MoonUp,
  Moon,
  Moonrise,
  Mountain,
  Mouse,
  Move,
  Msdos,
  MugSteam,
  Mug,
  Multiply,
  Music,
  Mysql,
  Nano,
  Neo4j,
  Neovim,
  Nestjs,
  Netlify,
  Network,
  Networkx,
  NewDocument,
  NewFolder,
  Nextjs,
  Nginx,
  Ngrx,
  Nhibernate,
  Nim,
  Nimble,
  Nixos,
  Nodejs,
  Nodemon,
  Nodewebkit,
  Nomad,
  Norg,
  Notion,
  Npm,
  Nuget,
  Numpy,
  Nuxtjs,
  Oauth,
  Objectivec,
  Ocaml,
  Ohmyzsh,
  Okta,
  Ollama,
  Omnicast,
  Openai,
  Openal,
  Openapi,
  Opencl,
  Opencv,
  Opengl,
  Openstack,
  Opensuse,
  Opentelemetry,
  Opera,
  OptionSymbol,
  Oracle,
  Ory,
  Overview,
  P5js,
  Packer,
  Pandas,
  Paperclip,
  Paragraph,
  Patch,
  PauseFilled,
  Pause,
  Pencil,
  Perl,
  PersonCircle,
  PersonLines,
  Person,
  Pfsense,
  Phalcon,
  Phoenix,
  PhoneRinging,
  Phone,
  Photonengine,
  Photoshop,
  Php,
  Phpstorm,
  PieChart,
  Pill,
  PinDisabled,
  Pin,
  PlayFilled,
  Play,
  Playwright,
  Plotly,
  Plug,
  PlusCircleFilled,
  PlusCircle,
  PlusMinusDivideMultiply,
  PlusSquare,
  PlusTopRightSquare,
  Plus,
  Pnpm,
  Podman,
  Poetry,
  Polygon,
  Portainer,
  Postcss,
  Postgresql,
  Postman,
  Power,
  Powershell,
  Premierepro,
  Print,
  Prisma,
  Processing,
  Prolog,
  Prometheus,
  Protractor,
  Pulsar,
  Pulumi,
  Puppeteer,
  Purescript,
  Putty,
  Pycharm,
  Pypi,
  Pyscript,
  Pytest,
  Python,
  Pytorch,
  Qodana,
  Qt,
  Quarkus,
  Quasar,
  QuestionMarkCircle,
  QuotationMarks,
  QuoteBlock,
  Qwen,
  Qwik,
  R,
  Rabbitmq,
  Racket,
  Rails,
  Railway,
  Raindrop,
  Rancher,
  Raspberrypi,
  Raycast,
  Reach,
  React,
  Reactbootstrap,
  Reactnavigation,
  Reactrouter,
  Readthedocs,
  Realm,
  Receipt,
  Rect,
  Redhat,
  Redis,
  Redo,
  Redux,
  RemovePerson,
  Renpy,
  Repeat,
  ReplaceOne,
  Replace,
  Replit,
  Reply,
  RewindFilled,
  Rewind,
  Rider,
  Rocket,
  Rocksdb,
  Rockylinux,
  Rollup,
  Ros,
  Rosette,
  RotateAntiClockwise,
  RotateClockwise,
  Rspec,
  Rss,
  Rstudio,
  Ruby,
  Rubymine,
  Ruler,
  Rust,
  Rxjs,
  Safari,
  Salesforce,
  Sanity,
  Sass,
  SaveDocument,
  Scala,
  Scalingo,
  Scikitlearn,
  Sdl,
  Selenium,
  Sema,
  Sentry,
  Sequelize,
  Shield01,
  Shopware,
  ShortParagraph,
  Shotgrid,
  Shuffle,
  Signal0,
  Signal1,
  Signal2,
  Signal3,
  Sketch,
  Slack,
  Snippets,
  Snowflake,
  SoccerBall,
  Socketio,
  Solidity,
  Solidjs,
  Sonarqube,
  Sourcetree,
  SpaceKey,
  Spack,
  SpeakerDown,
  SpeakerHigh,
  SpeakerLow,
  SpeakerOff,
  SpeakerOn,
  SpeakerUp,
  Speaker,
  SpeechBubbleActive,
  SpeechBubbleImportant,
  SpeechBubble,
  Splunk,
  Spring,
  Spss,
  Spyder,
  Sqlalchemy,
  Sqldeveloper,
  Sqlite,
  SquareEllipsis,
  Ssh,
  StackedBars1,
  StackedBars2,
  StackedBars3,
  StackedBars4,
  Stackoverflow,
  StarCircle,
  StarDisabled,
  Star,
  Stars,
  Stata,
  StopFilled,
  Stop,
  Stopwatch,
  Store,
  Storybook,
  Streamlit,
  StrikeThrough,
  Stylus,
  Subversion,
  Sun,
  Sunrise,
  Supabase,
  Svelte,
  Swagger,
  Swatch,
  Swift,
  Swiper,
  SwitchWindows,
  Switch,
  Symfony,
  Syringe,
  TabKey,
  TackDisabled,
  Tack,
  Tag,
  Tailwindcss,
  Tauri,
  Temperature,
  TennisBall,
  Tensorflow,
  Terminal,
  Terraform,
  Tex,
  TextCursor,
  TextInput,
  TextSelection,
  Text,
  Thealgorithms,
  Threedsmax,
  Threejs,
  ThumbsDownFilled,
  ThumbsDown,
  ThumbsUpFilled,
  ThumbsUp,
  Ticket,
  Titaniumsdk,
  Tomcat,
  Torch,
  Tortoisegit,
  Towergit,
  Traefikmesh,
  Traefikproxy,
  Train,
  Trash,
  Travis,
  Tray,
  Tree,
  Trello,
  Trophy,
  Trpc,
  Twenty,
  Twitter,
  TwoPeople,
  Typescript,
  Typo3,
  Ubuntu,
  Umbrella,
  Underline,
  Undo,
  Unifiedmodelinglanguage,
  Unity,
  Unix,
  Unrealengine,
  Upload,
  Uppercase,
  Uwsgi,
  V8,
  Vagrant,
  Vala,
  Vault,
  Vercel,
  Vertx,
  Vicinae,
  VideoDisabled,
  Video,
  Vim,
  Visualbasic,
  Visualstudio,
  Vite,
  Vitejs,
  Vitess,
  Vitest,
  Vscode,
  Vsphere,
  Vuejs,
  Vuestorefront,
  Vuetify,
  Vyper,
  Wallet,
  Wand,
  Warning,
  Wasm,
  Waveform,
  Webflow,
  Weblate,
  Webpack,
  Webstorm,
  Weights,
  WifiDisabled,
  Wifi,
  Wind,
  Windows11,
  Windows8,
  Windsock,
  Woocommerce,
  Wordpress,
  WrenchScrewdriver,
  WristWatch,
  XMarkCircleFilled,
  XMarkCircleHalfDash,
  XMarkCircle,
  XMarkTopRightSquare,
  Xamarin,
  Xcode,
  Xd,
  Xmark,
  Xml,
  Yaml,
  Yarn,
  Yii,
  Yugabytedb,
  Yunohost,
  Zend,
  Zendesk,
  Zig
};

class BuiltinIconService {
public:
  using Mapping = std::unordered_map<BuiltinIcon, const char *>;

  static BuiltinIcon unknownIcon() { return BuiltinIcon::QuestionMarkCircle; }
  static std::string pathForName(std::string_view name) { return std::format(":icons/{}", name); }
  static const char *nameForIcon(BuiltinIcon icon);
  static const Mapping &mapping();
};
