/** * TechShop homepage structure * Reference: https://demo.templatemonster.com/demo/501755.html * * Order matches the demo: chrome → sidebar+hero → promo tiles → categories → * new arrivals → dual banners → deals → recently launched → brands → * gadgets → articles → trust strip. */ export const TECHSHOP_HOME_ORDER: { key: string; defaultOrder: number; /** Catalog-backed: show products/categories even if CMS arrays are empty */ catalogDriven?: boolean; }[] = [ { key: 'hero_slider', defaultOrder: 1 }, { key: 'promo_cards', defaultOrder: 2 }, { key: 'featured_categories', defaultOrder: 3, catalogDriven: true }, { key: 'editorial_story', defaultOrder: 4, catalogDriven: true }, { key: 'promo_banners', defaultOrder: 5 }, { key: 'deal_of_the_day', defaultOrder: 6, catalogDriven: true }, { key: 'recently_launched', defaultOrder: 7, catalogDriven: true }, { key: 'official_brands', defaultOrder: 8, catalogDriven: true }, { key: 'ultimate_tech', defaultOrder: 9, catalogDriven: true }, { key: 'tech_blog', defaultOrder: 10 }, { key: 'trust_badges', defaultOrder: 11 }, ]; /** Core blocks that make the homepage look like TechShop when layout API is down */ export const TECHSHOP_CORE_KEYS = new Set( TECHSHOP_HOME_ORDER.filter( (s) => s.catalogDriven || s.key === 'hero_slider' || s.key === 'promo_cards' || s.key === 'promo_banners' || s.key === 'trust_badges' ).map((s) => s.key) ); export function sortHomeSectionsByOrder( sectionsData: Record ): typeof TECHSHOP_HOME_ORDER { return [...TECHSHOP_HOME_ORDER].sort((a, b) => { const orderA = sectionsData[a.key]?.display_order ?? a.defaultOrder; const orderB = sectionsData[b.key]?.display_order ?? b.defaultOrder; return Number(orderA) - Number(orderB); }); }