The legacy icon-xs / icon-sm / icon-md / icon-lg size literals are still accepted for backwards compatibility (marked @deprecated in TypeScript) but new code should use the plain xs / sm / md / lg names above.
Pass href to render the icon button as a routed anchor. Roadie picks the right element + safety attributes based on the href shape: internal routes go through your configured RoadieLinkProvider; external (https://…) auto-render with target='_blank' rel='noopener noreferrer'; protocol hrefs (mailto: / tel: / sms:) render plain anchors.
<divclassName='flex flex-row flex-wrap items-center gap-3'>{/* Internal — routes through RoadieLinkProvider */}<IconButtonaria-label='View cart'href='/cart'emphasis='strong'intent='accent'><ShoppingCartweight='bold'/></IconButton>{/* External — auto target='_blank' rel='noopener noreferrer' */}<IconButtonaria-label='Open Oztix in a new tab'href='https://oztix.com.au'emphasis='normal'><ArrowSquareOutweight='bold'/></IconButton>{/* Protocol — plain <a>, no target/rel */}<IconButtonaria-label='Email support'href='mailto:hello@oztix.com.au'emphasis='subtle'><Envelopeweight='bold'/></IconButton>{/* Protocol — plain <a> */}<IconButtonaria-label='Call support'href='tel:+61400000000'emphasis='subtle'><Phoneweight='bold'/></IconButton></div>
Hover each button — the browser status bar shows the resolved href exactly as Roadie rendered it (note the mailto: / tel: URLs vs the routed paths). See Linking for the full reference, including external / target / rel overrides.
Escape hatch
For typed access to anchor-only DOM props (e.g. download on a file link) or full element control, use Base UI's render prop. Passing both href and render triggers a one-shot dev warning — render wins.
Always provide an aria-label to describe the action since there is no visible text.
For icon links that navigate, prefer <IconButton href={…}> and wire RoadieLinkProvider at the app root. The legacy LinkIconButton component is @deprecated and will be removed in v3.0.0.
Pass a URL to render the button as a routed anchor instead of a
`<button>`. Internal hrefs route through the configured
`RoadieLinkProvider` (or fall back to plain `<a>`); external hrefs
(`http(s)://`, `//…`) render as `<a target='_blank' rel='noopener noreferrer'>`;
`mailto:` / `tel:` / `sms:` render as plain `<a>`. Pair with
`external`, `target`, or `rel` to override the defaults.
externalboolean
Force external-link treatment regardless of `href` shape. Useful for
first-party URLs that should still open in a new tab, or for an
`https://` URL that should route internally through the provider.
targetstring
Override the auto `target='_blank'` default on external hrefs.
Icon-button sizing. Use `'xs' | 'sm' | 'md' | 'lg'` (plain) — the
`'icon-*'` aliases are accepted for backwards compatibility but
discouraged.
Defaults to md.
Inherited from HTMLAttributes
relstring
Override the auto `rel='noopener noreferrer'` default on external hrefs.
Inherited from ButtonProps
focusableWhenDisabledboolean
Whether the button should be focusable when disabled.
Defaults to false.
Inherited from NativeButtonProps
nativeButtonboolean
Whether the component renders a native `<button>` element when replacing it
via the `render` prop.
Set to `false` if the rendered element is not a button (e.g. `<div>`).