Icon
Atom
Lucide-style outline. 1.75 stroke width, rounded caps. The stroke defaults to the theme foreground token and tracks light and dark automatically; pick other hues with the semantic color booleans (primary, destructive, success, warning, muted, subtle; that order is the precedence). muted is the third ink (subtle-foreground) and subtle the second (muted-foreground), the names Typography gives the same two inks. Inside a control that owns a label ink (a Button's iconLeft and iconRight slots) a glyph with no tone takes that ink instead, the way the hand-off's icons inherit currentColor: the primary's contrast ink on a primary button, the muted ink on a quiet one. The precedence is the explicit tone, then the host's ink, then the foreground, so a toned glyph keeps its tone anywhere.
Playground
Every control sets a real prop of IconProps. The JSX below updates as you go.
Web
iOS
Android
JSX · IconProps
Variants
7 examples from src/atoms/icon/icon.md, each rendered live from its own JSX.
Sizes
Anatomy
1
Glyph
2
Bounding box
Dimmed parts appear only in some states or variants.
Props
19 props on IconProps, grouped as they are declared in source. Required props are marked *.
Accessibility and keyboard
Keyboard
Not focusable. It has no interaction of its own and takes the semantics of what it wraps.
Semantics
Roles
image
ARIA on web
aria-hidden
aria-label
Platform skins
The playground's props on each platform: same tree, native shapes, type and touch sizes.
Usage
Tokens
Read from the playground render. Values follow the scheme and the ion hue.
--fd
--ft
--ln2
--tx