Match category image slots to the homepage bento frame sizes.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Alireza Hassani
2026-10-07 18:26:46 +03:30
co-authored by Cursor
parent e5592ca997
commit 093c8b56ea
+56 -12
View File
@@ -64,12 +64,55 @@ export const WEBSITE_SLOT_DEFS: WebsiteSlotDef[] = [
previewObjectPosition: "object-[center_20%]", previewObjectPosition: "object-[center_20%]",
}, },
{ {
/**
* Homepage CategoryBento (lg): 3×3 grid, height min(62vw, 560px).
* Cell sizes at 1520×560 content (max-w 1600 − lg padding, 8px gaps):
* 0: 1×3 tall · 1: 2×1 wide · 2: 1×1 · 3: 1×2 · 4: 1×1
*/
slug: "category-strip", slug: "category-strip",
labelFa: "دسته‌بندی‌ها", labelFa: "دسته‌بندی‌ها",
labelEn: "Categories", labelEn: "Categories",
kind: "collection", kind: "fixed-set",
aspectRatio: 68 / 80, itemCount: 5,
aspectLabel: "68×80", aspectRatio: 501 / 560,
aspectLabel: "بنتو · ۵ قاب",
cellLabels: [
{
labelFa: "قاب بلند",
labelEn: "Tall",
aspectRatio: 501 / 560,
aspectLabel: "501×560",
previewWidthRem: 7,
},
{
labelFa: "قاب عریض",
labelEn: "Wide",
aspectRatio: 1011 / 181,
aspectLabel: "1011×181",
previewWidthRem: 16,
},
{
labelFa: "قاب میانی",
labelEn: "Middle",
aspectRatio: 501 / 181,
aspectLabel: "501×181",
previewWidthRem: 9,
},
{
labelFa: "قاب نیمه‌بلند",
labelEn: "Half-tall",
aspectRatio: 501 / 371,
aspectLabel: "501×371",
previewWidthRem: 8,
},
{
labelFa: "قاب پایین",
labelEn: "Bottom",
aspectRatio: 501 / 181,
aspectLabel: "501×181",
previewWidthRem: 9,
},
],
}, },
{ {
slug: "promo-1", slug: "promo-1",
@@ -180,22 +223,23 @@ export function normalizeSlotDef(raw: WebsiteSlotDefApi): WebsiteSlotDef {
const local = WEBSITE_SLOT_DEFS.find((d) => d.slug === slug); const local = WEBSITE_SLOT_DEFS.find((d) => d.slug === slug);
return { return {
slug, slug,
labelFa: raw.labelFa, labelFa: raw.labelFa || local?.labelFa || slug,
labelEn: raw.labelEn, labelEn: raw.labelEn || local?.labelEn || slug,
kind: kind:
local?.kind ??
raw.kind ?? raw.kind ??
((raw as { duplicatable?: boolean }).duplicatable ((raw as { duplicatable?: boolean }).duplicatable
? "collection" ? "collection"
: "fixed"), : "fixed"),
sectionKey: raw.sectionKey, sectionKey: raw.sectionKey ?? local?.sectionKey,
sectionLabelFa: raw.sectionLabelFa, sectionLabelFa: raw.sectionLabelFa ?? local?.sectionLabelFa,
sectionLabelEn: raw.sectionLabelEn, sectionLabelEn: raw.sectionLabelEn ?? local?.sectionLabelEn,
itemCount: raw.itemCount, itemCount: local?.itemCount ?? raw.itemCount,
aspectRatio: raw.aspectRatio || 1, aspectRatio: local?.aspectRatio ?? raw.aspectRatio ?? 1,
aspectLabel: raw.aspectLabel || "", aspectLabel: local?.aspectLabel || raw.aspectLabel || "",
previewObjectPosition: previewObjectPosition:
raw.previewObjectPosition ?? local?.previewObjectPosition, raw.previewObjectPosition ?? local?.previewObjectPosition,
cellLabels: (raw.cellLabels ?? local?.cellLabels)?.map((cell, index) => ({ cellLabels: (local?.cellLabels ?? raw.cellLabels)?.map((cell, index) => ({
...cell, ...cell,
previewObjectPosition: previewObjectPosition:
cell.previewObjectPosition ?? cell.previewObjectPosition ??