import { createElement, type ReactNode, type SVGProps } from "react" import { icons, type IconName, type IconNode } from "@pathmx/core/icons" import { cn } from "./utils.ts" export type IconProps = Omit, "children" | "name"> & Readonly<{ name: IconName size?: number | string }> function renderNode( [element, attributes, children]: IconNode, key: number, ): ReactNode { return createElement( element, { ...attributes, key }, children?.map(renderNode), ) } /** Shared decorative React renderer for the PathMX icon catalog. */ export function Icon({ name, size = 24, className, "aria-hidden": ariaHidden = true, focusable = "false", ...props }: IconProps) { return ( {icons[name].map(renderNode)} ) }