@mohasinac/appkit 4.30.18 → 4.31.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 (557) hide show
  1. package/dist/_internal/client/features/digital-code/CodeRevealPanel.js +5 -2
  2. package/dist/_internal/client/features/layout/DashboardLayoutClient.js +3 -3
  3. package/dist/_internal/client/features/layout/useSidebarSearch.d.ts +21 -5
  4. package/dist/_internal/client/features/layout/useSidebarSearch.js +27 -6
  5. package/dist/_internal/client/features/lottery/LotteryAdminEditView.d.ts +23 -3
  6. package/dist/_internal/client/features/lottery/LotteryAdminEditView.js +106 -86
  7. package/dist/_internal/client/features/lottery/LotteryPullForm.d.ts +16 -5
  8. package/dist/_internal/client/features/lottery/LotteryPullForm.js +65 -40
  9. package/dist/_internal/client/features/maintenance/views/AnalysisRunnerView.js +5 -2
  10. package/dist/_internal/client/features/maintenance/views/CloudLogsListView.js +11 -3
  11. package/dist/_internal/client/hand-mode/HandModeProvider.js +2 -0
  12. package/dist/_internal/server/features/auctions/actions.js +14 -3
  13. package/dist/_internal/server/features/auctions/service.js +1 -1
  14. package/dist/_internal/server/features/auth/permissions.d.ts +2 -0
  15. package/dist/_internal/server/features/auth/permissions.js +3 -2
  16. package/dist/_internal/server/features/blog/data.js +2 -2
  17. package/dist/_internal/server/features/blog/service.js +3 -3
  18. package/dist/_internal/server/features/brands/data.js +1 -1
  19. package/dist/_internal/server/features/brands/service.js +3 -3
  20. package/dist/_internal/server/features/bundles/actions.js +6 -1
  21. package/dist/_internal/server/features/bundles/data.js +21 -4
  22. package/dist/_internal/server/features/cart/data.js +3 -1
  23. package/dist/_internal/server/features/cart/service.js +13 -2
  24. package/dist/_internal/server/features/categories/data.js +26 -6
  25. package/dist/_internal/server/features/classified/index.d.ts +0 -1
  26. package/dist/_internal/server/features/classified/index.js +0 -1
  27. package/dist/_internal/server/features/digital-code/index.d.ts +0 -1
  28. package/dist/_internal/server/features/digital-code/index.js +0 -1
  29. package/dist/_internal/server/features/events/actions.js +17 -4
  30. package/dist/_internal/server/features/events/data.js +1 -1
  31. package/dist/_internal/server/features/events/service.js +1 -1
  32. package/dist/_internal/server/features/grouped/data.js +7 -2
  33. package/dist/_internal/server/features/item-requests/data.js +1 -1
  34. package/dist/_internal/server/features/live/index.d.ts +0 -1
  35. package/dist/_internal/server/features/live/index.js +0 -1
  36. package/dist/_internal/server/features/lottery/actions.js +2 -2
  37. package/dist/_internal/server/features/lottery/data.js +1 -1
  38. package/dist/_internal/server/features/orders/actions.js +7 -7
  39. package/dist/_internal/server/features/orders/data.d.ts +1 -1
  40. package/dist/_internal/server/features/orders/data.js +14 -2
  41. package/dist/_internal/server/features/orders/service.js +1 -1
  42. package/dist/_internal/server/features/pre-orders/service.js +1 -1
  43. package/dist/_internal/server/features/prize-draws/actions.js +1 -1
  44. package/dist/_internal/server/features/products/data.js +21 -6
  45. package/dist/_internal/server/features/products/list-public.d.ts +9 -0
  46. package/dist/_internal/server/features/products/list-public.js +95 -7
  47. package/dist/_internal/server/features/products/service.js +1 -1
  48. package/dist/_internal/server/features/promotions/actions.js +1 -1
  49. package/dist/_internal/server/features/promotions/data.js +1 -1
  50. package/dist/_internal/server/features/promotions/service.js +1 -1
  51. package/dist/_internal/server/features/reviews/data.d.ts +1 -1
  52. package/dist/_internal/server/features/reviews/data.js +6 -1
  53. package/dist/_internal/server/features/reviews/og-data.js +1 -1
  54. package/dist/_internal/server/features/shared/listing-data-factory.js +7 -2
  55. package/dist/_internal/server/features/site-settings/adapters.d.ts +2 -2
  56. package/dist/_internal/server/features/site-settings/adapters.js +8 -5
  57. package/dist/_internal/server/features/stores/data.js +1 -1
  58. package/dist/_internal/server/features/sublisting-categories/data.js +1 -1
  59. package/dist/_internal/server/features/tester/visibility.d.ts +2 -1
  60. package/dist/_internal/server/features/tester/visibility.js +2 -2
  61. package/dist/_internal/server/functions/scheduled.d.ts +3 -1
  62. package/dist/_internal/server/functions/scheduled.js +27 -1
  63. package/dist/_internal/server/jobs/core/auctionSettlement.js +6 -1
  64. package/dist/_internal/server/jobs/core/hardBanCascade.js +4 -0
  65. package/dist/_internal/server/jobs/core/index.d.ts +2 -0
  66. package/dist/_internal/server/jobs/core/index.js +2 -0
  67. package/dist/_internal/server/jobs/core/onOrderStatusChange.js +7 -15
  68. package/dist/_internal/server/jobs/core/pageViewPrune.d.ts +10 -0
  69. package/dist/_internal/server/jobs/core/pageViewPrune.js +44 -0
  70. package/dist/_internal/server/jobs/core/pageViewRollup.d.ts +2 -0
  71. package/dist/_internal/server/jobs/core/pageViewRollup.js +87 -0
  72. package/dist/_internal/server/jobs/core/revenueRollup.js +7 -1
  73. package/dist/_internal/server/jobs/handlers/index.d.ts +2 -0
  74. package/dist/_internal/server/jobs/handlers/index.js +2 -0
  75. package/dist/_internal/server/jobs/handlers/pageViewPrune.d.ts +2 -0
  76. package/dist/_internal/server/jobs/handlers/pageViewPrune.js +2 -0
  77. package/dist/_internal/server/jobs/handlers/pageViewRollup.d.ts +2 -0
  78. package/dist/_internal/server/jobs/handlers/pageViewRollup.js +2 -0
  79. package/dist/_internal/shared/actions/action-registry.d.ts +1 -1
  80. package/dist/_internal/shared/actions/action-registry.js +69 -22
  81. package/dist/_internal/shared/checkout/rules/classified.rule.d.ts +9 -4
  82. package/dist/_internal/shared/checkout/rules/classified.rule.js +7 -2
  83. package/dist/_internal/shared/features/layout/matchesNavQuery.d.ts +14 -0
  84. package/dist/_internal/shared/features/layout/matchesNavQuery.js +72 -0
  85. package/dist/_internal/shared/features/layout/types.d.ts +37 -1
  86. package/dist/_internal/shared/features/layout/types.js +19 -1
  87. package/dist/_internal/shared/features/notifications/action-url.d.ts +9 -1
  88. package/dist/_internal/shared/features/notifications/action-url.js +47 -0
  89. package/dist/_internal/shared/features/offers/config.d.ts +65 -0
  90. package/dist/_internal/shared/features/offers/config.js +73 -2
  91. package/dist/_internal/shared/features/orders/schema.d.ts +19 -1
  92. package/dist/_internal/shared/features/orders/schema.js +22 -2
  93. package/dist/_internal/shared/features/site-settings/types.d.ts +12 -3
  94. package/dist/_internal/shared/listing-types/capabilities.d.ts +8 -2
  95. package/dist/_internal/shared/listing-types/capabilities.js +6 -1
  96. package/dist/_internal/shared/listing-types/classified/ctas.js +6 -1
  97. package/dist/_internal/shared/listing-types/feature-flags.d.ts +10 -5
  98. package/dist/_internal/shared/listing-types/feature-flags.js +11 -6
  99. package/dist/client/api/useApiQuery.js +17 -6
  100. package/dist/client.d.ts +38 -20
  101. package/dist/client.js +39 -14
  102. package/dist/configs/next.js +10 -2
  103. package/dist/constants/api-endpoints.d.ts +18 -54
  104. package/dist/constants/api-endpoints.js +6 -26
  105. package/dist/constants/field-names.d.ts +6 -24
  106. package/dist/constants/field-names.js +10 -27
  107. package/dist/constants/geo/countries.d.ts +50 -0
  108. package/dist/constants/geo/countries.js +129 -0
  109. package/dist/constants/geo/subdivisions.d.ts +13 -0
  110. package/dist/constants/geo/subdivisions.js +104 -0
  111. package/dist/constants/index.d.ts +2 -2
  112. package/dist/constants/index.js +2 -2
  113. package/dist/constants/table-keys.d.ts +24 -0
  114. package/dist/constants/table-keys.js +28 -0
  115. package/dist/contracts/client-realtime.d.ts +6 -0
  116. package/dist/contracts/extend.d.ts +0 -9
  117. package/dist/contracts/index.d.ts +1 -1
  118. package/dist/contracts/realtime-session.d.ts +12 -12
  119. package/dist/contracts/realtime-session.js +79 -77
  120. package/dist/core/browser.d.ts +1 -1
  121. package/dist/core/browser.js +1 -1
  122. package/dist/core/index.d.ts +1 -1
  123. package/dist/core/index.js +1 -1
  124. package/dist/core/site-config.d.ts +0 -3
  125. package/dist/core/site-config.js +0 -3
  126. package/dist/errors/index.d.ts +1 -1
  127. package/dist/errors/index.js +1 -1
  128. package/dist/errors/messages.d.ts +0 -8
  129. package/dist/errors/messages.js +0 -9
  130. package/dist/features/about/components/DeveloperView.js +7 -2
  131. package/dist/features/about/components/PolicyPageView.js +9 -1
  132. package/dist/features/about/components/PublicProfileView.js +23 -5
  133. package/dist/features/about/schemas/index.d.ts +8 -8
  134. package/dist/features/account/components/AddressFilters.js +32 -11
  135. package/dist/features/account/components/AddressForm.d.ts +26 -25
  136. package/dist/features/account/components/AddressForm.js +81 -103
  137. package/dist/features/account/components/AddressesIndexListing.js +8 -4
  138. package/dist/features/account/components/NotificationBell.js +4 -3
  139. package/dist/features/account/components/NotificationPreferencesPanel.js +1 -1
  140. package/dist/features/account/components/UserOffersPanel.js +1 -1
  141. package/dist/features/account/components/UserSidebar.d.ts +3 -4
  142. package/dist/features/account/components/UserSupportView.js +89 -58
  143. package/dist/features/account/components/index.d.ts +1 -7
  144. package/dist/features/account/components/index.js +0 -3
  145. package/dist/features/account/hooks/useAddresses.d.ts +4 -3
  146. package/dist/features/account/hooks/useAddresses.js +4 -6
  147. package/dist/features/account/hooks/useCollapsedSections.d.ts +51 -10
  148. package/dist/features/account/hooks/useCollapsedSections.js +211 -38
  149. package/dist/features/account/hooks/useProfile.d.ts +8 -0
  150. package/dist/features/account/index.d.ts +0 -3
  151. package/dist/features/account/index.js +0 -3
  152. package/dist/features/account/schemas/index.d.ts +0 -92
  153. package/dist/features/account/schemas/index.js +42 -20
  154. package/dist/features/addresses/components/AddressLocationFields.d.ts +13 -0
  155. package/dist/features/addresses/components/AddressLocationFields.js +41 -0
  156. package/dist/features/addresses/hooks/usePostalLookup.d.ts +17 -0
  157. package/dist/features/addresses/hooks/usePostalLookup.js +133 -0
  158. package/dist/features/addresses/schemas/address-form.d.ts +423 -0
  159. package/dist/features/addresses/schemas/address-form.js +212 -0
  160. package/dist/features/addresses/schemas/index.d.ts +1 -0
  161. package/dist/features/addresses/schemas/index.js +8 -0
  162. package/dist/features/admin/actions/admin-read-actions.d.ts +1 -1
  163. package/dist/features/admin/actions/index.d.ts +0 -1
  164. package/dist/features/admin/actions/index.js +0 -1
  165. package/dist/features/admin/actions/notification-actions.js +1 -41
  166. package/dist/features/admin/components/AdminActionIndexView.d.ts +32 -0
  167. package/dist/features/admin/components/AdminActionIndexView.js +128 -0
  168. package/dist/features/admin/components/AdminAdEditorView.js +159 -163
  169. package/dist/features/admin/components/AdminAddressEditorView.js +97 -55
  170. package/dist/features/admin/components/AdminBrandEditorView.d.ts +15 -0
  171. package/dist/features/admin/components/AdminBrandEditorView.js +113 -77
  172. package/dist/features/admin/components/AdminBundleEditorView.d.ts +19 -9
  173. package/dist/features/admin/components/AdminBundleEditorView.js +136 -168
  174. package/dist/features/admin/components/AdminCategoryEditorView.js +120 -43
  175. package/dist/features/admin/components/AdminCouponEditorView.js +145 -109
  176. package/dist/features/admin/components/AdminEmployeeEditorView.js +125 -56
  177. package/dist/features/admin/components/AdminFaqEditorView.js +112 -58
  178. package/dist/features/admin/components/AdminFeatureEditorView.js +108 -68
  179. package/dist/features/admin/components/AdminFulfillmentView.js +5 -2
  180. package/dist/features/admin/components/AdminMediaView.js +3 -3
  181. package/dist/features/admin/components/AdminNavEditorView.js +69 -44
  182. package/dist/features/admin/components/AdminOrderEditorView.js +47 -10
  183. package/dist/features/admin/components/AdminPrizeDrawsView.js +16 -2
  184. package/dist/features/admin/components/AdminSidebar.d.ts +11 -7
  185. package/dist/features/admin/components/AdminSiteSettingsView.js +37 -37
  186. package/dist/features/admin/components/AdminStoreEditorView.js +75 -52
  187. package/dist/features/admin/components/AdminSublistingCategoryEditorView.js +71 -30
  188. package/dist/features/admin/components/AdminTesterChecklistItemEditorView.js +95 -65
  189. package/dist/features/admin/components/BrandQuickCreateForm.d.ts +10 -0
  190. package/dist/features/admin/components/BrandQuickCreateForm.js +49 -26
  191. package/dist/features/admin/components/CategoryQuickCreateForm.d.ts +11 -0
  192. package/dist/features/admin/components/CategoryQuickCreateForm.js +48 -26
  193. package/dist/features/admin/components/index.d.ts +2 -2
  194. package/dist/features/admin/components/index.js +1 -1
  195. package/dist/features/admin/constants/site-settings-tabs.d.ts +120 -0
  196. package/dist/features/admin/constants/site-settings-tabs.js +152 -0
  197. package/dist/features/admin/index.d.ts +0 -3
  198. package/dist/features/admin/index.js +0 -2
  199. package/dist/features/admin/repository/analytics-rollup.repository.d.ts +35 -0
  200. package/dist/features/admin/repository/analytics-rollup.repository.js +30 -0
  201. package/dist/features/admin/schemas/admin-editor-forms.d.ts +56 -57
  202. package/dist/features/admin/schemas/admin-editor-forms.js +97 -54
  203. package/dist/features/admin/schemas/admin-ops-forms.d.ts +57 -5
  204. package/dist/features/admin/schemas/admin-ops-forms.js +104 -20
  205. package/dist/features/admin/schemas/admin-user-form.js +7 -0
  206. package/dist/features/admin/schemas/firestore.d.ts +48 -95
  207. package/dist/features/admin/schemas/firestore.js +15 -151
  208. package/dist/features/admin/schemas/nav-item-form.js +9 -2
  209. package/dist/features/admin/server.d.ts +0 -4
  210. package/dist/features/admin/server.js +0 -2
  211. package/dist/features/admin/types/index.d.ts +0 -7
  212. package/dist/features/analytics/repository/page-views.repository.d.ts +14 -0
  213. package/dist/features/analytics/repository/page-views.repository.js +24 -0
  214. package/dist/features/analytics/types.d.ts +1 -1
  215. package/dist/features/analytics/types.js +13 -0
  216. package/dist/features/auctions/components/AuctionDetailPageView.js +6 -2
  217. package/dist/features/auctions/components/MarketplaceAuctionCard.js +3 -1
  218. package/dist/features/auth/actions/index.d.ts +0 -1
  219. package/dist/features/auth/actions/index.js +0 -1
  220. package/dist/features/auth/actions/profile-actions.js +4 -3
  221. package/dist/features/auth/actions/realtime-token-actions.js +1 -12
  222. package/dist/features/auth/auth-helpers.js +5 -7
  223. package/dist/features/auth/components/ForgotPasswordView.js +1 -1
  224. package/dist/features/auth/components/Guards.js +2 -1
  225. package/dist/features/auth/components/LoginForm.d.ts +0 -2
  226. package/dist/features/auth/components/LoginForm.js +2 -4
  227. package/dist/features/auth/components/RegisterForm.js +62 -19
  228. package/dist/features/auth/components/ResetPasswordView.js +1 -1
  229. package/dist/features/auth/hooks/useAuth.js +3 -0
  230. package/dist/features/auth/permissions/constants.d.ts +27 -1
  231. package/dist/features/auth/role-predicates.d.ts +75 -7
  232. package/dist/features/auth/role-predicates.js +28 -2
  233. package/dist/features/auth/schemas/firestore.d.ts +22 -0
  234. package/dist/features/auth/schemas/index.d.ts +1 -1
  235. package/dist/features/auth/schemas/index.js +44 -8
  236. package/dist/features/auth/types/index.d.ts +14 -1
  237. package/dist/features/blog/api/route.js +10 -2
  238. package/dist/features/blog/components/BlogIndexListing.js +1 -1
  239. package/dist/features/blog/hooks/useBlog.js +2 -2
  240. package/dist/features/blog/repository/blog.repository.js +3 -1
  241. package/dist/features/blog/schemas/index.d.ts +4 -0
  242. package/dist/features/blog/schemas/index.js +2 -0
  243. package/dist/features/blog/types/index.d.ts +1 -1
  244. package/dist/features/cart/actions/cart-actions.js +13 -4
  245. package/dist/features/cart/utils/pending-ops.js +1 -1
  246. package/dist/features/catalogue/components/CatalogueItemEditorView.d.ts +22 -0
  247. package/dist/features/catalogue/components/CatalogueItemEditorView.js +112 -52
  248. package/dist/features/catalogue/schemas/validation.d.ts +4 -4
  249. package/dist/features/catalogue/schemas/validation.js +47 -10
  250. package/dist/features/categories/components/BrandDetailPageView.js +28 -12
  251. package/dist/features/categories/components/CategoryDetailPageView.js +37 -20
  252. package/dist/features/categories/repository/categories.repository.js +3 -1
  253. package/dist/features/categories/schemas/bundle-form.d.ts +142 -0
  254. package/dist/features/categories/schemas/bundle-form.js +149 -0
  255. package/dist/features/checkout/actions/checkout-value-otp-actions.js +10 -1
  256. package/dist/features/classified/components/ClassifiedContactSellerPanel.js +1 -1
  257. package/dist/features/classified/components/ClassifiedDetailPageView.d.ts +5 -4
  258. package/dist/features/classified/components/ClassifiedDetailPageView.js +47 -18
  259. package/dist/features/consultation/components/ConsultationForm.js +1 -1
  260. package/dist/features/consultation/schemas/index.js +34 -10
  261. package/dist/features/corporate/schemas/index.js +36 -15
  262. package/dist/features/digital-codes/components/DigitalCodeDetailPageView.js +4 -1
  263. package/dist/features/events/components/EventBanner.js +5 -2
  264. package/dist/features/events/components/EventOfferCard.js +3 -1
  265. package/dist/features/events/components/EventPollWidget.js +1 -1
  266. package/dist/features/events/components/SpinWheelView.js +3 -2
  267. package/dist/features/filters/FilterPanel.js +3 -3
  268. package/dist/features/filters/RangeFilter.d.ts +10 -0
  269. package/dist/features/filters/RangeFilter.js +41 -4
  270. package/dist/features/grouped/components/GroupedListingEditorView.js +2 -1
  271. package/dist/features/history/hooks/useHistory.js +29 -27
  272. package/dist/features/homepage/components/AdSlot.js +3 -1
  273. package/dist/features/homepage/components/GoogleReviewsSection.js +8 -2
  274. package/dist/features/homepage/components/MarketplaceHomepageView.js +58 -15
  275. package/dist/features/homepage/components/SocialFeedSection.js +4 -1
  276. package/dist/features/homepage/hooks/useBlogArticles.js +1 -1
  277. package/dist/features/homepage/lib/live-stats.js +8 -1
  278. package/dist/features/homepage/repository/carousel.repository.js +2 -1
  279. package/dist/features/layout/BottomActions.js +84 -11
  280. package/dist/features/layout/BottomActionsContext.d.ts +1 -6
  281. package/dist/features/layout/BottomActionsContext.js +1 -1
  282. package/dist/features/layout/hooks/useBottomActions.js +2 -2
  283. package/dist/features/layout/hooks/useFormBottomActions.d.ts +12 -1
  284. package/dist/features/layout/hooks/useFormBottomActions.js +12 -6
  285. package/dist/features/live/components/LiveItemDetailPageView.js +4 -1
  286. package/dist/features/lottery/schemas/config-write.d.ts +9 -5
  287. package/dist/features/lottery/schemas/config-write.js +69 -9
  288. package/dist/features/media/finalize.js +3 -1
  289. package/dist/features/media/modals/ImageEditor.js +1 -1
  290. package/dist/features/media/modals/VideoThumbnailSelector.js +5 -2
  291. package/dist/features/media/modals/VideoTrimModal.js +5 -2
  292. package/dist/features/media/upload/MediaUploadField.js +2 -2
  293. package/dist/features/messages/hooks/useConversation.js +18 -4
  294. package/dist/features/messages/hooks/useConversations.js +25 -8
  295. package/dist/features/orders/components/RefundRequestView.js +5 -2
  296. package/dist/features/orders/schemas/buyer-forms.d.ts +6 -3
  297. package/dist/features/orders/schemas/buyer-forms.js +31 -3
  298. package/dist/features/orders/schemas/index.d.ts +2 -2
  299. package/dist/features/pre-orders/components/MarketplacePreorderCard.js +3 -1
  300. package/dist/features/pre-orders/components/PreOrderActionsClient.js +1 -1
  301. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +4 -1
  302. package/dist/features/products/components/GroupSettingsPanel.js +3 -1
  303. package/dist/features/products/components/MakeOfferButton.d.ts +13 -2
  304. package/dist/features/products/components/MakeOfferButton.js +33 -11
  305. package/dist/features/products/components/PrizeDrawDetailPageView.js +4 -1
  306. package/dist/features/products/components/ProductDetailActions.js +0 -1
  307. package/dist/features/products/components/ProductDetailPageView.d.ts +7 -3
  308. package/dist/features/products/components/ProductDetailPageView.js +16 -7
  309. package/dist/features/products/components/ShareButton.js +3 -1
  310. package/dist/features/products/constants/action-defs.d.ts +1 -2
  311. package/dist/features/products/constants/action-defs.js +40 -43
  312. package/dist/features/products/repository/loadProductFeatures.js +10 -2
  313. package/dist/features/products/repository/products.repository.d.ts +5 -1
  314. package/dist/features/products/repository/products.repository.js +25 -2
  315. package/dist/features/products/schemas/firestore.d.ts +7 -3
  316. package/dist/features/products/schemas/product-features.validators.js +3 -0
  317. package/dist/features/promotions/components/CouponCard.js +11 -8
  318. package/dist/features/reviews/actions/review-actions.js +8 -1
  319. package/dist/features/reviews/components/ReviewDetailPageView.js +13 -3
  320. package/dist/features/reviews/components/ReviewDetailShell.js +3 -1
  321. package/dist/features/scams/actions/scam-actions.d.ts +9 -1
  322. package/dist/features/scams/actions/scam-actions.js +52 -12
  323. package/dist/features/scams/components/SellerTrustBadge.d.ts +1 -1
  324. package/dist/features/scams/components/SellerTrustBadge.js +13 -0
  325. package/dist/features/scams/repository/scammer.repository.js +2 -1
  326. package/dist/features/scams/schemas/firestore.d.ts +15 -1
  327. package/dist/features/scams/schemas/report-form.d.ts +5 -5
  328. package/dist/features/scams/schemas/report-form.js +18 -3
  329. package/dist/features/search/action-index/derive.d.ts +49 -0
  330. package/dist/features/search/action-index/derive.js +121 -0
  331. package/dist/features/search/action-index/repository.d.ts +42 -0
  332. package/dist/features/search/action-index/repository.js +100 -0
  333. package/dist/features/search/action-index/settings-entries.d.ts +41 -0
  334. package/dist/features/search/action-index/settings-entries.js +268 -0
  335. package/dist/features/search/action-index/types.d.ts +81 -0
  336. package/dist/features/search/action-index/types.js +102 -0
  337. package/dist/features/search/action-index/validate-entry.d.ts +34 -0
  338. package/dist/features/search/action-index/validate-entry.js +114 -0
  339. package/dist/features/search/hooks/useNavSuggestions.d.ts +5 -1
  340. package/dist/features/search/hooks/useNavSuggestions.js +23 -3
  341. package/dist/features/search/repository/search.repository.js +3 -1
  342. package/dist/features/seller/actions/offer-actions.js +43 -19
  343. package/dist/features/seller/actions/seller-actions.js +29 -5
  344. package/dist/features/seller/components/CategoryChipPicker.d.ts +9 -0
  345. package/dist/features/seller/components/CategoryChipPicker.js +12 -0
  346. package/dist/features/seller/components/FulfillmentView.js +5 -2
  347. package/dist/features/seller/components/PhysicalLocationModal.js +1 -1
  348. package/dist/features/seller/components/PrintCenterView.js +3 -1
  349. package/dist/features/seller/components/SellerAddressesView.js +5 -1
  350. package/dist/features/seller/components/SellerAnalyticsAlertsView.js +83 -43
  351. package/dist/features/seller/components/SellerArtView.d.ts +14 -7
  352. package/dist/features/seller/components/SellerArtView.js +4 -119
  353. package/dist/features/seller/components/SellerBidsView.js +1 -1
  354. package/dist/features/seller/components/SellerClassifiedView.d.ts +14 -7
  355. package/dist/features/seller/components/SellerClassifiedView.js +4 -124
  356. package/dist/features/seller/components/SellerCouponEditorView.d.ts +22 -1
  357. package/dist/features/seller/components/SellerCouponEditorView.js +91 -45
  358. package/dist/features/seller/components/SellerCouponsView.js +1 -1
  359. package/dist/features/seller/components/SellerDigitalCodesView.d.ts +14 -7
  360. package/dist/features/seller/components/SellerDigitalCodesView.js +4 -126
  361. package/dist/features/seller/components/SellerGoogleReviewsView.js +2 -2
  362. package/dist/features/seller/components/SellerListingTypeView.d.ts +66 -0
  363. package/dist/features/seller/components/SellerListingTypeView.js +277 -0
  364. package/dist/features/seller/components/SellerLiveView.d.ts +14 -7
  365. package/dist/features/seller/components/SellerLiveView.js +4 -126
  366. package/dist/features/seller/components/SellerOrdersView.js +3 -3
  367. package/dist/features/seller/components/SellerPayoutMethodsView.js +2 -2
  368. package/dist/features/seller/components/SellerProductShell.d.ts +5 -0
  369. package/dist/features/seller/components/SellerProductShell.js +15 -5
  370. package/dist/features/seller/components/SellerProductsView.js +24 -10
  371. package/dist/features/seller/components/SellerReviewsView.js +47 -16
  372. package/dist/features/seller/components/SellerShippingConfigsView.js +5 -4
  373. package/dist/features/seller/components/SellerSidebar.d.ts +3 -6
  374. package/dist/features/seller/components/SellerStickersView.d.ts +14 -7
  375. package/dist/features/seller/components/SellerStickersView.js +4 -119
  376. package/dist/features/seller/components/SellerStoreCategoriesView.js +3 -2
  377. package/dist/features/seller/components/SellerSupportView.d.ts +31 -0
  378. package/dist/features/seller/components/SellerSupportView.js +100 -0
  379. package/dist/features/seller/components/index.d.ts +4 -8
  380. package/dist/features/seller/components/index.js +2 -4
  381. package/dist/features/seller/index.d.ts +0 -1
  382. package/dist/features/seller/index.js +0 -1
  383. package/dist/features/seller/schemas/coupon-form.d.ts +214 -0
  384. package/dist/features/seller/schemas/coupon-form.js +155 -23
  385. package/dist/features/seller/schemas/offer-forms.d.ts +16 -7
  386. package/dist/features/seller/schemas/offer-forms.js +28 -12
  387. package/dist/features/shell/FormShell.js +2 -2
  388. package/dist/features/shell/QuickFormDrawer.js +2 -2
  389. package/dist/features/shell/SectionForm.d.ts +19 -1
  390. package/dist/features/shell/SectionForm.js +104 -17
  391. package/dist/features/shell/build-sections.d.ts +23 -0
  392. package/dist/features/shell/build-sections.js +106 -8
  393. package/dist/features/shell/field-ui-meta.d.ts +44 -0
  394. package/dist/features/shell/field-ui-meta.js +14 -7
  395. package/dist/features/shell/form-sections.d.ts +46 -0
  396. package/dist/features/shell/form-sections.js +114 -0
  397. package/dist/features/shipments/components/AdminShipmentEditorView.js +87 -64
  398. package/dist/features/shipments/schemas/validation.d.ts +2 -2
  399. package/dist/features/shipments/schemas/validation.js +44 -13
  400. package/dist/features/store-extensions/schemas/custom-role-form.js +6 -2
  401. package/dist/features/store-extensions/schemas/listing-template-form.d.ts +7 -7
  402. package/dist/features/store-extensions/schemas/payout-method-form.js +14 -0
  403. package/dist/features/stores/actions/store-query-actions.js +3 -2
  404. package/dist/features/stores/api/[storeSlug]/auctions/route.js +3 -1
  405. package/dist/features/stores/api/[storeSlug]/products/route.js +3 -1
  406. package/dist/features/stores/components/StoreDetailLayoutView.d.ts +1 -1
  407. package/dist/features/stores/components/StoreDetailLayoutView.js +12 -3
  408. package/dist/features/support/repository/support.repository.d.ts +21 -0
  409. package/dist/features/support/repository/support.repository.js +63 -0
  410. package/dist/features/support/schemas/firestore.d.ts +27 -2
  411. package/dist/features/support/schemas/firestore.js +2 -0
  412. package/dist/features/support/schemas/ticket-create-form.js +7 -0
  413. package/dist/features/tester/schemas/checklist-item-form.d.ts +43 -0
  414. package/dist/features/tester/schemas/checklist-item-form.js +109 -0
  415. package/dist/features/tester/seed-data/blog-tester-seed-data.js +2 -2
  416. package/dist/features/tester/seed-data/categories-tester-seed-data.js +2 -2
  417. package/dist/features/tester/seed-data/events-tester-seed-data.js +5 -5
  418. package/dist/features/tester/seed-data/orders-tester-seed-data.js +2 -2
  419. package/dist/features/tester/seed-data/products-tester-seed-data.js +48 -49
  420. package/dist/features/tester/seed-data/stores-tester-seed-data.js +3 -3
  421. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +291 -30
  422. package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +51 -14
  423. package/dist/features/wishlist/hooks/useWishlistToggle.js +8 -1
  424. package/dist/http/api-handler.js +2 -1
  425. package/dist/index.d.ts +25 -104
  426. package/dist/index.js +38 -143
  427. package/dist/jobs.d.ts +1 -1
  428. package/dist/jobs.js +1 -1
  429. package/dist/monitoring/browser.d.ts +0 -2
  430. package/dist/monitoring/browser.js +12 -1
  431. package/dist/monitoring/index.d.ts +0 -2
  432. package/dist/monitoring/index.js +0 -1
  433. package/dist/next/api/routeHandler.js +9 -4
  434. package/dist/next/index.d.ts +1 -2
  435. package/dist/next/index.js +0 -1
  436. package/dist/next/middleware/index.d.ts +0 -2
  437. package/dist/next/middleware/index.js +0 -1
  438. package/dist/next/routing/route-map.d.ts +8 -7
  439. package/dist/next/routing/route-map.js +10 -3
  440. package/dist/providers/auth-firebase/session.js +3 -1
  441. package/dist/providers/db-firebase/admin-app-lite.js +8 -8
  442. package/dist/providers/db-firebase/admin.js +27 -13
  443. package/dist/providers/db-firebase/browser-stub.d.ts +1 -11
  444. package/dist/providers/db-firebase/browser-stub.js +6 -11
  445. package/dist/providers/db-firebase/index.d.ts +0 -1
  446. package/dist/providers/db-firebase/index.js +0 -1
  447. package/dist/providers/db-firebase/rtdb-paths.d.ts +15 -6
  448. package/dist/providers/db-firebase/rtdb-paths.js +15 -6
  449. package/dist/providers/db-firebase/rtdb-url.d.ts +27 -0
  450. package/dist/providers/db-firebase/rtdb-url.js +50 -0
  451. package/dist/providers/db-firebase/sieve.d.ts +22 -0
  452. package/dist/providers/firebase-client/realtime.d.ts +20 -0
  453. package/dist/providers/firebase-client/realtime.js +34 -1
  454. package/dist/providers.d.ts +1 -1
  455. package/dist/providers.js +1 -1
  456. package/dist/react/hooks/use-action-dispatch.js +8 -2
  457. package/dist/react/hooks/useFormStatePreservation.js +3 -1
  458. package/dist/react/hooks/useListingTypeFlags.d.ts +1 -1
  459. package/dist/react/hooks/useListingTypeFlags.js +1 -1
  460. package/dist/react/hooks/usePendingFilters.js +5 -3
  461. package/dist/react/hooks/usePendingTable.js +15 -3
  462. package/dist/react/hooks/useRealtimeEvent.js +20 -9
  463. package/dist/repositories/index.d.ts +0 -1
  464. package/dist/repositories/index.js +0 -1
  465. package/dist/schemas/registry.d.ts +197 -232
  466. package/dist/schemas/registry.js +5 -6
  467. package/dist/schemas/webhooks/razorpay.d.ts +50 -50
  468. package/dist/security/authorization.d.ts +9 -0
  469. package/dist/security/authorization.js +16 -2
  470. package/dist/security/browser.d.ts +1 -3
  471. package/dist/security/browser.js +5 -2
  472. package/dist/security/index.d.ts +1 -3
  473. package/dist/security/index.js +19 -2
  474. package/dist/security/pii-encrypt.js +16 -0
  475. package/dist/security/pii-schemas.d.ts +0 -14
  476. package/dist/security/pii-schemas.js +7 -15
  477. package/dist/seed/_helpers/category-forest.js +2 -2
  478. package/dist/seed/_helpers/media.d.ts +19 -0
  479. package/dist/seed/_helpers/media.js +75 -0
  480. package/dist/seed/blog-posts-seed-data.js +17 -17
  481. package/dist/seed/carousel-slides-seed-data.js +7 -7
  482. package/dist/seed/cart-seed-data.js +13 -13
  483. package/dist/seed/categories-seed-data.js +10 -10
  484. package/dist/seed/events-seed-data.js +24 -24
  485. package/dist/seed/factories/product.factory.js +4 -4
  486. package/dist/seed/factories/store.factory.js +3 -3
  487. package/dist/seed/factories/user.factory.js +2 -2
  488. package/dist/seed/grouped-listings-seed-data.js +11 -11
  489. package/dist/seed/homepage-sections-seed-data.js +2 -2
  490. package/dist/seed/index.d.ts +0 -1
  491. package/dist/seed/index.js +0 -1
  492. package/dist/seed/manifest.d.ts +1 -1
  493. package/dist/seed/manifest.js +0 -5
  494. package/dist/seed/notifications-seed-data.js +20 -1
  495. package/dist/seed/orders-seed-data.js +2 -2
  496. package/dist/seed/products-art-seed-data.js +16 -16
  497. package/dist/seed/products-auctions-seed-data.js +34 -34
  498. package/dist/seed/products-classifieds-seed-data.js +35 -37
  499. package/dist/seed/products-digital-codes-seed-data.js +20 -20
  500. package/dist/seed/products-live-items-seed-data.js +11 -11
  501. package/dist/seed/products-preorders-seed-data.js +13 -13
  502. package/dist/seed/products-prize-draws-seed-data.js +43 -43
  503. package/dist/seed/products-standard-seed-data.js +54 -54
  504. package/dist/seed/products-stickers-seed-data.js +15 -15
  505. package/dist/seed/reviews-seed-data.js +4 -4
  506. package/dist/seed/scammers-seed-data.js +3 -3
  507. package/dist/seed/site-settings-seed-data.js +11 -24
  508. package/dist/seed/store-extensions-seed-data.js +10 -10
  509. package/dist/seed/stores-seed-data.js +11 -11
  510. package/dist/seed/support-tickets-seed-data.d.ts +14 -0
  511. package/dist/seed/support-tickets-seed-data.js +20 -1
  512. package/dist/seed/users-seed-data.js +20 -20
  513. package/dist/server-entry.d.ts +0 -1
  514. package/dist/server-entry.js +0 -1
  515. package/dist/server.d.ts +9 -6
  516. package/dist/server.js +7 -13
  517. package/dist/styles.css +248 -68
  518. package/dist/tailwind-utilities.css +1 -1
  519. package/dist/tokens/themes/default-dark.js +2 -2
  520. package/dist/tokens/themes/default-light.js +2 -2
  521. package/dist/tokens/tokens.css +24 -4
  522. package/dist/ui/components/ActionRow.d.ts +50 -0
  523. package/dist/ui/components/ActionRow.js +53 -0
  524. package/dist/ui/components/ActionRow.style.css +145 -0
  525. package/dist/ui/components/Drawer.d.ts +10 -0
  526. package/dist/ui/components/Drawer.js +2 -1
  527. package/dist/ui/components/FilterDrawer.js +4 -1
  528. package/dist/ui/components/FilterDrawer.style.css +6 -12
  529. package/dist/ui/components/FormActionBar.js +14 -1
  530. package/dist/ui/components/FormActionBar.style.css +12 -11
  531. package/dist/ui/components/ListingLayout.js +8 -1
  532. package/dist/ui/components/ListingLayout.style.css +6 -13
  533. package/dist/ui/components/Modal.d.ts +15 -1
  534. package/dist/ui/components/Modal.js +17 -3
  535. package/dist/ui/components/QuickCreateModal.js +2 -2
  536. package/dist/ui/components/QuickCreateModal.style.css +78 -84
  537. package/dist/ui/components/RecordDetailModal.js +2 -2
  538. package/dist/ui/components/SideDrawer.d.ts +8 -0
  539. package/dist/ui/components/SideDrawer.js +2 -1
  540. package/dist/ui/components/SideDrawer.style.css +6 -3
  541. package/dist/ui/components/SideModal.d.ts +11 -1
  542. package/dist/ui/components/SideModal.js +3 -2
  543. package/dist/ui/components/SideModal.style.css +14 -0
  544. package/dist/ui/components/Typography.style.css +33 -24
  545. package/dist/ui/components/index.style.css +1 -0
  546. package/dist/ui/components/toolbar-collapse.js +1 -2
  547. package/dist/ui/forms/FormShell.style.css +260 -311
  548. package/dist/ui/index.d.ts +2 -0
  549. package/dist/ui/index.js +1 -0
  550. package/dist/utils/index.d.ts +0 -1
  551. package/dist/utils/index.js +0 -1
  552. package/dist/validation/index.d.ts +1 -1
  553. package/dist/validation/index.js +1 -1
  554. package/dist/validation/schemas.d.ts +0 -19
  555. package/dist/validation/schemas.js +8 -19
  556. package/package.json +1 -1
  557. package/scripts/seed-cli.mjs +3 -6
@@ -3,7 +3,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
3
3
  import { normalizeError } from "../../../errors/normalize";
4
4
  import { useCallback, useState } from "react";
5
5
  import { useQueryClient } from "@tanstack/react-query";
6
- import { Alert, Badge, Button, Checkbox, Div, Modal, Row, Select, SideDrawer, Span, Stack, Text, Textarea } from "../../../ui";
6
+ import { Alert, Badge, Button, Checkbox, Div, Modal, Row, Select, SideDrawer, Span, Stack, Text, Textarea, useToast } from "../../../ui";
7
7
  import { ACTIONS } from "../../../_internal/shared/actions/action-registry";
8
8
  import { SELLER_BULK_ACTIONS, ROW_ACTION_META } from "../../products/constants/action-defs";
9
9
  import { SELLER_ENDPOINTS } from "../../../constants/api-endpoints";
@@ -34,6 +34,7 @@ function statusBadge(status) {
34
34
  }
35
35
  export function SellerReviewsView({ reviewsApiBase = SELLER_ENDPOINTS.REVIEWS, replyApiBase = SELLER_ENDPOINTS.REVIEWS, }) {
36
36
  const queryClient = useQueryClient();
37
+ const { showToast } = useToast();
37
38
  const refetchReviews = useCallback(() => queryClient.invalidateQueries({ queryKey: ["seller", "reviews", "listing"] }), [queryClient]);
38
39
  // Reply drawer
39
40
  const [replyTarget, setReplyTarget] = useState(null);
@@ -80,45 +81,75 @@ export function SellerReviewsView({ reviewsApiBase = SELLER_ENDPOINTS.REVIEWS, r
80
81
  setReplySaving(false);
81
82
  }
82
83
  };
84
+ // The three submits below all closed their modal unconditionally, so a
85
+ // rejected or unsent request looked exactly like a successful one — the
86
+ // seller believed the contest/feedback/reply had been filed.
83
87
  const submitContest = useCallback(async (onDone) => {
84
88
  if (!contestTarget)
85
89
  return;
86
- await fetch(SELLER_ENDPOINTS.REVIEW_CONTEST(contestTarget.id), {
87
- method: "POST",
88
- headers: { "Content-Type": "application/json" },
89
- body: JSON.stringify({ reason: contestReason }),
90
- }).catch(() => null);
90
+ try {
91
+ const res = await fetch(SELLER_ENDPOINTS.REVIEW_CONTEST(contestTarget.id), {
92
+ method: "POST",
93
+ headers: { "Content-Type": "application/json" },
94
+ body: JSON.stringify({ reason: contestReason }),
95
+ });
96
+ if (!res.ok)
97
+ throw new Error(`Could not submit the contest (${res.status})`);
98
+ }
99
+ catch (err) {
100
+ showToast(normalizeError(err).message, "error");
101
+ return;
102
+ }
91
103
  setContestTarget(null);
92
104
  setContestReason("");
93
105
  onDone();
94
- }, [contestTarget, contestReason]);
106
+ }, [contestTarget, contestReason, showToast]);
95
107
  const submitFeedback = useCallback(async () => {
96
108
  if (!feedbackTarget)
97
109
  return;
98
- await fetch(SELLER_ENDPOINTS.REVIEW_FEEDBACK(feedbackTarget.id), {
99
- method: "POST",
100
- headers: { "Content-Type": "application/json" },
101
- body: JSON.stringify({ feedback: feedbackText }),
102
- }).catch(() => null);
110
+ try {
111
+ const res = await fetch(SELLER_ENDPOINTS.REVIEW_FEEDBACK(feedbackTarget.id), {
112
+ method: "POST",
113
+ headers: { "Content-Type": "application/json" },
114
+ body: JSON.stringify({ feedback: feedbackText }),
115
+ });
116
+ if (!res.ok)
117
+ throw new Error(`Could not send the feedback (${res.status})`);
118
+ }
119
+ catch (err) {
120
+ showToast(normalizeError(err).message, "error");
121
+ return;
122
+ }
103
123
  setFeedbackTarget(null);
104
124
  setFeedbackText("");
105
- }, [feedbackTarget, feedbackText]);
125
+ }, [feedbackTarget, feedbackText, showToast]);
106
126
  const submitBulkReply = useCallback(async () => {
107
127
  if (!bulkReplyText.trim() || bulkTargetIds.length === 0)
108
128
  return;
109
129
  setBulkSaving(true);
110
- await Promise.all(bulkTargetIds.map((id) => fetch(`${replyApiBase}/${id}/reply`, {
130
+ // Partial success is the normal outcome of a bulk write, so report the
131
+ // count that failed rather than throwing away the whole batch's result.
132
+ const outcomes = await Promise.all(bulkTargetIds.map((id) => fetch(`${replyApiBase}/${id}/reply`, {
111
133
  method: "POST",
112
134
  headers: { "Content-Type": "application/json" },
113
135
  body: JSON.stringify({ reply: bulkReplyText }),
114
- }).catch(() => null)));
136
+ })
137
+ .then((res) => res.ok)
138
+ .catch((err) => {
139
+ void normalizeError(err);
140
+ return false;
141
+ })));
142
+ const failed = outcomes.filter((ok) => !ok).length;
143
+ if (failed > 0) {
144
+ showToast(`${failed} of ${outcomes.length} replies could not be saved.`, "error");
145
+ }
115
146
  setBulkSaving(false);
116
147
  setBulkReplyOpen(false);
117
148
  setBulkReplyText("");
118
149
  bulkClearSelection?.();
119
150
  setBulkTargetIds([]);
120
151
  await refetchReviews();
121
- }, [bulkReplyText, bulkTargetIds, replyApiBase, bulkClearSelection, refetchReviews]);
152
+ }, [bulkReplyText, bulkTargetIds, replyApiBase, bulkClearSelection, refetchReviews, showToast]);
122
153
  const config = {
123
154
  portal: "seller",
124
155
  title: "Reviews",
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import { normalizeError } from "../../../errors/normalize";
4
+ import { toUserMessage } from "../../../errors/error-display-map";
4
5
  import { sortBy } from "@mohasinac/appkit/client";
5
6
  import { useState, useCallback } from "react";
6
7
  import { useEntityDelete } from "../../../react/hooks/useEntityDelete";
@@ -53,8 +54,8 @@ export function SellerShippingConfigsView({ onCreateClick, onEditClick, onDelete
53
54
  await performDelete(id);
54
55
  }
55
56
  catch (err) {
56
- void normalizeError(err);
57
- showToast(err instanceof Error ? err.message : "Failed to delete shipping config", "error");
57
+ const e = normalizeError(err);
58
+ showToast(toUserMessage(e.code, undefined, { fallback: "Failed to delete shipping config." }), "error");
58
59
  }
59
60
  setDeleteTargetId(null);
60
61
  }, [performDelete, showToast]);
@@ -75,8 +76,8 @@ export function SellerShippingConfigsView({ onCreateClick, onEditClick, onDelete
75
76
  showToast("Default shipping config updated.", "success");
76
77
  }
77
78
  catch (err) {
78
- void normalizeError(err);
79
- showToast(err instanceof Error ? err.message : "Failed to update default.", "error");
79
+ const e = normalizeError(err);
80
+ showToast(toUserMessage(e.code, undefined, { fallback: "Failed to update default." }), "error");
80
81
  }
81
82
  finally {
82
83
  setSettingDefaultId(null);
@@ -1,10 +1,7 @@
1
+ import type { SidebarNavItem } from "../../../_internal/shared/features/layout/types";
1
2
  import React from "react";
2
- export interface StoreNavItem {
3
- href: string;
4
- label: string;
5
- icon?: React.ReactNode;
6
- badge?: number;
7
- }
3
+ /** A store sidebar entry. `badge` comes from `SidebarNavItem`. */
4
+ export type StoreNavItem = SidebarNavItem;
8
5
  export interface StoreNavGroup {
9
6
  title: string;
10
7
  items: StoreNavItem[];
@@ -1,8 +1,15 @@
1
+ /**
2
+ * SellerStickersView — seller browse/manage of sticker listings.
3
+ *
4
+ * A named wrapper, kept so the page, the barrel and every existing import path
5
+ * stay unchanged. All behaviour is `SellerListingTypeView`; everything this
6
+ * type does differently is one entry in `SELLER_LISTING_TYPE_SPECS`.
7
+ *
8
+ * This file was 194 lines of a component that four siblings also contained
9
+ * verbatim — see that file's header for why the duplication mattered rather
10
+ * than merely being untidy.
11
+ */
1
12
  import React from "react";
2
- export interface SellerStickersViewProps {
3
- onCreateClick?: () => void;
4
- onEditClick?: (id: string) => void;
5
- onDelete?: (id: string) => Promise<void>;
6
- onBulkDelete?: (ids: string[]) => Promise<void>;
7
- }
8
- export declare function SellerStickersView({ onCreateClick, onEditClick, onDelete, onBulkDelete, }: SellerStickersViewProps): React.JSX.Element;
13
+ import { type SellerListingTypeViewProps } from "./SellerListingTypeView";
14
+ export type SellerStickersViewProps = SellerListingTypeViewProps;
15
+ export declare function SellerStickersView(props: SellerStickersViewProps): React.JSX.Element;
@@ -1,121 +1,6 @@
1
1
  "use client";
2
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
- /**
4
- * SellerStickersView — seller browse/manage of sticker listings
5
- * (EMI/art-stickers session). Mirrors SellerClassifiedView's pattern.
6
- */
7
- import { Badge, sortBy } from "@mohasinac/appkit/client";
8
- import { useState, useCallback } from "react";
9
- import { useEntityDelete } from "../../../react/hooks/useEntityDelete";
10
- import { ConfirmDeleteModal, RowActionMenu, Text } from "../../../ui";
11
- import { SELLER_ENDPOINTS } from "../../../constants/api-endpoints";
12
- import { ACTIONS } from "../../../_internal/shared/actions/action-registry";
13
- import { ROUTES } from "../../../constants/index";
14
- import { toRecordArray, toRelativeDate, toCurrency, toStringValue, } from "../../admin/hooks/useAdminListingData";
15
- import { DataListingView } from "../../admin/components/DataListingView";
16
- import { SELLER_BULK_ACTIONS, ROW_ACTION_META } from "../../products/constants/action-defs";
17
- import { useAvailabilityScope } from "../../products/hooks/useAvailabilityScope";
18
- const LISTING_TYPES = ["stickers"];
19
- const COLUMNS = [
20
- { key: "title", header: "Listing", render: (row) => _jsx(Text, { size: "sm", weight: "medium", children: row.title }) },
21
- { key: "price", header: "Price", render: (row) => _jsx(Text, { className: "tabular-nums", size: "sm", children: row.price }) },
22
- {
23
- key: "size",
24
- header: "Size",
25
- render: (row) => _jsx(Text, { className: "text-[var(--appkit-color-text-muted)]", size: "sm", children: row.size || "—" }),
26
- },
27
- {
28
- key: "status",
29
- header: "Status",
30
- render: (row) => (_jsx(Badge, { variant: row.status === "active" ? "active" : "inactive", size: "xs", className: "capitalize", children: row.status })),
31
- },
32
- {
33
- key: "createdAt",
34
- header: "Created",
35
- render: (row) => _jsx(Text, { className: "text-[var(--appkit-color-text-muted)]", size: "sm", children: row.createdAt }),
36
- },
37
- ];
38
- export function SellerStickersView({ onCreateClick, onEditClick, onDelete, onBulkDelete, }) {
39
- const [deleteTargetId, setDeleteTargetId] = useState(null);
40
- const { deletingId, handleDelete: performDelete } = useEntityDelete({
41
- endpoint: SELLER_ENDPOINTS.PRODUCT_BY_ID,
42
- deleteFn: onDelete,
43
- successMessage: "Listing deleted.",
44
- fetchOptions: { credentials: "include" },
45
- });
46
- const handleDelete = useCallback(async (id) => {
47
- await performDelete(id);
48
- setDeleteTargetId(null);
49
- }, [performDelete]);
50
- const handleEdit = useCallback((id) => {
51
- if (onEditClick)
52
- onEditClick(id);
53
- else
54
- window.location.href = String(ROUTES.STORE.STICKERS_EDIT(id));
55
- }, [onEditClick]);
56
- const handleCreate = useCallback(() => {
57
- if (onCreateClick)
58
- onCreateClick();
59
- else
60
- window.location.href = String(ROUTES.STORE.STICKERS_NEW);
61
- }, [onCreateClick]);
62
- const scope = useAvailabilityScope(LISTING_TYPES);
63
- const config = {
64
- portal: "seller",
65
- title: "Stickers",
66
- searchPlaceholder: "Search sticker listings...",
67
- emptyLabel: "No sticker listings yet — list your first pack",
68
- filterKeys: [],
69
- defaultSort: sortBy("createdAt", "DESC"),
70
- queryKey: ["seller", "stickers"],
71
- endpoint: SELLER_ENDPOINTS.PRODUCTS,
72
- sortOptions: [
73
- { value: sortBy("createdAt", "DESC"), label: "Newest" },
74
- { value: sortBy("createdAt", "ASC"), label: "Oldest" },
75
- { value: "title", label: "Name A–Z" },
76
- { value: sortBy("price", "ASC"), label: "Price: Low–High" },
77
- { value: sortBy("price", "DESC"), label: "Price: High–Low" },
78
- ],
79
- columns: COLUMNS,
80
- mapRows: (response) => toRecordArray(response.products).map((item, index) => {
81
- const printMeta = (item.printMeta ?? {});
82
- return {
83
- id: toStringValue(item.id, `stickers-${index}`),
84
- title: toStringValue(item.productTitle ?? item.title, "Untitled"),
85
- price: toCurrency(item.price),
86
- size: toStringValue(printMeta.size, ""),
87
- status: toStringValue(item.status, "draft"),
88
- createdAt: toRelativeDate(item.createdAt),
89
- };
90
- }),
91
- getTotal: (response, mappedRows) => typeof response.meta?.total === "number" ? response.meta.total : mappedRows.length,
92
- buildFilters: () => "listingType==stickers",
93
- buildExtraParams: () => scope.extraParams,
94
- renderAboveContent: scope.renderAboveContent,
95
- primaryAction: { label: "New Sticker Listing", onClick: () => handleCreate() },
96
- // Mirrors the "Edit" row action below so table rows and cards both navigate on click.
97
- onRowClick: (row) => handleEdit(row.id),
98
- // Rule #7: bulk-action array sourced from the SELLER_BULK_ACTIONS preset.
99
- buildBulkActions: onBulkDelete
100
- ? (selection) => SELLER_BULK_ACTIONS.stickers.map((id) => ({
101
- id,
102
- label: ROW_ACTION_META[id].label,
103
- destructive: ROW_ACTION_META[id].destructive,
104
- onClick: async () => {
105
- await onBulkDelete(selection.selectedIds);
106
- selection.clearSelection();
107
- },
108
- }))
109
- : undefined,
110
- renderRowActions: (row) => (_jsx(RowActionMenu, { actions: [
111
- { label: ACTIONS.STORE["edit-listing"].label, onClick: () => handleEdit(row.id) },
112
- {
113
- label: ACTIONS.STORE["delete-listing"].label,
114
- destructive: true,
115
- onClick: () => setDeleteTargetId(row.id),
116
- disabled: deletingId === row.id,
117
- },
118
- ] })),
119
- };
120
- return (_jsxs(_Fragment, { children: [_jsx(DataListingView, { config: config }), deleteTargetId && (_jsx(ConfirmDeleteModal, { isOpen: true, title: "Delete Sticker Listing", message: "Are you sure you want to delete this sticker listing? This cannot be undone.", onConfirm: () => handleDelete(deleteTargetId), onClose: () => setDeleteTargetId(null), isDeleting: deletingId === deleteTargetId }))] }));
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { SellerListingTypeView, } from "./SellerListingTypeView";
4
+ export function SellerStickersView(props) {
5
+ return _jsx(SellerListingTypeView, { type: "stickers", ...props });
121
6
  }
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import { normalizeError } from "../../../errors/normalize";
4
+ import { toUserMessage } from "../../../errors/error-display-map";
4
5
  import { Badge, sortBy } from "@mohasinac/appkit/client";
5
6
  import { useState, useCallback } from "react";
6
7
  import { useEntityDelete } from "../../../react/hooks/useEntityDelete";
@@ -49,8 +50,8 @@ export function SellerStoreCategoriesView({ onCreateClick, onEditClick, onDelete
49
50
  await performDelete(id);
50
51
  }
51
52
  catch (err) {
52
- void normalizeError(err);
53
- showToast(err instanceof Error ? err.message : "Failed to delete category", "error");
53
+ const e = normalizeError(err);
54
+ showToast(toUserMessage(e.code, undefined, { fallback: "Failed to delete category." }), "error");
54
55
  }
55
56
  setDeleteTargetId(null);
56
57
  }, [onDelete, performDelete, showToast]);
@@ -0,0 +1,31 @@
1
+ /**
2
+ * SellerSupportView — the tickets raised about this seller's store.
3
+ *
4
+ * ## Why there was nothing here before
5
+ *
6
+ * Support has always had a buyer surface and an admin surface and no seller
7
+ * one — no page, no API route, not even a `ROUTES.STORE.SUPPORT` constant.
8
+ * The reason was structural rather than an oversight: `SupportTicketDocument`
9
+ * had no queryable `storeId`, so "the tickets about my store" was not a
10
+ * question the data could answer.
11
+ *
12
+ * There is a category called `store_change_request` — sellers asking an admin
13
+ * to change a store field they cannot edit themselves — which a seller could
14
+ * only ever file through the BUYER surface, and then never see again from the
15
+ * store dashboard.
16
+ *
17
+ * ## Read-only, deliberately
18
+ *
19
+ * A seller can see and follow a ticket about their store; replying goes
20
+ * through the ticket thread the buyer and admin already share, and status is
21
+ * an admin decision. Giving a seller a status control here would let them
22
+ * close a complaint made against them.
23
+ */
24
+ import React from "react";
25
+ import type { StackedViewShellProps } from "../../../ui";
26
+ export interface SellerSupportViewProps extends Omit<StackedViewShellProps, "sections"> {
27
+ labels?: {
28
+ title?: string;
29
+ };
30
+ }
31
+ export declare function SellerSupportView({ labels }: SellerSupportViewProps): React.JSX.Element;
@@ -0,0 +1,100 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * SellerSupportView — the tickets raised about this seller's store.
5
+ *
6
+ * ## Why there was nothing here before
7
+ *
8
+ * Support has always had a buyer surface and an admin surface and no seller
9
+ * one — no page, no API route, not even a `ROUTES.STORE.SUPPORT` constant.
10
+ * The reason was structural rather than an oversight: `SupportTicketDocument`
11
+ * had no queryable `storeId`, so "the tickets about my store" was not a
12
+ * question the data could answer.
13
+ *
14
+ * There is a category called `store_change_request` — sellers asking an admin
15
+ * to change a store field they cannot edit themselves — which a seller could
16
+ * only ever file through the BUYER surface, and then never see again from the
17
+ * store dashboard.
18
+ *
19
+ * ## Read-only, deliberately
20
+ *
21
+ * A seller can see and follow a ticket about their store; replying goes
22
+ * through the ticket thread the buyer and admin already share, and status is
23
+ * an admin decision. Giving a seller a status control here would let them
24
+ * close a complaint made against them.
25
+ */
26
+ import React from "react";
27
+ import { Badge, Span, Stack, Text } from "../../../ui";
28
+ import { DataListingView } from "../../admin/components/DataListingView";
29
+ import { SELLER_ENDPOINTS } from "../../../constants/api-endpoints";
30
+ import { SUPPORT_TICKET_FIELDS } from "../../../constants/field-names";
31
+ import { sieveFilter, SIEVE_OP } from "../../../utils/sieve-builder";
32
+ import { toRelativeDate, toStringValue } from "../../admin/hooks/useAdminListingData";
33
+ /** Status → badge tone. Mirrors `TicketStatusValues`. */
34
+ const STATUS_VARIANT = {
35
+ open: "info",
36
+ in_progress: "warning",
37
+ waiting_on_user: "warning",
38
+ resolved: "success",
39
+ closed: "default",
40
+ };
41
+ export function SellerSupportView({ labels = {} }) {
42
+ const mapRows = React.useCallback((response) => {
43
+ const items = Array.isArray(response?.items) ? response.items : [];
44
+ return items.map((raw) => {
45
+ const t = (raw ?? {});
46
+ return {
47
+ id: toStringValue(t.id),
48
+ primary: toStringValue(t.subject),
49
+ secondary: toStringValue(t.description).slice(0, 140),
50
+ status: toStringValue(t.status),
51
+ category: toStringValue(t.category).replace(/_/g, " "),
52
+ updated: toRelativeDate(t.updatedAt ?? t.createdAt),
53
+ };
54
+ });
55
+ }, []);
56
+ return (_jsxs(Stack, { gap: "md", children: [_jsx(DataListingView, { config: {
57
+ portal: "seller",
58
+ title: labels.title ?? "Support",
59
+ subtitle: "Tickets buyers and staff have raised about your store.",
60
+ /*
61
+ * The box is declared only because the endpoint now serves it —
62
+ * `supportTickets` gained a `searchTxt` corpus in this same commit.
63
+ * `fields` names what is actually matched, and it is SUBJECT ONLY:
64
+ * the description and every message body are PII-encrypted at rest,
65
+ * so they are not in the index and a placeholder promising them
66
+ * would be a promise the backend cannot keep.
67
+ */
68
+ search: {
69
+ placeholder: "Search by subject…",
70
+ mode: "partial",
71
+ fields: ["subject"],
72
+ commit: "debounce",
73
+ },
74
+ emptyLabel: "No tickets have been raised about your store.",
75
+ queryKey: ["store", "support-tickets"],
76
+ endpoint: SELLER_ENDPOINTS.SUPPORT,
77
+ filterKeys: ["status"],
78
+ defaultSort: "",
79
+ sortOptions: [],
80
+ mapRows,
81
+ getTotal: (response, rows) => response?.total ?? rows.length,
82
+ buildFilters: (filterState) => filterState.status
83
+ ? sieveFilter(SUPPORT_TICKET_FIELDS.STATUS, SIEVE_OP.EQ, filterState.status)
84
+ : undefined,
85
+ columns: [
86
+ { key: "primary", header: "Subject" },
87
+ {
88
+ key: "status",
89
+ header: "Status",
90
+ render: (row) => (_jsx(Badge, { variant: STATUS_VARIANT[row.status] ?? "default", children: row.status.replace(/_/g, " ") })),
91
+ },
92
+ {
93
+ key: "category",
94
+ header: "About",
95
+ render: (row) => (_jsx(Span, { size: "xs", color: "muted", children: row.category })),
96
+ },
97
+ { key: "updated", header: "Updated" },
98
+ ],
99
+ } }), _jsx(Text, { size: "xs", color: "muted", children: "Replies and status changes happen in the ticket thread with our support team \u2014 a ticket raised about your store is not one you can close." })] }));
100
+ }
@@ -1,13 +1,9 @@
1
1
  export { SellerDashboardView } from "./SellerDashboardView";
2
2
  export type { SellerDashboardViewProps } from "./SellerDashboardView";
3
3
  export { SellerProductsView } from "./SellerProductsView";
4
+ export { SellerListingTypeView, SELLER_LISTING_TYPE_SPECS } from "./SellerListingTypeView";
5
+ export type { SellerListingTypeViewProps, SellerListingTypeSpec, SellerListingTypeKey, SellerListingRow } from "./SellerListingTypeView";
4
6
  export type { SellerProductsViewProps } from "./SellerProductsView";
5
- export { SellerAuctionsView } from "./SellerAuctionsView";
6
- export type { SellerAuctionsViewProps } from "./SellerAuctionsView";
7
- export { SellerPreOrdersView } from "./SellerPreOrdersView";
8
- export type { SellerPreOrdersViewProps } from "./SellerPreOrdersView";
9
- export { SellerPrizeDrawsView } from "./SellerPrizeDrawsView";
10
- export type { SellerPrizeDrawsViewProps } from "./SellerPrizeDrawsView";
11
7
  export { PrintCenterView } from "./PrintCenterView";
12
8
  export { SellerOrdersView, SellerOrderDetailPanel } from "./SellerOrdersView";
13
9
  export type { SellerOrdersViewProps } from "./SellerOrdersView";
@@ -62,8 +58,6 @@ export { SellerDashboardView as StoreDashboardView } from "./SellerDashboardView
62
58
  export type { SellerDashboardViewProps as StoreDashboardViewProps } from "./SellerDashboardView";
63
59
  export { SellerProductsView as StoreProductListingsView } from "./SellerProductsView";
64
60
  export type { SellerProductsViewProps as StoreProductListingsViewProps } from "./SellerProductsView";
65
- export { SellerAuctionsView as StoreAuctionsView } from "./SellerAuctionsView";
66
- export type { SellerAuctionsViewProps as StoreAuctionsViewProps } from "./SellerAuctionsView";
67
61
  export { SellerOrdersView as StoreOrdersView } from "./SellerOrdersView";
68
62
  export type { SellerOrdersViewProps as StoreOrdersViewProps } from "./SellerOrdersView";
69
63
  export { SellerOffersView as StoreOffersView } from "./SellerOffersView";
@@ -132,3 +126,5 @@ export { BarcodeField } from "./BarcodeField";
132
126
  export type { BarcodeFieldProps } from "./BarcodeField";
133
127
  export { FulfillmentView } from "./FulfillmentView";
134
128
  export type { FulfillmentViewProps } from "./FulfillmentView";
129
+ export { SellerSupportView } from "./SellerSupportView";
130
+ export type { SellerSupportViewProps } from "./SellerSupportView";
@@ -1,8 +1,6 @@
1
1
  export { SellerDashboardView } from "./SellerDashboardView";
2
2
  export { SellerProductsView } from "./SellerProductsView";
3
- export { SellerAuctionsView } from "./SellerAuctionsView";
4
- export { SellerPreOrdersView } from "./SellerPreOrdersView";
5
- export { SellerPrizeDrawsView } from "./SellerPrizeDrawsView";
3
+ export { SellerListingTypeView, SELLER_LISTING_TYPE_SPECS } from "./SellerListingTypeView";
6
4
  export { PrintCenterView } from "./PrintCenterView";
7
5
  export { SellerOrdersView, SellerOrderDetailPanel } from "./SellerOrdersView";
8
6
  export { SellerOffersView } from "./SellerOffersView";
@@ -34,7 +32,6 @@ export { StoreSidebar } from "./SellerSidebar";
34
32
  export { SellerDashboardView as StoreDashboardView } from "./SellerDashboardView";
35
33
  // SellerProductsView aliased as StoreProductListingsView (StoreProductsView is the public customer-facing store listing)
36
34
  export { SellerProductsView as StoreProductListingsView } from "./SellerProductsView";
37
- export { SellerAuctionsView as StoreAuctionsView } from "./SellerAuctionsView";
38
35
  export { SellerOrdersView as StoreOrdersView } from "./SellerOrdersView";
39
36
  export { SellerOffersView as StoreOffersView } from "./SellerOffersView";
40
37
  export { SellerCouponsView as StoreCouponsView } from "./SellerCouponsView";
@@ -69,3 +66,4 @@ export { SellerDigitalCodesView } from "./SellerDigitalCodesView";
69
66
  export { SellerLiveView } from "./SellerLiveView";
70
67
  export { BarcodeField } from "./BarcodeField";
71
68
  export { FulfillmentView } from "./FulfillmentView";
69
+ export { SellerSupportView } from "./SellerSupportView";
@@ -8,4 +8,3 @@ export * from "./components";
8
8
  export * from "./schemas";
9
9
  export * from "./columns";
10
10
  export { manifest } from "./manifest";
11
- export { SELLER_PAGE_PERMISSIONS } from "./permission-map";
@@ -8,4 +8,3 @@ export * from "./components";
8
8
  export * from "./schemas";
9
9
  export * from "./columns";
10
10
  export { manifest } from "./manifest";
11
- export { SELLER_PAGE_PERMISSIONS } from "./permission-map";