@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
@@ -1,3 +1,4 @@
1
+ import type { ListingType } from "../../../../features/products/types/index";
1
2
  /**
2
3
  * The floor, as a percentage of the listed price, below which an offer is
3
4
  * rejected — used whenever a listing does not set its own `minOfferPercent`.
@@ -28,3 +29,67 @@ export declare function minOfferAmount(listedPrice: number, percent?: number | n
28
29
  * below the floor the seller has said they don't want to hear it.
29
30
  */
30
31
  export declare function isOfferAmountValid(amount: number, listedPrice: number, percent?: number | null): boolean;
32
+ /**
33
+ * Is Make-an-Offer the only way to buy this listing type?
34
+ *
35
+ * True exactly when the type can be offered on but has no cart line — today
36
+ * that is `classified` alone (`canAddToCart: false`, `canMakeOffer: true`).
37
+ *
38
+ * Derived from the capability registry rather than testing for `"classified"`,
39
+ * so a future type that lands in the same shape inherits the rule instead of
40
+ * silently becoming unbuyable. That is not hypothetical: this function exists
41
+ * because classified's actual purchase path was a `conversations` chat thread,
42
+ * and when that feature was deleted the listing type would have been left with
43
+ * no way to transact at all.
44
+ */
45
+ export declare function offerIsOnlyPurchasePath(listingType: ListingType): boolean;
46
+ /**
47
+ * May a buyer send an offer on this listing at all?
48
+ *
49
+ * The two ordinary gates are the type's `canMakeOffer` capability and the
50
+ * seller's own `allowOffers` opt-in. The third clause is the point:
51
+ *
52
+ * 🛑 **`allowOffers` is an opt-in to NEGOTIATION, not to being contactable.**
53
+ * On a listing with no cart, unchecking it would mean the buyer has no way to
54
+ * transact whatsoever — the page would render a price and no path to it. So
55
+ * where the offer IS the purchase path, an offer is always permitted; what
56
+ * `allowOffers` then controls is whether the buyer may propose a price *below*
57
+ * the asking one. See `resolveOfferBounds`.
58
+ */
59
+ export declare function offersEnabledFor(listingType: ListingType, allowOffers?: boolean): boolean;
60
+ export interface OfferBounds {
61
+ /** Lowest legal amount, inclusive. */
62
+ min: number;
63
+ /** Highest legal amount, inclusive. */
64
+ max: number;
65
+ /**
66
+ * The offer is pinned to the asking price — the buyer is requesting to buy,
67
+ * not negotiating. True when the offer is the only purchase path and the
68
+ * seller has not opted into haggling.
69
+ *
70
+ * Callers use this for COPY, never for a second bounds calculation: `min`
71
+ * and `max` are already equal when it is true.
72
+ */
73
+ isBuyRequest: boolean;
74
+ }
75
+ /**
76
+ * The amounts this listing will accept, as one answer for the form, the schema
77
+ * and the server.
78
+ *
79
+ * Two cases beyond the ordinary one, both driven by there being no cart:
80
+ *
81
+ * - **No haggling opted in** → `min === max === listedPrice`. A "request to buy".
82
+ * - **Haggling opted in** → the usual floor, but the ceiling is the asking price
83
+ * **inclusive**. On a cartable listing an offer at full price is rejected with
84
+ * "use Add to Cart instead", which on a classified is advice the buyer cannot
85
+ * take — there is no cart button to use. That rejection was already a dead end
86
+ * before this change.
87
+ */
88
+ export declare function resolveOfferBounds(opts: {
89
+ listingType: ListingType;
90
+ listedPrice: number;
91
+ minOfferPercent?: number | null;
92
+ allowOffers?: boolean;
93
+ }): OfferBounds;
94
+ /** Whether `amount` falls within `bounds`. The one comparison, shared. */
95
+ export declare function isWithinOfferBounds(amount: number, bounds: OfferBounds): boolean;
@@ -11,15 +11,18 @@
11
11
  * Same discipline as `resolveMinBid` in the auctions config next door.
12
12
  *
13
13
  * EXPORTS:
14
- * DEFAULT_MIN_OFFER_PERCENT, minOfferAmount, isOfferAmountValid
14
+ * DEFAULT_MIN_OFFER_PERCENT, minOfferAmount, isOfferAmountValid,
15
+ * offerIsOnlyPurchasePath, offersEnabledFor, resolveOfferBounds,
16
+ * type OfferBounds
15
17
  *
16
18
  * @tag domain:offers,seller
17
19
  * @tag layer:shared
18
20
  * @tag pattern:none
19
21
  * @tag access:isomorphic
20
- * @tag consumers:offer-actions,MakeOfferButton,ProductDetailPageView,ProductForm,SellerProductShell
22
+ * @tag consumers:offer-actions,MakeOfferButton,ProductDetailPageView,ClassifiedDetailPageView,ProductForm,SellerProductShell
21
23
  * @tag sideEffects:none
22
24
  */
25
+ import { canAddToCart, canMakeOffer, } from "../../listing-types/capabilities";
23
26
  /**
24
27
  * The floor, as a percentage of the listed price, below which an offer is
25
28
  * rejected — used whenever a listing does not set its own `minOfferPercent`.
@@ -57,3 +60,71 @@ export function minOfferAmount(listedPrice, percent) {
57
60
  export function isOfferAmountValid(amount, listedPrice, percent) {
58
61
  return amount >= minOfferAmount(listedPrice, percent) && amount < listedPrice;
59
62
  }
63
+ /* -------------------------------------------------------------------------
64
+ * Listings whose ONLY purchase path is an offer
65
+ * ---------------------------------------------------------------------- */
66
+ /**
67
+ * Is Make-an-Offer the only way to buy this listing type?
68
+ *
69
+ * True exactly when the type can be offered on but has no cart line — today
70
+ * that is `classified` alone (`canAddToCart: false`, `canMakeOffer: true`).
71
+ *
72
+ * Derived from the capability registry rather than testing for `"classified"`,
73
+ * so a future type that lands in the same shape inherits the rule instead of
74
+ * silently becoming unbuyable. That is not hypothetical: this function exists
75
+ * because classified's actual purchase path was a `conversations` chat thread,
76
+ * and when that feature was deleted the listing type would have been left with
77
+ * no way to transact at all.
78
+ */
79
+ export function offerIsOnlyPurchasePath(listingType) {
80
+ return canMakeOffer(listingType) && !canAddToCart(listingType);
81
+ }
82
+ /**
83
+ * May a buyer send an offer on this listing at all?
84
+ *
85
+ * The two ordinary gates are the type's `canMakeOffer` capability and the
86
+ * seller's own `allowOffers` opt-in. The third clause is the point:
87
+ *
88
+ * 🛑 **`allowOffers` is an opt-in to NEGOTIATION, not to being contactable.**
89
+ * On a listing with no cart, unchecking it would mean the buyer has no way to
90
+ * transact whatsoever — the page would render a price and no path to it. So
91
+ * where the offer IS the purchase path, an offer is always permitted; what
92
+ * `allowOffers` then controls is whether the buyer may propose a price *below*
93
+ * the asking one. See `resolveOfferBounds`.
94
+ */
95
+ export function offersEnabledFor(listingType, allowOffers) {
96
+ if (!canMakeOffer(listingType))
97
+ return false;
98
+ return allowOffers === true || offerIsOnlyPurchasePath(listingType);
99
+ }
100
+ /**
101
+ * The amounts this listing will accept, as one answer for the form, the schema
102
+ * and the server.
103
+ *
104
+ * Two cases beyond the ordinary one, both driven by there being no cart:
105
+ *
106
+ * - **No haggling opted in** → `min === max === listedPrice`. A "request to buy".
107
+ * - **Haggling opted in** → the usual floor, but the ceiling is the asking price
108
+ * **inclusive**. On a cartable listing an offer at full price is rejected with
109
+ * "use Add to Cart instead", which on a classified is advice the buyer cannot
110
+ * take — there is no cart button to use. That rejection was already a dead end
111
+ * before this change.
112
+ */
113
+ export function resolveOfferBounds(opts) {
114
+ const { listingType, listedPrice, minOfferPercent, allowOffers } = opts;
115
+ const onlyPath = offerIsOnlyPurchasePath(listingType);
116
+ if (onlyPath && allowOffers !== true) {
117
+ return { min: listedPrice, max: listedPrice, isBuyRequest: true };
118
+ }
119
+ return {
120
+ min: minOfferAmount(listedPrice, minOfferPercent),
121
+ // `- 0.01` and not `- 1`: money is decimal rupees, and this is the exact
122
+ // ceiling `makeOfferFormSchema` has always enforced.
123
+ max: onlyPath ? listedPrice : Math.round((listedPrice - 0.01) * 100) / 100,
124
+ isBuyRequest: false,
125
+ };
126
+ }
127
+ /** Whether `amount` falls within `bounds`. The one comparison, shared. */
128
+ export function isWithinOfferBounds(amount, bounds) {
129
+ return amount >= bounds.min && amount <= bounds.max;
130
+ }
@@ -13,7 +13,7 @@ export declare const createOrderSchema: z.ZodObject<{
13
13
  quantity: number;
14
14
  productId: string;
15
15
  }>, "many">;
16
- shippingAddress: z.ZodObject<{
16
+ shippingAddress: z.ZodEffects<z.ZodObject<{
17
17
  fullName: z.ZodString;
18
18
  phone: z.ZodString;
19
19
  addressLine1: z.ZodString;
@@ -40,6 +40,24 @@ export declare const createOrderSchema: z.ZodObject<{
40
40
  pincode: string;
41
41
  country?: string | undefined;
42
42
  addressLine2?: string | undefined;
43
+ }>, {
44
+ country: string;
45
+ fullName: string;
46
+ phone: string;
47
+ addressLine1: string;
48
+ city: string;
49
+ state: string;
50
+ pincode: string;
51
+ addressLine2?: string | undefined;
52
+ }, {
53
+ fullName: string;
54
+ phone: string;
55
+ addressLine1: string;
56
+ city: string;
57
+ state: string;
58
+ pincode: string;
59
+ country?: string | undefined;
60
+ addressLine2?: string | undefined;
43
61
  }>;
44
62
  paymentMethod: z.ZodEnum<["razorpay", "cod", "upi"]>;
45
63
  couponCode: z.ZodOptional<z.ZodString>;
@@ -1,5 +1,17 @@
1
1
  import { z } from "zod";
2
+ import { DEFAULT_COUNTRY, isValidPostalCode, postalLabelFor, } from "../../../../constants/geo/countries";
2
3
  import { ORDER_CANCEL_REASON_MAX_LENGTH, ORDER_NOTE_MAX_LENGTH, ORDER_TRACKING_NUMBER_MAX_LENGTH, } from "./config";
4
+ /*
5
+ * The order's own SNAPSHOT of where it shipped, denormalised onto the order
6
+ * document at creation. Its field names (`pincode`) are stored on every
7
+ * existing order, so renaming them to match `AddressDocument` is a data
8
+ * migration rather than a refactor — and a snapshot deliberately does NOT
9
+ * follow the address it was copied from.
10
+ *
11
+ * The postal RULE is shared, which is the half that was wrong: `/^\d{6}$/`
12
+ * is India-only, on an order whose country is whatever the buyer chose.
13
+ */
14
+ // audit-address-shape-ok: an order's frozen shipping snapshot, not the address entity
3
15
  const addressSchema = z.object({
4
16
  fullName: z.string().min(1),
5
17
  phone: z.string().min(10).max(15),
@@ -7,8 +19,16 @@ const addressSchema = z.object({
7
19
  addressLine2: z.string().optional(),
8
20
  city: z.string().min(1),
9
21
  state: z.string().min(1),
10
- pincode: z.string().regex(/^\d{6}$/, "Pincode must be 6 digits"),
11
- country: z.string().default("India"),
22
+ pincode: z.string().trim().min(1, "A postal code is required."),
23
+ country: z.string().default(DEFAULT_COUNTRY),
24
+ }).superRefine((v, ctx) => {
25
+ if (!isValidPostalCode(v.country, v.pincode)) {
26
+ ctx.addIssue({
27
+ code: z.ZodIssueCode.custom,
28
+ path: ["pincode"],
29
+ message: `That is not a valid ${postalLabelFor(v.country)}.`,
30
+ });
31
+ }
12
32
  });
13
33
  export const createOrderSchema = z.object({
14
34
  items: z.array(z.object({
@@ -25,9 +25,18 @@ export interface PublicSiteSettings {
25
25
  payment: {
26
26
  otpCheckoutThreshold?: number;
27
27
  };
28
- /** Deliberately NOT the full `featureFlags` — `adminCheckoutBypass` must never be advertised publicly. */
29
- featureFlags: {
30
- listingTypes?: SiteSettingsDocument["featureFlags"]["listingTypes"];
28
+ /**
29
+ * Which listing types the site offers — the client needs this to avoid
30
+ * rendering a browse tab for a type nothing will return.
31
+ *
32
+ * Deliberately NOT the whole `listings` block: `categoryTypes` has no client
33
+ * reader. This was `featureFlags.listingTypes` until that group was deleted
34
+ * on 2026-08-29; the projection stayed narrow for the same reason it always
35
+ * was — a public payload carries what a client demonstrably reads, nothing
36
+ * more (Root Cause #70).
37
+ */
38
+ listings: {
39
+ listingTypes?: NonNullable<SiteSettingsDocument["listings"]>["listingTypes"];
31
40
  };
32
41
  notificationChannels?: NotificationChannelConfig;
33
42
  announcementBar?: SiteSettingsDocument["announcementBar"];
@@ -27,9 +27,15 @@ export interface ListingTypeCapability {
27
27
  /**
28
28
  * Buyers can negotiate the price via the Make-an-Offer flow.
29
29
  *
30
- * A per-listing `allowOffers` flag is still required on top of this — the
30
+ * A per-listing `allowOffers` flag is normally required on top of this — the
31
31
  * capability says the TYPE can support offers at all, the flag says this
32
- * particular seller opted in. `makeOffer` checks both.
32
+ * particular seller opted in. `offersEnabledFor()` checks both.
33
+ *
34
+ * 🛑 One exception, and it is structural: on a type with `canAddToCart: false`
35
+ * the offer is the only way to buy, so `allowOffers` cannot decide whether an
36
+ * offer may be sent — it decides whether the buyer may propose a price BELOW
37
+ * the asking one. Otherwise unchecking one flag would render a price with no
38
+ * path to it.
33
39
  *
34
40
  * False wherever a negotiated price would collide with the type's own pricing
35
41
  * mechanism: an auction already has bidding, a prize-draw sells fixed-price
@@ -49,7 +49,12 @@ export const LISTING_TYPE_CAPABILITIES = {
49
49
  },
50
50
  // SB-UNI-F 2026-05-13 — Phase 2 union extension.
51
51
  classified: {
52
- canAddToCart: false, // chat-only (OLX / Facebook Marketplace pattern)
52
+ // No cart (OLX / Facebook Marketplace pattern). Paired with
53
+ // `canMakeOffer: true` this is the ONLY combination in the table where the
54
+ // offer is the purchase path rather than an alternative to one — which is
55
+ // what `offerIsOnlyPurchasePath()` detects, and why `allowOffers` cannot
56
+ // gate whether an offer may be sent on this type at all.
57
+ canAddToCart: false,
53
58
  canBid: false,
54
59
  supportsShipping: false, // local meetup; shipping is a "negotiable" flag, not a flow
55
60
  requiresVendorVerified: false,
@@ -1,3 +1,8 @@
1
1
  // SB-UNI X2 — placeholder for classified-listing CTA list.
2
- // SB-UNI-M (Phase 5) wires the "Contact Seller" → conversations flow.
2
+ //
3
+ // Still empty, and now for a settled reason rather than a pending one: the
4
+ // classified CTA is `ACTIONS.PRODUCT["make-offer"]`, rendered by
5
+ // `MakeOfferButton` through the detail view's `renderOfferAction` slot. The old
6
+ // note here promised a "Contact Seller" → conversations flow; that feature was
7
+ // deleted 2026-08-31 and the offer is now the type's only purchase path.
3
8
  export const ctas = [];
@@ -1,10 +1,15 @@
1
1
  /**
2
2
  * Listing-type / category-type feature flag helpers — SB-UNI-X4 2026-05-13.
3
3
  *
4
- * Reads from `siteSettings.featureFlags.{listingTypes,categoryTypes}` and
5
- * collapses missing fields to a "type is enabled" default. The capability
6
- * registry decides what each type CAN do; these flags decide whether the
7
- * site exposes the type at all.
4
+ * Reads from `siteSettings.listings.{listingTypes,categoryTypes}` and collapses
5
+ * missing fields to a "type is enabled" default. The capability registry
6
+ * decides what each type CAN do; these decide whether the site exposes the type
7
+ * at all.
8
+ *
9
+ * Moved out of `featureFlags` on 2026-08-29 when that group was deleted — 11 of
10
+ * its 14 keys had no readers, and these two were never flags: "we don't sell
11
+ * live animals" is a standing catalogue decision, not a switch around
12
+ * unfinished work.
8
13
  *
9
14
  * Consumer pattern:
10
15
  * const settings = await siteSettingsRepository.findById("global");
@@ -16,7 +21,7 @@
16
21
  import type { ListingType } from "../../../features/products/types/index";
17
22
  import type { CategoryType } from "../../../features/categories/types/index";
18
23
  interface FeatureFlagSnapshot {
19
- featureFlags?: {
24
+ listings?: {
20
25
  listingTypes?: Partial<Record<ListingType, boolean>>;
21
26
  categoryTypes?: Partial<Record<CategoryType, boolean>>;
22
27
  };
@@ -1,10 +1,15 @@
1
1
  /**
2
2
  * Listing-type / category-type feature flag helpers — SB-UNI-X4 2026-05-13.
3
3
  *
4
- * Reads from `siteSettings.featureFlags.{listingTypes,categoryTypes}` and
5
- * collapses missing fields to a "type is enabled" default. The capability
6
- * registry decides what each type CAN do; these flags decide whether the
7
- * site exposes the type at all.
4
+ * Reads from `siteSettings.listings.{listingTypes,categoryTypes}` and collapses
5
+ * missing fields to a "type is enabled" default. The capability registry
6
+ * decides what each type CAN do; these decide whether the site exposes the type
7
+ * at all.
8
+ *
9
+ * Moved out of `featureFlags` on 2026-08-29 when that group was deleted — 11 of
10
+ * its 14 keys had no readers, and these two were never flags: "we don't sell
11
+ * live animals" is a standing catalogue decision, not a switch around
12
+ * unfinished work.
8
13
  *
9
14
  * Consumer pattern:
10
15
  * const settings = await siteSettingsRepository.findById("global");
@@ -19,11 +24,11 @@
19
24
  * EXPLICITLY set to `false` to disable a type.
20
25
  */
21
26
  export function isListingTypeEnabled(type, settings) {
22
- const flag = settings?.featureFlags?.listingTypes?.[type];
27
+ const flag = settings?.listings?.listingTypes?.[type];
23
28
  return flag !== false;
24
29
  }
25
30
  export function isCategoryTypeEnabled(type, settings) {
26
- const flag = settings?.featureFlags?.categoryTypes?.[type];
31
+ const flag = settings?.listings?.categoryTypes?.[type];
27
32
  return flag !== false;
28
33
  }
29
34
  /**
@@ -4,7 +4,13 @@ import * as React from "react";
4
4
  import { useQuery, } from "@tanstack/react-query";
5
5
  import { useToast } from "../../ui/components/Toast";
6
6
  import { ApiError } from "./ApiError";
7
- import { getErrorDisplay } from "../../errors/error-display-map";
7
+ import { toUserMessage } from "../../errors/error-display-map";
8
+ /**
9
+ * Appended to the "stale data" warning. Authored copy, never derived from the
10
+ * failure — a background refetch that dies on a `MODULE_NOT_FOUND` must not
11
+ * print a require stack into a toast (audit-raw-error-text).
12
+ */
13
+ const REFRESH_HINT = "Please check your connection and try again.";
8
14
  export function useApiQuery(options) {
9
15
  const { showToast } = useToast();
10
16
  const { silentBackgroundFailures, translate, reportClientError, ...rest } = options;
@@ -22,9 +28,10 @@ export function useApiQuery(options) {
22
28
  return;
23
29
  const err = result.error;
24
30
  if (err instanceof ApiError) {
25
- const display = getErrorDisplay(err.code);
26
- const message = translate?.(display.messageKey) ?? err.message;
27
- showToast(`Couldn't refresh latest data: ${message}`, "warning");
31
+ const message = toUserMessage(err.code, translate, {
32
+ fallback: REFRESH_HINT,
33
+ });
34
+ showToast(`Couldn't refresh latest data. ${message}`, "warning");
28
35
  if (reportClientError) {
29
36
  try {
30
37
  reportClientError({
@@ -39,8 +46,12 @@ export function useApiQuery(options) {
39
46
  }
40
47
  }
41
48
  else {
42
- const message = err instanceof Error ? err.message : "Unknown error";
43
- showToast(`Couldn't refresh latest data: ${message}`, "warning");
49
+ // No stable code on a non-ApiError rejection, so there is nothing to
50
+ // resolve — go straight to the authored hint rather than the raw text.
51
+ const message = toUserMessage(undefined, translate, {
52
+ fallback: REFRESH_HINT,
53
+ });
54
+ showToast(`Couldn't refresh latest data. ${message}`, "warning");
44
55
  }
45
56
  }, [
46
57
  result.isError,
package/dist/client.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export { HTTP_ERROR_CODES, mapToHttpError } from "./errors/error-mapping";
2
2
  export type { HttpErrorCode, MappedError } from "./errors/error-mapping";
3
3
  export { ERROR_DISPLAY_MAP, getErrorDisplay } from "./errors/error-display-map";
4
+ export { toUserMessage, GENERIC_USER_MESSAGE } from "./errors/error-display-map";
4
5
  export type { ErrorDisplayEntry } from "./errors/error-display-map";
5
6
  export { RazorpayUnreachableError } from "./errors/razorpay-unreachable";
6
7
  export type { ActionResult } from "./utils/action-result";
@@ -17,8 +18,6 @@ export { useApiMutation } from "./client/api/useApiMutation";
17
18
  export type { UseApiMutationOptions } from "./client/api/useApiMutation";
18
19
  export { useApiQuery } from "./client/api/useApiQuery";
19
20
  export type { UseApiQueryOptions } from "./client/api/useApiQuery";
20
- export { useFeatureFlags } from "./client/api/useFeatureFlags";
21
- export type { FeatureFlagState } from "./client/api/useFeatureFlags";
22
21
  export { ServerErrorsListView, ServerErrorDetailView, MaintenanceDashboardView, AnalysisRunnerView, CloudLogsListView, } from "./_internal/client/features/maintenance";
23
22
  export type { ServerErrorsListViewProps, ServerErrorDetailViewProps, MaintenanceDashboardViewProps, CloudLogsListViewProps, } from "./_internal/client/features/maintenance";
24
23
  export { registerClientAuthProvider, getClientAuthProvider, type IClientAuthProvider, } from "./contracts/client-auth";
@@ -97,7 +96,9 @@ export { LotteryAdminEditView } from "./_internal/client/features/lottery/Lotter
97
96
  export { lotteryConfigWriteSchema, lotterySlotWriteSchema } from "./features/lottery/schemas/config-write";
98
97
  export { SectionForm, useSectionFormNav } from "./features/shell/SectionForm";
99
98
  export type { SectionDef, SectionFormProps } from "./features/shell/SectionForm";
100
- export { buildSectionsFromSchema } from "./features/shell/build-sections";
99
+ export { buildSectionsFromSchema, visibleValues } from "./features/shell/build-sections";
100
+ export { FORM_SECTION_GROUP, SECTION_GROUP_DEFAULTS, groupRank, resolveSectionGroup } from "./features/shell/form-sections";
101
+ export type { FormSectionGroup } from "./features/shell/form-sections";
101
102
  export { reportCreateSchema } from "./features/store-extensions/schemas/report-create-form";
102
103
  export { itemRequestCreateSchema } from "./features/store-extensions/schemas/item-request-create-form";
103
104
  export { supportTicketCreateSchema } from "./features/support/schemas/ticket-create-form";
@@ -197,6 +198,8 @@ export { TextLink } from "./ui/components/TextLink";
197
198
  export type { TextLinkProps } from "./ui/components/TextLink";
198
199
  export { Anchor } from "./ui/components/Anchor";
199
200
  export { IconButton } from "./ui/index";
201
+ export { ActionRow } from "./ui/components/ActionRow";
202
+ export type { ActionRowProps, ActionRowAlign } from "./ui/components/ActionRow";
200
203
  export { Textarea } from "./ui/components/Textarea";
201
204
  export { GlobalError } from "./next/components/GlobalError";
202
205
  export { AppLayoutShell, LocaleSwitcher, useDashboardNav, BottomActionsProvider, useBottomActions, DashboardNavProvider, LayoutClient } from "./features/layout/index";
@@ -231,8 +234,8 @@ export { NotificationPreferencesPanel } from "./features/account/components/Noti
231
234
  export type { NotificationPreferencesPanelProps } from "./features/account/components/NotificationPreferencesPanel";
232
235
  export { LinkedAccountsSection } from "./features/account/components/LinkedAccountsSection";
233
236
  export type { LinkedAccountsSectionProps } from "./features/account/components/LinkedAccountsSection";
234
- export { useCollapsedSections } from "./features/account/hooks/useCollapsedSections";
235
- export type { UseCollapsedSectionsOptions, UseCollapsedSectionsResult, } from "./features/account/hooks/useCollapsedSections";
237
+ export { useCollapsedSections, useSectionState, } from "./features/account/hooks/useCollapsedSections";
238
+ export type { UseCollapsedSectionsOptions, UseCollapsedSectionsResult, UseSectionStateOptions, UseSectionStateResult, SectionExpandMode, } from "./features/account/hooks/useCollapsedSections";
236
239
  export { PageViewTracker } from "./features/analytics/components/PageViewTracker";
237
240
  export type { PageViewTrackerProps } from "./features/analytics/components/PageViewTracker";
238
241
  export { PAGE_VIEW_ENTITY_TYPES } from "./features/analytics/types";
@@ -305,16 +308,6 @@ export { STANDARD_SORT_OPTIONS, STANDARD_PUBLIC_SORT_OPTIONS, AUCTION_SORT_OPTIO
305
308
  export { sortOptionsFor, commonSortOptionsFor, hideDefaultsFor, } from "./_internal/shared/listing-types/_registry";
306
309
  export type { ListingHideDefault } from "./_internal/shared/listing-types/_registry";
307
310
  export type { SortOption } from "./features/products/constants/sieve";
308
- export { MessagesView } from "./features/account/components/MessagesView";
309
- export type { MessagesViewProps, MessagesViewLabels } from "./features/account/components/MessagesView";
310
- export { ChatList } from "./features/account/components/ChatList";
311
- export type { ChatListProps, ChatListLabels } from "./features/account/components/ChatList";
312
- export { ChatWindow } from "./features/account/components/ChatWindow";
313
- export type { ChatWindowProps, ChatWindowLabels } from "./features/account/components/ChatWindow";
314
- export { useConversations, useConversation } from "./features/messages/index";
315
- export { CONVERSATIONS_COLLECTION, CONVERSATIONS_INDEXED_FIELDS, } from "./features/messages/index";
316
- export type { ConversationDocument, ConversationMessage, UseConversationsReturn, UseConversationReturn, } from "./features/messages/index";
317
- export { CONVERSATIONS_PING_PATH, CONVERSATIONS_PING_USER_PATH, } from "./features/messages/hooks/useConversation";
318
311
  export { ACTION_ID, ACTION_META, DETAIL_ACTIONS, MOBILE_PRIMARY_ACTIONS, LISTING_BULK_ACTIONS } from "./features/products/index";
319
312
  export type { ActionId, ActionMeta, ActionVariant } from "./features/products/index";
320
313
  export { ROW_ACTION_ID, ROW_ACTION_META, ADMIN_ROW_ACTIONS, SELLER_ROW_ACTIONS, USER_ROW_ACTIONS, ADMIN_BULK_ACTIONS, SELLER_BULK_ACTIONS } from "./features/products/index";
@@ -344,8 +337,10 @@ export { UserOffersPanel } from "./features/account/components/UserOffersPanel";
344
337
  export type { UserOffersPanelProps } from "./features/account/components/UserOffersPanel";
345
338
  export { SellerDashboardView as StoreDashboardView, SellerDashboardView, useSellerDashboard as useStoreDashboard, useSellerDashboard } from "./features/seller/index";
346
339
  export type { SellerDashboardViewProps as StoreDashboardViewProps, SellerDashboardViewProps } from "./features/seller/index";
347
- export { SellerPayoutSettingsView, SellerShippingView, SellerReviewsView, SellerPayoutRequestView, SellerAnalyticsStats, SellerTopProducts, SellerAnalyticsView, SellerPayoutsView, SellerCouponEditorView, SellerBidsView, SellerAddressesView, SellerPreOrdersView, SellerPrizeDrawsView, PrintCenterView, SellerOffersView, SellerGroupedListingsView, StoreGroupedListingsView, SellerAnalyticsAlertsView, StoreAnalyticsAlertsView, BarcodeField, FulfillmentView } from "./features/seller/components/index";
348
- export type { SellerPayoutSettingsViewProps, SellerShippingViewProps, SellerReviewsViewProps, SellerPayoutRequestViewProps, SellerAnalyticsViewProps, SellerPayoutsViewProps, SellerCouponEditorViewProps, CouponEditorDraft, SellerBidsViewProps, SellerAddressesViewProps, SellerPreOrdersViewProps, SellerPrizeDrawsViewProps, SellerOffersViewProps, SellerGroupedListingsViewProps, SellerAnalyticsAlertsViewProps, BarcodeFieldProps, FulfillmentViewProps } from "./features/seller/components/index";
340
+ export { SellerPayoutSettingsView, SellerShippingView, SellerReviewsView, SellerPayoutRequestView, SellerAnalyticsStats, SellerTopProducts, SellerAnalyticsView, SellerPayoutsView, SellerCouponEditorView, SellerBidsView, SellerAddressesView, PrintCenterView, SellerOffersView, SellerGroupedListingsView, StoreGroupedListingsView, SellerAnalyticsAlertsView, StoreAnalyticsAlertsView, BarcodeField, FulfillmentView, SellerListingTypeView, SELLER_LISTING_TYPE_SPECS } from "./features/seller/components/index";
341
+ export type { SellerPayoutSettingsViewProps, SellerShippingViewProps, SellerReviewsViewProps, SellerPayoutRequestViewProps, SellerAnalyticsViewProps, SellerPayoutsViewProps, SellerCouponEditorViewProps, CouponEditorDraft, SellerBidsViewProps, SellerAddressesViewProps, SellerOffersViewProps, SellerGroupedListingsViewProps, SellerAnalyticsAlertsViewProps, BarcodeFieldProps, FulfillmentViewProps, SellerListingTypeViewProps, SellerListingTypeSpec, SellerListingTypeKey, SellerListingRow } from "./features/seller/components/index";
342
+ export { couponDraftToPayload } from "./features/seller/schemas/coupon-form";
343
+ export type { SellerCouponPayload } from "./features/seller/schemas/coupon-form";
349
344
  export type { SellerAnalyticsSummary, SellerAnalyticsTopProduct } from "./features/seller/types/index";
350
345
  export { UserAccountHubView, UserOrdersView, UserBidsView, OrderDetailView, UserNotificationsView, UserReturnsView, UserSupportView, useNotifications } from "./features/account/index";
351
346
  export type { UserAccountHubViewProps, UserAccountHubViewLabels, UserOrdersViewProps, OrderDetailViewProps, OrderDetailViewLabels, UserNotificationsViewProps, UserNotificationsViewLabels, UserReturnsViewProps, UserSupportViewProps } from "./features/account/index";
@@ -388,7 +383,7 @@ export { actionTracker, setActionTrackerSink, resetActionTrackerSink, type Actio
388
383
  export { cartRequiresShipping, cartIsDigitalOnly, cartIsChatOnly, } from "./_internal/shared/listing-types/cart-shipping";
389
384
  export { ACTIONS, action, act, canPerformAction, actionsForListingType, actionLabel, type ActionDef, type ActionKind, type ActionResource, type ActionTree, type ActionConfirmation, } from "./_internal/shared/actions/action-registry";
390
385
  export { buildBulkAction } from "./_internal/shared/actions/bulk-helpers";
391
- export { isAdminUser, isSellerUser, isModeratorUser, isEmployeeUser, isBuyerUser, isEffectiveAdminUser, } from "./features/auth/role-predicates";
386
+ export { isAdminUser, isSellerUser, isModeratorUser, isEmployeeUser, isBuyerUser, isEffectiveAdminUser, isTesterUser, canTestAdminSurfaces, isStrictSellerUser, isAccountDisabled, } from "./features/auth/role-predicates";
392
387
  export { DashboardLayoutClient, RoleGuard } from "./_internal/client/features/layout/index";
393
388
  export type { DashboardLayoutClientProps, RoleGuardProps, } from "./_internal/client/features/layout/index";
394
389
  export type { LayoutBreakpoint, DashboardVariant, LayoutRole, SidebarNavItem, SidebarNavGroup, MainNavItem as LayoutMainNavItem, BrandingConfig, FooterConfig, SectionResponsive, SectionTheming, LayoutConfig, DashboardLayoutConfig, } from "./_internal/shared/features/layout/index";
@@ -475,15 +470,38 @@ export { BrandInlineSelect } from "./features/seller/components/BrandInlineSelec
475
470
  export { API_ENDPOINTS } from "./constants/index";
476
471
  export { SELLER_LISTING_TABS, type SellerListingTabId, } from "./features/products/constants/listing-tabs";
477
472
  export { ALL_TAB, EMPTY_TAB, ADMIN_PRODUCT_STATUS_TABS, ADMIN_PRODUCT_LISTING_TYPE_TABS, ADMIN_BLOG_STATUS_TABS, ADMIN_USER_STATUS_TABS, ADMIN_USER_ROLE_TABS, ADMIN_STORE_STATUS_TABS, ADMIN_PAYOUT_STATUS_TABS, ADMIN_ORDER_STATUS_TABS, ADMIN_REVIEW_STATUS_TABS, ADMIN_REVIEW_RATING_TABS, ADMIN_BID_STATUS_TABS, ADMIN_CONTACT_STATUS_TABS, ADMIN_NEWSLETTER_STATUS_TABS, ADMIN_EVENT_ENTRY_STATUS_TABS, ADMIN_EVENT_STATUS_TABS, ADMIN_CART_OWNERSHIP_TABS, ADMIN_COUPON_TYPE_TABS, SELLER_PRODUCT_STATUS_TABS, SELLER_AUCTION_STATUS_TABS, SELLER_ORDER_STATUS_TABS, SELLER_OFFER_STATUS_TABS, SELLER_BID_STATUS_TABS, } from "./features/admin/constants/filter-tabs";
478
- export { PRODUCT_FIELDS, PRODUCT_STATUS_TRANSITIONS, ORDER_FIELDS, REVIEW_FIELDS, BID_FIELDS, AD_FIELDS, EVENT_FIELDS, EVENT_ENTRY_FIELDS, PAYOUT_FIELDS, STORE_FIELDS, CATEGORY_FIELDS, BLOG_FIELDS, USER_FIELDS, ADDRESS_FIELDS, BRAND_FIELDS, CART_FIELDS, WISHLIST_FIELDS, HISTORY_FIELDS, NOTIFICATION_FIELDS, SESSION_FIELDS, COUPON_USAGE_FIELDS, CONVERSATION_FIELDS, SCAMMER_FIELDS, SUPPORT_TICKET_FIELDS, CAROUSEL_FIELDS, COUPON_FIELDS, FAQ_FIELDS, HOMEPAGE_SECTION_FIELDS, SITE_SETTINGS_FIELDS, COMMON_FIELDS, OAUTH_STATE_VALUES, SCHEMA_DEFAULTS, } from "./constants/field-names";
473
+ export { PRODUCT_FIELDS, PRODUCT_STATUS_TRANSITIONS, ORDER_FIELDS, REVIEW_FIELDS, BID_FIELDS, AD_FIELDS, EVENT_FIELDS, EVENT_ENTRY_FIELDS, PAYOUT_FIELDS, STORE_FIELDS, CATEGORY_FIELDS, BLOG_FIELDS, USER_FIELDS, ADDRESS_FIELDS, BRAND_FIELDS, CART_FIELDS, WISHLIST_FIELDS, HISTORY_FIELDS, NOTIFICATION_FIELDS, SESSION_FIELDS, COUPON_USAGE_FIELDS, SCAMMER_FIELDS, SUPPORT_TICKET_FIELDS, CAROUSEL_FIELDS, COUPON_FIELDS, FAQ_FIELDS, HOMEPAGE_SECTION_FIELDS, SITE_SETTINGS_FIELDS, COMMON_FIELDS, OAUTH_STATE_VALUES, SCHEMA_DEFAULTS, } from "./constants/field-names";
479
474
  export { CART_LANE, CART_LANE_PRIORITY, CART_LANE_LABELS, laneOf, activeLane, laneItems, laneCounts, isLaneCheckoutable, laneBlockReason, isLockedLane, canAddNewItems, type CartLane, type LaneAssignable, } from "./_internal/shared/checkout/lanes";
480
475
  export { newsletterSubscribeSchema, quickCreateTaxonomySchema, payoutMarkPaidSchema, } from "./features/admin/schemas/small-forms";
481
476
  export { raffleEntrySchema } from "./features/contact/schemas/inquiry-forms";
482
477
  export { orderCancelSchema, paymentProofSchema, } from "./features/orders/schemas/buyer-forms";
483
478
  export { scamReportFormSchema } from "./features/scams/schemas/report-form";
484
479
  export { sublistingCategoryFormSchema } from "./features/store-extensions/schemas/sublisting-category-form";
485
- export { adminAddressFormSchema, adminStoreUpdateSchema, announcementBarSchema, } from "./features/admin/schemas/admin-editor-forms";
480
+ export { adminStoreUpdateSchema, announcementBarSchema, } from "./features/admin/schemas/admin-editor-forms";
486
481
  export { adminOrderUpdateSchema, employeeInviteSchema, hardBanReasonSchema, featureFlagsUpdateSchema, adminAdFormSchema, } from "./features/admin/schemas/admin-ops-forms";
487
482
  export { changeEmailSchema } from "./features/account/schemas/index";
488
483
  export { adminUserUpdateSchema, whatsappSettingsSchema, lotteryPullSchema, } from "./features/admin/schemas/admin-user-form";
489
484
  export { siteSettingsFormSchema } from "./features/admin/schemas/site-settings-form";
485
+ export { refineAddressPostal, addressFormSchema, addressUpdateSchema, adminAddressCreateSchema, adminAddressUpdateSchema, addressUnbanRequestSchema, } from "./features/addresses/schemas/address-form";
486
+ export type { AddressFormValues, AddressUpdateValues, AdminAddressCreateValues, } from "./features/addresses/schemas/address-form";
487
+ export { COUNTRIES, COUNTRY_CODES, DEFAULT_COUNTRY, countryFor, postalPatternFor, postalLabelFor, isValidPostalCode, } from "./constants/geo/countries";
488
+ export type { CountryDef } from "./constants/geo/countries";
489
+ export { SUBDIVISIONS, subdivisionsFor } from "./constants/geo/subdivisions";
490
+ export { navItemId } from "./_internal/shared/features/layout/types";
491
+ export type { NavPortal } from "./_internal/shared/features/layout/types";
492
+ export { mergeActionIndex, projectActionIndexForViewer, } from "./features/search/action-index/types";
493
+ export type { ActionIndexEntry, ActionIndexKind, ActionIndexControl, ActionIndexOverride, } from "./features/search/action-index/types";
494
+ export { deriveNavEntries, deriveQuickActionEntries, buildActionIndexBase, } from "./features/search/action-index/derive";
495
+ export type { PortalNavGroups, QuickActionSource } from "./features/search/action-index/derive";
496
+ export { matchesNavQuery } from "./_internal/shared/features/layout/matchesNavQuery";
497
+ export type { NavSearchable } from "./_internal/shared/features/layout/matchesNavQuery";
498
+ export { SITE_SETTINGS_ENTRIES, deriveSettingsEntries, } from "./features/search/action-index/settings-entries";
499
+ export type { SettingsIndexSource } from "./features/search/action-index/settings-entries";
500
+ export { SITE_SETTINGS_TABS, SITE_SETTINGS_TAB_IDS, isSiteSettingsTabId, } from "./features/admin/constants/site-settings-tabs";
501
+ export type { SiteSettingsTab, SiteSettingsTabId } from "./features/admin/constants/site-settings-tabs";
502
+ export { validateActionIndexEntry, normaliseRoute, } from "./features/search/action-index/validate-entry";
503
+ export type { ActionIndexValidationContext, ActionIndexValidationIssue, } from "./features/search/action-index/validate-entry";
504
+ export { AdminActionIndexView } from "./features/admin/components/AdminActionIndexView";
505
+ export type { AdminActionIndexViewProps } from "./features/admin/components/AdminActionIndexView";
506
+ export { SellerSupportView } from "./features/seller/components/SellerSupportView";
507
+ export type { SellerSupportViewProps } from "./features/seller/components/SellerSupportView";