📄 radixui/themes/docs/components/icon-button

File: icon-button.md | Updated: 11/15/2025

Source: https://www.radix-ui.com/themes/docs/components/icon-button

Radix Homepage

Made by WorkOS

Radix Homepage

Made by WorkOS

ThemesThemes PrimitivesPrimitives IconsIcons ColorsColors

Documentation Playground Blog

Overview

Getting started Styling Layout Releases Resources

Theme

Overview Color Dark mode Typography Spacing Breakpoints Radius Shadows Cursors

Layout

Box Flex Grid Container Section

Typography

Text Heading Blockquote Code Em Kbd Link Quote Strong

Components

Alert Dialog Aspect Ratio Avatar Badge Button Callout Card Checkbox Checkbox Group Checkbox Cards Context Menu Data List Dialog Dropdown Menu Hover Card Icon Button Inset Popover Progress Radio Radio Group Radio Cards Scroll Area Segmented Control Select Separator Skeleton Slider Spinner Switch Table Tabs Tab Nav Text Area Text Field Tooltip

Utilities

Accessible Icon Portal Reset Slot Theme Visually Hidden

Components

Icon Button

Button designed specifically for usage with a single icon.

View source Report an issue View in Playground

<IconButton>
	<MagnifyingGlassIcon width="18" height="18" />
</IconButton>

API Reference


This component is based on the button element and supports common margin props .

| Prop | Type | Default | | --- | --- | --- | | asChild<br><br>Prop description | boolean | No default value | | size | Responsive<"1" \| "2" \| "3" \| "4"> | "2" | | variant<br><br>Prop description | enum<br><br>See full type | "solid" | | color<br><br>Prop description | enum<br><br>See full type | No default value | | highContrast<br><br>Prop description | boolean | No default value | | radius<br><br>Prop description | "none" \| "small" \| "medium" \| "large" \| "full" | No default value | | loading | boolean | false |

Examples


Size

Use the size prop to control the size of the button.

<Flex align="center" gap="3">
	<IconButton size="1" variant="soft">
		<MagnifyingGlassIcon width="15" height="15" />
	</IconButton>

	<IconButton size="2" variant="soft">
		<MagnifyingGlassIcon width="18" height="18" />
	</IconButton>

	<IconButton size="3" variant="soft">
		<MagnifyingGlassIcon width="22" height="22" />
	</IconButton>
</Flex>

Variant

Use the variant prop to control the visual style of the button.

<Flex gap="3">
	<IconButton variant="classic">
		<MagnifyingGlassIcon width="18" height="18" />
	</IconButton>
	<IconButton variant="solid">
		<MagnifyingGlassIcon width="18" height="18" />
	</IconButton>
	<IconButton variant="soft">
		<MagnifyingGlassIcon width="18" height="18" />
	</IconButton>
	<IconButton variant="surface">
		<MagnifyingGlassIcon width="18" height="18" />
	</IconButton>
	<IconButton variant="outline">
		<MagnifyingGlassIcon width="18" height="18" />
	</IconButton>
</Flex>

Ghost

Use the ghost variant to display a button without chrome. Ghost buttons behave like text in layout, as they use a negative margin to optically align themselves against their siblings while maintaining the padding in active and hover states.

<IconButton variant="ghost">
	<MagnifyingGlassIcon width="18" height="18" />
</IconButton>

Color

Use the color prop to assign a specific color .

<Flex gap="3">
	<IconButton color="crimson" variant="soft">
		<MagnifyingGlassIcon width="18" height="18" />
	</IconButton>
	<IconButton color="indigo" variant="soft">
		<MagnifyingGlassIcon width="18" height="18" />
	</IconButton>
	<IconButton color="grass" variant="soft">
		<MagnifyingGlassIcon width="18" height="18" />
	</IconButton>
	<IconButton color="orange" variant="soft">
		<MagnifyingGlassIcon width="18" height="18" />
	</IconButton>
</Flex>

High-contrast

Use the highContrast prop to increase color contrast with the background.

<Flex direction="column" gap="3">
	<Flex gap="3">
		<IconButton color="gray" variant="classic">
			<MagnifyingGlassIcon width="18" height="18" />
		</IconButton>
		<IconButton color="gray" variant="solid">
			<MagnifyingGlassIcon width="18" height="18" />
		</IconButton>
		<IconButton color="gray" variant="soft">
			<MagnifyingGlassIcon width="18" height="18" />
		</IconButton>
		<IconButton color="gray" variant="surface">
			<MagnifyingGlassIcon width="18" height="18" />
		</IconButton>
		<IconButton color="gray" variant="outline">
			<MagnifyingGlassIcon width="18" height="18" />
		</IconButton>
	</Flex>
	<Flex gap="3">
		<IconButton color="gray" variant="classic" highContrast>
			<MagnifyingGlassIcon width="18" height="18" />
		</IconButton>
		<IconButton color="gray" variant="solid" highContrast>
			<MagnifyingGlassIcon width="18" height="18" />
		</IconButton>
		<IconButton color="gray" variant="soft" highContrast>
			<MagnifyingGlassIcon width="18" height="18" />
		</IconButton>
		<IconButton color="gray" variant="surface" highContrast>
			<MagnifyingGlassIcon width="18" height="18" />
		</IconButton>
		<IconButton color="gray" variant="outline" highContrast>
			<MagnifyingGlassIcon width="18" height="18" />
		</IconButton>
	</Flex>
</Flex>

Radius

Use the radius prop to assign a specific radius value.

<Flex gap="3">
	<IconButton radius="none" variant="soft">
		<MagnifyingGlassIcon width="18" height="18" />
	</IconButton>
	<IconButton radius="large" variant="soft">
		<MagnifyingGlassIcon width="18" height="18" />
	</IconButton>
	<IconButton radius="full" variant="soft">
		<MagnifyingGlassIcon width="18" height="18" />
	</IconButton>
</Flex>

Loading

Use the loading prop to display a loading spinner in place of button content. The button will be disabled while loading.

<Flex gap="3">
	<IconButton loading variant="classic">
		<MagnifyingGlassIcon width="18" height="18" />
	</IconButton>
	<IconButton loading variant="solid">
		<MagnifyingGlassIcon width="18" height="18" />
	</IconButton>
	<IconButton loading variant="soft">
		<MagnifyingGlassIcon width="18" height="18" />
	</IconButton>
	<IconButton loading variant="surface">
		<MagnifyingGlassIcon width="18" height="18" />
	</IconButton>
	<IconButton loading variant="outline">
		<MagnifyingGlassIcon width="18" height="18" />
	</IconButton>
</Flex>

PreviousHover Card

NextInset

Edit this page on GitHub.