Radio
fandhe-frontend-wireframe-ui のラジオボタン風プレースホルダーです。円形コントロール + 任意のラベル + サイズ/選択/無効状態を持つ非インタラクティブな部品です。API は radio(label, size, active, disabled) の 4 引数(詳細は下の引数表を参照)で、props 構造体は導入していません。
視覚的な参照元は blocks.pm の Radio 部品ですが、ライセンス上の理由によりスクリーンショットは掲載していません(詳細は docs/design/wireframe-ui-architecture.md §2)。参照したい場合は外部リンク先を直接確認してください。
「Radio」という名前ですが、<input type="radio"> 要素・role="radio"・選択状態の遷移のいずれも実装しない表示専用プレースホルダーです。実際に操作可能なラジオが必要な場合は Radio Group(Themes) / Radio Group(Primitives) を検討してください。
Demo
既定(未選択・ラベルあり)
選択肢 A
選択済み
選択肢 B
ラベルなし
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ルート・非対話制約:docs/design/wireframe-ui-architecture.md§7 に従い、ルートはdivとしrole/aria-*/tabindex/on*は一切出力しません。- ラベル有無は
Option<&str>へ畳み込む:docs/design/ wireframe-ui-architecture.md§2 の保留(イシュー #2602)に従い、blocks.pm を参照・書き写さず、§6 の汎用変換規約と Forms A 既存部品(button/select)の先例から独立に設計しました。「ラベルあり」「ラベルなし」の区別に専用の bool 引数は導入せず、label: Option<&str>のSome/Noneへ畳み込みます(Noneのときラベルパート要素自体を出力しません)。 - 選択状態は既存の共通型
Activeを再利用する: 専用のSelected/Checked型は新設していません。props.rsは checkbox(イシュー #2625)・switch(イシュー #2627)も同じ共有ファイルとして触るため、選択状態を表す共通型の統一(data-selected等への一本化)はこれらの部品が揃ってから別途判断する対象として本イシューでは意図的にスコープ外としています。trueのときdata-active=""を付与し、内側の黒丸(選択済み表現)を::afterの CSS で描きます。 Disabledは自己定義で追加: Forms 部品として整合させるため、イシューのプロパティ列挙にはないDisabled(docs/design/ wireframe-ui-architecture.md§5 の表示状態軸)を追加しました。- 黒丸は
--fw-wire-inkトークン経由: 黒塗り二値ではなく--fw-wire-*トークンで読みやすさを優先します(他の wireframe-ui 部品と同じ配色方針)。 - スクリーンショット非掲載:
docs/design/reference-screenshots/への blocks.pm 画像取り込みは #2602 で fail-closed に非掲載と確定しています。本ページも画像は置かず、上記の外部リンクのみで代替します。 - グループ化・排他選択はモデル化しない: 本部品は単体 1 個のみを表現し、複数項目の縦横並び・排他表現を行う「ラジオグループ」部品は実装していません(Demo は複数個の
radioをdivで並べて配置イメージのみを示します)。