Button
Buttonは、フォームの送信、モーダルの開閉など、ユーザーが操作できるインタラクティブなコンポーネントです。
<Button>Button</Button>
使い方
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>
バリアントを変更する
<Wrap gap="md">
<For each={["solid", "subtle", "surface", "outline", "ghost"]}>
{(variant, index) => (
<Button variant={variant} key={index}>
{toTitleCase(variant)}
</Button>
)}
</For>
</Wrap>
サイズを変更する
<Wrap gap="md">
<For each={["xs", "sm", "md", "lg", "xl"]}>
{(size, index) => (
<Button size={size} key={index} minW="24">
{toTitleCase(size)}
</Button>
)}
</For>
</Wrap>
カラースキームを変更する
<Wrap gap="md">
<For each={["success", "warning"]}>
{(colorScheme, index) => (
<Button colorScheme={colorScheme} key={index}>
{toTitleCase(colorScheme)}
</Button>
)}
</For>
</Wrap>
形を変える
角丸にする場合は、fullRoundedをtrueにします。
<Wrap gap="md">
<For each={["solid", "subtle", "surface", "outline", "ghost"]}>
{(variant, index) => (
<Button variant={variant} key={index} fullRounded>
Button
</Button>
)}
</For>
</Wrap>
無効にする
無効にする場合は、disabledをtrueにします。
<Wrap gap="md">
<For each={["solid", "subtle", "surface", "outline", "ghost"]}>
{(variant, index) => (
<Button variant={variant} key={index} disabled>
Button
</Button>
)}
</For>
</Wrap>
アイコンを追加する
アイコンを追加する場合は、startIconまたはendIconにReactNodeを設定します。
<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>
ローディングアニメーションを使う
ローディングアニメーションを使う場合は、loadingをtrueにします。また、ローディング中にテキストを変更する場合は、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のローディングは、内部でLoadingを使用しています。グループ化する
<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
アクセシビリティ
Buttonは、アクセシビリティに関してWAI-ARIA - Button Patternに従います。
キーボード操作
| キー | 説明 | 状態 |
|---|---|---|
Space, Enter | フォーカスしているボタンをアクティブにします。 | - |
ARIAロールと属性
| コンポーネント | ロールと属性 | 使い方 |
|---|---|---|
Button | role="button" | ボタンであることを示します。 |