@mohasinac/appkit 4.13.1 → 4.15.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 (493) hide show
  1. package/dist/_internal/client/features/layout/DashboardLayoutClient.js +14 -5
  2. package/dist/_internal/client/features/lottery/LotteryAdminEditView.d.ts +3 -0
  3. package/dist/_internal/client/features/lottery/LotteryAdminEditView.js +6 -0
  4. package/dist/_internal/client/features/lottery/LotteryDetailView.d.ts +8 -0
  5. package/dist/_internal/client/features/lottery/LotteryDetailView.js +4 -1
  6. package/dist/_internal/client/features/lottery/LotteryListView.d.ts +7 -0
  7. package/dist/_internal/client/features/lottery/LotteryListView.js +1 -1
  8. package/dist/_internal/client/features/lottery/PrizeDrawLotteryDetailView.js +4 -1
  9. package/dist/_internal/client/features/lottery/slot-collage-items.d.ts +15 -0
  10. package/dist/_internal/client/features/lottery/slot-collage-items.js +13 -0
  11. package/dist/_internal/server/features/auctions/actions.js +8 -2
  12. package/dist/_internal/server/features/bundles/data.d.ts +16 -0
  13. package/dist/_internal/server/features/bundles/data.js +26 -0
  14. package/dist/_internal/server/features/bundles/index.d.ts +1 -1
  15. package/dist/_internal/server/features/bundles/index.js +1 -1
  16. package/dist/_internal/server/features/cart/service.d.ts +3 -3
  17. package/dist/_internal/server/features/checkout/actions.js +25 -0
  18. package/dist/_internal/server/features/checkout/locked-lines.d.ts +38 -0
  19. package/dist/_internal/server/features/checkout/locked-lines.js +171 -0
  20. package/dist/_internal/server/features/checkout/source-context.d.ts +5 -0
  21. package/dist/_internal/server/features/checkout/source-context.js +157 -0
  22. package/dist/_internal/server/features/homepage/index.d.ts +0 -1
  23. package/dist/_internal/server/features/homepage/index.js +7 -1
  24. package/dist/_internal/server/features/lottery/adapters.js +4 -0
  25. package/dist/_internal/server/features/offers/adapters.d.ts +103 -0
  26. package/dist/_internal/server/features/offers/adapters.js +88 -0
  27. package/dist/_internal/server/features/offers/index.d.ts +2 -0
  28. package/dist/_internal/server/features/offers/index.js +1 -0
  29. package/dist/_internal/server/features/orders/adapters.js +24 -0
  30. package/dist/_internal/server/features/products/data.js +15 -37
  31. package/dist/_internal/server/features/products/index.d.ts +1 -1
  32. package/dist/_internal/server/features/products/index.js +1 -1
  33. package/dist/_internal/server/features/products/list-public.d.ts +46 -20
  34. package/dist/_internal/server/features/products/list-public.js +266 -90
  35. package/dist/_internal/server/features/products/listing-tab-counts.d.ts +44 -0
  36. package/dist/_internal/server/features/products/listing-tab-counts.js +97 -0
  37. package/dist/_internal/server/features/site-settings/adapters.d.ts +51 -0
  38. package/dist/_internal/server/features/site-settings/adapters.js +75 -0
  39. package/dist/_internal/server/features/site-settings/index.d.ts +1 -0
  40. package/dist/_internal/server/features/site-settings/index.js +1 -0
  41. package/dist/_internal/server/features/stores/adapters.d.ts +56 -0
  42. package/dist/_internal/server/features/stores/adapters.js +91 -0
  43. package/dist/_internal/server/features/stores/index.d.ts +1 -0
  44. package/dist/_internal/server/features/stores/index.js +1 -0
  45. package/dist/_internal/server/jobs/core/auctionSettlement.js +56 -2
  46. package/dist/_internal/server/jobs/core/offerExpiry.js +55 -19
  47. package/dist/_internal/server/jobs/core/paymentReviewAutoApprove.d.ts +5 -0
  48. package/dist/_internal/server/jobs/core/paymentReviewAutoApprove.js +33 -1
  49. package/dist/_internal/server/jobs/handlers/messages.d.ts +7 -0
  50. package/dist/_internal/server/jobs/handlers/messages.js +10 -0
  51. package/dist/_internal/shared/actions/action-registry.js +17 -1
  52. package/dist/_internal/shared/checkout/lanes.d.ts +25 -0
  53. package/dist/_internal/shared/checkout/lanes.js +26 -0
  54. package/dist/_internal/shared/features/auctions/config.d.ts +27 -0
  55. package/dist/_internal/shared/features/auctions/config.js +27 -0
  56. package/dist/_internal/shared/features/auctions/schema.d.ts +14 -2
  57. package/dist/_internal/shared/features/auctions/schema.js +13 -1
  58. package/dist/_internal/shared/features/blog/schema.d.ts +2 -2
  59. package/dist/_internal/shared/features/cart/schema.d.ts +20 -15
  60. package/dist/_internal/shared/features/cart/schema.js +15 -0
  61. package/dist/_internal/shared/features/categories/bundle-schemas.d.ts +32 -32
  62. package/dist/_internal/shared/features/emi/schedule.d.ts +24 -3
  63. package/dist/_internal/shared/features/emi/schedule.js +20 -5
  64. package/dist/_internal/shared/features/events/schema.d.ts +2 -2
  65. package/dist/_internal/shared/features/homepage/section-gate.d.ts +14 -0
  66. package/dist/_internal/shared/features/homepage/section-gate.js +51 -0
  67. package/dist/_internal/shared/features/offers/config.d.ts +30 -0
  68. package/dist/_internal/shared/features/offers/config.js +59 -0
  69. package/dist/_internal/shared/features/orders/schema.d.ts +8 -8
  70. package/dist/_internal/shared/features/products/schema.d.ts +30 -30
  71. package/dist/_internal/shared/features/products/to-product-item.js +6 -0
  72. package/dist/_internal/shared/features/reviews/schema.d.ts +2 -2
  73. package/dist/_internal/shared/features/site-settings/fees.d.ts +60 -0
  74. package/dist/_internal/shared/features/site-settings/fees.js +39 -0
  75. package/dist/_internal/shared/features/site-settings/types.d.ts +40 -0
  76. package/dist/_internal/shared/features/site-settings/types.js +1 -0
  77. package/dist/_internal/shared/history/history.d.ts +88 -0
  78. package/dist/_internal/shared/history/history.js +198 -0
  79. package/dist/_internal/shared/history/index.d.ts +4 -0
  80. package/dist/_internal/shared/history/index.js +2 -0
  81. package/dist/_internal/shared/history/types.d.ts +61 -0
  82. package/dist/_internal/shared/history/types.js +6 -0
  83. package/dist/_internal/shared/listing-types/_registry.d.ts +54 -1
  84. package/dist/_internal/shared/listing-types/_registry.js +67 -0
  85. package/dist/_internal/shared/listing-types/art/config.d.ts +3 -0
  86. package/dist/_internal/shared/listing-types/art/config.js +5 -0
  87. package/dist/_internal/shared/listing-types/auction/config.d.ts +13 -0
  88. package/dist/_internal/shared/listing-types/auction/config.js +21 -0
  89. package/dist/_internal/shared/listing-types/availability.d.ts +79 -0
  90. package/dist/_internal/shared/listing-types/availability.js +104 -0
  91. package/dist/_internal/shared/listing-types/capabilities.d.ts +15 -0
  92. package/dist/_internal/shared/listing-types/capabilities.js +12 -0
  93. package/dist/_internal/shared/listing-types/classified/config.d.ts +3 -0
  94. package/dist/_internal/shared/listing-types/classified/config.js +5 -0
  95. package/dist/_internal/shared/listing-types/digital-code/config.d.ts +11 -0
  96. package/dist/_internal/shared/listing-types/digital-code/config.js +22 -2
  97. package/dist/_internal/shared/listing-types/live/config.d.ts +3 -0
  98. package/dist/_internal/shared/listing-types/live/config.js +5 -0
  99. package/dist/_internal/shared/listing-types/pre-order/config.d.ts +3 -0
  100. package/dist/_internal/shared/listing-types/pre-order/config.js +19 -0
  101. package/dist/_internal/shared/listing-types/prize-draw/config.d.ts +11 -0
  102. package/dist/_internal/shared/listing-types/prize-draw/config.js +15 -0
  103. package/dist/_internal/shared/listing-types/standard/config.d.ts +3 -0
  104. package/dist/_internal/shared/listing-types/standard/config.js +5 -0
  105. package/dist/_internal/shared/listing-types/stickers/config.d.ts +3 -0
  106. package/dist/_internal/shared/listing-types/stickers/config.js +5 -0
  107. package/dist/client.d.ts +20 -7
  108. package/dist/client.js +22 -4
  109. package/dist/constants/api-endpoints.d.ts +6 -0
  110. package/dist/constants/api-endpoints.js +2 -0
  111. package/dist/constants/field-names.d.ts +57 -8
  112. package/dist/constants/field-names.js +101 -8
  113. package/dist/constants/table-keys.d.ts +17 -0
  114. package/dist/constants/table-keys.js +17 -0
  115. package/dist/errors/error-codes.d.ts +13 -1
  116. package/dist/errors/error-codes.js +13 -1
  117. package/dist/errors/error-display-map.js +12 -3
  118. package/dist/errors/messages.d.ts +10 -2
  119. package/dist/errors/messages.js +10 -2
  120. package/dist/features/about/components/AboutView.d.ts +3 -0
  121. package/dist/features/about/components/AboutView.js +3 -2
  122. package/dist/features/about/components/PolicyPageView.d.ts +2 -1
  123. package/dist/features/about/components/PolicyPageView.js +61 -23
  124. package/dist/features/about/components/PublicProfileView.js +5 -0
  125. package/dist/features/about/schemas/firestore.d.ts +3 -0
  126. package/dist/features/account/components/UserBidsView.js +12 -4
  127. package/dist/features/account/components/UserOrdersView.js +7 -0
  128. package/dist/features/account/components/UserReturnsView.d.ts +3 -0
  129. package/dist/features/account/components/UserReturnsView.js +17 -1
  130. package/dist/features/account/components/index.d.ts +0 -2
  131. package/dist/features/account/components/index.js +0 -1
  132. package/dist/features/account/schemas/index.d.ts +2 -2
  133. package/dist/features/account/types/index.d.ts +21 -2
  134. package/dist/features/addresses/schemas/index.d.ts +4 -4
  135. package/dist/features/admin/components/AdminArtView.js +8 -3
  136. package/dist/features/admin/components/AdminAuditLogView.js +1 -0
  137. package/dist/features/admin/components/AdminBidsView.js +15 -2
  138. package/dist/features/admin/components/AdminBlogEditorView.js +65 -33
  139. package/dist/features/admin/components/AdminClassifiedView.js +8 -3
  140. package/dist/features/admin/components/AdminDigitalCodesView.js +8 -3
  141. package/dist/features/admin/components/AdminFeatureEditorView.js +35 -6
  142. package/dist/features/admin/components/AdminFeatureFlagsView.js +1 -0
  143. package/dist/features/admin/components/AdminLiveView.js +8 -3
  144. package/dist/features/admin/components/AdminNavEditorView.js +15 -5
  145. package/dist/features/admin/components/AdminNewsletterView.js +18 -2
  146. package/dist/features/admin/components/AdminOffersView.d.ts +4 -0
  147. package/dist/features/admin/components/AdminOffersView.js +230 -0
  148. package/dist/features/admin/components/AdminOrdersView.js +10 -1
  149. package/dist/features/admin/components/AdminPaymentMethodsView.js +24 -4
  150. package/dist/features/admin/components/AdminPrizeDrawsView.js +5 -0
  151. package/dist/features/admin/components/AdminProductsView.js +16 -29
  152. package/dist/features/admin/components/AdminScammerEditorView.d.ts +2 -1
  153. package/dist/features/admin/components/AdminScammerEditorView.js +3 -13
  154. package/dist/features/admin/components/AdminScammersView.js +3 -8
  155. package/dist/features/admin/components/AdminSectionsView.js +32 -23
  156. package/dist/features/admin/components/AdminSessionsView.js +17 -2
  157. package/dist/features/admin/components/AdminSiteSettingsView.js +31 -13
  158. package/dist/features/admin/components/AdminSiteView.js +6 -2
  159. package/dist/features/admin/components/AdminStickersView.js +8 -3
  160. package/dist/features/admin/components/ViewAuditLogEntryModal.js +1 -0
  161. package/dist/features/admin/components/index.d.ts +2 -0
  162. package/dist/features/admin/components/index.js +1 -0
  163. package/dist/features/admin/components/sections/adminSectionsTypes.d.ts +4 -2
  164. package/dist/features/admin/components/sections/adminSectionsTypes.js +45 -27
  165. package/dist/features/admin/constants/filter-tabs.d.ts +89 -0
  166. package/dist/features/admin/constants/filter-tabs.js +56 -0
  167. package/dist/features/admin/schemas/firestore.d.ts +122 -3
  168. package/dist/features/admin/schemas/firestore.js +1 -0
  169. package/dist/features/admin/schemas/homepage-section-form.d.ts +22 -0
  170. package/dist/features/admin/schemas/homepage-section-form.js +68 -0
  171. package/dist/features/admin/schemas/nav-item-form.d.ts +74 -0
  172. package/dist/features/admin/schemas/nav-item-form.js +72 -0
  173. package/dist/features/auctions/actions/bid-actions.d.ts +20 -5
  174. package/dist/features/auctions/actions/bid-actions.js +93 -20
  175. package/dist/features/auctions/components/AuctionBidsTable.d.ts +10 -1
  176. package/dist/features/auctions/components/AuctionBidsTable.js +22 -4
  177. package/dist/features/auctions/components/AuctionDetailPageView.js +11 -6
  178. package/dist/features/auctions/components/AuctionsListView.js +5 -6
  179. package/dist/features/auctions/components/MarketplaceAuctionCard.d.ts +7 -0
  180. package/dist/features/auctions/components/MarketplaceAuctionCard.js +19 -2
  181. package/dist/features/auctions/components/PlaceBidFormClient.d.ts +1 -2
  182. package/dist/features/auctions/components/PlaceBidFormClient.js +8 -4
  183. package/dist/features/auctions/components/bid-detail-fields.d.ts +29 -0
  184. package/dist/features/auctions/components/bid-detail-fields.js +103 -0
  185. package/dist/features/auctions/repository/bid.repository.d.ts +13 -0
  186. package/dist/features/auctions/repository/bid.repository.js +23 -0
  187. package/dist/features/auctions/schemas/firestore.d.ts +17 -0
  188. package/dist/features/auctions/schemas/index.d.ts +12 -12
  189. package/dist/features/audit-log/schemas/firestore.d.ts +14 -0
  190. package/dist/features/audit-log/schemas/firestore.js +7 -0
  191. package/dist/features/auth/permissions/constants.d.ts +1 -1
  192. package/dist/features/auth/permissions/constants.js +10 -1
  193. package/dist/features/blog/actions/blog-actions.d.ts +7 -7
  194. package/dist/features/blog/schemas/blog-form.d.ts +80 -0
  195. package/dist/features/blog/schemas/blog-form.js +100 -0
  196. package/dist/features/blog/schemas/index.d.ts +6 -6
  197. package/dist/features/cart/repository/cart.repository.js +1 -0
  198. package/dist/features/cart/schemas/firestore.d.ts +15 -0
  199. package/dist/features/catalogue/schemas/validation.d.ts +4 -4
  200. package/dist/features/categories/components/BrandDetailPageView.js +23 -40
  201. package/dist/features/categories/components/BrandDetailTabs.d.ts +7 -7
  202. package/dist/features/categories/components/BrandDetailTabs.js +8 -12
  203. package/dist/features/categories/components/BundleCollage.js +1 -1
  204. package/dist/features/categories/components/CategoryDetailPageView.js +53 -57
  205. package/dist/features/categories/components/CategoryDetailTabs.d.ts +10 -8
  206. package/dist/features/categories/components/CategoryDetailTabs.js +11 -16
  207. package/dist/features/categories/components/CategoryProductsListing.js +11 -1
  208. package/dist/features/categories/components/ConcernCard.js +7 -1
  209. package/dist/features/categories/schemas/firestore.d.ts +13 -0
  210. package/dist/features/categories/schemas/index.d.ts +26 -26
  211. package/dist/features/classified/components/ClassifiedDetailPageView.d.ts +16 -1
  212. package/dist/features/classified/components/ClassifiedDetailPageView.js +23 -3
  213. package/dist/features/events/components/AdminEventEditorView.js +32 -54
  214. package/dist/features/events/components/AdminEventEntriesView.js +22 -3
  215. package/dist/features/events/components/AdminEventsView.js +15 -11
  216. package/dist/features/events/components/EventFilters.d.ts +9 -1
  217. package/dist/features/events/components/EventFilters.js +45 -21
  218. package/dist/features/events/components/EventsIndexListing.d.ts +6 -1
  219. package/dist/features/events/components/EventsIndexListing.js +2 -2
  220. package/dist/features/events/components/EventsListPageView.js +13 -4
  221. package/dist/features/events/repository/events.repository.d.ts +17 -0
  222. package/dist/features/events/repository/events.repository.js +27 -0
  223. package/dist/features/events/schemas/event-form.d.ts +113 -0
  224. package/dist/features/events/schemas/event-form.js +82 -0
  225. package/dist/features/events/schemas/firestore.d.ts +12 -0
  226. package/dist/features/events/schemas/firestore.js +12 -0
  227. package/dist/features/events/schemas/index.d.ts +50 -50
  228. package/dist/features/events/types/index.d.ts +11 -0
  229. package/dist/features/events/types/index.js +57 -1
  230. package/dist/features/faq/actions/faq-actions.d.ts +12 -12
  231. package/dist/features/faq/schemas/index.d.ts +8 -8
  232. package/dist/features/filters/FilterFacetSection.d.ts +7 -1
  233. package/dist/features/filters/FilterFacetSection.js +11 -3
  234. package/dist/features/grouped/schemas/grouped-listing-form.d.ts +101 -0
  235. package/dist/features/grouped/schemas/grouped-listing-form.js +89 -0
  236. package/dist/features/grouped/schemas/index.d.ts +4 -4
  237. package/dist/features/homepage/actions/homepage-section-actions.d.ts +11 -3
  238. package/dist/features/homepage/actions/homepage-section-actions.js +33 -1
  239. package/dist/features/homepage/components/AnnouncementBar.d.ts +7 -1
  240. package/dist/features/homepage/components/AnnouncementBar.js +3 -3
  241. package/dist/features/homepage/components/MarketplaceHomepageView.js +20 -6
  242. package/dist/features/homepage/hooks/homepage-query.d.ts +16 -0
  243. package/dist/features/homepage/hooks/homepage-query.js +45 -0
  244. package/dist/features/homepage/hooks/useFeaturedAuctions.d.ts +10 -0
  245. package/dist/features/homepage/hooks/useFeaturedAuctions.js +28 -8
  246. package/dist/features/homepage/hooks/useFeaturedPreOrders.js +17 -8
  247. package/dist/features/homepage/hooks/useFeaturedProducts.js +15 -8
  248. package/dist/features/homepage/schemas/index.d.ts +33 -2
  249. package/dist/features/homepage/schemas/index.js +24 -0
  250. package/dist/features/layout/AppLayoutShell.d.ts +11 -1
  251. package/dist/features/layout/AppLayoutShell.js +15 -14
  252. package/dist/features/layout/BackToTop.d.ts +9 -0
  253. package/dist/features/layout/BackToTop.js +10 -1
  254. package/dist/features/layout/BottomActions.js +28 -25
  255. package/dist/features/layout/BottomChrome.d.ts +34 -0
  256. package/dist/features/layout/BottomChrome.js +55 -0
  257. package/dist/features/layout/BottomNavLayout.d.ts +6 -0
  258. package/dist/features/layout/BottomNavLayout.js +7 -1
  259. package/dist/features/layout/BottomNavbar.js +15 -2
  260. package/dist/features/layout/FooterLayout.js +11 -1
  261. package/dist/features/layout/NavbarLayout.js +1 -1
  262. package/dist/features/layout/TitleBarLayout.d.ts +7 -0
  263. package/dist/features/layout/TitleBarLayout.js +28 -5
  264. package/dist/features/layout/index.d.ts +2 -0
  265. package/dist/features/layout/index.js +1 -0
  266. package/dist/features/lottery/types/index.d.ts +3 -0
  267. package/dist/features/media/MediaPickerModal.js +5 -1
  268. package/dist/features/messages/schemas/index.d.ts +2 -2
  269. package/dist/features/orders/components/OrderScopeTabs.d.ts +20 -0
  270. package/dist/features/orders/components/OrderScopeTabs.js +31 -0
  271. package/dist/features/orders/components/OrderStatusTimeline.d.ts +5 -1
  272. package/dist/features/orders/components/OrderStatusTimeline.js +39 -20
  273. package/dist/features/orders/constants/order-scope.d.ts +48 -0
  274. package/dist/features/orders/constants/order-scope.js +111 -0
  275. package/dist/features/orders/repository/orders.repository.d.ts +54 -7
  276. package/dist/features/orders/repository/orders.repository.js +121 -22
  277. package/dist/features/orders/schemas/firestore.d.ts +152 -0
  278. package/dist/features/orders/schemas/firestore.js +30 -0
  279. package/dist/features/orders/schemas/index.d.ts +18 -18
  280. package/dist/features/orders/types/index.d.ts +35 -7
  281. package/dist/features/pre-orders/components/PreOrdersIndexListing.js +14 -9
  282. package/dist/features/pre-orders/components/PreOrdersListView.js +6 -5
  283. package/dist/features/pre-orders/schemas/index.d.ts +1 -1
  284. package/dist/features/products/actions/product-actions.d.ts +14 -0
  285. package/dist/features/products/actions/product-actions.js +49 -11
  286. package/dist/features/products/api/route.d.ts +12 -0
  287. package/dist/features/products/api/route.js +42 -100
  288. package/dist/features/products/components/ArtStickersListView.js +2 -2
  289. package/dist/features/products/components/AuctionsIndexListing.js +13 -11
  290. package/dist/features/products/components/AvailabilityTabs.d.ts +11 -0
  291. package/dist/features/products/components/AvailabilityTabs.js +47 -0
  292. package/dist/features/products/components/GroupSettingsPanel.js +5 -1
  293. package/dist/features/products/components/MakeOfferButton.js +48 -49
  294. package/dist/features/products/components/PrizeDrawCollage.d.ts +20 -4
  295. package/dist/features/products/components/PrizeDrawCollage.js +9 -1
  296. package/dist/features/products/components/PrizeDrawsIndexListing.js +14 -12
  297. package/dist/features/products/components/PrizeDrawsListingView.js +2 -2
  298. package/dist/features/products/components/PrizeDrawsSection.d.ts +7 -1
  299. package/dist/features/products/components/PrizeDrawsSection.js +23 -18
  300. package/dist/features/products/components/ProductDetailPageView.d.ts +4 -1
  301. package/dist/features/products/components/ProductDetailPageView.js +18 -4
  302. package/dist/features/products/components/ProductForm.js +5 -2
  303. package/dist/features/products/components/ProductGrid.js +6 -1
  304. package/dist/features/products/components/ProductsIndexListing.js +22 -32
  305. package/dist/features/products/components/ProductsIndexPageView.js +6 -9
  306. package/dist/features/products/components/index.d.ts +2 -2
  307. package/dist/features/products/components/index.js +1 -1
  308. package/dist/features/products/config/listing-type-listing-config.d.ts +20 -0
  309. package/dist/features/products/config/listing-type-listing-config.js +22 -10
  310. package/dist/features/products/constants/action-defs.d.ts +2 -0
  311. package/dist/features/products/constants/action-defs.js +6 -0
  312. package/dist/features/products/hooks/useAvailabilityScope.d.ts +13 -0
  313. package/dist/features/products/hooks/useAvailabilityScope.js +19 -0
  314. package/dist/features/products/hooks/useProducts.d.ts +5 -0
  315. package/dist/features/products/hooks/useProducts.js +13 -2
  316. package/dist/features/products/repository/products.repository.d.ts +31 -2
  317. package/dist/features/products/repository/products.repository.js +53 -21
  318. package/dist/features/products/schemas/firestore.d.ts +17 -3
  319. package/dist/features/products/schemas/firestore.js +7 -2
  320. package/dist/features/products/schemas/index.d.ts +64 -64
  321. package/dist/features/products/schemas/product-features.validators.d.ts +79 -6
  322. package/dist/features/products/schemas/product-features.validators.js +63 -0
  323. package/dist/features/products/types/index.d.ts +16 -1
  324. package/dist/features/promotions/schemas/index.d.ts +2 -2
  325. package/dist/features/reviews/schemas/index.d.ts +16 -16
  326. package/dist/features/scams/constants/scammer-status-display.d.ts +28 -0
  327. package/dist/features/scams/constants/scammer-status-display.js +79 -0
  328. package/dist/features/search/schemas/index.d.ts +4 -4
  329. package/dist/features/seller/actions/offer-actions.js +57 -4
  330. package/dist/features/seller/components/OfferPhaseTimeline.d.ts +59 -0
  331. package/dist/features/seller/components/OfferPhaseTimeline.js +107 -0
  332. package/dist/features/seller/components/SellerArtView.js +5 -0
  333. package/dist/features/seller/components/SellerAuctionsView.js +13 -15
  334. package/dist/features/seller/components/SellerBidsView.js +11 -4
  335. package/dist/features/seller/components/SellerClassifiedView.js +5 -0
  336. package/dist/features/seller/components/SellerCouponEditorView.js +17 -17
  337. package/dist/features/seller/components/SellerDigitalCodesView.js +5 -0
  338. package/dist/features/seller/components/SellerLiveView.js +5 -0
  339. package/dist/features/seller/components/SellerOffersView.js +2 -1
  340. package/dist/features/seller/components/SellerOrdersView.js +31 -9
  341. package/dist/features/seller/components/SellerPayoutSettingsView.js +56 -31
  342. package/dist/features/seller/components/SellerPreOrdersView.js +5 -0
  343. package/dist/features/seller/components/SellerPrizeDrawsView.js +14 -16
  344. package/dist/features/seller/components/SellerProductShell.js +7 -1
  345. package/dist/features/seller/components/SellerProductsView.js +11 -8
  346. package/dist/features/seller/components/SellerStickersView.js +5 -0
  347. package/dist/features/seller/components/index.d.ts +0 -2
  348. package/dist/features/seller/components/index.js +0 -1
  349. package/dist/features/seller/repository/offer.repository.d.ts +142 -24
  350. package/dist/features/seller/repository/offer.repository.js +165 -26
  351. package/dist/features/seller/schemas/coupon-form.d.ts +72 -0
  352. package/dist/features/seller/schemas/coupon-form.js +116 -0
  353. package/dist/features/seller/schemas/firestore.d.ts +56 -2
  354. package/dist/features/seller/schemas/firestore.js +27 -0
  355. package/dist/features/seller/schemas/index.d.ts +2 -2
  356. package/dist/features/seller/schemas/offer-forms.d.ts +46 -0
  357. package/dist/features/seller/schemas/offer-forms.js +42 -0
  358. package/dist/features/seller/server.d.ts +0 -1
  359. package/dist/features/seller/server.js +0 -1
  360. package/dist/features/shell/SectionForm.d.ts +99 -0
  361. package/dist/features/shell/SectionForm.js +128 -0
  362. package/dist/features/shell/build-sections.d.ts +63 -0
  363. package/dist/features/shell/build-sections.js +207 -0
  364. package/dist/features/shell/entity-form.d.ts +109 -0
  365. package/dist/features/shell/entity-form.js +96 -0
  366. package/dist/features/shell/field-ui-meta.d.ts +115 -0
  367. package/dist/features/shell/field-ui-meta.js +324 -0
  368. package/dist/features/shell/index.d.ts +8 -0
  369. package/dist/features/shell/index.js +4 -0
  370. package/dist/features/status-history/components/StatusTimeline.d.ts +74 -0
  371. package/dist/features/status-history/components/StatusTimeline.js +46 -0
  372. package/dist/features/status-history/index.d.ts +11 -0
  373. package/dist/features/status-history/index.js +10 -0
  374. package/dist/features/store-extensions/components/ReviewDecisionModal.d.ts +27 -0
  375. package/dist/features/store-extensions/components/ReviewDecisionModal.js +82 -0
  376. package/dist/features/store-extensions/index.d.ts +12 -0
  377. package/dist/features/store-extensions/index.js +12 -0
  378. package/dist/features/store-extensions/schemas/admin-notification-form.d.ts +36 -0
  379. package/dist/features/store-extensions/schemas/admin-notification-form.js +114 -0
  380. package/dist/features/store-extensions/schemas/analytics-forms.d.ts +57 -0
  381. package/dist/features/store-extensions/schemas/analytics-forms.js +158 -0
  382. package/dist/features/store-extensions/schemas/custom-role-form.d.ts +85 -0
  383. package/dist/features/store-extensions/schemas/custom-role-form.js +118 -0
  384. package/dist/features/store-extensions/schemas/firestore.d.ts +21 -1
  385. package/dist/features/store-extensions/schemas/firestore.js +60 -0
  386. package/dist/features/store-extensions/schemas/google-config-form.d.ts +53 -0
  387. package/dist/features/store-extensions/schemas/google-config-form.js +105 -0
  388. package/dist/features/store-extensions/schemas/item-request-create-form.d.ts +28 -0
  389. package/dist/features/store-extensions/schemas/item-request-create-form.js +80 -0
  390. package/dist/features/store-extensions/schemas/listing-template-form.d.ts +78 -0
  391. package/dist/features/store-extensions/schemas/listing-template-form.js +87 -0
  392. package/dist/features/store-extensions/schemas/moderation-review-form.d.ts +49 -0
  393. package/dist/features/store-extensions/schemas/moderation-review-form.js +101 -0
  394. package/dist/features/store-extensions/schemas/payout-method-form.d.ts +153 -0
  395. package/dist/features/store-extensions/schemas/payout-method-form.js +155 -0
  396. package/dist/features/store-extensions/schemas/report-create-form.d.ts +25 -0
  397. package/dist/features/store-extensions/schemas/report-create-form.js +79 -0
  398. package/dist/features/store-extensions/schemas/report-review-form.d.ts +47 -0
  399. package/dist/features/store-extensions/schemas/report-review-form.js +111 -0
  400. package/dist/features/store-extensions/schemas/shipping-config-form.d.ts +148 -0
  401. package/dist/features/store-extensions/schemas/shipping-config-form.js +104 -0
  402. package/dist/features/store-extensions/schemas/store-category-form.d.ts +54 -0
  403. package/dist/features/store-extensions/schemas/store-category-form.js +73 -0
  404. package/dist/features/stores/api/[storeSlug]/route.js +2 -25
  405. package/dist/features/stores/components/StoreAuctionsListing.js +15 -1
  406. package/dist/features/stores/components/StoreClassifiedsListing.js +12 -2
  407. package/dist/features/stores/components/StoreDetailLayoutView.js +24 -71
  408. package/dist/features/stores/components/StoreDigitalCodesListing.js +12 -2
  409. package/dist/features/stores/components/StoreLiveItemsListing.js +12 -2
  410. package/dist/features/stores/components/StorePreOrdersListing.js +12 -1
  411. package/dist/features/stores/components/StoreProductsListing.js +11 -1
  412. package/dist/features/stores/repository/store.repository.js +6 -0
  413. package/dist/features/stores/schemas/index.d.ts +6 -6
  414. package/dist/features/support/schemas/index.d.ts +4 -4
  415. package/dist/features/tester/actions/checklist-item-actions.d.ts +4 -4
  416. package/dist/features/tester/seed-data/offers-tester-seed-data.js +119 -3
  417. package/dist/features/tester/seed-data/products-tester-seed-data.js +131 -1
  418. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +431 -1
  419. package/dist/features/wishlist/hooks/useWishlistWithGuest.d.ts +1 -1
  420. package/dist/index.d.ts +25 -12
  421. package/dist/index.js +26 -11
  422. package/dist/next/routing/route-map.d.ts +23 -3
  423. package/dist/next/routing/route-map.js +14 -2
  424. package/dist/providers/db-firebase/base.repository.d.ts +30 -0
  425. package/dist/providers/db-firebase/base.repository.js +50 -1
  426. package/dist/providers/db-firebase/index.d.ts +1 -1
  427. package/dist/providers/db-firebase/index.js +1 -1
  428. package/dist/providers/db-firebase/sieve.d.ts +25 -0
  429. package/dist/providers/db-firebase/sieve.js +52 -18
  430. package/dist/react/hooks/useUrlTable.js +10 -1
  431. package/dist/schemas/firestore-value.d.ts +8 -0
  432. package/dist/schemas/firestore-value.js +44 -0
  433. package/dist/schemas/index.d.ts +1 -1
  434. package/dist/schemas/index.js +1 -1
  435. package/dist/schemas/registry.d.ts +702 -69
  436. package/dist/schemas/registry.js +64 -1
  437. package/dist/seed/_helpers/category-forest.d.ts +2 -0
  438. package/dist/seed/_helpers/category-forest.js +309 -0
  439. package/dist/seed/_helpers/category-tree.d.ts +27 -0
  440. package/dist/seed/_helpers/category-tree.js +103 -0
  441. package/dist/seed/bids-seed-data.js +30 -0
  442. package/dist/seed/catalogue-seed-data.js +12 -12
  443. package/dist/seed/categories-seed-data.js +177 -162
  444. package/dist/seed/events-seed-data.js +61 -10
  445. package/dist/seed/homepage-sections-seed-data.js +5 -1
  446. package/dist/seed/offers-seed-data.js +244 -34
  447. package/dist/seed/orders-seed-data.js +336 -1
  448. package/dist/seed/products-art-seed-data.js +50 -12
  449. package/dist/seed/products-auctions-seed-data.js +138 -18
  450. package/dist/seed/products-classifieds-seed-data.js +80 -16
  451. package/dist/seed/products-digital-codes-seed-data.js +66 -18
  452. package/dist/seed/products-live-items-seed-data.js +64 -13
  453. package/dist/seed/products-preorders-seed-data.d.ts +0 -1
  454. package/dist/seed/products-preorders-seed-data.js +52 -13
  455. package/dist/seed/products-prize-draws-seed-data.js +63 -14
  456. package/dist/seed/products-standard-seed-data.js +99 -26
  457. package/dist/seed/products-stickers-seed-data.js +47 -12
  458. package/dist/seed/reviews-seed-data.js +6 -1
  459. package/dist/seed/site-settings-seed-data.d.ts +1 -38
  460. package/dist/seed/site-settings-seed-data.js +38 -76
  461. package/dist/seed/stores-seed-data.js +71 -1
  462. package/dist/seed/users-seed-data.js +15 -5
  463. package/dist/server-entry.d.ts +1 -2
  464. package/dist/server-entry.js +4 -3
  465. package/dist/server.d.ts +6 -3
  466. package/dist/server.js +13 -4
  467. package/dist/styles.css +78 -12
  468. package/dist/tailwind-utilities.css +1 -1
  469. package/dist/ui/components/Button.style.css +19 -4
  470. package/dist/ui/components/CollapsibleSection.d.ts +17 -1
  471. package/dist/ui/components/CollapsibleSection.js +6 -2
  472. package/dist/ui/components/FilterChipGroup.d.ts +25 -1
  473. package/dist/ui/components/FilterChipGroup.js +21 -4
  474. package/dist/ui/components/HandMode.style.css +47 -0
  475. package/dist/ui/components/Layout.d.ts +9 -2
  476. package/dist/ui/components/Layout.js +1 -1
  477. package/dist/ui/components/ListingLayout.js +8 -8
  478. package/dist/ui/components/ListingLayout.style.css +8 -7
  479. package/dist/ui/components/RecordDetailModal.d.ts +10 -1
  480. package/dist/ui/components/RecordDetailModal.js +2 -2
  481. package/dist/ui/components/StickyToolbar.d.ts +3 -1
  482. package/dist/ui/components/StickyToolbar.js +62 -20
  483. package/dist/ui/components/bottom-chrome-slot.d.ts +21 -0
  484. package/dist/ui/components/bottom-chrome-slot.js +29 -0
  485. package/dist/ui/components/index.style.css +3 -0
  486. package/dist/ui/forms/FormShell.d.ts +43 -13
  487. package/dist/ui/forms/FormShell.js +22 -11
  488. package/dist/ui/forms/index.d.ts +1 -1
  489. package/dist/ui/index.d.ts +1 -1
  490. package/package.json +2 -1
  491. package/scripts/node-esm-loader.mjs +65 -0
  492. package/scripts/seed-cli-loader.mjs +6 -49
  493. package/scripts/seed-cli.mjs +1 -1
@@ -1,6 +1,29 @@
1
1
  /*
2
- * WHY: Seeds offers for the Beyblade marketplace — 8 offers across all statuses.
3
- * WHAT: pending (2), accepted (1), declined (1), countered (1), expired (1), withdrawn (1), paid (1).
2
+ * WHY: Seeds offers for the Beyblade marketplace — every status, plus a real
3
+ * multi-round negotiation. Before W2 a counter-offer created an unlinked
4
+ * document, so no fixture could demonstrate a chain and the timeline had
5
+ * nothing to render.
6
+ * WHAT: 10 offers. pending (2), accepted (1), declined (1), countered (1),
7
+ * expired (1), withdrawn (3 — one a genuine walk-away, two superseded
8
+ * rounds of the Metal Storm Pegasus chain), paid (1).
9
+ *
10
+ * ## The Metal Storm Pegasus chain
11
+ *
12
+ * Three linked documents ending at the pre-existing `…-countered` id, so the
13
+ * final round keeps the id every other fixture and checklist case already
14
+ * refers to and `appkit-seed delete` still cleans the whole chain up:
15
+ *
16
+ * …-r1 (withdrawn, superseded by r2) → …-r2 (withdrawn, superseded by the
17
+ * countered offer) → …-countered (round 3, live)
18
+ *
19
+ * Two withdrawn plus one live keeps `hasActiveOffer` consistent, and three
20
+ * rounds makes the 3-offer chain cap demonstrable.
21
+ *
22
+ * ## One fixture deliberately has NO statusHistory
23
+ *
24
+ * `offer-kaiba-x-wizard-arrow-expired` is left history-less on purpose — see
25
+ * the comment at that fixture. It is the only way the timeline's legacy branch
26
+ * is testable, and it is the exact shape of every offer written before W2.
4
27
  *
5
28
  * EXPORTS:
6
29
  * offersSeedData — Array of Partial<OfferDocument> for seed runner
@@ -16,6 +39,23 @@ import { OfferStatusValues } from "../features/seller/schemas/firestore";
16
39
  const NOW = new Date();
17
40
  const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
18
41
  const daysFromNow = (n) => new Date(NOW.getTime() + n * 86400000);
42
+ /**
43
+ * One history entry, in the same delta shape `withHistory()` produces at
44
+ * runtime — so a seeded timeline and a real one render identically.
45
+ *
46
+ * `actorUid` is the only identity a history entry may ever carry. Never a name
47
+ * or an email: `encryptPiiFields` is a flat top-level loop that does not
48
+ * descend into arrays, so a PII value placed inside `statusHistory` would be
49
+ * written to Firestore in plaintext and never decrypted on the way back out.
50
+ */
51
+ function entry(at, actorRole, trigger, changes, extra = {}) {
52
+ return { at, actorRole, trigger, changes, ...extra };
53
+ }
54
+ const BUYER_YUGI = "user-yugi-muto";
55
+ const BUYER_KAIBA = "user-seto-kaiba";
56
+ const BUYER_ADMIN = "user-admin-letitrip";
57
+ const STORE = "store-beyblade-arena";
58
+ const PEGASUS_CHAIN_ROOT = "offer-yugi-metal-storm-pegasus-r1";
19
59
  export const offersSeedData = [
20
60
  // ── 1. PENDING — Rehan → Beyblade Arena — Burst Valkyrie ────────────────
21
61
  {
@@ -27,14 +67,20 @@ export const offersSeedData = [
27
67
  buyerUid: "user-yugi-muto",
28
68
  buyerName: "Mock User 3",
29
69
  buyerEmail: "rehan.sheikh@gmail.com",
30
- listedPrice: 1899,
31
- offerAmount: 1500,
70
+ listedPrice: 999,
71
+ offerAmount: 780,
32
72
  currency: "INR",
33
73
  status: OfferStatusValues.PENDING,
34
- buyerNote: "Would you accept ₹1,500 for the Burst Valkyrie?",
74
+ buyerNote: "Would you accept ₹780 for the Burst Valkyrie?",
35
75
  expiresAt: daysFromNow(3),
36
76
  createdAt: daysAgo(0),
37
77
  updatedAt: daysAgo(0),
78
+ statusHistory: [
79
+ entry(daysAgo(0), "buyer", "makeOffer", {
80
+ status: { from: null, to: "pending" },
81
+ offerAmount: { from: null, to: 780 },
82
+ }, { actorUid: BUYER_YUGI, note: "Would you accept ₹780 for the Burst Valkyrie?" }),
83
+ ],
38
84
  },
39
85
  // ── 2. COUNTERED — Rehan → Beyblade Arena — Metal Storm Pegasus ─────────
40
86
  {
@@ -46,17 +92,118 @@ export const offersSeedData = [
46
92
  buyerUid: "user-yugi-muto",
47
93
  buyerName: "Mock User 3",
48
94
  buyerEmail: "rehan.sheikh@gmail.com",
49
- listedPrice: 2499,
50
- offerAmount: 2000,
51
- counterAmount: 2250,
95
+ listedPrice: 1299,
96
+ offerAmount: 1000,
97
+ counterAmount: 1150,
52
98
  currency: "INR",
53
99
  status: OfferStatusValues.COUNTERED,
54
- buyerNote: "₹2,000 — will you take it?",
55
- sellerNote: "Best I can do is ₹2,250.",
100
+ buyerNote: "₹1,000 — will you take it?",
101
+ sellerNote: "Best I can do is ₹1,150.",
56
102
  expiresAt: daysFromNow(2),
57
103
  respondedAt: daysAgo(1),
58
104
  createdAt: daysAgo(3),
59
105
  updatedAt: daysAgo(1),
106
+ // Round 3 — the live end of the chain. Keeping the original id here (rather
107
+ // than appending an `…-r3`) means every existing reference and checklist
108
+ // href still resolves, and `appkit-seed delete` still removes the lot.
109
+ previousOfferId: "offer-yugi-metal-storm-pegasus-r2",
110
+ chainRootOfferId: PEGASUS_CHAIN_ROOT,
111
+ counterRound: 3,
112
+ statusHistory: [
113
+ entry(daysAgo(3), "buyer", "counterOfferByBuyer", {
114
+ status: { from: null, to: "pending" },
115
+ offerAmount: { from: 900, to: 1000 },
116
+ previousOfferId: { from: null, to: "offer-yugi-metal-storm-pegasus-r2" },
117
+ }, { actorUid: BUYER_YUGI, note: "₹1,000 — will you take it?" }),
118
+ entry(daysAgo(1), "seller", "respondToOffer:counter", {
119
+ status: { from: "pending", to: "countered" },
120
+ counterAmount: { from: null, to: 1150 },
121
+ }, { actorUid: STORE, note: "Best I can do is ₹1,150." }),
122
+ ],
123
+ },
124
+ // ── 2a. Metal Storm Pegasus — ROUND 1 (superseded, not a walk-away) ─────
125
+ {
126
+ id: PEGASUS_CHAIN_ROOT,
127
+ productId: "product-beyblade-metal-storm-pegasus",
128
+ productTitle: "Beyblade Metal Storm Pegasus",
129
+ storeId: STORE,
130
+ storeName: "Beyblade Arena",
131
+ buyerUid: BUYER_YUGI,
132
+ buyerName: "Mock User 3",
133
+ buyerEmail: "rehan.sheikh@gmail.com",
134
+ listedPrice: 1299,
135
+ offerAmount: 800,
136
+ counterAmount: 1200,
137
+ currency: "INR",
138
+ // `withdrawn` PLUS `supersededByOfferId` is what makes the timeline render
139
+ // this round neutral ("Superseded") instead of negative ("Withdrawn").
140
+ // `superseded` is a render key, deliberately never an eighth OfferStatus —
141
+ // an eighth value would add a filter chip matching zero stored rows.
142
+ status: OfferStatusValues.WITHDRAWN,
143
+ buyerNote: "Starting at ₹800 for the Storm Pegasus.",
144
+ sellerNote: "₹1,200 and it's yours.",
145
+ expiresAt: daysAgo(6),
146
+ respondedAt: daysAgo(7),
147
+ createdAt: daysAgo(9),
148
+ updatedAt: daysAgo(7),
149
+ supersededByOfferId: "offer-yugi-metal-storm-pegasus-r2",
150
+ chainRootOfferId: PEGASUS_CHAIN_ROOT,
151
+ counterRound: 1,
152
+ statusHistory: [
153
+ entry(daysAgo(9), "buyer", "makeOffer", {
154
+ status: { from: null, to: "pending" },
155
+ offerAmount: { from: null, to: 800 },
156
+ }, { actorUid: BUYER_YUGI, note: "Starting at ₹800 for the Storm Pegasus." }),
157
+ entry(daysAgo(8), "seller", "respondToOffer:counter", {
158
+ status: { from: "pending", to: "countered" },
159
+ counterAmount: { from: null, to: 1200 },
160
+ }, { actorUid: STORE, note: "₹1,200 and it's yours." }),
161
+ entry(daysAgo(7), "buyer", "counterOfferByBuyer:supersede", {
162
+ status: { from: "countered", to: "withdrawn" },
163
+ supersededByOfferId: { from: null, to: "offer-yugi-metal-storm-pegasus-r2" },
164
+ }, { actorUid: BUYER_YUGI, reason: "Superseded by the buyer's counter" }),
165
+ ],
166
+ },
167
+ // ── 2b. Metal Storm Pegasus — ROUND 2 (superseded) ──────────────────
168
+ {
169
+ id: "offer-yugi-metal-storm-pegasus-r2",
170
+ productId: "product-beyblade-metal-storm-pegasus",
171
+ productTitle: "Beyblade Metal Storm Pegasus",
172
+ storeId: STORE,
173
+ storeName: "Beyblade Arena",
174
+ buyerUid: BUYER_YUGI,
175
+ buyerName: "Mock User 3",
176
+ buyerEmail: "rehan.sheikh@gmail.com",
177
+ listedPrice: 1299,
178
+ offerAmount: 900,
179
+ counterAmount: 1175,
180
+ currency: "INR",
181
+ status: OfferStatusValues.WITHDRAWN,
182
+ buyerNote: "Can you meet me at ₹900?",
183
+ sellerNote: "₹1,175 is as low as I can go.",
184
+ expiresAt: daysAgo(3),
185
+ respondedAt: daysAgo(3),
186
+ createdAt: daysAgo(7),
187
+ updatedAt: daysAgo(3),
188
+ previousOfferId: PEGASUS_CHAIN_ROOT,
189
+ supersededByOfferId: "offer-yugi-metal-storm-pegasus-countered",
190
+ chainRootOfferId: PEGASUS_CHAIN_ROOT,
191
+ counterRound: 2,
192
+ statusHistory: [
193
+ entry(daysAgo(7), "buyer", "counterOfferByBuyer", {
194
+ status: { from: null, to: "pending" },
195
+ offerAmount: { from: 800, to: 900 },
196
+ previousOfferId: { from: null, to: PEGASUS_CHAIN_ROOT },
197
+ }, { actorUid: BUYER_YUGI, note: "Can you meet me at ₹900?" }),
198
+ entry(daysAgo(4), "seller", "respondToOffer:counter", {
199
+ status: { from: "pending", to: "countered" },
200
+ counterAmount: { from: null, to: 1175 },
201
+ }, { actorUid: STORE, note: "₹1,175 is as low as I can go." }),
202
+ entry(daysAgo(3), "buyer", "counterOfferByBuyer:supersede", {
203
+ status: { from: "countered", to: "withdrawn" },
204
+ supersededByOfferId: { from: null, to: "offer-yugi-metal-storm-pegasus-countered" },
205
+ }, { actorUid: BUYER_YUGI, reason: "Superseded by the buyer's counter" }),
206
+ ],
60
207
  },
61
208
  // ── 3. PAID — Admin → Beyblade Arena — X Knife Shinobi (order placed) ───
62
209
  {
@@ -68,18 +215,32 @@ export const offersSeedData = [
68
215
  buyerUid: "user-admin-letitrip",
69
216
  buyerName: "Mock User 1",
70
217
  buyerEmail: "admin@letitrip.in",
71
- listedPrice: 2999,
72
- offerAmount: 2600,
73
- lockedPrice: 2600,
218
+ listedPrice: 949,
219
+ offerAmount: 800,
220
+ lockedPrice: 800,
74
221
  currency: "INR",
75
222
  status: OfferStatusValues.PAID,
76
- buyerNote: "Would you accept ₹2,600 for the X Knife Shinobi?",
223
+ buyerNote: "Would you accept ₹800 for the X Knife Shinobi?",
77
224
  sellerNote: "Accepted. Thank you!",
78
225
  expiresAt: daysAgo(3),
226
+ checkoutDeadline: daysAgo(10),
79
227
  acceptedAt: daysAgo(12),
80
228
  respondedAt: daysAgo(12),
81
229
  createdAt: daysAgo(14),
82
230
  updatedAt: daysAgo(11),
231
+ statusHistory: [
232
+ entry(daysAgo(14), "buyer", "makeOffer", {
233
+ status: { from: null, to: "pending" },
234
+ offerAmount: { from: null, to: 800 },
235
+ }, { actorUid: BUYER_ADMIN, note: "Would you accept ₹800 for the X Knife Shinobi?" }),
236
+ entry(daysAgo(12), "seller", "respondToOffer:accept", {
237
+ status: { from: "pending", to: "accepted" },
238
+ lockedPrice: { from: null, to: 800 },
239
+ }, { actorUid: STORE, note: "Accepted. Thank you!" }),
240
+ entry(daysAgo(11), "system", "finalizeLockedLines", {
241
+ status: { from: "accepted", to: "paid" },
242
+ }),
243
+ ],
83
244
  },
84
245
  // ── 4. DECLINED — Rehan → Beyblade Arena — Burst Regalia Genesis ────────
85
246
  {
@@ -91,16 +252,27 @@ export const offersSeedData = [
91
252
  buyerUid: "user-yugi-muto",
92
253
  buyerName: "Mock User 3",
93
254
  buyerEmail: "rehan.sheikh@gmail.com",
94
- listedPrice: 3499,
95
- offerAmount: 2500,
255
+ listedPrice: 1399,
256
+ offerAmount: 1050,
96
257
  currency: "INR",
97
258
  status: OfferStatusValues.DECLINED,
98
- buyerNote: "Offering ₹2,500 — slightly above my budget.",
99
- sellerNote: "Sorry, we cannot go below ₹3,200 for this piece.",
259
+ // Both notes quoted prices from the pre-Beyblade catalogue this seed was
260
+ // narrowed away from, so a ₹1,050 offer read as "offering ₹2,500".
261
+ buyerNote: "Offering ₹1,050 — slightly above my budget.",
262
+ sellerNote: "Sorry, we cannot go below ₹1,300 for this piece.",
100
263
  expiresAt: daysAgo(5),
101
264
  respondedAt: daysAgo(8),
102
265
  createdAt: daysAgo(10),
103
266
  updatedAt: daysAgo(8),
267
+ statusHistory: [
268
+ entry(daysAgo(10), "buyer", "makeOffer", {
269
+ status: { from: null, to: "pending" },
270
+ offerAmount: { from: null, to: 1050 },
271
+ }, { actorUid: BUYER_YUGI, note: "Offering ₹1,050 — slightly above my budget." }),
272
+ entry(daysAgo(8), "seller", "respondToOffer:decline", {
273
+ status: { from: "pending", to: "declined" },
274
+ }, { actorUid: STORE, note: "Sorry, we cannot go below ₹1,300 for this piece." }),
275
+ ],
104
276
  },
105
277
  // ── 5. EXPIRED — Vivaan → Beyblade Arena — X Wizard Arrow ───────────────
106
278
  {
@@ -112,14 +284,20 @@ export const offersSeedData = [
112
284
  buyerUid: "user-seto-kaiba",
113
285
  buyerName: "Mock User 2",
114
286
  buyerEmail: "vivaan.kapoor@gmail.com",
115
- listedPrice: 1699,
116
- offerAmount: 1300,
287
+ listedPrice: 899,
288
+ offerAmount: 700,
117
289
  currency: "INR",
118
290
  status: OfferStatusValues.EXPIRED,
119
- buyerNote: "₹1,300 — let me know.",
291
+ buyerNote: "₹700 — let me know.",
120
292
  expiresAt: daysAgo(2),
121
293
  createdAt: daysAgo(9),
122
294
  updatedAt: daysAgo(2),
295
+ // NO `statusHistory`, deliberately. This is the ONLY fixture exercising the
296
+ // timeline's legacy branch, and it is exactly the shape of every offer
297
+ // written before W2. Its "Expired" step renders with an em-dash and no
298
+ // date — `expireMany` never wrote a timestamp, `updatedAt` means "last
299
+ // write of any kind", and `expiresAt` is a deadline rather than an event,
300
+ // so any date shown here would be fabricated. Do not "complete" this one.
123
301
  },
124
302
  // ── 6. WITHDRAWN — Admin → Beyblade Arena — Original Driger V ───────────
125
303
  {
@@ -131,14 +309,25 @@ export const offersSeedData = [
131
309
  buyerUid: "user-admin-letitrip",
132
310
  buyerName: "Mock User 1",
133
311
  buyerEmail: "admin@letitrip.in",
134
- listedPrice: 1999,
135
- offerAmount: 1600,
312
+ listedPrice: 1799,
313
+ offerAmount: 1450,
136
314
  currency: "INR",
137
315
  status: OfferStatusValues.WITHDRAWN,
138
- buyerNote: "Offering ₹1,600 for the Driger V.",
316
+ buyerNote: "Offering ₹1,450 for the Driger V.",
139
317
  expiresAt: daysAgo(3),
140
318
  createdAt: daysAgo(7),
141
319
  updatedAt: daysAgo(5),
320
+ // No `supersededByOfferId` — a genuine walk-away, so this renders as
321
+ // "Withdrawn" (negative). Contrast with the two Pegasus rounds above.
322
+ statusHistory: [
323
+ entry(daysAgo(7), "buyer", "makeOffer", {
324
+ status: { from: null, to: "pending" },
325
+ offerAmount: { from: null, to: 1450 },
326
+ }, { actorUid: BUYER_ADMIN, note: "Offering ₹1,450 for the Driger V." }),
327
+ entry(daysAgo(5), "buyer", "withdrawOffer", {
328
+ status: { from: "pending", to: "withdrawn" },
329
+ }, { actorUid: BUYER_ADMIN }),
330
+ ],
142
331
  },
143
332
  // ── 7. ACCEPTED — Vivaan → Beyblade Arena — Original Dranzer S (pending payment) ──
144
333
  {
@@ -150,36 +339,57 @@ export const offersSeedData = [
150
339
  buyerUid: "user-seto-kaiba",
151
340
  buyerName: "Mock User 2",
152
341
  buyerEmail: "vivaan.kapoor@gmail.com",
153
- listedPrice: 1799,
154
- offerAmount: 1500,
155
- lockedPrice: 1500,
342
+ listedPrice: 1499,
343
+ offerAmount: 1250,
344
+ lockedPrice: 1250,
156
345
  currency: "INR",
157
346
  status: OfferStatusValues.ACCEPTED,
158
- buyerNote: "₹1,500 final offer on the sealed Dranzer S.",
347
+ buyerNote: "₹1,250 final offer on the sealed Dranzer S.",
159
348
  sellerNote: "Accepted! Please complete payment within 24 hours.",
160
349
  expiresAt: daysFromNow(1),
350
+ // Without this the offer is invisible to findExpiredAccepted() and the
351
+ // seller/admin "Buyer must pay by" row never renders — the field is what
352
+ // makes an accepted offer a CLAIM ON A CLOCK rather than an open promise.
353
+ checkoutDeadline: daysFromNow(2),
161
354
  acceptedAt: daysAgo(0),
162
355
  respondedAt: daysAgo(0),
163
356
  createdAt: daysAgo(1),
164
357
  updatedAt: daysAgo(0),
358
+ statusHistory: [
359
+ entry(daysAgo(1), "buyer", "makeOffer", {
360
+ status: { from: null, to: "pending" },
361
+ offerAmount: { from: null, to: 1250 },
362
+ }, { actorUid: BUYER_KAIBA, note: "₹1,250 final offer on the sealed Dranzer S." }),
363
+ entry(daysAgo(0), "seller", "respondToOffer:accept", {
364
+ status: { from: "pending", to: "accepted" },
365
+ lockedPrice: { from: null, to: 1250 },
366
+ checkoutDeadline: { from: null, to: daysFromNow(2) },
367
+ }, { actorUid: STORE, note: "Accepted! Please complete payment within 24 hours." }),
368
+ ],
165
369
  },
166
370
  // ── 8. PENDING — Admin → Beyblade Arena — Metal Lightning L-Drago ───────
167
371
  {
168
- id: "offer-admin-l-drago-pending",
169
- productId: "auction-beyblade-metal-lightning-l-drago",
170
- productTitle: "Beyblade Metal Lightning L-Drago",
372
+ id: "offer-admin-flame-sagittario-pending",
373
+ productId: "product-beyblade-metal-flame-sagittario",
374
+ productTitle: "Beyblade Metal Flame Sagittario",
171
375
  storeId: "store-beyblade-arena",
172
376
  storeName: "Beyblade Arena",
173
377
  buyerUid: "user-admin-letitrip",
174
378
  buyerName: "Mock User 1",
175
379
  buyerEmail: "admin@letitrip.in",
176
- listedPrice: 5200,
177
- offerAmount: 4700,
380
+ listedPrice: 1199,
381
+ offerAmount: 950,
178
382
  currency: "INR",
179
383
  status: OfferStatusValues.PENDING,
180
- buyerNote: "Interested in this piece. Would you accept ₹4,700?",
384
+ buyerNote: "Interested in this piece. Would you accept ₹950?",
181
385
  expiresAt: daysFromNow(3),
182
386
  createdAt: daysAgo(1),
183
387
  updatedAt: daysAgo(1),
388
+ statusHistory: [
389
+ entry(daysAgo(1), "buyer", "makeOffer", {
390
+ status: { from: null, to: "pending" },
391
+ offerAmount: { from: null, to: 950 },
392
+ }, { actorUid: BUYER_ADMIN, note: "Interested in this piece. Would you accept ₹950?" }),
393
+ ],
184
394
  },
185
395
  ];