import type { ComponentType, ReactNode, SVGProps } from "react"; import { CalendarIcon as MuCalendarIcon, CheckIcon as MuCheckIcon, ChevronIcon as MuChevronIcon, ClockIcon as MuClockIcon, CloseIcon as MuCloseIcon, DocumentIcon as MuDocumentIcon, DuplicateIcon as MuDuplicateIcon, PenIcon as MuPenIcon, PlusIcon as MuPlusIcon, SearchIcon as MuSearchIcon, ShareIcon as MuShareIcon, TagIcon as MuTagIcon, TrashIcon as MuTrashIcon, type IconProps, } from "@unlocalhosted/metalui/icons"; export { LinkIcon, MoreIcon, MorphIcon, NoteIcon, PinIcon, SyncedIcon, ImageIcon, UndoIcon, SendAwayIcon, } from "@unlocalhosted/metalui/icons"; /** * A MetalUI glyph (monoline + duotone on the 24 grid, with its hover act) behind the app's icon * signature: `width`/`height` become its `size`. Inside a MetalUI Button, Menu row or any element with * `mu-icon-trigger`, the glyph plays its act from the whole control. */ function metal(Glyph: ComponentType, turn?: IconProps["turn"]) { return function Icon({ width, height, ...props }: SVGProps) { const { ref, ...rest } = props; void ref; return ; }; } export const SearchIcon = metal(MuSearchIcon); export const PlusIcon = metal(MuPlusIcon); export const TrashIcon = metal(MuTrashIcon); export const CheckIcon = metal(MuCheckIcon); export const XIcon = metal(MuCloseIcon); export const CopyIcon = metal(MuDuplicateIcon); export const PencilIcon = metal(MuPenIcon); export const UploadIcon = metal(MuShareIcon); export const CalendarIcon = metal(MuCalendarIcon); export const ClockIcon = metal(MuClockIcon); export const TagIcon = metal(MuTagIcon); export const FileIcon = metal(MuDocumentIcon); /** The set's chevron points down; turned for the other directions. */ export const ChevronDownIcon = metal(MuChevronIcon); export const ChevronRightIcon = metal(MuChevronIcon, 270); export const ChevronLeftIcon = metal(MuChevronIcon, 90); // Glyphs the set doesn't have, drawn in its manner: monoline on the 24 grid at its 1.7 stroke. function icon(children: ReactNode) { return function Icon(props: SVGProps) { return ( {children} ); }; } export const RepoIcon = icon( <> , ); export const PackageIcon = icon( <> , ); export const CodeIcon = icon( <> , ); export const IssueOpenedIcon = icon( <> , ); export const IssueClosedIcon = icon( <> , ); export const HistoryIcon = icon( <> , ); export const BranchIcon = icon( <> , ); export const DirIcon = icon( , ); export const SubmoduleIcon = icon( <> , ); export const CommitIcon = icon( <> , ); export const BookIcon = icon( <> , ); export const CommentIcon = icon(); export const LockIcon = icon( <> , ); export const KeyIcon = icon( <> , ); export const ShieldLockIcon = icon( <> , ); export const GearIcon = icon( <> , ); export const PersonIcon = icon( <> , ); export const PeopleIcon = icon( <> , ); export const SignOutIcon = icon( <> , ); export const ArrowRightIcon = icon( <> , ); export const TerminalIcon = icon( <> , ); export const AlertIcon = icon( <> , ); export const CompassIcon = icon( <> , ); export const GlobeIcon = icon( <> , ); export const EyeIcon = icon( <> , ); export const HomeIcon = icon( <> , ); export const SparkleIcon = icon( , ); export const ExternalIcon = icon( <> , ); export const SunIcon = icon( <> , ); export const MoonIcon = icon(); export const MonitorIcon = icon( <> , ); export const MenuIcon = icon(); export const ChevronsUpDownIcon = icon(); export const CommandIcon = icon(); export const ListIcon = icon(); export const BoardIcon = icon( <> , ); export const SlidersIcon = icon(); export const PlayIcon = icon( <> , ); export const ServerIcon = icon( <> , ); export const DownloadIcon = icon();