UI/components: init icon
This commit is contained in:
91
pkgs/webview-ui/app/src/components/icon/index.tsx
Normal file
91
pkgs/webview-ui/app/src/components/icon/index.tsx
Normal file
@@ -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<SVGElement> {
|
||||||
|
icon: IconVariant;
|
||||||
|
}
|
||||||
|
|
||||||
|
const Icon: Component<IconProps> = (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 ? (
|
||||||
|
<IconComponent width={16} height={16} viewBox="0 0 48 48" />
|
||||||
|
) : null;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Icon;
|
||||||
Reference in New Issue
Block a user