Default props automatically passed to the component; overwriteable
Icon
Chakra provides multiple ways to use icons in your project:
🚨 Avoid passing
onClick
handlers to icon components. If you need a clickable icon, use the IconButton instead.
Using Chakra UI icons#
Chakra provides a set of commonly used interface icons you can use in your
project. To use these icons, install @chakra-ui/icons
, import the icons you need
and style them.
Installation#
npm i @chakra-ui/icons# oryarn add @chakra-ui/icons
Usage#
import { PhoneIcon, AddIcon, WarningIcon } from '@chakra-ui/icons'// The default icon size is 1em (16px)<PhoneIcon />// Use the `boxSize` prop to change the icon size<AddIcon w={6} h={6} />// Use the `color` prop to change the icon color<WarningIcon w={8} h={8} color="red.500" />
All icons#
Below is a list of all of the icons in the library, along with the corresponding component names:
Using a third-party icon library#
To use third-party icon libraries like
react-icons
, here are the steps:
- Import the
Icon
component from@chakra-ui/react
- Pass the desired third party icon into the
as
prop
// 1. Importimport { Icon } from "@chakra-ui/react"import { MdSettings } from "react-icons/md"// 2. Use the `as` propfunction Example() {return <Icon as={MdSettings} />}
Some examples#
<HStack>{/* The default icon size is 1em (16px) */}<Icon as={MdSettings} />{/* Use the `boxSize` prop to change the icon size */}<Icon as={MdReceipt} w={6} h={6} />{/* Use the `color` prop to change the icon color */}<Icon as={MdGroupWork} w={8} h={8} color="red.500" /></HStack>
Creating your custom icons#
Chakra provides two methods for creating your custom icons:
- Using the Icon component
- Using the createIcon function
They can be imported from @chakra-ui/react
:
import { Icon, createIcon } from "@chakra-ui/react"
Both Icon
and createIcon
enable you to style the icon using
style props.
Using the Icon
component#
The Icon
component renders as an svg
element.
<Icon viewBox="0 0 200 200" color="red.500"><pathfill="currentColor"d="M 100, 100 m -75, 0 a 75,75 0 1,0 150,0 a 75,75 0 1,0 -150,0"/></Icon>
This enables you to define your own custom icon components:
const CircleIcon = (props) => (<Icon viewBox="0 0 200 200" {...props}><pathfill="currentColor"d="M 100, 100 m -75, 0 a 75,75 0 1,0 150,0 a 75,75 0 1,0 -150,0"/></Icon>)
And style them with style props:
<HStack>{/* The default icon size is 1em (16px) */}<CircleIcon />{/* Use the `boxSize` prop to change the icon size */}<CircleIcon boxSize={6} />{/* Use the `color` prop to change the icon color */}<CircleIcon boxSize={8} color="red.500" /></HStack>
Using the createIcon
function#
The createIcon
function is a convenience wrapper around the process of
generating icons with Icon
, allowing you to achieve the same functionality
with less effort.
import { createIcon } from "@chakra-ui/icons"// using `path`export const UpDownIcon = createIcon({displayName: "UpDownIcon",viewBox: "0 0 200 200",// path can also be an array of elements, if you have multiple paths, lines, shapes, etc.path: (<pathfill="currentColor"d="M 100, 100 m -75, 0 a 75,75 0 1,0 150,0 a 75,75 0 1,0 -150,0"/>),})// OR using the `d` value of a path (the path definition) directlyexport const UpDownIcon = createIcon({displayName: "UpDownIcon",viewBox: "0 0 200 200",d: "M 100, 100 m -75, 0 a 75,75 0 1,0 150,0 a 75,75 0 1,0 -150,0",})
Tips for generating your own icons#
- Export icons as
svg
from Figma, Sketch, etc. - Use a tool like SvgOmg to reduce the size and minify the markup.
Fallback Icon#
When children
is not provided, the Icon
component renders a fallback icon.
<Icon />
Props#
Icon
props#
Name | Type | Default | Description |
---|---|---|---|
viewBox | string | 0 0 24 24 | The viewBox of the icon. |
boxSize | string | 1em | The size (width and height) of the icon. |
color | string | currentColor | The color of the icon. |
focusable | boolean | false | Denotes that the icon is not an interactive element, and only used for presentation. |
role | presentation , img | presentation | The html role of the icon. |
children | React.ReactNode | The Path or Group of the icon |
createIcon
options#
defaultProps
defaultProps
IconProps
displayName
displayName
The display name useful in the dev tools
string
path
path
The svg
path or group element
React.ReactElement | React.ReactElement[]
viewBox
viewBox
The icon svg
viewBox
string
"0 0 24 24"