@mohasinac/appkit 4.52.4 → 4.53.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 (633) hide show
  1. package/dist/.build-stamp.json +4 -4
  2. package/dist/_internal/client/features/sticker-trace/canvas-codec.d.ts +2 -0
  3. package/dist/_internal/client/features/sticker-trace/canvas-codec.js +148 -0
  4. package/dist/_internal/server/features/auctions/actions.js +1 -1
  5. package/dist/_internal/server/features/categories/data.js +23 -7
  6. package/dist/_internal/server/features/checkout/actions.js +10 -3
  7. package/dist/_internal/server/features/checkout/data.d.ts +15 -0
  8. package/dist/_internal/server/features/checkout/data.js +20 -3
  9. package/dist/_internal/server/features/lottery/actions.js +9 -1
  10. package/dist/_internal/server/features/lottery/og.d.ts +40 -0
  11. package/dist/_internal/server/features/lottery/og.js +79 -0
  12. package/dist/_internal/server/features/messages/actions.js +4 -0
  13. package/dist/_internal/server/features/offers/adapters.js +17 -3
  14. package/dist/_internal/server/features/orders/actions.js +7 -2
  15. package/dist/_internal/server/features/raffle/actions.d.ts +19 -0
  16. package/dist/_internal/server/features/raffle/actions.js +25 -0
  17. package/dist/_internal/server/features/reviews/actions.js +1 -1
  18. package/dist/_internal/server/features/reviews/data.d.ts +1 -1
  19. package/dist/_internal/server/features/search/index-build/artifact-store.d.ts +89 -0
  20. package/dist/_internal/server/features/search/index-build/artifact-store.js +208 -0
  21. package/dist/_internal/server/features/search/index-build/build.d.ts +57 -0
  22. package/dist/_internal/server/features/search/index-build/build.js +285 -0
  23. package/dist/_internal/server/features/search/index-build/sources.d.ts +53 -0
  24. package/dist/_internal/server/features/search/index-build/sources.js +385 -0
  25. package/dist/_internal/server/features/search/search-sources.d.ts +0 -15
  26. package/dist/_internal/server/features/search/search-sources.js +142 -7
  27. package/dist/_internal/server/features/seo/robots.js +21 -1
  28. package/dist/_internal/server/features/seo/sitemap.js +1 -1
  29. package/dist/_internal/server/features/shared/listing-data-factory.js +16 -4
  30. package/dist/_internal/server/features/site-settings/adapters.d.ts +1 -1
  31. package/dist/_internal/server/features/site-settings/adapters.js +26 -0
  32. package/dist/_internal/server/features/sticker-trace/actions.d.ts +109 -0
  33. package/dist/_internal/server/features/sticker-trace/actions.js +172 -0
  34. package/dist/_internal/server/features/sticker-trace/adapters.d.ts +80 -0
  35. package/dist/_internal/server/features/sticker-trace/adapters.js +174 -0
  36. package/dist/_internal/server/features/sticker-trace/build-cut-file.d.ts +26 -0
  37. package/dist/_internal/server/features/sticker-trace/build-cut-file.js +127 -0
  38. package/dist/_internal/server/features/sticker-trace/coordinator.d.ts +27 -0
  39. package/dist/_internal/server/features/sticker-trace/coordinator.js +169 -0
  40. package/dist/_internal/server/features/sticker-trace/fanout.d.ts +43 -0
  41. package/dist/_internal/server/features/sticker-trace/fanout.js +180 -0
  42. package/dist/_internal/server/features/sticker-trace/finalizer.d.ts +25 -0
  43. package/dist/_internal/server/features/sticker-trace/finalizer.js +123 -0
  44. package/dist/_internal/server/features/sticker-trace/mosaic-inputs.d.ts +30 -0
  45. package/dist/_internal/server/features/sticker-trace/mosaic-inputs.js +112 -0
  46. package/dist/_internal/server/features/sticker-trace/progress.d.ts +81 -0
  47. package/dist/_internal/server/features/sticker-trace/progress.js +198 -0
  48. package/dist/_internal/server/features/sticker-trace/promote.d.ts +23 -0
  49. package/dist/_internal/server/features/sticker-trace/promote.js +193 -0
  50. package/dist/_internal/server/features/sticker-trace/shard.d.ts +50 -0
  51. package/dist/_internal/server/features/sticker-trace/shard.js +174 -0
  52. package/dist/_internal/server/features/sticker-trace/sheet-actions.d.ts +141 -0
  53. package/dist/_internal/server/features/sticker-trace/sheet-actions.js +279 -0
  54. package/dist/_internal/server/features/sticker-trace/storage.d.ts +135 -0
  55. package/dist/_internal/server/features/sticker-trace/storage.js +282 -0
  56. package/dist/_internal/server/functions/scheduled.d.ts +2 -1
  57. package/dist/_internal/server/functions/scheduled.js +25 -1
  58. package/dist/_internal/server/jobs/core/_event-ref.d.ts +51 -0
  59. package/dist/_internal/server/jobs/core/_event-ref.js +63 -0
  60. package/dist/_internal/server/jobs/core/assignSpinPrize.d.ts +18 -0
  61. package/dist/_internal/server/jobs/core/assignSpinPrize.js +77 -16
  62. package/dist/_internal/server/jobs/core/auctionSettlement.js +13 -4
  63. package/dist/_internal/server/jobs/core/autoPayoutEligibility.js +44 -15
  64. package/dist/_internal/server/jobs/core/bundleStockSync.js +3 -4
  65. package/dist/_internal/server/jobs/core/cleanupRtdbEvents.js +44 -0
  66. package/dist/_internal/server/jobs/core/event-draw-reasons.d.ts +78 -0
  67. package/dist/_internal/server/jobs/core/event-draw-reasons.js +133 -0
  68. package/dist/_internal/server/jobs/core/listingProcessor.js +28 -8
  69. package/dist/_internal/server/jobs/core/onOrderCreate.js +12 -1
  70. package/dist/_internal/server/jobs/core/onScamReportCreate.js +13 -2
  71. package/dist/_internal/server/jobs/core/onScamReportRejected.js +8 -2
  72. package/dist/_internal/server/jobs/core/onScamReportVerified.js +8 -2
  73. package/dist/_internal/server/jobs/core/onStoreWrite.js +11 -4
  74. package/dist/_internal/server/jobs/core/prizeDrawAssignWinner.js +5 -4
  75. package/dist/_internal/server/jobs/core/prizeDrawExpiryReveal.js +1 -4
  76. package/dist/_internal/server/jobs/core/prizeDrawSoldOutReveal.js +1 -2
  77. package/dist/_internal/server/jobs/core/promotions.js +7 -4
  78. package/dist/_internal/server/jobs/core/searchIndexBuild.d.ts +7 -0
  79. package/dist/_internal/server/jobs/core/searchIndexBuild.js +211 -0
  80. package/dist/_internal/server/jobs/core/triggerEventRaffle.d.ts +35 -0
  81. package/dist/_internal/server/jobs/core/triggerEventRaffle.js +213 -31
  82. package/dist/_internal/server/jobs/core/weeklyPayoutEligibility.js +20 -14
  83. package/dist/_internal/server/jobs/handlers/assignSpinPrize.d.ts +8 -0
  84. package/dist/_internal/server/jobs/handlers/assignSpinPrize.js +15 -15
  85. package/dist/_internal/server/jobs/handlers/index.d.ts +1 -0
  86. package/dist/_internal/server/jobs/handlers/index.js +1 -0
  87. package/dist/_internal/server/jobs/handlers/onCategoryWrite.js +18 -0
  88. package/dist/_internal/server/jobs/handlers/onProductWrite.js +18 -0
  89. package/dist/_internal/server/jobs/handlers/onReviewWrite.js +18 -0
  90. package/dist/_internal/server/jobs/handlers/onScamReportUpdate.js +18 -0
  91. package/dist/_internal/server/jobs/handlers/onStoreWrite.js +18 -0
  92. package/dist/_internal/server/jobs/handlers/searchIndexBuild.d.ts +2 -0
  93. package/dist/_internal/server/jobs/handlers/searchIndexBuild.js +2 -0
  94. package/dist/_internal/server/jobs/handlers/triggerEventRaffle.d.ts +8 -0
  95. package/dist/_internal/server/jobs/handlers/triggerEventRaffle.js +15 -6
  96. package/dist/_internal/shared/actions/action-registry.js +29 -0
  97. package/dist/_internal/shared/cache/revalidate-targets.d.ts +0 -1
  98. package/dist/_internal/shared/cache/revalidate-targets.js +10 -8
  99. package/dist/_internal/shared/features/events/config.d.ts +14 -0
  100. package/dist/_internal/shared/features/events/config.js +14 -0
  101. package/dist/_internal/shared/features/notifications/action-url.js +8 -0
  102. package/dist/_internal/shared/features/site-settings/types.d.ts +11 -0
  103. package/dist/_internal/shared/features/sticker-trace/codec.d.ts +81 -0
  104. package/dist/_internal/shared/features/sticker-trace/codec.js +30 -0
  105. package/dist/_internal/shared/features/sticker-trace/config.d.ts +81 -0
  106. package/dist/_internal/shared/features/sticker-trace/config.js +177 -0
  107. package/dist/_internal/shared/features/sticker-trace/cut-contour.d.ts +20 -0
  108. package/dist/_internal/shared/features/sticker-trace/cut-contour.js +60 -0
  109. package/dist/_internal/shared/features/sticker-trace/export/build-export-set.d.ts +65 -0
  110. package/dist/_internal/shared/features/sticker-trace/export/build-export-set.js +176 -0
  111. package/dist/_internal/shared/features/sticker-trace/export/cut-svg.d.ts +56 -0
  112. package/dist/_internal/shared/features/sticker-trace/export/cut-svg.js +120 -0
  113. package/dist/_internal/shared/features/sticker-trace/export/machine-profiles.d.ts +92 -0
  114. package/dist/_internal/shared/features/sticker-trace/export/machine-profiles.js +153 -0
  115. package/dist/_internal/shared/features/sticker-trace/export/nesting.d.ts +51 -0
  116. package/dist/_internal/shared/features/sticker-trace/export/nesting.js +110 -0
  117. package/dist/_internal/shared/features/sticker-trace/export/page-sizes.d.ts +68 -0
  118. package/dist/_internal/shared/features/sticker-trace/export/page-sizes.js +223 -0
  119. package/dist/_internal/shared/features/sticker-trace/export/part-tiling.d.ts +51 -0
  120. package/dist/_internal/shared/features/sticker-trace/export/part-tiling.js +178 -0
  121. package/dist/_internal/shared/features/sticker-trace/export/simplify-budget.d.ts +26 -0
  122. package/dist/_internal/shared/features/sticker-trace/export/simplify-budget.js +134 -0
  123. package/dist/_internal/shared/features/sticker-trace/export/vectorise-art.d.ts +40 -0
  124. package/dist/_internal/shared/features/sticker-trace/export/vectorise-art.js +195 -0
  125. package/dist/_internal/shared/features/sticker-trace/index.d.ts +2 -0
  126. package/dist/_internal/shared/features/sticker-trace/index.js +59 -0
  127. package/dist/_internal/shared/features/sticker-trace/math/catmull-rom.d.ts +11 -0
  128. package/dist/_internal/shared/features/sticker-trace/math/catmull-rom.js +66 -0
  129. package/dist/_internal/shared/features/sticker-trace/math/edt.d.ts +27 -0
  130. package/dist/_internal/shared/features/sticker-trace/math/edt.js +165 -0
  131. package/dist/_internal/shared/features/sticker-trace/math/label.d.ts +15 -0
  132. package/dist/_internal/shared/features/sticker-trace/math/label.js +156 -0
  133. package/dist/_internal/shared/features/sticker-trace/math/marching-squares.d.ts +16 -0
  134. package/dist/_internal/shared/features/sticker-trace/math/marching-squares.js +242 -0
  135. package/dist/_internal/shared/features/sticker-trace/math/morphology.d.ts +46 -0
  136. package/dist/_internal/shared/features/sticker-trace/math/morphology.js +168 -0
  137. package/dist/_internal/shared/features/sticker-trace/math/rasterize-path.d.ts +88 -0
  138. package/dist/_internal/shared/features/sticker-trace/math/rasterize-path.js +286 -0
  139. package/dist/_internal/shared/features/sticker-trace/math/rdp.d.ts +10 -0
  140. package/dist/_internal/shared/features/sticker-trace/math/rdp.js +74 -0
  141. package/dist/_internal/shared/features/sticker-trace/resume.d.ts +50 -0
  142. package/dist/_internal/shared/features/sticker-trace/resume.js +160 -0
  143. package/dist/_internal/shared/features/sticker-trace/trace/cluster.d.ts +20 -0
  144. package/dist/_internal/shared/features/sticker-trace/trace/cluster.js +132 -0
  145. package/dist/_internal/shared/features/sticker-trace/trace/cross-profile.d.ts +28 -0
  146. package/dist/_internal/shared/features/sticker-trace/trace/cross-profile.js +120 -0
  147. package/dist/_internal/shared/features/sticker-trace/trace/flood.d.ts +21 -0
  148. package/dist/_internal/shared/features/sticker-trace/trace/flood.js +104 -0
  149. package/dist/_internal/shared/features/sticker-trace/trace/geometry.d.ts +3 -0
  150. package/dist/_internal/shared/features/sticker-trace/trace/geometry.js +140 -0
  151. package/dist/_internal/shared/features/sticker-trace/trace/line-filter.d.ts +15 -0
  152. package/dist/_internal/shared/features/sticker-trace/trace/line-filter.js +138 -0
  153. package/dist/_internal/shared/features/sticker-trace/trace/merge.d.ts +27 -0
  154. package/dist/_internal/shared/features/sticker-trace/trace/merge.js +187 -0
  155. package/dist/_internal/shared/features/sticker-trace/trace/paper.d.ts +32 -0
  156. package/dist/_internal/shared/features/sticker-trace/trace/paper.js +147 -0
  157. package/dist/_internal/shared/features/sticker-trace/trace/prefilter.d.ts +30 -0
  158. package/dist/_internal/shared/features/sticker-trace/trace/prefilter.js +125 -0
  159. package/dist/_internal/shared/features/sticker-trace/trace/quantise.d.ts +10 -0
  160. package/dist/_internal/shared/features/sticker-trace/trace/quantise.js +153 -0
  161. package/dist/_internal/shared/features/sticker-trace/trace/ridge.d.ts +88 -0
  162. package/dist/_internal/shared/features/sticker-trace/trace/ridge.js +344 -0
  163. package/dist/_internal/shared/features/sticker-trace/trace/segment.d.ts +10 -0
  164. package/dist/_internal/shared/features/sticker-trace/trace/segment.js +251 -0
  165. package/dist/_internal/shared/features/sticker-trace/types.d.ts +197 -0
  166. package/dist/_internal/shared/features/sticker-trace/types.js +49 -0
  167. package/dist/_internal/shared/listing-types/_registry.d.ts +11 -0
  168. package/dist/_internal/shared/listing-types/art/config.d.ts +1 -0
  169. package/dist/_internal/shared/listing-types/art/config.js +1 -0
  170. package/dist/_internal/shared/listing-types/auction/config.d.ts +1 -0
  171. package/dist/_internal/shared/listing-types/auction/config.js +1 -0
  172. package/dist/_internal/shared/listing-types/classified/config.d.ts +1 -0
  173. package/dist/_internal/shared/listing-types/classified/config.js +1 -0
  174. package/dist/_internal/shared/listing-types/digital-code/config.d.ts +1 -0
  175. package/dist/_internal/shared/listing-types/digital-code/config.js +1 -0
  176. package/dist/_internal/shared/listing-types/feature-flags.d.ts +7 -0
  177. package/dist/_internal/shared/listing-types/feature-flags.js +9 -0
  178. package/dist/_internal/shared/listing-types/live/config.d.ts +1 -0
  179. package/dist/_internal/shared/listing-types/live/config.js +1 -0
  180. package/dist/_internal/shared/listing-types/pre-order/config.d.ts +1 -0
  181. package/dist/_internal/shared/listing-types/pre-order/config.js +1 -0
  182. package/dist/_internal/shared/listing-types/prize-draw/config.d.ts +1 -0
  183. package/dist/_internal/shared/listing-types/prize-draw/config.js +1 -0
  184. package/dist/_internal/shared/listing-types/standard/config.d.ts +1 -0
  185. package/dist/_internal/shared/listing-types/standard/config.js +1 -0
  186. package/dist/_internal/shared/listing-types/stickers/config.d.ts +1 -0
  187. package/dist/_internal/shared/listing-types/stickers/config.js +1 -0
  188. package/dist/_internal/shared/media/limits.d.ts +12 -2
  189. package/dist/_internal/shared/media/limits.js +12 -2
  190. package/dist/_internal/shared/search/artifact-url.d.ts +35 -0
  191. package/dist/_internal/shared/search/artifact-url.js +119 -0
  192. package/dist/_internal/shared/search/index-record.d.ts +68 -0
  193. package/dist/_internal/shared/search/index-record.js +96 -0
  194. package/dist/_internal/shared/search/match.d.ts +65 -0
  195. package/dist/_internal/shared/search/match.js +263 -0
  196. package/dist/client.d.ts +8 -7
  197. package/dist/client.js +12 -5
  198. package/dist/configs/eslint.js +22 -2
  199. package/dist/constants/api-endpoints.d.ts +68 -0
  200. package/dist/constants/api-endpoints.js +32 -0
  201. package/dist/constants/field-names.d.ts +7 -1
  202. package/dist/constants/field-names.js +36 -1
  203. package/dist/contracts/repository.d.ts +8 -7
  204. package/dist/contracts/search.d.ts +2 -2
  205. package/dist/contracts/table.d.ts +3 -3
  206. package/dist/contracts/table.js +3 -3
  207. package/dist/core/contact-submissions.repository.js +2 -2
  208. package/dist/core/integration-keys.js +7 -1
  209. package/dist/core/newsletter.repository.js +2 -2
  210. package/dist/core/site-config.js +1 -1
  211. package/dist/errors/error-codes.d.ts +30 -0
  212. package/dist/errors/error-codes.js +30 -0
  213. package/dist/errors/error-display-map.js +40 -1
  214. package/dist/features/account/api/[userId]/addresses/route.js +1 -1
  215. package/dist/features/account/components/UserBidsView.js +1 -1
  216. package/dist/features/account/components/index.d.ts +0 -8
  217. package/dist/features/account/components/index.js +0 -4
  218. package/dist/features/addresses/repository/addresses.repository.d.ts +17 -6
  219. package/dist/features/addresses/repository/addresses.repository.js +65 -9
  220. package/dist/features/addresses/schemas/firestore.d.ts +17 -6
  221. package/dist/features/admin/actions/notification-actions.js +15 -6
  222. package/dist/features/admin/api/bids/route.js +1 -1
  223. package/dist/features/admin/api/coupons/route.js +1 -1
  224. package/dist/features/admin/api/products/route.js +1 -1
  225. package/dist/features/admin/api/reviews/route.js +1 -1
  226. package/dist/features/admin/components/AdminAdEditorView.js +19 -5
  227. package/dist/features/admin/components/AdminAuditLogView.js +1 -1
  228. package/dist/features/admin/components/AdminBlogEditorView.js +0 -1
  229. package/dist/features/admin/components/AdminBlogView.js +1 -1
  230. package/dist/features/admin/components/AdminBrandsView.js +17 -1
  231. package/dist/features/admin/components/AdminCategoryEditorView.js +0 -1
  232. package/dist/features/admin/components/AdminContactView.js +1 -1
  233. package/dist/features/admin/components/AdminEmployeeEditorView.js +1 -3
  234. package/dist/features/admin/components/AdminNewsletterView.js +1 -1
  235. package/dist/features/admin/components/AdminOrdersView.js +9 -2
  236. package/dist/features/admin/components/AdminPayoutsView.js +1 -1
  237. package/dist/features/admin/components/AdminPrizeDrawsView.js +11 -0
  238. package/dist/features/admin/components/AdminProductEditorView.d.ts +10 -1
  239. package/dist/features/admin/components/AdminProductEditorView.js +24 -37
  240. package/dist/features/admin/components/AdminProductsView.js +10 -3
  241. package/dist/features/admin/components/AdminScammersView.js +1 -1
  242. package/dist/features/admin/components/AdminSectionsView.js +21 -5
  243. package/dist/features/admin/components/AdminSessionsView.js +1 -1
  244. package/dist/features/admin/components/AdminSublistingCategoriesView.js +22 -1
  245. package/dist/features/admin/components/AdminTeamView.js +1 -1
  246. package/dist/features/admin/components/AdminTesterChecklistItemEditorView.js +0 -1
  247. package/dist/features/admin/components/AdminUsersView.js +1 -1
  248. package/dist/features/admin/components/DataListingView.d.ts +2 -1
  249. package/dist/features/admin/components/DataListingView.js +9 -4
  250. package/dist/features/admin/components/analytics/AdminPageViewsReportView.js +0 -2
  251. package/dist/features/admin/hooks/useAdminListing.d.ts +1 -1
  252. package/dist/features/admin/repository/site-settings.repository.js +8 -3
  253. package/dist/features/admin/schemas/firestore.d.ts +62 -1
  254. package/dist/features/admin/schemas/firestore.js +32 -0
  255. package/dist/features/admin/types/index.d.ts +1 -1
  256. package/dist/features/auctions/actions/bid-actions.d.ts +2 -2
  257. package/dist/features/auctions/actions/bid-actions.js +16 -4
  258. package/dist/features/auctions/api/route.js +1 -1
  259. package/dist/features/auctions/components/AuctionBottomActions.js +4 -0
  260. package/dist/features/auctions/repository/bid.repository.d.ts +46 -4
  261. package/dist/features/auctions/repository/bid.repository.js +114 -13
  262. package/dist/features/auctions/schemas/firestore.d.ts +24 -4
  263. package/dist/features/auctions/schemas/firestore.js +1 -0
  264. package/dist/features/auth/actions/profile-actions.js +30 -4
  265. package/dist/features/auth/components/index.d.ts +0 -1
  266. package/dist/features/auth/components/index.js +0 -1
  267. package/dist/features/auth/repository/session.repository.d.ts +17 -3
  268. package/dist/features/auth/repository/session.repository.js +46 -5
  269. package/dist/features/auth/repository/token.repository.d.ts +27 -4
  270. package/dist/features/auth/repository/token.repository.js +65 -11
  271. package/dist/features/auth/repository/user.repository.d.ts +33 -7
  272. package/dist/features/auth/repository/user.repository.js +100 -15
  273. package/dist/features/auth/schemas/firestore.d.ts +63 -12
  274. package/dist/features/auth/schemas/firestore.js +11 -0
  275. package/dist/features/before-after/api/route.js +1 -1
  276. package/dist/features/blog/components/BlogListView.js +16 -3
  277. package/dist/features/blog/components/BlogPostView.js +1 -1
  278. package/dist/features/blog/schemas/index.d.ts +2 -2
  279. package/dist/features/cart/api/route.js +1 -1
  280. package/dist/features/catalogue/repository/catalogue.repository.d.ts +7 -7
  281. package/dist/features/catalogue/repository/catalogue.repository.js +28 -10
  282. package/dist/features/catalogue/schemas/firestore.d.ts +11 -0
  283. package/dist/features/categories/api/route.js +10 -10
  284. package/dist/features/categories/components/CategoryDetailPageView.js +35 -5
  285. package/dist/features/categories/components/CategorySelectorCreate.js +0 -1
  286. package/dist/features/categories/components/index.d.ts +0 -2
  287. package/dist/features/categories/components/index.js +0 -1
  288. package/dist/features/categories/repository/categories.repository.d.ts +1 -0
  289. package/dist/features/categories/repository/categories.repository.js +31 -1
  290. package/dist/features/categories/schemas/index.d.ts +2 -2
  291. package/dist/features/categories/utils/taxonomy-visual.d.ts +21 -0
  292. package/dist/features/categories/utils/taxonomy-visual.js +58 -0
  293. package/dist/features/checkout/actions/checkout-value-otp-actions.js +8 -1
  294. package/dist/features/collections/api/[slug]/route.js +3 -3
  295. package/dist/features/collections/api/route.js +1 -1
  296. package/dist/features/consultation/api/route.js +1 -1
  297. package/dist/features/consultation/repository/consultations.repository.js +1 -1
  298. package/dist/features/consultation/types/index.d.ts +1 -1
  299. package/dist/features/contact/components/ContactForm.js +1 -3
  300. package/dist/features/corporate/api/route.js +1 -1
  301. package/dist/features/corporate/repository/corporate.repository.js +1 -1
  302. package/dist/features/corporate/types/index.d.ts +1 -1
  303. package/dist/features/cron/jobs/auction-expiry.job.js +1 -1
  304. package/dist/features/cron/jobs/preorder-reminder.job.js +1 -1
  305. package/dist/features/events/actions/event-actions.d.ts +14 -0
  306. package/dist/features/events/actions/event-actions.js +82 -3
  307. package/dist/features/events/api/[id]/route.js +2 -2
  308. package/dist/features/events/components/AdminEventEditorView.js +22 -3
  309. package/dist/features/events/components/AdminEventsView.js +32 -8
  310. package/dist/features/events/components/EventRafflesSection.d.ts +34 -1
  311. package/dist/features/events/components/EventRafflesSection.js +52 -3
  312. package/dist/features/events/components/SpinWheelView.d.ts +2 -2
  313. package/dist/features/events/components/SpinWheelView.js +41 -4
  314. package/dist/features/events/repository/event-entry.repository.d.ts +14 -2
  315. package/dist/features/events/repository/event-entry.repository.js +41 -7
  316. package/dist/features/events/schemas/firestore.d.ts +17 -4
  317. package/dist/features/events/types/index.d.ts +37 -0
  318. package/dist/features/faq/repository/faqs.repository.js +1 -1
  319. package/dist/features/faq/schemas/index.d.ts +5 -2
  320. package/dist/features/faq/schemas/index.js +6 -0
  321. package/dist/features/faq/types/index.d.ts +0 -1
  322. package/dist/features/grouped/components/GroupedListingEditorView.js +17 -2
  323. package/dist/features/homepage/api/carousel/[id]/route.js +1 -1
  324. package/dist/features/homepage/api/carousel/route.js +4 -4
  325. package/dist/features/homepage/api/route.js +2 -2
  326. package/dist/features/homepage/api/sections/route.js +1 -1
  327. package/dist/features/homepage/components/AnnouncementBar.d.ts +1 -9
  328. package/dist/features/homepage/components/AnnouncementBar.js +13 -19
  329. package/dist/features/homepage/components/MarketplaceHomepageView.js +6 -1
  330. package/dist/features/homepage/components/index.d.ts +0 -2
  331. package/dist/features/homepage/components/index.js +0 -1
  332. package/dist/features/homepage/repository/homepage.repository.js +1 -1
  333. package/dist/features/homepage/schemas/firestore.d.ts +6 -0
  334. package/dist/features/homepage/schemas/index.d.ts +10 -10
  335. package/dist/features/layout/AppLayoutShell.d.ts +12 -3
  336. package/dist/features/layout/AppLayoutShell.js +65 -13
  337. package/dist/features/layout/BottomActionsContext.d.ts +16 -0
  338. package/dist/features/layout/BottomActionsContext.js +5 -0
  339. package/dist/features/layout/BottomChrome.js +48 -9
  340. package/dist/features/layout/BottomNavbar.d.ts +14 -0
  341. package/dist/features/layout/BottomNavbar.js +43 -3
  342. package/dist/features/layout/MainNavbar.d.ts +11 -0
  343. package/dist/features/layout/NavbarLayout.d.ts +3 -0
  344. package/dist/features/layout/NavbarLayout.js +88 -11
  345. package/dist/features/layout/SideActionDock.d.ts +1 -0
  346. package/dist/features/layout/SideActionDock.js +219 -0
  347. package/dist/features/layout/TitleBarLayout.d.ts +1 -3
  348. package/dist/features/layout/TitleBarLayout.js +3 -4
  349. package/dist/features/layout/cta-anchor.d.ts +31 -0
  350. package/dist/features/layout/cta-anchor.js +31 -0
  351. package/dist/features/layout/hooks/useBottomActions.d.ts +7 -0
  352. package/dist/features/layout/hooks/useBottomActions.js +6 -1
  353. package/dist/features/layout/index.d.ts +9 -1
  354. package/dist/features/layout/index.js +9 -1
  355. package/dist/features/layout/useCtaReveal.d.ts +24 -0
  356. package/dist/features/layout/useCtaReveal.js +82 -0
  357. package/dist/features/layout/useHoldToOpen.d.ts +41 -0
  358. package/dist/features/layout/useHoldToOpen.js +84 -0
  359. package/dist/features/lottery/repository/lottery-entry.repository.d.ts +18 -3
  360. package/dist/features/lottery/repository/lottery-entry.repository.js +48 -6
  361. package/dist/features/lottery/schemas/firestore.d.ts +33 -5
  362. package/dist/features/loyalty/api/balance/route.js +1 -1
  363. package/dist/features/loyalty/api/history/route.js +1 -1
  364. package/dist/features/media/MediaImage.js +0 -1
  365. package/dist/features/media/MediaPickerModal.js +7 -1
  366. package/dist/features/media/modals/ImageEditor.js +5 -1
  367. package/dist/features/media/modals/VideoThumbnailSelector.js +17 -1
  368. package/dist/features/media/repository/media-assets.repository.d.ts +19 -0
  369. package/dist/features/media/upload/CameraCapture.js +16 -1
  370. package/dist/features/media/upload/ImageUpload.js +42 -4
  371. package/dist/features/media/upload/MediaUploadField.js +69 -13
  372. package/dist/features/media/upload/downscale-image.d.ts +56 -0
  373. package/dist/features/media/upload/downscale-image.js +150 -0
  374. package/dist/features/messages/components/ConversationThreadView.js +45 -2
  375. package/dist/features/messages/components/MessageSellerButton.d.ts +15 -1
  376. package/dist/features/messages/components/MessageSellerButton.js +10 -2
  377. package/dist/features/messages/schemas/firestore.d.ts +15 -0
  378. package/dist/features/orders/hooks/useOrders.js +4 -2
  379. package/dist/features/orders/repository/orders.repository.d.ts +15 -4
  380. package/dist/features/orders/repository/orders.repository.js +52 -20
  381. package/dist/features/orders/schemas/firestore.d.ts +15 -4
  382. package/dist/features/orders/schemas/index.d.ts +8 -8
  383. package/dist/features/orders/types/index.d.ts +2 -2
  384. package/dist/features/payments/repository/payments.repository.js +2 -2
  385. package/dist/features/payments/repository/payout.repository.d.ts +23 -6
  386. package/dist/features/payments/repository/payout.repository.js +63 -23
  387. package/dist/features/payments/repository/saved-payment-methods.repository.d.ts +17 -6
  388. package/dist/features/payments/repository/saved-payment-methods.repository.js +59 -11
  389. package/dist/features/payments/schemas/firestore.d.ts +14 -3
  390. package/dist/features/payments/schemas/saved-methods-firestore.d.ts +12 -1
  391. package/dist/features/pre-orders/api/[slug]/route.js +1 -1
  392. package/dist/features/pre-orders/api/admin/route.js +1 -1
  393. package/dist/features/pre-orders/api/route.js +1 -1
  394. package/dist/features/pre-orders/repository/pre-orders.repository.d.ts +3 -3
  395. package/dist/features/pre-orders/repository/pre-orders.repository.js +6 -6
  396. package/dist/features/products/api/[id]/route.js +1 -1
  397. package/dist/features/products/components/ListingBottomActions.js +4 -0
  398. package/dist/features/products/components/ProductDetailPageView.js +2 -1
  399. package/dist/features/products/components/ProductGalleryClient.js +2 -2
  400. package/dist/features/products/components/ProductGrid.js +12 -1
  401. package/dist/features/products/components/index.d.ts +0 -2
  402. package/dist/features/products/components/index.js +0 -1
  403. package/dist/features/products/config/listing-type-listing-config.d.ts +0 -3
  404. package/dist/features/products/config/listing-type-listing-config.js +27 -2
  405. package/dist/features/products/constants/listing-tabs.d.ts +9 -0
  406. package/dist/features/products/constants/listing-tabs.js +3 -2
  407. package/dist/features/products/hooks/useProducts.js +2 -2
  408. package/dist/features/products/repository/products.repository.js +13 -1
  409. package/dist/features/products/schemas/index.d.ts +2 -2
  410. package/dist/features/products/types/index.d.ts +1 -1
  411. package/dist/features/promotions/api/route.js +1 -1
  412. package/dist/features/reviews/actions/review-actions.d.ts +6 -6
  413. package/dist/features/reviews/actions/review-actions.js +22 -8
  414. package/dist/features/reviews/components/ReviewDetailPageView.js +13 -1
  415. package/dist/features/reviews/components/ReviewsIndexPageView.js +21 -4
  416. package/dist/features/reviews/repository/reviews.repository.d.ts +19 -7
  417. package/dist/features/reviews/repository/reviews.repository.js +63 -12
  418. package/dist/features/reviews/schemas/firestore.d.ts +13 -2
  419. package/dist/features/reviews/schemas/index.d.ts +2 -2
  420. package/dist/features/scams/actions/scam-actions.js +16 -4
  421. package/dist/features/search/components/SearchResultsPageView.js +2 -1
  422. package/dist/features/search/hooks/useSearchIndex.d.ts +34 -0
  423. package/dist/features/search/hooks/useSearchIndex.js +172 -0
  424. package/dist/features/search/repository/search.repository.js +2 -2
  425. package/dist/features/seller/actions/offer-actions.d.ts +5 -5
  426. package/dist/features/seller/actions/offer-actions.js +38 -8
  427. package/dist/features/seller/actions/seller-actions.js +34 -7
  428. package/dist/features/seller/api/coupons/route.js +1 -1
  429. package/dist/features/seller/api/products/route.js +1 -1
  430. package/dist/features/seller/api/store/route.js +1 -1
  431. package/dist/features/seller/components/SellerBidsView.js +1 -1
  432. package/dist/features/seller/components/SellerCouponsView.js +1 -1
  433. package/dist/features/seller/components/SellerListingTypeView.js +9 -1
  434. package/dist/features/seller/components/SellerOrdersView.js +1 -1
  435. package/dist/features/seller/components/SellerPayoutSettingsView.js +0 -1
  436. package/dist/features/seller/components/SellerPayoutsView.js +1 -1
  437. package/dist/features/seller/components/SellerProductShell.js +0 -1
  438. package/dist/features/seller/components/SellerProductsView.js +1 -1
  439. package/dist/features/seller/components/SellerShippingView.js +0 -1
  440. package/dist/features/seller/components/SellerStorefrontView.js +0 -1
  441. package/dist/features/seller/components/index.d.ts +0 -4
  442. package/dist/features/seller/components/index.js +0 -2
  443. package/dist/features/seller/repository/offer.repository.d.ts +15 -3
  444. package/dist/features/seller/repository/offer.repository.js +43 -7
  445. package/dist/features/seller/schemas/firestore.d.ts +14 -3
  446. package/dist/features/seller/schemas/index.d.ts +4 -4
  447. package/dist/features/seller/schemas/order-forms.d.ts +39 -0
  448. package/dist/features/seller/schemas/order-forms.js +37 -0
  449. package/dist/features/shell/FormShell.js +6 -2
  450. package/dist/features/shell/QuickFormDrawer.js +15 -1
  451. package/dist/features/shipments/components/AdminShipmentEditorView.js +0 -1
  452. package/dist/features/shipments/components/AdminShipmentsView.js +1 -1
  453. package/dist/features/sticker-trace/components/StickerCommitPanel.d.ts +30 -0
  454. package/dist/features/sticker-trace/components/StickerCommitPanel.js +93 -0
  455. package/dist/features/sticker-trace/components/StickerPrintPanel.d.ts +33 -0
  456. package/dist/features/sticker-trace/components/StickerPrintPanel.js +104 -0
  457. package/dist/features/sticker-trace/components/StickerRetryPanel.d.ts +20 -0
  458. package/dist/features/sticker-trace/components/StickerRetryPanel.js +128 -0
  459. package/dist/features/sticker-trace/components/StickerRunHistoryPanel.d.ts +45 -0
  460. package/dist/features/sticker-trace/components/StickerRunHistoryPanel.js +84 -0
  461. package/dist/features/sticker-trace/components/StickerTraceStudio.d.ts +27 -0
  462. package/dist/features/sticker-trace/components/StickerTraceStudio.js +171 -0
  463. package/dist/features/sticker-trace/constants/help-content.d.ts +23 -0
  464. package/dist/features/sticker-trace/constants/help-content.js +172 -0
  465. package/dist/features/sticker-trace/hooks/useLiveTrace.d.ts +27 -0
  466. package/dist/features/sticker-trace/hooks/useLiveTrace.js +160 -0
  467. package/dist/features/sticker-trace/hooks/useStickerTraceProgress.d.ts +22 -0
  468. package/dist/features/sticker-trace/hooks/useStickerTraceProgress.js +106 -0
  469. package/dist/features/sticker-trace/repository/sticker-sheets.repository.d.ts +113 -0
  470. package/dist/features/sticker-trace/repository/sticker-sheets.repository.js +146 -0
  471. package/dist/features/sticker-trace/repository/sticker-trace-runs.repository.d.ts +132 -0
  472. package/dist/features/sticker-trace/repository/sticker-trace-runs.repository.js +174 -0
  473. package/dist/features/sticker-trace/schemas/firestore.d.ts +248 -0
  474. package/dist/features/sticker-trace/schemas/firestore.js +79 -0
  475. package/dist/features/sticker-trace/server.d.ts +8 -0
  476. package/dist/features/sticker-trace/server.js +51 -0
  477. package/dist/features/stores/actions/store-query-actions.d.ts +2 -2
  478. package/dist/features/stores/actions/store-query-actions.js +7 -2
  479. package/dist/features/stores/api/[storeSlug]/auctions/route.js +3 -3
  480. package/dist/features/stores/api/[storeSlug]/products/route.js +3 -3
  481. package/dist/features/stores/api/[storeSlug]/reviews/route.js +1 -1
  482. package/dist/features/stores/api/[storeSlug]/route.js +1 -1
  483. package/dist/features/stores/components/StoreNavTabs.js +17 -2
  484. package/dist/features/stores/manifest.js +8 -4
  485. package/dist/features/support/repository/support.repository.d.ts +14 -3
  486. package/dist/features/support/repository/support.repository.js +93 -13
  487. package/dist/features/support/schemas/firestore.d.ts +16 -5
  488. package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.js +61 -19
  489. package/dist/features/tester/seed-data/authored/buying__browsing-search.js +19 -3
  490. package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.d.ts +2 -0
  491. package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.js +243 -0
  492. package/dist/features/tester/seed-data/authored/content-discovery__events.js +36 -10
  493. package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.d.ts +2 -0
  494. package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.js +209 -0
  495. package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.d.ts +2 -0
  496. package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.js +90 -0
  497. package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.d.ts +2 -0
  498. package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.js +85 -0
  499. package/dist/features/tester/seed-data/authored/index.js +10 -0
  500. package/dist/features/tester/seed-data/authored/selling__media-limits.js +19 -17
  501. package/dist/features/tester/seed-data/authored/selling__product-upload-details.js +10 -5
  502. package/dist/features/tester/seed-data/authored/tools__sticker-tracer.d.ts +2 -0
  503. package/dist/features/tester/seed-data/authored/tools__sticker-tracer.js +283 -0
  504. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +235 -22
  505. package/dist/index.d.ts +10 -23
  506. package/dist/index.js +27 -19
  507. package/dist/next/api/routeHandler.js +9 -0
  508. package/dist/next/routing/require-record.d.ts +13 -0
  509. package/dist/next/routing/require-record.js +62 -0
  510. package/dist/next/routing/route-map.d.ts +4 -4
  511. package/dist/next/routing/route-map.js +25 -3
  512. package/dist/providers/db-firebase/base.d.ts +4 -2
  513. package/dist/providers/db-firebase/base.js +21 -5
  514. package/dist/providers/db-firebase/base.repository.d.ts +11 -9
  515. package/dist/providers/db-firebase/base.repository.js +19 -0
  516. package/dist/providers/db-firebase/rtdb-paths.d.ts +12 -0
  517. package/dist/providers/db-firebase/rtdb-paths.js +12 -0
  518. package/dist/react/ErrorBoundary.js +6 -1
  519. package/dist/react/hooks/realtime-event-constants.d.ts +1 -0
  520. package/dist/react/hooks/realtime-event-constants.js +8 -0
  521. package/dist/react/hooks/useEntityDelete.js +5 -1
  522. package/dist/react/hooks/useMessage.js +5 -1
  523. package/dist/repositories/index.d.ts +2 -2
  524. package/dist/repositories/index.js +6 -1
  525. package/dist/schemas/registry.d.ts +13 -20
  526. package/dist/schemas/registry.js +31 -14
  527. package/dist/schemas/webhooks/google-oauth.d.ts +2 -2
  528. package/dist/security/encrypted.d.ts +117 -0
  529. package/dist/security/encrypted.js +100 -0
  530. package/dist/security/index.d.ts +5 -2
  531. package/dist/security/index.js +16 -2
  532. package/dist/security/pii-accessors.d.ts +71 -0
  533. package/dist/security/pii-accessors.js +150 -0
  534. package/dist/security/pii-encrypt.d.ts +0 -8
  535. package/dist/security/pii-encrypt.js +22 -15
  536. package/dist/security/pii-mask.d.ts +18 -0
  537. package/dist/security/pii-mask.js +27 -0
  538. package/dist/seed/_helpers/search-txt-wrappers.d.ts +6 -6
  539. package/dist/seed/_helpers/search-txt-wrappers.js +22 -0
  540. package/dist/seed/addresses-seed-data.d.ts +2 -2
  541. package/dist/seed/authenticity-knowledge-seed-data.d.ts +34 -0
  542. package/dist/seed/authenticity-knowledge-seed-data.js +1277 -0
  543. package/dist/seed/bids-seed-data.d.ts +2 -2
  544. package/dist/seed/bids-seed-data.js +23 -2
  545. package/dist/seed/events-seed-data.d.ts +2 -2
  546. package/dist/seed/events-seed-data.js +5 -0
  547. package/dist/seed/faq-seed-data.js +175 -5
  548. package/dist/seed/homepage-sections-seed-data.js +39 -23
  549. package/dist/seed/index.d.ts +1 -0
  550. package/dist/seed/index.js +1 -0
  551. package/dist/seed/lottery-entries-seed-data.d.ts +2 -2
  552. package/dist/seed/offers-seed-data.d.ts +2 -2
  553. package/dist/seed/offers-seed-data.js +1 -1
  554. package/dist/seed/orders-seed-data.d.ts +2 -2
  555. package/dist/seed/payouts-seed-data.d.ts +2 -2
  556. package/dist/seed/payouts-seed-data.js +1 -1
  557. package/dist/seed/reviews-seed-data.d.ts +1 -2
  558. package/dist/seed/seed-purpose.js +7 -0
  559. package/dist/seed/sessions-seed-data.d.ts +2 -2
  560. package/dist/seed/sessions-seed-data.js +5 -0
  561. package/dist/seed/site-settings-seed-data.js +1 -1
  562. package/dist/seed/support-tickets-seed-data.d.ts +2 -2
  563. package/dist/seed/support-tickets-seed-data.js +1 -1
  564. package/dist/seed/users-seed-data.d.ts +2 -2
  565. package/dist/seed/users-seed-data.js +1 -1
  566. package/dist/seo/json-ld.js +5 -1
  567. package/dist/server.d.ts +18 -3
  568. package/dist/server.js +59 -3
  569. package/dist/styles.css +237 -1
  570. package/dist/tailwind-utilities.css +1 -1
  571. package/dist/ui/components/Button.js +7 -1
  572. package/dist/ui/components/FilterChipGroup.d.ts +11 -0
  573. package/dist/ui/components/FilterChipGroup.js +1 -1
  574. package/dist/ui/components/ImageGallery.js +6 -1
  575. package/dist/ui/components/ListingLayout.js +14 -8
  576. package/dist/ui/components/OverflowRow.d.ts +92 -0
  577. package/dist/ui/components/OverflowRow.js +203 -0
  578. package/dist/ui/components/OverflowRow.style.css +235 -0
  579. package/dist/ui/components/RecordDetailModal.js +14 -1
  580. package/dist/ui/components/RowActionMenu.js +5 -1
  581. package/dist/ui/components/SideDrawer.js +5 -1
  582. package/dist/ui/components/SideModal.js +9 -1
  583. package/dist/ui/components/TabBarShell.d.ts +12 -1
  584. package/dist/ui/components/TabBarShell.js +3 -2
  585. package/dist/ui/components/Tabs.js +36 -24
  586. package/dist/ui/components/Toast.d.ts +3 -24
  587. package/dist/ui/components/Toast.js +2 -19
  588. package/dist/ui/components/TopBannerPortal.d.ts +15 -0
  589. package/dist/ui/components/TopBannerPortal.js +19 -0
  590. package/dist/ui/components/UnsavedChangesModal.js +5 -1
  591. package/dist/ui/components/index.style.css +1 -0
  592. package/dist/ui/components/row-collapse.d.ts +15 -0
  593. package/dist/ui/components/row-collapse.js +127 -0
  594. package/dist/ui/components/toast-context.d.ts +63 -0
  595. package/dist/ui/components/toast-context.js +48 -0
  596. package/dist/ui/components/top-banner-slot.d.ts +37 -0
  597. package/dist/ui/components/top-banner-slot.js +45 -0
  598. package/dist/ui/icons/icon-registry.d.ts +6 -0
  599. package/dist/ui/icons/icon-registry.js +17 -1
  600. package/dist/ui/index.d.ts +2 -0
  601. package/dist/ui/index.js +1 -0
  602. package/dist/utils/array.helper.d.ts +2 -2
  603. package/dist/utils/array.helper.js +5 -5
  604. package/dist/utils/id-generators.d.ts +6 -0
  605. package/dist/utils/id-generators.js +10 -0
  606. package/dist/utils/media-url.js +0 -2
  607. package/dist/utils/search-txt-builders.d.ts +28 -4
  608. package/dist/utils/search-txt-builders.js +41 -1
  609. package/dist/validation/schemas.d.ts +8 -8
  610. package/package.json +6 -2
  611. package/scripts/seed-cli.mjs +3 -0
  612. package/dist/features/account/components/UserAddressesView.d.ts +0 -13
  613. package/dist/features/account/components/UserAddressesView.js +0 -5
  614. package/dist/features/account/components/UserNotificationsView.d.ts +0 -15
  615. package/dist/features/account/components/UserNotificationsView.js +0 -12
  616. package/dist/features/account/components/UserSettingsView.d.ts +0 -16
  617. package/dist/features/account/components/UserSettingsView.js +0 -13
  618. package/dist/features/account/components/UserSupportView.d.ts +0 -3
  619. package/dist/features/account/components/UserSupportView.js +0 -166
  620. package/dist/features/admin/components/DemoSeedView.d.ts +0 -11
  621. package/dist/features/admin/components/DemoSeedView.js +0 -5
  622. package/dist/features/auth/components/AuthStatusPanel.d.ts +0 -10
  623. package/dist/features/auth/components/AuthStatusPanel.js +0 -22
  624. package/dist/features/categories/components/CategoryProductsView.d.ts +0 -45
  625. package/dist/features/categories/components/CategoryProductsView.js +0 -21
  626. package/dist/features/homepage/components/HowItWorksInfoView.d.ts +0 -36
  627. package/dist/features/homepage/components/HowItWorksInfoView.js +0 -10
  628. package/dist/features/layout/BottomActions.d.ts +0 -1
  629. package/dist/features/layout/BottomActions.js +0 -311
  630. package/dist/features/products/components/ProductsView.d.ts +0 -6
  631. package/dist/features/products/components/ProductsView.js +0 -5
  632. package/dist/features/seller/components/SellerStoreView.d.ts +0 -8
  633. package/dist/features/seller/components/SellerStoreView.js +0 -8
@@ -1,2 +1,2 @@
1
- import type { BidDocument } from "../features/auctions/schemas/firestore";
2
- export declare const bidsSeedData: BidDocument[];
1
+ import type { BidPlain } from "../features/auctions/schemas/firestore";
2
+ export declare const bidsSeedData: BidPlain[];
@@ -23,6 +23,7 @@
23
23
  * @tag consumers:seed/index.ts,seed/runner.ts
24
24
  * @tag sideEffects:none
25
25
  */
26
+ import { buildBidSearchTxt } from "../utils/search-txt-builders.js";
26
27
  const NOW = new Date();
27
28
  const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
28
29
  const BIDDER_EMAILS = {
@@ -36,7 +37,7 @@ const BIDDER_NAMES = {
36
37
  "user-ananya-collector": "Mock User 9",
37
38
  };
38
39
  /*
39
- * Typed on the document, not `FirestoreDocument`. Once `BidDocument` gained
40
+ * Typed on the PLAIN shape, not `FirestoreDocument`. Once `BidDocument` gained
40
41
  * `statusHistory?: StatusChangeEntry[]`, `Partial<BidDocument>` stopped being
41
42
  * assignable to `FirestoreDocument` — an array of objects does not satisfy
42
43
  * that index signature. The right fix is to narrow the parameter to what the
@@ -51,6 +52,26 @@ function withBidDefaults(b) {
51
52
  currency: "INR",
52
53
  isWinning: b.status === "active" || b.status === "won",
53
54
  updatedAt: (b.createdAt ?? NOW),
55
+ /*
56
+ * 🛑 DERIVED here, from the same builder the repository's write hook uses —
57
+ * never a hand-written token list.
58
+ *
59
+ * A seeded row without this is invisible to search forever:
60
+ * `array-contains` cannot match a field the document does not have, and it
61
+ * raises nothing (Root Cause #101's shape). Deriving it from
62
+ * `buildBidSearchTxt` is also what keeps the seed and every runtime write
63
+ * agreeing on the normalisation — two token lists built two ways is the
64
+ * mirror-drift trap (Root Cause #42).
65
+ *
66
+ * Applied INSIDE `withBidDefaults` on purpose, after `productTitle` is
67
+ * defaulted above: a derivation placed before it would index the empty
68
+ * string for every row that relies on the fallback.
69
+ */
70
+ searchTxt: buildBidSearchTxt({
71
+ productTitle: b.productTitle ??
72
+ (b.productId ?? "").replace(/^auction-/, "").replace(/-/g, " "),
73
+ userName: b.userName,
74
+ }),
54
75
  };
55
76
  }
56
77
  /**
@@ -154,7 +175,7 @@ const _rawBidsSeedData = [
154
175
  // auction-beyblade-burst-spriggan-requiem-bought-out — a BUYOUT ended it.
155
176
  //
156
177
  // Three competitive bids that lost, then the buyout that won. A buyout is a
157
- // real BidDocument (`isBuyout: true`) — it is not a bid-free purchase, which
178
+ // real BidPlain (`isBuyout: true`) — it is not a bid-free purchase, which
158
179
  // is why the order's `sourceContext.bidCount` is 3 rather than 0: the buyout
159
180
  // itself is excluded from the "against N bidders" figure, the three it beat
160
181
  // are not. `standingBidAtBuyout` is read from these bids and NOT from
@@ -1,5 +1,5 @@
1
- import type { EventDocument, EventEntryDocument } from "../features/events/schemas";
2
- export declare const eventEntriesSeedData: EventEntryDocument[];
1
+ import type { EventDocument, EventEntryPlain } from "../features/events/schemas";
2
+ export declare const eventEntriesSeedData: EventEntryPlain[];
3
3
  /**
4
4
  * Tokens derived here, not per record — see _helpers/search-txt-wrappers.ts for
5
5
  * why the wrapper form is what makes omission impossible.
@@ -361,6 +361,11 @@ const _raweventsSeedData = [
361
361
  },
362
362
  ];
363
363
  // ── Event Entries ────────────────────────────────────────────────────────────
364
+ /*
365
+ * 🛑 `EventEntryPlain`: these fixtures hold REAL plaintext and `seed-cli`
366
+ * encrypts the PII fields on write. The document type now declares them
367
+ * `Encrypted<string>`, so the document type would be a false claim.
368
+ */
364
369
  export const eventEntriesSeedData = [
365
370
  // Rehan entered the poll
366
371
  {
@@ -659,7 +659,7 @@ const faqSeedRecords = [
659
659
  {
660
660
  id: "faq-how-to-verify-authenticity",
661
661
  question: "How can I verify if a collectible is authentic?",
662
- answer: html(`<p>Look for these trust signals on LetItRip: <strong>Verified Seller</strong> badge (store has passed manual review), <strong>Graded</strong> badge (PSA/BGS/CGC certified with certificate number), <strong>Sealed</strong> badge (factory-sealed product). For ungraded items, check the seller's photo quality and description detail. If in doubt, message the seller before purchasing.</p>`),
662
+ answer: html(`<p>Look for these trust signals on LetItRip: <strong>Verified Seller</strong> badge (store has passed manual review), <strong>Graded</strong> badge (PSA/BGS/CGC certified with certificate number), <strong>Sealed</strong> badge (factory-sealed product). For ungraded items, check the seller's photo quality and description detail. If in doubt, message the seller before purchasing.</p><p>For <strong>Beyblades specifically</strong>, the <a href="/tools/authenticity">authenticity checker</a> takes a model name, a box code or the brand on the packaging and tells you which checks apply to that generation — and the <a href="/spot-a-fake">spot-a-fake guide</a> walks the same signals by hand, with no account needed.</p>`),
663
663
  category: "product_information",
664
664
  showOnHomepage: true,
665
665
  showInFooter: false,
@@ -667,7 +667,7 @@ const faqSeedRecords = [
667
667
  order: 32,
668
668
  priority: 8,
669
669
  tags: ["authentication", "verification", "trust"],
670
- relatedFAQs: ["faq-counterfeit-guarantee", "faq-psa-vs-bgs-vs-cgc"],
670
+ relatedFAQs: ["faq-counterfeit-guarantee", "faq-psa-vs-bgs-vs-cgc", "faq-check-if-my-beyblade-is-original"],
671
671
  stats: makeStats(3800, 190),
672
672
  seo: { slug: "faq-how-to-verify-authenticity", metaTitle: "Verify Collectible Authenticity", metaDescription: "How to verify if a collectible is authentic on LetItRip." },
673
673
  isActive: true,
@@ -1464,10 +1464,79 @@ const faqSeedRecords = [
1464
1464
  createdAt: daysAgo(30),
1465
1465
  updatedAt: daysAgo(2),
1466
1466
  },
1467
+ {
1468
+ id: "faq-check-if-my-beyblade-is-original",
1469
+ question: "How do I check whether my Beyblade is original?",
1470
+ answer: html("<p>Start with the <a href=\"/tools/authenticity\">authenticity checker</a>. Give it a model name, the code printed on the box, or the brand on the packaging, and it tells you which checks apply to that generation, what the recorded box codes say, and what is still unsettled. The reference half of that page — the generation table, the box-code explanation, the checks that apply regardless — is free and needs no account; only the per-item lookup asks you to sign in.</p><p>🛑 <strong>It grades, it does not rule.</strong> The strongest thing it will say is that something matches a batch collectors record as a reduced-quality run — a statement about a production batch, never an accusation against your seller. Authenticity is settled by physical checks, and the tool lists the conclusive ones first for your generation: a fully die-cast performance tip on a Metal Fight bey, Phillips screws where tri-wing belong on Burst, a Gear Chip missing the <em>Beyblade X</em> logo, or moulded Takara copyright text absent from a plastic-generation part.</p><p>The longer buying guide is at <a href=\"/spot-a-fake\">how to spot a fake</a>. If the problem is a specific seller rather than a specific item, the <a href=\"/scams\">scam registry</a> takes reports.</p>"),
1471
+ category: "product_information",
1472
+ showOnHomepage: true,
1473
+ showInFooter: false,
1474
+ isPinned: false,
1475
+ order: 208,
1476
+ priority: 10,
1477
+ tags: ["authenticity", "fake", "original", "beyblade", "checker", "takara tomy"],
1478
+ relatedFAQs: ["faq-beyblade-box-code-meaning", "faq-what-is-a-reproduction", "faq-is-funskool-beyblade-fake"],
1479
+ stats: makeStats(0, 0),
1480
+ seo: {
1481
+ slug: "faq-check-if-my-beyblade-is-original",
1482
+ metaTitle: "How do I check whether my Beyblade is original?",
1483
+ metaDescription: "Use the authenticity checker: a model name, a box code or the brand on the packaging, and it shows which checks apply to that generation and what is still unsettled.",
1484
+ },
1485
+ isActive: true,
1486
+ createdBy: "user-admin-letitrip",
1487
+ createdAt: daysAgo(1),
1488
+ updatedAt: daysAgo(1),
1489
+ },
1490
+ {
1491
+ id: "faq-beyblade-box-code-meaning",
1492
+ question: "What does the code on the bottom of the box mean?",
1493
+ answer: html("<p>Two different things are both called “the code”, and they answer different questions.</p><p>A <strong>product code</strong> — <code>BB-105</code>, <code>B-174</code>, <code>BX-34</code>, <code>MA-09</code> — identifies the release, and its letter prefix identifies the generation. Read the whole letter group before the digits: <code>BB-</code> is Metal Fight while <code>B-</code> is Burst, so they are easy to confuse. 🛑 <strong>A product code existing proves nothing about authenticity.</strong> One counterfeit catalogue we measured carried more than 900 genuine Takara Tomy codes across 1,277 unlicensed products. What carries information is whether the code and the model name <em>agree</em> — which is what the <a href=\"/tools/authenticity\">authenticity checker</a> compares.</p><p>A <strong>date code</strong> is a letter followed by four digits, like <code>A0813</code>, and it is a production stamp. Collectors have compiled which of these appear on boxes known to be genuine and which belong to reduced-quality batches, and the checker holds both lists for the Metal Fight era. 🛑 <strong>How it decodes is disputed.</strong> One reading takes the letter as the month and the next two digits as the day (8 January 2013); another takes the letter as the factory and the digits as the week of the year. Takara Tomy has published neither, so treat any date as indicative. No decoding has been established at all for Burst or Beyblade X boxes.</p><p>A code that is in neither list means <em>not recorded</em>, not <em>fake</em> — the lists were compiled from boxes collectors personally held, and new genuine codes still surface.</p>"),
1494
+ category: "product_information",
1495
+ showOnHomepage: false,
1496
+ showInFooter: false,
1497
+ isPinned: false,
1498
+ order: 209,
1499
+ priority: 9,
1500
+ tags: ["box code", "date code", "product code", "authenticity", "takara tomy", "midfake"],
1501
+ relatedFAQs: ["faq-check-if-my-beyblade-is-original", "faq-what-is-a-reproduction"],
1502
+ stats: makeStats(0, 0),
1503
+ seo: {
1504
+ slug: "faq-beyblade-box-code-meaning",
1505
+ metaTitle: "What does the code on the bottom of a Beyblade box mean?",
1506
+ metaDescription: "Product codes identify the release and the generation; date codes are production stamps with two disputed readings. Neither proves a bey is genuine on its own.",
1507
+ },
1508
+ isActive: true,
1509
+ createdBy: "user-admin-letitrip",
1510
+ createdAt: daysAgo(1),
1511
+ updatedAt: daysAgo(1),
1512
+ },
1513
+ {
1514
+ id: "faq-is-funskool-beyblade-fake",
1515
+ question: "Is a Funskool Beyblade fake? What about Sonokong?",
1516
+ answer: html("<p><strong>No. Both are legitimate.</strong> Funskool is a licensed Indian importer and Sonokong is the licensed South Korean producer — their names on a box are a <em>positive</em> signal, not a warning. The same goes for the other regional importers: Mani (Hong Kong), Funbox (Taiwan), Sheng Tai (Singapore), NewBoy (Middle East), Bankee (Philippines) and PT Emway (Indonesia). An importer’s holographic sticker or certificate inside the packaging is a sign of a properly imported product.</p><p>🛑 A guide that tells you anything other than “Takara Tomy” or “Hasbro” is a fake is simply wrong, and that mistake is costly in India specifically, where Funskool product is common.</p><p>What <em>should</em> worry you is a box whose most prominent branding is a name nobody licenses — or no manufacturer name at all. Sellers of unlicensed tops here rarely claim to be originals; they sell under their own brand as “aftermarket”, “custom” or “upgraded”. That framing is not a grey area. You can check a brand name against the known lists in the <a href=\"/tools/authenticity\">authenticity checker</a>.</p>"),
1517
+ category: "product_information",
1518
+ showOnHomepage: false,
1519
+ showInFooter: false,
1520
+ isPinned: false,
1521
+ order: 211,
1522
+ priority: 8,
1523
+ tags: ["funskool", "sonokong", "importer", "authenticity", "india", "licensed"],
1524
+ relatedFAQs: ["faq-check-if-my-beyblade-is-original", "faq-what-is-a-reproduction"],
1525
+ stats: makeStats(0, 0),
1526
+ seo: {
1527
+ slug: "faq-is-funskool-beyblade-fake",
1528
+ metaTitle: "Is a Funskool Beyblade fake?",
1529
+ metaDescription: "No — Funskool is a licensed Indian importer and Sonokong the licensed Korean producer. Both marques are a positive signal, not a warning.",
1530
+ },
1531
+ isActive: true,
1532
+ createdBy: "user-admin-letitrip",
1533
+ createdAt: daysAgo(1),
1534
+ updatedAt: daysAgo(1),
1535
+ },
1467
1536
  {
1468
1537
  id: "faq-what-is-a-reproduction",
1469
1538
  question: "What is a \"reproduction\" or \"midfake\"? Is it a fake?",
1470
- answer: html("<p>A <strong>reproduction</strong> — the community calls them midfakes — is an unbranded 1st-copy of an original design, mostly Chinese-made, carrying no manufacturer's marque. Quality is often genuinely good, and some tournament formats permit certain reproduction parts.</p><p>It is <strong>not</strong> the same as a cheap counterfeit. A counterfeit is poor-quality and can contain lead or cadmium in its metal parts, which is a safety matter — we do not allow those listed at all. A reproduction is a legitimate thing to sell <em>when it is labelled</em>, and every listing on LetItRip states its authenticity as Original, Reproduction, or Unverified.</p><p>🛑 If a seller calls something \"aftermarket\", \"custom\" or \"upgraded\" without naming a manufacturer, they are describing a reproduction. Ask.</p>"),
1539
+ answer: html("<p><strong>“Midfake” is used two ways</strong>, and the difference matters. In the Metal Fight community it means a specific thing: a <em>Takara Tomy</em> batch of reduced quality, built on Takara Tomy blueprints in Taiwan, with different alloys and TT-style box codes — so it may well carry the real marque. Collectors identify those batches by the code on the bottom of the box. Used more loosely — and this is the commoner sense in India — it means any 1st-copy of an original design, mostly Chinese-made, carrying no manufacturer's marque at all. Quality is often genuinely good, and some tournament formats permit certain reproduction parts.</p><p>🛑 There is <strong>no official Takara Tomy statement</strong> acknowledging the reduced-quality batches, so everything known about them comes from collectors comparing boxes.</p><p>It is <strong>not</strong> the same as a cheap counterfeit. A counterfeit is poor-quality and can contain lead or cadmium in its metal parts, which is a safety matter — we do not allow those listed at all. A reproduction is a legitimate thing to sell <em>when it is labelled</em>, and every listing on LetItRip states its authenticity as Original, Reproduction, or Unverified.</p><p>🛑 If a seller calls something \"aftermarket\", \"custom\" or \"upgraded\" without naming a manufacturer, they are describing a reproduction. Ask.</p>"),
1471
1540
  category: "product_information",
1472
1541
  showOnHomepage: true,
1473
1542
  showInFooter: false,
@@ -1475,12 +1544,12 @@ const faqSeedRecords = [
1475
1544
  order: 210,
1476
1545
  priority: 10,
1477
1546
  tags: ["reproduction", "midfake", "authenticity", "fake", "aftermarket"],
1478
- relatedFAQs: [],
1547
+ relatedFAQs: ["faq-check-if-my-beyblade-is-original", "faq-beyblade-box-code-meaning", "faq-counterfeit-guarantee"],
1479
1548
  stats: makeStats(670, 50),
1480
1549
  seo: {
1481
1550
  slug: "faq-what-is-a-reproduction",
1482
1551
  metaTitle: "What is a \"reproduction\" or \"midfake\"? Is it a fake?",
1483
- metaDescription: "A reproduction — the community calls them midfakes — is an unbranded 1st-copy of an original design, mostly Chinese-made, carrying no manufacturer's marque",
1552
+ metaDescription: "“Midfake” means two different things — a reduced-quality Takara Tomy batch, or any unbranded 1st-copy. Both differ from a counterfeit.",
1484
1553
  },
1485
1554
  isActive: true,
1486
1555
  createdBy: "user-admin-letitrip",
@@ -1763,6 +1832,107 @@ const faqSeedRecords = [
1763
1832
  createdAt: daysAgo(30),
1764
1833
  updatedAt: daysAgo(2),
1765
1834
  },
1835
+ // ── STICKER SHEETS (3) ──────────────────────────────────────────────────────
1836
+ //
1837
+ // 🛑 FILED UNDER `product_information`, NOT A NEW `stickers` CATEGORY.
1838
+ // The plan called for one, on the premise that the seeded set was
1839
+ // Shipping/Returns/Payments/Auctions/Pre-orders — that list came from a stale
1840
+ // paragraph in CLAUDE.md. The real union already carries `product_information`
1841
+ // (FAQ_CATEGORY_LABELS), which is exactly what these are. Adding a tenth
1842
+ // category for three entries would mean extending a compile-checked union,
1843
+ // the admin option list and every chip derived from it, to say something an
1844
+ // existing value already says.
1845
+ //
1846
+ // 🛑 THREE, NOT SIX. The plan drafted six questions and said plainly that the
1847
+ // answers to half of them need product facts nobody has yet. Those three are
1848
+ // listed below as questions ONLY, and are deliberately NOT seeded — `faqs` is
1849
+ // a public, indexed collection with its own seo.slug, so a placeholder answer
1850
+ // there is a confident lie on a page Google will read.
1851
+ //
1852
+ // · "What size are the stickers?" needs: real sheet + part dimensions
1853
+ // · "Are they weatherproof / dishwasher-safe?" needs: material + laminate spec
1854
+ // · "Can I buy a single sticker rather than a whole sheet?"
1855
+ // needs: the per-part listings from Part Two. Today the honest answer is
1856
+ // "no", and seeding that now would have to be rewritten the week the
1857
+ // grouped parent+parts listings ship.
1858
+ //
1859
+ // The three below need no product facts — they explain what a kiss cut IS,
1860
+ // which is true of every kiss-cut sticker ever made.
1861
+ {
1862
+ id: "faq-what-is-a-kiss-cut-sticker",
1863
+ question: "What is a kiss-cut sticker?",
1864
+ answer: html(`<p>A <strong>kiss cut</strong> goes through the sticker's vinyl but <em>not</em> through the paper backing behind it. The sheet stays in one piece, and each sticker peels off individually when you want it.</p><p>A <strong>die cut</strong> goes all the way through both layers, so every sticker is already a separate loose piece.</p><p>Kiss-cut sheets are what vintage Beyblade stickers were originally made as: one sheet, many stickers, each outlined along its own shape.</p>`),
1865
+ category: "product_information",
1866
+ showOnHomepage: false,
1867
+ showInFooter: false,
1868
+ isPinned: false,
1869
+ order: 1,
1870
+ priority: 5,
1871
+ tags: ["stickers", "kiss-cut", "die-cut", "sheets"],
1872
+ relatedFAQs: ["faq-sticker-white-border", "faq-how-to-apply-a-sticker"],
1873
+ useSiteSettings: true,
1874
+ variables: {},
1875
+ stats: makeStats(0, 0),
1876
+ seo: {
1877
+ slug: "faq-what-is-a-kiss-cut-sticker",
1878
+ metaTitle: "What is a kiss-cut sticker? | LetItRip",
1879
+ metaDescription: "A kiss cut goes through the vinyl but not the backing, so the sheet stays whole and each sticker peels off on its own.",
1880
+ },
1881
+ isActive: true,
1882
+ createdBy: "user-admin-letitrip",
1883
+ createdAt: daysAgo(1),
1884
+ updatedAt: daysAgo(1),
1885
+ },
1886
+ {
1887
+ id: "faq-sticker-white-border",
1888
+ question: "Why do some stickers have a white border around them?",
1889
+ answer: html(`<p>That border is part of the cut, not a printing mistake. A cutter cannot follow fine detail perfectly, so the cut line is placed slightly <em>outside</em> the artwork — the small margin that leaves is what stops a sliver of artwork being shaved off if the blade drifts by a fraction of a millimetre.</p><p>Where the original sticker was designed with a border, we keep it. Where it was cut tight to the art, we cut tight to the art.</p>`),
1890
+ category: "product_information",
1891
+ showOnHomepage: false,
1892
+ showInFooter: false,
1893
+ isPinned: false,
1894
+ order: 2,
1895
+ priority: 4,
1896
+ tags: ["stickers", "border", "cutting", "bleed"],
1897
+ relatedFAQs: ["faq-what-is-a-kiss-cut-sticker"],
1898
+ useSiteSettings: true,
1899
+ variables: {},
1900
+ stats: makeStats(0, 0),
1901
+ seo: {
1902
+ slug: "faq-sticker-white-border",
1903
+ metaTitle: "Why do stickers have a white border? | LetItRip",
1904
+ metaDescription: "The margin around a sticker is part of the cut — it stops the blade shaving artwork if it drifts a fraction of a millimetre.",
1905
+ },
1906
+ isActive: true,
1907
+ createdBy: "user-admin-letitrip",
1908
+ createdAt: daysAgo(1),
1909
+ updatedAt: daysAgo(1),
1910
+ },
1911
+ {
1912
+ id: "faq-how-to-apply-a-sticker",
1913
+ question: "How do I apply a sticker so it does not lift at the edges?",
1914
+ answer: html(`<p>Clean the surface first and let it dry completely — most lifting is a dusty or slightly greasy surface rather than the adhesive.</p><p>Peel the sticker from one corner rather than lifting it flat, lay that edge down first, then press across the sticker in one direction so the air pushes out ahead of your finger instead of being trapped under it.</p><p>Press firmly for a few seconds once it is down, and leave it a day before getting it wet.</p>`),
1915
+ category: "product_information",
1916
+ showOnHomepage: false,
1917
+ showInFooter: false,
1918
+ isPinned: false,
1919
+ order: 3,
1920
+ priority: 3,
1921
+ tags: ["stickers", "application", "how-to"],
1922
+ relatedFAQs: ["faq-what-is-a-kiss-cut-sticker"],
1923
+ useSiteSettings: true,
1924
+ variables: {},
1925
+ stats: makeStats(0, 0),
1926
+ seo: {
1927
+ slug: "faq-how-to-apply-a-sticker",
1928
+ metaTitle: "How to apply a sticker without lifting edges | LetItRip",
1929
+ metaDescription: "Clean the surface, lay one edge first, and press across in one direction so air pushes out ahead of your finger.",
1930
+ },
1931
+ isActive: true,
1932
+ createdBy: "user-admin-letitrip",
1933
+ createdAt: daysAgo(1),
1934
+ updatedAt: daysAgo(1),
1935
+ },
1766
1936
  ];
1767
1937
  /**
1768
1938
  * Derive `searchTxt` for every record from its own content.
@@ -1,12 +1,28 @@
1
1
  /*
2
2
  * WHY: Seeds the homepage layout — which sections render, in what order, with what copy.
3
- * WHAT: 22 sections (21 enabled + 1 deliberately disabled), ordered 1..21 contiguously.
3
+ * WHAT: 23 sections (22 enabled + 1 deliberately disabled), ordered 1..23 contiguously.
4
+ *
5
+ * 🛑 That count and range are ASSERTED, not described — `order` must stay unique
6
+ * and contiguous. Until 2026-10-19 this header read "22 sections … 1..21" while
7
+ * the file held 23 documents numbered 1..22, and `section-systems-matrix` and
8
+ * `section-featured-products` BOTH claimed `order: 5`. `MarketplaceHomepageView`
9
+ * tie-breaks on `updatedAt` (identical for both) and then `id.localeCompare`, so
10
+ * the live running order of the homepage was decided alphabetically — a silent
11
+ * accident, not a layout decision.
4
12
  *
5
13
  * ORDER follows current marketplace-homepage research rather than the previous
6
- * arbitrary arrangement: hero → trust → orient (categories) → shop (products,
7
- * auctions, pre-orders, bundles) → supply (stores) → social proof (reviews) →
8
- * engage (events, raffles, prize draws) → editorial (blog) → convert (seller
9
- * banner, newsletter) → reassure (stats, security, community, FAQ, brands).
14
+ * arbitrary arrangement: hero → trust → orient (categories, systems matrix) →
15
+ * shop (products, auctions, pre-orders, bundles) → supply (stores) → social
16
+ * proof (reviews) → engage (events, raffles, prize draws) → editorial (blog) →
17
+ * convert (seller banner, newsletter) → reassure (stats, security, community,
18
+ * FAQ, brands).
19
+ *
20
+ * The systems matrix sits at 5, between the generation tiles and the first
21
+ * product rail, because that is where the measured leader puts it: on
22
+ * worldhobbyshop "Browse Beyblade Systems & Series" (25 text links) follows
23
+ * "Shop Beyblades by Generation" (6 image tiles) and precedes the one product
24
+ * rail — taxonomy routing before merchandising. See
25
+ * docs/research/competitor-crawl-2026-10/layout.md.
10
26
  *
11
27
  * Baymard's finding drives the top: a static hero outperforms a carousel, and
12
28
  * the one documented carousel win came from demoting it BELOW a static hero.
@@ -145,7 +161,7 @@ export const homepageSectionsSeedData = [
145
161
  {
146
162
  id: "section-featured-products",
147
163
  type: "products",
148
- order: 5,
164
+ order: 6,
149
165
  enabled: true,
150
166
  config: {
151
167
  title: "Featured Products",
@@ -163,7 +179,7 @@ export const homepageSectionsSeedData = [
163
179
  {
164
180
  id: "section-live-auctions",
165
181
  type: "auctions",
166
- order: 6,
182
+ order: 7,
167
183
  enabled: true,
168
184
  config: {
169
185
  title: "Live Auctions",
@@ -181,7 +197,7 @@ export const homepageSectionsSeedData = [
181
197
  {
182
198
  id: "section-pre-orders",
183
199
  type: "pre-orders",
184
- order: 7,
200
+ order: 8,
185
201
  enabled: true,
186
202
  config: {
187
203
  title: "Reserve Before It Ships",
@@ -199,7 +215,7 @@ export const homepageSectionsSeedData = [
199
215
  {
200
216
  id: "section-featured-bundles",
201
217
  type: "featured-bundles",
202
- order: 8,
218
+ order: 9,
203
219
  enabled: true,
204
220
  config: {
205
221
  title: "Curated Bundles",
@@ -215,7 +231,7 @@ export const homepageSectionsSeedData = [
215
231
  {
216
232
  id: "section-featured-stores",
217
233
  type: "stores",
218
- order: 9,
234
+ order: 10,
219
235
  enabled: true,
220
236
  config: {
221
237
  title: "Featured Stores",
@@ -233,7 +249,7 @@ export const homepageSectionsSeedData = [
233
249
  {
234
250
  id: "section-collector-reviews",
235
251
  type: "reviews",
236
- order: 10,
252
+ order: 11,
237
253
  enabled: true,
238
254
  config: {
239
255
  title: "What Buyers Say",
@@ -252,7 +268,7 @@ export const homepageSectionsSeedData = [
252
268
  {
253
269
  id: "section-upcoming-events",
254
270
  type: "events",
255
- order: 11,
271
+ order: 12,
256
272
  enabled: true,
257
273
  config: {
258
274
  title: "Events & Offers",
@@ -269,7 +285,7 @@ export const homepageSectionsSeedData = [
269
285
  {
270
286
  id: "section-event-raffles",
271
287
  type: "event-raffles",
272
- order: 12,
288
+ order: 13,
273
289
  enabled: true,
274
290
  config: {
275
291
  title: "Raffles & Spin Wheels",
@@ -285,7 +301,7 @@ export const homepageSectionsSeedData = [
285
301
  {
286
302
  id: "section-prize-draws",
287
303
  type: "prize-draws",
288
- order: 13,
304
+ order: 14,
289
305
  enabled: true,
290
306
  config: {
291
307
  title: "Prize Draws",
@@ -304,7 +320,7 @@ export const homepageSectionsSeedData = [
304
320
  {
305
321
  id: "section-collector-blog",
306
322
  type: "blog-articles",
307
- order: 14,
323
+ order: 15,
308
324
  enabled: true,
309
325
  config: {
310
326
  title: "From Our Blog",
@@ -324,7 +340,7 @@ export const homepageSectionsSeedData = [
324
340
  {
325
341
  id: "section-beyblade-banner",
326
342
  type: "banner",
327
- order: 15,
343
+ order: 16,
328
344
  enabled: true,
329
345
  config: {
330
346
  height: "md",
@@ -348,7 +364,7 @@ export const homepageSectionsSeedData = [
348
364
  {
349
365
  id: "section-newsletter",
350
366
  type: "newsletter",
351
- order: 16,
367
+ order: 17,
352
368
  enabled: true,
353
369
  config: {
354
370
  title: "Get new listings first",
@@ -366,7 +382,7 @@ export const homepageSectionsSeedData = [
366
382
  {
367
383
  id: "section-platform-stats",
368
384
  type: "stats",
369
- order: 17,
385
+ order: 18,
370
386
  enabled: true,
371
387
  config: {
372
388
  title: "By the numbers",
@@ -383,7 +399,7 @@ export const homepageSectionsSeedData = [
383
399
  {
384
400
  id: "section-platform-features",
385
401
  type: "features",
386
- order: 18,
402
+ order: 19,
387
403
  enabled: true,
388
404
  config: {
389
405
  title: "Security You Can Trust",
@@ -419,7 +435,7 @@ export const homepageSectionsSeedData = [
419
435
  {
420
436
  id: "section-whatsapp-community",
421
437
  type: "whatsapp-community",
422
- order: 19,
438
+ order: 20,
423
439
  enabled: true,
424
440
  config: {
425
441
  title: "Join the community",
@@ -440,7 +456,7 @@ export const homepageSectionsSeedData = [
440
456
  {
441
457
  id: "section-homepage-faq",
442
458
  type: "faq",
443
- order: 20,
459
+ order: 21,
444
460
  enabled: true,
445
461
  config: {
446
462
  title: "Frequently Asked Questions",
@@ -509,7 +525,7 @@ export const homepageSectionsSeedData = [
509
525
  {
510
526
  id: "section-top-brands",
511
527
  type: "brands",
512
- order: 21,
528
+ order: 22,
513
529
  enabled: true,
514
530
  config: {
515
531
  title: "Top Brands",
@@ -530,7 +546,7 @@ export const homepageSectionsSeedData = [
530
546
  {
531
547
  id: "section-social-feed-instagram",
532
548
  type: "social-feed",
533
- order: 22,
549
+ order: 23,
534
550
  enabled: false,
535
551
  config: {
536
552
  title: "Follow along",
@@ -84,6 +84,7 @@ export { scammersSeedData } from "./scammers-seed-data";
84
84
  export { supportTicketsSeedData } from "./support-tickets-seed-data";
85
85
  export { testerChecklistSeedData, testerResponsesSeedData, } from "../features/tester/seed-data";
86
86
  export { productFeaturesSeedData } from "./product-features-seed-data";
87
+ export { authenticityKnowledgeSeedData, AUTHENTICITY_KNOWLEDGE_COLLECTION, AUTHENTICITY_KNOWLEDGE_COUNT, } from "./authenticity-knowledge-seed-data";
87
88
  export { taxCodesSeedData } from "./tax-codes-seed-data";
88
89
  export { offersSeedData } from "./offers-seed-data";
89
90
  export { payoutMethodsSeedData, shippingConfigsSeedData, analyticsCardsSeedData, analyticsAlertsSeedData, storeCategoriesSeedData, listingTemplatesSeedData, moderationQueueSeedData, reportsSeedData, itemRequestsSeedData, storeWhatsAppConfigSeedData, storeGoogleConfigSeedData, } from "./store-extensions-seed-data";
@@ -91,6 +91,7 @@ export { testerChecklistSeedData,
91
91
  // continues, which is exactly what happened on the first attempt here.
92
92
  testerResponsesSeedData, } from "../features/tester/seed-data/index.js";
93
93
  export { productFeaturesSeedData } from "./product-features-seed-data.js";
94
+ export { authenticityKnowledgeSeedData, AUTHENTICITY_KNOWLEDGE_COLLECTION, AUTHENTICITY_KNOWLEDGE_COUNT, } from "./authenticity-knowledge-seed-data.js";
94
95
  export { taxCodesSeedData } from "./tax-codes-seed-data.js";
95
96
  export { offersSeedData } from "./offers-seed-data.js";
96
97
  // S-STORE Extensions (Tier S-STORE) — 11 new collections
@@ -1,2 +1,2 @@
1
- import type { LotteryEntryDocument } from "../features/lottery/schemas/firestore";
2
- export declare const lotteryEntriesSeedData: LotteryEntryDocument[];
1
+ import type { LotteryEntryPlain } from "../features/lottery/schemas/firestore";
2
+ export declare const lotteryEntriesSeedData: LotteryEntryPlain[];
@@ -1,2 +1,2 @@
1
- import type { OfferDocument } from "../features/seller/schemas/firestore";
2
- export declare const offersSeedData: Partial<OfferDocument>[];
1
+ import type { OfferPlain } from "../features/seller/schemas/firestore";
2
+ export declare const offersSeedData: Partial<OfferPlain>[];
@@ -26,7 +26,7 @@
26
26
  * is testable, and it is the exact shape of every offer written before W2.
27
27
  *
28
28
  * EXPORTS:
29
- * offersSeedData — Array of Partial<OfferDocument> for seed runner
29
+ * offersSeedData — Array of Partial<OfferPlain> for seed runner
30
30
  *
31
31
  * @tag domain:offers,seller
32
32
  * @tag layer:seed
@@ -1,2 +1,2 @@
1
- import type { OrderDocument } from "../features/orders/schemas/firestore";
2
- export declare const ordersSeedData: OrderDocument[];
1
+ import type { OrderPlain } from "../features/orders/schemas/firestore";
2
+ export declare const ordersSeedData: OrderPlain[];
@@ -1,2 +1,2 @@
1
- import type { PayoutDocument } from "../features/payments/schemas";
2
- export declare const payoutsSeedData: Partial<PayoutDocument>[];
1
+ import type { PayoutPlain } from "../features/payments/schemas";
2
+ export declare const payoutsSeedData: Partial<PayoutPlain>[];
@@ -3,7 +3,7 @@
3
3
  * WHAT: 10 payouts: COMPLETED (5), PROCESSING (1), PENDING (2 — one with refund deduction), FAILED (2).
4
4
  *
5
5
  * EXPORTS:
6
- * payoutsSeedData — Array of Partial<PayoutDocument> for seed runner
6
+ * payoutsSeedData — Array of Partial<PayoutPlain> for seed runner
7
7
  *
8
8
  * @tag domain:payouts,payments
9
9
  * @tag layer:seed
@@ -1,2 +1 @@
1
- import type { ReviewDocument } from "../features/reviews/schemas/firestore";
2
- export declare const reviewsSeedData: ReviewDocument[];
1
+ export declare const reviewsSeedData: import("../security/encrypted").Plaintext<import("..").ReviewDocument>[];
@@ -136,6 +136,13 @@ export const SEED_COLLECTION_PURPOSE = {
136
136
  /* The ~169-term feature vocabulary: condition, authenticity, release, type,
137
137
  * spin, grade, chase. Hand-curated from the crawl. */
138
138
  productFeatures: "permanent",
139
+ /*
140
+ * The box-code tables and generation summaries. `permanent` because they
141
+ * are reference data compiled from archived primary sources, not exercise
142
+ * fixtures — a purge that cleared them would leave an admin with no way to
143
+ * answer "what do we say about this code" short of re-running a generator.
144
+ */
145
+ authenticityKnowledge: "permanent",
139
146
  /* Branding, fees, commissions, watermark, legal pages, and the AES-encrypted
140
147
  * credentials. 🛑 A purge here would destroy live API keys. */
141
148
  siteSettings: "permanent",
@@ -1,3 +1,3 @@
1
- import { type SessionDocument, SESSION_COLLECTION } from "../features/auth/schemas";
1
+ import { type SessionPlain, SESSION_COLLECTION } from "../features/auth/schemas";
2
2
  export { SESSION_COLLECTION };
3
- export declare const sessionsSeedData: SessionDocument[];
3
+ export declare const sessionsSeedData: SessionPlain[];
@@ -20,6 +20,11 @@ const NOW = new Date();
20
20
  const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
21
21
  const daysAhead = (n) => new Date(NOW.getTime() + n * 86400000);
22
22
  export { SESSION_COLLECTION };
23
+ /*
24
+ * 🛑 `SessionPlain`: these fixtures hold real IPs and user-agent strings, and
25
+ * `seed-cli` encrypts them on write through the repository's own nested
26
+ * `piiFields` paths. The document type declares them `Encrypted<string>`.
27
+ */
23
28
  export const sessionsSeedData = [
24
29
  // Admin — Chrome Desktop (active)
25
30
  {
@@ -55,7 +55,7 @@ export const siteSettingsSeedData = {
55
55
  announcementBar: {
56
56
  enabled: true,
57
57
  message: "🎉 Up to 25% off select listings + free shipping on orders above ₹999 — See Events for codes",
58
- link: "/events",
58
+ link: ROUTES.PUBLIC.EVENTS,
59
59
  },
60
60
  watermark: {
61
61
  type: "text",
@@ -1,4 +1,4 @@
1
- import type { SupportTicketDocument } from "../features/support/schemas/firestore";
1
+ import type { SupportTicketPlain } from "../features/support/schemas/firestore";
2
2
  /**
3
3
  * Derive `searchTxt` for every record from its own subject.
4
4
  *
@@ -13,4 +13,4 @@ import type { SupportTicketDocument } from "../features/support/schemas/firestor
13
13
  * function of the record's own content, so it stays deterministic and does not
14
14
  * reintroduce the `appkit-seed` idempotency problem of Root Cause #25.
15
15
  */
16
- export declare const supportTicketsSeedData: Partial<SupportTicketDocument>[];
16
+ export declare const supportTicketsSeedData: Partial<SupportTicketPlain>[];
@@ -3,7 +3,7 @@
3
3
  * WHAT: open (2), in_progress (2), waiting_on_user (1), resolved (2), closed (1).
4
4
  *
5
5
  * EXPORTS:
6
- * supportTicketsSeedData — Array of Partial<SupportTicketDocument> for seed runner
6
+ * supportTicketsSeedData — Array of Partial<SupportTicketPlain> for seed runner
7
7
  *
8
8
  * @tag domain:support
9
9
  * @tag layer:seed