@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
@@ -24,6 +24,7 @@
24
24
  * @tag consumers:CartRouteClient,CheckoutRouteClient,cart-actions,order-splitter,checkout/actions
25
25
  * @tag sideEffects:none
26
26
  */
27
+ import { ROUTES } from "../../../next/routing/route-map";
27
28
  export const CART_LANE = {
28
29
  AUCTION: "auction",
29
30
  OFFER: "offer",
@@ -72,6 +73,31 @@ export const LANE_CHECKOUT_WINDOW_HOURS = {
72
73
  auction: LANE_CHECKOUT_WINDOW_MS.auction / (60 * 60 * 1000),
73
74
  offer: LANE_CHECKOUT_WINDOW_MS.offer / (60 * 60 * 1000),
74
75
  };
76
+ /**
77
+ * A BUYOUT hold is a third window, deliberately much shorter than the two above,
78
+ * even though it lands in the same auction lane.
79
+ *
80
+ * A settled win (`LANE_CHECKOUT_WINDOW_MS.auction`) is a finished auction: the
81
+ * clock already ran, nobody else is waiting, and 48 hours costs no one anything.
82
+ * A buyout is the opposite — the auction is still live and still taking bids
83
+ * while the hold exists, so a long window would let one buyer sit on a listing
84
+ * they may never pay for. One hour, and the hold is additionally clamped to the
85
+ * auction's own end time by `buyNowAuction` (see `AUCTION_BUYOUT_WINDOW_MS`
86
+ * callers): a buyout that hasn't been paid for by the time the auction ends
87
+ * fails, because by then the auction has settled to whoever actually won it.
88
+ */
89
+ export const AUCTION_BUYOUT_WINDOW_MS = 60 * 60 * 1000;
90
+ /** 1 hour, in minutes — for buyer-facing copy ("pay within 60 minutes"). */
91
+ export const AUCTION_BUYOUT_WINDOW_MINUTES = AUCTION_BUYOUT_WINDOW_MS / (60 * 1000);
92
+ /**
93
+ * Deep link that drops a buyer straight into the auction lane at checkout.
94
+ *
95
+ * Declared once here, with the lane it selects, because it was previously a
96
+ * const in `auctionSettlement.ts` AND an inline template literal in
97
+ * `bid-actions.ts` — the same two-copies problem `LANE_CHECKOUT_WINDOW_MS` was
98
+ * extracted to fix, one layer up.
99
+ */
100
+ export const AUCTION_CHECKOUT_URL = `${String(ROUTES.USER.CHECKOUT)}?lane=${CART_LANE.AUCTION}`;
75
101
  /** The two lanes whose price is fixed outside the listing. */
76
102
  export function isLockedLane(lane) {
77
103
  return lane === CART_LANE.AUCTION || lane === CART_LANE.OFFER;
@@ -49,6 +49,33 @@ export interface ResolveMinBidOptions {
49
49
  * together with `{ hasBids: false }`.
50
50
  */
51
51
  export declare function resolveMinBid(currentBidAmount: number, tiers: BidIncrementTier[], override?: number | null, opts?: ResolveMinBidOptions): number;
52
+ export interface BuyNowAvailabilityInput {
53
+ buyNowPrice: number | null | undefined;
54
+ /** The auction's live visible price. Pass the SSE value client-side. */
55
+ currentBid: number | null | undefined;
56
+ isEnded: boolean;
57
+ isSold?: boolean;
58
+ }
59
+ /**
60
+ * The single definition of "can this auction be bought outright right now".
61
+ *
62
+ * Written once for the same reason `resolveMinBid` is: the predicate had been
63
+ * hand-written in five places (the bid form, three spots on the auction detail
64
+ * page, the marketplace card) and they disagreed — the detail page advertised
65
+ * "Buy Now: ₹5,999" from a two-condition check while the button beneath it used
66
+ * a three-condition one, so most auctions showed a price with no button under
67
+ * it. That is the drift shape Root Cause #30 describes.
68
+ *
69
+ * The old third condition was `!bidsHaveStarted` (eBay's rule: BIN vanishes the
70
+ * moment anyone bids). It is deliberately gone. Buyout now stays available for
71
+ * as long as it is still a better deal than the standing bid, which is the
72
+ * condition that actually matters — a BIN price the bidding has already passed
73
+ * is meaningless, and one it hasn't is still a real offer.
74
+ *
75
+ * `isSold` is optional because client callers rendering a live auction page
76
+ * already know it isn't sold; server callers should always pass it.
77
+ */
78
+ export declare function isBuyNowAvailable({ buyNowPrice, currentBid, isEnded, isSold, }: BuyNowAvailabilityInput): boolean;
52
79
  /**
53
80
  * Preset step multipliers offered by the bid form, as multiples of the
54
81
  * effective minimum increment. With a ₹100 increment this renders
@@ -70,6 +70,33 @@ export function resolveMinBid(currentBidAmount, tiers, override, opts) {
70
70
  return currentBidAmount;
71
71
  return currentBidAmount + resolveMinBidIncrement(currentBidAmount, tiers, override);
72
72
  }
73
+ /**
74
+ * The single definition of "can this auction be bought outright right now".
75
+ *
76
+ * Written once for the same reason `resolveMinBid` is: the predicate had been
77
+ * hand-written in five places (the bid form, three spots on the auction detail
78
+ * page, the marketplace card) and they disagreed — the detail page advertised
79
+ * "Buy Now: ₹5,999" from a two-condition check while the button beneath it used
80
+ * a three-condition one, so most auctions showed a price with no button under
81
+ * it. That is the drift shape Root Cause #30 describes.
82
+ *
83
+ * The old third condition was `!bidsHaveStarted` (eBay's rule: BIN vanishes the
84
+ * moment anyone bids). It is deliberately gone. Buyout now stays available for
85
+ * as long as it is still a better deal than the standing bid, which is the
86
+ * condition that actually matters — a BIN price the bidding has already passed
87
+ * is meaningless, and one it hasn't is still a real offer.
88
+ *
89
+ * `isSold` is optional because client callers rendering a live auction page
90
+ * already know it isn't sold; server callers should always pass it.
91
+ */
92
+ export function isBuyNowAvailable({ buyNowPrice, currentBid, isEnded, isSold, }) {
93
+ if (isEnded || isSold === true)
94
+ return false;
95
+ if (typeof buyNowPrice !== "number" || !Number.isFinite(buyNowPrice) || buyNowPrice <= 0) {
96
+ return false;
97
+ }
98
+ return buyNowPrice > (currentBid ?? 0);
99
+ }
73
100
  /**
74
101
  * Preset step multipliers offered by the bid form, as multiples of the
75
102
  * effective minimum increment. With a ₹100 increment this renders
@@ -1,5 +1,17 @@
1
1
  import { z } from "zod";
2
- export declare const placeBidSchema: z.ZodObject<{
2
+ /**
3
+ * Server-action input for placing a bid.
4
+ *
5
+ * Renamed from `placeBidSchema` 2026-08-24 (W3): a DIFFERENT `placeBidSchema`
6
+ * exists at `features/auctions/schemas/bid-input.ts`, and the two are not
7
+ * variants of one thing — that one is a client FORM factory taking the minimum
8
+ * bid and returning `{ bidAmount }`, this one is the action payload
9
+ * `{ auctionId, amount }`. Same name, different layer, different field names,
10
+ * incompatible shapes. Two same-named exports in one package is a defect even
11
+ * when both are correct, because the choice between them is invisible at the
12
+ * call site (Root Cause #36, one union over).
13
+ */
14
+ export declare const placeBidActionSchema: z.ZodObject<{
3
15
  auctionId: z.ZodString;
4
16
  amount: z.ZodNumber;
5
17
  }, "strip", z.ZodTypeAny, {
@@ -26,5 +38,5 @@ export declare const buyNowSchema: z.ZodObject<{
26
38
  }, {
27
39
  auctionId: string;
28
40
  }>;
29
- export type PlaceBidInput = z.infer<typeof placeBidSchema>;
41
+ export type PlaceBidActionInput = z.infer<typeof placeBidActionSchema>;
30
42
  export type CancelBidInput = z.infer<typeof cancelBidSchema>;
@@ -1,5 +1,17 @@
1
1
  import { z } from "zod";
2
- export const placeBidSchema = z.object({
2
+ /**
3
+ * Server-action input for placing a bid.
4
+ *
5
+ * Renamed from `placeBidSchema` 2026-08-24 (W3): a DIFFERENT `placeBidSchema`
6
+ * exists at `features/auctions/schemas/bid-input.ts`, and the two are not
7
+ * variants of one thing — that one is a client FORM factory taking the minimum
8
+ * bid and returning `{ bidAmount }`, this one is the action payload
9
+ * `{ auctionId, amount }`. Same name, different layer, different field names,
10
+ * incompatible shapes. Two same-named exports in one package is a defect even
11
+ * when both are correct, because the choice between them is invisible at the
12
+ * call site (Root Cause #36, one union over).
13
+ */
14
+ export const placeBidActionSchema = z.object({
3
15
  auctionId: z.string().min(1),
4
16
  amount: z.number().positive("Bid amount must be a positive number"),
5
17
  });
@@ -16,8 +16,8 @@ export declare const blogPostInputSchema: z.ZodObject<{
16
16
  status: "draft" | "published";
17
17
  title: string;
18
18
  content: string;
19
- category: string;
20
19
  slug: string;
20
+ category: string;
21
21
  tags: string[];
22
22
  isFeatured: boolean;
23
23
  youtubeId?: string | undefined;
@@ -28,8 +28,8 @@ export declare const blogPostInputSchema: z.ZodObject<{
28
28
  }, {
29
29
  title: string;
30
30
  content: string;
31
- category: string;
32
31
  slug: string;
32
+ category: string;
33
33
  status?: "draft" | "published" | undefined;
34
34
  youtubeId?: string | undefined;
35
35
  tags?: string[] | undefined;
@@ -8,32 +8,32 @@ export declare const addToCartSchema: z.ZodObject<{
8
8
  storeId: z.ZodString;
9
9
  storeName: z.ZodDefault<z.ZodString>;
10
10
  quantity: z.ZodDefault<z.ZodNumber>;
11
- listingType: z.ZodEnum<["standard", "auction", "pre-order", "prize-draw", "classified", "digital-code", "live"]>;
11
+ listingType: z.ZodEnum<["standard", "auction", "pre-order", "prize-draw", "classified", "digital-code", "live", "art", "stickers"]>;
12
12
  isOffer: z.ZodOptional<z.ZodBoolean>;
13
13
  offerId: z.ZodOptional<z.ZodString>;
14
14
  lockedPrice: z.ZodOptional<z.ZodNumber>;
15
15
  }, "strip", z.ZodTypeAny, {
16
16
  currency: string;
17
17
  storeId: string;
18
- listingType: "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
19
18
  price: number;
20
- storeName: string;
19
+ listingType: "art" | "stickers" | "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
21
20
  productId: string;
22
21
  productTitle: string;
23
22
  quantity: number;
23
+ storeName: string;
24
24
  productImage: string;
25
25
  offerId?: string | undefined;
26
26
  lockedPrice?: number | undefined;
27
27
  isOffer?: boolean | undefined;
28
28
  }, {
29
29
  storeId: string;
30
- listingType: "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
31
30
  price: number;
31
+ listingType: "art" | "stickers" | "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
32
32
  productId: string;
33
33
  productTitle: string;
34
34
  currency?: string | undefined;
35
- storeName?: string | undefined;
36
35
  quantity?: number | undefined;
36
+ storeName?: string | undefined;
37
37
  productImage?: string | undefined;
38
38
  offerId?: string | undefined;
39
39
  lockedPrice?: number | undefined;
@@ -66,32 +66,32 @@ export declare const mergeGuestCartSchema: z.ZodObject<{
66
66
  storeId: z.ZodString;
67
67
  storeName: z.ZodDefault<z.ZodString>;
68
68
  quantity: z.ZodDefault<z.ZodNumber>;
69
- listingType: z.ZodEnum<["standard", "auction", "pre-order", "prize-draw", "classified", "digital-code", "live"]>;
69
+ listingType: z.ZodEnum<["standard", "auction", "pre-order", "prize-draw", "classified", "digital-code", "live", "art", "stickers"]>;
70
70
  isOffer: z.ZodOptional<z.ZodBoolean>;
71
71
  offerId: z.ZodOptional<z.ZodString>;
72
72
  lockedPrice: z.ZodOptional<z.ZodNumber>;
73
73
  }, "strip", z.ZodTypeAny, {
74
74
  currency: string;
75
75
  storeId: string;
76
- listingType: "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
77
76
  price: number;
78
- storeName: string;
77
+ listingType: "art" | "stickers" | "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
79
78
  productId: string;
80
79
  productTitle: string;
81
80
  quantity: number;
81
+ storeName: string;
82
82
  productImage: string;
83
83
  offerId?: string | undefined;
84
84
  lockedPrice?: number | undefined;
85
85
  isOffer?: boolean | undefined;
86
86
  }, {
87
87
  storeId: string;
88
- listingType: "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
89
88
  price: number;
89
+ listingType: "art" | "stickers" | "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
90
90
  productId: string;
91
91
  productTitle: string;
92
92
  currency?: string | undefined;
93
- storeName?: string | undefined;
94
93
  quantity?: number | undefined;
94
+ storeName?: string | undefined;
95
95
  productImage?: string | undefined;
96
96
  offerId?: string | undefined;
97
97
  lockedPrice?: number | undefined;
@@ -101,12 +101,12 @@ export declare const mergeGuestCartSchema: z.ZodObject<{
101
101
  guestItems: {
102
102
  currency: string;
103
103
  storeId: string;
104
- listingType: "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
105
104
  price: number;
106
- storeName: string;
105
+ listingType: "art" | "stickers" | "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
107
106
  productId: string;
108
107
  productTitle: string;
109
108
  quantity: number;
109
+ storeName: string;
110
110
  productImage: string;
111
111
  offerId?: string | undefined;
112
112
  lockedPrice?: number | undefined;
@@ -115,18 +115,23 @@ export declare const mergeGuestCartSchema: z.ZodObject<{
115
115
  }, {
116
116
  guestItems: {
117
117
  storeId: string;
118
- listingType: "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
119
118
  price: number;
119
+ listingType: "art" | "stickers" | "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
120
120
  productId: string;
121
121
  productTitle: string;
122
122
  currency?: string | undefined;
123
- storeName?: string | undefined;
124
123
  quantity?: number | undefined;
124
+ storeName?: string | undefined;
125
125
  productImage?: string | undefined;
126
126
  offerId?: string | undefined;
127
127
  lockedPrice?: number | undefined;
128
128
  isOffer?: boolean | undefined;
129
129
  }[];
130
130
  }>;
131
- export type AddToCartInput = z.infer<typeof addToCartSchema>;
131
+ /**
132
+ * Renamed from `AddToCartInput` 2026-08-24 (W3) — `features/cart/schemas/
133
+ * firestore.ts` declares its own hand-written `AddToCartInput`, and a consumer
134
+ * importing the name had no way to tell which one it got.
135
+ */
136
+ export type AddToCartActionInput = z.infer<typeof addToCartSchema>;
132
137
  export type MergeGuestCartInput = z.infer<typeof mergeGuestCartSchema>;
@@ -10,6 +10,19 @@ const cartItemBaseSchema = z.object({
10
10
  quantity: z.number().int().min(1).max(99).default(1),
11
11
  // SB1-G Phase 4 — canonical listing-kind snapshot.
12
12
  // SB-UNI-D — "bundle" removed from the listing-kind enum.
13
+ /*
14
+ * All NINE listing types. `art` and `stickers` were missing until
15
+ * 2026-08-24 (W3) — added to the union, the plugin registry, the capability
16
+ * map and the Sieve alias map, but not here.
17
+ *
18
+ * Not a live bug today, and verified rather than assumed (Rule #4): the real
19
+ * add-to-cart path is `POST /api/cart`, which takes only {productId,
20
+ * quantity} and derives the type server-side via `normalizeListingType`,
21
+ * never validating it against an enum. This enum sits on paths an art or
22
+ * sticker listing cannot currently reach. It was a trap waiting for the
23
+ * first caller that did — the third instalment of Root Cause #58, where a
24
+ * union member is added everywhere except the one allowlist that gates it.
25
+ */
13
26
  listingType: z.enum([
14
27
  "standard",
15
28
  "auction",
@@ -18,6 +31,8 @@ const cartItemBaseSchema = z.object({
18
31
  "classified",
19
32
  "digital-code",
20
33
  "live",
34
+ "art",
35
+ "stickers",
21
36
  ]),
22
37
  isOffer: z.boolean().optional(),
23
38
  offerId: z.string().optional(),
@@ -26,35 +26,35 @@ export declare const bundleQueryRuleSchema: z.ZodDiscriminatedUnion<"type", [z.Z
26
26
  /** Eligible listing types for a dynamic bundle rule. */
27
27
  listingType: z.ZodOptional<z.ZodEnum<["standard", "pre-order", "prize-draw"]>>;
28
28
  }, "strip", z.ZodTypeAny, {
29
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
29
+ categorySlug?: string | undefined;
30
30
  brandSlug?: string | undefined;
31
31
  tags?: string[] | undefined;
32
- categorySlug?: string | undefined;
33
- }, {
34
32
  listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
33
+ }, {
34
+ categorySlug?: string | undefined;
35
35
  brandSlug?: string | undefined;
36
36
  tags?: string[] | undefined;
37
- categorySlug?: string | undefined;
37
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
38
38
  }>;
39
39
  orderBy: z.ZodOptional<z.ZodEnum<["price-asc", "price-desc", "createdAt-desc"]>>;
40
40
  limit: z.ZodNumber;
41
41
  }, "strip", z.ZodTypeAny, {
42
42
  type: "dynamic";
43
43
  filter: {
44
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
44
+ categorySlug?: string | undefined;
45
45
  brandSlug?: string | undefined;
46
46
  tags?: string[] | undefined;
47
- categorySlug?: string | undefined;
47
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
48
48
  };
49
49
  limit: number;
50
50
  orderBy?: "price-asc" | "price-desc" | "createdAt-desc" | undefined;
51
51
  }, {
52
52
  type: "dynamic";
53
53
  filter: {
54
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
54
+ categorySlug?: string | undefined;
55
55
  brandSlug?: string | undefined;
56
56
  tags?: string[] | undefined;
57
- categorySlug?: string | undefined;
57
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
58
58
  };
59
59
  limit: number;
60
60
  orderBy?: "price-asc" | "price-desc" | "createdAt-desc" | undefined;
@@ -102,35 +102,35 @@ export declare const bundleCreateSchema: z.ZodObject<{
102
102
  /** Eligible listing types for a dynamic bundle rule. */
103
103
  listingType: z.ZodOptional<z.ZodEnum<["standard", "pre-order", "prize-draw"]>>;
104
104
  }, "strip", z.ZodTypeAny, {
105
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
105
+ categorySlug?: string | undefined;
106
106
  brandSlug?: string | undefined;
107
107
  tags?: string[] | undefined;
108
- categorySlug?: string | undefined;
109
- }, {
110
108
  listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
109
+ }, {
110
+ categorySlug?: string | undefined;
111
111
  brandSlug?: string | undefined;
112
112
  tags?: string[] | undefined;
113
- categorySlug?: string | undefined;
113
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
114
114
  }>;
115
115
  orderBy: z.ZodOptional<z.ZodEnum<["price-asc", "price-desc", "createdAt-desc"]>>;
116
116
  limit: z.ZodNumber;
117
117
  }, "strip", z.ZodTypeAny, {
118
118
  type: "dynamic";
119
119
  filter: {
120
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
120
+ categorySlug?: string | undefined;
121
121
  brandSlug?: string | undefined;
122
122
  tags?: string[] | undefined;
123
- categorySlug?: string | undefined;
123
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
124
124
  };
125
125
  limit: number;
126
126
  orderBy?: "price-asc" | "price-desc" | "createdAt-desc" | undefined;
127
127
  }, {
128
128
  type: "dynamic";
129
129
  filter: {
130
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
130
+ categorySlug?: string | undefined;
131
131
  brandSlug?: string | undefined;
132
132
  tags?: string[] | undefined;
133
- categorySlug?: string | undefined;
133
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
134
134
  };
135
135
  limit: number;
136
136
  orderBy?: "price-asc" | "price-desc" | "createdAt-desc" | undefined;
@@ -172,10 +172,10 @@ export declare const bundleCreateSchema: z.ZodObject<{
172
172
  } | {
173
173
  type: "dynamic";
174
174
  filter: {
175
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
175
+ categorySlug?: string | undefined;
176
176
  brandSlug?: string | undefined;
177
177
  tags?: string[] | undefined;
178
- categorySlug?: string | undefined;
178
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
179
179
  };
180
180
  limit: number;
181
181
  orderBy?: "price-asc" | "price-desc" | "createdAt-desc" | undefined;
@@ -204,10 +204,10 @@ export declare const bundleCreateSchema: z.ZodObject<{
204
204
  } | {
205
205
  type: "dynamic";
206
206
  filter: {
207
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
207
+ categorySlug?: string | undefined;
208
208
  brandSlug?: string | undefined;
209
209
  tags?: string[] | undefined;
210
- categorySlug?: string | undefined;
210
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
211
211
  };
212
212
  limit: number;
213
213
  orderBy?: "price-asc" | "price-desc" | "createdAt-desc" | undefined;
@@ -250,35 +250,35 @@ export declare const bundleUpdateSchema: z.ZodObject<{
250
250
  /** Eligible listing types for a dynamic bundle rule. */
251
251
  listingType: z.ZodOptional<z.ZodEnum<["standard", "pre-order", "prize-draw"]>>;
252
252
  }, "strip", z.ZodTypeAny, {
253
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
253
+ categorySlug?: string | undefined;
254
254
  brandSlug?: string | undefined;
255
255
  tags?: string[] | undefined;
256
- categorySlug?: string | undefined;
257
- }, {
258
256
  listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
257
+ }, {
258
+ categorySlug?: string | undefined;
259
259
  brandSlug?: string | undefined;
260
260
  tags?: string[] | undefined;
261
- categorySlug?: string | undefined;
261
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
262
262
  }>;
263
263
  orderBy: z.ZodOptional<z.ZodEnum<["price-asc", "price-desc", "createdAt-desc"]>>;
264
264
  limit: z.ZodNumber;
265
265
  }, "strip", z.ZodTypeAny, {
266
266
  type: "dynamic";
267
267
  filter: {
268
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
268
+ categorySlug?: string | undefined;
269
269
  brandSlug?: string | undefined;
270
270
  tags?: string[] | undefined;
271
- categorySlug?: string | undefined;
271
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
272
272
  };
273
273
  limit: number;
274
274
  orderBy?: "price-asc" | "price-desc" | "createdAt-desc" | undefined;
275
275
  }, {
276
276
  type: "dynamic";
277
277
  filter: {
278
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
278
+ categorySlug?: string | undefined;
279
279
  brandSlug?: string | undefined;
280
280
  tags?: string[] | undefined;
281
- categorySlug?: string | undefined;
281
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
282
282
  };
283
283
  limit: number;
284
284
  orderBy?: "price-asc" | "price-desc" | "createdAt-desc" | undefined;
@@ -331,10 +331,10 @@ export declare const bundleUpdateSchema: z.ZodObject<{
331
331
  } | {
332
332
  type: "dynamic";
333
333
  filter: {
334
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
334
+ categorySlug?: string | undefined;
335
335
  brandSlug?: string | undefined;
336
336
  tags?: string[] | undefined;
337
- categorySlug?: string | undefined;
337
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
338
338
  };
339
339
  limit: number;
340
340
  orderBy?: "price-asc" | "price-desc" | "createdAt-desc" | undefined;
@@ -362,10 +362,10 @@ export declare const bundleUpdateSchema: z.ZodObject<{
362
362
  } | {
363
363
  type: "dynamic";
364
364
  filter: {
365
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
365
+ categorySlug?: string | undefined;
366
366
  brandSlug?: string | undefined;
367
367
  tags?: string[] | undefined;
368
- categorySlug?: string | undefined;
368
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
369
369
  };
370
370
  limit: number;
371
371
  orderBy?: "price-asc" | "price-desc" | "createdAt-desc" | undefined;
@@ -44,13 +44,23 @@ export interface EmiInstallmentPlan {
44
44
  /** Decimal rupees. */
45
45
  amount: number;
46
46
  }
47
- export interface EmiScheduleResult {
47
+ export interface EmiScheduleResult extends BuyerEmiQuote {
48
+ surchargeSellerShare: number;
49
+ surchargePlatformShare: number;
50
+ }
51
+ /**
52
+ * The buyer-visible half of an EMI schedule — everything the checkout UI
53
+ * renders, with the platform/seller surcharge split deliberately absent.
54
+ *
55
+ * This exists so the browser never needs `surchargeSellerSharePercent`, an
56
+ * internal revenue-split figure. `computeEmiSchedule` below adds the split
57
+ * back for the two server-side order-creation callers.
58
+ */
59
+ export interface BuyerEmiQuote {
48
60
  /** Down payment collected at checkout, decimal rupees. */
49
61
  tokenAmount: number;
50
62
  /** Total surcharge across the whole tenure, decimal rupees. */
51
63
  surchargeAmount: number;
52
- surchargeSellerShare: number;
53
- surchargePlatformShare: number;
54
64
  installments: EmiInstallmentPlan[];
55
65
  /** Sum of all installment amounts — what's still owed after the token. */
56
66
  remainingBalance: number;
@@ -60,4 +70,15 @@ export interface EmiScheduleResult {
60
70
  * calendar month AFTER purchase, regardless of which day of the current
61
71
  * month the purchase happens on.
62
72
  */
73
+ export declare function computeBuyerEmiQuote(sellerSubtotal: number, tenureMonths: number, settings: Pick<EmiSettings, "tokenPercent" | "billingDay" | "surchargePercentPerMonth">, purchaseDate?: Date): BuyerEmiQuote;
74
+ /**
75
+ * Server-side schedule — the buyer quote plus the platform/seller surcharge
76
+ * split. Order creation needs the split; the checkout UI does not, and must
77
+ * use `computeBuyerEmiQuote` so `surchargeSellerSharePercent` never has to be
78
+ * shipped to the browser.
79
+ *
80
+ * `surchargeSellerSharePercent` stays REQUIRED here on purpose: defaulting it
81
+ * to 0 would let a server caller that forgot to pass it silently record a zero
82
+ * seller share on a real order.
83
+ */
63
84
  export declare function computeEmiSchedule(sellerSubtotal: number, tenureMonths: number, settings: Pick<EmiSettings, "tokenPercent" | "billingDay" | "surchargePercentPerMonth" | "surchargeSellerSharePercent">, purchaseDate?: Date): EmiScheduleResult;
@@ -35,12 +35,10 @@ export function checkEmiEligibility(sellerSubtotal, sellerEmiEnabled, settings)
35
35
  * calendar month AFTER purchase, regardless of which day of the current
36
36
  * month the purchase happens on.
37
37
  */
38
- export function computeEmiSchedule(sellerSubtotal, tenureMonths, settings, purchaseDate = new Date()) {
38
+ export function computeBuyerEmiQuote(sellerSubtotal, tenureMonths, settings, purchaseDate = new Date()) {
39
39
  const tokenAmount = roundRupees(sellerSubtotal * (settings.tokenPercent / 100));
40
40
  const principalRemaining = sellerSubtotal - tokenAmount;
41
41
  const surchargeAmount = roundRupees(principalRemaining * (settings.surchargePercentPerMonth / 100) * tenureMonths);
42
- const surchargeSellerShare = roundRupees(surchargeAmount * (settings.surchargeSellerSharePercent / 100));
43
- const surchargePlatformShare = roundRupees(surchargeAmount - surchargeSellerShare);
44
42
  const totalToInstall = roundRupees(principalRemaining + surchargeAmount);
45
43
  const baseInstallment = roundRupees(Math.floor((totalToInstall / tenureMonths) * 100) / 100);
46
44
  const remainder = roundRupees(totalToInstall - baseInstallment * tenureMonths);
@@ -55,9 +53,26 @@ export function computeEmiSchedule(sellerSubtotal, tenureMonths, settings, purch
55
53
  return {
56
54
  tokenAmount,
57
55
  surchargeAmount,
58
- surchargeSellerShare,
59
- surchargePlatformShare,
60
56
  installments,
61
57
  remainingBalance: totalToInstall,
62
58
  };
63
59
  }
60
+ /**
61
+ * Server-side schedule — the buyer quote plus the platform/seller surcharge
62
+ * split. Order creation needs the split; the checkout UI does not, and must
63
+ * use `computeBuyerEmiQuote` so `surchargeSellerSharePercent` never has to be
64
+ * shipped to the browser.
65
+ *
66
+ * `surchargeSellerSharePercent` stays REQUIRED here on purpose: defaulting it
67
+ * to 0 would let a server caller that forgot to pass it silently record a zero
68
+ * seller share on a real order.
69
+ */
70
+ export function computeEmiSchedule(sellerSubtotal, tenureMonths, settings, purchaseDate = new Date()) {
71
+ const quote = computeBuyerEmiQuote(sellerSubtotal, tenureMonths, settings, purchaseDate);
72
+ const surchargeSellerShare = roundRupees(quote.surchargeAmount * (settings.surchargeSellerSharePercent / 100));
73
+ return {
74
+ ...quote,
75
+ surchargeSellerShare,
76
+ surchargePlatformShare: roundRupees(quote.surchargeAmount - surchargeSellerShare),
77
+ };
78
+ }
@@ -58,9 +58,9 @@ export declare const eventUpdateSchema: z.ZodObject<Omit<{
58
58
  location?: string | undefined;
59
59
  description?: string | undefined;
60
60
  tags?: string[] | undefined;
61
- maxEntries?: number | undefined;
62
61
  startsAt?: string | undefined;
63
62
  endsAt?: string | undefined;
63
+ maxEntries?: number | undefined;
64
64
  imageUrl?: string | undefined;
65
65
  entryFee?: number | undefined;
66
66
  isOnline?: boolean | undefined;
@@ -70,9 +70,9 @@ export declare const eventUpdateSchema: z.ZodObject<Omit<{
70
70
  location?: string | undefined;
71
71
  description?: string | undefined;
72
72
  tags?: string[] | undefined;
73
- maxEntries?: number | undefined;
74
73
  startsAt?: string | undefined;
75
74
  endsAt?: string | undefined;
75
+ maxEntries?: number | undefined;
76
76
  imageUrl?: string | undefined;
77
77
  entryFee?: number | undefined;
78
78
  isOnline?: boolean | undefined;
@@ -0,0 +1,14 @@
1
+ import type { SectionType } from "../../../../features/homepage/schemas/firestore";
2
+ import type { FeatureFlagKey } from "../../../../features/admin/schemas/firestore";
3
+ /** Section types that require a feature flag to be enabled to show on the homepage. */
4
+ export declare const SECTION_FEATURE_GATE: Partial<Record<SectionType, FeatureFlagKey>>;
5
+ /**
6
+ * Drop sections whose feature flag is off.
7
+ *
8
+ * A section type with no gate entry always passes, and a MISSING flag value
9
+ * counts as enabled (`!== false`) — the flags map is partial, and a section
10
+ * must not vanish just because an admin has never opened Site Settings.
11
+ */
12
+ export declare function filterSectionsByFeatureFlags<T extends {
13
+ type: string;
14
+ }>(sections: readonly T[], flags: Partial<Record<FeatureFlagKey, unknown>> | null | undefined): T[];