A11y: A label that describes the button
ChatGPT UI Icon Button - Horizon AI Template
IconButton composes the Button
component except that it renders only an icon.
Since IconButton
only renders an icon, you must pass the aria-label
prop, so
screen readers can give meaning to the button.
Import#
import { IconButton } from "@chakra-ui/react"
Usage#
<IconButtonaria-label="Search database"borderRadius="10px"icon={<SearchIcon />}/>
<IconButtonaria-label="Search database"borderRadius="10px"icon={<SearchIcon />}/>
Button Colors#
The IconButton
component accepts most of the props from the Button
component, so we can use colorScheme
prop to change the color of the button.
<IconButtoncolorScheme="brand"aria-label="Search database"borderRadius="10px"icon={<SearchIcon />}/>
<IconButtoncolorScheme="brand"aria-label="Search database"borderRadius="10px"icon={<SearchIcon />}/>
Button Sizes#
Like the Button component
, pass the size
prop to change the size of the
button.
<IconButtoncolorScheme="brand"aria-label="Call Fred"borderRadius="10px"size="lg"icon={<PhoneIcon />}/>
<IconButtoncolorScheme="brand"aria-label="Call Fred"borderRadius="10px"size="lg"icon={<PhoneIcon />}/>
Button Variants#
Like the Button
component, pass the variant
prop to change the style of the
button.
<IconButtonvariant="outline"colorScheme="brand"borderRadius="10px"aria-label="Send email"icon={<EmailIcon />}/>
<IconButtonvariant="outline"colorScheme="brand"borderRadius="10px"aria-label="Send email"icon={<EmailIcon />}/>
With custom icon#
You can also use icons from popular libraries like react-icons and just pass it into the button.
<IconButtonvariant="outline"colorScheme="brand"borderRadius="10px"aria-label="Call Fred"fontSize="20px"icon={<MdPhone />}/>
<IconButtonvariant="outline"colorScheme="brand"borderRadius="10px"aria-label="Call Fred"fontSize="20px"icon={<MdPhone />}/>
Props#
aria-label
required
aria-label
required
string
colorScheme
colorScheme
"brand" | "whiteAlpha" | "blackAlpha" | "gray" | "red" | "orange" | "yellow" | "green" | "teal" | "blue" | "cyan" | "purple" | "pink" | "linkedin" | "facebook" | ... 4 more ...
"gray"
icon
icon
The icon to be used in the button.
React.ReactElement
isActive
isActive
If true
, the button will be styled in its active state.
boolean
isDisabled
isDisabled
If true
, the button will be disabled.
boolean
isLoading
isLoading
If true
, the button will show a spinner.
boolean
isRound
isRound
If true
, the button will be perfectly round. Else, it'll be slightly round
boolean
size
size
"sm" | "md" | "lg" | "xs"
"md"
spinner
spinner
Replace the spinner component when isLoading
is set to true
React.ReactElement
variant
variant
"link" | "outline" | "solid" | "ghost" | "unstyled"
"solid"