Slider
fandhe-frontend-wireframe-ui のスライダー風プレースホルダーです。トラック + 円形ハンドルで進捗(Progress %)の配置イメージだけを示す非インタラクティブな部品です。API は slider(value, orientation, size, active, disabled) の 5 引数(詳細は下の引数表を参照)で、props 構造体は導入していません。
視覚的な参照元は blocks.pm の Slider 部品ですが、ライセンス上の理由によりスクリーンショットは掲載していません(詳細は docs/design/wireframe-ui-architecture.md §2)。参照したい場合は外部リンク先を直接確認してください。
「Slider」という名前ですが、<input type="range"> 要素・ドラッグ操作・キーボード操作のいずれも実装しない表示専用プレースホルダーです。実際に操作可能なスライダーが必要な場合は Slider(Themes) / Slider(Primitives) を検討してください。
Demo
既定(40%)
0%
100%
丸め例(42 → 40)
Vertical
Active
Disabled
Sm
Lg
引数表
| 引数 | 型 | 既定値 | 説明 |
|---|---|---|---|
| value | u8 | - | 進捗(0〜100 を想定)。100 超は 100 へクランプし、5 刻みへ量子化する(例: 42 → 40、43 → 45)。 |
| orientation | Orientation | Orientation::Horizontal | 水平(既定)/垂直。 |
| 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/style/on*・<input type="range">は一切出力しません。- Progress(%) は固定 class への量子化で表現する:
value: u8は 0〜100 へクランプしたうえで 5 刻みへ丸め(四捨五入相当、42 → 40・43 → 45)、対応する固定 class(fw-wire-slider-value-<q>、21 種)を付与します。style属性・format!による動的な CSS 値の組み立ては行いません(class_listの&'static str限定という型制約、crates/wireframe-ui/src/grid.rsのcolumns_classと同型のパターン)。進捗値をdata-valueのような表示状態用途外のdata-*へ出力することもしません(docs/design/wireframe-ui-architecture.md§5「表示状態を示すdata-*まで」の責務境界)。 Orientationを採用:docs/design/wireframe-ui-architecture.mdのprops::Orientationrustdoc が「stack / divider / tabs / slider 等が共通で使う」と slider を消費者として名指ししているため、水平/垂直の向きは既存の共通型Orientationで表現します。専用の列挙型は追加しません。- State は共通型
Active/Disabledへ畳み込む: 専用のSliderState列挙は追加せず、フォーカス風の強調はActive、無効状態はDisabled(いずれも既存の共通型)で表現します。trueのときそれぞれdata-active=""/data-disabled=""を付与します(見た目のみで、実際のフォーカス管理・操作不能を実装するものではありません)。 - 値ラベルは発明しない: Figma 相当プロパティが Progress(%) のみのため、
aria-valuenowに相当する表示テキスト(値ラベル)用の引数は追加していません。 &str引数を持たないため XSS 回帰は構造的に充足: 動的入力はu81 個のみで固定 class 集合へ量子化されるため、テキスト引数の既定エスケープ回帰テストは対象外です(crates/wireframe-ui/tests/slider.rs冒頭コメント参照)。- スクリーンショット非掲載:
docs/design/reference-screenshots/への blocks.pm 画像取り込みは #2602 で fail-closed に非掲載と確定しています。本ページも画像は置かず、上記の外部リンクのみで代替します。 - 配色はグレースケール: 黒塗り二値ではなく
--fw-wire-*トークン(ink/fill/paper/line-subtle)で読みやすさを優先します。