Merge pull request 'icons: update icon component' (#2546) from hsjobeki/clan-core:hsjobeki-main into main

This commit is contained in:
clan-bot
2024-12-03 13:30:36 +00:00

View File

@@ -4,15 +4,23 @@ import ArrowLeft from "@/icons/arrow-left.svg";
import ArrowRight from "@/icons/arrow-right.svg"; import ArrowRight from "@/icons/arrow-right.svg";
import ArrowTop from "@/icons/arrow-top.svg"; import ArrowTop from "@/icons/arrow-top.svg";
import CaretDown from "@/icons/caret-down.svg"; import CaretDown from "@/icons/caret-down.svg";
import CaretUp from "@/icons/caret-up.svg";
import CaretLeft from "@/icons/caret-left.svg";
import CaretRight from "@/icons/caret-right.svg"; import CaretRight from "@/icons/caret-right.svg";
import Checkmark from "@/icons/checkmark.svg"; import Checkmark from "@/icons/checkmark.svg";
import ClanIcon from "@/icons/clan-icon.svg"; import ClanIcon from "@/icons/clan-icon.svg";
import ClanLogo from "@/icons/clan-logo.svg"; import ClanLogo from "@/icons/clan-logo.svg";
import Download from "@/icons/download.svg";
import Edit from "@/icons/edit.svg"; import Edit from "@/icons/edit.svg";
import Expand from "@/icons/expand.svg"; import Expand from "@/icons/expand.svg";
import EyeClose from "@/icons/eye-close.svg"; import EyeClose from "@/icons/eye-close.svg";
import EyeOpen from "@/icons/eye-open.svg"; import EyeOpen from "@/icons/eye-open.svg";
import Flash from "@/icons/flash.svg"; import Flash from "@/icons/flash.svg";
import Filter from "@/icons/filter.svg";
import Folder from "@/icons/folder.svg";
import More from "@/icons/more.svg";
import Report from "@/icons/report.svg";
import Search from "@/icons/search.svg";
import Grid from "@/icons/grid.svg"; import Grid from "@/icons/grid.svg";
import Info from "@/icons/info.svg"; import Info from "@/icons/info.svg";
import List from "@/icons/list.svg"; import List from "@/icons/list.svg";
@@ -24,63 +32,48 @@ import Settings from "@/icons/settings.svg";
import Trash from "@/icons/trash.svg"; import Trash from "@/icons/trash.svg";
import Update from "@/icons/update.svg"; import Update from "@/icons/update.svg";
type IconVariant = const icons = {
| "ArrowBottom" ArrowBottom,
| "ArrowLeft" ArrowLeft,
| "ArrowRight" ArrowRight,
| "ArrowTop" ArrowTop,
| "CaretDown" CaretDown,
| "CaretRight" CaretRight,
| "Checkmark" CaretLeft,
| "ClanIcon" CaretUp,
| "ClanLogo" Checkmark,
| "Edit" ClanIcon,
| "Expand" ClanLogo,
| "EyeClose" Download,
| "EyeOpen" Edit,
| "Flash" Expand,
| "Grid" EyeClose,
| "Info" EyeOpen,
| "List" Filter,
| "Load" Folder,
| "Paperclip" More,
| "Plus" Report,
| "Reload" Search,
| "Settings" Flash,
| "Trash" Grid,
| "Update"; Info,
List,
Load,
Paperclip,
Plus,
Reload,
Settings,
Trash,
Update,
};
type IconVariant = keyof typeof icons;
interface IconProps extends JSX.SvgSVGAttributes<SVGElement> { interface IconProps extends JSX.SvgSVGAttributes<SVGElement> {
icon: IconVariant; icon: IconVariant;
} }
const Icon: Component<IconProps> = (props) => { 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 [local, iconProps] = splitProps(props, ["icon"]); const [local, iconProps] = splitProps(props, ["icon"]);
const IconComponent = icons[local.icon]; const IconComponent = icons[local.icon];