Storefront 商品一覧カード表示仕様¶
背景¶
Storefront の商品一覧は B2B 発注の入口であり、スマートフォンでは縦スクロール量を抑えつつ、商品名・価格・購入導線をすぐ確認できる必要がある。/products 商品一覧専用の browse card は画像付き catalog の first visible を優先する surface としつつ、単一 variant 商品では購入可否を CTA として明示する。価格表示はカート投入前の pre-cart surface として扱い、標準売上単価・顧客別価格・価格内訳を出さず、上代単価だけを表示する。
仕様¶
/products?collection=...の browse card は、スマートフォン幅では正方形画像と商品情報を横並びにした 2 カラムリストとして表示する。- スマートフォン幅の browse card 画像はカードの縦幅を使い切り、その縦幅と同じ横幅を取って正方形を維持する。
sm以上の幅では、browse card は従来どおり画像上部・情報下部の縦型カードとして表示する。- ブランド collection の商品一覧で第3階層グループを表示する場合、ページネーションは出さず、グループ内の商品が多いときだけ同一ページ内に
もっと見るを表示する。 もっと見るの初期表示数と追加単位はレイアウトの列数に合わせる。PC 幅は 9件(3列 x 3行)、タブレット幅は 6件(2列 x 3行)、スマートフォンの1列リスト表示は 6件(1列 x 6行)とする。もっと見るボタンには件数を表示しない。件数表示は商品カタログ上部のバナーにも出さない。- 標準
ProductCardは、1 Product / 1 Variantの商品では一覧上にカートに入れるCTA を表示する。 /productsbrowse card は、1 Product / 1 Variantの商品ではカートに入れるCTA を表示する。購入不可・在庫切れ・購入上限到達・直送モード不一致などでカート投入できない場合でも CTA は非表示にせず、disabled 状態と理由表示で表現する。/productsbrowse card の単一 variant CTA はAddToCartButtonを通し、商品詳細・標準ProductCard・横型ProductListItemと同じ購入可否判定を使う。商品一覧だけで独自にprice > 0やstockLevelを見て CTA を消す実装は禁止する。/productsbrowse card は、複数 variant の商品では variant が一意に決まらないため一覧上で直接カート投入せず、詳細で選択導線を表示する。/productsbrowse card は価格内訳用のactiveOrderCommercialStateを発火させず、価格内訳 hover / click /i詳細も表示しない。購入 CTA の disabled 判定に必要な active order / customer context はAddToCartButtonの共通判定へ閉じ込め、発注可否・在庫切れ・bundle 制約を surface ごとに再実装しない。- 商品一覧カード内の価格表示は税込価格を主表示とし、複数 variant では先頭 variant 固定価格ではなく税込価格レンジを表示する。
/productsbrowse card の単一 variant 価格はProductPriceSummary/ProductPrice displayMode="preCart"を使い、上代単価だけを表示する。campaign 明示許可時のみ%OFFと元価格打ち消し線を表示できるが、その場合も価格内訳iは出さない。/productsbrowse card の複数 variant 価格は、詳細画面と同じresolveProductPriceSummaryの税込価格レンジを表示する。variant が一意に定まらないため、一覧では variant 単位の価格内訳を出さない。- mobile の browse card 画像枠は縦幅フルかつ正方形を維持し、商品名・価格・詳細導線が隣の情報列内で折り返せるようにする。
- mobile の browse card でも、単一 variant 商品は数量入力・増減ボタン・
カートに入れるCTA を表示する。購入不可時も数量入力と CTA は非表示にせず、disabled 状態で購入できないことを示す。
対象コンポーネント¶
apps/storefront/src/components/product/product-card.tsxapps/storefront/src/components/pages/products-page-content.tsxのProductsBrowseCard
テスト正本¶
- Unit:
apps/storefront/src/components/product/product-card.test.tsx - Unit:
apps/storefront/src/components/pages/__tests__/products-page-content.test.tsx - Playwright CT:
apps/storefront/tests/e2e/ct/product/product-card.ct.spec.tsx - Playwright CT:
apps/storefront/tests/e2e/ct/pages/products-page-content.ct.spec.tsx - Playwright CT:
apps/storefront/tests/e2e/ct/pages/products-page-brand-groups.ct.spec.tsx - Playwright CT:
apps/storefront/tests/e2e/ct/product/product-add-to-cart-sold-out.ct.spec.tsx
受け入れ条件¶
- スマートフォン幅の
/productsbrowse card で、画像がカード縦幅を使い切り、かつ正方形を維持した状態で情報列と横並びになっていること。 - 標準
ProductCardでは、単一 variant 商品にカートに入れるCTA が表示されること。 /productsbrowse card では、単一 variant 商品にカートに入れるCTA が表示され、詳細を見るへの置き換えや CTA 非表示にならないこと。/productsbrowse card では、単一 variant 商品の数量入力欄と増減ボタンが表示されること。/productsbrowse card では、在庫切れ商品でも CTA が非表示にならず、disabled の在庫切れボタンとして表示されること。/productsbrowse card では、複数 variant 商品に詳細で選択導線が表示され、直接カート CTA が出ないこと。/productsbrowse card では、価格内訳 query が発火せず、価格 hover / focus / click 後も内訳 dialog /iが表示されないこと。- 単一 variant の
/productsbrowse card では、上代単価だけが表示されること。campaign 明示許可時も%OFFと元価格打ち消し線までに留めること。 - Playwright CT で mobile 表示、単一 variant の数量入力・購入 CTA、複数 variant の詳細選択導線、在庫切れ時の disabled CTA が検証されていること。
- ブランド配下グループ表示では、PC / tablet / mobile の列数に応じた単位で
もっと見るが動作し、ページネーションと件数バナーが表示されないこと。