Button

ユーザーがアクションを実行するための操作要素。フォーム送信・削除・ナビゲーションなど、画面内で「次に何をすべきか」を明示するときに使う。

インストール

npx shoji add button

プレビュー

Variants

Primary
Outline
Secondary
Ghost
Destructive
Link

Sizes

sm · 36px
md · 44px
lg · 56px

States

パターン

Loading

非同期処理中に spinner を表示して操作をロックする。SaaS のフォーム送信・API 呼び出しで必須のパターン。

button
asyncUX

クリックして loading 状態を体験できます

Icon Only

ラベルなしのアイコンボタン。aria-label と Tooltip をセットで使う正方形ボタン。ツールバー・アクションカラムで頻出。

button
icontoolbar

With Icon

テキストラベルの前後にアイコンを配置するパターン。「→」「↗」など方向を示すとき・leading icon で文脈を補完するとき。

button
iconCTA

使い方

こんなときに使う

  • フォームの送信・確定・保存など、主要なアクションを起こすとき(Primary)
  • キャンセル・戻るなど、主アクションに対する補助操作(Outline)
  • フィルターやソートなど、画面の状態を変える操作(Secondary)
  • 削除・退会など、取り消しできない危険な操作(Destructive)
  • テキストリンクとして機能させたいとき(Link)

使わないほうがいい場面

  • 装飾目的のみで使う(見た目がボタンでも操作がない要素は div か span で)
  • 同一スタイルのボタンを横に3つ以上並べる(どれが主アクションか判断できなくなる)
  • ラベルに「OK」「はい」など動詞のない単語を使う

JP 最適化のポイント

  • デフォルト高さを h-11(44px)に設定WCAG 2.5.5 とデジタル庁ガイドラインのタッチターゲット最小値を標準で満たす
  • フォントサイズを text-base(16px)に固定日本語は字形が複雑なため、14px 以下では視認性が低下しやすい
  • ラベルは「動詞 + 目的語」形式を推奨(例:保存する・削除する)— 「保存」より「保存する」のほうが操作の意図が伝わりやすい