Button Icon
Soft
Soft is the default variant. The button has a permanent neutralLight background with hover and active overlays. Use soft when the button needs to be visually present at rest, for example a toolbar where all actions should be equally discoverable.
<Inline space="small" alignY="center"> <ButtonIcon icon="magnifying-glass" label="Search" /> <ButtonIcon icon="envelope" label="Contact" /> <ButtonIcon icon="rss" label="RSS feed" /> <ButtonIcon icon="books" label="Reading list" /></Inline>Transparent
Transparent has no background at rest. The circular surface only appears on hover and active, making the icon appear to float in the layout. Bleed is automatically applied for transparent buttons, removing the padding from layout flow while keeping the full touch target. The icon aligns flush with surrounding text and other elements.
<Inline space="small" alignY="center"> <ButtonIcon icon="list" label="Open menu" variant="transparent" /> <ButtonIcon icon="close" label="Close" variant="transparent" /> <ButtonIcon icon="magnifying-glass" label="Search" variant="transparent" /></Inline>Ghost
Ghost has no background and no hover or active circle. Only the press animation fires on click. Use ghost when you want interaction feedback without any visible surface at rest or on hover, for example alongside plain text links in a navigation bar.
<Inline space="small" alignY="center"> <ButtonIcon icon="magnifying-glass" label="Search" variant="ghost" /> <ButtonIcon icon="envelope" label="Contact" variant="ghost" /> <ButtonIcon icon="rss" label="RSS feed" variant="ghost" /></Inline>Sizes
Three sizes: small (4px padding), standard (6px padding, default), large (6px padding with a larger icon). The touch target is always expanded to a minimum of 44×44px via a ::after pseudo-element regardless of visual size.
<Inline space="moderate" alignY="center"> <ButtonIcon icon="magnifying-glass" label="Search" size="small" /> <ButtonIcon icon="magnifying-glass" label="Search" size="standard" /> <ButtonIcon icon="magnifying-glass" label="Search" size="large" /></Inline>Disabled
Disabled buttons are non-interactive and visually dimmed. Both variants support the disabled state.
<Inline space="small" alignY="center"> <ButtonIcon icon="magnifying-glass" label="Search" disabled /> <ButtonIcon icon="magnifying-glass" label="Search" variant="transparent" disabled /></Inline>Invoker commands
The commandFor and command props wire ButtonIcon to any dialog or popover by ID using the HTML Invoker Commands API. Here a transparent ButtonIcon opens MobileNavigation. This is the same pattern used in the site header.
<ButtonIcon icon="list" label="Open navigation menu" variant="transparent" commandFor="demo-mobile-navigation" command="show-modal"/>
<MobileNavigation id="demo-mobile-navigation" title="Lloyd Atkinson" links={[ { title: 'Articles', to: '/articles/' }, { title: 'Notes', to: '/notes/' }, { title: 'Speaking', to: '/speaking/' }, { title: 'About', to: '/about/' }, ]} iconLinks={[ { title: 'Read', to: '/reading/', icon: 'books' }, { title: 'RSS Feed', to: '/rss.xml', icon: 'rss' }, { title: 'Contact', to: '/inbox/', icon: 'envelope' }, ]}/>