role button
Icon button draft v0.5.1
Triggers an action with an icon alone; its label is given to assistive technology.
An icon button performs an action, like a button, but shows only an icon: it saves room in toolbars, table rows and headers where the action is familiar enough to be recognized from its symbol. It has no visible text, so it always carries a label that assistive technology announces as its name. Like every button, it never navigates.
Decisions
From decisions in packages/components/specs/components/icon-button.spec.json, newest first. Every active decision is implemented by the spec, the tokens, the web implementation and the guidelines.
Variant
-
Without a size, an icon button is medium (36 px), like the button (Button decision default-size-medium). The icon=only variant of the Figma prototype's Button set defaults to xsmall.
Every component with sizes in the system defaults to medium (text field, select, search field, number field, textarea, dropdown, icon button), so controls placed together without a size get the same size step; the prototype's xsmall default is also the top-left variant of its Button set and may come from the set's layout rather than from a choice.
default-size-medium· 2026-10-15 · v0.5.0icon-button.container.min-height.mediumicon-button.container.min-width.medium
Size
Color
-
The icon button exists in every color mode of the system, light and dark, and takes the colors of the mode of its context. Every color aliases the Figma library's mapped roles as they are, in both modes: fills global.bg.<emphasis>.<family>.<state>, borders global.border.<emphasis>.<family>.<state>, glyph global.icon.on-<emphasis>.<family>, disabled global.*.state.disabled.default; a ghost icon button reads the subtle text and icon colors. Where the Figma library's error colors fall under WCAG 2.2 AA, the gap is kept and tracked, not corrected in the icon button.
The Figma library as it is, errors and limitations included, is the starting point the system evolves from.
figma-library-colors· 2026-10-02 · v0.3.0 · replacescolor-modesicon-button.container.background.*icon-button.container.border-color.*icon-button.icon.color.*global.bg.*global.border.*global.icon.*
Accessibility
-
Every icon button has a required label that is its accessible name, given to the button itself (aria-label on the web); the glyph is hidden from assistive technology.
name-from-label· 2026-10-01 · v0.1.0WCAG 1.1.1 Non-text Content (A)WCAG 4.1.2 Name, Role, Value (A)APG: Button pattern, roles, states and propertiesAccName 1.2: aria-label (step 2C)
Superseded (3)
-
Sizes, spacing, radii, borders, type, icons and motion come straight from the Figma library's scales and the design system's additions, with the same values as before and no semantic layer in between: icons are Material Symbols Outlined glyphs (font.icon.*: fill off, weight 300, grade 0, optical size 20) at size.2 / 2 / 3 / 4, extra small to large; minimum width and height space.24 / 32 / 40 / 48; corners corner-radius.2xs / 2xs / xs / xs; border stroke-width.sm; transitions duration.fast and easing.standard.figma-library-scales· 2026-10-02 · v0.3.0 · replaced bysizes-from-button -
The icon button exists in every color mode of the system, light and dark, and takes the colors of the mode of its context. Its color decisions (emphasis, intent, state) are the same in every mode; only the semantic colors they alias change. Dark colors follow the prototype's dark mapping, with the error fill and border kept one step darker than the prototype, as in light mode.color-modes· 2026-10-01 · v0.2.0 · replaced byfigma-library-colors -
Icons are glyphs of Material Symbols, latest version, for every component: Outlined family with fill off, weight 300, grade 0 and optical size 20 px.icons-material-symbols· 2026-10-01 · v0.1.0 · replaced byfigma-library-scales