blob: c99e4f5b7dabc233673fc1ab73820a82eb335f41 [file] [log] [blame]
gio5f2f1002025-03-20 18:38:48 +04001import { NodeType } from "@/lib/state";
gioa2a845c2025-05-08 11:27:14 +00002import { ReactElement } from "react";
3import { SiGithub, SiMongodb, SiPostgresql } from "react-icons/si";
4import { GrServices } from "react-icons/gr";
5import { GoFileDirectoryFill } from "react-icons/go";
6import { TbWorldWww } from "react-icons/tb";
7import { PiNetwork } from "react-icons/pi";
8import { AiOutlineGlobal } from "react-icons/ai";
gio5f2f1002025-03-20 18:38:48 +04009
gioa2a845c2025-05-08 11:27:14 +000010export function Icon(type: NodeType | undefined): ReactElement {
gio5f2f1002025-03-20 18:38:48 +040011 switch (type) {
gioa2a845c2025-05-08 11:27:14 +000012 case "app": return (<GrServices />);
gio5f2f1002025-03-20 18:38:48 +040013 case "github": return (<SiGithub />);
gioa2a845c2025-05-08 11:27:14 +000014 case "gateway-https": return (<TbWorldWww />);
15 case "gateway-tcp": return (<PiNetwork />);
gio5f2f1002025-03-20 18:38:48 +040016 case "mongodb": return (<SiMongodb />);
17 case "postgresql": return (<SiPostgresql />);
gioa2a845c2025-05-08 11:27:14 +000018 case "volume": return (<GoFileDirectoryFill />);
19 case "network": return (<AiOutlineGlobal />);
20 default: throw new Error(`MUST NOT REACH! ${type}`);
gio5f2f1002025-03-20 18:38:48 +040021 }
22}