Media
動画やメディア埋め込み領域の配置イメージを示す、16:9 固定の非インタラクティブなプレースホルダーです。fandhe_frontend_wireframe_ui::media の Rust API は content(省略可能なコンテンツスロット、Option<Node>)・size(Size 5 段)の 2 引数だけを受け取ります。content を省略すると既定の再生グリフが表示され、実際の動画再生は提供しません(<video>・<iframe> はいずれも出力しません)。
視覚的な参照元は blocks.pm の Placeholder 部品です。本ページは blocks.pm のスクリーンショットや外観・プロパティ構成をそのまま取り込みません(詳細は docs/design/wireframe-ui-architecture.md §2)。参照したい場合は外部リンク先を直接確認してください。
Demo
既定(再生グリフ)
スロット差し替え(静止画アイコン)
サイズ比較(Xs〜Xl)
引数表
| 引数 | 型 | 既定値 | 説明 |
|---|---|---|---|
| content | Option<Node> | None | 省略可能なコンテンツスロット。None のときは既定の再生グリフ(icon::play)にフォールバックする。 |
| size | Size | Size::Md | サイズ段階(xs〜xl)。中央のディスク・グリフの大きさに反映される(枠自体は 16:9 固定・親幅いっぱいに広がる)。 |
原案差分メモ
- API は §4・§6 から独立設計:
docs/design/wireframe-ui-architecture.md§4・§6 の汎用変換規約から独立設計しており、blocks.pm の Placeholder 部品の Figma プロパティ構成(動画フラグの bool・アイコンサイズ・再生アイコンの差し替え)をそのまま転写したものではありません。 Noneは再生グリフへのフォールバック(§11.4 からの意図的な逸脱):crate::iconのOption<Node>アイコンスロット規約は「Noneならスロット要素を出力しない」を原則としますが、本部品はcontentがNoneのとき既定の再生グリフ(icon::play)を差し込みます。中身のないメディア枠は [crate::frame] と見分けがつかず、ワイヤーフレームとして「ここに動画/メディアが入る」という意図を伝えられないためです([crate::avatar]〔イシュー #2651〕を先例とする逸脱。§11.4 本文への例外の明文化は #2712 から続く未反映の残課題です)。- 動画か静止画かは bool ではなくスロット差し替えで表す: 原案が持つ動画フラグの bool は導入せず、
Some(icon::image(size))を渡すことで静止画のメディア枠を、None(既定)で動画の既定表示を表します。画像プレースホルダー自体は別部品(Image、イシュー #2660)の担当です。 - サイズは共通の
Size5 段: 中央のディスク・グリフの大きさにのみ効き、寸法は [crate::size::css] が定義する--fw-wire-control-sizeをvar()で参照するのみで、値そのものは書き写していません。枠自体は 16:9 固定で親幅いっぱいに広がります。 - メディア URL 引数を持たない:
src・posterのような外部リソースを読み込む引数は設けていません。controlsも出力しないため、見た目だけ操作できそうで実際には操作できない UI にはなりません。 - 配色は読みやすさ優先のグレースケール: 黒塗り二値を強制せず、淡い塗り(
--fw-wire-fill-subtle)と控えめな文字色(--fw-wire-ink-muted)で表現します。 - 表示専用:
data-*・role・aria-*・tabindexは一切出力しません。表示状態(Active/Disabled)も持ちません(spinner/progressと同じ判断)。 - スクリーンショット非掲載: イシュー #2602 で参照スクリーンショット(
docs/design/reference-screenshots/wireframe-*.png)の取り込みは不採用が確定しているため、blocks.pm への外部リンクで代替しています。