Button
Button
is an interactive component that allows users to perform actions such as submitting forms and toggling modals.
<Button>Button</Button>
Usage
import { Button, ButtonGroup } from "@yamada-ui/react"
import { Button, ButtonGroup } from "@/components/ui"
import { Button, ButtonGroup } from "@workspaces/ui"
<Button />
<ButtonGroup.Root>
<ButtonGroup.Item />
</ButtonGroup.Root>
Change Variant
<Wrap gap="md">
<For each={["solid", "subtle", "surface", "outline", "ghost"]}>
{(variant, index) => (
<Button variant={variant} key={index}>
{toTitleCase(variant)}
</Button>
)}
</For>
</Wrap>
Change Size
<Wrap gap="md">
<For each={["xs", "sm", "md", "lg", "xl"]}>
{(size, index) => (
<Button size={size} key={index} minW="24">
{toTitleCase(size)}
</Button>
)}
</For>
</Wrap>
Change Color Scheme
<Wrap gap="md">
<For each={["success", "warning"]}>
{(colorScheme, index) => (
<Button colorScheme={colorScheme} key={index}>
{toTitleCase(colorScheme)}
</Button>
)}
</For>
</Wrap>
Change Shape
To rounded corners, set fullRounded
to true
.
<Wrap gap="md">
<For each={["solid", "subtle", "surface", "outline", "ghost"]}>
{(variant, index) => (
<Button variant={variant} key={index} fullRounded>
Button
</Button>
)}
</For>
</Wrap>
Disable
To disable, set disabled
to true
.
<Wrap gap="md">
<For each={["solid", "subtle", "surface", "outline", "ghost"]}>
{(variant, index) => (
<Button variant={variant} key={index} disabled>
Button
</Button>
)}
</For>
</Wrap>
Add Icon
To add an icon, set a ReactNode
to startIcon
or endIcon
.
<Wrap gap="md">
<Button variant="solid" startIcon={<PlusIcon />}>
Button
</Button>
<Button variant="subtle" endIcon={<ArrowRightIcon />}>
Button
</Button>
<Button variant="surface" startIcon={<MailIcon />}>
Button
</Button>
<Button variant="outline" endIcon={<CheckIcon />}>
Button
</Button>
<Button variant="ghost" startIcon={<XIcon />}>
Button
</Button>
</Wrap>
Use Loading Animation
To use a loading animation, set loading
to true
. If you want to change the text during loading, use loadingMessage
.
<Wrap gap="md">
<Button loading>Button</Button>
<Button variant="subtle" loading loadingIcon="dots">
Button
</Button>
<Button variant="surface" loading loadingIcon={<Loading.Puff />}>
Button
</Button>
<Button variant="outline" loading loadingMessage="Loading...">
Button
</Button>
<Button
variant="ghost"
loading
loadingIcon="grid"
loadingMessage="Loading..."
loadingPlacement="end"
>
Button
</Button>
</Wrap>
Button
internally uses Loading.Grouping
<VStack>
<ButtonGroup.Root attached variant="outline">
<ButtonGroup.Item>Button</ButtonGroup.Item>
<ButtonGroup.IconItem icon={<PlusIcon />} />
</ButtonGroup.Root>
<Wrap gap="md">
<ButtonGroup.Root>
<ButtonGroup.Item>Button</ButtonGroup.Item>
<ButtonGroup.Item>Button</ButtonGroup.Item>
<ButtonGroup.Item>Button</ButtonGroup.Item>
</ButtonGroup.Root>
<ButtonGroup.Root attached disabled variant="outline">
<ButtonGroup.Item>Button</ButtonGroup.Item>
<ButtonGroup.Item>Button</ButtonGroup.Item>
<ButtonGroup.Item>Button</ButtonGroup.Item>
</ButtonGroup.Root>
</Wrap>
<Wrap gap="md">
<ButtonGroup.Root orientation="vertical">
<ButtonGroup.Item>Button</ButtonGroup.Item>
<ButtonGroup.Item>Button</ButtonGroup.Item>
<ButtonGroup.Item>Button</ButtonGroup.Item>
</ButtonGroup.Root>
<ButtonGroup.Root orientation="vertical" attached variant="outline">
<ButtonGroup.Item>Button</ButtonGroup.Item>
<ButtonGroup.Item>Button</ButtonGroup.Item>
<ButtonGroup.Item>Button</ButtonGroup.Item>
</ButtonGroup.Root>
</Wrap>
</VStack>
Props
Accessibility
Currently, this section is being updated due to the migration of v2.