import type { ReactNode } from "react"; import type { ButtonProps } from "../Button/Button.tsx"; export type IconButtonProps = Omit & { /** * Required, and this single line is most of the component's * reason to exist. `label` cannot be defaulted, cannot be * omitted, and is not a `ReactNode` — it becomes `aria-label`, * which is a string by specification. */ label: string; /** The glyph. Anything — lucide, an inline SVG, a character. */ children: ReactNode; }; /** * Three repos, three strategies, and **none of them names the * button**: mux-magic hand-writes five SVG components, castkit * keeps an `ICON_PATHS` map, and plex-channels renders raw glyphs * (`↶`, `↷`, `▶`, `⚙`, `≡`) straight into a `