IconButton

A button component designed specifically for icons with various sizes and states.

Usage

1import { IconButton } from "@raystack/apsara";

IconButton Props

Prop

Type

Examples

Size

The IconButton component offers different size options. You can customize the size using the size prop. The available size options are:

1<Flex gap="large" align="center">
2 <IconButton size={1}>
3 <Info size={16} />
4 </IconButton>
5 <IconButton size={2}>
6 <Info size={16} />
7 </IconButton>
8 <IconButton size={3}>
9 <Info size={16} />
10 </IconButton>
11 <IconButton size={4}>
12 <Info size={16} />
13 </IconButton>
14</Flex>

State

The IconButton component has different states: default, hover, and disabled.

1<Flex gap="large">
2 <IconButton size={4}>
3 <Info size={16} />
4 </IconButton>
5 <IconButton size={4} disabled>
6 <Info size={16} />
7 </IconButton>
8</Flex>

Styling

The IconButton uses CSS variables for consistent styling across themes:

  • Background color uses --rs-color-background-base-primary
  • Border color uses --rs-color-border-base-primary
  • Text color uses --rs-color-foreground-base-primary
  • Hover state uses --rs-color-background-base-primary-hover
  • Disabled state uses reduced opacity and different background/border colors

Accessibility

The IconButton component inherits all the accessibility features of the native HTML button element:

  • Keyboard navigation support
  • Proper disabled state handling
  • Can be focused and activated using keyboard
  • Supports all standard button ARIA attributes

For better accessibility, make sure to:

  • Provide meaningful aria-label when the button's purpose isn't clear from the icon alone
  • Consider adding tooltips for icon-only buttons