Button The Button component is used to trigger an action or event, such as submitting a
form, opening a dialog, canceling an action, or performing a delete operation.
import { Button , ButtonGroup } from "@chakra-ui/core"
Button: The button component with support for custom icons, spinners, etc.ButtonGroup: Used to group buttons whose actions are related, with an
option to flush them together.Button
< Button colorScheme = " blue " > Button </ Button >
copy Editable Example
Use the size
prop to change the size of the button. You can set the value to
xs
, sm
, md
, or lg
.
< Stack spacing = { 4 } direction = " row " align = " center " >
< Button colorScheme = " teal " size = " xs " >
Button
</ Button >
< Button colorScheme = " teal " size = " sm " >
Button
</ Button >
< Button colorScheme = " teal " size = " md " >
Button
</ Button >
< Button colorScheme = " teal " size = " lg " >
Button
</ Button >
</ Stack >
copy Editable Example
Use the variant
prop to change the visual style of the Button. You can set the
value to solid
, ghost
, outline
, or link
.
< Stack direction = " row " spacing = { 4 } align = " center " >
< Button colorScheme = " teal " variant = " solid " >
Button
</ Button >
< Button colorScheme = " teal " variant = " outline " >
Button
</ Button >
< Button colorScheme = " teal " variant = " ghost " >
Button
</ Button >
< Button colorScheme = " teal " variant = " link " >
Button
</ Button >
</ Stack >
copy Editable Example
You can add left and right icons to the Button component using the leftIcon
and RightIcon
props respectively.
Note: The leftIcon
and rightIcon
prop values should be react elements NOT
strings.
< Stack direction = " row " spacing = { 4 } >
< Button leftIcon = { < EmailIcon /> } colorScheme = " teal " variant = " solid " >
Email
</ Button >
< Button rightIcon = { < ArrowForwardIcon /> } colorScheme = " teal " variant = " outline " >
Call us
</ Button >
</ Stack >
copy Editable Example
You can also use icons from popular libraries like
react-icons and pass it into the
button.
< Stack direction = " row " spacing = { 4 } >
< Button leftIcon = { < MdBuild /> } colorScheme = " pink " variant = " solid " >
Settings
</ Button >
< Button rightIcon = { < MdCall /> } colorScheme = " blue " variant = " outline " >
Call us
</ Button >
</ Stack >
copy Editable Example
Pass the isLoading
prop to show its loading state. By default, the button will
show a spinner and leave the button's width unchanged.
You can also pass the loadingText
prop to show a spinner and the loading text.
< Stack direction = " row " spacing = { 4 } >
< Button isLoading colorScheme = " teal " variant = " solid " >
Email
</ Button >
< Button
isLoading
loadingText = " Submitting "
colorScheme = " teal "
variant = " outline "
>
Submit
</ Button >
</ Stack >
copy Editable Example
You can also change the spinner itself to use custom loaders as per your design
requirements. Pass the spinner
prop and set it to a custom react element.
< Button
isLoading
colorScheme = " blue "
spinner = { < BeatLoader size = { 8 } color = " white " /> }
>
Click me
</ Button >
copy Editable Example
We've included the colors for common social media platforms, and you can simply
use their buttons via the colorScheme
prop.
< HStack >
< Button colorScheme = " facebook " leftIcon = { < FaFacebook /> } >
Facebook
</ Button >
< Button colorScheme = " twitter " leftIcon = { < FaTwitter /> } >
Twitter
</ Button >
</ HStack >
copy Editable Example
The Facebook and Twitter icons in the above example are available from
react-icons
as FaFacebook
and
FaTwitter
, found in the react-icons/fa
import.
You can use the Stack
or ButtonGroup
component to group buttons. When you
use the ButtonGroup
component, it allows you:
Set the size
and variant
of all buttons within it. Add spacing between the buttons Flush the buttons together by removing the border radius of the its children
as needed. < ButtonGroup variant = " outline " spacing = " 6 " >
< Button colorScheme = " blue " > Save </ Button >
< Button > Cancel </ Button >
</ ButtonGroup >
copy Editable Example
To flush the buttons, pass the isAttached
prop
< ButtonGroup size = " sm " isAttached variant = " outline " >
< Button mr = " -px " > Save </ Button >
< IconButton aria-label = " Add to friends " icon = { < AddIcon /> } />
</ ButtonGroup >
copy Editable Example
Button has role
of button
. When Button has focus, Space or Enter activates it. All props you pass (variant
, colorScheme
, etc.) are converted to style
props. This means you can override any style of the Button via props.
Button
< Button
size = " md "
height = " 48px "
width = " 200px "
border = " 2px "
borderColor = " green.500 "
>
Button
</ Button >
copy Editable Example
In the event that you need to make your own custom button, you can leverage the
Box
component. It provides the hover
, focus
, active
and disabled
style
props to style the button.
Join Group
< Box
as = " button "
height = " 24px "
lineHeight = " 1.2 "
transition = " all 0.2s cubic-bezier(.08,.52,.52,1) "
border = " 1px "
px = " 8px "
borderRadius = " 2px "
fontSize = " 14px "
fontWeight = " semibold "
bg = " #f5f6f7 "
borderColor = " #ccd0d5 "
color = " #4b4f56 "
_hover = { { bg : "#ebedf0" } }
_active = { {
bg : "#dddfe2" ,
transform : "scale(0.98)" ,
borderColor : "#bec3c9" ,
} }
_focus = { {
boxShadow :
"0 0 1px 2px rgba(88, 144, 255, .75), 0 1px 1px rgba(0, 0, 0, .15)" ,
} }
>
Join Group
</ Box >
copy Editable Example
Button composes the Box
component so you can pass all props for Box
. These
are props specific to the Button component.
Name Type Default Description aria-label
string
An accessible label for the button, useful when you render only an icon in the button colorScheme
string
blue
The color scheme of the button—one of the colors from theme.colors
. leftIcon
ReactElement
The left icon element to use in the button rightIcon
ReactElement
The right icon element to use in the button spinner
ReactElement
The spinner element to use when isLoading
is set to true
variant
outline
, ghost
, unstyled
, link
, solid
solid
The variant of the button style to use. isDisabled
boolean
If true
, the button will be disabled. isLoading
boolean
If true
, the button will show a spinner. loadingText
string
The label to show in the button when isLoading
is true. If no text is passed, it only shows the spinner size
sm
, md
, lg
md
The size of the button.
Previous
Layout
Next
Checkbox