@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
@@ -3,11 +3,11 @@
3
3
  * with "art" — both printed-only physical goods. Previously left as an empty stub,
4
4
  * but sticker sheets fit the Beyblade theme naturally (see CLAUDE.md seed-data
5
5
  * blandness sweep, 2026-08-20 session).
6
- * WHAT: Exports 5 Beyblade sticker-sheet listings on Beyblade Arena, varying size,
6
+ * WHAT: Exports 6 Beyblade sticker-sheet listings on Beyblade Arena, varying size,
7
7
  * material, and finish (including a holographic variant and a die-cut vinyl set).
8
8
  *
9
9
  * EXPORTS:
10
- * productsStickersSeedData — Array of 5 Partial<ProductDocument> with listingType:"stickers"
10
+ * productsStickersSeedData — Array of 6 Partial<ProductDocument> with listingType:"stickers"
11
11
  *
12
12
  * @tag domain:products,stickers
13
13
  * @tag layer:seed
@@ -25,8 +25,8 @@ export const productsStickersSeedData = [
25
25
  slug: "stickers-beyblade-original-classic-sheet",
26
26
  title: "Beyblade Original Classic — Sticker Sheet",
27
27
  description: "A 5x5 cm sticker sheet featuring Dranzer, Driger, Draciel, and Dragoon in classic original-series art style.",
28
- categorySlugs: ["category-beyblade-original", "category-spinning-tops"],
29
- categoryNames: ["Beyblade Original", "Spinning Tops"],
28
+ categorySlugs: ["category-original-plastic-gen", "category-original-tops", "category-beyblade-original", "category-spinning-tops"],
29
+ categoryNames: ["Plastic Generation", "Original Tops", "Beyblade Original", "Spinning Tops"],
30
30
  brandSlug: "brand-beyblade",
31
31
  brand: "Beyblade",
32
32
  price: 149,
@@ -57,8 +57,8 @@ export const productsStickersSeedData = [
57
57
  slug: "stickers-beyblade-x-holographic-pack",
58
58
  title: "Beyblade X Holographic Sticker Pack",
59
59
  description: "A holographic-finish sticker pack featuring the current Beyblade X lineup — catches the light with a rainbow shimmer.",
60
- categorySlugs: ["category-beyblade-x", "category-spinning-tops"],
61
- categoryNames: ["Beyblade X", "Spinning Tops"],
60
+ categorySlugs: ["category-x-starters", "category-x-tops", "category-beyblade-x", "category-spinning-tops"],
61
+ categoryNames: ["Starter Sets", "Beyblade X Tops", "Beyblade X", "Spinning Tops"],
62
62
  brandSlug: "brand-takara-tomy",
63
63
  brand: "Takara-Tomy",
64
64
  price: 199,
@@ -92,8 +92,8 @@ export const productsStickersSeedData = [
92
92
  slug: "stickers-beyblade-burst-diecut-set",
93
93
  title: "Beyblade Burst Die-Cut Sticker Set (6-Pack)",
94
94
  description: "Individually die-cut vinyl stickers of 6 fan-favorite Burst tops — no background, clean edges, weatherproof.",
95
- categorySlugs: ["category-beyblade-burst", "category-spinning-tops"],
96
- categoryNames: ["Beyblade Burst", "Spinning Tops"],
95
+ categorySlugs: ["category-burst-classic", "category-burst-tops", "category-beyblade-burst", "category-spinning-tops"],
96
+ categoryNames: ["Burst Classic", "Burst Tops", "Beyblade Burst", "Spinning Tops"],
97
97
  brandSlug: "brand-beyblade",
98
98
  brand: "Beyblade",
99
99
  price: 249,
@@ -124,8 +124,8 @@ export const productsStickersSeedData = [
124
124
  slug: "stickers-beyblade-metal-retro-sheet",
125
125
  title: "Metal Fight Retro Sticker Sheet — Limited /500",
126
126
  description: "A limited-edition retro-styled sticker sheet celebrating Metal Fight favorites, numbered out of 500.",
127
- categorySlugs: ["category-beyblade-metal", "category-spinning-tops"],
128
- categoryNames: ["Beyblade Metal Fight", "Spinning Tops"],
127
+ categorySlugs: ["category-metal-masters", "category-metal-tops", "category-beyblade-metal", "category-spinning-tops"],
128
+ categoryNames: ["Metal Masters", "Metal Fight Tops", "Beyblade Metal Fight", "Spinning Tops"],
129
129
  brandSlug: "brand-takara-tomy",
130
130
  brand: "Takara-Tomy",
131
131
  price: 179,
@@ -156,8 +156,8 @@ export const productsStickersSeedData = [
156
156
  slug: "stickers-beyblade-x-glow-in-dark",
157
157
  title: "Beyblade X Glow-in-the-Dark Sticker Pack",
158
158
  description: "Charge these stickers under light and watch the Beyblade X logos glow in the dark. Great for stadium cases and water bottles.",
159
- categorySlugs: ["category-beyblade-x", "category-spinning-tops"],
160
- categoryNames: ["Beyblade X", "Spinning Tops"],
159
+ categorySlugs: ["category-x-boosters", "category-x-tops", "category-beyblade-x", "category-spinning-tops"],
160
+ categoryNames: ["Boosters", "Beyblade X Tops", "Beyblade X", "Spinning Tops"],
161
161
  brandSlug: "brand-takara-tomy",
162
162
  brand: "Takara-Tomy",
163
163
  price: 229,
@@ -186,4 +186,39 @@ export const productsStickersSeedData = [
186
186
  updatedAt: new Date("2026-08-19"),
187
187
  searchTokens: buildSearchTokens("Beyblade X Glow-in-the-Dark Sticker Pack", "Charge under light and watch the Beyblade X logos glow in the dark.", "Takara-Tomy", "brand-takara-tomy", ["Beyblade X", "Spinning Tops"], ["stickers"]),
188
188
  },
189
+ {
190
+ // Sold-out fixture — see the art file's equivalent for the shape rationale.
191
+ id: "sticker-beyblade-metal-fight-sold-out",
192
+ slug: "sticker-beyblade-metal-fight-sold-out",
193
+ title: "Beyblade Metal Fight Sticker Sheet (Sold Out)",
194
+ description: "The original Metal Fight sticker sheet run, now fully sold out. Restock TBD.",
195
+ categorySlugs: ["category-metal-fury", "category-metal-tops", "category-beyblade-metal", "category-spinning-tops"],
196
+ categoryNames: ["Metal Fury", "Metal Fight Tops", "Beyblade Metal Fight", "Spinning Tops"],
197
+ brandSlug: "brand-beyblade",
198
+ brand: "Beyblade",
199
+ price: 199,
200
+ currency: "INR",
201
+ stockQuantity: 0,
202
+ availableQuantity: 0,
203
+ isSold: true,
204
+ mainImage: seedExtMedia("https://picsum.photos/seed/sticker-image-metal-fight-sold-out-1-20260824/900/900"),
205
+ images: [
206
+ seedExtMedia("https://picsum.photos/seed/sticker-image-metal-fight-sold-out-1-20260824/900/900"),
207
+ ],
208
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
209
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
210
+ listingType: "stickers",
211
+ storeId: "store-beyblade-arena",
212
+ storeName: "Beyblade Arena",
213
+ printMeta: { size: "10x15 cm sheet", material: "Matte vinyl", finish: "Matte" },
214
+ customFields: [],
215
+ customSections: [],
216
+ featured: false,
217
+ isPromoted: false,
218
+ isOnSale: false,
219
+ tags: ["stickers", "sold-out"],
220
+ createdAt: new Date("2026-08-24"),
221
+ updatedAt: new Date("2026-08-24"),
222
+ searchTokens: buildSearchTokens("Beyblade Metal Fight Sticker Sheet (Sold Out)", "The original Metal Fight sticker sheet run, now fully sold out.", "Beyblade", "brand-beyblade", ["Beyblade Metal", "Spinning Tops"], ["stickers", "sold-out"]),
223
+ },
189
224
  ];
@@ -111,7 +111,12 @@ for (let i = 0; i < 65; i++) {
111
111
  : undefined,
112
112
  verified: i % 3 !== 2,
113
113
  status: "approved",
114
- helpfulCount: Math.floor(Math.random() * 20),
114
+ // Derived from the loop index, not Math.random(): a seed file is
115
+ // re-executed top-to-bottom on every CLI invocation, so a random value
116
+ // rewrites this field on every reseed and makes `appkit-seed status` diffs
117
+ // permanently noisy (Root Cause #25). The file's own header already claimed
118
+ // "no Math.random()" — this was the one place it wasn't true.
119
+ helpfulCount: (i * 7) % 20,
115
120
  reportCount: 0,
116
121
  sellerReply: hasSellerReply ? sellerReplies[Math.floor(i / 4) % sellerReplies.length] : undefined,
117
122
  sellerRepliedAt: hasSellerReply ? daysAgo(daysAgoCreated - 2) : undefined,
@@ -1,39 +1,2 @@
1
1
  import type { SiteSettingsDocument } from "../features/admin/schemas";
2
- export declare const siteSettingsSeedData: Partial<SiteSettingsDocument> & {
3
- adSettings: {
4
- consentRequired: boolean;
5
- placements: readonly {
6
- id: string;
7
- label: string;
8
- enabled: boolean;
9
- reservedHeight: number;
10
- }[];
11
- providerCredentials: {
12
- adsenseClientId: string;
13
- thirdPartyScriptUrl: string;
14
- };
15
- inventory: {
16
- id: string;
17
- name: string;
18
- provider: "manual" | "adsense" | "thirdParty";
19
- status: "draft" | "active" | "scheduled" | "paused";
20
- placementIds: string[];
21
- requiresConsent: boolean;
22
- priority: number;
23
- startAt?: string;
24
- endAt?: string;
25
- createdAt: string;
26
- updatedAt: string;
27
- updatedBy: string;
28
- creative: {
29
- title?: string;
30
- body?: string;
31
- imageUrl?: string;
32
- ctaLabel?: string;
33
- ctaHref?: string;
34
- adsenseSlot?: string;
35
- thirdPartyUrl?: string;
36
- };
37
- }[];
38
- };
39
- };
2
+ export declare const siteSettingsSeedData: Partial<SiteSettingsDocument>;
@@ -47,9 +47,15 @@ export const siteSettingsSeedData = {
47
47
  id: "global",
48
48
  siteName: "LetItRip",
49
49
  motto: "India's Marketplace for Collectibles — Action Figures, Trading Cards, Spinning Tops & More",
50
+ // `message` is the canonical field — `AnnouncementBar` and the homepage read
51
+ // it. The main admin editor used to save this copy under `text`, which no
52
+ // renderer has ever read, so admin-authored announcements saved and then
53
+ // never appeared (fixed 2026-08-24). `link` is seeded because it only became
54
+ // a rendered field in that same fix — without a fixture nothing exercises it.
50
55
  announcementBar: {
51
56
  enabled: true,
52
57
  message: "🎉 Up to 25% off select listings + free shipping on orders above ₹999 — See Events for codes",
58
+ link: "/events",
53
59
  },
54
60
  watermark: {
55
61
  type: "text",
@@ -259,83 +265,29 @@ export const siteSettingsSeedData = {
259
265
  enabled: true,
260
266
  },
261
267
  ],
268
+ // Every key here is an ADMIN OVERRIDE, and an empty string is the correct
269
+ // default: `PolicyPageView` falls back to the i18n `sections[]` content for
270
+ // that page whenever the value is empty, and every one of these pages already
271
+ // ships full copy in `messages/en.json`.
272
+ //
273
+ // Two hard constraints, both learned the hard way (2026-08-24):
274
+ // 1. The value must be raw HTML. `PolicyPageView` injects it with
275
+ // `dangerouslySetInnerHTML`, and the admin Legal tab edits it as a plain
276
+ // HTML textarea. This block previously held TipTap `JSON.stringify({...})`
277
+ // documents, so the one key that DID match a real reader (`refundPolicy`)
278
+ // rendered a wall of raw JSON on /refund-policy in production.
279
+ // 2. The key names must match `POLICY_META[*].firestoreField` in
280
+ // `features/about/components/PolicyPageView.tsx`. The other three keys here
281
+ // were `termsOfService`/`privacyPolicy`/`shippingPolicy` — names no reader
282
+ // or writer has ever used, so they were silently inert.
262
283
  legalPages: {
263
- termsOfService: JSON.stringify({
264
- type: "doc",
265
- content: [
266
- {
267
- type: "heading",
268
- attrs: { level: 1 },
269
- content: [{ type: "text", text: "Terms of Service" }],
270
- },
271
- {
272
- type: "paragraph",
273
- content: [
274
- {
275
- type: "text",
276
- text: "Welcome to LetItRip. By accessing our platform, you agree to these terms...",
277
- },
278
- ],
279
- },
280
- ],
281
- }),
282
- privacyPolicy: JSON.stringify({
283
- type: "doc",
284
- content: [
285
- {
286
- type: "heading",
287
- attrs: { level: 1 },
288
- content: [{ type: "text", text: "Privacy Policy" }],
289
- },
290
- {
291
- type: "paragraph",
292
- content: [
293
- {
294
- type: "text",
295
- text: "Your privacy is important to us. This policy describes how we collect and use your data...",
296
- },
297
- ],
298
- },
299
- ],
300
- }),
301
- refundPolicy: JSON.stringify({
302
- type: "doc",
303
- content: [
304
- {
305
- type: "heading",
306
- attrs: { level: 1 },
307
- content: [{ type: "text", text: "Refund Policy" }],
308
- },
309
- {
310
- type: "paragraph",
311
- content: [
312
- {
313
- type: "text",
314
- text: "We offer a 7-day return and refund policy on most products. Items must be in original condition...",
315
- },
316
- ],
317
- },
318
- ],
319
- }),
320
- shippingPolicy: JSON.stringify({
321
- type: "doc",
322
- content: [
323
- {
324
- type: "heading",
325
- attrs: { level: 1 },
326
- content: [{ type: "text", text: "Shipping Policy" }],
327
- },
328
- {
329
- type: "paragraph",
330
- content: [
331
- {
332
- type: "text",
333
- text: "We offer free shipping on orders above ₹999. Standard delivery takes 3-7 business days...",
334
- },
335
- ],
336
- },
337
- ],
338
- }),
284
+ terms: "",
285
+ privacy: "",
286
+ cookies: "",
287
+ refundPolicy: "",
288
+ shipping: "",
289
+ ethics: "",
290
+ codeOfConduct: "",
339
291
  },
340
292
  shipping: {
341
293
  estimatedDays: 7,
@@ -499,6 +451,7 @@ export const siteSettingsSeedData = {
499
451
  notifications: true,
500
452
  sellerRegistration: true,
501
453
  preOrders: true,
454
+ offers: true,
502
455
  adminCheckoutBypass: false,
503
456
  listingTypes: {
504
457
  standard: true,
@@ -553,6 +506,15 @@ export const siteSettingsSeedData = {
553
506
  tiktokAccessToken: "tiktok_access_token_PLACEHOLDER",
554
507
  deviantartClientId: "deviantart_client_id_PLACEHOLDER",
555
508
  deviantartClientSecret: "deviantart_client_secret_PLACEHOLDER",
509
+ // Google Places — billed API. Left EMPTY for the same reason as the Meta
510
+ // secrets above: `/api/social-feed/google-reviews` and
511
+ // `GoogleReviewsSection` read these directly and would treat a
512
+ // `*_PLACEHOLDER` string as a usable key, producing a failed billed call
513
+ // instead of cleanly skipping. Editable at Admin → Site Settings →
514
+ // Integrations (inputs added 2026-08-24 — both fields were consumed by the
515
+ // Google Reviews section but had no UI, so they could never be set).
516
+ googleMapsApiKey: "",
517
+ googlePlaceId: "",
556
518
  },
557
519
  notificationChannels: {
558
520
  inApp: { enabled: true, readOnly: true },
@@ -75,6 +75,12 @@ export const storesSeedData = [
75
75
  isPublic: true,
76
76
  isVacationMode: false,
77
77
  emiEnabled: true,
78
+ // No seeded store set either flag before 2026-08-24, so the verification
79
+ // badge and every featured-store surface rendered from empty data — and the
80
+ // public /stores "Featured" toggle (which only started filtering at all in
81
+ // the same change) had nothing to match.
82
+ isVerified: true,
83
+ isFeatured: true,
78
84
  stats: {
79
85
  totalProducts: 0,
80
86
  itemsSold: 0,
@@ -124,8 +130,16 @@ export const storesSeedData = [
124
130
  isPublic: true,
125
131
  isVacationMode: false,
126
132
  emiEnabled: true,
133
+ isVerified: true,
127
134
  stats: { totalProducts: 0, itemsSold: 0, totalReviews: 6, averageRating: 4.8 },
128
- capabilities: ["host_preorders", "verified_seller", "create_coupons", "suggest_brands"],
135
+ // `host_auctions` added 2026-08-24. Every one of the seeded auctions belongs
136
+ // to this store, but its owner could not have created any of them:
137
+ // `createSellerProductAction` throws AuthorizationError for
138
+ // `listingType === "auction"` without this capability. The only store that
139
+ // had it (letitrip-official) owns zero auctions, so no seeded seller could
140
+ // walk a successful auction-create flow except by logging in as admin,
141
+ // which bypasses the gate entirely.
142
+ capabilities: ["host_auctions", "host_preorders", "verified_seller", "create_coupons", "suggest_brands"],
129
143
  createdAt: daysAgo(150),
130
144
  updatedAt: daysAgo(4),
131
145
  },
@@ -157,4 +171,60 @@ export const storesSeedData = [
157
171
  createdAt: daysAgo(1),
158
172
  updatedAt: daysAgo(1),
159
173
  },
174
+ // ── Store 4: pending seller application ───────────────────────────────────
175
+ // `StoreStatus` is pending|active|suspended|rejected, but every seeded store
176
+ // was `active` — so three of the four admin status chips could only ever
177
+ // return an empty list, and the seller-approval queue had nothing in it.
178
+ {
179
+ id: "store-blader-bazaar",
180
+ storeSlug: "store-blader-bazaar",
181
+ ownerId: "user-meera-bey",
182
+ storeName: "Blader Bazaar",
183
+ storeDescription: "Applied to sell refurbished Burst-era tops and spare parts. Awaiting review — not yet visible to buyers.",
184
+ storeCategory: "category-beyblade-burst",
185
+ storeLogoURL: seedExtMedia("https://picsum.photos/seed/store-logo-blader-bazaar-20260101/400/400"),
186
+ storeBannerURL: seedExtMedia("https://picsum.photos/seed/store-banner-blader-bazaar-20260101/1600/400"),
187
+ status: STORE_FIELDS.STATUS_VALUES.PENDING,
188
+ bio: "Refurbishing and reselling Burst-era tops and parts.",
189
+ location: "Pune, Maharashtra, India",
190
+ returnPolicy: "7-day returns once approved.",
191
+ shippingPolicy: "Standard courier, dispatch within 48 hours.",
192
+ // A pending store is not public — this pairing is the point of the fixture:
193
+ // public visibility gates on `status`/`isPublic`, not on the user doc's own
194
+ // storeStatus, and the two are separate fields.
195
+ isPublic: false,
196
+ isVacationMode: false,
197
+ isVerified: false,
198
+ stats: { totalProducts: 0, itemsSold: 0, totalReviews: 0, averageRating: 0 },
199
+ capabilities: ["suggest_brands", "create_coupons"],
200
+ createdAt: daysAgo(4),
201
+ updatedAt: daysAgo(4),
202
+ },
203
+ // ── Store 5: suspended store ──────────────────────────────────────────────
204
+ // Exercises `suspensionReason`, which no seeded row populated, and gives the
205
+ // admin "Suspended" chip a row.
206
+ {
207
+ id: "store-vintage-vault-co",
208
+ storeSlug: "store-vintage-vault-co",
209
+ ownerId: "user-sneha-vintage",
210
+ storeName: "Vintage Vault Co.",
211
+ storeDescription: "Vintage original-series specialist. Currently suspended pending a listing-authenticity review.",
212
+ storeCategory: "category-beyblade-original",
213
+ storeLogoURL: seedExtMedia("https://picsum.photos/seed/store-logo-vintage-vault-20260101/400/400"),
214
+ storeBannerURL: seedExtMedia("https://picsum.photos/seed/store-banner-vintage-vault-20260101/1600/400"),
215
+ status: STORE_FIELDS.STATUS_VALUES.SUSPENDED,
216
+ suspensionReason: "Three listings flagged as possible reproductions; suspended while authenticity documentation is reviewed.",
217
+ adminNotes: "Owner responsive. Re-review once COAs are supplied.",
218
+ bio: "Original-series collector turned seller.",
219
+ location: "Kolkata, West Bengal, India",
220
+ returnPolicy: "14-day returns on sealed items.",
221
+ shippingPolicy: "Insured courier only.",
222
+ isPublic: false,
223
+ isVacationMode: false,
224
+ isVerified: false,
225
+ stats: { totalProducts: 0, itemsSold: 0, totalReviews: 0, averageRating: 0 },
226
+ capabilities: ["suggest_brands"],
227
+ createdAt: daysAgo(220),
228
+ updatedAt: daysAgo(9),
229
+ },
160
230
  ];
@@ -49,7 +49,7 @@ export const usersSeedData = [
49
49
  bio: "LetItRip platform administrator. India's largest collectibles marketplace.",
50
50
  location: "Mumbai, Maharashtra",
51
51
  storeName: "LetItRip Official",
52
- storeCategory: "spinning-tops",
52
+ storeCategory: "category-spinning-tops",
53
53
  },
54
54
  stats: { totalOrders: 20, auctionsWon: 2, itemsSold: 200, reviewsCount: 0 },
55
55
  metadata: {
@@ -194,7 +194,7 @@ export const usersSeedData = [
194
194
  bio: "Beyblade champion. Importing authentic Takara-Tomy Beyblades from Japan. Let It Rip!",
195
195
  location: "Chennai, Tamil Nadu",
196
196
  storeName: "Beyblade Arena",
197
- storeCategory: "spinning-tops",
197
+ storeCategory: "category-spinning-tops",
198
198
  },
199
199
  stats: { totalOrders: 4, auctionsWon: 0, itemsSold: 95, reviewsCount: 6 },
200
200
  metadata: { lastSignInTime: daysAgo(4), creationTime: daysAgo(150).toISOString(), loginCount: 70 },
@@ -309,10 +309,15 @@ export const usersSeedData = [
309
309
  phoneVerified: true,
310
310
  displayName: "Mock User 11",
311
311
  photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-meera-nair-20260101/400/400"),
312
- role: USER_FIELDS.ROLE_VALUES.USER,
312
+ role: USER_FIELDS.ROLE_VALUES.SELLER,
313
313
  emailVerified: true,
314
314
  disabled: false,
315
+ storeId: "store-blader-bazaar",
316
+ storeSlug: "store-blader-bazaar",
317
+ storeStatus: "pending",
315
318
  publicProfile: {
319
+ storeName: "Blader Bazaar",
320
+ storeCategory: "category-beyblade-burst",
316
321
  isPublic: true,
317
322
  showEmail: false,
318
323
  showPhone: false,
@@ -359,10 +364,15 @@ export const usersSeedData = [
359
364
  phoneVerified: true,
360
365
  displayName: "Mock User 13",
361
366
  photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-sneha-gupta-20260101/400/400"),
362
- role: USER_FIELDS.ROLE_VALUES.USER,
367
+ role: USER_FIELDS.ROLE_VALUES.SELLER,
363
368
  emailVerified: true,
364
369
  disabled: false,
370
+ storeId: "store-vintage-vault-co",
371
+ storeSlug: "store-vintage-vault-co",
372
+ storeStatus: "approved",
365
373
  publicProfile: {
374
+ storeName: "Vintage Vault Co.",
375
+ storeCategory: "category-beyblade-original",
366
376
  isPublic: true,
367
377
  showEmail: false,
368
378
  showPhone: false,
@@ -505,7 +515,7 @@ export const usersSeedData = [
505
515
  bio: "Dedicated QA tester account for the Tester QA Program — runs through the checklist against the shared test sandbox.",
506
516
  location: "Bengaluru, Karnataka",
507
517
  storeName: "Tester QA Seller Store",
508
- storeCategory: "trading-cards",
518
+ storeCategory: "category-spinning-tops",
509
519
  },
510
520
  stats: { totalOrders: 0, auctionsWon: 0, itemsSold: 0, reviewsCount: 0 },
511
521
  metadata: { lastSignInTime: daysAgo(1), creationTime: daysAgo(1).toISOString(), loginCount: 5 },
@@ -46,7 +46,7 @@ export { StoreDigitalCodesPageView } from "./features/stores/components/StoreDig
46
46
  export { StoreLiveItemsPageView } from "./features/stores/components/StoreLiveItemsPageView";
47
47
  export { StoreArtStickersPageView } from "./features/stores/components/StoreArtStickersPageView";
48
48
  export { getProductForDetail, listSitemapProducts, type SitemapProduct, } from "./_internal/server/features/products/index";
49
- export { listPublicProducts, parsePublicProductParams, PUBLIC_PRODUCT_MAX_PAGE_SIZE, type PublicProductListInput, type PublicProductListResult, type PublicProductListOptions, type PublicProductExecutor, type PublicProductQuery, } from "./_internal/server/features/products/index";
49
+ export { listPublicProducts, parsePublicProductParams, defaultAvailabilityForListingTypes, PUBLIC_PRODUCT_MAX_PAGE_SIZE, ANY_STATUS, type PublicProductListInput, type PublicProductListResult, type PublicProductListOptions, type PublicProductExecutor, type PublicProductQuery, } from "./_internal/server/features/products/index";
50
50
  export { getAuctionForDetail, getProductFeaturesForAuction, } from "./_internal/server/features/auctions/index";
51
51
  export { getPreOrderForDetail, getProductFeaturesForPreOrder, } from "./_internal/server/features/pre-orders/index";
52
52
  export { getBrandForDetail, getBrandCategoryForDetail, createBrandAction, updateBrandAction, deleteBrandAction, toggleBrandActiveAction, } from "./_internal/server/features/brands/index";
@@ -60,7 +60,6 @@ export { getOrderForDetail, getOrdersForBuyer, getRecentOrdersForBuyer, createOr
60
60
  export { getCouponByCode, applyCouponAction, createCouponAction, updateCouponAction, deactivateCouponAction, } from "./_internal/server/features/promotions/index";
61
61
  export { getWishlistForUser, isProductInWishlist, addToWishlistAction, removeFromWishlistAction, mergeGuestWishlistAction, WISHLIST_MAX, WISHLIST_GUEST_STORAGE_KEY, WishlistCapError, } from "./_internal/server/features/wishlist/index";
62
62
  export { getHistoryForUser, trackProductViewAction, mergeGuestHistoryAction, HISTORY_MAX, HISTORY_GUEST_STORAGE_KEY, } from "./_internal/server/features/history/index";
63
- export { getHomepageInitial, getHomepageSections, getHeroCarouselSlides, } from "./_internal/server/features/homepage/index";
64
63
  export { getReviewsForProduct, getReviewsForStore, hasUserPurchasedProduct, getReviewById, renderReviewOg, renderReviewOgImage, type ReviewOgData, createReviewAction, replyToReviewAction, deleteReviewAction, markReviewHelpfulAction, } from "./_internal/server/features/reviews/index";
65
64
  export { renderFaqOg, renderFaqOgImage, type FaqOgData, } from "./_internal/server/features/faqs/index";
66
65
  export { renderScamOg, renderScamOgImage, type ScamOgData, getScammerForDetail, getScammerProfilePageData as getScammerProfilePageDataCached, } from "./_internal/server/features/scams/index";
@@ -52,7 +52,7 @@ export { StoreLiveItemsPageView } from "./features/stores/components/StoreLiveIt
52
52
  export { StoreArtStickersPageView } from "./features/stores/components/StoreArtStickersPageView";
53
53
  // S2: products data layer — deduped via React.cache()
54
54
  export { getProductForDetail, listSitemapProducts, } from "./_internal/server/features/products/index";
55
- export { listPublicProducts, parsePublicProductParams, PUBLIC_PRODUCT_MAX_PAGE_SIZE, } from "./_internal/server/features/products/index";
55
+ export { listPublicProducts, parsePublicProductParams, defaultAvailabilityForListingTypes, PUBLIC_PRODUCT_MAX_PAGE_SIZE, ANY_STATUS, } from "./_internal/server/features/products/index";
56
56
  // S3: auctions data layer — deduped via React.cache()
57
57
  export { getAuctionForDetail, getProductFeaturesForAuction, } from "./_internal/server/features/auctions/index";
58
58
  // S3: pre-orders data layer — deduped via React.cache()
@@ -79,8 +79,9 @@ export { getCouponByCode, applyCouponAction, createCouponAction, updateCouponAct
79
79
  export { getWishlistForUser, isProductInWishlist, addToWishlistAction, removeFromWishlistAction, mergeGuestWishlistAction, WISHLIST_MAX, WISHLIST_GUEST_STORAGE_KEY, WishlistCapError, } from "./_internal/server/features/wishlist/index";
80
80
  // S5: history data layer + actions
81
81
  export { getHistoryForUser, trackProductViewAction, mergeGuestHistoryAction, HISTORY_MAX, HISTORY_GUEST_STORAGE_KEY, } from "./_internal/server/features/history/index";
82
- // S5: homepage data layer
83
- export { getHomepageInitial, getHomepageSections, getHeroCarouselSlides, } from "./_internal/server/features/homepage/index";
82
+ // S5: homepage data layer — getHomepageInitial / getHomepageSections /
83
+ // getHeroCarouselSlides were deleted 2026-08-24 (zero call sites; see that
84
+ // module's index.ts).
84
85
  // S5: reviews data layer + actions
85
86
  export { getReviewsForProduct, getReviewsForStore, hasUserPurchasedProduct, getReviewById, renderReviewOg, renderReviewOgImage, createReviewAction, replyToReviewAction, deleteReviewAction, markReviewHelpfulAction, } from "./_internal/server/features/reviews/index";
86
87
  export { renderFaqOg, renderFaqOgImage, } from "./_internal/server/features/faqs/index";
package/dist/server.d.ts CHANGED
@@ -408,7 +408,6 @@ export { requestPayout } from "./features/seller/server";
408
408
  export { respondToOffer } from "./features/seller/server";
409
409
  export { sellerCouponsGET } from "./features/seller/server";
410
410
  export { sellerDeleteProduct } from "./features/seller/server";
411
- export { sellerOffersGET } from "./features/seller/server";
412
411
  export { sellerProductsGET } from "./features/seller/server";
413
412
  export { sellerStoreGET } from "./features/seller/server";
414
413
  export { sellerUpdateProduct } from "./features/seller/server";
@@ -501,12 +500,13 @@ export type { GoogleReview, GoogleReviewsResult } from "./features/homepage/lib/
501
500
  export { GoogleReviewsSection } from "./features/homepage/components/GoogleReviewsSection";
502
501
  export type { GoogleReviewsSectionProps } from "./features/homepage/components/GoogleReviewsSection";
503
502
  export { getProductForDetail, listSitemapProducts, computeRelatedItems, toProductItem, type SitemapProduct, type RelatedItemsResult, } from "./_internal/server/features/products/index";
504
- export { listPublicProducts, parsePublicProductParams, PUBLIC_PRODUCT_MAX_PAGE_SIZE, type PublicProductListInput, type PublicProductListResult, type PublicProductListOptions, type PublicProductExecutor, type PublicProductQuery, } from "./_internal/server/features/products/index";
505
- export { getBundleForDetail, listBundleMembers, listFeaturedBundles, getRelatedBundles, resolveBundleMemberIds, resolveBundleOriginalTotal, buildBundleMetadata, renderBundleOg, renderBundleOgImage, addBundleToCartAction, type BundleDataOptions, type BundleMetadataOptions, type BundleOgData, } from "./_internal/server/features/bundles/index";
503
+ export { listPublicProducts, parsePublicProductParams, defaultAvailabilityForListingTypes, PUBLIC_PRODUCT_MAX_PAGE_SIZE, ANY_STATUS, type PublicProductListInput, type PublicProductListResult, type PublicProductListOptions, type PublicProductExecutor, type PublicProductQuery, } from "./_internal/server/features/products/index";
504
+ export { getBundleForDetail, listBundleMembers, listFeaturedBundles, getRelatedBundles, resolveBundleMemberIds, resolveBundleOriginalTotal, resolveBundleCategorySlugs, buildBundleMetadata, renderBundleOg, renderBundleOgImage, addBundleToCartAction, type BundleDataOptions, type BundleMetadataOptions, type BundleOgData, } from "./_internal/server/features/bundles/index";
506
505
  export { getGroupsForProduct, getGroupsWithItemsForProduct, getGroupsForCategory, getGroupsForBrand } from "./_internal/server/features/grouped/index";
507
506
  export { getAuctionForDetail, getProductFeaturesForAuction } from "./_internal/server/features/auctions/index";
508
507
  export { getPreOrderForDetail, getProductFeaturesForPreOrder } from "./_internal/server/features/pre-orders/index";
509
508
  export { getStoreForDetail, listStoreProductsInitial, listStoreAuctionsInitial, listStorePreOrdersInitial, listSitemapStores } from "./_internal/server/features/stores/index";
509
+ export { toStoreDetail, toStoreListItem, PUBLIC_STORE_FIELDS, PRIVATE_STORE_FIELDS, type ToStoreDetailOptions, type ToStoreListItemOptions, type StoreProjectionSource, } from "./_internal/server/features/stores/adapters";
510
510
  export { getBrandForDetail } from "./_internal/server/features/brands/index";
511
511
  export { getBlogPostForDetail } from "./_internal/server/features/blog/index";
512
512
  export { getEventForDetail } from "./_internal/server/features/events/index";
@@ -527,6 +527,8 @@ export { renderFaqOg, renderFaqOgImage, type FaqOgData } from "./_internal/serve
527
527
  export { renderScamOg, renderScamOgImage, type ScamOgData } from "./_internal/server/features/scams/og";
528
528
  export { getScammerForDetail, getScammerProfilePageData as getScammerProfilePageDataCached } from "./_internal/server/features/scams/data";
529
529
  export { orderDocumentToOrder } from "./_internal/server/features/orders/adapters";
530
+ export { offerDocumentToOffer, offerToChainRound } from "./_internal/server/features/offers/adapters";
531
+ export type { Offer, OfferAdapterOptions, OfferChainRound, OfferTimelineEntry } from "./_internal/server/features/offers/adapters";
530
532
  export { LISTING_TYPE_CAPABILITIES, capabilityFor, canAddToCart, canBid, supportsShipping, requiresVendorVerified, requiresJurisdictionCheck, hasInstantFulfillment, assertNever, } from "./_internal/shared/listing-types/capabilities";
531
533
  export type { ListingTypeCapability } from "./_internal/shared/listing-types/capabilities";
532
534
  export { LISTING_TYPE_REGISTRY, pluginFor, detectListingTypeFromSlug } from "./_internal/shared/listing-types/_registry";
@@ -547,6 +549,7 @@ export { checkActionAllowed } from "./features/admin/utils/checkActionAllowed";
547
549
  export { getDisabledRoutes } from "./features/admin/utils/getDisabledRoutes";
548
550
  export { getSiteSettingsGlobal } from "./features/admin/utils/getSiteSettingsGlobal";
549
551
  export { getSiteSettingsSafe } from "./_internal/server/features/site-settings/safe-settings";
552
+ export { toPublicSiteSettings, PUBLIC_SITE_SETTINGS_FIELDS, PRIVATE_SITE_SETTINGS_FIELDS, type ToPublicSiteSettingsOptions, } from "./_internal/server/features/site-settings/adapters";
550
553
  export { callFirebaseIdentityToolkit } from "./_internal/server/features/auth/firebase-identity";
551
554
  export { updateActionConfigDomain, updateNavConfigDomain } from "./_internal/server/features/site-settings/actions";
552
555
  export { getClassifiedForDetail } from "./_internal/server/features/classified/data";
package/dist/server.js CHANGED
@@ -1165,8 +1165,6 @@ export { sellerCouponsGET } from "./features/seller/server";
1165
1165
  // sellerDeleteProduct - Shared export for seller delete product.
1166
1166
  export { sellerDeleteProduct } from "./features/seller/server";
1167
1167
  // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
1168
- // sellerOffersGET - Shared export for seller offers get.
1169
- export { sellerOffersGET } from "./features/seller/server";
1170
1168
  // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
1171
1169
  // sellerProductsGET - Shared export for seller products get.
1172
1170
  export { sellerProductsGET } from "./features/seller/server";
@@ -1355,13 +1353,16 @@ export { GoogleReviewsSection } from "./features/homepage/components/GoogleRevie
1355
1353
  export { getProductForDetail, listSitemapProducts, computeRelatedItems, toProductItem, } from "./_internal/server/features/products/index";
1356
1354
  // The single public-listing query — every SSR listing view and /api/products
1357
1355
  // share it so their filter semantics cannot drift (Root Cause #30).
1358
- export { listPublicProducts, parsePublicProductParams, PUBLIC_PRODUCT_MAX_PAGE_SIZE, } from "./_internal/server/features/products/index";
1356
+ export { listPublicProducts, parsePublicProductParams, defaultAvailabilityForListingTypes, PUBLIC_PRODUCT_MAX_PAGE_SIZE, ANY_STATUS, } from "./_internal/server/features/products/index";
1359
1357
  // S-SBUNI-3/4 2026-05-13 — bundle data/metadata/og layer.
1360
- export { getBundleForDetail, listBundleMembers, listFeaturedBundles, getRelatedBundles, resolveBundleMemberIds, resolveBundleOriginalTotal, buildBundleMetadata, renderBundleOg, renderBundleOgImage, addBundleToCartAction, } from "./_internal/server/features/bundles/index";
1358
+ export { getBundleForDetail, listBundleMembers, listFeaturedBundles, getRelatedBundles, resolveBundleMemberIds, resolveBundleOriginalTotal, resolveBundleCategorySlugs, buildBundleMetadata, renderBundleOg, renderBundleOgImage, addBundleToCartAction, } from "./_internal/server/features/bundles/index";
1361
1359
  export { getGroupsForProduct, getGroupsWithItemsForProduct, getGroupsForCategory, getGroupsForBrand } from "./_internal/server/features/grouped/index";
1362
1360
  export { getAuctionForDetail, getProductFeaturesForAuction } from "./_internal/server/features/auctions/index";
1363
1361
  export { getPreOrderForDetail, getProductFeaturesForPreOrder } from "./_internal/server/features/pre-orders/index";
1364
1362
  export { getStoreForDetail, listStoreProductsInitial, listStoreAuctionsInitial, listStorePreOrdersInitial, listSitemapStores } from "./_internal/server/features/stores/index";
1363
+ // Public-store allow-list projection — the ONLY sanctioned way a StoreDocument
1364
+ // may reach a client component or an HTTP response. See adapters.ts header.
1365
+ export { toStoreDetail, toStoreListItem, PUBLIC_STORE_FIELDS, PRIVATE_STORE_FIELDS, } from "./_internal/server/features/stores/adapters";
1365
1366
  export { getBrandForDetail } from "./_internal/server/features/brands/index";
1366
1367
  export { getBlogPostForDetail } from "./_internal/server/features/blog/index";
1367
1368
  export { getEventForDetail } from "./_internal/server/features/events/index";
@@ -1384,6 +1385,11 @@ export { renderScamOg, renderScamOgImage } from "./_internal/server/features/sca
1384
1385
  export { getScammerForDetail, getScammerProfilePageData as getScammerProfilePageDataCached } from "./_internal/server/features/scams/data";
1385
1386
  // Adapters
1386
1387
  export { orderDocumentToOrder } from "./_internal/server/features/orders/adapters";
1388
+ // Offers had NO adapter at all — all three routes returned raw OfferDocuments
1389
+ // with live Date objects. `offerDocumentToOffer` gates buyer identity behind
1390
+ // an explicit flag so a route that forgets `maskOfferForSeller` under-shares
1391
+ // rather than leaking.
1392
+ export { offerDocumentToOffer, offerToChainRound } from "./_internal/server/features/offers/adapters";
1387
1393
  // Listing-type capability registry — SB-UNI X1.
1388
1394
  export { LISTING_TYPE_CAPABILITIES, capabilityFor, canAddToCart, canBid, supportsShipping, requiresVendorVerified, requiresJurisdictionCheck, hasInstantFulfillment, assertNever, } from "./_internal/shared/listing-types/capabilities";
1389
1395
  export { LISTING_TYPE_REGISTRY, pluginFor, detectListingTypeFromSlug } from "./_internal/shared/listing-types/_registry";
@@ -1405,6 +1411,9 @@ export { getDisabledRoutes } from "./features/admin/utils/getDisabledRoutes";
1405
1411
  export { getSiteSettingsGlobal } from "./features/admin/utils/getSiteSettingsGlobal";
1406
1412
  // Null-safe wrapper — returns null on Firestore failure instead of throwing.
1407
1413
  export { getSiteSettingsSafe } from "./_internal/server/features/site-settings/safe-settings";
1414
+ // Public site-settings allow-list projection — the ONLY sanctioned shape for
1415
+ // an unauthenticated site-settings response. See adapters.ts header.
1416
+ export { toPublicSiteSettings, PUBLIC_SITE_SETTINGS_FIELDS, PRIVATE_SITE_SETTINGS_FIELDS, } from "./_internal/server/features/site-settings/adapters";
1408
1417
  // Firebase Identity Toolkit REST helper (signInWithPassword / signInWithCustomToken).
1409
1418
  export { callFirebaseIdentityToolkit } from "./_internal/server/features/auth/firebase-identity";
1410
1419
  // -- Site-settings domain actions (updateActionConfig / updateNavConfig) --