Image
fandhe-frontend-wireframe-ui の画像プレースホルダーです。対角のバツ印が入った正方形(または円形)の枠で、画像が入る場所をワイヤーフレーム上に示す非インタラクティブな部品です。API は image(content, size, circle, primary) の 4 引数(詳細は下の引数表を参照)で、props 構造体は導入していません。
視覚的な参照元は blocks.pm の Image 部品ですが、ライセンス上の理由によりスクリーンショットは掲載していません(詳細は docs/design/wireframe-ui-architecture.md §2)。参照したい場合は外部リンク先を直接確認してください。
本部品は表示専用のため <img> は出力せず、画像 URL を受け取る API も持ちません。実際に画像を表示する部品が必要な場合は Image(Themes) を検討してください(対応する Primitives 部品はありません)。
Demo
既定(正方形・バツ印プレースホルダー)
円形
強調(Primary)
スロット差し替え(画像アイコン)
サイズ比較(Xs〜Xl)
引数表
| 引数 | 型 | 既定値 | 説明 |
|---|---|---|---|
| content | Option<Node> | None | 省略可能なコンテンツスロット。None のときはバツ印プレースホルダーを描き、子要素を出力しない。 |
| size | Size | Size::Md | サイズ段階(xs〜xl)。枠の寸法に反映される(正方形は control_size の 3 倍)。 |
| circle | bool | false | true のとき円形(fw-wire-image-circle)バリアントにする。 |
| primary | Primary | Primary(false) | true のとき強調(反転色)バリアントにする。 |
原案差分メモ
- API は独自設計:
docs/design/wireframe-ui-architecture.md§4・§6 の Figma プロパティ変換規約(円形・強調・プレースホルダー有無)から独立設計しました。原案の Figma プロパティ構成をそのまま転写したものではありません。 <img>と URL API は持たない: ルートはdivとし、src/href/styleは一切出力しません(同文書 §7 の非対話制約)。画像 URL を受け取る API も設けていません(外部リソース読み込みの経路を作らないため)。- バツ印は CSS グラデーションで描き、トークン色のグレースケールを使う: 疑似要素を
rotate()で回す方式ではなく、background-imageのlinear-gradient2 本(角から角へ)を重ねて描きます。角へ正確に届く・アスペクト比が変わっても崩れない・追加マークアップが要らない、という利点があります。線色は黒塗り二値ではなく--fw-wire-line(既定)のトークンを使います。 - circle は avatar と同型の部品固有修飾 class で、
propsへは昇格しない:circle: boolはcrate::avatar/crate::frameのcircle/bordered: boolと同型の判断で、部品固有の修飾 class(fw-wire-image-circle)として表現します。2 部品目(avatar・image)で横断再利用の兆候が出ていますが、crate::propsへの型昇格は本 PR のスコープ外としました。 - 黒塗りは
Primaryの opt-in: 既定はグレースケール(--fw-wire-fill-subtleの背景と--fw-wire-lineの線)で、黒塗り(反転配色)は既存の共通型Primaryを渡したときだけ有効になります(新しい型は追加していません)。 contentスロットは §11.4 に準拠する(avatar のような逸脱はない):contentがNoneのときはバツ印プレースホルダーを描き、子要素は一切出力しません。Some(node)を渡した場合はそのノードをそのまま子要素にします(画像アイコンやキャプションテキストへの差し替えが可能です)。crate::avatarがicon::userへフォールバックする逸脱とは異なり、本部品は「Noneならスロット要素を出力しない」という §11.4 の原則にそのまま従います。- 正方形固定で、アスペクト比のバリアントは対象外: 寸法は常に正方形(
--fw-wire-control-sizeの 3 倍)で、16:9 等のアスペクト比バリアントは本 PR のスコープ外です。 - スクリーンショット非掲載:
docs/design/reference-screenshots/への blocks.pm 画像取り込みは #2602 で fail-closed に非掲載と確定しています。本ページも画像は置かず、上記の外部リンクのみで代替します。