Button Icon
Soft
The default variant. Keeps a permanent neutralLight background at rest, with hover and active overlays layered on top.
<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
No background at rest; a circular surface appears only on hover or active. Bleed is applied automatically, so the icon sits flush with surrounding elements while keeping the full touch target.
<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
No background or hover/active surface, only a press animation that scales the icon down on click. Suits placement next to plain text links.
<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 (8px padding, default), and large (8px padding with a larger icon). The touch target always expands to a minimum of 44×44px via a ::after pseudo-element.
<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
Dims the icon and removes interactivity. All three variants support this 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
Accepts the same command and commandFor props as Button, wiring it to a dialog or popover by ID through the Invoker Commands API. The site header uses this with a transparent ButtonIcon that opens MobileNavigation.
<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' }, ]}/>