@mohasinac/appkit 4.9.5 → 4.11.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 (395) hide show
  1. package/dist/_internal/client/features/layout/DashboardLayoutClient.d.ts +6 -1
  2. package/dist/_internal/client/features/layout/DashboardLayoutClient.js +4 -1
  3. package/dist/_internal/client/features/lottery/LotteryPullForm.d.ts +1 -1
  4. package/dist/_internal/client/features/lottery/LotteryPullForm.js +2 -2
  5. package/dist/_internal/server/features/admin/daily-digest-actions.d.ts +18 -0
  6. package/dist/_internal/server/features/admin/daily-digest-actions.js +37 -0
  7. package/dist/_internal/server/features/auctions/actions.js +3 -2
  8. package/dist/_internal/server/features/auctions/service.d.ts +4 -3
  9. package/dist/_internal/server/features/auctions/service.js +6 -6
  10. package/dist/_internal/server/features/audit-log/actions.d.ts +25 -0
  11. package/dist/_internal/server/features/audit-log/actions.js +38 -0
  12. package/dist/_internal/server/features/brands/actions.js +0 -2
  13. package/dist/_internal/server/features/brands/og.d.ts +4 -1
  14. package/dist/_internal/server/features/brands/og.js +1 -1
  15. package/dist/_internal/server/features/bundles/data.d.ts +9 -0
  16. package/dist/_internal/server/features/bundles/data.js +14 -0
  17. package/dist/_internal/server/features/bundles/index.d.ts +1 -1
  18. package/dist/_internal/server/features/bundles/index.js +1 -1
  19. package/dist/_internal/server/features/catalogue/og.d.ts +20 -0
  20. package/dist/_internal/server/features/catalogue/og.js +27 -0
  21. package/dist/_internal/server/features/grouped/data.d.ts +16 -0
  22. package/dist/_internal/server/features/grouped/data.js +50 -1
  23. package/dist/_internal/server/features/grouped/index.d.ts +1 -1
  24. package/dist/_internal/server/features/grouped/index.js +1 -1
  25. package/dist/_internal/server/features/orders/actions.js +9 -0
  26. package/dist/_internal/server/features/orders/adapters.js +25 -0
  27. package/dist/_internal/server/features/products/data.d.ts +23 -0
  28. package/dist/_internal/server/features/products/data.js +159 -0
  29. package/dist/_internal/server/features/products/index.d.ts +1 -1
  30. package/dist/_internal/server/features/products/index.js +1 -1
  31. package/dist/_internal/server/functions/scheduled.d.ts +3 -1
  32. package/dist/_internal/server/functions/scheduled.js +17 -1
  33. package/dist/_internal/server/jobs/core/dailyStatusDigest.d.ts +40 -0
  34. package/dist/_internal/server/jobs/core/dailyStatusDigest.js +164 -0
  35. package/dist/_internal/server/jobs/core/hardBanCascade.js +11 -0
  36. package/dist/_internal/server/jobs/core/testerSandboxCleanup.d.ts +1 -0
  37. package/dist/_internal/server/jobs/core/testerSandboxCleanup.js +4 -1
  38. package/dist/_internal/server/jobs/core/testerSandboxRefresh.d.ts +12 -0
  39. package/dist/_internal/server/jobs/core/testerSandboxRefresh.js +85 -0
  40. package/dist/_internal/server/jobs/core/whatsappNotify.js +16 -0
  41. package/dist/_internal/server/jobs/handlers/dailyStatusDigest.d.ts +2 -0
  42. package/dist/_internal/server/jobs/handlers/dailyStatusDigest.js +4 -0
  43. package/dist/_internal/server/jobs/handlers/index.d.ts +2 -0
  44. package/dist/_internal/server/jobs/handlers/index.js +3 -0
  45. package/dist/_internal/server/jobs/handlers/testerSandboxRefresh.d.ts +2 -0
  46. package/dist/_internal/server/jobs/handlers/testerSandboxRefresh.js +2 -0
  47. package/dist/_internal/server/notifications/channel-health.d.ts +27 -0
  48. package/dist/_internal/server/notifications/channel-health.js +101 -0
  49. package/dist/_internal/shared/features/auctions/config.d.ts +20 -0
  50. package/dist/_internal/shared/features/auctions/config.js +31 -1
  51. package/dist/_internal/shared/features/brands/schema.d.ts +0 -6
  52. package/dist/_internal/shared/features/brands/schema.js +0 -1
  53. package/dist/_internal/shared/features/categories/bundle-schemas.d.ts +7 -0
  54. package/dist/_internal/shared/features/categories/bundle-schemas.js +3 -0
  55. package/dist/_internal/shared/features/orders/schema.d.ts +8 -8
  56. package/dist/_internal/shared/listing-types/art/config.d.ts +1 -1
  57. package/dist/_internal/shared/listing-types/art/config.js +1 -1
  58. package/dist/_internal/shared/listing-types/classified/config.d.ts +1 -1
  59. package/dist/_internal/shared/listing-types/classified/config.js +1 -1
  60. package/dist/_internal/shared/listing-types/digital-code/config.d.ts +1 -1
  61. package/dist/_internal/shared/listing-types/digital-code/config.js +1 -1
  62. package/dist/_internal/shared/listing-types/live/config.d.ts +1 -1
  63. package/dist/_internal/shared/listing-types/live/config.js +1 -1
  64. package/dist/_internal/shared/listing-types/prize-draw/config.d.ts +1 -1
  65. package/dist/_internal/shared/listing-types/prize-draw/config.js +1 -1
  66. package/dist/_internal/shared/listing-types/stickers/config.d.ts +1 -1
  67. package/dist/_internal/shared/listing-types/stickers/config.js +1 -1
  68. package/dist/client.d.ts +21 -12
  69. package/dist/client.js +14 -7
  70. package/dist/constants/api-endpoints.d.ts +9 -9
  71. package/dist/constants/api-endpoints.js +3 -3
  72. package/dist/contracts/client-auth.d.ts +3 -7
  73. package/dist/contracts/email.d.ts +1 -0
  74. package/dist/features/account/components/AddressForm.js +24 -2
  75. package/dist/features/account/components/BecomeSellerView.d.ts +1 -2
  76. package/dist/features/account/components/BecomeSellerView.js +1 -1
  77. package/dist/features/account/components/NotificationBell.js +1 -1
  78. package/dist/features/account/components/UserBidsView.d.ts +1 -0
  79. package/dist/features/account/components/UserBidsView.js +47 -0
  80. package/dist/features/account/components/UserOrdersView.d.ts +4 -11
  81. package/dist/features/account/components/UserOrdersView.js +54 -4
  82. package/dist/features/account/components/UserReturnsView.d.ts +4 -9
  83. package/dist/features/account/components/UserReturnsView.js +37 -3
  84. package/dist/features/account/components/index.d.ts +3 -2
  85. package/dist/features/account/components/index.js +1 -0
  86. package/dist/features/admin/actions/admin-actions.js +22 -0
  87. package/dist/features/admin/actions/admin-coupon-actions.js +10 -0
  88. package/dist/features/admin/actions/notification-actions.js +4 -3
  89. package/dist/features/admin/components/AdminAdsView.d.ts +2 -3
  90. package/dist/features/admin/components/AdminAdsView.js +86 -89
  91. package/dist/features/admin/components/AdminAllEventEntriesView.js +18 -3
  92. package/dist/features/admin/components/AdminAuditLogView.d.ts +11 -0
  93. package/dist/features/admin/components/AdminAuditLogView.js +95 -0
  94. package/dist/features/admin/components/AdminBlogEditorView.js +37 -3
  95. package/dist/features/admin/components/AdminBrandEditorView.js +10 -6
  96. package/dist/features/admin/components/AdminBundleEditorView.js +18 -2
  97. package/dist/features/admin/components/AdminCarouselEditorView.js +2 -2
  98. package/dist/features/admin/components/AdminCarouselGroupEditorView.js +2 -2
  99. package/dist/features/admin/components/AdminCartsView.js +34 -4
  100. package/dist/features/admin/components/AdminCategoryEditorView.js +5 -4
  101. package/dist/features/admin/components/AdminCouponEditorView.js +2 -2
  102. package/dist/features/admin/components/AdminFaqEditorView.js +2 -2
  103. package/dist/features/admin/components/AdminHistoryView.js +11 -1
  104. package/dist/features/admin/components/AdminNotificationsView.js +27 -1
  105. package/dist/features/admin/components/AdminOrderEditorView.d.ts +10 -1
  106. package/dist/features/admin/components/AdminOrderEditorView.js +4 -3
  107. package/dist/features/admin/components/AdminOrdersView.js +92 -24
  108. package/dist/features/admin/components/AdminPayoutMarkPaidModal.d.ts +7 -0
  109. package/dist/features/admin/components/AdminPayoutMarkPaidModal.js +47 -0
  110. package/dist/features/admin/components/AdminPayoutsView.js +15 -31
  111. package/dist/features/admin/components/AdminProductEditorView.js +26 -3
  112. package/dist/features/admin/components/AdminSiteSettingsView.js +31 -4
  113. package/dist/features/admin/components/AdminStoreAddressesView.js +22 -2
  114. package/dist/features/admin/components/AdminStoresView.js +7 -0
  115. package/dist/features/admin/components/AdminSublistingCategoryEditorView.js +2 -2
  116. package/dist/features/admin/components/AdminTesterChecklistItemEditorView.js +2 -2
  117. package/dist/features/admin/components/AdminUserEditorView.d.ts +2 -2
  118. package/dist/features/admin/components/AdminUserEditorView.js +4 -2
  119. package/dist/features/admin/components/AdminUsersView.js +1 -1
  120. package/dist/features/admin/components/AdminWishlistsView.js +14 -1
  121. package/dist/features/admin/components/DataListingView.d.ts +2 -2
  122. package/dist/features/admin/components/ViewAuditLogEntryModal.d.ts +19 -0
  123. package/dist/features/admin/components/ViewAuditLogEntryModal.js +22 -0
  124. package/dist/features/admin/components/ViewNotificationModal.d.ts +21 -0
  125. package/dist/features/admin/components/ViewNotificationModal.js +15 -0
  126. package/dist/features/admin/components/analytics/AdminPageViewsReportView.d.ts +4 -7
  127. package/dist/features/admin/components/analytics/AdminPageViewsReportView.js +56 -36
  128. package/dist/features/admin/components/index.d.ts +8 -1
  129. package/dist/features/admin/components/index.js +4 -0
  130. package/dist/features/admin/constants/filter-tabs.d.ts +49 -0
  131. package/dist/features/admin/constants/filter-tabs.js +27 -0
  132. package/dist/features/admin/hooks/useAdminListing.d.ts +6 -0
  133. package/dist/features/admin/hooks/useAdminListing.js +3 -1
  134. package/dist/features/admin/hooks/useAdminListingData.d.ts +9 -1
  135. package/dist/features/admin/hooks/useAdminListingData.js +9 -2
  136. package/dist/features/admin/repository/site-settings.repository.d.ts +5 -0
  137. package/dist/features/admin/schemas/firestore.d.ts +21 -0
  138. package/dist/features/admin/schemas/firestore.js +6 -0
  139. package/dist/features/analytics/types.d.ts +1 -1
  140. package/dist/features/analytics/types.js +8 -0
  141. package/dist/features/auctions/actions/bid-actions.js +4 -1
  142. package/dist/features/auctions/components/AuctionBottomActions.d.ts +2 -1
  143. package/dist/features/auctions/components/AuctionBottomActions.js +14 -1
  144. package/dist/features/auctions/components/AuctionDetailPageView.js +21 -9
  145. package/dist/features/auctions/components/LiveMinIncrement.d.ts +18 -0
  146. package/dist/features/auctions/components/LiveMinIncrement.js +17 -0
  147. package/dist/features/auctions/components/PlaceBidFormClient.d.ts +5 -2
  148. package/dist/features/auctions/components/PlaceBidFormClient.js +7 -3
  149. package/dist/features/auctions/schemas/index.d.ts +5 -0
  150. package/dist/features/audit-log/repository/audit-log.repository.d.ts +45 -0
  151. package/dist/features/audit-log/repository/audit-log.repository.js +30 -0
  152. package/dist/features/audit-log/schemas/firestore.d.ts +59 -0
  153. package/dist/features/audit-log/schemas/firestore.js +35 -0
  154. package/dist/features/auth/actions/index.d.ts +0 -1
  155. package/dist/features/auth/actions/index.js +0 -1
  156. package/dist/features/auth/hooks/useAuth.d.ts +8 -35
  157. package/dist/features/auth/hooks/useAuth.js +21 -37
  158. package/dist/features/auth/permissions/constants.d.ts +1 -1
  159. package/dist/features/auth/permissions/constants.js +2 -0
  160. package/dist/features/blog/schemas/index.d.ts +32 -0
  161. package/dist/features/catalogue/components/AdminCatalogueApprovalsView.js +31 -3
  162. package/dist/features/catalogue/components/CatalogueItemEditorView.js +2 -1
  163. package/dist/features/catalogue/components/PublicCatalogueItemDetailView.d.ts +11 -0
  164. package/dist/features/catalogue/components/PublicCatalogueItemDetailView.js +33 -0
  165. package/dist/features/catalogue/components/PublicCatalogueView.js +2 -1
  166. package/dist/features/catalogue/index.d.ts +2 -0
  167. package/dist/features/catalogue/index.js +1 -0
  168. package/dist/features/categories/components/BrandDetailPageView.js +14 -12
  169. package/dist/features/categories/components/BundleDetailView.d.ts +3 -1
  170. package/dist/features/categories/components/BundleDetailView.js +3 -2
  171. package/dist/features/categories/components/CategoryDetailPageView.js +7 -3
  172. package/dist/features/categories/components/CategoryHighlightsAndFaqSection.d.ts +14 -0
  173. package/dist/features/categories/components/CategoryHighlightsAndFaqSection.js +22 -0
  174. package/dist/features/categories/components/CategoryProductsView.d.ts +1 -5
  175. package/dist/features/categories/components/CategoryProductsView.js +1 -1
  176. package/dist/features/categories/components/CategorySelectorCreate.js +16 -2
  177. package/dist/features/categories/schemas/firestore.d.ts +19 -2
  178. package/dist/features/categories/schemas/index.d.ts +24 -3
  179. package/dist/features/categories/schemas/index.js +3 -1
  180. package/dist/features/categories/types/index.d.ts +7 -0
  181. package/dist/features/checkout/actions/checkout-value-otp-actions.d.ts +17 -3
  182. package/dist/features/checkout/actions/checkout-value-otp-actions.js +101 -22
  183. package/dist/features/classified/components/ClassifiedContactSellerPanel.d.ts +12 -0
  184. package/dist/features/classified/components/ClassifiedContactSellerPanel.js +49 -0
  185. package/dist/features/classified/components/ClassifiedDetailPageView.d.ts +7 -0
  186. package/dist/features/classified/components/ClassifiedDetailPageView.js +69 -0
  187. package/dist/features/contact/components/ContactForm.js +17 -4
  188. package/dist/features/contact/components/ContactPageView.js +8 -2
  189. package/dist/features/contact/email.d.ts +1 -0
  190. package/dist/features/contact/email.js +3 -0
  191. package/dist/features/digital-codes/components/DigitalCodeDetailPageView.d.ts +19 -0
  192. package/dist/features/digital-codes/components/DigitalCodeDetailPageView.js +79 -0
  193. package/dist/features/events/components/AdminEventEditorView.js +54 -2
  194. package/dist/features/events/components/AdminEventEntriesView.d.ts +2 -16
  195. package/dist/features/events/components/AdminEventEntriesView.js +56 -89
  196. package/dist/features/events/components/EventFormDrawer.js +5 -1
  197. package/dist/features/events/components/EventRaffleEntryForm.d.ts +1 -3
  198. package/dist/features/events/components/EventRaffleEntryForm.js +1 -1
  199. package/dist/features/events/schemas/index.d.ts +22 -0
  200. package/dist/features/grouped/components/GroupedListingsCarousel.d.ts +13 -0
  201. package/dist/features/grouped/components/GroupedListingsCarousel.js +31 -0
  202. package/dist/features/grouped/repository/grouped-listings.repository.d.ts +12 -0
  203. package/dist/features/grouped/repository/grouped-listings.repository.js +34 -0
  204. package/dist/features/homepage/components/CharacterHotspotForm.js +202 -187
  205. package/dist/features/homepage/components/SectionCarousel.d.ts +1 -7
  206. package/dist/features/homepage/components/SectionCarousel.js +1 -1
  207. package/dist/features/layout/BottomActions.js +4 -3
  208. package/dist/features/layout/BottomActionsContext.d.ts +10 -0
  209. package/dist/features/layout/BottomActionsContext.js +5 -1
  210. package/dist/features/layout/TitleBarLayout.d.ts +1 -1
  211. package/dist/features/layout/TitleBarLayout.js +3 -3
  212. package/dist/features/layout/hooks/useBottomActions.d.ts +2 -0
  213. package/dist/features/layout/hooks/useBottomActions.js +4 -1
  214. package/dist/features/live/components/LiveItemDetailPageView.d.ts +9 -0
  215. package/dist/features/live/components/LiveItemDetailPageView.js +74 -0
  216. package/dist/features/media/MediaImage.js +39 -3
  217. package/dist/features/media/MediaVideo.js +17 -1
  218. package/dist/features/media/types/index.d.ts +10 -0
  219. package/dist/features/media/types/index.js +1 -0
  220. package/dist/features/media/upload/MediaUploadField.d.ts +7 -1
  221. package/dist/features/media/upload/MediaUploadField.js +11 -7
  222. package/dist/features/media/upload/video-poster.d.ts +2 -0
  223. package/dist/features/media/upload/video-poster.js +16 -1
  224. package/dist/features/media/upload/video-poster.test.js +1 -1
  225. package/dist/features/orders/components/OrderStatusTimeline.d.ts +12 -0
  226. package/dist/features/orders/components/OrderStatusTimeline.js +55 -0
  227. package/dist/features/orders/components/index.d.ts +2 -0
  228. package/dist/features/orders/components/index.js +1 -0
  229. package/dist/features/orders/constants/payment-window.d.ts +25 -0
  230. package/dist/features/orders/constants/payment-window.js +25 -0
  231. package/dist/features/orders/repository/orders.repository.d.ts +32 -0
  232. package/dist/features/orders/repository/orders.repository.js +56 -0
  233. package/dist/features/orders/schemas/index.d.ts +24 -24
  234. package/dist/features/orders/types/index.d.ts +33 -0
  235. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +9 -1
  236. package/dist/features/pre-orders/schemas/index.d.ts +5 -0
  237. package/dist/features/products/components/BidHistory.js +9 -1
  238. package/dist/features/products/components/GroupSettingsPanel.js +25 -3
  239. package/dist/features/products/components/PrizeDrawDetailPageView.js +11 -1
  240. package/dist/features/products/components/PrizeDrawEntryActions.d.ts +1 -4
  241. package/dist/features/products/components/PrizeDrawEntryActions.js +1 -1
  242. package/dist/features/products/components/ProductDetailActions.d.ts +1 -2
  243. package/dist/features/products/components/ProductDetailActions.js +1 -1
  244. package/dist/features/products/components/ProductDetailPageView.js +11 -116
  245. package/dist/features/products/components/ProductGrid.js +15 -1
  246. package/dist/features/products/components/RelatedItemsSection.d.ts +16 -0
  247. package/dist/features/products/components/RelatedItemsSection.js +17 -0
  248. package/dist/features/products/constants/action-defs.d.ts +1 -0
  249. package/dist/features/products/constants/action-defs.js +1 -0
  250. package/dist/features/products/schemas/index.d.ts +5 -0
  251. package/dist/features/promotions/components/CouponsIndexListing.d.ts +1 -3
  252. package/dist/features/promotions/components/CouponsIndexListing.js +1 -1
  253. package/dist/features/search/components/SearchView.d.ts +1 -3
  254. package/dist/features/search/components/SearchView.js +1 -1
  255. package/dist/features/seller/components/QuickProductForm.js +2 -1
  256. package/dist/features/seller/components/SellerBidsView.js +66 -107
  257. package/dist/features/seller/components/SellerGoogleReviewsView.js +17 -1
  258. package/dist/features/seller/components/SellerOrdersView.d.ts +15 -3
  259. package/dist/features/seller/components/SellerOrdersView.js +134 -163
  260. package/dist/features/seller/components/SellerPayoutMethodsView.js +60 -48
  261. package/dist/features/seller/components/SellerPayoutSettingsView.js +69 -4
  262. package/dist/features/seller/components/SellerPayoutsView.d.ts +12 -0
  263. package/dist/features/seller/components/SellerPayoutsView.js +25 -5
  264. package/dist/features/seller/components/SellerProductShell.d.ts +10 -3
  265. package/dist/features/seller/components/SellerProductShell.js +90 -37
  266. package/dist/features/seller/components/SellerProductsFilterDrawer.d.ts +2 -7
  267. package/dist/features/seller/components/SellerProductsFilterDrawer.js +4 -4
  268. package/dist/features/seller/components/SellerProductsView.d.ts +2 -4
  269. package/dist/features/seller/components/SellerProductsView.js +131 -189
  270. package/dist/features/seller/components/SellerReviewsView.js +95 -133
  271. package/dist/features/seller/components/SellerShippingConfigsView.js +47 -67
  272. package/dist/features/seller/components/SellerShippingView.js +41 -4
  273. package/dist/features/seller/components/SellerStoreCategoriesView.js +51 -59
  274. package/dist/features/seller/components/SellerStorefrontView.d.ts +6 -1
  275. package/dist/features/seller/components/SellerStorefrontView.js +42 -5
  276. package/dist/features/seller/components/index.d.ts +2 -2
  277. package/dist/features/seller/components/index.js +2 -2
  278. package/dist/features/shell/FormShell.d.ts +24 -4
  279. package/dist/features/shell/FormShell.js +12 -6
  280. package/dist/features/shell/QuickFormDrawer.js +67 -12
  281. package/dist/features/shell/StepForm.d.ts +30 -1
  282. package/dist/features/shell/StepForm.js +47 -4
  283. package/dist/features/shell/index.d.ts +1 -1
  284. package/dist/features/shell/index.js +1 -1
  285. package/dist/features/shipments/components/AdminShipmentEditorView.js +2 -2
  286. package/dist/features/shipments/schemas/validation.d.ts +14 -4
  287. package/dist/features/tester/components/AdminTesterFeedbackListView.js +23 -2
  288. package/dist/features/tester/components/TesterChecklistStepRow.js +1 -1
  289. package/dist/features/tester/components/TesterHubView.js +3 -2
  290. package/dist/features/tester/seed-data/orders-tester-seed-data.js +9 -1
  291. package/dist/features/tester/seed-data/products-tester-seed-data.js +43 -32
  292. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +487 -18
  293. package/dist/index.d.ts +17 -3
  294. package/dist/index.js +23 -5
  295. package/dist/next/routing/route-map.d.ts +13 -0
  296. package/dist/next/routing/route-map.js +12 -0
  297. package/dist/providers/email-resend/provider.js +1 -0
  298. package/dist/providers/firebase-client/auth.d.ts +1 -0
  299. package/dist/providers/firebase-client/auth.js +7 -1
  300. package/dist/repositories/index.d.ts +1 -0
  301. package/dist/repositories/index.js +1 -0
  302. package/dist/schemas/registry.d.ts +61 -25
  303. package/dist/security/pii-mask.js +1 -1
  304. package/dist/seed/bids-seed-data.js +48 -3
  305. package/dist/seed/categories-seed-data.js +69 -0
  306. package/dist/seed/grouped-listings-seed-data.js +167 -0
  307. package/dist/seed/payouts-seed-data.js +4 -4
  308. package/dist/seed/products-art-seed-data.js +188 -5
  309. package/dist/seed/products-auctions-seed-data.js +226 -6
  310. package/dist/seed/products-classifieds-seed-data.js +255 -8
  311. package/dist/seed/products-digital-codes-seed-data.js +258 -19
  312. package/dist/seed/products-live-items-seed-data.js +143 -10
  313. package/dist/seed/products-preorders-seed-data.js +213 -8
  314. package/dist/seed/products-prize-draws-seed-data.js +198 -0
  315. package/dist/seed/products-standard-seed-data.js +234 -4
  316. package/dist/seed/products-stickers-seed-data.js +178 -5
  317. package/dist/seed/site-settings-seed-data.js +23 -30
  318. package/dist/seed/store-extensions-seed-data.js +2 -2
  319. package/dist/server-entry.d.ts +6 -2
  320. package/dist/server-entry.js +24 -3
  321. package/dist/server.d.ts +10 -3
  322. package/dist/server.js +11 -4
  323. package/dist/styles.css +29 -1
  324. package/dist/tailwind-utilities.css +1 -1
  325. package/dist/ui/components/Form.d.ts +11 -2
  326. package/dist/ui/components/Form.js +4 -3
  327. package/dist/ui/components/FormField.d.ts +3 -1
  328. package/dist/ui/components/FormField.js +22 -4
  329. package/dist/ui/components/ImageLightbox.js +37 -3
  330. package/dist/ui/components/ImageLightbox.style.css +28 -0
  331. package/dist/ui/components/ListingLayout.d.ts +1 -2
  332. package/dist/ui/components/ListingLayout.js +1 -1
  333. package/dist/ui/components/RecordDetailModal.d.ts +68 -0
  334. package/dist/ui/components/RecordDetailModal.js +8 -0
  335. package/dist/ui/components/SlottedListingView.js +9 -1
  336. package/dist/ui/forms/FormErrorSummary.d.ts +25 -0
  337. package/dist/ui/forms/FormErrorSummary.js +37 -0
  338. package/dist/ui/forms/FormShell.d.ts +37 -2
  339. package/dist/ui/forms/FormShell.js +37 -7
  340. package/dist/ui/forms/FormShell.style.css +17 -0
  341. package/dist/ui/forms/index.d.ts +2 -0
  342. package/dist/ui/forms/index.js +1 -0
  343. package/dist/ui/index.d.ts +4 -0
  344. package/dist/ui/index.js +5 -0
  345. package/dist/utils/media-url.d.ts +12 -1
  346. package/dist/utils/media-url.js +59 -1
  347. package/dist/validation/schemas.d.ts +4 -4
  348. package/package.json +1 -1
  349. package/dist/_internal/client/features/classified/ClassifiedDetailView.d.ts +0 -9
  350. package/dist/_internal/client/features/classified/ClassifiedDetailView.js +0 -55
  351. package/dist/_internal/client/features/digital-code/DigitalCodeDetailView.d.ts +0 -18
  352. package/dist/_internal/client/features/digital-code/DigitalCodeDetailView.js +0 -21
  353. package/dist/_internal/client/features/live/LiveItemDetailView.d.ts +0 -9
  354. package/dist/_internal/client/features/live/LiveItemDetailView.js +0 -25
  355. package/dist/_internal/server/jobs/core/prizeRevealClose.d.ts +0 -2
  356. package/dist/_internal/server/jobs/core/prizeRevealClose.js +0 -28
  357. package/dist/_internal/server/jobs/core/prizeRevealExpiry.d.ts +0 -2
  358. package/dist/_internal/server/jobs/core/prizeRevealExpiry.js +0 -61
  359. package/dist/_internal/server/jobs/core/prizeRevealOpen.d.ts +0 -2
  360. package/dist/_internal/server/jobs/core/prizeRevealOpen.js +0 -68
  361. package/dist/_internal/server/jobs/core/prizeRevealReminder.d.ts +0 -2
  362. package/dist/_internal/server/jobs/core/prizeRevealReminder.js +0 -49
  363. package/dist/_internal/server/jobs/handlers/prizeRevealClose.d.ts +0 -2
  364. package/dist/_internal/server/jobs/handlers/prizeRevealClose.js +0 -2
  365. package/dist/_internal/server/jobs/handlers/prizeRevealExpiry.d.ts +0 -2
  366. package/dist/_internal/server/jobs/handlers/prizeRevealExpiry.js +0 -2
  367. package/dist/_internal/server/jobs/handlers/prizeRevealOpen.d.ts +0 -2
  368. package/dist/_internal/server/jobs/handlers/prizeRevealOpen.js +0 -2
  369. package/dist/_internal/server/jobs/handlers/prizeRevealReminder.d.ts +0 -2
  370. package/dist/_internal/server/jobs/handlers/prizeRevealReminder.js +0 -2
  371. package/dist/features/auth/consent-otp.d.ts +0 -57
  372. package/dist/features/auth/consent-otp.js +0 -127
  373. package/dist/features/cart/components/CheckoutOtpModal.d.ts +0 -15
  374. package/dist/features/cart/components/CheckoutOtpModal.js +0 -12
  375. package/dist/features/checkout/actions/checkout-actions.d.ts +0 -31
  376. package/dist/features/checkout/actions/checkout-actions.js +0 -124
  377. package/dist/features/classified/components/ClassifiedIndexListing.d.ts +0 -5
  378. package/dist/features/classified/components/ClassifiedIndexListing.js +0 -123
  379. package/dist/features/classified/components/ClassifiedListView.d.ts +0 -6
  380. package/dist/features/classified/components/ClassifiedListView.js +0 -44
  381. package/dist/features/digital-codes/components/DigitalCodesIndexListing.d.ts +0 -5
  382. package/dist/features/digital-codes/components/DigitalCodesIndexListing.js +0 -114
  383. package/dist/features/digital-codes/components/DigitalCodesListView.d.ts +0 -6
  384. package/dist/features/digital-codes/components/DigitalCodesListView.js +0 -38
  385. package/dist/features/live/components/LiveItemsIndexListing.d.ts +0 -5
  386. package/dist/features/live/components/LiveItemsIndexListing.js +0 -115
  387. package/dist/features/live/components/LiveItemsListView.d.ts +0 -6
  388. package/dist/features/live/components/LiveItemsListView.js +0 -44
  389. package/dist/features/seller/components/SellerTemplatesView.d.ts +0 -12
  390. package/dist/features/seller/components/SellerTemplatesView.js +0 -276
  391. package/dist/react/hooks/useVisibleItems.d.ts +0 -37
  392. package/dist/react/hooks/useVisibleItems.js +0 -59
  393. package/dist/ui/components/TabStrip.d.ts +0 -34
  394. package/dist/ui/components/TabStrip.js +0 -56
  395. package/dist/ui/components/TabStrip.style.css +0 -97
@@ -1,10 +1,19 @@
1
1
  /*
2
- * WHY: Seeds a minimal set of Beyblade auction listings for the demo catalog.
3
- * WHAT: Exports 2 auction products with listingType:"auction", one vintage Original-series
4
- * piece and one rare Metal Fight piece — both from the Beyblade Arena store.
2
+ * WHY: Seeds a Beyblade auction catalog with real state variety the original 2-fixture
3
+ * file only ever exercised "active, bids already started" auctions, so features like
4
+ * Buy-Now-before-first-bid, reserve-not-met, and a closed/won auction with a real
5
+ * winner were structurally impossible to test against permanent data (see CLAUDE.md
6
+ * Recurrent Root Cause Pattern for seed-data blandness sweep, 2026-08-20 session).
7
+ * Also fixes a real field-name bug: the two original fixtures set `buyItNowPrice`
8
+ * (a distinct, no-bids-yet-only BIN field) but AuctionDetailPageView.tsx reads
9
+ * `buyNowPrice` — so neither auction's Buy Now button/price ever rendered.
10
+ * WHAT: Exports 8 auction products with listingType:"auction" — 2 original fixtures
11
+ * (field-bug fixed, specs/tags added) + 6 new: a Buy-Now-only auction (zero bids,
12
+ * bidsHaveStarted:false), a reserve-not-met auction, a closed/won auction with a
13
+ * winning bidder, and 3 more active auctions with varied end dates/bid activity.
5
14
  *
6
15
  * EXPORTS:
7
- * productsAuctionsSeedData — Array of 2 auction products with listingType:"auction"
16
+ * productsAuctionsSeedData — Array of 8 auction products with listingType:"auction"
8
17
  *
9
18
  * @tag domain:auctions,products
10
19
  * @tag layer:seed
@@ -27,7 +36,13 @@ function withTokens(p) {
27
36
  searchTokens: buildSearchTokens(p.title, p.description, p.brand, p.brandSlug, p.categoryNames, p.tags, p.features, p.condition, p.specifications?.map((s) => `${s.name} ${s.value}`)),
28
37
  };
29
38
  }
39
+ const DRANZER_SPECS = [
40
+ { name: "Spin Direction", value: "Right (Right-Spin)" },
41
+ { name: "Type", value: "Attack" },
42
+ { name: "Weight", value: "32.9", unit: "g" },
43
+ ];
30
44
  const _rawProductsAuctionsSeedData = [
45
+ // --- Original 2 fixtures — buyNowPrice field-name bug fixed + specs/tags added ---
31
46
  {
32
47
  id: "auction-beyblade-original-dragoon-storm",
33
48
  slug: "auction-beyblade-original-dragoon-storm",
@@ -38,7 +53,7 @@ const _rawProductsAuctionsSeedData = [
38
53
  brandSlug: "brand-beyblade",
39
54
  brand: "Beyblade",
40
55
  startingBid: 2999,
41
- buyItNowPrice: 5999,
56
+ buyNowPrice: 5999,
42
57
  currentBid: 3499,
43
58
  currency: "INR",
44
59
  auctionEndDate: new Date(Date.now() + 4 * 24 * 60 * 60 * 1000),
@@ -53,6 +68,20 @@ const _rawProductsAuctionsSeedData = [
53
68
  ],
54
69
  status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
55
70
  condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
71
+ tags: ["vintage-collectible", "sealed"],
72
+ specifications: DRANZER_SPECS,
73
+ customFields: [{ key: "Sealed / Unopened", type: "boolean", value: "true" }],
74
+ // Added 2026-08-21 — an authenticity/unboxing video makes narrative sense
75
+ // on a rare sealed grail piece, and gives the auction detail page's
76
+ // gallery a fixture beyond the standard-product-only video-demo cluster
77
+ // (products-standard-seed-data.ts). YouTube-sourced, same as that file's
78
+ // Metal Fight fixture — exercises getYouTubeVideoId()'s iframe-embed path
79
+ // on a non-standard listing type.
80
+ video: {
81
+ url: "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
82
+ thumbnailUrl: seedExtMedia("https://picsum.photos/seed/auction-video-thumb-beyblade-original-dragoon-storm-20260821/800/450"),
83
+ duration: 212,
84
+ },
56
85
  storeId: "store-beyblade-arena",
57
86
  storeName: "Beyblade Arena",
58
87
  createdAt: new Date("2026-05-18"),
@@ -68,7 +97,7 @@ const _rawProductsAuctionsSeedData = [
68
97
  brandSlug: "brand-takara-tomy",
69
98
  brand: "Takara-Tomy",
70
99
  startingBid: 1999,
71
- buyItNowPrice: 4499,
100
+ buyNowPrice: 4499,
72
101
  currentBid: 3199,
73
102
  currency: "INR",
74
103
  auctionEndDate: new Date(Date.now() + 6 * 24 * 60 * 60 * 1000),
@@ -83,11 +112,202 @@ const _rawProductsAuctionsSeedData = [
83
112
  ],
84
113
  status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
85
114
  condition: PRODUCT_FIELDS.CONDITION_VALUES.GOOD,
115
+ tags: ["attack-type", "tournament-grade"],
116
+ specifications: [
117
+ { name: "Spin Direction", value: "Left (Left-Spin)" },
118
+ { name: "Type", value: "Attack" },
119
+ { name: "Weight", value: "54.3", unit: "g" },
120
+ { name: "Track & Bottom", value: "100 / HF/S (Hole Flat/Spike)" },
121
+ ],
86
122
  storeId: "store-beyblade-arena",
87
123
  storeName: "Beyblade Arena",
88
124
  createdAt: new Date("2026-05-19"),
89
125
  updatedAt: new Date("2026-05-22"),
90
126
  },
127
+ // --- Buy-Now-only: zero bids yet, BIN eligible per bidsHaveStarted:false gate ---
128
+ {
129
+ id: "auction-beyblade-x-shark-edge",
130
+ slug: "auction-beyblade-x-shark-edge",
131
+ title: "Beyblade X BX-04 Shark Edge (Buy It Now Available)",
132
+ description: "Shark Edge 3-60GF straight from a fresh case pull. No bids yet — grab it instantly with Buy It Now before the clock runs, or start the bidding.",
133
+ categorySlugs: ["category-beyblade-x", "category-spinning-tops"],
134
+ categoryNames: ["Beyblade X", "Spinning Tops"],
135
+ brandSlug: "brand-takara-tomy",
136
+ brand: "Takara-Tomy",
137
+ startingBid: 799,
138
+ buyNowPrice: 1299,
139
+ currentBid: 799,
140
+ currency: "INR",
141
+ auctionEndDate: new Date(Date.now() + 5 * 24 * 60 * 60 * 1000),
142
+ bidCount: 0,
143
+ bidsHaveStarted: false,
144
+ isSold: false,
145
+ mainImage: seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-x-shark-edge-1-20260814/900/900"),
146
+ images: [
147
+ seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-x-shark-edge-1-20260814/900/900"),
148
+ seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-x-shark-edge-2-20260814/900/900"),
149
+ ],
150
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
151
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
152
+ tags: ["balance-type", "starter-set"],
153
+ specifications: [
154
+ { name: "Spin Direction", value: "Right (Right-Spin)" },
155
+ { name: "Type", value: "Balance" },
156
+ { name: "Weight", value: "37.2", unit: "g" },
157
+ { name: "Blade / Ratchet / Bit", value: "Shark Edge / 3-60 / Glide Flat" },
158
+ ],
159
+ storeId: "store-beyblade-arena",
160
+ storeName: "Beyblade Arena",
161
+ createdAt: new Date("2026-08-14"),
162
+ updatedAt: new Date("2026-08-14"),
163
+ },
164
+ // --- Reserve not met: currentBid sits below reservePrice ---
165
+ {
166
+ id: "auction-beyblade-original-seaborg",
167
+ slug: "auction-beyblade-original-seaborg",
168
+ title: "Beyblade Original — Seaborg 2000 (Reserve Auction)",
169
+ description: "Rare Seaborg 2000 defense-type top from the original series. Reserve price set by the seller — current bids haven't met it yet.",
170
+ categorySlugs: ["category-beyblade-original", "category-spinning-tops"],
171
+ categoryNames: ["Beyblade Original", "Spinning Tops"],
172
+ brandSlug: "brand-beyblade",
173
+ brand: "Beyblade",
174
+ startingBid: 1499,
175
+ reservePrice: 4000,
176
+ currentBid: 2200,
177
+ currency: "INR",
178
+ auctionEndDate: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000),
179
+ bidCount: 4,
180
+ bidsHaveStarted: true,
181
+ isSold: false,
182
+ mainImage: seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-original-seaborg-1-20260814/900/900"),
183
+ images: [
184
+ seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-original-seaborg-1-20260814/900/900"),
185
+ seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-original-seaborg-2-20260814/900/900"),
186
+ ],
187
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
188
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.GOOD,
189
+ tags: ["defense-type", "vintage-collectible"],
190
+ specifications: [
191
+ { name: "Spin Direction", value: "Right (Right-Spin)" },
192
+ { name: "Type", value: "Defense" },
193
+ { name: "Weight", value: "35.6", unit: "g" },
194
+ ],
195
+ customFields: [{ key: "Reserve Disclosed", type: "boolean", value: "false" }],
196
+ storeId: "store-beyblade-arena",
197
+ storeName: "Beyblade Arena",
198
+ createdAt: new Date("2026-08-13"),
199
+ updatedAt: new Date("2026-08-19"),
200
+ },
201
+ // --- Closed/won: ended in the past, leadingBidderId set, isSold true ---
202
+ {
203
+ id: "auction-beyblade-metal-diablo-nemesis",
204
+ slug: "auction-beyblade-metal-diablo-nemesis",
205
+ title: "Metal Fight Beyblade BB-122 Diablo Nemesis (Ended — Sold)",
206
+ description: "Diablo Nemesis XF, the final boss top of Metal Fight Beyblade Zero-G. Auction closed with a winning bidder.",
207
+ categorySlugs: ["category-beyblade-metal", "category-spinning-tops"],
208
+ categoryNames: ["Beyblade Metal Fight", "Spinning Tops"],
209
+ brandSlug: "brand-takara-tomy",
210
+ brand: "Takara-Tomy",
211
+ startingBid: 3499,
212
+ currentBid: 6200,
213
+ currency: "INR",
214
+ auctionEndDate: new Date(Date.now() - 2 * 24 * 60 * 60 * 1000),
215
+ bidCount: 6,
216
+ bidsHaveStarted: true,
217
+ leadingBidderId: "user-rohit-collector",
218
+ isSold: true,
219
+ mainImage: seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-metal-diablo-nemesis-1-20260810/900/900"),
220
+ images: [
221
+ seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-metal-diablo-nemesis-1-20260810/900/900"),
222
+ seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-metal-diablo-nemesis-2-20260810/900/900"),
223
+ seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-metal-diablo-nemesis-3-20260810/900/900"),
224
+ ],
225
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
226
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.LIKE_NEW,
227
+ tags: ["attack-type", "tournament-grade"],
228
+ specifications: [
229
+ { name: "Spin Direction", value: "Right (Right-Spin)" },
230
+ { name: "Type", value: "Attack" },
231
+ { name: "Weight", value: "58.9", unit: "g" },
232
+ { name: "Track & Bottom", value: "XF (Xtreme Fusion)" },
233
+ ],
234
+ storeId: "store-beyblade-arena",
235
+ storeName: "Beyblade Arena",
236
+ createdAt: new Date("2026-08-01"),
237
+ updatedAt: new Date("2026-08-10"),
238
+ },
239
+ // --- Additional active auctions, varied end dates + bid activity ---
240
+ {
241
+ id: "auction-beyblade-burst-cho-z-achilles",
242
+ slug: "auction-beyblade-burst-cho-z-achilles",
243
+ title: "Beyblade Burst B-100 Cho-Z Achilles",
244
+ description: "Cho-Z Achilles.Ow.Zn', a Super Zeta stamina-type top from the Cho-Z generation, in excellent spinning condition.",
245
+ categorySlugs: ["category-beyblade-burst", "category-spinning-tops"],
246
+ categoryNames: ["Beyblade Burst", "Spinning Tops"],
247
+ brandSlug: "brand-beyblade",
248
+ brand: "Beyblade",
249
+ startingBid: 1199,
250
+ buyNowPrice: 2499,
251
+ currentBid: 1650,
252
+ currency: "INR",
253
+ auctionEndDate: new Date(Date.now() + 2 * 24 * 60 * 60 * 1000),
254
+ bidCount: 2,
255
+ bidsHaveStarted: true,
256
+ isSold: false,
257
+ mainImage: seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-burst-cho-z-achilles-1-20260815/900/900"),
258
+ images: [
259
+ seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-burst-cho-z-achilles-1-20260815/900/900"),
260
+ seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-burst-cho-z-achilles-2-20260815/900/900"),
261
+ ],
262
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
263
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.GOOD,
264
+ tags: ["stamina-type"],
265
+ specifications: [
266
+ { name: "Spin Direction", value: "Right (Right-Spin)" },
267
+ { name: "Type", value: "Stamina" },
268
+ { name: "Weight", value: "29.8", unit: "g" },
269
+ { name: "Layer / Disc / Driver", value: "Cho-Z Achilles / .Ow / Zn'" },
270
+ ],
271
+ storeId: "store-beyblade-arena",
272
+ storeName: "Beyblade Arena",
273
+ createdAt: new Date("2026-08-15"),
274
+ updatedAt: new Date("2026-08-18"),
275
+ },
276
+ {
277
+ id: "auction-beyblade-x-wizard-fafnir",
278
+ slug: "auction-beyblade-x-wizard-fafnir",
279
+ title: "Beyblade X BX-06 Wizard Fafnir (Long-Running Auction)",
280
+ description: "Wizard Fafnir 4-60F, one week left on the clock — a rare Beyblade X chase top with active bidding.",
281
+ categorySlugs: ["category-beyblade-x", "category-spinning-tops"],
282
+ categoryNames: ["Beyblade X", "Spinning Tops"],
283
+ brandSlug: "brand-takara-tomy",
284
+ brand: "Takara-Tomy",
285
+ startingBid: 999,
286
+ currentBid: 1450,
287
+ currency: "INR",
288
+ auctionEndDate: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000),
289
+ bidCount: 3,
290
+ bidsHaveStarted: true,
291
+ isSold: false,
292
+ mainImage: seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-x-wizard-fafnir-1-20260816/900/900"),
293
+ images: [
294
+ seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-x-wizard-fafnir-1-20260816/900/900"),
295
+ seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-x-wizard-fafnir-2-20260816/900/900"),
296
+ ],
297
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
298
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
299
+ tags: ["balance-type"],
300
+ specifications: [
301
+ { name: "Spin Direction", value: "Right (Right-Spin)" },
302
+ { name: "Type", value: "Balance" },
303
+ { name: "Weight", value: "38.4", unit: "g" },
304
+ { name: "Blade / Ratchet / Bit", value: "Wizard Fafnir / 4-60 / Flat" },
305
+ ],
306
+ storeId: "store-beyblade-arena",
307
+ storeName: "Beyblade Arena",
308
+ createdAt: new Date("2026-08-16"),
309
+ updatedAt: new Date("2026-08-19"),
310
+ },
91
311
  ];
92
312
  export const productsAuctionsSeedData = [
93
313
  ..._rawProductsAuctionsSeedData.map((a) => withTokens({
@@ -1,12 +1,15 @@
1
1
  /*
2
- * WHY: Real (non-tester-sandbox) classified listing so testers and shoppers can exercise
3
- * the classified contact-seller flow (no checkout, chat/phone only) against permanent
4
- * catalog content. Previously an empty stub "out of scope for the minimal
5
- * Beyblade-focused demo catalog" now populated with one seller-run local listing.
6
- * WHAT: Exports 1 classified listing on Beyblade Arena — local meetup, negotiable.
2
+ * WHY: Seeds a Beyblade classifieds catalog with real geographic and meta-field variety.
3
+ * The original 1-fixture file only ever exercised one city (Mumbai), one
4
+ * `contactMethod` ("both"), and always `acceptsShipping:false`/`negotiable:true`
5
+ * no variety to exercise the classifieds filter UI or the contact-method-specific
6
+ * copy on the detail page (see CLAUDE.md seed-data blandness sweep, 2026-08-20).
7
+ * WHAT: Exports 7 classified listings on Beyblade Arena — local meetups across 5 Indian
8
+ * cities, covering all 3 contactMethod values and both true/false states of
9
+ * acceptsShipping/negotiable.
7
10
  *
8
11
  * EXPORTS:
9
- * productsClassifiedsSeedData — Array of 1 Partial<ProductDocument> with listingType:"classified"
12
+ * productsClassifiedsSeedData — Array of 7 Partial<ProductDocument> with listingType:"classified"
10
13
  *
11
14
  * @tag domain:products,classifieds
12
15
  * @tag layer:seed
@@ -23,7 +26,7 @@ export const productsClassifiedsSeedData = [
23
26
  id: "classified-beyblade-stadium-set",
24
27
  slug: "classified-beyblade-stadium-set",
25
28
  title: "Used Beyblade Stadium Set — Local Pickup Only",
26
- description: "Well-loved Beyblade stadium with 6 tops and 2 launchers, sold as-is. Meet up locally or arrange your own shipping — price is negotiable.",
29
+ description: "Well-loved Beyblade stadium with 6 tops and 2 launchers, sold as-is. Meet up locally — price is negotiable.",
27
30
  categorySlugs: ["category-spinning-tops"],
28
31
  categoryNames: ["Spinning Tops"],
29
32
  brandSlug: "brand-beyblade",
@@ -34,7 +37,10 @@ export const productsClassifiedsSeedData = [
34
37
  availableQuantity: 1,
35
38
  isSold: false,
36
39
  mainImage: seedExtMedia("https://picsum.photos/seed/classified-image-beyblade-stadium-set-1-20260101/900/900"),
37
- images: [seedExtMedia("https://picsum.photos/seed/classified-image-beyblade-stadium-set-1-20260101/900/900")],
40
+ images: [
41
+ seedExtMedia("https://picsum.photos/seed/classified-image-beyblade-stadium-set-1-20260101/900/900"),
42
+ seedExtMedia("https://picsum.photos/seed/classified-image-beyblade-stadium-set-2-20260101/900/900"),
43
+ ],
38
44
  status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
39
45
  condition: PRODUCT_FIELDS.CONDITION_VALUES.USED,
40
46
  listingType: "classified",
@@ -56,4 +62,245 @@ export const productsClassifiedsSeedData = [
56
62
  updatedAt: new Date("2026-05-05"),
57
63
  searchTokens: buildSearchTokens("Used Beyblade Stadium Set — Local Pickup Only", "Well-loved Beyblade stadium with 6 tops and 2 launchers.", "Beyblade", "brand-beyblade", ["Spinning Tops"], ["classified", "local-pickup"]),
58
64
  },
65
+ {
66
+ id: "classified-beyblade-burst-collection-bengaluru",
67
+ slug: "classified-beyblade-burst-collection-bengaluru",
68
+ title: "Beyblade Burst Collection (12 Tops) — Bengaluru",
69
+ description: "Downsizing my Burst collection — 12 tops in good condition, fixed price, will also ship nationwide if you'd rather not meet up.",
70
+ categorySlugs: ["category-beyblade-burst", "category-spinning-tops"],
71
+ categoryNames: ["Beyblade Burst", "Spinning Tops"],
72
+ brandSlug: "brand-beyblade",
73
+ brand: "Beyblade",
74
+ price: 4500,
75
+ currency: "INR",
76
+ stockQuantity: 1,
77
+ availableQuantity: 1,
78
+ isSold: false,
79
+ mainImage: seedExtMedia("https://picsum.photos/seed/classified-image-beyblade-burst-bengaluru-1-20260813/900/900"),
80
+ images: [
81
+ seedExtMedia("https://picsum.photos/seed/classified-image-beyblade-burst-bengaluru-1-20260813/900/900"),
82
+ seedExtMedia("https://picsum.photos/seed/classified-image-beyblade-burst-bengaluru-2-20260813/900/900"),
83
+ ],
84
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
85
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.GOOD,
86
+ listingType: "classified",
87
+ storeId: "store-beyblade-arena",
88
+ storeName: "Beyblade Arena",
89
+ classified: {
90
+ meetupArea: { city: "Bengaluru", locality: "Koramangala", pincode: "560034" },
91
+ contactMethod: "chat",
92
+ acceptsShipping: true,
93
+ negotiable: false,
94
+ },
95
+ customFields: [{ key: "Item Count", type: "number", value: "12" }],
96
+ customSections: [],
97
+ featured: false,
98
+ isPromoted: false,
99
+ isOnSale: false,
100
+ tags: ["classified", "bulk-lot"],
101
+ createdAt: new Date("2026-08-13"),
102
+ updatedAt: new Date("2026-08-13"),
103
+ searchTokens: buildSearchTokens("Beyblade Burst Collection (12 Tops) — Bengaluru", "Downsizing my Burst collection, fixed price, ships nationwide.", "Beyblade", "brand-beyblade", ["Beyblade Burst", "Spinning Tops"], ["classified", "bulk-lot"]),
104
+ },
105
+ {
106
+ id: "classified-beyblade-x-starter-pune",
107
+ slug: "classified-beyblade-x-starter-pune",
108
+ title: "Beyblade X Starter Pack — Pune, Phone Contact Only",
109
+ description: "Barely used Beyblade X starter pack, selling because I upgraded to a full set. Call or WhatsApp only, no chat.",
110
+ categorySlugs: ["category-beyblade-x", "category-spinning-tops"],
111
+ categoryNames: ["Beyblade X", "Spinning Tops"],
112
+ brandSlug: "brand-takara-tomy",
113
+ brand: "Takara-Tomy",
114
+ price: 650,
115
+ currency: "INR",
116
+ stockQuantity: 1,
117
+ availableQuantity: 1,
118
+ isSold: false,
119
+ mainImage: seedExtMedia("https://picsum.photos/seed/classified-image-beyblade-x-pune-1-20260814/900/900"),
120
+ images: [seedExtMedia("https://picsum.photos/seed/classified-image-beyblade-x-pune-1-20260814/900/900")],
121
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
122
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.LIKE_NEW,
123
+ listingType: "classified",
124
+ storeId: "store-beyblade-arena",
125
+ storeName: "Beyblade Arena",
126
+ classified: {
127
+ meetupArea: { city: "Pune", locality: "Kothrud", pincode: "411038" },
128
+ contactMethod: "phone",
129
+ acceptsShipping: false,
130
+ negotiable: true,
131
+ },
132
+ customFields: [],
133
+ customSections: [],
134
+ featured: false,
135
+ isPromoted: false,
136
+ isOnSale: false,
137
+ tags: ["classified", "local-pickup", "starter-set"],
138
+ createdAt: new Date("2026-08-14"),
139
+ updatedAt: new Date("2026-08-14"),
140
+ searchTokens: buildSearchTokens("Beyblade X Starter Pack — Pune, Phone Contact Only", "Barely used Beyblade X starter pack, phone/WhatsApp only.", "Takara-Tomy", "brand-takara-tomy", ["Beyblade X", "Spinning Tops"], ["classified", "local-pickup", "starter-set"]),
141
+ },
142
+ {
143
+ id: "classified-beyblade-metal-vintage-delhi",
144
+ slug: "classified-beyblade-metal-vintage-delhi",
145
+ title: "Vintage Metal Fight Lot (5 Tops) — Delhi NCR",
146
+ description: "A well-preserved 5-top Metal Fight lot from a long-time collector. Firm price, ships anywhere in India.",
147
+ categorySlugs: ["category-beyblade-metal", "category-spinning-tops"],
148
+ categoryNames: ["Beyblade Metal Fight", "Spinning Tops"],
149
+ brandSlug: "brand-takara-tomy",
150
+ brand: "Takara-Tomy",
151
+ price: 3200,
152
+ currency: "INR",
153
+ stockQuantity: 1,
154
+ availableQuantity: 1,
155
+ isSold: false,
156
+ mainImage: seedExtMedia("https://picsum.photos/seed/classified-image-beyblade-metal-delhi-1-20260815/900/900"),
157
+ images: [
158
+ seedExtMedia("https://picsum.photos/seed/classified-image-beyblade-metal-delhi-1-20260815/900/900"),
159
+ seedExtMedia("https://picsum.photos/seed/classified-image-beyblade-metal-delhi-2-20260815/900/900"),
160
+ seedExtMedia("https://picsum.photos/seed/classified-image-beyblade-metal-delhi-3-20260815/900/900"),
161
+ ],
162
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
163
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.GOOD,
164
+ listingType: "classified",
165
+ storeId: "store-beyblade-arena",
166
+ storeName: "Beyblade Arena",
167
+ classified: {
168
+ meetupArea: { city: "New Delhi", locality: "Rajouri Garden", pincode: "110027" },
169
+ contactMethod: "both",
170
+ acceptsShipping: true,
171
+ negotiable: false,
172
+ },
173
+ customFields: [{ key: "Item Count", type: "number", value: "5" }],
174
+ customSections: [
175
+ {
176
+ id: "collector-notes",
177
+ title: "Collector's Notes",
178
+ text: "All 5 tops have been kept in a display case since purchase — minor shelf wear only, no chips or cracks on any layer/energy ring.",
179
+ },
180
+ ],
181
+ featured: true,
182
+ isPromoted: false,
183
+ isOnSale: false,
184
+ tags: ["classified", "bulk-lot", "vintage-collectible"],
185
+ createdAt: new Date("2026-08-15"),
186
+ updatedAt: new Date("2026-08-16"),
187
+ searchTokens: buildSearchTokens("Vintage Metal Fight Lot (5 Tops) — Delhi NCR", "Well-preserved 5-top Metal Fight lot, firm price, ships anywhere.", "Takara-Tomy", "brand-takara-tomy", ["Beyblade Metal Fight", "Spinning Tops"], ["classified", "bulk-lot", "vintage-collectible"]),
188
+ },
189
+ {
190
+ id: "classified-beyblade-original-grail-chennai",
191
+ slug: "classified-beyblade-original-grail-chennai",
192
+ title: "Original Series Grail Piece — Chennai, Meet Up Only",
193
+ description: "A genuine original-series grail piece, only selling to a local buyer I can meet in person to verify authenticity together.",
194
+ categorySlugs: ["category-beyblade-original", "category-spinning-tops"],
195
+ categoryNames: ["Beyblade Original", "Spinning Tops"],
196
+ brandSlug: "brand-beyblade",
197
+ brand: "Beyblade",
198
+ price: 8000,
199
+ currency: "INR",
200
+ stockQuantity: 1,
201
+ availableQuantity: 1,
202
+ isSold: false,
203
+ mainImage: seedExtMedia("https://picsum.photos/seed/classified-image-beyblade-original-chennai-1-20260816/900/900"),
204
+ images: [
205
+ seedExtMedia("https://picsum.photos/seed/classified-image-beyblade-original-chennai-1-20260816/900/900"),
206
+ seedExtMedia("https://picsum.photos/seed/classified-image-beyblade-original-chennai-2-20260816/900/900"),
207
+ ],
208
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
209
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.LIKE_NEW,
210
+ listingType: "classified",
211
+ storeId: "store-beyblade-arena",
212
+ storeName: "Beyblade Arena",
213
+ classified: {
214
+ meetupArea: { city: "Chennai", locality: "T. Nagar", pincode: "600017" },
215
+ contactMethod: "chat",
216
+ acceptsShipping: false,
217
+ negotiable: false,
218
+ },
219
+ customFields: [{ key: "Authenticity Verified", type: "boolean", value: "true" }],
220
+ customSections: [],
221
+ featured: false,
222
+ isPromoted: false,
223
+ isOnSale: false,
224
+ tags: ["classified", "vintage-collectible", "local-pickup"],
225
+ createdAt: new Date("2026-08-16"),
226
+ updatedAt: new Date("2026-08-16"),
227
+ searchTokens: buildSearchTokens("Original Series Grail Piece — Chennai, Meet Up Only", "Genuine original-series grail piece, local meetup verification only.", "Beyblade", "brand-beyblade", ["Beyblade Original", "Spinning Tops"], ["classified", "vintage-collectible", "local-pickup"]),
228
+ },
229
+ {
230
+ id: "classified-beyblade-x-tournament-kit-hyderabad",
231
+ slug: "classified-beyblade-x-tournament-kit-hyderabad",
232
+ title: "Tournament-Ready Beyblade X Kit — Hyderabad",
233
+ description: "Complete tournament-legal kit including 3 tops, stadium, and a scorecard pad from our last local meetup event.",
234
+ categorySlugs: ["category-beyblade-x", "category-spinning-tops"],
235
+ categoryNames: ["Beyblade X", "Spinning Tops"],
236
+ brandSlug: "brand-takara-tomy",
237
+ brand: "Takara-Tomy",
238
+ price: 2400,
239
+ currency: "INR",
240
+ stockQuantity: 1,
241
+ availableQuantity: 1,
242
+ isSold: false,
243
+ mainImage: seedExtMedia("https://picsum.photos/seed/classified-image-beyblade-x-hyderabad-1-20260817/900/900"),
244
+ images: [
245
+ seedExtMedia("https://picsum.photos/seed/classified-image-beyblade-x-hyderabad-1-20260817/900/900"),
246
+ seedExtMedia("https://picsum.photos/seed/classified-image-beyblade-x-hyderabad-2-20260817/900/900"),
247
+ ],
248
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
249
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.GOOD,
250
+ listingType: "classified",
251
+ storeId: "store-beyblade-arena",
252
+ storeName: "Beyblade Arena",
253
+ classified: {
254
+ meetupArea: { city: "Hyderabad", locality: "Banjara Hills", pincode: "500034" },
255
+ contactMethod: "phone",
256
+ acceptsShipping: true,
257
+ negotiable: true,
258
+ },
259
+ customFields: [{ key: "Tournament Legal", type: "boolean", value: "true" }],
260
+ customSections: [],
261
+ featured: false,
262
+ isPromoted: false,
263
+ isOnSale: false,
264
+ tags: ["classified", "tournament-grade"],
265
+ createdAt: new Date("2026-08-17"),
266
+ updatedAt: new Date("2026-08-17"),
267
+ searchTokens: buildSearchTokens("Tournament-Ready Beyblade X Kit — Hyderabad", "Complete tournament-legal kit including stadium and scorecard pad.", "Takara-Tomy", "brand-takara-tomy", ["Beyblade X", "Spinning Tops"], ["classified", "tournament-grade"]),
268
+ },
269
+ {
270
+ id: "classified-beyblade-burst-parts-mumbai",
271
+ slug: "classified-beyblade-burst-parts-mumbai",
272
+ title: "Spare Burst Parts Bundle — Mumbai, Ships Too",
273
+ description: "Assorted spare Burst layers, discs, and drivers cleared out from my parts box. Happy to meet locally or ship.",
274
+ categorySlugs: ["category-beyblade-burst", "category-spinning-tops"],
275
+ categoryNames: ["Beyblade Burst", "Spinning Tops"],
276
+ brandSlug: "brand-beyblade",
277
+ brand: "Beyblade",
278
+ price: 450,
279
+ currency: "INR",
280
+ stockQuantity: 1,
281
+ availableQuantity: 1,
282
+ isSold: false,
283
+ mainImage: seedExtMedia("https://picsum.photos/seed/classified-image-beyblade-burst-mumbai-1-20260818/900/900"),
284
+ images: [seedExtMedia("https://picsum.photos/seed/classified-image-beyblade-burst-mumbai-1-20260818/900/900")],
285
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
286
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.USED,
287
+ listingType: "classified",
288
+ storeId: "store-beyblade-arena",
289
+ storeName: "Beyblade Arena",
290
+ classified: {
291
+ meetupArea: { city: "Mumbai", locality: "Powai", pincode: "400076" },
292
+ contactMethod: "both",
293
+ acceptsShipping: true,
294
+ negotiable: true,
295
+ },
296
+ customFields: [],
297
+ customSections: [],
298
+ featured: false,
299
+ isPromoted: false,
300
+ isOnSale: false,
301
+ tags: ["classified", "spare-parts"],
302
+ createdAt: new Date("2026-08-18"),
303
+ updatedAt: new Date("2026-08-18"),
304
+ searchTokens: buildSearchTokens("Spare Burst Parts Bundle — Mumbai, Ships Too", "Assorted spare Burst layers, discs, and drivers.", "Beyblade", "brand-beyblade", ["Beyblade Burst", "Spinning Tops"], ["classified", "spare-parts"]),
305
+ },
59
306
  ];