トグルボタングループ

component

押すと「選ばれた状態」が残るボタンを並べ、その場で表示や設定を切り替えます。1 つ選ぶと他が外れる単一選択(一覧 / グリッドなど表示形式の切り替え)と、それぞれ独立に ON / OFF する複数選択(太字 / 斜体などの書式)の 2 つのモードがあります。中身は ボタン と アイコンボタン の neutral ghost を薄い帯の中に並べるセグメント型で、選ばれたものだけが白いセグメントになります。選択状態は各ボタンの aria-pressed で示します。

単一選択

同じ内容の見え方を 1 つ選んで切り替える。data-selection="single" を目印に、押したボタンだけを aria-pressed="true" にする(選択中を押し直しても外さない)

<div class="toggle-btn-group" role="group" aria-label="表示形式" data-selection="single">
  <button type="button" class="btn btn-md btn-neutral btn-ghost" aria-pressed="true">一覧</button>
  <button type="button" class="btn btn-md btn-neutral btn-ghost" aria-pressed="false">グリッド</button>
  <button type="button" class="btn btn-md btn-neutral btn-ghost" aria-pressed="false">ボード</button>
</div>

複数選択

書式や表示オプションをそれぞれ独立に ON / OFF する。data-selection="multiple" で、押したボタンの aria-pressed を反転する(0 個選択も可)

<div class="toggle-btn-group" role="group" aria-label="文字の書式" data-selection="multiple">
  <button type="button" class="icon-btn icon-btn-md icon-btn-neutral icon-btn-ghost" aria-pressed="true" aria-label="太字">
    <svg class="icon icon-lg" aria-hidden="true"><use href="./icons.svg#lucide-bold"></use></svg>
  </button>
  …
</div>

アイコンだけの単一選択

狭い場所の表示切り替えは icon-btn を並べ、それぞれに選択肢名の aria-label を付ける。見える名前も要るならボタンを ツールチップ で包む

1 行に 1 件ずつ表示 カードを格子状に表示 日付ごとに表示
<div class="toggle-btn-group" role="group" aria-label="表示形式" data-selection="single">
  <span class="tooltip">
    <button type="button" class="icon-btn icon-btn-md icon-btn-neutral icon-btn-ghost" aria-pressed="true"
            aria-label="一覧" aria-describedby="tip-list">
      <svg class="icon icon-lg" aria-hidden="true"><use href="./icons.svg#lucide-list"></use></svg>
    </button>
    <span class="tooltip-content" id="tip-list" role="tooltip">1 行に 1 件ずつ表示</span>
  </span>
  …
</div>

サイズ

中のボタンのサイズ(btn-{sm,md,lg} / icon-btn-{sm,md,lg})がそのままグループの高さになる。1 つのグループの中でサイズを混ぜない

sm
md
lg

縦並び

toggle-btn-group-vertical を足すと縦に積み、ボタン幅を最も長いものにそろえる。サイドパネルの表示オプションや縦のツールバーに使う

単一選択

複数選択

<div class="toggle-btn-group toggle-btn-group-vertical" role="group"
     aria-label="表示形式" data-selection="single">
  <button type="button" class="btn btn-md btn-neutral btn-ghost" aria-pressed="false">一覧</button>
  …
</div>

状態

選択は白いセグメント(枠 stroke-high)と文字の濃さ(fg/low → fg/high)の 2 つで示す。影は付けない。hover / focus は is-hover-preview / is-focus-preview の見本

非選択 選択中 enable
hover
focus
disabled

機能

このコンポーネントの用途

選ばれた状態を持つボタンを並べ、その場で表示や設定を切り替える。
単一選択 = 同じ内容の見え方の切替(一覧 / グリッド / ボード、並び順 等)。
複数選択 = 独立した書式・表示オプションの ON/OFF(太字 / 斜体、補助線の表示 等)。
複数選択は filter-chip と仕組み(aria-pressed の独立トグル)が同じ。見分け方は
「押して一覧の件数(絞り込みの結果)が変わるか」: 変わるなら filter-chip、変わらず見た目・書式・
重ねて表示する情報(地図の駅表示など)だけが変わるなら toggle-btn-group。
表示する中身(パネル)そのものを切り替えるなら tab、一覧の絞り込みは filter-chip(複数)/ tab(件数付きの単一)、
フォームの入力値は radio / checkbox、単独の設定の ON/OFF は switch、選択状態を持たない操作の並びは btn-group。