From ce12fbd19b6cbd450f3a5e435cd519de44d343d2 Mon Sep 17 00:00:00 2001 From: Johannes Kirschbauer Date: Tue, 26 Nov 2024 13:54:58 +0100 Subject: [PATCH] UI/components: init icon --- .../app/src/components/icon/index.tsx | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 pkgs/webview-ui/app/src/components/icon/index.tsx diff --git a/pkgs/webview-ui/app/src/components/icon/index.tsx b/pkgs/webview-ui/app/src/components/icon/index.tsx new file mode 100644 index 000000000..175c44bf6 --- /dev/null +++ b/pkgs/webview-ui/app/src/components/icon/index.tsx @@ -0,0 +1,91 @@ +import { Component, JSX } from "solid-js"; +import ArrowBottom from "@/icons/arrow-bottom.svg"; +import ArrowLeft from "@/icons/arrow-left.svg"; +import ArrowRight from "@/icons/arrow-right.svg"; +import ArrowTop from "@/icons/arrow-top.svg"; +import CaretDown from "@/icons/caret-down.svg"; +import CaretRight from "@/icons/caret-right.svg"; +import Checkmark from "@/icons/checkmark.svg"; +import ClanIcon from "@/icons/clan-icon.svg"; +import ClanLogo from "@/icons/clan-logo.svg"; +import Edit from "@/icons/edit.svg"; +import Expand from "@/icons/expand.svg"; +import EyeClose from "@/icons/eye-close.svg"; +import EyeOpen from "@/icons/eye-open.svg"; +import Flash from "@/icons/flash.svg"; +import Grid from "@/icons/grid.svg"; +import Info from "@/icons/info.svg"; +import List from "@/icons/list.svg"; +import Load from "@/icons/load.svg"; +import Paperclip from "@/icons/paperclip.svg"; +import Plus from "@/icons/plus.svg"; +import Reload from "@/icons/reload.svg"; +import Settings from "@/icons/settings.svg"; +import Trash from "@/icons/trash.svg"; +import Update from "@/icons/update.svg"; + +type IconVariant = + | "ArrowBottom" + | "ArrowLeft" + | "ArrowRight" + | "ArrowTop" + | "CaretDown" + | "CaretRight" + | "Checkmark" + | "ClanIcon" + | "ClanLogo" + | "Edit" + | "Expand" + | "EyeClose" + | "EyeOpen" + | "Flash" + | "Grid" + | "Info" + | "List" + | "Load" + | "Paperclip" + | "Plus" + | "Reload" + | "Settings" + | "Trash" + | "Update"; + +interface IconProps extends JSX.SvgSVGAttributes { + icon: IconVariant; +} + +const Icon: Component = (props) => { + const icons = { + ArrowBottom, + ArrowLeft, + ArrowRight, + ArrowTop, + CaretDown, + CaretRight, + Checkmark, + ClanIcon, + ClanLogo, + Edit, + Expand, + EyeClose, + EyeOpen, + Flash, + Grid, + Info, + List, + Load, + Paperclip, + Plus, + Reload, + Settings, + Trash, + Update, + }; + + const IconComponent = icons[props.icon]; + return IconComponent ? ( + + ) : null; +}; + +export default Icon;