FSAI Design System
Components

Icon Button

Compact icon-only action button with built-in tooltip and shared button semantics.

Overview

IconButton is the standard icon-only action button used across the platform.

It is built on the shared Button primitive and commonly appears in:

  • toolbars
  • panel actions
  • inline row actions
  • popover triggers

Basic Usage

<IconButton
  icon="Filter"
  label="Filters"
  onClick={handleOpenFilters}
/>

Tooltip Behavior

When label is provided, IconButton shows that label in a tooltip by default.

That means label is doing two jobs:

  • accessible name via aria-label
  • visible hover tooltip content
<IconButton icon="TrashCan02" label="Delete" />

Set tooltip={false} when the accessible label should still exist but the tooltip should not render.

Custom Children

Use children instead of icon when the content is not a named icon.

<IconButton label="Close">
  <CrossSmall className="h-4 w-4" />
</IconButton>

Props

PropTypeDefaultDescription
iconIconNameNamed icon content. Mutually exclusive with children.
childrenReactNodeCustom content. Mutually exclusive with icon.
labelstringAccessible label and default tooltip content.
tooltipbooleantrueShows tooltip when label exists.
sizeButtonSizeButton size.
variantButtonVariant'ghost'Shared button variant.
isLoadingbooleanDisables interaction while loading.
disabledbooleanDisables interaction.
isActivebooleanAdds active-state styling.
stopPropagationbooleantrueStops click bubbling by default.
iconClassNamestringAdditional icon classes.
onClick(event: MouseEvent) => voidClick handler.

Important Conventions

  • Always provide a meaningful label for icon-only controls.
  • stopPropagation defaults to true, which matters inside clickable rows, cards, and table items.
  • For ordinary text buttons with icons, use Button instead of IconButton.

Brand Dashboard And Shared Usage

PatternPathNotes
DataTable toolbar actionfsai/packages/shared-ui/src/components/DataTable/toolbar/Popover.tsxCanonical icon-button popover trigger.
Rich text toolbar actionfsai/apps/brand-dashboard/src/components/RichTextEditor/RichTextEditor.tsxDense editor actions and popover anchors.
Chat and dashboard actionsfsai/apps/brand-dashboard/src/pages/Home/ChatOverview/ChatOverview.components.tsxCompact inline action usage in dense UI.

Guidelines

  • Do use IconButton for compact icon-only actions
  • Do provide label so the control is accessible and tooltip-ready
  • Do disable tooltip only when the UI already explains the action clearly
  • Don't use IconButton when a regular Button with text would be clearer

On this page