@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
package/dist/client.js CHANGED
@@ -178,6 +178,24 @@ export { useUrlTable } from "./react/hooks/useUrlTable";
178
178
  export { useBulkSelection } from "./react/hooks/useBulkSelection";
179
179
  export { useEntityDelete } from "./react/hooks/useEntityDelete";
180
180
  // Client-safe constants, UI primitives, and views
181
+ // Storefront-category form schema — isomorphic (the page parses it client-side,
182
+ // the route parses the same one server-side).
183
+ export { storeCategoryFormSchema, storeCategoryCreateSchema, } from "./features/store-extensions/schemas/store-category-form";
184
+ // Payout-method + listing-template form schemas — isomorphic: the pages parse
185
+ // them client-side and the routes parse the SAME ones server-side.
186
+ export { payoutMethodFormSchema, payoutMethodCreateSchema, payoutMethodUpdateSchema, } from "./features/store-extensions/schemas/payout-method-form";
187
+ export { groupedListingFormSchema, groupedListingCreateSchema, groupedListingUpdateSchema, } from "./features/grouped/schemas/grouped-listing-form";
188
+ export { navItemFormSchema, navItemCreateSchema, navItemUpdateSchema, } from "./features/admin/schemas/nav-item-form";
189
+ export { customRoleFormSchema, customRoleCreateSchema, customRoleUpdateSchema, isKnownPermission, } from "./features/store-extensions/schemas/custom-role-form";
190
+ // Client-only: deliberately NOT added to `features/store-extensions/index.ts`,
191
+ // which the schema registry's import chain reaches — a "use client" React tree
192
+ // re-exported from there would be pulled into every API route (the W4 trap).
193
+ export { SCAMMER_STATUS_LABEL, SCAMMER_STATUS_BADGE, SCAMMER_STATUS_OPTIONS, toScammerStatus, } from "./features/scams/constants/scammer-status-display";
194
+ export { ReviewDecisionModal, } from "./features/store-extensions/components/ReviewDecisionModal";
195
+ export { moderationReviewFormSchema, moderationReviewUpdateSchema, MODERATION_REVIEWER_STATUSES, } from "./features/store-extensions/schemas/moderation-review-form";
196
+ export { reportReviewFormSchema, reportReviewUpdateSchema, REPORT_REVIEWER_STATUSES, REPORT_TERMINAL_STATUSES, } from "./features/store-extensions/schemas/report-review-form";
197
+ export { shippingConfigFormSchema, shippingConfigCreateSchema, shippingConfigUpdateSchema, } from "./features/store-extensions/schemas/shipping-config-form";
198
+ export { listingTemplateFormSchema, listingTemplateCreateSchema, listingTemplateUpdateSchema, } from "./features/store-extensions/schemas/listing-template-form";
181
199
  export { ROUTES, PUBLIC_ROUTES, PROTECTED_ROUTES, AUTH_ROUTES } from "./constants/index";
182
200
  export { SORT_DIR, sortBy } from "./constants/sort";
183
201
  export { SIEVE_OP, sieveFilter, sieveAnd, sieveMultiEq } from "./utils/sieve-builder";
@@ -295,7 +313,6 @@ export { ProductDetailActions } from "./features/products/components/ProductDeta
295
313
  // productFeatures (FI6) — client-safe components + context
296
314
  export { ProductFeaturesProvider, useProductFeatures, } from "./features/products/components/ProductFeaturesContext";
297
315
  export { FeatureBadge, FeatureBadgeList } from "./features/products/components/FeatureBadge";
298
- export { SellerOffersPanel } from "./features/seller/components/SellerOffersPanel";
299
316
  export { UserOffersPanel } from "./features/account/components/UserOffersPanel";
300
317
  export { SellerDashboardView as StoreDashboardView, SellerDashboardView, useSellerDashboard as useStoreDashboard, useSellerDashboard } from "./features/seller/index";
301
318
  export { SellerPayoutSettingsView, SellerShippingView, SellerReviewsView, SellerPayoutRequestView, SellerAnalyticsStats, SellerTopProducts, SellerAnalyticsView, SellerPayoutsView, SellerCouponEditorView, SellerBidsView, SellerAddressesView, SellerPreOrdersView, SellerPrizeDrawsView, PrintCenterView, SellerOffersView, SellerGroupedListingsView, StoreGroupedListingsView, SellerAnalyticsAlertsView, StoreAnalyticsAlertsView, BarcodeField, FulfillmentView } from "./features/seller/components/index";
@@ -307,6 +324,7 @@ export { OrderAddonBadges } from "./features/orders/components/OrderAddonBadges"
307
324
  // Manual-payment (cash / UPI / EMI) shared constants — pure data + predicates,
308
325
  // no server deps. Used by the buyer proof-upload page and order-detail CTAs.
309
326
  export { MANUAL_PAYMENT_METHODS, isManualPaymentMethod, PAYMENT_REVIEW_QUEUE_MODES, isPaymentReviewQueueMode, PAYMENT_WINDOW_MINUTES, } from "./features/orders/constants/payment-window";
327
+ export { ORDER_SCOPE_VALUES, ORDER_SCOPE_TABS, isOrderScope, statusesForScope, mergeOrderScopeFilter, } from "./features/orders/constants/order-scope";
310
328
  export { UserOrderTrackView } from "./features/account/components/UserOrderTrackView";
311
329
  export { useCouponValidate } from "./features/promotions/hooks/useCouponValidate";
312
330
  export { BlogPostView } from "./features/blog/components/BlogPostView";
@@ -368,7 +386,7 @@ export { SellerLiveView } from "./features/seller/components/SellerLiveView";
368
386
  // ── Central schema registry (W1) ──────────────────────────────────────────────
369
387
  // Pure Zod, isomorphic — re-exported here so client code can resolve schemas
370
388
  // without pulling in the full server barrel.
371
- export { SCHEMAS, lookupApiSchema, lookupFirestoreSchema, } from "./schemas/index";
389
+ export { SCHEMAS, lookupApiSchema, lookupFormSchema, lookupFirestoreSchema, } from "./schemas/index";
372
390
  // ── W3 catch-clause normalizer ──────────────────────────────────────────────
373
391
  export { normalizeError, getErrorMessage, isApiNormalized, isAppNormalized, isFirebaseAuthNormalized, isFirebaseFirestoreNormalized, isFirebaseStorageNormalized, isNativeNormalized, isNetworkNormalized, isUnknownNormalized, isZodNormalized, } from "./errors/normalize";
374
392
  // [CLIENT-SAFE] Pure wa.me share-link message builder — imported directly
@@ -376,7 +394,7 @@ export { normalizeError, getErrorMessage, isApiNormalized, isAppNormalized, isFi
376
394
  // never touches the sibling crypto-importing helpers.
377
395
  export { buildPaymentProofReviewMessage } from "./features/whatsapp-bot/helpers/payment-proof-message";
378
396
  export { CommandPalette, useCommandPaletteHotkey } from "./features/shell/index";
379
- export { AdminBlogEditorView, AdminBundleEditorView, AdminCarouselEditorView, AdminCategoryEditorView, AdminCouponEditorView, AdminFaqEditorView, AdminOrderEditorView, AdminPayoutMarkPaidModal, AdminAuditLogView, ViewAuditLogEntryModal, AdminProductEditorView, AdminScammerEditorView, AdminStoreEditorView, AdminSublistingCategoryEditorView, AdminSupportTicketDetailView, } from "./features/admin/index";
397
+ export { AdminBlogEditorView, AdminBundleEditorView, AdminCarouselEditorView, AdminCategoryEditorView, AdminCouponEditorView, AdminFaqEditorView, AdminFeatureEditorView, AdminOrderEditorView, AdminPayoutMarkPaidModal, AdminAuditLogView, ViewAuditLogEntryModal, AdminProductEditorView, AdminScammerEditorView, AdminStoreEditorView, AdminSublistingCategoryEditorView, AdminSupportTicketDetailView, } from "./features/admin/index";
380
398
  export { ADMIN_CHECKOUT_BYPASS_FLAG_KEY } from "./features/admin/schemas/firestore";
381
399
  export { SpinWheelView, EventRaffleEntryForm } from "./features/events/index";
382
400
  export { Card, CardBody } from "./ui/index";
@@ -388,7 +406,7 @@ export { PrizeRevealModal } from "./features/products/components/PrizeRevealModa
388
406
  export { useProduct } from "./features/products/index";
389
407
  export { BUNDLE_COPY } from "./_internal/shared/features/categories/bundle-copy";
390
408
  export { useSiteSettings } from "./core/index";
391
- export { checkEmiEligibility, computeEmiSchedule, } from "./_internal/shared/features/emi/schedule";
409
+ export { checkEmiEligibility, computeEmiSchedule, computeBuyerEmiQuote, } from "./_internal/shared/features/emi/schedule";
392
410
  export { computeCodHandlingFee } from "./_internal/shared/fees/calculator"; // reexport-from-internal-ok: pure fee-calc utility consumed directly by public checkout UI (CheckoutRouteClient.tsx), same category as the sibling computeEmiSchedule/checkEmiEligibility re-export two lines above
393
411
  export { FAQPageContent } from "./features/faq/index";
394
412
  export { CategoryInlineSelect } from "./features/seller/components/CategoryInlineSelect";
@@ -106,6 +106,8 @@ export declare const ADMIN_ENDPOINTS: {
106
106
  readonly REVIEW_BY_ID: (id: string) => string;
107
107
  readonly BIDS: "/api/admin/bids";
108
108
  readonly BID_BY_ID: (id: string) => string;
109
+ readonly OFFERS: "/api/admin/offers";
110
+ readonly OFFER_BY_ID: (id: string) => string;
109
111
  readonly BLOG: "/api/admin/blog";
110
112
  readonly BLOG_BY_ID: (id: string) => string;
111
113
  readonly BUNDLES: "/api/admin/bundles";
@@ -560,6 +562,8 @@ export declare const API_ENDPOINTS: {
560
562
  readonly REVIEW_BY_ID: (id: string) => string;
561
563
  readonly BIDS: "/api/admin/bids";
562
564
  readonly BID_BY_ID: (id: string) => string;
565
+ readonly OFFERS: "/api/admin/offers";
566
+ readonly OFFER_BY_ID: (id: string) => string;
563
567
  readonly BLOG: "/api/admin/blog";
564
568
  readonly BLOG_BY_ID: (id: string) => string;
565
569
  readonly BUNDLES: "/api/admin/bundles";
@@ -1016,6 +1020,8 @@ export declare const API_ROUTES: {
1016
1020
  readonly REVIEW_BY_ID: (id: string) => string;
1017
1021
  readonly BIDS: "/api/admin/bids";
1018
1022
  readonly BID_BY_ID: (id: string) => string;
1023
+ readonly OFFERS: "/api/admin/offers";
1024
+ readonly OFFER_BY_ID: (id: string) => string;
1019
1025
  readonly BLOG: "/api/admin/blog";
1020
1026
  readonly BLOG_BY_ID: (id: string) => string;
1021
1027
  readonly BUNDLES: "/api/admin/bundles";
@@ -133,6 +133,8 @@ export const ADMIN_ENDPOINTS = {
133
133
  REVIEW_BY_ID: (id) => `/api/admin/reviews/${id}`,
134
134
  BIDS: "/api/admin/bids",
135
135
  BID_BY_ID: (id) => `/api/admin/bids/${id}`,
136
+ OFFERS: "/api/admin/offers",
137
+ OFFER_BY_ID: (id) => `/api/admin/offers/${id}`,
136
138
  BLOG: "/api/admin/blog",
137
139
  BLOG_BY_ID: (id) => `/api/admin/blog/${id}`,
138
140
  BUNDLES: "/api/admin/bundles",
@@ -7,6 +7,30 @@
7
7
  *
8
8
  * Consumer app re-exports from "@mohasinac/appkit" — never edit src/constants/field-names.ts directly.
9
9
  */
10
+ /**
11
+ * The three-state scope every listing surface (public browse, store tabs,
12
+ * category/brand panels, admin/seller dashboards) offers as a tab bar.
13
+ *
14
+ * DELIBERATELY NOT a Firestore field. "Unavailable" means different things to
15
+ * different listing types — an auction ENDS, a product SELLS OUT, a prize draw
16
+ * CLOSES, a code pool DEPLETES — so there is no single column to filter on.
17
+ * The per-type meaning lives on each listing-type plugin
18
+ * (`isAvailable` / `unavailableClauses` in `_internal/shared/listing-types/`),
19
+ * and `availabilityTabsFor()` derives the middle tab's label from the plugin's
20
+ * `hideDefault`. Do not add a mirror field to ProductDocument to "simplify"
21
+ * this — a denormalised mirror drifts the first time a write path forgets it
22
+ * (Recurrent Root Cause #42).
23
+ */
24
+ export declare const AVAILABILITY_VALUES: {
25
+ /** Still buyable / biddable / enterable. The default when the param is absent. */
26
+ readonly AVAILABLE: "available";
27
+ /** Sold out, ended, closed, or depleted — the archive. */
28
+ readonly UNAVAILABLE: "unavailable";
29
+ /** No availability predicate at all. The only scope with an exact total. */
30
+ readonly ALL: "all";
31
+ };
32
+ export type AvailabilityFilter = (typeof AVAILABILITY_VALUES)[keyof typeof AVAILABILITY_VALUES];
33
+ export declare function isAvailabilityFilter(value: string): value is AvailabilityFilter;
10
34
  export declare const PRODUCT_FIELDS: {
11
35
  readonly ID: "id";
12
36
  readonly TITLE: "title";
@@ -81,6 +105,16 @@ export declare const PRODUCT_FIELDS: {
81
105
  readonly IS_TEST_DATA: "isTestData";
82
106
  readonly BIDS_HAVE_STARTED: "bidsHaveStarted";
83
107
  readonly PRE_ORDER_CLOSED: "preOrderClosed";
108
+ /**
109
+ * Digital-code pool counters. NESTED under `digitalCode.*` on the document —
110
+ * reading `row.codesAvailable` at the top level silently returns `undefined`
111
+ * for every row, which is exactly the bug the old `isValidRelatedItem`
112
+ * carried. Both paths are allowlisted in the products repository's
113
+ * SIEVE_FIELDS.
114
+ */
115
+ readonly DIGITAL_CODES_AVAILABLE: "digitalCode.codesAvailable";
116
+ readonly DIGITAL_CODE_POOL_SIZE: "digitalCode.codePoolSize";
117
+ readonly DIGITAL_CODE_DELIVERY_METHOD: "digitalCode.codeDeliveryMethod";
84
118
  /**
85
119
  * The Firestore field. NOTE the `Id` suffix: the URL/table key is
86
120
  * `sublistingCategory` (TABLE_KEYS.SUBLISTING_CATEGORY) but the stored field
@@ -117,10 +151,9 @@ export declare const PRODUCT_FIELDS: {
117
151
  readonly WINNER: "winner";
118
152
  };
119
153
  readonly PRE_ORDER_PRODUCTION_STATUS_VALUES: {
154
+ readonly UPCOMING: "upcoming";
120
155
  readonly IN_PRODUCTION: "in_production";
121
- readonly READY: "ready";
122
- readonly DELAYED: "delayed";
123
- readonly CANCELLED: "cancelled";
156
+ readonly READY_TO_SHIP: "ready_to_ship";
124
157
  };
125
158
  readonly PRIZE_REVEAL_STATUS_VALUES: {
126
159
  readonly PENDING: "pending";
@@ -212,9 +245,11 @@ export declare const ORDER_FIELDS: {
212
245
  };
213
246
  readonly PAYMENT_STATUS_VALUES: {
214
247
  readonly PENDING: "pending";
248
+ readonly PROCESSING: "processing";
215
249
  readonly PAID: "paid";
216
250
  readonly FAILED: "failed";
217
251
  readonly REFUNDED: "refunded";
252
+ readonly PARTIAL_REFUND: "partial_refund";
218
253
  };
219
254
  readonly PAYOUT_STATUS_VALUES: {
220
255
  readonly ELIGIBLE: "eligible";
@@ -288,6 +323,8 @@ export declare const BID_FIELDS: {
288
323
  readonly WON: "won";
289
324
  readonly LOST: "lost";
290
325
  readonly CANCELLED: "cancelled";
326
+ /** Won, then the buyer let the payment window lapse. Was missing here. */
327
+ readonly FORFEITED: "forfeited";
291
328
  };
292
329
  };
293
330
  export declare const AD_FIELDS: {
@@ -333,14 +370,25 @@ export declare const EVENT_FIELDS: {
333
370
  readonly ALLOW_GUEST_PARTICIPATION: "allowGuestParticipation";
334
371
  readonly CREATED_AT: "createdAt";
335
372
  readonly UPDATED_AT: "updatedAt";
373
+ /**
374
+ * Mirrors the `EventStatus` union in `features/events/types/index.ts`, which
375
+ * is the source of truth. A `PUBLISHED: "published"` entry lived here until
376
+ * 2026-08-24 — `EventStatus` never had that value, so any filter built from
377
+ * it matched zero rows forever. It had no consumers and was removed; verified
378
+ * by grep before deleting (Root Cause #34).
379
+ */
336
380
  readonly STATUS_VALUES: {
337
381
  readonly DRAFT: "draft";
338
- readonly PUBLISHED: "published";
339
382
  readonly ACTIVE: "active";
383
+ readonly PAUSED: "paused";
340
384
  readonly ENDED: "ended";
341
385
  readonly CANCELLED: "cancelled";
342
- readonly PAUSED: "paused";
343
386
  };
387
+ /**
388
+ * Mirrors the `EventType` union. `LOTTERY` was missing until 2026-08-24,
389
+ * which is why `events-seed-data.ts` had to write `type: "lottery"` as a raw
390
+ * string literal while every other row used this map.
391
+ */
344
392
  readonly TYPE_VALUES: {
345
393
  readonly SALE: "sale";
346
394
  readonly OFFER: "offer";
@@ -349,6 +397,7 @@ export declare const EVENT_FIELDS: {
349
397
  readonly FEEDBACK: "feedback";
350
398
  readonly RAFFLE: "raffle";
351
399
  readonly SPIN_WHEEL: "spin_wheel";
400
+ readonly LOTTERY: "lottery";
352
401
  };
353
402
  readonly RAFFLE_TYPE_VALUES: {
354
403
  readonly OPEN_RAFFLE: "open_raffle";
@@ -397,7 +446,6 @@ export declare const PAYOUT_FIELDS: {
397
446
  readonly PROCESSING: "processing";
398
447
  readonly PAID: "paid";
399
448
  readonly FAILED: "failed";
400
- readonly CANCELLED: "cancelled";
401
449
  };
402
450
  };
403
451
  export declare const STORE_FIELDS: {
@@ -641,9 +689,10 @@ export declare const SCAMMER_FIELDS: {
641
689
  readonly VERIFIED_BY: "verifiedBy";
642
690
  readonly CREATED_AT: "createdAt";
643
691
  readonly STATUS_VALUES: {
644
- readonly PENDING: "pending";
692
+ readonly PENDING_REVIEW: "pending_review";
645
693
  readonly VERIFIED: "verified";
646
694
  readonly REJECTED: "rejected";
695
+ readonly REMOVED: "removed";
647
696
  };
648
697
  };
649
698
  export declare const SUPPORT_TICKET_FIELDS: {
@@ -666,7 +715,6 @@ export declare const SUPPORT_TICKET_FIELDS: {
666
715
  readonly PRIORITY_VALUES: {
667
716
  readonly LOW: "low";
668
717
  readonly NORMAL: "normal";
669
- readonly MEDIUM: "medium";
670
718
  readonly HIGH: "high";
671
719
  readonly URGENT: "urgent";
672
720
  };
@@ -857,6 +905,7 @@ export declare const SITE_SETTINGS_FIELDS: {
857
905
  readonly NOTIFICATIONS: "featureFlags.notifications";
858
906
  readonly SELLER_REGISTRATION: "featureFlags.sellerRegistration";
859
907
  readonly PRE_ORDERS: "featureFlags.preOrders";
908
+ readonly OFFERS: "featureFlags.offers";
860
909
  };
861
910
  readonly LEGAL_PAGES: "legalPages";
862
911
  readonly SHIPPING: "shipping";
@@ -8,6 +8,34 @@
8
8
  * Consumer app re-exports from "@mohasinac/appkit" — never edit src/constants/field-names.ts directly.
9
9
  */
10
10
  // ============================================================================
11
+ // AVAILABILITY SCOPE (not a stored field — a derived listing-surface scope)
12
+ // ============================================================================
13
+ /**
14
+ * The three-state scope every listing surface (public browse, store tabs,
15
+ * category/brand panels, admin/seller dashboards) offers as a tab bar.
16
+ *
17
+ * DELIBERATELY NOT a Firestore field. "Unavailable" means different things to
18
+ * different listing types — an auction ENDS, a product SELLS OUT, a prize draw
19
+ * CLOSES, a code pool DEPLETES — so there is no single column to filter on.
20
+ * The per-type meaning lives on each listing-type plugin
21
+ * (`isAvailable` / `unavailableClauses` in `_internal/shared/listing-types/`),
22
+ * and `availabilityTabsFor()` derives the middle tab's label from the plugin's
23
+ * `hideDefault`. Do not add a mirror field to ProductDocument to "simplify"
24
+ * this — a denormalised mirror drifts the first time a write path forgets it
25
+ * (Recurrent Root Cause #42).
26
+ */
27
+ export const AVAILABILITY_VALUES = {
28
+ /** Still buyable / biddable / enterable. The default when the param is absent. */
29
+ AVAILABLE: "available",
30
+ /** Sold out, ended, closed, or depleted — the archive. */
31
+ UNAVAILABLE: "unavailable",
32
+ /** No availability predicate at all. The only scope with an exact total. */
33
+ ALL: "all",
34
+ };
35
+ export function isAvailabilityFilter(value) {
36
+ return Object.values(AVAILABILITY_VALUES).includes(value);
37
+ }
38
+ // ============================================================================
11
39
  // PRODUCT FIELDS
12
40
  // ============================================================================
13
41
  export const PRODUCT_FIELDS = {
@@ -86,6 +114,16 @@ export const PRODUCT_FIELDS = {
86
114
  IS_TEST_DATA: "isTestData",
87
115
  BIDS_HAVE_STARTED: "bidsHaveStarted",
88
116
  PRE_ORDER_CLOSED: "preOrderClosed",
117
+ /**
118
+ * Digital-code pool counters. NESTED under `digitalCode.*` on the document —
119
+ * reading `row.codesAvailable` at the top level silently returns `undefined`
120
+ * for every row, which is exactly the bug the old `isValidRelatedItem`
121
+ * carried. Both paths are allowlisted in the products repository's
122
+ * SIEVE_FIELDS.
123
+ */
124
+ DIGITAL_CODES_AVAILABLE: "digitalCode.codesAvailable",
125
+ DIGITAL_CODE_POOL_SIZE: "digitalCode.codePoolSize",
126
+ DIGITAL_CODE_DELIVERY_METHOD: "digitalCode.codeDeliveryMethod",
89
127
  /**
90
128
  * The Firestore field. NOTE the `Id` suffix: the URL/table key is
91
129
  * `sublistingCategory` (TABLE_KEYS.SUBLISTING_CATEGORY) but the stored field
@@ -121,11 +159,19 @@ export const PRODUCT_FIELDS = {
121
159
  SELLER: "seller",
122
160
  WINNER: "winner",
123
161
  },
162
+ /*
163
+ * Corrected 2026-08-24 (W3). This block used to read
164
+ * {in_production, ready, delayed, cancelled} — and `ready`, `delayed` and
165
+ * `cancelled` were values no product has ever held. `ProductDocument`
166
+ * declares "upcoming" | "in_production" | "ready_to_ship", the write schema
167
+ * agrees, and all 9 seeded pre-orders store one of those three. It had zero
168
+ * consumers, which is the only reason it never produced a visibly broken
169
+ * filter chip (Recurrent Root Cause #33).
170
+ */
124
171
  PRE_ORDER_PRODUCTION_STATUS_VALUES: {
172
+ UPCOMING: "upcoming",
125
173
  IN_PRODUCTION: "in_production",
126
- READY: "ready",
127
- DELAYED: "delayed",
128
- CANCELLED: "cancelled",
174
+ READY_TO_SHIP: "ready_to_ship",
129
175
  },
130
176
  PRIZE_REVEAL_STATUS_VALUES: {
131
177
  PENDING: "pending",
@@ -223,11 +269,19 @@ export const ORDER_FIELDS = {
223
269
  RETURN_REQUESTED: "return_requested",
224
270
  REFUNDED: "refunded",
225
271
  },
272
+ /*
273
+ * Corrected 2026-08-24 (W3) — `processing` and `partial_refund` were
274
+ * missing, so this listed 4 of the real 6. `PaymentStatus`
275
+ * (features/orders/types/index.ts) is the source; a partial refund is a
276
+ * state real orders reach, and W2 put it on the order timeline.
277
+ */
226
278
  PAYMENT_STATUS_VALUES: {
227
279
  PENDING: "pending",
280
+ PROCESSING: "processing",
228
281
  PAID: "paid",
229
282
  FAILED: "failed",
230
283
  REFUNDED: "refunded",
284
+ PARTIAL_REFUND: "partial_refund",
231
285
  },
232
286
  PAYOUT_STATUS_VALUES: {
233
287
  ELIGIBLE: "eligible",
@@ -301,12 +355,22 @@ export const BID_FIELDS = {
301
355
  AUTO_MAX_BID: "autoMaxBid",
302
356
  CREATED_AT: "createdAt",
303
357
  UPDATED_AT: "updatedAt",
358
+ /*
359
+ * Corrected 2026-08-24 (W3). Verified against the feature's own union AND
360
+ * against what is actually stored. This file is a deliberate LEAF — it
361
+ * imports nothing, and `features/products/types/index.ts` imports IT — so it
362
+ * cannot re-export the feature unions without a cycle. The values are
363
+ * therefore duplicated on purpose, and `audit-field-names-union-parity`
364
+ * blocks them drifting again.
365
+ */
304
366
  STATUS_VALUES: {
305
367
  ACTIVE: "active",
306
368
  OUTBID: "outbid",
307
369
  WON: "won",
308
370
  LOST: "lost",
309
371
  CANCELLED: "cancelled",
372
+ /** Won, then the buyer let the payment window lapse. Was missing here. */
373
+ FORFEITED: "forfeited",
310
374
  },
311
375
  };
312
376
  // ============================================================================
@@ -361,14 +425,25 @@ export const EVENT_FIELDS = {
361
425
  ALLOW_GUEST_PARTICIPATION: "allowGuestParticipation",
362
426
  CREATED_AT: "createdAt",
363
427
  UPDATED_AT: "updatedAt",
428
+ /**
429
+ * Mirrors the `EventStatus` union in `features/events/types/index.ts`, which
430
+ * is the source of truth. A `PUBLISHED: "published"` entry lived here until
431
+ * 2026-08-24 — `EventStatus` never had that value, so any filter built from
432
+ * it matched zero rows forever. It had no consumers and was removed; verified
433
+ * by grep before deleting (Root Cause #34).
434
+ */
364
435
  STATUS_VALUES: {
365
436
  DRAFT: "draft",
366
- PUBLISHED: "published",
367
437
  ACTIVE: "active",
438
+ PAUSED: "paused",
368
439
  ENDED: "ended",
369
440
  CANCELLED: "cancelled",
370
- PAUSED: "paused",
371
441
  },
442
+ /**
443
+ * Mirrors the `EventType` union. `LOTTERY` was missing until 2026-08-24,
444
+ * which is why `events-seed-data.ts` had to write `type: "lottery"` as a raw
445
+ * string literal while every other row used this map.
446
+ */
372
447
  TYPE_VALUES: {
373
448
  SALE: "sale",
374
449
  OFFER: "offer",
@@ -377,6 +452,7 @@ export const EVENT_FIELDS = {
377
452
  FEEDBACK: "feedback",
378
453
  RAFFLE: "raffle",
379
454
  SPIN_WHEEL: "spin_wheel",
455
+ LOTTERY: "lottery",
380
456
  },
381
457
  RAFFLE_TYPE_VALUES: {
382
458
  OPEN_RAFFLE: "open_raffle",
@@ -426,12 +502,17 @@ export const PAYOUT_FIELDS = {
426
502
  STATUS: "status",
427
503
  CREATED_AT: "createdAt",
428
504
  UPDATED_AT: "updatedAt",
505
+ /*
506
+ * Corrected 2026-08-24 (W3) — `cancelled` was listed here and is NOT a
507
+ * member of `PayoutStatus` (features/payments/schemas/firestore.ts:18,
508
+ * pending|processing|paid|failed). A chip or badge keyed on it could only
509
+ * ever match zero rows (Recurrent Root Cause #33).
510
+ */
429
511
  STATUS_VALUES: {
430
512
  PENDING: "pending",
431
513
  PROCESSING: "processing",
432
514
  PAID: "paid",
433
515
  FAILED: "failed",
434
- CANCELLED: "cancelled",
435
516
  },
436
517
  };
437
518
  // ============================================================================
@@ -721,10 +802,17 @@ export const SCAMMER_FIELDS = {
721
802
  REPORTED_BY: "reportedBy",
722
803
  VERIFIED_BY: "verifiedBy",
723
804
  CREATED_AT: "createdAt",
805
+ /*
806
+ * Corrected 2026-08-24 (W3). Two defects: the real stored value is
807
+ * `pending_review`, not `pending` (the seeded scammer profile stores
808
+ * `pending_review`), and `removed` was missing entirely. Already flagged in
809
+ * CLAUDE.md's Root Cause #34 and never actioned.
810
+ */
724
811
  STATUS_VALUES: {
725
- PENDING: "pending",
812
+ PENDING_REVIEW: "pending_review",
726
813
  VERIFIED: "verified",
727
814
  REJECTED: "rejected",
815
+ REMOVED: "removed",
728
816
  },
729
817
  };
730
818
  // ============================================================================
@@ -747,10 +835,14 @@ export const SUPPORT_TICKET_FIELDS = {
747
835
  RESOLVED: "resolved",
748
836
  CLOSED: "closed",
749
837
  },
838
+ /*
839
+ * Corrected 2026-08-24 (W3) — `medium` is not a member of
840
+ * `TicketPriorityValues` (low|normal|high|urgent). `normal` is the
841
+ * middle value.
842
+ */
750
843
  PRIORITY_VALUES: {
751
844
  LOW: "low",
752
845
  NORMAL: "normal",
753
- MEDIUM: "medium",
754
846
  HIGH: "high",
755
847
  URGENT: "urgent",
756
848
  },
@@ -956,6 +1048,7 @@ export const SITE_SETTINGS_FIELDS = {
956
1048
  NOTIFICATIONS: "featureFlags.notifications",
957
1049
  SELLER_REGISTRATION: "featureFlags.sellerRegistration",
958
1050
  PRE_ORDERS: "featureFlags.preOrders",
1051
+ OFFERS: "featureFlags.offers",
959
1052
  },
960
1053
  LEGAL_PAGES: "legalPages",
961
1054
  SHIPPING: "shipping",
@@ -5,6 +5,8 @@ export declare const TABLE_KEYS: {
5
5
  readonly PAGE: "page";
6
6
  readonly PAGE_SIZE: "pageSize";
7
7
  readonly TAB: "tab";
8
+ /** Open section(s) of a `<SectionForm>`. Non-resetting — see NON_RESETTING_KEYS. */
9
+ readonly SECTION: "section";
8
10
  readonly QUERY: "q";
9
11
  readonly STATUS: "status";
10
12
  readonly CATEGORY: "category";
@@ -17,6 +19,21 @@ export declare const TABLE_KEYS: {
17
19
  readonly TAGS: "tags";
18
20
  readonly DATE_FROM: "dateFrom";
19
21
  readonly DATE_TO: "dateTo";
22
+ /**
23
+ * Three-state availability tab on every listing surface, public and
24
+ * dashboard: "available" (default) | "unavailable" | "all". Replaces the
25
+ * SHOW_SOLD/SHOW_ENDED/SHOW_CLOSED toggle trio below, which widened the
26
+ * list instead of scoping it and had three spellings of one intent.
27
+ */
28
+ readonly AVAILABILITY: "availability";
29
+ /** Order lifecycle scope tab: "active" | "closed" | "all". */
30
+ readonly ORDER_SCOPE: "orderScope";
31
+ /**
32
+ * Superseded by AVAILABILITY. Retained ONLY so `readAvailability()` can map
33
+ * bookmarked `?showSold=true` URLs onto `availability=all`, and because the
34
+ * seller auction/prize-draw dashboards still read them during migration.
35
+ * Never write these from new code.
36
+ */
20
37
  readonly SHOW_SOLD: "showSold";
21
38
  readonly SHOW_ENDED: "showEnded";
22
39
  readonly SHOW_CLOSED: "showClosed";
@@ -5,6 +5,8 @@ export const TABLE_KEYS = {
5
5
  PAGE: "page",
6
6
  PAGE_SIZE: "pageSize",
7
7
  TAB: "tab",
8
+ /** Open section(s) of a `<SectionForm>`. Non-resetting — see NON_RESETTING_KEYS. */
9
+ SECTION: "section",
8
10
  QUERY: "q",
9
11
  STATUS: "status",
10
12
  CATEGORY: "category",
@@ -17,6 +19,21 @@ export const TABLE_KEYS = {
17
19
  TAGS: "tags",
18
20
  DATE_FROM: "dateFrom",
19
21
  DATE_TO: "dateTo",
22
+ /**
23
+ * Three-state availability tab on every listing surface, public and
24
+ * dashboard: "available" (default) | "unavailable" | "all". Replaces the
25
+ * SHOW_SOLD/SHOW_ENDED/SHOW_CLOSED toggle trio below, which widened the
26
+ * list instead of scoping it and had three spellings of one intent.
27
+ */
28
+ AVAILABILITY: "availability",
29
+ /** Order lifecycle scope tab: "active" | "closed" | "all". */
30
+ ORDER_SCOPE: "orderScope",
31
+ /**
32
+ * Superseded by AVAILABILITY. Retained ONLY so `readAvailability()` can map
33
+ * bookmarked `?showSold=true` URLs onto `availability=all`, and because the
34
+ * seller auction/prize-draw dashboards still read them during migration.
35
+ * Never write these from new code.
36
+ */
20
37
  SHOW_SOLD: "showSold",
21
38
  SHOW_ENDED: "showEnded",
22
39
  SHOW_CLOSED: "showClosed",
@@ -6,9 +6,21 @@ export declare const BID_ERROR_CODES: {
6
6
  readonly INCREMENT_VIOLATED: "BID_INCREMENT_TOO_LOW";
7
7
  readonly SELF_BID: "BID_SELF_BID";
8
8
  readonly USER_BANNED: "BID_USER_BANNED";
9
+ /**
10
+ * The buyout price is no longer better than the standing bid. Replaced
11
+ * `BUY_NOW_BIDS_STARTED` (deleted 2026-08-24), which fired the instant anyone
12
+ * bid at all — that eBay rule hid Buy Now on nearly every live auction.
13
+ */
9
14
  readonly BUY_NOW_UNAVAILABLE: "BID_BUY_NOW_UNAVAILABLE";
10
- readonly BUY_NOW_BIDS_STARTED: "BID_BUY_NOW_BIDS_STARTED";
11
15
  readonly BUY_NOW_NO_PRICE: "BID_BUY_NOW_NO_PRICE";
16
+ /** The buyout hold expired (or was cancelled) before checkout completed. */
17
+ readonly BUYOUT_LAPSED: "BID_BUYOUT_LAPSED";
18
+ /** Bidding passed the buyout price while the buyer was in checkout. */
19
+ readonly BUYOUT_OUTBID: "BID_BUYOUT_OUTBID";
20
+ /** Another buyer's buyout claimed the auction first. */
21
+ readonly AUCTION_ALREADY_SOLD: "BID_AUCTION_ALREADY_SOLD";
22
+ /** The auction's clock ran out mid-checkout, so it settled to a real bidder. */
23
+ readonly AUCTION_ENDED_BEFORE_CHECKOUT: "BID_AUCTION_ENDED_BEFORE_CHECKOUT";
12
24
  };
13
25
  export declare const OFFER_ERROR_CODES: {
14
26
  readonly DISABLED: "OFFER_DISABLED";
@@ -6,9 +6,21 @@ export const BID_ERROR_CODES = {
6
6
  INCREMENT_VIOLATED: "BID_INCREMENT_TOO_LOW",
7
7
  SELF_BID: "BID_SELF_BID",
8
8
  USER_BANNED: "BID_USER_BANNED",
9
+ /**
10
+ * The buyout price is no longer better than the standing bid. Replaced
11
+ * `BUY_NOW_BIDS_STARTED` (deleted 2026-08-24), which fired the instant anyone
12
+ * bid at all — that eBay rule hid Buy Now on nearly every live auction.
13
+ */
9
14
  BUY_NOW_UNAVAILABLE: "BID_BUY_NOW_UNAVAILABLE",
10
- BUY_NOW_BIDS_STARTED: "BID_BUY_NOW_BIDS_STARTED",
11
15
  BUY_NOW_NO_PRICE: "BID_BUY_NOW_NO_PRICE",
16
+ /** The buyout hold expired (or was cancelled) before checkout completed. */
17
+ BUYOUT_LAPSED: "BID_BUYOUT_LAPSED",
18
+ /** Bidding passed the buyout price while the buyer was in checkout. */
19
+ BUYOUT_OUTBID: "BID_BUYOUT_OUTBID",
20
+ /** Another buyer's buyout claimed the auction first. */
21
+ AUCTION_ALREADY_SOLD: "BID_AUCTION_ALREADY_SOLD",
22
+ /** The auction's clock ran out mid-checkout, so it settled to a real bidder. */
23
+ AUCTION_ENDED_BEFORE_CHECKOUT: "BID_AUCTION_ENDED_BEFORE_CHECKOUT",
12
24
  };
13
25
  export const OFFER_ERROR_CODES = {
14
26
  DISABLED: "OFFER_DISABLED",
@@ -137,12 +137,21 @@ export const ERROR_DISPLAY_MAP = {
137
137
  [BID_ERROR_CODES.BUY_NOW_UNAVAILABLE]: {
138
138
  messageKey: k(BID_ERROR_CODES.BUY_NOW_UNAVAILABLE),
139
139
  },
140
- [BID_ERROR_CODES.BUY_NOW_BIDS_STARTED]: {
141
- messageKey: k(BID_ERROR_CODES.BUY_NOW_BIDS_STARTED),
142
- },
143
140
  [BID_ERROR_CODES.BUY_NOW_NO_PRICE]: {
144
141
  messageKey: k(BID_ERROR_CODES.BUY_NOW_NO_PRICE),
145
142
  },
143
+ [BID_ERROR_CODES.BUYOUT_LAPSED]: {
144
+ messageKey: k(BID_ERROR_CODES.BUYOUT_LAPSED),
145
+ },
146
+ [BID_ERROR_CODES.BUYOUT_OUTBID]: {
147
+ messageKey: k(BID_ERROR_CODES.BUYOUT_OUTBID),
148
+ },
149
+ [BID_ERROR_CODES.AUCTION_ALREADY_SOLD]: {
150
+ messageKey: k(BID_ERROR_CODES.AUCTION_ALREADY_SOLD),
151
+ },
152
+ [BID_ERROR_CODES.AUCTION_ENDED_BEFORE_CHECKOUT]: {
153
+ messageKey: k(BID_ERROR_CODES.AUCTION_ENDED_BEFORE_CHECKOUT),
154
+ },
146
155
  // ---------- Offers ----------
147
156
  [OFFER_ERROR_CODES.DISABLED]: { messageKey: k(OFFER_ERROR_CODES.DISABLED) },
148
157
  [OFFER_ERROR_CODES.PRICE_TOO_LOW]: {
@@ -347,9 +347,12 @@ export declare const ERROR_MESSAGES: {
347
347
  readonly BID_TOO_LOW: "Your bid must be higher than the current bid";
348
348
  readonly INCREMENT_TOO_LOW: "Your bid does not meet the minimum increment requirement";
349
349
  readonly OWN_AUCTION: "You cannot bid on your own auction";
350
- readonly BUY_NOW_UNAVAILABLE: "Buy Now is not available for this auction";
351
- readonly BUY_NOW_BIDS_STARTED: "Buy Now is no longer available — bids have already been placed";
350
+ readonly BUY_NOW_UNAVAILABLE: "Buy Now is unavailable — bidding has already passed the Buy Now price";
352
351
  readonly BUY_NOW_NO_PRICE: "This auction does not have a Buy Now price";
352
+ readonly BUYOUT_LAPSED: "Your Buy Now claim expired. Head back to the auction to bid or try again.";
353
+ readonly BUYOUT_OUTBID: "Bidding passed the Buy Now price while you were checking out, so this purchase can no longer go through.";
354
+ readonly AUCTION_ALREADY_SOLD: "Another buyer completed their purchase first, so this auction is already sold.";
355
+ readonly AUCTION_ENDED_BEFORE_CHECKOUT: "The auction ended before you completed payment, so it went to the winning bidder.";
353
356
  };
354
357
  readonly CONTACT: {
355
358
  readonly SEND_FAILED: "Failed to send your message. Please try again.";
@@ -424,6 +427,11 @@ export declare const ERROR_MESSAGES: {
424
427
  readonly INVALID_STATUS_TRANSITION: "This status transition is not allowed";
425
428
  };
426
429
  readonly OFFER: {
430
+ /**
431
+ * The site-wide `featureFlags.offers` kill switch is off. Existing offers
432
+ * can still be responded to and paid for — only new ones are refused.
433
+ */
434
+ readonly DISABLED: "Offers are currently turned off across the site.";
427
435
  readonly LIMIT_REACHED: "You have reached the maximum of 3 offers for this product. Wait for the seller to update the listing.";
428
436
  readonly COUNTER_RANGE: "Your counter must be within 20% of the seller's counter price.";
429
437
  readonly NOT_COUNTERED: "There is no seller counter to respond to.";