Icons
1,667 Lucide icons on one box and one stroke variable, so an icon at 16 and an icon at 32 still belong to the same set.
Preview
1,667 icons on one box, one stroke and one pair of end caps. The set is Lucide, a third party open source library under the ISC licence. We did not draw it. We wired it to the tokens.
The set is flat, no variant sets, filed under 19 categories on the overview board and named in Lucide's own kebab case: house, chevron-right, message-circle. The layer name is the search term.
Sizes
Four steps for interface work and one for display. The box changes, the drawing inside it does not.
Size is set by the component that holds the icon, not bound on the icon itself. In Button the icon sits at 20 beside a label and at 24 when the button is icon only. The five steps are the ramp those components resize to.
Stroke
One variable holds the stroke at 2 while the box changes. Leave it out and the line thickens with the artwork, so a 32 icon reads heavier than the 16 beside it.
In the file this is not arithmetic. The vector scales with its frame while strokeWeight stays bound to dimensions/icon/stroke, so the line holds at 2 whatever the box does. 1,666 of the 1,667 carry that binding. The exception is circle-check, the one vector drawn on the full 24 box rather than inset.
Colour
An icon has no colour of its own. It takes the foreground role of the text beside it, so a label and its icon never drift apart.
All five were read off icon instances inside Button. On a filled button the icon takes fg/white-0, #FFFFFF light and #0E0E0F dark.
Tokens
Six numbers cover the whole set. Five sizes and one stroke, all in the Foundations collection, one mode.
Sizes are scoped to width and height, the stroke to stroke weight, so each offers itself only where it belongs. Only the stroke is bound on the icon: size comes from the component holding the instance.