Interface icons — one set, one technique. Line art on a 24×24 grid, inked by the parent's text colour, scaled by a single number.
<svg> straight into a component. That is the moment to come here: five unrelated sets in one repo grew exactly like that, one icon at a time.IngotOpIcon. The key is stored by the backend and the icon alone is a riddle.name: IngotIconName — A key from the set. An unknown key fails typecheck; if one arrives from data the component renders nothing and says so in the console in dev.size: number — Square edge in px, default 14. Scale: 13 in a small button, 14 in a button, 15 in navigation, 20 next to an empty state.title: string — Fill in ONLY when the icon stands alone and carries meaning. Leave it empty next to text — otherwise a screen reader says the same thing twice.className: string — Extra classes. Do not set the colour here — the icon inherits the parent's currentColor.testId: string — data-testid of the element.