Button
汎用ボタンコンポーネント。クリックアクションのトリガーに使用します。
インポート
個別サブパス(バンドルサイズを抑えたい場合):
基本的な使い方
Loading...
バリアント
Loading...
サイズ
Loading...
無効状態
Loading...
アイコン付きボタン
Loading...
正方形ボタン(アイコンのみ)
shape="square"を使用すると、アイコンのみの正方形ボタンになります。
Loading...
Iconは内部でaria-hiddenになるため、テキストラベルの無いアイコンのみのボタンには必ずaria-labelを付与してください(スクリーンリーダーに操作内容が伝わらなくなるため)。
円形ボタン(アイコンのみ)
shape="circle"を使用すると、アイコンのみの円形ボタンになります。チャット送信ボタンやFABなどに適しています。
Loading...
ローディング状態
loading propを使うとスピナー表示・disabled・aria-busyが自動で付与されます。手動でIcon name="Loader2"を組み立てる必要はありません。
Loading...
asChild使用時(<Button asChild loading><a>...</a></Button>)は、Radix Slotが単一の子要素しか受け付けられないためスピナーは描画されません。また<a>はHTMLのdisabled属性に対応しないため、ネイティブのdisabledは効きません。代わりにaria-disabled="true" + tabIndex={-1} + pointer-events-noneクラスが付与され、クリック・キーボード操作の両方が実質的に無効化されます(disabled単体をasChildで使った場合も同様)。aria-busyは引き続き適用されます。
実際の使用例
フォームの送信ボタン
Loading...
削除確認
Loading...
ツールバー
Loading...
asChildでリンクとして使用
Props
| Prop | Type | Default | Description |
|---|---|---|---|
variant | 'base' | 'primary' | 'destructive' | 'success' | 'warning' | 'outline' | 'secondary' | 'ghost' | 'link' | 'base' | ボタンのスタイルバリアント |
size | 'xs' | 'sm' | 'default' | 'lg' | 'xl' | 'default' | ボタンのサイズ |
shape | 'default' | 'square' | 'circle' | 'default' | ボタンの形状。square: 正方形、circle: 円形(アイコンのみの場合) |
asChild | boolean | false | 子要素をボタンとしてレンダリング(Radix Slot使用) |
disabled | boolean | false | 無効状態 |
loading | boolean | false | ローディング状態。trueでスピナー表示+自動的に無効化+aria-busy付与。asChild使用時はスピナー描画のみ行わない(disabled/aria-busyは適用される) |