Checkbox
fandhe-frontend-wireframe-ui のチェックボックス風プレースホルダーです。正方形のボックス + 任意のラベルを持つ非インタラクティブな部品です。API は checkbox(label, size, active, disabled) の 4 引数(詳細は下の引数表を参照)で、props 構造体は導入していません。
視覚的な参照元は blocks.pm の Checkbox 部品ですが、ライセンス上の理由によりスクリーンショットは掲載していません(詳細は docs/design/wireframe-ui-architecture.md §2)。参照したい場合は外部リンク先を直接確認してください。
<input type="checkbox"> を出力しない表示専用プレースホルダーです。実際に操作可能なチェックボックスが必要な場合は Checkbox(Themes) や Checkbox(Primitives) を検討してください。
Demo
既定(未チェック・ラベルあり)
利用規約に同意する
チェック済み
利用規約に同意する
ラベルなし
Disabled
選択できません
Disabled + チェック済み
選択できません
Sm
小サイズ
Lg
大サイズ
引数表
| 引数 | 型 | 既定値 | 説明 |
|---|---|---|---|
| label | Option<&str> | None | 省略可能なラベル文言。None のときラベルのパート要素自体を出力しない。 |
| size | Size | Size::Md | サイズ段階(xs〜xl)。ボックス寸法・フォントサイズに反映される。 |
| active | Active | Active(false) | チェック済み状態。true のとき data-active="" を付与し、ボックス内へチェックグリフを描画する。 |
| disabled | Disabled | Disabled(false) | true のとき data-disabled="" を付与する(見た目のみ。操作不能を実装するものではない)。 |
原案差分メモ
div/spanルート・非対話制約:docs/design/wireframe-ui-architecture.md§7 に従い、ルートはdivとしrole/aria-checked/tabindex/on*は一切出力しません(チェックグリフが持つaria-hidden="true"は装飾用途の既定属性で対話的 ARIA ではありません)。- ラベル有無はラベルスロットの有無に畳み込む:
docs/design/ wireframe-ui-architecture.md§6 の汎用変換規約に従い、「ラベル有無 + ラベル文言」の 2 軸をlabel: Option<&str>1 引数へ畳み込みます(annotationのdescriptionと同型)。Noneのときはラベルのパート要素自体を出力しません。 - チェック済み状態は共通型
Activeを再利用し、専用Checked型は見送り: 選択済み(チェック済み)という表示状態を表す一般的な UI パターンとして、既に用意済みの共通型Active(data-active)をそのまま使います。docs/design/wireframe-ui-architecture.md§10.1 が現時点の表示状態属性としてdata-active/data-disabledを規定していること、radio/switch 等の並行実装との型衝突を避けることを理由に、専用のChecked/data-checked型の新設は本イシューでは見送りました。trueのときdata-active=""を付与し、ボックス内へチェックグリフを描画します(falseのときはグリフ自体を出力せず、CSS での非表示にはしません)。 Disabledは既存の表示状態軸をそのまま使用: Forms 部品向けに用意済みの共通型Disabledをそのまま使い、trueのときdata-disabled=""を付与します(見た目のみで、操作不能を実装するものではありません)。Primary/Bold/Orientationは付与しません。- スクリーンショット非掲載:
docs/design/reference-screenshots/への blocks.pm 画像取り込みは #2602 で fail-closed に非掲載と確定しています。本ページも画像は置かず、上記の外部リンクのみで代替します。 - 配色はグレースケール反転: チェック済み状態はボックスを
--fw-wire-ink背景・--fw-wire-paper文字色へ反転し、黒塗り二値ではなく--fw-wire-*トークンを使います。