Icon Button

A square, icon-only button for compact toolbars and headers.
Stable
Web
iOS
Android
@advui/core
Source
JSX
<IconButton aria-label="Settings" icon={<SettingsIcon />} />
variant
size

Installation

pnpm
pnpm add @advui/core
npm
npm install @advui/core

Usage

import { IconButton } from '@advui/core'
import { SearchIcon } from '@advui/icons'

<IconButton aria-label="Search" icon={<SearchIcon />} />

Examples

Basic

Variants

Sizes

API reference

IconButton

Accepts every Button prop except label/icon props.
PropTypeDefaultDescription
icon requiredReactElement—The icon to render.
aria-label requiredstring—Accessible name — required because there is no visible label.
variant'default' | 'secondary' | 'outline' | 'ghost' | 'destructive' | 'link''ghost'Same variants as Button.
size'sm' | 'md' | 'lg''md'32, 40 or 48px square.
circularbooleanfalseFully rounded.

Accessibility

  • aria-label is required by the types so every icon button has an accessible name.
  • Wrap in a Tooltip to show the same label visually on hover/focus.
  • Touch targets are extended to 44pt on native via hitSlop.
Keyboard interactions
KeyAction
Enter / SpaceActivates the button.

Platform notes

Web
Renders a native <button>.
iOS
Use size="lg" in navigation bars for comfortable tapping.
Android
Press feedback is the pressed background, or the native ripple with androidRipple (on in material()).
Since v0.1.0Last updated Nov 2, 2026Edit this page on GitHub