@mohasinac/appkit 4.13.0 → 4.14.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 (377) 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 +6 -0
  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/checkout/actions.js +6 -0
  17. package/dist/_internal/server/features/checkout/locked-lines.d.ts +38 -0
  18. package/dist/_internal/server/features/checkout/locked-lines.js +171 -0
  19. package/dist/_internal/server/features/homepage/index.d.ts +0 -1
  20. package/dist/_internal/server/features/homepage/index.js +7 -1
  21. package/dist/_internal/server/features/lottery/adapters.js +4 -0
  22. package/dist/_internal/server/features/products/data.js +15 -37
  23. package/dist/_internal/server/features/products/index.d.ts +1 -1
  24. package/dist/_internal/server/features/products/index.js +1 -1
  25. package/dist/_internal/server/features/products/list-public.d.ts +46 -20
  26. package/dist/_internal/server/features/products/list-public.js +266 -90
  27. package/dist/_internal/server/features/products/listing-tab-counts.d.ts +44 -0
  28. package/dist/_internal/server/features/products/listing-tab-counts.js +97 -0
  29. package/dist/_internal/server/features/site-settings/adapters.d.ts +51 -0
  30. package/dist/_internal/server/features/site-settings/adapters.js +75 -0
  31. package/dist/_internal/server/features/site-settings/index.d.ts +1 -0
  32. package/dist/_internal/server/features/site-settings/index.js +1 -0
  33. package/dist/_internal/server/features/stores/adapters.d.ts +56 -0
  34. package/dist/_internal/server/features/stores/adapters.js +91 -0
  35. package/dist/_internal/server/features/stores/index.d.ts +1 -0
  36. package/dist/_internal/server/features/stores/index.js +1 -0
  37. package/dist/_internal/server/jobs/core/auctionSettlement.js +56 -2
  38. package/dist/_internal/server/jobs/core/offerExpiry.js +45 -9
  39. package/dist/_internal/server/jobs/core/paymentReviewAutoApprove.d.ts +5 -0
  40. package/dist/_internal/server/jobs/core/paymentReviewAutoApprove.js +33 -1
  41. package/dist/_internal/server/jobs/handlers/messages.d.ts +7 -0
  42. package/dist/_internal/server/jobs/handlers/messages.js +10 -0
  43. package/dist/_internal/shared/actions/action-registry.js +15 -1
  44. package/dist/_internal/shared/checkout/lanes.d.ts +25 -0
  45. package/dist/_internal/shared/checkout/lanes.js +26 -0
  46. package/dist/_internal/shared/features/auctions/config.d.ts +27 -0
  47. package/dist/_internal/shared/features/auctions/config.js +27 -0
  48. package/dist/_internal/shared/features/blog/schema.d.ts +2 -2
  49. package/dist/_internal/shared/features/cart/schema.d.ts +12 -12
  50. package/dist/_internal/shared/features/categories/bundle-schemas.d.ts +32 -32
  51. package/dist/_internal/shared/features/emi/schedule.d.ts +24 -3
  52. package/dist/_internal/shared/features/emi/schedule.js +20 -5
  53. package/dist/_internal/shared/features/events/schema.d.ts +2 -2
  54. package/dist/_internal/shared/features/homepage/section-gate.d.ts +14 -0
  55. package/dist/_internal/shared/features/homepage/section-gate.js +51 -0
  56. package/dist/_internal/shared/features/offers/config.d.ts +30 -0
  57. package/dist/_internal/shared/features/offers/config.js +59 -0
  58. package/dist/_internal/shared/features/orders/schema.d.ts +8 -8
  59. package/dist/_internal/shared/features/products/schema.d.ts +32 -32
  60. package/dist/_internal/shared/features/products/to-product-item.js +6 -0
  61. package/dist/_internal/shared/features/reviews/schema.d.ts +2 -2
  62. package/dist/_internal/shared/features/site-settings/fees.d.ts +60 -0
  63. package/dist/_internal/shared/features/site-settings/fees.js +39 -0
  64. package/dist/_internal/shared/features/site-settings/types.d.ts +40 -0
  65. package/dist/_internal/shared/features/site-settings/types.js +1 -0
  66. package/dist/_internal/shared/history/history.d.ts +66 -0
  67. package/dist/_internal/shared/history/history.js +158 -0
  68. package/dist/_internal/shared/history/index.d.ts +4 -0
  69. package/dist/_internal/shared/history/index.js +2 -0
  70. package/dist/_internal/shared/history/types.d.ts +61 -0
  71. package/dist/_internal/shared/history/types.js +6 -0
  72. package/dist/_internal/shared/listing-types/_registry.d.ts +54 -1
  73. package/dist/_internal/shared/listing-types/_registry.js +67 -0
  74. package/dist/_internal/shared/listing-types/art/config.d.ts +3 -0
  75. package/dist/_internal/shared/listing-types/art/config.js +5 -0
  76. package/dist/_internal/shared/listing-types/auction/config.d.ts +13 -0
  77. package/dist/_internal/shared/listing-types/auction/config.js +21 -0
  78. package/dist/_internal/shared/listing-types/availability.d.ts +79 -0
  79. package/dist/_internal/shared/listing-types/availability.js +104 -0
  80. package/dist/_internal/shared/listing-types/capabilities.d.ts +15 -0
  81. package/dist/_internal/shared/listing-types/capabilities.js +12 -0
  82. package/dist/_internal/shared/listing-types/classified/config.d.ts +3 -0
  83. package/dist/_internal/shared/listing-types/classified/config.js +5 -0
  84. package/dist/_internal/shared/listing-types/digital-code/config.d.ts +11 -0
  85. package/dist/_internal/shared/listing-types/digital-code/config.js +22 -2
  86. package/dist/_internal/shared/listing-types/live/config.d.ts +3 -0
  87. package/dist/_internal/shared/listing-types/live/config.js +5 -0
  88. package/dist/_internal/shared/listing-types/pre-order/config.d.ts +3 -0
  89. package/dist/_internal/shared/listing-types/pre-order/config.js +19 -0
  90. package/dist/_internal/shared/listing-types/prize-draw/config.d.ts +11 -0
  91. package/dist/_internal/shared/listing-types/prize-draw/config.js +15 -0
  92. package/dist/_internal/shared/listing-types/standard/config.d.ts +3 -0
  93. package/dist/_internal/shared/listing-types/standard/config.js +5 -0
  94. package/dist/_internal/shared/listing-types/stickers/config.d.ts +3 -0
  95. package/dist/_internal/shared/listing-types/stickers/config.js +5 -0
  96. package/dist/client.d.ts +7 -5
  97. package/dist/client.js +2 -2
  98. package/dist/constants/api-endpoints.d.ts +6 -0
  99. package/dist/constants/api-endpoints.js +2 -0
  100. package/dist/constants/field-names.d.ts +49 -2
  101. package/dist/constants/field-names.js +53 -2
  102. package/dist/constants/table-keys.d.ts +17 -0
  103. package/dist/constants/table-keys.js +17 -0
  104. package/dist/errors/error-codes.d.ts +13 -1
  105. package/dist/errors/error-codes.js +13 -1
  106. package/dist/errors/error-display-map.js +12 -3
  107. package/dist/errors/messages.d.ts +10 -2
  108. package/dist/errors/messages.js +10 -2
  109. package/dist/features/about/components/AboutView.d.ts +3 -0
  110. package/dist/features/about/components/AboutView.js +3 -2
  111. package/dist/features/about/components/PolicyPageView.d.ts +2 -1
  112. package/dist/features/about/components/PolicyPageView.js +61 -23
  113. package/dist/features/about/components/PublicProfileView.js +5 -0
  114. package/dist/features/about/schemas/firestore.d.ts +3 -0
  115. package/dist/features/account/components/UserOrdersView.js +7 -0
  116. package/dist/features/account/components/index.d.ts +0 -2
  117. package/dist/features/account/components/index.js +0 -1
  118. package/dist/features/account/schemas/index.d.ts +2 -2
  119. package/dist/features/account/types/index.d.ts +21 -2
  120. package/dist/features/addresses/schemas/index.d.ts +4 -4
  121. package/dist/features/admin/components/AdminArtView.js +8 -3
  122. package/dist/features/admin/components/AdminClassifiedView.js +8 -3
  123. package/dist/features/admin/components/AdminDigitalCodesView.js +8 -3
  124. package/dist/features/admin/components/AdminFeatureFlagsView.js +1 -0
  125. package/dist/features/admin/components/AdminLiveView.js +8 -3
  126. package/dist/features/admin/components/AdminOffersView.d.ts +4 -0
  127. package/dist/features/admin/components/AdminOffersView.js +186 -0
  128. package/dist/features/admin/components/AdminOrdersView.js +10 -1
  129. package/dist/features/admin/components/AdminPrizeDrawsView.js +5 -0
  130. package/dist/features/admin/components/AdminProductsView.js +16 -29
  131. package/dist/features/admin/components/AdminSiteSettingsView.js +31 -13
  132. package/dist/features/admin/components/AdminSiteView.js +6 -2
  133. package/dist/features/admin/components/AdminStickersView.js +8 -3
  134. package/dist/features/admin/components/index.d.ts +2 -0
  135. package/dist/features/admin/components/index.js +1 -0
  136. package/dist/features/admin/constants/filter-tabs.d.ts +86 -0
  137. package/dist/features/admin/constants/filter-tabs.js +55 -0
  138. package/dist/features/admin/schemas/firestore.d.ts +122 -3
  139. package/dist/features/admin/schemas/firestore.js +1 -0
  140. package/dist/features/auctions/actions/bid-actions.d.ts +20 -5
  141. package/dist/features/auctions/actions/bid-actions.js +93 -20
  142. package/dist/features/auctions/components/AuctionDetailPageView.js +11 -6
  143. package/dist/features/auctions/components/AuctionsListView.js +5 -6
  144. package/dist/features/auctions/components/MarketplaceAuctionCard.d.ts +7 -0
  145. package/dist/features/auctions/components/MarketplaceAuctionCard.js +19 -2
  146. package/dist/features/auctions/components/PlaceBidFormClient.d.ts +1 -2
  147. package/dist/features/auctions/components/PlaceBidFormClient.js +8 -4
  148. package/dist/features/auctions/repository/bid.repository.d.ts +13 -0
  149. package/dist/features/auctions/repository/bid.repository.js +23 -0
  150. package/dist/features/auctions/schemas/firestore.d.ts +17 -0
  151. package/dist/features/auctions/schemas/index.d.ts +12 -12
  152. package/dist/features/auth/permissions/constants.d.ts +1 -1
  153. package/dist/features/auth/permissions/constants.js +10 -1
  154. package/dist/features/blog/actions/blog-actions.d.ts +7 -7
  155. package/dist/features/blog/schemas/index.d.ts +6 -6
  156. package/dist/features/cart/repository/cart.repository.js +1 -0
  157. package/dist/features/cart/schemas/firestore.d.ts +15 -0
  158. package/dist/features/catalogue/schemas/validation.d.ts +4 -4
  159. package/dist/features/categories/components/BrandDetailPageView.js +23 -40
  160. package/dist/features/categories/components/BrandDetailTabs.d.ts +7 -7
  161. package/dist/features/categories/components/BrandDetailTabs.js +8 -12
  162. package/dist/features/categories/components/BundleCollage.js +1 -1
  163. package/dist/features/categories/components/CategoryDetailPageView.js +53 -57
  164. package/dist/features/categories/components/CategoryDetailTabs.d.ts +10 -8
  165. package/dist/features/categories/components/CategoryDetailTabs.js +11 -16
  166. package/dist/features/categories/components/CategoryProductsListing.js +11 -1
  167. package/dist/features/categories/components/ConcernCard.js +7 -1
  168. package/dist/features/categories/schemas/firestore.d.ts +13 -0
  169. package/dist/features/categories/schemas/index.d.ts +26 -26
  170. package/dist/features/classified/components/ClassifiedDetailPageView.d.ts +16 -1
  171. package/dist/features/classified/components/ClassifiedDetailPageView.js +23 -3
  172. package/dist/features/events/components/AdminEventsView.js +15 -11
  173. package/dist/features/events/components/EventFilters.d.ts +9 -1
  174. package/dist/features/events/components/EventFilters.js +45 -21
  175. package/dist/features/events/components/EventsIndexListing.d.ts +6 -1
  176. package/dist/features/events/components/EventsIndexListing.js +2 -2
  177. package/dist/features/events/components/EventsListPageView.js +13 -4
  178. package/dist/features/events/repository/events.repository.d.ts +17 -0
  179. package/dist/features/events/repository/events.repository.js +27 -0
  180. package/dist/features/events/schemas/firestore.d.ts +12 -0
  181. package/dist/features/events/schemas/firestore.js +12 -0
  182. package/dist/features/events/schemas/index.d.ts +50 -50
  183. package/dist/features/events/types/index.d.ts +11 -0
  184. package/dist/features/events/types/index.js +57 -1
  185. package/dist/features/faq/actions/faq-actions.d.ts +12 -12
  186. package/dist/features/faq/schemas/index.d.ts +8 -8
  187. package/dist/features/filters/FilterFacetSection.d.ts +7 -1
  188. package/dist/features/filters/FilterFacetSection.js +11 -3
  189. package/dist/features/grouped/schemas/index.d.ts +4 -4
  190. package/dist/features/homepage/components/AnnouncementBar.d.ts +7 -1
  191. package/dist/features/homepage/components/AnnouncementBar.js +3 -3
  192. package/dist/features/homepage/components/MarketplaceHomepageView.js +20 -6
  193. package/dist/features/homepage/hooks/homepage-query.d.ts +16 -0
  194. package/dist/features/homepage/hooks/homepage-query.js +45 -0
  195. package/dist/features/homepage/hooks/useFeaturedAuctions.d.ts +10 -0
  196. package/dist/features/homepage/hooks/useFeaturedAuctions.js +28 -8
  197. package/dist/features/homepage/hooks/useFeaturedPreOrders.js +17 -8
  198. package/dist/features/homepage/hooks/useFeaturedProducts.js +15 -8
  199. package/dist/features/homepage/schemas/index.d.ts +2 -2
  200. package/dist/features/layout/AppLayoutShell.d.ts +11 -1
  201. package/dist/features/layout/AppLayoutShell.js +15 -14
  202. package/dist/features/layout/BackToTop.d.ts +9 -0
  203. package/dist/features/layout/BackToTop.js +10 -1
  204. package/dist/features/layout/BottomActions.js +28 -25
  205. package/dist/features/layout/BottomChrome.d.ts +34 -0
  206. package/dist/features/layout/BottomChrome.js +55 -0
  207. package/dist/features/layout/BottomNavLayout.d.ts +6 -0
  208. package/dist/features/layout/BottomNavLayout.js +7 -1
  209. package/dist/features/layout/BottomNavbar.js +15 -2
  210. package/dist/features/layout/FooterLayout.js +11 -1
  211. package/dist/features/layout/NavbarLayout.js +1 -1
  212. package/dist/features/layout/TitleBarLayout.d.ts +7 -0
  213. package/dist/features/layout/TitleBarLayout.js +28 -5
  214. package/dist/features/layout/index.d.ts +2 -0
  215. package/dist/features/layout/index.js +1 -0
  216. package/dist/features/lottery/types/index.d.ts +3 -0
  217. package/dist/features/media/MediaPickerModal.js +5 -1
  218. package/dist/features/messages/schemas/index.d.ts +2 -2
  219. package/dist/features/orders/components/OrderScopeTabs.d.ts +20 -0
  220. package/dist/features/orders/components/OrderScopeTabs.js +31 -0
  221. package/dist/features/orders/constants/order-scope.d.ts +48 -0
  222. package/dist/features/orders/constants/order-scope.js +111 -0
  223. package/dist/features/orders/repository/orders.repository.d.ts +54 -7
  224. package/dist/features/orders/repository/orders.repository.js +116 -22
  225. package/dist/features/orders/schemas/firestore.d.ts +117 -0
  226. package/dist/features/orders/schemas/firestore.js +30 -0
  227. package/dist/features/orders/schemas/index.d.ts +18 -18
  228. package/dist/features/pre-orders/components/PreOrdersIndexListing.js +14 -9
  229. package/dist/features/pre-orders/components/PreOrdersListView.js +6 -5
  230. package/dist/features/pre-orders/schemas/index.d.ts +1 -1
  231. package/dist/features/products/actions/product-actions.d.ts +14 -0
  232. package/dist/features/products/actions/product-actions.js +49 -11
  233. package/dist/features/products/api/route.d.ts +12 -0
  234. package/dist/features/products/api/route.js +42 -100
  235. package/dist/features/products/components/ArtStickersListView.js +2 -2
  236. package/dist/features/products/components/AuctionsIndexListing.js +13 -11
  237. package/dist/features/products/components/AvailabilityTabs.d.ts +11 -0
  238. package/dist/features/products/components/AvailabilityTabs.js +47 -0
  239. package/dist/features/products/components/MakeOfferButton.js +48 -49
  240. package/dist/features/products/components/PrizeDrawCollage.d.ts +20 -4
  241. package/dist/features/products/components/PrizeDrawCollage.js +9 -1
  242. package/dist/features/products/components/PrizeDrawsIndexListing.js +14 -12
  243. package/dist/features/products/components/PrizeDrawsListingView.js +2 -2
  244. package/dist/features/products/components/PrizeDrawsSection.d.ts +7 -1
  245. package/dist/features/products/components/PrizeDrawsSection.js +23 -18
  246. package/dist/features/products/components/ProductDetailPageView.d.ts +4 -1
  247. package/dist/features/products/components/ProductDetailPageView.js +18 -4
  248. package/dist/features/products/components/ProductForm.js +5 -2
  249. package/dist/features/products/components/ProductGrid.js +6 -1
  250. package/dist/features/products/components/ProductsIndexListing.js +22 -32
  251. package/dist/features/products/components/ProductsIndexPageView.js +6 -9
  252. package/dist/features/products/components/index.d.ts +2 -2
  253. package/dist/features/products/components/index.js +1 -1
  254. package/dist/features/products/config/listing-type-listing-config.d.ts +20 -0
  255. package/dist/features/products/config/listing-type-listing-config.js +22 -10
  256. package/dist/features/products/constants/action-defs.d.ts +2 -0
  257. package/dist/features/products/constants/action-defs.js +6 -0
  258. package/dist/features/products/hooks/useAvailabilityScope.d.ts +13 -0
  259. package/dist/features/products/hooks/useAvailabilityScope.js +19 -0
  260. package/dist/features/products/hooks/useProducts.d.ts +5 -0
  261. package/dist/features/products/hooks/useProducts.js +13 -2
  262. package/dist/features/products/repository/products.repository.d.ts +31 -2
  263. package/dist/features/products/repository/products.repository.js +53 -21
  264. package/dist/features/products/schemas/firestore.d.ts +17 -3
  265. package/dist/features/products/schemas/firestore.js +7 -2
  266. package/dist/features/products/schemas/index.d.ts +66 -66
  267. package/dist/features/products/schemas/product-features.validators.d.ts +6 -6
  268. package/dist/features/products/types/index.d.ts +16 -1
  269. package/dist/features/promotions/schemas/index.d.ts +2 -2
  270. package/dist/features/reviews/schemas/index.d.ts +16 -16
  271. package/dist/features/search/schemas/index.d.ts +4 -4
  272. package/dist/features/seller/actions/offer-actions.js +25 -2
  273. package/dist/features/seller/components/SellerArtView.js +5 -0
  274. package/dist/features/seller/components/SellerAuctionsView.js +13 -15
  275. package/dist/features/seller/components/SellerClassifiedView.js +5 -0
  276. package/dist/features/seller/components/SellerDigitalCodesView.js +5 -0
  277. package/dist/features/seller/components/SellerLiveView.js +5 -0
  278. package/dist/features/seller/components/SellerOrdersView.js +31 -9
  279. package/dist/features/seller/components/SellerPayoutSettingsView.js +19 -18
  280. package/dist/features/seller/components/SellerPreOrdersView.js +5 -0
  281. package/dist/features/seller/components/SellerPrizeDrawsView.js +14 -16
  282. package/dist/features/seller/components/SellerProductShell.js +7 -1
  283. package/dist/features/seller/components/SellerProductsView.js +11 -8
  284. package/dist/features/seller/components/SellerStickersView.js +5 -0
  285. package/dist/features/seller/components/index.d.ts +0 -2
  286. package/dist/features/seller/components/index.js +0 -1
  287. package/dist/features/seller/repository/offer.repository.d.ts +73 -16
  288. package/dist/features/seller/repository/offer.repository.js +38 -3
  289. package/dist/features/seller/schemas/index.d.ts +2 -2
  290. package/dist/features/seller/schemas/offer-forms.d.ts +25 -0
  291. package/dist/features/seller/schemas/offer-forms.js +21 -0
  292. package/dist/features/seller/server.d.ts +0 -1
  293. package/dist/features/seller/server.js +0 -1
  294. package/dist/features/shell/SectionForm.d.ts +99 -0
  295. package/dist/features/shell/SectionForm.js +128 -0
  296. package/dist/features/shell/entity-form.d.ts +109 -0
  297. package/dist/features/shell/entity-form.js +96 -0
  298. package/dist/features/shell/index.d.ts +4 -0
  299. package/dist/features/shell/index.js +2 -0
  300. package/dist/features/stores/api/[storeSlug]/route.js +2 -25
  301. package/dist/features/stores/components/StoreAuctionsListing.js +15 -1
  302. package/dist/features/stores/components/StoreClassifiedsListing.js +12 -2
  303. package/dist/features/stores/components/StoreDetailLayoutView.js +24 -71
  304. package/dist/features/stores/components/StoreDigitalCodesListing.js +12 -2
  305. package/dist/features/stores/components/StoreLiveItemsListing.js +12 -2
  306. package/dist/features/stores/components/StorePreOrdersListing.js +12 -1
  307. package/dist/features/stores/components/StoreProductsListing.js +11 -1
  308. package/dist/features/stores/repository/store.repository.js +6 -0
  309. package/dist/features/stores/schemas/index.d.ts +6 -6
  310. package/dist/features/support/schemas/index.d.ts +4 -4
  311. package/dist/features/tester/actions/checklist-item-actions.d.ts +4 -4
  312. package/dist/features/tester/seed-data/offers-tester-seed-data.js +119 -3
  313. package/dist/features/tester/seed-data/products-tester-seed-data.js +131 -1
  314. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +105 -1
  315. package/dist/features/wishlist/hooks/useWishlistWithGuest.d.ts +1 -1
  316. package/dist/index.d.ts +13 -10
  317. package/dist/index.js +14 -9
  318. package/dist/next/routing/route-map.d.ts +7 -1
  319. package/dist/next/routing/route-map.js +5 -0
  320. package/dist/providers/db-firebase/base.repository.d.ts +30 -0
  321. package/dist/providers/db-firebase/base.repository.js +50 -1
  322. package/dist/providers/db-firebase/index.d.ts +1 -1
  323. package/dist/providers/db-firebase/index.js +1 -1
  324. package/dist/providers/db-firebase/sieve.d.ts +25 -0
  325. package/dist/providers/db-firebase/sieve.js +52 -18
  326. package/dist/react/hooks/useUrlTable.js +10 -1
  327. package/dist/schemas/registry.d.ts +68 -68
  328. package/dist/seed/_helpers/category-forest.d.ts +2 -0
  329. package/dist/seed/_helpers/category-forest.js +309 -0
  330. package/dist/seed/_helpers/category-tree.d.ts +27 -0
  331. package/dist/seed/_helpers/category-tree.js +103 -0
  332. package/dist/seed/catalogue-seed-data.js +12 -12
  333. package/dist/seed/categories-seed-data.js +177 -162
  334. package/dist/seed/events-seed-data.js +61 -10
  335. package/dist/seed/homepage-sections-seed-data.js +5 -1
  336. package/dist/seed/offers-seed-data.js +32 -27
  337. package/dist/seed/products-art-seed-data.js +50 -12
  338. package/dist/seed/products-auctions-seed-data.js +97 -18
  339. package/dist/seed/products-classifieds-seed-data.js +80 -16
  340. package/dist/seed/products-digital-codes-seed-data.js +66 -18
  341. package/dist/seed/products-live-items-seed-data.js +64 -13
  342. package/dist/seed/products-preorders-seed-data.d.ts +0 -1
  343. package/dist/seed/products-preorders-seed-data.js +52 -13
  344. package/dist/seed/products-prize-draws-seed-data.js +63 -14
  345. package/dist/seed/products-standard-seed-data.js +99 -26
  346. package/dist/seed/products-stickers-seed-data.js +47 -12
  347. package/dist/seed/reviews-seed-data.js +6 -1
  348. package/dist/seed/site-settings-seed-data.d.ts +1 -38
  349. package/dist/seed/site-settings-seed-data.js +38 -76
  350. package/dist/seed/stores-seed-data.js +71 -1
  351. package/dist/seed/users-seed-data.js +15 -5
  352. package/dist/server-entry.d.ts +1 -2
  353. package/dist/server-entry.js +4 -3
  354. package/dist/server.d.ts +4 -3
  355. package/dist/server.js +8 -4
  356. package/dist/styles.css +78 -12
  357. package/dist/tailwind-utilities.css +1 -1
  358. package/dist/ui/components/Button.style.css +19 -4
  359. package/dist/ui/components/CollapsibleSection.d.ts +17 -1
  360. package/dist/ui/components/CollapsibleSection.js +6 -2
  361. package/dist/ui/components/FilterChipGroup.d.ts +25 -1
  362. package/dist/ui/components/FilterChipGroup.js +21 -4
  363. package/dist/ui/components/HandMode.style.css +47 -0
  364. package/dist/ui/components/Layout.d.ts +9 -2
  365. package/dist/ui/components/Layout.js +1 -1
  366. package/dist/ui/components/ListingLayout.js +8 -8
  367. package/dist/ui/components/ListingLayout.style.css +8 -7
  368. package/dist/ui/components/StickyToolbar.d.ts +3 -1
  369. package/dist/ui/components/StickyToolbar.js +62 -20
  370. package/dist/ui/components/bottom-chrome-slot.d.ts +21 -0
  371. package/dist/ui/components/bottom-chrome-slot.js +29 -0
  372. package/dist/ui/components/index.style.css +3 -0
  373. package/dist/ui/forms/FormShell.d.ts +43 -13
  374. package/dist/ui/forms/FormShell.js +22 -11
  375. package/dist/ui/forms/index.d.ts +1 -1
  376. package/dist/ui/index.d.ts +1 -1
  377. package/package.json +2 -2
@@ -0,0 +1,186 @@
1
+ "use client";
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /*
4
+ * WHY: Offers had a seller surface (/store/offers) and a buyer surface
5
+ * (/user/offers) but no admin surface at all — despite the offers
6
+ * collection carrying real money commitments, a 48h locked price, and a
7
+ * lane that can block a buyer's whole cart. There was no way for support
8
+ * to see an offer, let alone clear a stuck one.
9
+ * WHAT: The admin offers list. Cloned from SellerOffersView rather than
10
+ * AdminBidsView: the seller view is already offer-shaped and already
11
+ * satisfies `audit-listing-detail-affordance` (row click -> detail
12
+ * modal), whereas AdminBidsView is itself still on the Root Cause #56
13
+ * backlog and cloning it would have added a tenth violation.
14
+ *
15
+ * Two things differ from the seller view, both deliberate:
16
+ * - the buyer's real name/email is shown UNMASKED (the seller view masks via
17
+ * `maskOfferForSeller`) — an admin investigating a dispute needs identity;
18
+ * - the only mutation is Cancel. Accepting or countering on a seller's behalf
19
+ * is an authority nobody asked for, so `ADMIN_ROW_ACTIONS.offers` is
20
+ * deliberately just [VIEW, CANCEL].
21
+ *
22
+ * EXPORTS:
23
+ * AdminOffersView
24
+ *
25
+ * @tag domain:admin,offers
26
+ * @tag layer:feature-view
27
+ * @tag pattern:slot-shell
28
+ * @tag access:client
29
+ * @tag consumers:src/app/[locale]/admin/offers/page.tsx
30
+ * @tag sideEffects:network
31
+ */
32
+ import { useApiMutation } from "@mohasinac/appkit/client";
33
+ import { sieveFilter, SIEVE_OP } from "@mohasinac/appkit/client";
34
+ import { sortBy } from "@mohasinac/appkit/client";
35
+ import React, { useState } from "react";
36
+ import { useQueryClient } from "@tanstack/react-query";
37
+ import { ConfirmDeleteModal, FilterChipGroup, ListingLayout, RecordDetailModal, RowActionMenu, useToast, } from "../../../ui";
38
+ import { ADMIN_ENDPOINTS } from "../../../constants/api-endpoints";
39
+ import { ADMIN_OFFER_STATUS_TABS } from "../constants/filter-tabs";
40
+ import { ACTIONS } from "../../../_internal/shared/actions/action-registry";
41
+ import { ROW_ACTION_META, ROW_ACTION_ID } from "../../products/constants/action-defs";
42
+ import { ROUTES } from "../../../next/routing/route-map";
43
+ import { toRecordArray, toRelativeDate, toCurrency, toStringValue, } from "../hooks/useAdminListingData";
44
+ import { DataListingView } from "./DataListingView";
45
+ import { apiClient } from "../../../http";
46
+ /** Terminal states — an offer here has nothing left to cancel. */
47
+ const TERMINAL_STATUSES = new Set(["paid", "declined", "expired", "withdrawn"]);
48
+ export function AdminOffersView({ children, ...props }) {
49
+ const queryClient = useQueryClient();
50
+ const { showToast } = useToast();
51
+ const [detailRow, setDetailRow] = useState(null);
52
+ const [cancelOpen, setCancelOpen] = useState(false);
53
+ const [selectedRow, setSelectedRow] = useState(null);
54
+ const cancelMutation = useApiMutation({
55
+ mutationFn: async (offerId) => {
56
+ await apiClient.patch(ADMIN_ENDPOINTS.OFFER_BY_ID(offerId), { status: "expired" });
57
+ },
58
+ onSuccess: () => {
59
+ showToast("Offer cancelled and cleared from the buyer's cart.", "success");
60
+ queryClient.invalidateQueries({ queryKey: ["admin", "offers"] });
61
+ setCancelOpen(false);
62
+ setSelectedRow(null);
63
+ },
64
+ onError: (err) => {
65
+ showToast(err?.message ?? "Failed to cancel offer.", "error");
66
+ },
67
+ });
68
+ if (React.Children.count(children) > 0) {
69
+ return (_jsx(ListingLayout, { portal: "admin", ...props, children: children }));
70
+ }
71
+ const config = {
72
+ portal: "admin",
73
+ title: "Offers",
74
+ searchPlaceholder: "Search offers by product, buyer, or store",
75
+ emptyLabel: "No offers found",
76
+ filterKeys: ["status"],
77
+ defaultSort: sortBy("createdAt", "DESC"),
78
+ queryKey: ["admin", "offers", "listing"],
79
+ endpoint: ADMIN_ENDPOINTS.OFFERS,
80
+ sortOptions: [
81
+ { value: sortBy("createdAt", "DESC"), label: "Newest" },
82
+ { value: sortBy("createdAt", "ASC"), label: "Oldest" },
83
+ { value: sortBy("offerAmount", "DESC"), label: "Highest offer" },
84
+ ],
85
+ mapRows: (response) => toRecordArray(response.items).map((item, index) => ({
86
+ id: toStringValue(item.id, `offer-${index}`),
87
+ // The LISTING, not the offer id — a row identified only by
88
+ // `offer-…-20260819-x7y8z9` is unreadable at a glance (Root Cause #52).
89
+ primary: toStringValue(item.productTitle, "Untitled listing"),
90
+ // Admin sees both sides of the negotiation, unmasked.
91
+ secondary: [
92
+ `Offer: ${toCurrency(item.offerAmount)}`,
93
+ `Listed: ${toCurrency(item.listedPrice)}`,
94
+ `${toStringValue(item.buyerName, "Unknown buyer")} → ${toStringValue(item.storeName, "Unknown store")}`,
95
+ ].join(" · "),
96
+ status: toStringValue(item.status, "pending"),
97
+ updatedAt: toRelativeDate(item.updatedAt ?? item.createdAt),
98
+ detail: item,
99
+ })),
100
+ getTotal: (response, mappedRows) => typeof response.total === "number" ? response.total : mappedRows.length,
101
+ // A menu of pure mutations is not a detail affordance (Root Cause #56) —
102
+ // cancelling an offer without first reading it is acting blind.
103
+ onRowClick: (row) => setDetailRow(row),
104
+ buildFilters: (state) => state.status && state.status !== "All"
105
+ ? sieveFilter("status", SIEVE_OP.EQ, state.status)
106
+ : undefined,
107
+ buildBulkActions: (selection) => [
108
+ {
109
+ id: ROW_ACTION_ID.CANCEL,
110
+ label: ACTIONS.ADMIN["cancel-offer"].label,
111
+ variant: "secondary",
112
+ onClick: () => selection.clearSelection(),
113
+ },
114
+ ],
115
+ renderRowActions: (row) => (_jsx(RowActionMenu, { actions: [
116
+ { label: ROW_ACTION_META[ROW_ACTION_ID.VIEW].label, onClick: () => setDetailRow(row) },
117
+ {
118
+ label: ACTIONS.ADMIN["cancel-offer"].label,
119
+ destructive: true,
120
+ disabled: TERMINAL_STATUSES.has(row.status),
121
+ onClick: () => {
122
+ setSelectedRow(row);
123
+ setCancelOpen(true);
124
+ },
125
+ },
126
+ ] })),
127
+ renderFilterPanel: ({ pendingFilters, setPendingFilters }) => (_jsx(FilterChipGroup, { label: "Status", tabs: ADMIN_OFFER_STATUS_TABS, value: pendingFilters.status ?? "", onChange: (id) => setPendingFilters((p) => ({ ...p, status: id })) })),
128
+ };
129
+ const d = detailRow?.detail ?? {};
130
+ const productSlug = toStringValue(d.productSlug ?? d.productId, "");
131
+ const paidOrderId = toStringValue(d.paidOrderId, "");
132
+ return (_jsxs(_Fragment, { children: [_jsx(DataListingView, { config: config }), _jsx(RecordDetailModal, { isOpen: detailRow !== null, onClose: () => setDetailRow(null), title: detailRow?.primary ?? "Offer", badges: detailRow ? [{ label: detailRow.status }] : undefined, description: toStringValue(d.buyerNote, ""), fields: [
133
+ { label: "Buyer", value: toStringValue(d.buyerName, "Unknown buyer") },
134
+ { label: "Buyer email", value: toStringValue(d.buyerEmail, "—") },
135
+ { label: "Store", value: toStringValue(d.storeName, "Unknown store") },
136
+ { label: "Listed price", value: toCurrency(d.listedPrice) },
137
+ { label: "Offered", value: toCurrency(d.offerAmount) },
138
+ ...(d.counterAmount
139
+ ? [{ label: "Seller counter", value: toCurrency(d.counterAmount) }]
140
+ : []),
141
+ ...(d.lockedPrice
142
+ ? [{ label: "Locked price", value: toCurrency(d.lockedPrice) }]
143
+ : []),
144
+ ...(d.sellerNote
145
+ ? [{ label: "Seller note", value: toStringValue(d.sellerNote, "") }]
146
+ : []),
147
+ { label: "Offer expires", value: toRelativeDate(d.expiresAt) },
148
+ ...(d.checkoutDeadline
149
+ ? [{ label: "Buyer must pay by", value: toRelativeDate(d.checkoutDeadline) }]
150
+ : []),
151
+ { label: "Created", value: toRelativeDate(d.createdAt) },
152
+ { label: "Offer ID", value: detailRow?.id ?? "—" },
153
+ ], items: detailRow
154
+ ? {
155
+ heading: "Listing",
156
+ entries: [
157
+ {
158
+ image: toStringValue(d.productImageUrl, "") || undefined,
159
+ title: detailRow.primary,
160
+ subtitle: toStringValue(d.productId, ""),
161
+ trailing: toCurrency(d.listedPrice),
162
+ href: productSlug
163
+ ? String(ROUTES.PUBLIC.PRODUCT_DETAIL(productSlug))
164
+ : undefined,
165
+ },
166
+ // A paid offer became a real order — link to it, so the
167
+ // "what happened next" question has an answer in one click.
168
+ ...(paidOrderId
169
+ ? [
170
+ {
171
+ title: `Order ${paidOrderId}`,
172
+ subtitle: "Placed from this offer",
173
+ href: String(ROUTES.ADMIN.ORDER_DETAIL(paidOrderId)),
174
+ },
175
+ ]
176
+ : []),
177
+ ],
178
+ }
179
+ : undefined }), _jsx(ConfirmDeleteModal, { isOpen: cancelOpen, onClose: () => {
180
+ setCancelOpen(false);
181
+ setSelectedRow(null);
182
+ }, onConfirm: () => {
183
+ if (selectedRow)
184
+ cancelMutation.mutate(selectedRow.id);
185
+ }, isDeleting: cancelMutation.isPending, title: ACTIONS.ADMIN["cancel-offer"].confirmation.title, message: ACTIONS.ADMIN["cancel-offer"].confirmation.body, confirmText: ACTIONS.ADMIN["cancel-offer"].confirmation.confirmLabel, variant: "warning" })] }));
186
+ }
@@ -12,6 +12,7 @@ import { ROUTES } from "../../../next/routing/route-map";
12
12
  import { ADMIN_BULK_ACTIONS, ROW_ACTION_META, ROW_ACTION_ID } from "../../products/constants/action-defs";
13
13
  import { ADMIN_ORDER_STATUS_TABS, ADMIN_ORDER_PAYMENT_REVIEW_TABS } from "../constants/filter-tabs";
14
14
  import { isManualPaymentMethod, isPaymentReviewQueueMode } from "../../orders/constants/payment-window";
15
+ import { useOrderScope } from "../../orders/components/OrderScopeTabs";
15
16
  import { toRecordArray, toRelativeDate, toCurrency, toStringValue, } from "../hooks/useAdminListingData";
16
17
  import { DataListingView } from "./DataListingView";
17
18
  import { AdminOrderEditorView } from "./AdminOrderEditorView";
@@ -80,6 +81,7 @@ export function AdminOrdersView({ children, ...props }) {
80
81
  if (React.Children.count(children) > 0) {
81
82
  return (_jsx(ListingLayout, { portal: "admin", ...props, children: children }));
82
83
  }
84
+ const orderScope = useOrderScope();
83
85
  const config = {
84
86
  portal: "admin",
85
87
  title: "Orders",
@@ -147,7 +149,14 @@ export function AdminOrdersView({ children, ...props }) {
147
149
  return undefined;
148
150
  return f.status && f.status !== "All" ? sieveFilter("status", SIEVE_OP.EQ, f.status) : undefined;
149
151
  },
150
- buildExtraParams: (f) => isPaymentReviewQueueMode(f.paymentReview ?? "") ? { paymentReview: f.paymentReview } : undefined,
152
+ // The payment-review queue is its own mode — it already ignores `status`
153
+ // (see buildFilters above), so it must ignore the lifecycle scope too, or
154
+ // an admin opening the queue from the default Active tab would see it
155
+ // silently narrowed.
156
+ buildExtraParams: (f) => isPaymentReviewQueueMode(f.paymentReview ?? "")
157
+ ? { paymentReview: f.paymentReview }
158
+ : orderScope.extraParams,
159
+ renderAboveContent: orderScope.renderAboveContent,
151
160
  // Mirrors the row action's "View full details" entry so the row itself
152
161
  // is clickable, not just the overflow menu.
153
162
  onRowClick: (row) => {
@@ -11,6 +11,8 @@ import { ADMIN_PRODUCT_STATUS_TABS } from "../constants/filter-tabs";
11
11
  import { ROUTES } from "../../../constants";
12
12
  import { toRecordArray, toRelativeDate, toCurrency, toStringValue, } from "../hooks/useAdminListingData";
13
13
  import { DataListingView } from "./DataListingView";
14
+ import { useAvailabilityScope } from "../../products/hooks/useAvailabilityScope";
15
+ const PRIZE_DRAW_TYPES = ["prize-draw"];
14
16
  const STATUS_VARIANT = {
15
17
  published: "success",
16
18
  active: "success",
@@ -57,6 +59,7 @@ export function AdminPrizeDrawsView({ children, ...props }) {
57
59
  if (React.Children.count(children) > 0) {
58
60
  return (_jsx(ListingLayout, { portal: "admin", ...props, children: children }));
59
61
  }
62
+ const scope = useAvailabilityScope(PRIZE_DRAW_TYPES);
60
63
  const config = {
61
64
  portal: "admin",
62
65
  title: "Prize Draws",
@@ -94,6 +97,8 @@ export function AdminPrizeDrawsView({ children, ...props }) {
94
97
  const status = state.status && state.status !== "All" ? sieveFilter("status", SIEVE_OP.EQ, state.status) : null;
95
98
  return ["listingType==prize-draw", status].filter(Boolean).join(",");
96
99
  },
100
+ buildExtraParams: () => scope.extraParams,
101
+ renderAboveContent: scope.renderAboveContent,
97
102
  rowHrefTemplate: String(ROUTES.ADMIN.PRIZE_DRAWS_EDIT("{id}")),
98
103
  // Rule #7: bulk-action array sourced from the ADMIN_BULK_ACTIONS preset.
99
104
  buildBulkActions: (selection) => ADMIN_BULK_ACTIONS.prizeDraws.map((id) => ({
@@ -16,6 +16,8 @@ import { AdminProductEditorView } from "./AdminProductEditorView";
16
16
  import { QuickEditMenu } from "./QuickEditMenu";
17
17
  import { ADMIN_BULK_ACTIONS, ROW_ACTION_META, ROW_ACTION_ID } from "../../products/constants/action-defs";
18
18
  import { parseSelectedListingTypes } from "../../products/utils/listing-type";
19
+ import { useAvailabilityScope } from "../../products/hooks/useAvailabilityScope";
20
+ import { ALL_LISTING_TYPES } from "../../../_internal/shared/listing-types/feature-flags";
19
21
  const FLAG_DEFS = [
20
22
  { key: "featured", label: "Featured" },
21
23
  { key: "isPromoted", label: "Promoted" },
@@ -95,16 +97,15 @@ export function AdminProductsView({ children, ...props }) {
95
97
  void handleToggle(row.id, key, v);
96
98
  } }, key))) })),
97
99
  };
98
- // We need showSold state to be derived from URL — read it via a small inner component
99
- // that uses the listing's own table state. To keep things simple, use a ref into the
100
- // config's render-prop chain via `renderAboveContent` which has no useUrlTable.
101
- // Simplest: use buildFilters which gets the full filterState, and add showSold to filterKeys.
100
+ // Spans every listing type unless the Type chips narrow it, which is what
101
+ // makes the middle tab read "Sold & Ended" here rather than one or the other.
102
+ const scope = useAvailabilityScope(ALL_LISTING_TYPES);
102
103
  const config = {
103
104
  portal: "admin",
104
105
  title: "Products",
105
106
  searchPlaceholder: "Search products, SKUs, or seller names",
106
107
  emptyLabel: "No products found",
107
- filterKeys: ["status", "type", "showSold", "showEnded", "showClosed"],
108
+ filterKeys: ["status", "type"],
108
109
  defaultSort: sortBy("createdAt", "DESC"),
109
110
  queryKey: ["admin", "products", "listing"],
110
111
  endpoint: ADMIN_ENDPOINTS.PRODUCTS,
@@ -169,8 +170,6 @@ export function AdminProductsView({ children, ...props }) {
169
170
  getTotal: (response, mappedRows) => typeof response.total === "number" ? response.total : mappedRows.length,
170
171
  buildFilters: (state) => {
171
172
  const parts = [];
172
- if (state.showSold !== "true")
173
- parts.push("isSold==false");
174
173
  if (state.status && state.status !== "All")
175
174
  parts.push(sieveFilter("status", SIEVE_OP.EQ, state.status));
176
175
  // `state.type` is a pipe-joined set of canonical ListingType values
@@ -181,20 +180,17 @@ export function AdminProductsView({ children, ...props }) {
181
180
  if (selectedTypes.length > 0) {
182
181
  parts.push(sieveFilter("listingType", SIEVE_OP.EQ, selectedTypes.join("|")));
183
182
  }
184
- // Ended/closed are per-type predicates: `auctionEndDate` and
185
- // `prizeRevealWindowEnd` only exist on auctions and prize-draws. Apply
186
- // each only when its type is the ONLY one selected — with a mixed
187
- // selection the inequality would exclude every row of the other types
188
- // (they have no such field at all), which reads as "no results".
189
- const onlyType = selectedTypes.length === 1 ? selectedTypes[0] : null;
190
- if (onlyType === "auction" && state.showEnded !== "true") {
191
- parts.push(sieveFilter("auctionEndDate", SIEVE_OP.GTE, new Date().toISOString()));
192
- }
193
- if (onlyType === "prize-draw" && state.showClosed !== "true") {
194
- parts.push(sieveFilter("prizeRevealWindowEnd", SIEVE_OP.GTE, new Date().toISOString()));
195
- }
183
+ // Three drawer chips (Sold / Ended / Closed) used to live here, each
184
+ // emitting its own clause and each guarded by an `onlyType` check
185
+ // because `auctionEndDate` and `prizeRevealWindowEnd` do not exist on
186
+ // the other seven types. That guard meant the ended/closed filters
187
+ // silently did nothing on any mixed selection. The scope param replaces
188
+ // all three, and resolves the per-type meaning server-side — so it works
189
+ // across a mixed selection, which is the common case here.
196
190
  return parts.join(",") || undefined;
197
191
  },
192
+ buildExtraParams: () => scope.extraParams,
193
+ renderAboveContent: scope.renderAboveContent,
198
194
  primaryAction: {
199
195
  label: "Add Product",
200
196
  onClick: ({ openCreatePanel }) => openCreatePanel(),
@@ -263,16 +259,7 @@ export function AdminProductsView({ children, ...props }) {
263
259
  submitLabel: "Save",
264
260
  },
265
261
  ] })),
266
- renderFilterPanel: ({ pendingFilters, setPendingFilters }) => (_jsxs(_Fragment, { children: [_jsx(FilterChipGroup, { label: "Status", tabs: ADMIN_PRODUCT_STATUS_TABS, value: pendingFilters.status ?? "", onChange: (id) => setPendingFilters((p) => ({ ...p, status: id })) }), _jsx(FilterChipGroup, { multiple: true, label: "Type", tabs: ADMIN_PRODUCT_LISTING_TYPE_TABS, value: pendingFilters.type ?? "", onChange: (ids) => setPendingFilters((p) => ({ ...p, type: ids })) }), _jsx(FilterChipGroup, { label: "Sold", tabs: [
267
- { id: "", label: "Hide sold" },
268
- { id: "true", label: "Show sold" },
269
- ], value: pendingFilters.showSold ?? "", onChange: (id) => setPendingFilters((p) => ({ ...p, showSold: id })), allId: "" }), _jsx(FilterChipGroup, { label: "Ended", tabs: [
270
- { id: "", label: "Hide ended" },
271
- { id: "true", label: "Show ended" },
272
- ], value: pendingFilters.showEnded ?? "", onChange: (id) => setPendingFilters((p) => ({ ...p, showEnded: id })), allId: "" }), _jsx(FilterChipGroup, { label: "Closed", tabs: [
273
- { id: "", label: "Hide closed" },
274
- { id: "true", label: "Show closed" },
275
- ], value: pendingFilters.showClosed ?? "", onChange: (id) => setPendingFilters((p) => ({ ...p, showClosed: id })), allId: "" })] })),
262
+ renderFilterPanel: ({ pendingFilters, setPendingFilters }) => (_jsxs(_Fragment, { children: [_jsx(FilterChipGroup, { label: "Status", tabs: ADMIN_PRODUCT_STATUS_TABS, value: pendingFilters.status ?? "", onChange: (id) => setPendingFilters((p) => ({ ...p, status: id })) }), _jsx(FilterChipGroup, { multiple: true, label: "Type", tabs: ADMIN_PRODUCT_LISTING_TYPE_TABS, value: pendingFilters.type ?? "", onChange: (ids) => setPendingFilters((p) => ({ ...p, type: ids })) })] })),
276
263
  renderEditor: ({ editId, closePanel }) => (_jsx(AdminProductEditorView, { productId: editId ?? undefined, initialData: editId ? rawByIdRef.current[editId] : undefined, onSaved: closePanel, onDeleted: closePanel, embedded: true })),
277
264
  resolveEditorTitle: ({ isCreate }) => (isCreate ? "Add Product" : "Edit Product"),
278
265
  };