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-labelstringAn accessible label for the button, useful when you render only an icon in the button colorSchemestringblueThe color scheme of the button—one of the colors from theme.colors. leftIconReactElementThe left icon element to use in the button rightIconReactElementThe right icon element to use in the button spinnerReactElementThe spinner element to use when isLoading is set to true variantoutline, ghost, unstyled , link , solidsolidThe variant of the button style to use. isDisabledbooleanIf true, the button will be disabled. isLoadingbooleanIf true, the button will show a spinner. loadingTextstringThe label to show in the button when isLoading is true. If no text is passed, it only shows the spinner sizesm, md, lgmdThe size of the button.
Previous
Layout
Next
Checkbox