@mohasinac/appkit 4.57.0 β†’ 4.59.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (574) hide show
  1. package/dist/.build-stamp.json +4 -4
  2. package/dist/_internal/server/features/beys/data.d.ts +44 -0
  3. package/dist/_internal/server/features/beys/data.js +107 -0
  4. package/dist/_internal/server/features/beys/og.d.ts +42 -0
  5. package/dist/_internal/server/features/beys/og.js +89 -0
  6. package/dist/_internal/server/features/parts/data.js +3 -2
  7. package/dist/_internal/server/jobs/handlers/messages.d.ts +1 -1
  8. package/dist/_internal/server/jobs/handlers/messages.js +1 -1
  9. package/dist/_internal/shared/actions/action-registry.d.ts +1 -1
  10. package/dist/_internal/shared/actions/action-registry.js +86 -0
  11. package/dist/_internal/shared/types/base-document.d.ts +1 -1
  12. package/dist/client.d.ts +2 -0
  13. package/dist/client.js +1 -0
  14. package/dist/constants/api-endpoints.d.ts +12 -0
  15. package/dist/constants/api-endpoints.js +10 -0
  16. package/dist/constants/field-names.d.ts +46 -0
  17. package/dist/constants/field-names.js +46 -0
  18. package/dist/constants/seed-meta.d.ts +113 -0
  19. package/dist/constants/seed-meta.js +91 -0
  20. package/dist/features/admin/components/AdminBeysView.d.ts +27 -0
  21. package/dist/features/admin/components/AdminBeysView.js +178 -0
  22. package/dist/features/admin/components/AdminPartsView.d.ts +27 -0
  23. package/dist/features/admin/components/AdminPartsView.js +160 -0
  24. package/dist/features/admin/components/OwnerQuickActions.d.ts +19 -2
  25. package/dist/features/admin/components/OwnerQuickActions.js +31 -3
  26. package/dist/features/admin/components/RecordOwnerQuickActions.d.ts +31 -0
  27. package/dist/features/admin/components/RecordOwnerQuickActions.js +128 -0
  28. package/dist/features/admin/components/ReferenceRecordEditor.d.ts +45 -0
  29. package/dist/features/admin/components/ReferenceRecordEditor.js +153 -0
  30. package/dist/features/admin/schemas/firestore.d.ts +1 -1
  31. package/dist/features/auctions/components/MarketplaceAuctionCard.js +15 -2
  32. package/dist/features/auth/permissions/constants.d.ts +1 -1
  33. package/dist/features/auth/permissions/constants.js +12 -1
  34. package/dist/features/beys/components/BeyDetailPageView.d.ts +50 -0
  35. package/dist/features/beys/components/BeyDetailPageView.js +98 -0
  36. package/dist/features/beys/schemas/firestore.d.ts +417 -0
  37. package/dist/features/beys/schemas/firestore.js +65 -0
  38. package/dist/features/blog/components/BlogFeaturedCard.js +15 -2
  39. package/dist/features/blog/components/BlogPostView.js +2 -2
  40. package/dist/features/categories/components/BrandDetailPageView.js +4 -2
  41. package/dist/features/categories/components/BundleDetailView.js +2 -2
  42. package/dist/features/categories/components/CategoryDetailPageView.js +36 -3
  43. package/dist/features/categories/components/CategoryGrid.js +24 -2
  44. package/dist/features/categories/components/FranchiseDetailPageView.js +2 -3
  45. package/dist/features/events/components/EventCard.js +15 -2
  46. package/dist/features/grouped/components/GroupedListingDetailView.js +2 -3
  47. package/dist/features/homepage/components/CustomCardsSection.js +67 -50
  48. package/dist/features/homepage/components/ShopByCategorySection.js +23 -10
  49. package/dist/features/homepage/schemas/index.d.ts +10 -10
  50. package/dist/features/parts/components/PartDetailPageView.js +5 -3
  51. package/dist/features/parts/components/PartsSearchBox.js +79 -4
  52. package/dist/features/parts/schemas/admin-edit.d.ts +81 -0
  53. package/dist/features/parts/schemas/admin-edit.js +89 -0
  54. package/dist/features/parts/schemas/firestore.d.ts +2 -1
  55. package/dist/features/pre-orders/components/MarketplacePreorderCard.js +15 -2
  56. package/dist/features/products/components/MarketplaceBundleCard.js +15 -2
  57. package/dist/features/products/components/MarketplacePrizeDrawCard.js +15 -2
  58. package/dist/features/products/components/ProductGrid.js +18 -2
  59. package/dist/features/products/schemas/firestore.d.ts +18 -0
  60. package/dist/features/seller/components/CategoryInlineSelect.d.ts +10 -1
  61. package/dist/features/seller/components/CategoryInlineSelect.js +53 -5
  62. package/dist/features/seller/components/SellerProductShell.d.ts +39 -0
  63. package/dist/features/seller/components/SellerProductShell.js +31 -3
  64. package/dist/index.d.ts +6 -129
  65. package/dist/index.js +61 -292
  66. package/dist/next/routing/route-map.d.ts +13 -1
  67. package/dist/next/routing/route-map.js +37 -0
  68. package/dist/schemas/registry.d.ts +6 -6
  69. package/dist/server.d.ts +2 -69
  70. package/dist/server.js +8 -69
  71. package/dist/styles.css +468 -1
  72. package/dist/tailwind-utilities.css +1 -1
  73. package/dist/ui/components/PosterCard.d.ts +99 -0
  74. package/dist/ui/components/PosterCard.js +109 -0
  75. package/dist/ui/components/PosterCard.style.css +466 -0
  76. package/dist/ui/components/index.style.css +1 -0
  77. package/dist/ui/index.d.ts +2 -0
  78. package/dist/ui/index.js +2 -0
  79. package/package.json +4 -2
  80. package/scripts/seed-cli.mjs +177 -2
  81. package/dist/features/tester/seed-data/_happy-path.d.ts +0 -23
  82. package/dist/features/tester/seed-data/_happy-path.js +0 -710
  83. package/dist/features/tester/seed-data/_money-flows.d.ts +0 -23
  84. package/dist/features/tester/seed-data/_money-flows.js +0 -610
  85. package/dist/features/tester/seed-data/authored/_types.d.ts +0 -57
  86. package/dist/features/tester/seed-data/authored/_types.js +0 -35
  87. package/dist/features/tester/seed-data/authored/account-auth__profile-settings.d.ts +0 -2
  88. package/dist/features/tester/seed-data/authored/account-auth__profile-settings.js +0 -226
  89. package/dist/features/tester/seed-data/authored/account-auth__signup-login.d.ts +0 -2
  90. package/dist/features/tester/seed-data/authored/account-auth__signup-login.js +0 -329
  91. package/dist/features/tester/seed-data/authored/addresses__address-filters.d.ts +0 -2
  92. package/dist/features/tester/seed-data/authored/addresses__address-filters.js +0 -41
  93. package/dist/features/tester/seed-data/authored/addresses__postal-lookup.d.ts +0 -2
  94. package/dist/features/tester/seed-data/authored/addresses__postal-lookup.js +0 -76
  95. package/dist/features/tester/seed-data/authored/addresses__postal-validation.d.ts +0 -2
  96. package/dist/features/tester/seed-data/authored/addresses__postal-validation.js +0 -78
  97. package/dist/features/tester/seed-data/authored/addresses__state-picker.d.ts +0 -2
  98. package/dist/features/tester/seed-data/authored/addresses__state-picker.js +0 -59
  99. package/dist/features/tester/seed-data/authored/addresses__unban-request.d.ts +0 -2
  100. package/dist/features/tester/seed-data/authored/addresses__unban-request.js +0 -77
  101. package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.d.ts +0 -2
  102. package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.js +0 -151
  103. package/dist/features/tester/seed-data/authored/admin__bans-and-trust.d.ts +0 -2
  104. package/dist/features/tester/seed-data/authored/admin__bans-and-trust.js +0 -265
  105. package/dist/features/tester/seed-data/authored/admin__blog-faqs.d.ts +0 -2
  106. package/dist/features/tester/seed-data/authored/admin__blog-faqs.js +0 -131
  107. package/dist/features/tester/seed-data/authored/admin__bug-hunter-rewards.d.ts +0 -2
  108. package/dist/features/tester/seed-data/authored/admin__bug-hunter-rewards.js +0 -143
  109. package/dist/features/tester/seed-data/authored/admin__bulk-actions.d.ts +0 -2
  110. package/dist/features/tester/seed-data/authored/admin__bulk-actions.js +0 -207
  111. package/dist/features/tester/seed-data/authored/admin__bundles.d.ts +0 -2
  112. package/dist/features/tester/seed-data/authored/admin__bundles.js +0 -144
  113. package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.d.ts +0 -2
  114. package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.js +0 -265
  115. package/dist/features/tester/seed-data/authored/admin__catalog-listings.d.ts +0 -2
  116. package/dist/features/tester/seed-data/authored/admin__catalog-listings.js +0 -318
  117. package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.d.ts +0 -2
  118. package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.js +0 -177
  119. package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.d.ts +0 -2
  120. package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.js +0 -165
  121. package/dist/features/tester/seed-data/authored/admin__content-deletes.d.ts +0 -2
  122. package/dist/features/tester/seed-data/authored/admin__content-deletes.js +0 -267
  123. package/dist/features/tester/seed-data/authored/admin__content-marketing.d.ts +0 -2
  124. package/dist/features/tester/seed-data/authored/admin__content-marketing.js +0 -188
  125. package/dist/features/tester/seed-data/authored/admin__coupons.d.ts +0 -2
  126. package/dist/features/tester/seed-data/authored/admin__coupons.js +0 -215
  127. package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.d.ts +0 -2
  128. package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.js +0 -202
  129. package/dist/features/tester/seed-data/authored/admin__firebase-function-effects.d.ts +0 -2
  130. package/dist/features/tester/seed-data/authored/admin__firebase-function-effects.js +0 -249
  131. package/dist/features/tester/seed-data/authored/admin__media-watermark.d.ts +0 -2
  132. package/dist/features/tester/seed-data/authored/admin__media-watermark.js +0 -148
  133. package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.d.ts +0 -2
  134. package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.js +0 -350
  135. package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.d.ts +0 -2
  136. package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.js +0 -129
  137. package/dist/features/tester/seed-data/authored/admin__site-system.d.ts +0 -2
  138. package/dist/features/tester/seed-data/authored/admin__site-system.js +0 -586
  139. package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.d.ts +0 -2
  140. package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.js +0 -260
  141. package/dist/features/tester/seed-data/authored/admin__users-trust.d.ts +0 -2
  142. package/dist/features/tester/seed-data/authored/admin__users-trust.js +0 -569
  143. package/dist/features/tester/seed-data/authored/buying__bidding.d.ts +0 -2
  144. package/dist/features/tester/seed-data/authored/buying__bidding.js +0 -449
  145. package/dist/features/tester/seed-data/authored/buying__browsing-search.d.ts +0 -2
  146. package/dist/features/tester/seed-data/authored/buying__browsing-search.js +0 -684
  147. package/dist/features/tester/seed-data/authored/buying__buying-checkout.d.ts +0 -2
  148. package/dist/features/tester/seed-data/authored/buying__buying-checkout.js +0 -546
  149. package/dist/features/tester/seed-data/authored/buying__buying-coupons.d.ts +0 -2
  150. package/dist/features/tester/seed-data/authored/buying__buying-coupons.js +0 -379
  151. package/dist/features/tester/seed-data/authored/buying__cart.d.ts +0 -2
  152. package/dist/features/tester/seed-data/authored/buying__cart.js +0 -1264
  153. package/dist/features/tester/seed-data/authored/buying__image-tile-layout.d.ts +0 -2
  154. package/dist/features/tester/seed-data/authored/buying__image-tile-layout.js +0 -122
  155. package/dist/features/tester/seed-data/authored/buying__my-orders.d.ts +0 -2
  156. package/dist/features/tester/seed-data/authored/buying__my-orders.js +0 -279
  157. package/dist/features/tester/seed-data/authored/buying__offers.d.ts +0 -2
  158. package/dist/features/tester/seed-data/authored/buying__offers.js +0 -1127
  159. package/dist/features/tester/seed-data/authored/buying__order-detail-actions.d.ts +0 -2
  160. package/dist/features/tester/seed-data/authored/buying__order-detail-actions.js +0 -153
  161. package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.d.ts +0 -2
  162. package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.js +0 -252
  163. package/dist/features/tester/seed-data/authored/buying__product-detail.d.ts +0 -2
  164. package/dist/features/tester/seed-data/authored/buying__product-detail.js +0 -474
  165. package/dist/features/tester/seed-data/authored/buying__return-request.d.ts +0 -2
  166. package/dist/features/tester/seed-data/authored/buying__return-request.js +0 -165
  167. package/dist/features/tester/seed-data/authored/buying__reviews-pagination.d.ts +0 -2
  168. package/dist/features/tester/seed-data/authored/buying__reviews-pagination.js +0 -260
  169. package/dist/features/tester/seed-data/authored/buying__reviews.d.ts +0 -2
  170. package/dist/features/tester/seed-data/authored/buying__reviews.js +0 -128
  171. package/dist/features/tester/seed-data/authored/buying__spares-and-groups.d.ts +0 -2
  172. package/dist/features/tester/seed-data/authored/buying__spares-and-groups.js +0 -96
  173. package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.d.ts +0 -2
  174. package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.js +0 -283
  175. package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.d.ts +0 -2
  176. package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.js +0 -169
  177. package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.d.ts +0 -2
  178. package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.js +0 -105
  179. package/dist/features/tester/seed-data/authored/buying__wishlist-history.d.ts +0 -2
  180. package/dist/features/tester/seed-data/authored/buying__wishlist-history.js +0 -374
  181. package/dist/features/tester/seed-data/authored/community-support__messages.d.ts +0 -2
  182. package/dist/features/tester/seed-data/authored/community-support__messages.js +0 -200
  183. package/dist/features/tester/seed-data/authored/community-support__public-profile.d.ts +0 -2
  184. package/dist/features/tester/seed-data/authored/community-support__public-profile.js +0 -54
  185. package/dist/features/tester/seed-data/authored/community-support__support-tickets.d.ts +0 -2
  186. package/dist/features/tester/seed-data/authored/community-support__support-tickets.js +0 -76
  187. package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.d.ts +0 -4
  188. package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.js +0 -590
  189. package/dist/features/tester/seed-data/authored/content-discovery__blog.d.ts +0 -2
  190. package/dist/features/tester/seed-data/authored/content-discovery__blog.js +0 -110
  191. package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.d.ts +0 -2
  192. package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.js +0 -149
  193. package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.d.ts +0 -2
  194. package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.js +0 -145
  195. package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.d.ts +0 -2
  196. package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.js +0 -174
  197. package/dist/features/tester/seed-data/authored/content-discovery__coupons.d.ts +0 -2
  198. package/dist/features/tester/seed-data/authored/content-discovery__coupons.js +0 -169
  199. package/dist/features/tester/seed-data/authored/content-discovery__event-detail-subroutes.d.ts +0 -2
  200. package/dist/features/tester/seed-data/authored/content-discovery__event-detail-subroutes.js +0 -209
  201. package/dist/features/tester/seed-data/authored/content-discovery__event-participation.d.ts +0 -2
  202. package/dist/features/tester/seed-data/authored/content-discovery__event-participation.js +0 -207
  203. package/dist/features/tester/seed-data/authored/content-discovery__events.d.ts +0 -2
  204. package/dist/features/tester/seed-data/authored/content-discovery__events.js +0 -377
  205. package/dist/features/tester/seed-data/authored/content-discovery__faq-help.d.ts +0 -2
  206. package/dist/features/tester/seed-data/authored/content-discovery__faq-help.js +0 -87
  207. package/dist/features/tester/seed-data/authored/content-discovery__notifications.d.ts +0 -2
  208. package/dist/features/tester/seed-data/authored/content-discovery__notifications.js +0 -147
  209. package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.d.ts +0 -2
  210. package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.js +0 -209
  211. package/dist/features/tester/seed-data/authored/content-discovery__parts-database.d.ts +0 -2
  212. package/dist/features/tester/seed-data/authored/content-discovery__parts-database.js +0 -167
  213. package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.d.ts +0 -2
  214. package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.js +0 -73
  215. package/dist/features/tester/seed-data/authored/content-discovery__search.d.ts +0 -2
  216. package/dist/features/tester/seed-data/authored/content-discovery__search.js +0 -363
  217. package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.d.ts +0 -2
  218. package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.js +0 -340
  219. package/dist/features/tester/seed-data/authored/content-discovery__store-reviews-aggregate.d.ts +0 -2
  220. package/dist/features/tester/seed-data/authored/content-discovery__store-reviews-aggregate.js +0 -88
  221. package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.d.ts +0 -2
  222. package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.js +0 -78
  223. package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.d.ts +0 -2
  224. package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.js +0 -76
  225. package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.d.ts +0 -2
  226. package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.js +0 -62
  227. package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.d.ts +0 -2
  228. package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.js +0 -163
  229. package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.d.ts +0 -2
  230. package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.js +0 -61
  231. package/dist/features/tester/seed-data/authored/design-ux__action-bar-placement.d.ts +0 -2
  232. package/dist/features/tester/seed-data/authored/design-ux__action-bar-placement.js +0 -89
  233. package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.d.ts +0 -2
  234. package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.js +0 -95
  235. package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.d.ts +0 -2
  236. package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.js +0 -191
  237. package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.d.ts +0 -2
  238. package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.js +0 -158
  239. package/dist/features/tester/seed-data/authored/design-ux__feature-badge-picker.d.ts +0 -2
  240. package/dist/features/tester/seed-data/authored/design-ux__feature-badge-picker.js +0 -82
  241. package/dist/features/tester/seed-data/authored/design-ux__footer-theme.d.ts +0 -2
  242. package/dist/features/tester/seed-data/authored/design-ux__footer-theme.js +0 -106
  243. package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.d.ts +0 -2
  244. package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.js +0 -88
  245. package/dist/features/tester/seed-data/authored/design-ux__general-design.d.ts +0 -2
  246. package/dist/features/tester/seed-data/authored/design-ux__general-design.js +0 -204
  247. package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.d.ts +0 -2
  248. package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.js +0 -301
  249. package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.d.ts +0 -2
  250. package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.js +0 -90
  251. package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.d.ts +0 -2
  252. package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.js +0 -85
  253. package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.d.ts +0 -2
  254. package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.js +0 -407
  255. package/dist/features/tester/seed-data/authored/design-ux__nav-reachability.d.ts +0 -2
  256. package/dist/features/tester/seed-data/authored/design-ux__nav-reachability.js +0 -88
  257. package/dist/features/tester/seed-data/authored/design-ux__rich-text-readability.d.ts +0 -2
  258. package/dist/features/tester/seed-data/authored/design-ux__rich-text-readability.js +0 -84
  259. package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.d.ts +0 -2
  260. package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.js +0 -214
  261. package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.d.ts +0 -2
  262. package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.js +0 -275
  263. package/dist/features/tester/seed-data/authored/index.d.ts +0 -2
  264. package/dist/features/tester/seed-data/authored/index.js +0 -301
  265. package/dist/features/tester/seed-data/authored/page-wiring__data-loss.d.ts +0 -2
  266. package/dist/features/tester/seed-data/authored/page-wiring__data-loss.js +0 -125
  267. package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.d.ts +0 -2
  268. package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.js +0 -85
  269. package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.d.ts +0 -2
  270. package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.js +0 -92
  271. package/dist/features/tester/seed-data/authored/page-wiring__reachability.d.ts +0 -2
  272. package/dist/features/tester/seed-data/authored/page-wiring__reachability.js +0 -115
  273. package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.d.ts +0 -2
  274. package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.js +0 -137
  275. package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.d.ts +0 -2
  276. package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.js +0 -263
  277. package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.d.ts +0 -2
  278. package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.js +0 -229
  279. package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.d.ts +0 -2
  280. package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.js +0 -325
  281. package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.d.ts +0 -2
  282. package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.js +0 -126
  283. package/dist/features/tester/seed-data/authored/public-pages__newly-wired-browse-indexes.d.ts +0 -2
  284. package/dist/features/tester/seed-data/authored/public-pages__newly-wired-browse-indexes.js +0 -141
  285. package/dist/features/tester/seed-data/authored/public-pages__store-tabs.d.ts +0 -2
  286. package/dist/features/tester/seed-data/authored/public-pages__store-tabs.js +0 -115
  287. package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.d.ts +0 -2
  288. package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.js +0 -253
  289. package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.d.ts +0 -2
  290. package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.js +0 -93
  291. package/dist/features/tester/seed-data/authored/search-and-nav__header-search.d.ts +0 -3
  292. package/dist/features/tester/seed-data/authored/search-and-nav__header-search.js +0 -185
  293. package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.d.ts +0 -2
  294. package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.js +0 -82
  295. package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.d.ts +0 -2
  296. package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.js +0 -60
  297. package/dist/features/tester/seed-data/authored/selling__become-seller.d.ts +0 -2
  298. package/dist/features/tester/seed-data/authored/selling__become-seller.js +0 -117
  299. package/dist/features/tester/seed-data/authored/selling__digital-content-delivery.d.ts +0 -2
  300. package/dist/features/tester/seed-data/authored/selling__digital-content-delivery.js +0 -148
  301. package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.d.ts +0 -2
  302. package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.js +0 -108
  303. package/dist/features/tester/seed-data/authored/selling__listing-a-product.d.ts +0 -2
  304. package/dist/features/tester/seed-data/authored/selling__listing-a-product.js +0 -274
  305. package/dist/features/tester/seed-data/authored/selling__listing-edit-roundtrip.d.ts +0 -2
  306. package/dist/features/tester/seed-data/authored/selling__listing-edit-roundtrip.js +0 -145
  307. package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.d.ts +0 -2
  308. package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.js +0 -336
  309. package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.d.ts +0 -2
  310. package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.js +0 -136
  311. package/dist/features/tester/seed-data/authored/selling__media-limits.d.ts +0 -2
  312. package/dist/features/tester/seed-data/authored/selling__media-limits.js +0 -135
  313. package/dist/features/tester/seed-data/authored/selling__product-upload-details.d.ts +0 -2
  314. package/dist/features/tester/seed-data/authored/selling__product-upload-details.js +0 -155
  315. package/dist/features/tester/seed-data/authored/selling__quick-add-minimum-details.d.ts +0 -2
  316. package/dist/features/tester/seed-data/authored/selling__quick-add-minimum-details.js +0 -138
  317. package/dist/features/tester/seed-data/authored/selling__sectionised-forms.d.ts +0 -2
  318. package/dist/features/tester/seed-data/authored/selling__sectionised-forms.js +0 -191
  319. package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.d.ts +0 -2
  320. package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.js +0 -138
  321. package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.d.ts +0 -2
  322. package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.js +0 -106
  323. package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.d.ts +0 -2
  324. package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.js +0 -192
  325. package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.d.ts +0 -2
  326. package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.js +0 -109
  327. package/dist/features/tester/seed-data/authored/selling__seller-guide.d.ts +0 -2
  328. package/dist/features/tester/seed-data/authored/selling__seller-guide.js +0 -34
  329. package/dist/features/tester/seed-data/authored/selling__seller-listing-types.d.ts +0 -2
  330. package/dist/features/tester/seed-data/authored/selling__seller-listing-types.js +0 -348
  331. package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.d.ts +0 -2
  332. package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.js +0 -87
  333. package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.d.ts +0 -2
  334. package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.js +0 -90
  335. package/dist/features/tester/seed-data/authored/selling__seller-orders-at-scale.d.ts +0 -2
  336. package/dist/features/tester/seed-data/authored/selling__seller-orders-at-scale.js +0 -85
  337. package/dist/features/tester/seed-data/authored/selling__seller-orders.d.ts +0 -2
  338. package/dist/features/tester/seed-data/authored/selling__seller-orders.js +0 -213
  339. package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.d.ts +0 -2
  340. package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.js +0 -192
  341. package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.d.ts +0 -2
  342. package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.js +0 -77
  343. package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.d.ts +0 -2
  344. package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.js +0 -165
  345. package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.d.ts +0 -2
  346. package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.js +0 -116
  347. package/dist/features/tester/seed-data/authored/seo__canonical-and-host.d.ts +0 -2
  348. package/dist/features/tester/seed-data/authored/seo__canonical-and-host.js +0 -127
  349. package/dist/features/tester/seed-data/authored/seo__og-images.d.ts +0 -2
  350. package/dist/features/tester/seed-data/authored/seo__og-images.js +0 -107
  351. package/dist/features/tester/seed-data/authored/seo__page-metadata.d.ts +0 -2
  352. package/dist/features/tester/seed-data/authored/seo__page-metadata.js +0 -120
  353. package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.d.ts +0 -2
  354. package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.js +0 -105
  355. package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.d.ts +0 -2
  356. package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.js +0 -58
  357. package/dist/features/tester/seed-data/authored/tools__sticker-tracer.d.ts +0 -2
  358. package/dist/features/tester/seed-data/authored/tools__sticker-tracer.js +0 -284
  359. package/dist/features/tester/seed-data/index.d.ts +0 -2
  360. package/dist/features/tester/seed-data/index.js +0 -2
  361. package/dist/features/tester/seed-data/tester-checklist-seed-data.d.ts +0 -2
  362. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +0 -7601
  363. package/dist/features/tester/seed-data/tester-responses-seed-data.d.ts +0 -2
  364. package/dist/features/tester/seed-data/tester-responses-seed-data.js +0 -95
  365. package/dist/features/tester/seed-data/tester-window.d.ts +0 -25
  366. package/dist/features/tester/seed-data/tester-window.js +0 -66
  367. package/dist/seed/_helpers/brand-rows.d.ts +0 -35
  368. package/dist/seed/_helpers/brand-rows.js +0 -600
  369. package/dist/seed/_helpers/category-content-generated.d.ts +0 -24
  370. package/dist/seed/_helpers/category-content-generated.js +0 -1853
  371. package/dist/seed/_helpers/category-content.d.ts +0 -68
  372. package/dist/seed/_helpers/category-content.js +0 -731
  373. package/dist/seed/_helpers/category-forest.d.ts +0 -4
  374. package/dist/seed/_helpers/category-forest.js +0 -824
  375. package/dist/seed/_helpers/category-images-generated.d.ts +0 -57
  376. package/dist/seed/_helpers/category-images-generated.js +0 -618
  377. package/dist/seed/_helpers/category-models/chunk0.d.ts +0 -2
  378. package/dist/seed/_helpers/category-models/chunk0.js +0 -2648
  379. package/dist/seed/_helpers/category-models/chunk1.d.ts +0 -2
  380. package/dist/seed/_helpers/category-models/chunk1.js +0 -2318
  381. package/dist/seed/_helpers/category-models/chunk2.d.ts +0 -2
  382. package/dist/seed/_helpers/category-models/chunk2.js +0 -2560
  383. package/dist/seed/_helpers/category-models/chunk3.d.ts +0 -2
  384. package/dist/seed/_helpers/category-models/chunk3.js +0 -2196
  385. package/dist/seed/_helpers/category-models/chunk4.d.ts +0 -2
  386. package/dist/seed/_helpers/category-models/chunk4.js +0 -1732
  387. package/dist/seed/_helpers/category-models.d.ts +0 -12
  388. package/dist/seed/_helpers/category-models.js +0 -45
  389. package/dist/seed/_helpers/category-names.d.ts +0 -54
  390. package/dist/seed/_helpers/category-names.js +0 -118
  391. package/dist/seed/_helpers/category-parts-glossary-map.d.ts +0 -1
  392. package/dist/seed/_helpers/category-parts-glossary-map.js +0 -2499
  393. package/dist/seed/_helpers/category-parts.d.ts +0 -9
  394. package/dist/seed/_helpers/category-parts.js +0 -15022
  395. package/dist/seed/_helpers/category-tree.d.ts +0 -27
  396. package/dist/seed/_helpers/category-tree.js +0 -119
  397. package/dist/seed/_helpers/character-features.d.ts +0 -10
  398. package/dist/seed/_helpers/character-features.js +0 -120
  399. package/dist/seed/_helpers/final-sale-fixtures.d.ts +0 -35
  400. package/dist/seed/_helpers/final-sale-fixtures.js +0 -61
  401. package/dist/seed/_helpers/franchise-rows.d.ts +0 -43
  402. package/dist/seed/_helpers/franchise-rows.js +0 -189
  403. package/dist/seed/_helpers/media.d.ts +0 -67
  404. package/dist/seed/_helpers/media.js +0 -172
  405. package/dist/seed/_helpers/part-colours-generated.d.ts +0 -18
  406. package/dist/seed/_helpers/part-colours-generated.js +0 -273
  407. package/dist/seed/_helpers/product-search-txt.d.ts +0 -18
  408. package/dist/seed/_helpers/product-search-txt.js +0 -23
  409. package/dist/seed/_helpers/search-txt-wrappers.d.ts +0 -26
  410. package/dist/seed/_helpers/search-txt-wrappers.js +0 -58
  411. package/dist/seed/addresses-seed-data.d.ts +0 -2
  412. package/dist/seed/addresses-seed-data.js +0 -78
  413. package/dist/seed/authenticity-knowledge-seed-data.d.ts +0 -78
  414. package/dist/seed/authenticity-knowledge-seed-data.js +0 -10729
  415. package/dist/seed/bids-seed-data.d.ts +0 -2
  416. package/dist/seed/bids-seed-data.js +0 -206
  417. package/dist/seed/blog-posts-seed-data.d.ts +0 -6
  418. package/dist/seed/blog-posts-seed-data.js +0 -442
  419. package/dist/seed/carousel-slides-seed-data.d.ts +0 -2
  420. package/dist/seed/carousel-slides-seed-data.js +0 -411
  421. package/dist/seed/carousels-seed-data.d.ts +0 -2
  422. package/dist/seed/carousels-seed-data.js +0 -36
  423. package/dist/seed/cart-seed-data.d.ts +0 -2
  424. package/dist/seed/cart-seed-data.js +0 -241
  425. package/dist/seed/catalogue-seed-data.d.ts +0 -2
  426. package/dist/seed/catalogue-seed-data.js +0 -112
  427. package/dist/seed/categories-seed-data.d.ts +0 -3
  428. package/dist/seed/categories-seed-data.js +0 -816
  429. package/dist/seed/claimed-coupons-seed-data.d.ts +0 -2
  430. package/dist/seed/claimed-coupons-seed-data.js +0 -85
  431. package/dist/seed/coupon-usage-seed-data.d.ts +0 -9
  432. package/dist/seed/coupon-usage-seed-data.js +0 -55
  433. package/dist/seed/coupons-seed-data.d.ts +0 -2
  434. package/dist/seed/coupons-seed-data.js +0 -226
  435. package/dist/seed/defaults/categories.d.ts +0 -2
  436. package/dist/seed/defaults/categories.js +0 -12
  437. package/dist/seed/defaults/faqs.d.ts +0 -2
  438. package/dist/seed/defaults/faqs.js +0 -40
  439. package/dist/seed/events-seed-data.d.ts +0 -7
  440. package/dist/seed/events-seed-data.js +0 -482
  441. package/dist/seed/factories/address.factory.d.ts +0 -21
  442. package/dist/seed/factories/address.factory.js +0 -44
  443. package/dist/seed/factories/bid.factory.d.ts +0 -15
  444. package/dist/seed/factories/bid.factory.js +0 -33
  445. package/dist/seed/factories/blog-post.factory.d.ts +0 -15
  446. package/dist/seed/factories/blog-post.factory.js +0 -22
  447. package/dist/seed/factories/carousel.factory.d.ts +0 -11
  448. package/dist/seed/factories/carousel.factory.js +0 -17
  449. package/dist/seed/factories/cart.factory.d.ts +0 -25
  450. package/dist/seed/factories/cart.factory.js +0 -35
  451. package/dist/seed/factories/category.factory.d.ts +0 -11
  452. package/dist/seed/factories/category.factory.js +0 -16
  453. package/dist/seed/factories/coupon.factory.d.ts +0 -21
  454. package/dist/seed/factories/coupon.factory.js +0 -43
  455. package/dist/seed/factories/faq.factory.d.ts +0 -10
  456. package/dist/seed/factories/faq.factory.js +0 -15
  457. package/dist/seed/factories/notification.factory.d.ts +0 -18
  458. package/dist/seed/factories/notification.factory.js +0 -39
  459. package/dist/seed/factories/order.factory.d.ts +0 -20
  460. package/dist/seed/factories/order.factory.js +0 -20
  461. package/dist/seed/factories/payout.factory.d.ts +0 -21
  462. package/dist/seed/factories/payout.factory.js +0 -38
  463. package/dist/seed/factories/product.factory.d.ts +0 -27
  464. package/dist/seed/factories/product.factory.js +0 -80
  465. package/dist/seed/factories/review.factory.d.ts +0 -14
  466. package/dist/seed/factories/review.factory.js +0 -52
  467. package/dist/seed/factories/session.factory.d.ts +0 -15
  468. package/dist/seed/factories/session.factory.js +0 -31
  469. package/dist/seed/factories/store.factory.d.ts +0 -23
  470. package/dist/seed/factories/store.factory.js +0 -47
  471. package/dist/seed/factories/user.factory.d.ts +0 -19
  472. package/dist/seed/factories/user.factory.js +0 -56
  473. package/dist/seed/faq-seed-data.d.ts +0 -18
  474. package/dist/seed/faq-seed-data.js +0 -1956
  475. package/dist/seed/firestore-indexes.d.ts +0 -12
  476. package/dist/seed/firestore-indexes.js +0 -31
  477. package/dist/seed/grouped-listings-seed-data.d.ts +0 -2
  478. package/dist/seed/grouped-listings-seed-data.js +0 -283
  479. package/dist/seed/history-seed-data.d.ts +0 -12
  480. package/dist/seed/history-seed-data.js +0 -70
  481. package/dist/seed/homepage-sections-seed-data.d.ts +0 -2
  482. package/dist/seed/homepage-sections-seed-data.js +0 -1018
  483. package/dist/seed/index.d.ts +0 -98
  484. package/dist/seed/index.js +0 -112
  485. package/dist/seed/lottery-entries-seed-data.d.ts +0 -2
  486. package/dist/seed/lottery-entries-seed-data.js +0 -108
  487. package/dist/seed/manifest.d.ts +0 -16
  488. package/dist/seed/manifest.js +0 -235
  489. package/dist/seed/media-assets-seed-data.d.ts +0 -22
  490. package/dist/seed/media-assets-seed-data.js +0 -5593
  491. package/dist/seed/model-composition-seed-data.d.ts +0 -15
  492. package/dist/seed/model-composition-seed-data.js +0 -9032
  493. package/dist/seed/notifications-seed-data.d.ts +0 -2
  494. package/dist/seed/notifications-seed-data.js +0 -606
  495. package/dist/seed/offers-seed-data.d.ts +0 -2
  496. package/dist/seed/offers-seed-data.js +0 -398
  497. package/dist/seed/orders-seed-data.d.ts +0 -2
  498. package/dist/seed/orders-seed-data.js +0 -845
  499. package/dist/seed/part-glossary/chunk0.d.ts +0 -9
  500. package/dist/seed/part-glossary/chunk0.js +0 -35448
  501. package/dist/seed/part-glossary/chunk1.d.ts +0 -9
  502. package/dist/seed/part-glossary/chunk1.js +0 -40494
  503. package/dist/seed/part-glossary/chunk2.d.ts +0 -9
  504. package/dist/seed/part-glossary/chunk2.js +0 -51242
  505. package/dist/seed/part-glossary/chunk3.d.ts +0 -9
  506. package/dist/seed/part-glossary/chunk3.js +0 -53337
  507. package/dist/seed/part-glossary/chunk4.d.ts +0 -9
  508. package/dist/seed/part-glossary/chunk4.js +0 -51454
  509. package/dist/seed/part-glossary-seed-data.d.ts +0 -15
  510. package/dist/seed/part-glossary-seed-data.js +0 -25
  511. package/dist/seed/payouts-seed-data.d.ts +0 -2
  512. package/dist/seed/payouts-seed-data.js +0 -302
  513. package/dist/seed/product-features-seed-data.d.ts +0 -3
  514. package/dist/seed/product-features-seed-data.js +0 -366
  515. package/dist/seed/products-art-seed-data.d.ts +0 -2
  516. package/dist/seed/products-art-seed-data.js +0 -289
  517. package/dist/seed/products-auctions-seed-data.d.ts +0 -2
  518. package/dist/seed/products-auctions-seed-data.js +0 -475
  519. package/dist/seed/products-beyblade-x-seed-data.d.ts +0 -2
  520. package/dist/seed/products-beyblade-x-seed-data.js +0 -476
  521. package/dist/seed/products-catalogue-seed-data.d.ts +0 -22
  522. package/dist/seed/products-catalogue-seed-data.js +0 -86384
  523. package/dist/seed/products-classifieds-seed-data.d.ts +0 -7
  524. package/dist/seed/products-classifieds-seed-data.js +0 -435
  525. package/dist/seed/products-digital-codes-seed-data.d.ts +0 -7
  526. package/dist/seed/products-digital-codes-seed-data.js +0 -395
  527. package/dist/seed/products-live-items-seed-data.d.ts +0 -7
  528. package/dist/seed/products-live-items-seed-data.js +0 -269
  529. package/dist/seed/products-preorders-seed-data.d.ts +0 -2
  530. package/dist/seed/products-preorders-seed-data.js +0 -360
  531. package/dist/seed/products-prize-draws-seed-data.d.ts +0 -7
  532. package/dist/seed/products-prize-draws-seed-data.js +0 -427
  533. package/dist/seed/products-spares-seed-data.d.ts +0 -2
  534. package/dist/seed/products-spares-seed-data.js +0 -368
  535. package/dist/seed/products-standard-seed-data.d.ts +0 -2
  536. package/dist/seed/products-standard-seed-data.js +0 -632
  537. package/dist/seed/products-stickers-seed-data.d.ts +0 -2
  538. package/dist/seed/products-stickers-seed-data.js +0 -319
  539. package/dist/seed/reviews-seed-data.d.ts +0 -1
  540. package/dist/seed/reviews-seed-data.js +0 -185
  541. package/dist/seed/runner.d.ts +0 -2
  542. package/dist/seed/runner.js +0 -125
  543. package/dist/seed/scammers-seed-data.d.ts +0 -2
  544. package/dist/seed/scammers-seed-data.js +0 -235
  545. package/dist/seed/seed-market-config.d.ts +0 -48
  546. package/dist/seed/seed-market-config.js +0 -199
  547. package/dist/seed/seed-purpose.d.ts +0 -299
  548. package/dist/seed/seed-purpose.js +0 -431
  549. package/dist/seed/sessions-seed-data.d.ts +0 -3
  550. package/dist/seed/sessions-seed-data.js +0 -116
  551. package/dist/seed/shipments-seed-data.d.ts +0 -5
  552. package/dist/seed/shipments-seed-data.js +0 -185
  553. package/dist/seed/site-settings-seed-data.d.ts +0 -2
  554. package/dist/seed/site-settings-seed-data.js +0 -1069
  555. package/dist/seed/store-addresses-seed-data.d.ts +0 -18
  556. package/dist/seed/store-addresses-seed-data.js +0 -71
  557. package/dist/seed/store-extensions-seed-data.d.ts +0 -11
  558. package/dist/seed/store-extensions-seed-data.js +0 -292
  559. package/dist/seed/stores-seed-data.d.ts +0 -6
  560. package/dist/seed/stores-seed-data.js +0 -242
  561. package/dist/seed/support-tickets-seed-data.d.ts +0 -16
  562. package/dist/seed/support-tickets-seed-data.js +0 -239
  563. package/dist/seed/tax-codes-seed-data.d.ts +0 -34
  564. package/dist/seed/tax-codes-seed-data.js +0 -100
  565. package/dist/seed/test-data-ttl.d.ts +0 -29
  566. package/dist/seed/test-data-ttl.js +0 -31
  567. package/dist/seed/test-utils.d.ts +0 -49
  568. package/dist/seed/test-utils.js +0 -110
  569. package/dist/seed/types.d.ts +0 -89
  570. package/dist/seed/types.js +0 -15
  571. package/dist/seed/users-seed-data.d.ts +0 -2
  572. package/dist/seed/users-seed-data.js +0 -597
  573. package/dist/seed/wishlists-seed-data.d.ts +0 -12
  574. package/dist/seed/wishlists-seed-data.js +0 -54
@@ -1,1018 +0,0 @@
1
- /*
2
- * WHY: Seeds the homepage layout β€” which sections render, in what order, with what copy.
3
- * WHAT: 26 sections (21 enabled + 5 deliberately disabled), ordered 1..26 contiguously.
4
- *
5
- * πŸ›‘ Four of those five were disabled on 2026-10-20 β€” auctions (3),
6
- * featured-bundles (9), event-raffles (13) and prize-draws (14) β€” each with its
7
- * own note on the switch that did it. A disabled row KEEPS its order slot, so
8
- * the range stays contiguous and re-enabling one puts it back where it was
9
- * rather than at the end.
10
- * `google-reviews` is a REGISTERED type with no document β€” see the note
11
- * beside the deliberate budget-tile omission below for why.
12
- *
13
- * `how-it-works` (25) and `promo-grid` (26) were in that same unseeded set and
14
- * were SEEDED 2026-10-20, on the terms the rule always allowed: there is now
15
- * real copy for them. How-it-works quotes the three-tier authenticity policy
16
- * the carousel already leads with; promo-grid routes to the four generation
17
- * categories using the same `/media/` covers those categories use. Neither
18
- * invents a claim. `testimonials` stays unseeded β€” the site has never had a
19
- * customer, so every quote would be fabricated.
20
- *
21
- * πŸ›‘ That count and range are ASSERTED, not described β€” `order` must stay unique
22
- * and contiguous. Until 2026-10-19 this header read "22 sections … 1..21" while
23
- * the file held 23 documents numbered 1..22, and `section-systems-matrix` and
24
- * `section-featured-products` BOTH claimed `order: 5`. `MarketplaceHomepageView`
25
- * tie-breaks on `updatedAt` (identical for both) and then `id.localeCompare`, so
26
- * the live running order of the homepage was decided alphabetically β€” a silent
27
- * accident, not a layout decision. The 24th document (`collection-cards`,
28
- * added the same day) closed the other half of that finding: a registered
29
- * section type with a renderer and zero seeded rows is the same class of gap,
30
- * just silent rather than colliding.
31
- *
32
- * ORDER: hero β†’ SHOP (products, auctions, pre-orders) β†’ carousel β†’ trust β†’
33
- * orient (categories, systems matrix) β†’ shop cont. (bundles) β†’ supply
34
- * (stores) β†’ social proof (reviews) β†’ engage (events, raffles, prize draws) β†’
35
- * editorial (blog) β†’ convert (seller banner, newsletter) β†’ reassure (stats,
36
- * security, community, FAQ, brands).
37
- *
38
- * πŸ›‘ Products (2), auctions (3) and pre-orders (4) were lifted above the
39
- * carousel on 2026-10-20 at the owner's request β€” real merchandise directly
40
- * under the hero, promotions below it. That OVERRIDES the research arrangement
41
- * this header used to describe (trust β†’ orient β†’ shop), so do not "restore"
42
- * the old order on the strength of the paragraphs below; they explain the
43
- * reasoning for the sections that are still in a research-driven position,
44
- * not a mandate for the three that were deliberately moved. Pre-orders came
45
- * up from 8 in a second pass, which is why the carousel/trust/categories/
46
- * matrix block reads 5 β†’ 8 rather than 4 β†’ 7.
47
- *
48
- * The systems matrix still sits immediately after the generation tiles (7 β†’ 8)
49
- * because that is where the measured leader puts it: on worldhobbyshop
50
- * "Browse Beyblade Systems & Series" (25 text links) follows "Shop Beyblades
51
- * by Generation" (6 image tiles) β€” taxonomy routing stays together. See
52
- * docs/research/competitor-crawl-2026-10/layout.md.
53
- *
54
- * Baymard's finding still drives the hero: a static hero outperforms a
55
- * carousel, and the one documented carousel win came from demoting it BELOW a
56
- * static hero. So `welcome` is first and owns the page's single <h1>; the
57
- * `carousel` is now demoted further still, under the first three product
58
- * rails, and its slide titles render as <h2>.
59
- *
60
- * COPY IS CATALOGUE-NEUTRAL on purpose. "Shop by Category" stays correct
61
- * however the catalogue changes; "Burst & X Series" goes stale the moment it
62
- * broadens. Two brand-filtered Beyblade product strips were removed for this
63
- * reason β€” and because they filtered the shared 12-item featured set
64
- * client-side, so they usually rendered empty anyway.
65
- *
66
- * πŸ›‘ Every field set here is one the renderer actually READS. Before this pass
67
- * the seed configured banner buttons, trust indicators, a features list, blog
68
- * display flags and the entire carousel config, none of which
69
- * `lib/section-renderer.tsx` forwarded. If you add a field, confirm it reaches
70
- * a component prop β€” see the config-coverage check in the plan.
71
- *
72
- * EXPORTS:
73
- * homepageSectionsSeedData β€” Array of Partial<HomepageSectionDocument> for seed runner
74
- *
75
- * @tag domain:homepage
76
- * @tag layer:seed
77
- * @tag pattern:none
78
- * @tag access:server-only
79
- * @tag consumers:seed/index.ts,seed/runner.ts
80
- * @tag sideEffects:none
81
- */
82
- import { ROUTES } from "../next/routing/route-map.js";
83
- const NOW = new Date();
84
- const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
85
- export const homepageSectionsSeedData = [
86
- // ---- 1. Hero -------------------------------------------------------------
87
- // Owns the page's single <h1>. Keep it enabled: disabling it while the
88
- // carousel stays on leaves the document with NO h1 at all.
89
- {
90
- id: "section-welcome-hero",
91
- type: "welcome",
92
- order: 1,
93
- enabled: true,
94
- config: {
95
- /*
96
- * πŸ›‘ NO AUCTIONS IN THE HERO, and nothing else that the site does not
97
- * currently do.
98
- *
99
- * The h1 read "Buy, Sell & Auction Collectibles" and the second CTA sent
100
- * visitors to /auctions β€” which `listings.listingTypes.auction: false`
101
- * now switches off (2026-10-20). The first screen of the site is the
102
- * worst place to advertise a type whose browse page returns nothing.
103
- *
104
- * The description lost "bid in live auctions" for the same reason, and
105
- * "escrow-backed payments" because that claim was withdrawn from the
106
- * seller guide and the Become-a-Seller copy on the same day.
107
- *
108
- * ⚠️ This is SEED data. The live hero is a `homepageSections` document and
109
- * is NOT rewritten by editing this file β€” change it in the admin
110
- * homepage-sections editor, or re-seed.
111
- */
112
- h1: "Buy & Sell Collectibles",
113
- subtitle: "Verified sellers, secure payments, and authenticity checks on every listing.",
114
- description: "A marketplace built for collectors β€” browse thousands of listings, reserve upcoming releases, and buy with secure, verified payments.",
115
- showCTA: true,
116
- pillLabel: "Buy, sell & collect",
117
- ctaText: "Start Shopping",
118
- ctaLink: String(ROUTES.PUBLIC.PRODUCTS),
119
- secondaryCtaText: "Explore Categories",
120
- secondaryCtaLink: String(ROUTES.PUBLIC.CATEGORIES),
121
- },
122
- createdAt: daysAgo(90),
123
- updatedAt: daysAgo(2),
124
- },
125
- // ---- 5. Promo carousel ---------------------------------------------------
126
- // "medium" rather than "tall": it now sits UNDER a full hero, so a
127
- // viewport-height band would push everything else below the fold.
128
- {
129
- id: "section-hero-carousel",
130
- type: "carousel",
131
- order: 5,
132
- enabled: true,
133
- config: {
134
- title: "Featured promotions",
135
- height: "medium",
136
- defaultAutoplayDelayMs: 6000,
137
- pauseOnHover: true,
138
- showDots: true,
139
- showArrows: true,
140
- },
141
- createdAt: daysAgo(90),
142
- updatedAt: daysAgo(5),
143
- },
144
- // ---- 6. Trust bar --------------------------------------------------------
145
- // Research: ~80% of attention is above the fold and the first 3–4 trust
146
- // elements carry nearly all of the lift.
147
- {
148
- id: "section-trust-indicators",
149
- type: "trust-indicators",
150
- order: 6,
151
- enabled: true,
152
- config: {
153
- title: "Why buyers trust us",
154
- indicators: [
155
- {
156
- id: "trust-authenticity",
157
- icon: "shield-check",
158
- title: "Authenticity checked",
159
- description: "Every seller is verified before their first listing goes live.",
160
- },
161
- {
162
- // Was "Escrow-backed payments". The escrow claim was withdrawn from
163
- // the seller guide, the Become-a-Seller copy and the hero description
164
- // on 2026-10-20; a trust badge is the last place it should have
165
- // survived, because it is the claim a buyer is most likely to rely
166
- // on. The `id` is deliberately unchanged β€” it is this seed document's
167
- // identity, not its copy.
168
- id: "trust-escrow",
169
- icon: "lock",
170
- title: "Secure payments",
171
- description: "Your money reaches the seller after the item is delivered and accepted.",
172
- },
173
- {
174
- id: "trust-returns",
175
- icon: "rotate-ccw",
176
- title: "Straightforward returns",
177
- description: "Report a problem within the return window and we step in.",
178
- },
179
- {
180
- id: "trust-support",
181
- icon: "message-circle",
182
- title: "Real human support",
183
- description: "Questions about an order reach a person, not a form.",
184
- },
185
- ],
186
- },
187
- createdAt: daysAgo(90),
188
- updatedAt: daysAgo(20),
189
- },
190
- // ---- 7. Orient: categories ----------------------------------------------
191
- // Baymard's top homepage guideline, and the main internal-linking surface.
192
- {
193
- id: "section-collectibles-categories",
194
- type: "categories",
195
- order: 7,
196
- enabled: true,
197
- config: {
198
- title: "Shop by Category",
199
- /*
200
- * 6, from the `categories-generation-tiles` SECTION_TEMPLATE β€” and 6 is a
201
- * measured number, not a round one: worldhobbyshop's "Shop Beyblades by
202
- * Generation" is exactly six tiles (Beyblade X, Burst, Metal, Plastic
203
- * Generation, Launchers & Grips, Stadiums & Arenas), 3 columns at 1280 and
204
- * 1 at 390. See docs/research/competitor-crawl-2026-10/layout.md.
205
- */
206
- maxCategories: 6,
207
- viewMoreLabel: "All categories β†’",
208
- autoScroll: false,
209
- scrollInterval: 5000,
210
- loop: true,
211
- },
212
- createdAt: daysAgo(90),
213
- updatedAt: daysAgo(10),
214
- },
215
- // ---- 2–4, 9. Shop --------------------------------------------------------
216
- // Products (2), auctions (3) and pre-orders (4) sit directly under the hero,
217
- // ABOVE the carousel β€” a merchandising-first top of page, asked for
218
- // 2026-10-20. Bundles (9) stay below the orientation band.
219
- //
220
- // maxItems stays <= 12 everywhere: SSR supplies exactly 12 via
221
- // getFeatured*(12), so a larger cap would promise rows that cannot fill.
222
- {
223
- id: "section-featured-products",
224
- type: "products",
225
- order: 2,
226
- enabled: true,
227
- config: {
228
- title: "Featured Products",
229
- subtitle: "Hand-picked listings from verified sellers.",
230
- /*
231
- * 8, from the `products-recently-added` SECTION_TEMPLATE, which took it
232
- * from worldhobbyshop's one product rail β€” measured 2026-10-19 at exactly
233
- * 8 cards, 4 columns (docs/research/competitor-crawl-2026-10/layout.md).
234
- * The SEO leader ships the fewest products on its homepage; its advantage
235
- * is taxonomy routing, not merchandising volume.
236
- *
237
- * Safe against the `<= 12` rule above: SSR still supplies 12 via
238
- * getFeatured*(12) and this renders 8 of them, so it can never under-fill.
239
- * The 4-row over-fetch is deliberate β€” `getFeaturedProducts(12)` is shared
240
- * with the auctions and pre-orders rails, so narrowing it to match would
241
- * couple three sections' counts to one fetch.
242
- */
243
- maxItems: 8,
244
- viewMoreLabel: "View all products β†’",
245
- rows: 1,
246
- autoScroll: false,
247
- scrollInterval: 5000,
248
- loop: true,
249
- },
250
- createdAt: daysAgo(90),
251
- updatedAt: daysAgo(1),
252
- },
253
- /*
254
- * πŸ›‘ DISABLED, NOT DELETED β€” and the `order: 3` slot is held.
255
- *
256
- * `listings.listingTypes.auction: false` already stops this rail rendering
257
- * (HOMEPAGE_SECTION_LISTING_TYPE in MarketplaceHomepageView), so `enabled:
258
- * false` is the second of two locks, not the only one. It is worth having
259
- * because it is the one an ADMIN sees: a section listed as enabled in the
260
- * homepage builder, silently filtered out at render, reads as a bug in the
261
- * builder. Both switches say the same thing now.
262
- *
263
- * The copy and the "⚑ LIVE AUCTIONS" pill stay exactly as they were, so
264
- * re-enabling the type and this flag restores the rail intact.
265
- */
266
- {
267
- id: "section-live-auctions",
268
- type: "auctions",
269
- order: 3,
270
- enabled: false,
271
- config: {
272
- title: "Live Auctions",
273
- subtitle: "Bidding open now β€” place yours before the timer runs out.",
274
- maxAuctions: 12,
275
- viewMoreLabel: "View all auctions β†’",
276
- rows: 1,
277
- autoScroll: false,
278
- scrollInterval: 5000,
279
- loop: true,
280
- },
281
- createdAt: daysAgo(90),
282
- updatedAt: daysAgo(1),
283
- },
284
- {
285
- id: "section-pre-orders",
286
- type: "pre-orders",
287
- order: 4,
288
- enabled: true,
289
- config: {
290
- title: "Reserve Before It Ships",
291
- subtitle: "Lock in upcoming releases with a deposit.",
292
- maxItems: 12,
293
- viewMoreLabel: "View all pre-orders β†’",
294
- rows: 1,
295
- autoScroll: false,
296
- scrollInterval: 5000,
297
- loop: true,
298
- },
299
- createdAt: daysAgo(90),
300
- updatedAt: daysAgo(3),
301
- },
302
- // Disabled 2026-10-20 with `listings.categoryTypes.bundle: false`. Same
303
- // two-lock arrangement as the auctions rail above β€” see that note.
304
- {
305
- id: "section-featured-bundles",
306
- type: "featured-bundles",
307
- order: 9,
308
- enabled: false,
309
- config: {
310
- title: "Curated Bundles",
311
- subtitle: "Multiple items, one discounted price.",
312
- maxItems: 8,
313
- showSavingsBadge: true,
314
- viewMoreLabel: "View all bundles β†’",
315
- },
316
- createdAt: daysAgo(60),
317
- updatedAt: daysAgo(4),
318
- },
319
- // ---- 9. Supply side ------------------------------------------------------
320
- {
321
- id: "section-featured-stores",
322
- type: "stores",
323
- order: 10,
324
- enabled: true,
325
- config: {
326
- title: "Featured Stores",
327
- subtitle: "Sellers with a track record collectors rate highly.",
328
- maxStores: 8,
329
- viewMoreLabel: "View all stores β†’",
330
- autoScroll: false,
331
- scrollInterval: 6000,
332
- loop: true,
333
- },
334
- createdAt: daysAgo(90),
335
- updatedAt: daysAgo(8),
336
- },
337
- // ---- 10. Social proof ----------------------------------------------------
338
- {
339
- id: "section-collector-reviews",
340
- type: "reviews",
341
- order: 11,
342
- enabled: true,
343
- config: {
344
- title: "What Buyers Say",
345
- maxReviews: 12,
346
- itemsPerView: 3,
347
- mobileItemsPerView: 1,
348
- viewMoreLabel: "See all reviews β†’",
349
- autoScroll: true,
350
- scrollInterval: 5000,
351
- loop: true,
352
- },
353
- createdAt: daysAgo(90),
354
- updatedAt: daysAgo(6),
355
- },
356
- // ---- 11–13. Engage -------------------------------------------------------
357
- {
358
- id: "section-upcoming-events",
359
- type: "events",
360
- order: 12,
361
- enabled: true,
362
- config: {
363
- title: "Events & Offers",
364
- subtitle: "Sales, giveaways and community events running now.",
365
- maxEvents: 6,
366
- viewMoreLabel: "View all events β†’",
367
- autoScroll: false,
368
- scrollInterval: 6000,
369
- loop: true,
370
- },
371
- createdAt: daysAgo(90),
372
- updatedAt: daysAgo(7),
373
- },
374
- {
375
- id: "section-event-raffles",
376
- type: "event-raffles",
377
- /*
378
- * πŸ›‘ DISABLED, and here `enabled: false` is the ONLY lock there is.
379
- *
380
- * Raffles and spin wheels are EVENT types, not listing types and not
381
- * category types, so no Site Settings toggle reaches them and
382
- * `HOMEPAGE_SECTION_LISTING_TYPE` has nothing to map them to. The same gap
383
- * put Lotteries, Bundles and Promotions in the footer's hand-written hidden
384
- * block (src/constants/navigation.tsx) β€” a per-document flag is the whole
385
- * mechanism for this one, which is exactly why it is spelled out.
386
- */
387
- order: 13,
388
- enabled: false,
389
- config: {
390
- title: "Raffles & Spin Wheels",
391
- subtitle: "Enter for free and see if the odds are with you.",
392
- maxItems: 6,
393
- raffleType: "all",
394
- showEntryCount: true,
395
- showCountdown: true,
396
- },
397
- createdAt: daysAgo(30),
398
- updatedAt: daysAgo(3),
399
- },
400
- {
401
- id: "section-prize-draws",
402
- type: "prize-draws",
403
- // Disabled 2026-10-20 with `listings.listingTypes.prize-draw: false` β€” the
404
- // same two-lock arrangement as the auctions rail.
405
- order: 14,
406
- enabled: false,
407
- config: {
408
- title: "Prize Draws",
409
- subtitle: "Buy an entry for a shot at something rare.",
410
- maxItems: 6,
411
- // "open" is deliberate β€” a closed draw is not enterable, so surfacing it
412
- // on the homepage would be an invitation to a dead end.
413
- revealStatus: "open",
414
- showCountdown: true,
415
- showEntriesRemaining: true,
416
- },
417
- createdAt: daysAgo(45),
418
- updatedAt: daysAgo(3),
419
- },
420
- // ---- 14. Editorial -------------------------------------------------------
421
- {
422
- id: "section-collector-blog",
423
- type: "blog-articles",
424
- order: 15,
425
- enabled: true,
426
- config: {
427
- title: "From Our Blog",
428
- // 4, from the `blog-four-excerpts` SECTION_TEMPLATE (beybladeartshop ships
429
- // four article excerpts). Safe against the SSR fetch, which supplies 6 via
430
- // getFeaturedBlogPosts(6) β€” this renders 4 of them.
431
- maxArticles: 4,
432
- viewMoreLabel: "View all posts β†’",
433
- showReadTime: true,
434
- showAuthor: true,
435
- showThumbnails: true,
436
- },
437
- createdAt: daysAgo(90),
438
- updatedAt: daysAgo(12),
439
- },
440
- // ---- 15. Seller CTA ------------------------------------------------------
441
- // Same document as the old "Beyblade banner", re-purposed. The id keeps its
442
- // stale name on purpose: renaming it would create a fresh document and orphan
443
- // whatever an admin has already edited on this one.
444
- {
445
- id: "section-beyblade-banner",
446
- type: "banner",
447
- order: 16,
448
- enabled: true,
449
- config: {
450
- height: "md",
451
- /* Real imagery instead of a `seedPhoto()` grey tile β€” see the MEDIA block
452
- in carousel-slides-seed-data.ts for why that helper produces one of six
453
- flat SVG rectangles and why a third-party host is not the alternative.
454
- πŸ›‘ A seller pitch wants a HUMAN packing an order, which the wiki corpus
455
- does not contain; this generation cover is a stand-in until a real photo
456
- exists for the slot. */
457
- backgroundImage: "/media/category-beyblade-x-image",
458
- content: {
459
- title: "Have collectibles to sell?",
460
- subtitle: "Open a store in minutes.",
461
- description: "List for free, reach collectors across the country, and get paid on a predictable schedule.",
462
- },
463
- buttons: [
464
- { text: "Start selling β†’", link: String(ROUTES.PUBLIC.SELLER_GUIDE), variant: "primary" },
465
- { text: "Browse the marketplace", link: String(ROUTES.PUBLIC.PRODUCTS), variant: "outline" },
466
- ],
467
- },
468
- createdAt: daysAgo(90),
469
- updatedAt: daysAgo(9),
470
- },
471
- // ---- 16. Newsletter ------------------------------------------------------
472
- // Inline with a real reason to subscribe, not an overlay β€” 59% of sites do
473
- // overlay signup badly, per Baymard.
474
- {
475
- id: "section-newsletter",
476
- type: "newsletter",
477
- order: 17,
478
- enabled: true,
479
- config: {
480
- title: "Get new listings first",
481
- description: "One email a week: fresh drops, auctions closing soon, and price cuts on your saved categories.",
482
- privacyText: "We never share your address. Unsubscribe in one click.",
483
- privacyLink: String(ROUTES.PUBLIC.PRIVACY),
484
- },
485
- createdAt: daysAgo(90),
486
- updatedAt: daysAgo(14),
487
- },
488
- // ---- 17–21. Reassure -----------------------------------------------------
489
- // Stats moved DOWN from 3rd. Numbers are corroboration for a visitor who is
490
- // already interested; they answer no question a first-time visitor is asking
491
- // at the top of the page.
492
- {
493
- id: "section-platform-stats",
494
- type: "stats",
495
- order: 18,
496
- enabled: true,
497
- config: {
498
- /*
499
- * πŸ›‘ VERIFIABLE FACTS, not volume claims.
500
- *
501
- * This read "200+ Listings Β· 8+ Verified Sellers Β· 35+ Buyer Reviews Β·
502
- * 50+ Orders Completed". Those were `source: "live"` FALLBACKS, shown
503
- * whenever the metric fetch fails β€” and all four were falsifiable in the
504
- * same breath as the page that showed them: `realListingsOnly()` in
505
- * seed-cli.mjs loads on the order of a dozen products, and the site has
506
- * never taken a real order, so "50+ Orders Completed" was a number about
507
- * nothing. A visitor who reads it and then browses the catalogue
508
- * concludes the whole page is decoration.
509
- *
510
- * The replacements are things a visitor can CHECK by clicking through,
511
- * and each was counted from source in the change that wrote it:
512
- * - parts `PART_LEAF_COUNT` (_helpers/category-parts.ts:17528) = 2490.
513
- * πŸ›‘ CLAUDE.md says 752; that is stale, the corpus grew.
514
- * - generations 4 tier-1 rows under `category-spinning-tops`.
515
- * - brands 28 `BRAND_SEED_INPUTS` entries (`BRAND_ROW_COUNT`).
516
- * Re-count before editing any of them rather than trusting this comment.
517
- *
518
- * `total_listings` stays LIVE and keeps a `"0"` fallback: a live number is
519
- * verifiable by definition, and a zero fallback can only ever understate.
520
- * `total_orders` and `total_reviews` are dropped rather than zeroed β€” a
521
- * giant "0" in 48pt type is worse than not raising the subject.
522
- *
523
- * `iconName` is required on a static stat; a live one derives its glyph
524
- * from `metric` via STAT_PRESET_ICON.
525
- */
526
- title: "By the numbers",
527
- stats: [
528
- { key: "products", label: "Listings", value: "0", source: "live", metric: "total_listings", suffix: "+" },
529
- { key: "parts", label: "Parts catalogued", value: "2,490", source: "static", iconName: "spares" },
530
- { key: "generations", label: "Generations covered", value: "4", source: "static", iconName: "archive" },
531
- { key: "brands", label: "Brands", value: "28", source: "static", iconName: "deals" },
532
- ],
533
- },
534
- createdAt: daysAgo(90),
535
- updatedAt: daysAgo(15),
536
- },
537
- {
538
- id: "section-platform-features",
539
- type: "features",
540
- order: 19,
541
- enabled: true,
542
- config: {
543
- title: "Security You Can Trust",
544
- pillLabel: "Built for trust",
545
- learnMoreLabel: "Learn about our security β†’",
546
- learnMoreLink: String(ROUTES.PUBLIC.SECURITY),
547
- items: [
548
- {
549
- key: "escrow",
550
- title: "Escrow on every order",
551
- description: "Funds reach the seller only after the item is delivered and accepted.",
552
- },
553
- {
554
- key: "verified-sellers",
555
- title: "Verified sellers only",
556
- description: "Identity and payout details are checked before a store can publish.",
557
- },
558
- {
559
- key: "scam-registry",
560
- title: "Public scam registry",
561
- description: "Reported bad actors are recorded so buyers can check before they pay.",
562
- },
563
- {
564
- key: "encrypted-data",
565
- title: "Encrypted personal data",
566
- description: "Addresses, phone numbers and payout details are encrypted at rest.",
567
- },
568
- ],
569
- },
570
- createdAt: daysAgo(90),
571
- updatedAt: daysAgo(11),
572
- },
573
- {
574
- id: "section-whatsapp-community",
575
- type: "whatsapp-community",
576
- order: 20,
577
- enabled: true,
578
- config: {
579
- title: "Join the community",
580
- description: "Deal alerts, auction reminders, and early access to drops.",
581
- /* πŸ›‘ The line that used to sit here β€” "Keep this link verbatim β€” a
582
- tester-checklist case asserts it" β€” was FALSE and is deleted. Verified:
583
- zero hits for `chat.whatsapp.com` anywhere under
584
- `appkit/src/features/tester/seed-data/`. It had also outlived its
585
- subject: the value it was protecting (a bare `https://chat.whatsapp.com/`
586
- with no invite code) is gone, so the comment defended a string that no
587
- longer existed while discouraging anyone from touching the field. */
588
- // Left unset: a bare chat.whatsapp.com URL is not a valid invite code and
589
- // opens a page that resolves to no group. The real link is env-owned
590
- // (WHATSAPP_GROUP_INVITE) and reaches the card through appkit.config.
591
- groupLink: undefined,
592
- benefits: [
593
- "Deal alerts before they hit the homepage",
594
- "Reminders when auctions you watch are closing",
595
- "Early access to limited drops",
596
- "Direct line to the team for order questions",
597
- ],
598
- buttonText: "Join the group",
599
- },
600
- createdAt: daysAgo(90),
601
- updatedAt: daysAgo(13),
602
- },
603
- {
604
- id: "section-homepage-faq",
605
- type: "faq",
606
- order: 21,
607
- enabled: true,
608
- config: {
609
- title: "Frequently Asked Questions",
610
- subtitle: "The questions new buyers ask most.",
611
- showOnHomepage: true,
612
- /*
613
- * B6b β€” 6 β†’ 10. The FAQ block is the densest single SEO win on the page
614
- * (worldhobbyshop's 10-question block is a measured part of why it leads
615
- * the fifteen on SEO) and it is an answer-engine surface, so it feeds
616
- * `faqJsonLd`. 20 rows are flagged `showOnHomepage`; showing 10 of them
617
- * is the intended shape.
618
- */
619
- displayCount: 10,
620
- linkToFullPage: true,
621
- viewMoreLabel: "View all FAQs β†’",
622
- showCategoryTabs: true,
623
- /*
624
- * πŸ›‘ EMPTY ON PURPOSE β€” the tabs DERIVE from the items actually shown.
625
- *
626
- * This listed `["shipping_delivery", "returns_refunds",
627
- * "orders_payment"]` and measured live on 2026-10-12 **all three
628
- * rendered EMPTY PANELS**, while the three categories whose rows were
629
- * actually displayed (`general`, `product_information`,
630
- * `fees_and_taxes`) had no tab at all.
631
- *
632
- * The cause is that the two halves answer different questions and
633
- * neither knows about the other: the ITEMS come from
634
- * `getHomepageFAQs()` β€” `showOnHomepage` ordered by `priority` DESC,
635
- * then sliced to `displayCount` β€” while the TABS were a hand-written
636
- * list. Raise a row's priority, or add a higher-priority row in another
637
- * category (B6b's FAQ half added 22, including a whole new
638
- * `fees_and_taxes`), and the slice moves out from under the tabs
639
- * silently. That is Root Cause #72's shape: a tab you can click with
640
- * nothing behind it.
641
- *
642
- * `FAQSection` already derives tabs from its items when `tabs` is empty
643
- * (`if (tabsProp && tabsProp.length > 0) return tabsProp;`), so an empty
644
- * array makes an empty tab STRUCTURALLY IMPOSSIBLE rather than something
645
- * to re-sync by hand. A hand-maintained enumeration beside a query is
646
- * the defect, not the list's contents.
647
- *
648
- * πŸ›‘ `[]` rather than deleting the key, because `appkit-seed load` is a
649
- * MERGE write and cannot remove a field β€” dropping it from the seed
650
- * would leave the three stale values in Firestore forever and the fix
651
- * would read as applied while changing nothing.
652
- */
653
- visibleTabs: [],
654
- allowMultipleOpen: false,
655
- defaultOpenCount: 1,
656
- /*
657
- * πŸ›‘ NOT a filter, despite the name. The renderer uses this ONLY as a
658
- * fallback tab list when `visibleTabs` is empty
659
- * (`cfg?.visibleTabs?.length ? cfg.visibleTabs : cfg?.categories`), and
660
- * the items are never filtered by it. So a category absent from here is
661
- * still displayed β€” which is why `fees_and_taxes` rows appear on the
662
- * homepage today while being absent from this list.
663
- *
664
- * Emptied too, or it would simply become the hand-written tab list this
665
- * change exists to delete.
666
- */
667
- categories: [],
668
- },
669
- createdAt: daysAgo(90),
670
- updatedAt: daysAgo(16),
671
- },
672
- {
673
- id: "section-top-brands",
674
- type: "brands",
675
- order: 22,
676
- enabled: true,
677
- config: {
678
- title: "Top Brands",
679
- subtitle: "Browse by the makers collectors look for.",
680
- maxBrands: 12,
681
- viewMoreLabel: "All brands β†’",
682
- autoScroll: false,
683
- scrollInterval: 5000,
684
- loop: true,
685
- },
686
- createdAt: daysAgo(90),
687
- updatedAt: daysAgo(18),
688
- },
689
- // ---- Disabled ------------------------------------------------------------
690
- // Kept, NOT deleted: the tester case `sections-social-feed-hidden` asserts a
691
- // disabled section does not render, and deleting the document would make that
692
- // case untestable rather than passing.
693
- {
694
- id: "section-social-feed-instagram",
695
- type: "social-feed",
696
- order: 23,
697
- enabled: false,
698
- config: {
699
- title: "Follow along",
700
- subtitle: "New arrivals and community highlights.",
701
- platform: "instagram",
702
- handle: "letitrip.in",
703
- postType: "all",
704
- count: 9,
705
- layout: "grid",
706
- showCaption: true,
707
- showStats: false,
708
- },
709
- createdAt: daysAgo(90),
710
- updatedAt: daysAgo(25),
711
- },
712
- /*
713
- * REMOVED β€” `section-brand-takara-tomy` and `section-brand-beyblade`.
714
- *
715
- * Both were `products` sections with a `filterByBrand`. All three products
716
- * sections share ONE `getFeaturedProducts(12)` result and the brand filter is
717
- * applied client-side, so each strip filtered the same twelve rows and
718
- * usually rendered empty. They were also the most catalogue-specific thing on
719
- * the page.
720
- *
721
- * πŸ›‘ `appkit-seed load` UPSERTS and never deletes. Dropping them from this
722
- * array does not remove them from Firestore β€” delete both documents at
723
- * /admin/sections after seeding, or they keep rendering.
724
- */
725
- /*
726
- * ── B6b β€” THE SYSTEMS MATRIX ─────────────────────────────────────────────
727
- *
728
- * worldhobbyshop's single biggest SEO asset, and it is TAXONOMY ROUTING
729
- * rather than merchandising: 25 internal links telling a crawler which
730
- * sub-collections exist. It is most of why they have 79 unique internal
731
- * links (BAS has 57) while running the FEWEST products and words on their
732
- * homepage of the fifteen crawled β€” 8 product cards and 1,816 words.
733
- *
734
- * πŸ›‘ `custom-cards`, NOT `collection-cards`, and the plan had this wrong.
735
- * `collection-cards` is capped at `COLLECTION_CARDS_MAX_ENTRIES = 3` and its
736
- * entries are LIVE-CONTENT queries (`{type, limit, categorySlug}`), so it
737
- * cannot express a link matrix at all. `custom-cards` carries
738
- * `cards[].buttons[]` of `{label, href}`, which is exactly a matrix.
739
- *
740
- * πŸ›‘ Every href is a REAL post-B5 category id, read off `categoriesSeedData`
741
- * rather than typed from memory. A dead link here is the Root Cause #33
742
- * shape on the routing axis β€” it 404s, and `audit-nav-page-wiring` does not
743
- * reach section configs.
744
- *
745
- * No prices anywhere, which is what makes this safe where a price-band tile
746
- * is not β€” see the note below the array.
747
- */
748
- {
749
- id: "section-systems-matrix",
750
- type: "custom-cards",
751
- order: 8,
752
- enabled: true,
753
- config: {
754
- title: "Every system, every part family",
755
- layout: "grid",
756
- columns: 4,
757
- autoScroll: false,
758
- loop: false,
759
- cards: [
760
- {
761
- id: "matrix-original",
762
- eyebrow: "1999–2003",
763
- title: "Beyblade Original",
764
- body: "Four part systems in four years, and they do not interchange. Plastic Generation through Heavy Metal System.",
765
- buttons: [
766
- { label: "Plastic Generation", href: "/categories/category-original-plastic-gen", variant: "ghost" },
767
- { label: "Spin Gear", href: "/categories/category-original-spin-gear", variant: "ghost" },
768
- { label: "Magnacore", href: "/categories/category-original-magnacore", variant: "ghost" },
769
- { label: "Engine Gear", href: "/categories/category-original-engine-gear", variant: "ghost" },
770
- { label: "Heavy Metal System", href: "/categories/category-original-hms", variant: "ghost" },
771
- { label: "Parts", href: "/categories/category-original-parts", variant: "outline" },
772
- { label: "Launchers", href: "/categories/category-original-launchers", variant: "outline" },
773
- ],
774
- },
775
- {
776
- id: "matrix-metal",
777
- eyebrow: "2008–2013",
778
- title: "Metal Fight",
779
- body: "The tuning era, and the only generation where loose parts outnumber complete tops.",
780
- buttons: [
781
- { label: "Metal System", href: "/categories/category-metal-phws", variant: "ghost" },
782
- { label: "Metal Fusion", href: "/categories/category-metal-fusion", variant: "ghost" },
783
- { label: "Metal Masters", href: "/categories/category-metal-masters", variant: "ghost" },
784
- { label: "Metal Fury (4D)", href: "/categories/category-metal-fury-4d", variant: "ghost" },
785
- { label: "Shogun Steel", href: "/categories/category-metal-shogun-steel", variant: "ghost" },
786
- { label: "Parts", href: "/categories/category-metal-parts", variant: "outline" },
787
- { label: "Launchers", href: "/categories/category-metal-launchers", variant: "outline" },
788
- ],
789
- },
790
- {
791
- id: "matrix-burst",
792
- eyebrow: "2015–2023",
793
- title: "Beyblade Burst",
794
- body: "Seven waves of the bursting mechanic, from single-layer Classic to Burst Ultimate.",
795
- buttons: [
796
- { label: "Burst Classic", href: "/categories/category-burst-classic", variant: "ghost" },
797
- { label: "Burst God", href: "/categories/category-burst-god", variant: "ghost" },
798
- { label: "Cho-Z", href: "/categories/category-burst-cho-z", variant: "ghost" },
799
- { label: "GT", href: "/categories/category-burst-gt", variant: "ghost" },
800
- { label: "Superking", href: "/categories/category-burst-superking", variant: "ghost" },
801
- { label: "Dynamite Battle", href: "/categories/category-burst-db", variant: "ghost" },
802
- { label: "Burst Ultimate", href: "/categories/category-burst-bu", variant: "ghost" },
803
- { label: "Parts", href: "/categories/category-burst-parts", variant: "outline" },
804
- ],
805
- },
806
- {
807
- id: "matrix-x",
808
- eyebrow: "2023–",
809
- title: "Beyblade X",
810
- body: "The Xtreme Line rail is the centre of the design β€” blades, ratchets and bits, and a stadium that is part of the game.",
811
- buttons: [
812
- { label: "Basic Line", href: "/categories/category-x-basic", variant: "ghost" },
813
- { label: "Unique Line (UX)", href: "/categories/category-x-unique-ux", variant: "ghost" },
814
- { label: "Custom Line (CX)", href: "/categories/category-x-custom-cx", variant: "ghost" },
815
- { label: "X-Over Project", href: "/categories/category-x-over", variant: "ghost" },
816
- { label: "Parts", href: "/categories/category-x-parts", variant: "outline" },
817
- { label: "Launchers", href: "/categories/category-x-launchers", variant: "outline" },
818
- { label: "Stadiums", href: "/categories/category-x-stadiums", variant: "outline" },
819
- ],
820
- },
821
- ],
822
- },
823
- createdAt: daysAgo(1),
824
- updatedAt: daysAgo(1),
825
- },
826
- /*
827
- * `collection-cards` had a renderer and a builder with zero seeded rows β€” a
828
- * type nobody ever saw, structurally identical to 22 missing-order or
829
- * mis-ordered sections elsewhere in this file: a gap only a human reading
830
- * the schema would ever notice.
831
- *
832
- * πŸ›‘ Deliberately scoped to `categories` / `brands` / `stores` β€” the three
833
- * axes that are PERMANENT regardless of product count. Even if every one of
834
- * the 1,237 generated catalogue products were deleted, these three entry
835
- * types would still resolve to real, populated rows: 1,185 categories, 28
836
- * brand rows, 5 stores, all seeded independently of the product catalogue.
837
- * A `"products"` or `"auctions"` entry here would be the opposite β€” a card
838
- * that goes empty the moment the catalogue does, on a section whose entire
839
- * point is to always have something to show.
840
- */
841
- {
842
- id: "section-top-collections",
843
- type: "collection-cards",
844
- order: 24,
845
- enabled: true,
846
- config: {
847
- title: "Explore the Marketplace",
848
- subtitle: "Three ways into the catalogue that never go empty.",
849
- layout: "grid",
850
- itemsPerRow: 3,
851
- showCollectionTabs: false,
852
- collections: [
853
- { type: "categories", label: "Shop by Generation", limit: 6 },
854
- { type: "brands", label: "Shop by Brand", limit: 8 },
855
- { type: "stores", label: "Verified Sellers", limit: 5 },
856
- ],
857
- cta: { label: "View all categories β†’", href: String(ROUTES.PUBLIC.CATEGORIES), variant: "text" },
858
- },
859
- createdAt: daysAgo(1),
860
- updatedAt: daysAgo(1),
861
- },
862
- /*
863
- * ---- 25. How it works ----------------------------------------------------
864
- *
865
- * `how-it-works` and `promo-grid` (26) were registered types with renderers,
866
- * admin create-picker entries and ZERO seeded rows β€” so both returned `null`
867
- * and the page was missing the two blocks a 2026 marketplace homepage most
868
- * obviously has. They were left unseeded on the principle that this file must
869
- * not invent placeholder content, which was the right call: the reason they
870
- * can be seeded NOW is that there is real, checkable copy to put in them.
871
- *
872
- * πŸ›‘ Every step below is a claim the site actually honours. No "ships in 24
873
- * hours", no "100% buyer protection" β€” the authenticity labelling in step 2
874
- * is the one genuine differentiator the carousel already leads with, quoted
875
- * from the same policy.
876
- *
877
- * πŸ›‘ NO BIDDING STEP. `listings.listingTypes.auction` is false, so a step
878
- * telling visitors to place a bid would route them to a browse page with
879
- * nothing in it.
880
- *
881
- * πŸ›‘ PLACEMENT IS PROVISIONAL. Appended at 25/26 rather than inserted mid-page
882
- * (how-it-works belongs nearer the top, after the trust bar) because the
883
- * section order is being tuned with the owner in a parallel change and
884
- * renumbering 24 rows underneath that would collide. Reposition from
885
- * /admin/sections, which is cheaper than a reseed.
886
- */
887
- {
888
- id: "section-how-it-works",
889
- type: "how-it-works",
890
- order: 25,
891
- enabled: true,
892
- config: {
893
- title: "How buying here works",
894
- subtitle: "Three steps, and the second one is the part other marketplaces skip.",
895
- pillLabel: "New here?",
896
- ctaLabel: "Browse the catalogue β†’",
897
- ctaLink: String(ROUTES.PUBLIC.PRODUCTS),
898
- steps: [
899
- {
900
- number: 1,
901
- iconKey: "search",
902
- title: "Find the piece",
903
- desc: "Filter by generation, part family, condition and price across every seller on the marketplace.",
904
- },
905
- {
906
- number: 2,
907
- iconKey: "verify",
908
- title: "Read the authenticity label",
909
- desc: "Every listing carries one of three labels β€” original, reproduction or unverified. If a seller does not say which, it reads β€œunverified”; we will not claim β€œoriginal” on their behalf.",
910
- },
911
- {
912
- number: 3,
913
- iconKey: "lock",
914
- title: "Buy with the seller verified",
915
- desc: "Identity and payout details are checked before a store can publish, and your address and phone number are encrypted at rest.",
916
- },
917
- ],
918
- },
919
- createdAt: daysAgo(1),
920
- updatedAt: daysAgo(1),
921
- },
922
- /*
923
- * ---- 26. Promo grid ------------------------------------------------------
924
- *
925
- * The always-dark 4-tile editorial mosaic: one large slot plus three, each a
926
- * full-bleed image under a bottom-up scrim. Routes to the four generations,
927
- * which is the one set of destinations guaranteed to be populated however the
928
- * product catalogue changes β€” a promo tile pointing at an empty page is worse
929
- * than no tile.
930
- *
931
- * πŸ›‘ `image` is a `/media/<shortId>` slug backed by a real `mediaAssets` row,
932
- * never `seedPhoto()` (six flat grey tiles) and never a third-party host
933
- * (Root Cause #104). These four covers are the same ones the generation
934
- * categories use, so they are known-present.
935
- *
936
- * πŸ›‘ The component caps at `PROMO_GRID_MAX_BANNERS` (4) and silently drops a
937
- * fifth β€” the layout has exactly one hero slot and three regular ones.
938
- */
939
- {
940
- id: "section-generation-promos",
941
- type: "promo-grid",
942
- order: 26,
943
- enabled: true,
944
- config: {
945
- eyebrow: "FOUR GENERATIONS",
946
- heading: "Pick your era",
947
- banners: [
948
- {
949
- id: "promo-beyblade-x",
950
- title: "Beyblade X",
951
- ctaLabel: "Shop Beyblade X",
952
- ctaUrl: "/categories/category-beyblade-x",
953
- image: "/media/category-beyblade-x-image",
954
- },
955
- {
956
- id: "promo-beyblade-burst",
957
- title: "Burst",
958
- ctaLabel: "Shop Burst",
959
- ctaUrl: "/categories/category-beyblade-burst",
960
- image: "/media/category-beyblade-burst-image",
961
- },
962
- {
963
- id: "promo-beyblade-metal",
964
- title: "Metal Fight",
965
- ctaLabel: "Shop Metal Fight",
966
- ctaUrl: "/categories/category-beyblade-metal",
967
- image: "/media/category-beyblade-metal-image",
968
- },
969
- {
970
- id: "promo-beyblade-original",
971
- title: "The Originals",
972
- ctaLabel: "Shop the originals",
973
- ctaUrl: "/categories/category-beyblade-original",
974
- image: "/media/category-beyblade-original-image",
975
- },
976
- ],
977
- },
978
- createdAt: daysAgo(1),
979
- updatedAt: daysAgo(1),
980
- },
981
- /*
982
- * πŸ›‘ `google-reviews` stays DELIBERATELY UNSEEDED β€” not an oversight, the
983
- * same decision already made for `googleMapsApiKey`/`googlePlaceId` in
984
- * `site-settings-seed-data.ts`: those are seeded `""` on purpose, because
985
- * their consumers (`GoogleReviewsSectionConfig.placeId` is this section's
986
- * only REQUIRED field) read them directly and would treat a placeholder as
987
- * a usable credential, producing a failed, possibly BILLED Google Places
988
- * API call instead of skipping cleanly.
989
- *
990
- * Reviews pulled from this section are real third-party content keyed to a
991
- * real Google Business Profile this project does not have. Fabricating a
992
- * `placeId` would either hit Google's API with an invalid key (cost, for a
993
- * call that can never succeed) or β€” worse β€” a VALID placeId for a real,
994
- * unrelated business, rendering someone else's reviews as this store's own.
995
- * Neither is a seed-data problem to paper over; it is a real business
996
- * prerequisite (a Google Business Profile must exist) that has not happened
997
- * yet. The type stays in `SectionType` and `SECTION_REGISTRY` β€” it is a real
998
- * feature with zero fabricated data, not a bug.
999
- */
1000
- /*
1001
- * πŸ›‘ TCI's five BUDGET TILES ("Under β‚Ή499 / β‚Ή799 / β‚Ή999 / β‚Ή1499") are
1002
- * DELIBERATELY NOT SEEDED, and this is a decision rather than an omission.
1003
- *
1004
- * The plan argued they are safe because "the tiles are LINKS, not prices".
1005
- * That is true of the tile and false of the mechanism. Prices are hidden from
1006
- * signed-out visitors, and the price-range facet and every money sort are
1007
- * withheld specifically because "hiding the number is not hiding the value" β€”
1008
- * bracketing a hidden price with a range filter is the one casually reachable
1009
- * way around the gate. The documented residue is that a HAND-WRITTEN
1010
- * `?f=price<499` still works, and five tiles on the homepage promote that
1011
- * residue to the most prominent path on the site: a guest could bucket the
1012
- * entire catalogue into five price bands in five clicks, without an account.
1013
- *
1014
- * The matrix above has no such property β€” a category link reveals no amount.
1015
- * Revisit if guest price-gating is ever relaxed; until then this is a tile
1016
- * that would quietly undo a gate another step built.
1017
- */
1018
- ];