@mohasinac/appkit 4.30.19 → 4.31.1

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 (417) hide show
  1. package/dist/_internal/client/features/layout/useSidebarSearch.d.ts +21 -5
  2. package/dist/_internal/client/features/layout/useSidebarSearch.js +27 -6
  3. package/dist/_internal/client/features/lottery/LotteryAdminEditView.d.ts +23 -3
  4. package/dist/_internal/client/features/lottery/LotteryAdminEditView.js +106 -87
  5. package/dist/_internal/client/features/lottery/LotteryPullForm.d.ts +16 -5
  6. package/dist/_internal/client/features/lottery/LotteryPullForm.js +65 -40
  7. package/dist/_internal/server/features/auth/permissions.d.ts +2 -0
  8. package/dist/_internal/server/features/auth/permissions.js +3 -2
  9. package/dist/_internal/server/features/categories/data.js +15 -4
  10. package/dist/_internal/server/features/classified/index.d.ts +0 -1
  11. package/dist/_internal/server/features/classified/index.js +0 -1
  12. package/dist/_internal/server/features/digital-code/index.d.ts +0 -1
  13. package/dist/_internal/server/features/digital-code/index.js +0 -1
  14. package/dist/_internal/server/features/live/index.d.ts +0 -1
  15. package/dist/_internal/server/features/live/index.js +0 -1
  16. package/dist/_internal/server/features/products/data.js +15 -5
  17. package/dist/_internal/server/features/products/list-public.d.ts +9 -0
  18. package/dist/_internal/server/features/products/list-public.js +95 -7
  19. package/dist/_internal/server/features/site-settings/adapters.d.ts +2 -2
  20. package/dist/_internal/server/features/site-settings/adapters.js +8 -5
  21. package/dist/_internal/server/features/tester/visibility.d.ts +2 -1
  22. package/dist/_internal/server/features/tester/visibility.js +2 -2
  23. package/dist/_internal/server/functions/scheduled.d.ts +3 -1
  24. package/dist/_internal/server/functions/scheduled.js +27 -1
  25. package/dist/_internal/server/jobs/core/hardBanCascade.js +4 -0
  26. package/dist/_internal/server/jobs/core/index.d.ts +2 -0
  27. package/dist/_internal/server/jobs/core/index.js +2 -0
  28. package/dist/_internal/server/jobs/core/pageViewPrune.d.ts +10 -0
  29. package/dist/_internal/server/jobs/core/pageViewPrune.js +44 -0
  30. package/dist/_internal/server/jobs/core/pageViewRollup.d.ts +2 -0
  31. package/dist/_internal/server/jobs/core/pageViewRollup.js +87 -0
  32. package/dist/_internal/server/jobs/handlers/index.d.ts +2 -0
  33. package/dist/_internal/server/jobs/handlers/index.js +2 -0
  34. package/dist/_internal/server/jobs/handlers/pageViewPrune.d.ts +2 -0
  35. package/dist/_internal/server/jobs/handlers/pageViewPrune.js +2 -0
  36. package/dist/_internal/server/jobs/handlers/pageViewRollup.d.ts +2 -0
  37. package/dist/_internal/server/jobs/handlers/pageViewRollup.js +2 -0
  38. package/dist/_internal/shared/actions/action-registry.d.ts +1 -1
  39. package/dist/_internal/shared/actions/action-registry.js +69 -22
  40. package/dist/_internal/shared/checkout/rules/classified.rule.d.ts +9 -4
  41. package/dist/_internal/shared/checkout/rules/classified.rule.js +7 -2
  42. package/dist/_internal/shared/features/layout/matchesNavQuery.d.ts +14 -0
  43. package/dist/_internal/shared/features/layout/matchesNavQuery.js +72 -0
  44. package/dist/_internal/shared/features/layout/types.d.ts +37 -1
  45. package/dist/_internal/shared/features/layout/types.js +19 -1
  46. package/dist/_internal/shared/features/notifications/action-url.d.ts +9 -1
  47. package/dist/_internal/shared/features/notifications/action-url.js +47 -0
  48. package/dist/_internal/shared/features/offers/config.d.ts +65 -0
  49. package/dist/_internal/shared/features/offers/config.js +73 -2
  50. package/dist/_internal/shared/features/orders/schema.d.ts +19 -1
  51. package/dist/_internal/shared/features/orders/schema.js +22 -2
  52. package/dist/_internal/shared/features/site-settings/types.d.ts +12 -3
  53. package/dist/_internal/shared/listing-types/capabilities.d.ts +8 -2
  54. package/dist/_internal/shared/listing-types/capabilities.js +6 -1
  55. package/dist/_internal/shared/listing-types/classified/ctas.js +6 -1
  56. package/dist/_internal/shared/listing-types/feature-flags.d.ts +10 -5
  57. package/dist/_internal/shared/listing-types/feature-flags.js +11 -6
  58. package/dist/client.d.ts +37 -20
  59. package/dist/client.js +36 -14
  60. package/dist/configs/next.js +10 -2
  61. package/dist/constants/api-endpoints.d.ts +18 -54
  62. package/dist/constants/api-endpoints.js +6 -26
  63. package/dist/constants/field-names.d.ts +6 -24
  64. package/dist/constants/field-names.js +10 -27
  65. package/dist/constants/geo/countries.d.ts +50 -0
  66. package/dist/constants/geo/countries.js +129 -0
  67. package/dist/constants/geo/subdivisions.d.ts +13 -0
  68. package/dist/constants/geo/subdivisions.js +104 -0
  69. package/dist/constants/index.d.ts +2 -2
  70. package/dist/constants/index.js +2 -2
  71. package/dist/constants/table-keys.d.ts +24 -0
  72. package/dist/constants/table-keys.js +28 -0
  73. package/dist/contracts/extend.d.ts +0 -9
  74. package/dist/contracts/index.d.ts +1 -1
  75. package/dist/contracts/realtime-session.js +7 -0
  76. package/dist/core/browser.d.ts +1 -1
  77. package/dist/core/browser.js +1 -1
  78. package/dist/core/index.d.ts +1 -1
  79. package/dist/core/index.js +1 -1
  80. package/dist/core/site-config.d.ts +0 -3
  81. package/dist/core/site-config.js +0 -3
  82. package/dist/errors/messages.d.ts +0 -8
  83. package/dist/errors/messages.js +0 -9
  84. package/dist/features/about/schemas/index.d.ts +8 -8
  85. package/dist/features/account/components/AddressFilters.js +32 -11
  86. package/dist/features/account/components/AddressForm.d.ts +26 -25
  87. package/dist/features/account/components/AddressForm.js +81 -103
  88. package/dist/features/account/components/AddressesIndexListing.js +8 -4
  89. package/dist/features/account/components/UserSidebar.d.ts +3 -4
  90. package/dist/features/account/components/UserSupportView.js +89 -58
  91. package/dist/features/account/components/index.d.ts +1 -7
  92. package/dist/features/account/components/index.js +0 -3
  93. package/dist/features/account/hooks/useAddresses.d.ts +4 -3
  94. package/dist/features/account/hooks/useAddresses.js +4 -6
  95. package/dist/features/account/hooks/useCollapsedSections.d.ts +51 -10
  96. package/dist/features/account/hooks/useCollapsedSections.js +211 -38
  97. package/dist/features/account/hooks/useProfile.d.ts +8 -0
  98. package/dist/features/account/index.d.ts +0 -3
  99. package/dist/features/account/index.js +0 -3
  100. package/dist/features/account/schemas/index.d.ts +0 -92
  101. package/dist/features/account/schemas/index.js +42 -20
  102. package/dist/features/addresses/components/AddressLocationFields.d.ts +13 -0
  103. package/dist/features/addresses/components/AddressLocationFields.js +41 -0
  104. package/dist/features/addresses/hooks/usePostalLookup.d.ts +17 -0
  105. package/dist/features/addresses/hooks/usePostalLookup.js +133 -0
  106. package/dist/features/addresses/schemas/address-form.d.ts +423 -0
  107. package/dist/features/addresses/schemas/address-form.js +212 -0
  108. package/dist/features/addresses/schemas/index.d.ts +1 -0
  109. package/dist/features/addresses/schemas/index.js +8 -0
  110. package/dist/features/admin/actions/admin-read-actions.d.ts +1 -1
  111. package/dist/features/admin/actions/index.d.ts +0 -1
  112. package/dist/features/admin/actions/index.js +0 -1
  113. package/dist/features/admin/actions/notification-actions.js +1 -41
  114. package/dist/features/admin/components/AdminActionIndexView.d.ts +32 -0
  115. package/dist/features/admin/components/AdminActionIndexView.js +128 -0
  116. package/dist/features/admin/components/AdminAdEditorView.js +159 -163
  117. package/dist/features/admin/components/AdminAddressEditorView.js +97 -55
  118. package/dist/features/admin/components/AdminBrandEditorView.d.ts +15 -0
  119. package/dist/features/admin/components/AdminBrandEditorView.js +113 -77
  120. package/dist/features/admin/components/AdminBundleEditorView.d.ts +19 -9
  121. package/dist/features/admin/components/AdminBundleEditorView.js +136 -168
  122. package/dist/features/admin/components/AdminCategoryEditorView.js +120 -43
  123. package/dist/features/admin/components/AdminCouponEditorView.js +145 -109
  124. package/dist/features/admin/components/AdminEmployeeEditorView.js +125 -56
  125. package/dist/features/admin/components/AdminFaqEditorView.js +112 -58
  126. package/dist/features/admin/components/AdminFeatureEditorView.js +108 -68
  127. package/dist/features/admin/components/AdminNavEditorView.js +69 -44
  128. package/dist/features/admin/components/AdminOrderEditorView.js +47 -10
  129. package/dist/features/admin/components/AdminPrizeDrawsView.js +16 -2
  130. package/dist/features/admin/components/AdminSidebar.d.ts +11 -7
  131. package/dist/features/admin/components/AdminSiteSettingsView.js +37 -37
  132. package/dist/features/admin/components/AdminStoreEditorView.js +75 -52
  133. package/dist/features/admin/components/AdminSublistingCategoryEditorView.js +71 -30
  134. package/dist/features/admin/components/AdminTesterChecklistItemEditorView.js +95 -65
  135. package/dist/features/admin/components/BrandQuickCreateForm.d.ts +10 -0
  136. package/dist/features/admin/components/BrandQuickCreateForm.js +49 -26
  137. package/dist/features/admin/components/CategoryQuickCreateForm.d.ts +11 -0
  138. package/dist/features/admin/components/CategoryQuickCreateForm.js +48 -26
  139. package/dist/features/admin/components/index.d.ts +2 -2
  140. package/dist/features/admin/components/index.js +1 -1
  141. package/dist/features/admin/constants/site-settings-tabs.d.ts +120 -0
  142. package/dist/features/admin/constants/site-settings-tabs.js +152 -0
  143. package/dist/features/admin/index.d.ts +0 -3
  144. package/dist/features/admin/index.js +0 -2
  145. package/dist/features/admin/repository/analytics-rollup.repository.d.ts +35 -0
  146. package/dist/features/admin/repository/analytics-rollup.repository.js +30 -0
  147. package/dist/features/admin/schemas/admin-editor-forms.d.ts +56 -57
  148. package/dist/features/admin/schemas/admin-editor-forms.js +97 -54
  149. package/dist/features/admin/schemas/admin-ops-forms.d.ts +57 -5
  150. package/dist/features/admin/schemas/admin-ops-forms.js +104 -20
  151. package/dist/features/admin/schemas/admin-user-form.js +7 -0
  152. package/dist/features/admin/schemas/firestore.d.ts +48 -95
  153. package/dist/features/admin/schemas/firestore.js +15 -151
  154. package/dist/features/admin/schemas/nav-item-form.js +9 -2
  155. package/dist/features/admin/server.d.ts +0 -4
  156. package/dist/features/admin/server.js +0 -2
  157. package/dist/features/admin/types/index.d.ts +0 -7
  158. package/dist/features/analytics/repository/page-views.repository.d.ts +14 -0
  159. package/dist/features/analytics/repository/page-views.repository.js +24 -0
  160. package/dist/features/auth/actions/index.d.ts +0 -1
  161. package/dist/features/auth/actions/index.js +0 -1
  162. package/dist/features/auth/actions/realtime-token-actions.js +1 -12
  163. package/dist/features/auth/auth-helpers.js +5 -7
  164. package/dist/features/auth/components/Guards.js +2 -1
  165. package/dist/features/auth/components/LoginForm.d.ts +0 -2
  166. package/dist/features/auth/components/LoginForm.js +1 -3
  167. package/dist/features/auth/components/RegisterForm.js +62 -19
  168. package/dist/features/auth/permissions/constants.d.ts +27 -1
  169. package/dist/features/auth/role-predicates.d.ts +75 -7
  170. package/dist/features/auth/role-predicates.js +28 -2
  171. package/dist/features/auth/schemas/firestore.d.ts +22 -0
  172. package/dist/features/auth/schemas/index.d.ts +1 -1
  173. package/dist/features/auth/schemas/index.js +44 -8
  174. package/dist/features/auth/types/index.d.ts +14 -1
  175. package/dist/features/blog/api/route.js +10 -2
  176. package/dist/features/blog/components/BlogIndexListing.js +1 -1
  177. package/dist/features/blog/hooks/useBlog.js +2 -2
  178. package/dist/features/blog/schemas/index.d.ts +4 -0
  179. package/dist/features/blog/schemas/index.js +2 -0
  180. package/dist/features/blog/types/index.d.ts +1 -1
  181. package/dist/features/catalogue/components/CatalogueItemEditorView.d.ts +22 -0
  182. package/dist/features/catalogue/components/CatalogueItemEditorView.js +112 -52
  183. package/dist/features/catalogue/schemas/validation.d.ts +4 -4
  184. package/dist/features/catalogue/schemas/validation.js +47 -10
  185. package/dist/features/categories/schemas/bundle-form.d.ts +142 -0
  186. package/dist/features/categories/schemas/bundle-form.js +149 -0
  187. package/dist/features/classified/components/ClassifiedDetailPageView.d.ts +5 -4
  188. package/dist/features/classified/components/ClassifiedDetailPageView.js +37 -16
  189. package/dist/features/consultation/components/ConsultationForm.js +1 -1
  190. package/dist/features/consultation/schemas/index.js +34 -10
  191. package/dist/features/corporate/schemas/index.js +36 -15
  192. package/dist/features/filters/FilterPanel.js +3 -3
  193. package/dist/features/filters/RangeFilter.d.ts +10 -0
  194. package/dist/features/filters/RangeFilter.js +41 -4
  195. package/dist/features/homepage/components/MarketplaceHomepageView.js +24 -5
  196. package/dist/features/homepage/hooks/useBlogArticles.js +1 -1
  197. package/dist/features/layout/BottomActions.js +84 -11
  198. package/dist/features/layout/BottomActionsContext.d.ts +1 -6
  199. package/dist/features/layout/BottomActionsContext.js +1 -1
  200. package/dist/features/layout/hooks/useBottomActions.js +2 -2
  201. package/dist/features/layout/hooks/useFormBottomActions.d.ts +12 -1
  202. package/dist/features/layout/hooks/useFormBottomActions.js +12 -6
  203. package/dist/features/lottery/schemas/config-write.d.ts +9 -5
  204. package/dist/features/lottery/schemas/config-write.js +69 -9
  205. package/dist/features/orders/schemas/buyer-forms.d.ts +6 -3
  206. package/dist/features/orders/schemas/buyer-forms.js +31 -3
  207. package/dist/features/orders/schemas/index.d.ts +2 -2
  208. package/dist/features/products/components/GroupSettingsPanel.js +3 -1
  209. package/dist/features/products/components/MakeOfferButton.d.ts +13 -2
  210. package/dist/features/products/components/MakeOfferButton.js +33 -11
  211. package/dist/features/products/components/ProductDetailActions.js +0 -1
  212. package/dist/features/products/components/ProductDetailPageView.d.ts +7 -3
  213. package/dist/features/products/components/ProductDetailPageView.js +8 -5
  214. package/dist/features/products/constants/action-defs.d.ts +1 -2
  215. package/dist/features/products/constants/action-defs.js +40 -43
  216. package/dist/features/products/repository/products.repository.d.ts +5 -1
  217. package/dist/features/products/repository/products.repository.js +23 -1
  218. package/dist/features/products/schemas/firestore.d.ts +7 -3
  219. package/dist/features/products/schemas/product-features.validators.js +3 -0
  220. package/dist/features/promotions/components/CouponCard.js +8 -7
  221. package/dist/features/scams/schemas/firestore.d.ts +15 -1
  222. package/dist/features/scams/schemas/report-form.d.ts +5 -5
  223. package/dist/features/scams/schemas/report-form.js +18 -3
  224. package/dist/features/search/action-index/derive.d.ts +49 -0
  225. package/dist/features/search/action-index/derive.js +121 -0
  226. package/dist/features/search/action-index/repository.d.ts +42 -0
  227. package/dist/features/search/action-index/repository.js +100 -0
  228. package/dist/features/search/action-index/settings-entries.d.ts +41 -0
  229. package/dist/features/search/action-index/settings-entries.js +268 -0
  230. package/dist/features/search/action-index/types.d.ts +81 -0
  231. package/dist/features/search/action-index/types.js +102 -0
  232. package/dist/features/search/action-index/validate-entry.d.ts +34 -0
  233. package/dist/features/search/action-index/validate-entry.js +114 -0
  234. package/dist/features/search/hooks/useNavSuggestions.d.ts +5 -1
  235. package/dist/features/search/hooks/useNavSuggestions.js +23 -3
  236. package/dist/features/search/repository/search.repository.js +3 -1
  237. package/dist/features/seller/actions/offer-actions.js +43 -24
  238. package/dist/features/seller/actions/seller-actions.js +29 -5
  239. package/dist/features/seller/components/CategoryChipPicker.d.ts +9 -0
  240. package/dist/features/seller/components/CategoryChipPicker.js +12 -0
  241. package/dist/features/seller/components/SellerAddressesView.js +5 -1
  242. package/dist/features/seller/components/SellerAnalyticsAlertsView.js +83 -43
  243. package/dist/features/seller/components/SellerArtView.d.ts +14 -7
  244. package/dist/features/seller/components/SellerArtView.js +4 -119
  245. package/dist/features/seller/components/SellerClassifiedView.d.ts +14 -7
  246. package/dist/features/seller/components/SellerClassifiedView.js +4 -124
  247. package/dist/features/seller/components/SellerCouponEditorView.d.ts +22 -1
  248. package/dist/features/seller/components/SellerCouponEditorView.js +91 -45
  249. package/dist/features/seller/components/SellerDigitalCodesView.d.ts +14 -7
  250. package/dist/features/seller/components/SellerDigitalCodesView.js +4 -126
  251. package/dist/features/seller/components/SellerListingTypeView.d.ts +66 -0
  252. package/dist/features/seller/components/SellerListingTypeView.js +277 -0
  253. package/dist/features/seller/components/SellerLiveView.d.ts +14 -7
  254. package/dist/features/seller/components/SellerLiveView.js +4 -126
  255. package/dist/features/seller/components/SellerSidebar.d.ts +3 -6
  256. package/dist/features/seller/components/SellerStickersView.d.ts +14 -7
  257. package/dist/features/seller/components/SellerStickersView.js +4 -119
  258. package/dist/features/seller/components/SellerSupportView.d.ts +31 -0
  259. package/dist/features/seller/components/SellerSupportView.js +100 -0
  260. package/dist/features/seller/components/index.d.ts +4 -8
  261. package/dist/features/seller/components/index.js +2 -4
  262. package/dist/features/seller/index.d.ts +0 -1
  263. package/dist/features/seller/index.js +0 -1
  264. package/dist/features/seller/schemas/coupon-form.d.ts +214 -0
  265. package/dist/features/seller/schemas/coupon-form.js +155 -23
  266. package/dist/features/seller/schemas/offer-forms.d.ts +16 -7
  267. package/dist/features/seller/schemas/offer-forms.js +28 -12
  268. package/dist/features/shell/FormShell.js +2 -2
  269. package/dist/features/shell/QuickFormDrawer.js +2 -2
  270. package/dist/features/shell/SectionForm.d.ts +19 -1
  271. package/dist/features/shell/SectionForm.js +104 -17
  272. package/dist/features/shell/build-sections.d.ts +23 -0
  273. package/dist/features/shell/build-sections.js +106 -8
  274. package/dist/features/shell/field-ui-meta.d.ts +44 -0
  275. package/dist/features/shell/field-ui-meta.js +14 -7
  276. package/dist/features/shell/form-sections.d.ts +46 -0
  277. package/dist/features/shell/form-sections.js +114 -0
  278. package/dist/features/shipments/components/AdminShipmentEditorView.js +87 -64
  279. package/dist/features/shipments/schemas/validation.d.ts +2 -2
  280. package/dist/features/shipments/schemas/validation.js +44 -13
  281. package/dist/features/store-extensions/schemas/custom-role-form.js +6 -2
  282. package/dist/features/store-extensions/schemas/listing-template-form.d.ts +7 -7
  283. package/dist/features/store-extensions/schemas/payout-method-form.js +14 -0
  284. package/dist/features/stores/actions/store-query-actions.js +3 -2
  285. package/dist/features/stores/api/[storeSlug]/auctions/route.js +3 -1
  286. package/dist/features/stores/api/[storeSlug]/products/route.js +3 -1
  287. package/dist/features/support/repository/support.repository.d.ts +21 -0
  288. package/dist/features/support/repository/support.repository.js +63 -0
  289. package/dist/features/support/schemas/firestore.d.ts +27 -2
  290. package/dist/features/support/schemas/firestore.js +2 -0
  291. package/dist/features/support/schemas/ticket-create-form.js +7 -0
  292. package/dist/features/tester/schemas/checklist-item-form.d.ts +43 -0
  293. package/dist/features/tester/schemas/checklist-item-form.js +109 -0
  294. package/dist/features/tester/seed-data/blog-tester-seed-data.js +2 -2
  295. package/dist/features/tester/seed-data/categories-tester-seed-data.js +2 -2
  296. package/dist/features/tester/seed-data/events-tester-seed-data.js +5 -5
  297. package/dist/features/tester/seed-data/orders-tester-seed-data.js +2 -2
  298. package/dist/features/tester/seed-data/products-tester-seed-data.js +48 -49
  299. package/dist/features/tester/seed-data/stores-tester-seed-data.js +3 -3
  300. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +275 -29
  301. package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +48 -12
  302. package/dist/http/api-handler.js +2 -1
  303. package/dist/index.d.ts +24 -103
  304. package/dist/index.js +33 -141
  305. package/dist/jobs.d.ts +1 -1
  306. package/dist/jobs.js +1 -1
  307. package/dist/monitoring/browser.d.ts +0 -2
  308. package/dist/monitoring/browser.js +12 -1
  309. package/dist/monitoring/index.d.ts +0 -2
  310. package/dist/monitoring/index.js +0 -1
  311. package/dist/next/api/routeHandler.js +6 -3
  312. package/dist/next/index.d.ts +7 -2
  313. package/dist/next/index.js +36 -1
  314. package/dist/next/middleware/index.d.ts +0 -2
  315. package/dist/next/middleware/index.js +0 -1
  316. package/dist/next/routing/route-map.d.ts +8 -7
  317. package/dist/next/routing/route-map.js +10 -3
  318. package/dist/providers/db-firebase/admin.js +15 -1
  319. package/dist/providers/db-firebase/sieve.d.ts +22 -0
  320. package/dist/react/hooks/useListingTypeFlags.d.ts +1 -1
  321. package/dist/react/hooks/useListingTypeFlags.js +1 -1
  322. package/dist/react/hooks/usePendingFilters.js +5 -3
  323. package/dist/react/hooks/usePendingTable.js +15 -3
  324. package/dist/repositories/index.d.ts +0 -1
  325. package/dist/repositories/index.js +0 -1
  326. package/dist/schemas/registry.d.ts +197 -232
  327. package/dist/schemas/registry.js +5 -6
  328. package/dist/schemas/webhooks/razorpay.d.ts +50 -50
  329. package/dist/security/authorization.d.ts +9 -0
  330. package/dist/security/authorization.js +16 -2
  331. package/dist/security/browser.d.ts +1 -3
  332. package/dist/security/browser.js +5 -2
  333. package/dist/security/index.d.ts +1 -3
  334. package/dist/security/index.js +19 -2
  335. package/dist/security/pii-encrypt.js +16 -0
  336. package/dist/security/pii-schemas.d.ts +0 -14
  337. package/dist/security/pii-schemas.js +7 -15
  338. package/dist/seed/_helpers/category-forest.js +2 -2
  339. package/dist/seed/_helpers/media.d.ts +19 -0
  340. package/dist/seed/_helpers/media.js +75 -0
  341. package/dist/seed/blog-posts-seed-data.js +17 -17
  342. package/dist/seed/carousel-slides-seed-data.js +7 -7
  343. package/dist/seed/cart-seed-data.js +13 -13
  344. package/dist/seed/categories-seed-data.js +10 -10
  345. package/dist/seed/events-seed-data.js +24 -24
  346. package/dist/seed/factories/product.factory.js +4 -4
  347. package/dist/seed/factories/store.factory.js +3 -3
  348. package/dist/seed/factories/user.factory.js +2 -2
  349. package/dist/seed/grouped-listings-seed-data.js +11 -11
  350. package/dist/seed/homepage-sections-seed-data.js +2 -2
  351. package/dist/seed/index.d.ts +0 -1
  352. package/dist/seed/index.js +0 -1
  353. package/dist/seed/manifest.d.ts +1 -1
  354. package/dist/seed/manifest.js +0 -5
  355. package/dist/seed/notifications-seed-data.js +20 -1
  356. package/dist/seed/orders-seed-data.js +2 -2
  357. package/dist/seed/products-art-seed-data.js +16 -16
  358. package/dist/seed/products-auctions-seed-data.js +34 -34
  359. package/dist/seed/products-classifieds-seed-data.js +35 -37
  360. package/dist/seed/products-digital-codes-seed-data.js +20 -20
  361. package/dist/seed/products-live-items-seed-data.js +11 -11
  362. package/dist/seed/products-preorders-seed-data.js +13 -13
  363. package/dist/seed/products-prize-draws-seed-data.js +43 -43
  364. package/dist/seed/products-standard-seed-data.js +54 -54
  365. package/dist/seed/products-stickers-seed-data.js +15 -15
  366. package/dist/seed/reviews-seed-data.js +4 -4
  367. package/dist/seed/scammers-seed-data.js +3 -3
  368. package/dist/seed/site-settings-seed-data.js +11 -24
  369. package/dist/seed/store-extensions-seed-data.js +10 -10
  370. package/dist/seed/stores-seed-data.js +11 -11
  371. package/dist/seed/support-tickets-seed-data.d.ts +14 -0
  372. package/dist/seed/support-tickets-seed-data.js +20 -1
  373. package/dist/seed/users-seed-data.js +20 -20
  374. package/dist/server-entry.d.ts +0 -1
  375. package/dist/server-entry.js +0 -1
  376. package/dist/server.d.ts +9 -6
  377. package/dist/server.js +7 -13
  378. package/dist/styles.css +248 -68
  379. package/dist/tailwind-utilities.css +1 -1
  380. package/dist/tokens/themes/default-dark.js +2 -2
  381. package/dist/tokens/themes/default-light.js +2 -2
  382. package/dist/tokens/tokens.css +24 -4
  383. package/dist/ui/components/ActionRow.d.ts +50 -0
  384. package/dist/ui/components/ActionRow.js +53 -0
  385. package/dist/ui/components/ActionRow.style.css +145 -0
  386. package/dist/ui/components/Drawer.d.ts +10 -0
  387. package/dist/ui/components/Drawer.js +2 -1
  388. package/dist/ui/components/FilterDrawer.js +4 -1
  389. package/dist/ui/components/FilterDrawer.style.css +6 -12
  390. package/dist/ui/components/FormActionBar.js +14 -1
  391. package/dist/ui/components/FormActionBar.style.css +12 -11
  392. package/dist/ui/components/ListingLayout.js +8 -1
  393. package/dist/ui/components/ListingLayout.style.css +6 -13
  394. package/dist/ui/components/Modal.d.ts +15 -1
  395. package/dist/ui/components/Modal.js +17 -3
  396. package/dist/ui/components/QuickCreateModal.js +2 -2
  397. package/dist/ui/components/QuickCreateModal.style.css +78 -84
  398. package/dist/ui/components/RecordDetailModal.js +2 -2
  399. package/dist/ui/components/SideDrawer.d.ts +8 -0
  400. package/dist/ui/components/SideDrawer.js +2 -1
  401. package/dist/ui/components/SideDrawer.style.css +6 -3
  402. package/dist/ui/components/SideModal.d.ts +11 -1
  403. package/dist/ui/components/SideModal.js +3 -2
  404. package/dist/ui/components/SideModal.style.css +14 -0
  405. package/dist/ui/components/Typography.style.css +33 -24
  406. package/dist/ui/components/index.style.css +1 -0
  407. package/dist/ui/forms/FormShell.style.css +260 -311
  408. package/dist/ui/index.d.ts +2 -0
  409. package/dist/ui/index.js +1 -0
  410. package/dist/utils/index.d.ts +0 -1
  411. package/dist/utils/index.js +0 -1
  412. package/dist/validation/index.d.ts +1 -1
  413. package/dist/validation/index.js +1 -1
  414. package/dist/validation/schemas.d.ts +0 -19
  415. package/dist/validation/schemas.js +8 -19
  416. package/package.json +1 -1
  417. package/scripts/seed-cli.mjs +3 -6
@@ -19,7 +19,6 @@ export { withCache, invalidateCache } from "./cache-middleware";
19
19
  // PII-aware composable middleware chain (Phase 21)
20
20
  export { createApiMiddleware, runChain, buildBaseContext, } from "./middleware/chain";
21
21
  export { piiScrubberMiddleware } from "./middleware/pii-scrubber";
22
- export { createPiiRedactorMiddleware } from "./middleware/pii-redactor";
23
22
  // Standardized API response helpers
24
23
  export { successResponse, errorResponse, ApiErrors } from "./api/api-response";
25
24
  // Error UI view components
@@ -28,3 +27,39 @@ export { ErrorView } from "./components/ErrorView";
28
27
  export { NotFoundView } from "./components/NotFoundView";
29
28
  export { UnauthorizedView } from "./components/UnauthorizedView";
30
29
  export { ErrorBoundary } from "./ErrorBoundary";
30
+ /*
31
+ * Pure, isomorphic nav helpers — deliberately re-exported HERE as well as from
32
+ * the main and client entries.
33
+ *
34
+ * 🛑 `src/constants/navigation.tsx` CALLS `navItemId()` at module scope and is
35
+ * imported by BOTH server code (the locale and store layouts, the action index)
36
+ * and client code (every sidebar). That leaves it nowhere to import from:
37
+ *
38
+ * - `@mohasinac/appkit/client` is `"use client"`, so on the server the binding
39
+ * is a client-reference proxy and calling it throws (Root Cause #76). It did
40
+ * — "Attempted to call navItemId() from the server" failed the Vercel build.
41
+ * - the bare `@mohasinac/appkit` entry then trips
42
+ * `audit-client-server-only-leak` on all 57 client components that reach
43
+ * navigation.tsx transitively (Root Cause #6).
44
+ *
45
+ * The two audits pull in opposite directions, and both are right. `./next` is
46
+ * the third door: not `"use client"`, and not a path to firebase-admin — so it
47
+ * satisfies both. This is the same reasoning that keeps `/ui` and `/tokens`
48
+ * separate entries.
49
+ */
50
+ export { navItemId } from "../_internal/shared/features/layout/types";
51
+ export { matchesNavQuery } from "../_internal/shared/features/layout/matchesNavQuery";
52
+ /*
53
+ * The action-index derivation — same reasoning as the nav helpers above.
54
+ *
55
+ * `src/constants/action-index.ts` calls `buildActionIndexBase()` at module
56
+ * scope and is imported by `GET /api/action-index` (a server route) as well as
57
+ * by `LayoutShellClient` (a client component). Neither the `"use client"` entry
58
+ * nor the bare one works for both; `./next` does.
59
+ *
60
+ * Found by `audit-client-entry-in-server`'s R2 the first time it ran — the same
61
+ * defect as navItemId, one file over, and the next build failure in line.
62
+ */
63
+ export { buildActionIndexBase, deriveNavEntries, deriveQuickActionEntries, } from "../features/search/action-index/derive";
64
+ export { deriveSettingsEntries } from "../features/search/action-index/settings-entries";
65
+ export { mergeActionIndex, projectActionIndexForViewer, } from "../features/search/action-index/types";
@@ -1,6 +1,4 @@
1
1
  export type { BaseRequestContext, AuthRequestContext, Middleware, } from "./types";
2
2
  export { piiScrubberMiddleware } from "./pii-scrubber";
3
- export { createPiiRedactorMiddleware } from "./pii-redactor";
4
- export type { PiiRedactionRule } from "./pii-redactor";
5
3
  export { createApiMiddleware, runChain, buildBaseContext } from "./chain";
6
4
  export type { CreateApiMiddlewareConfig } from "./chain";
@@ -1,3 +1,2 @@
1
1
  export { piiScrubberMiddleware } from "./pii-scrubber";
2
- export { createPiiRedactorMiddleware } from "./pii-redactor";
3
2
  export { createApiMiddleware, runChain, buildBaseContext } from "./chain";
@@ -149,7 +149,6 @@ export declare const DEFAULT_ROUTE_MAP: {
149
149
  readonly ORDER_INVOICE: (id: string) => string;
150
150
  readonly ORDER_PAYMENT: (id: string) => string;
151
151
  readonly NOTIFICATIONS: "/user/notifications";
152
- readonly MESSAGES: "/user/messages";
153
152
  /** Plan §10 — claimed-coupons wallet (Active / Expired / Used tabs). */
154
153
  readonly CLAIMED_COUPONS: "/user/coupons";
155
154
  readonly BECOME_SELLER: "/user/become-seller";
@@ -175,7 +174,6 @@ export declare const DEFAULT_ROUTE_MAP: {
175
174
  };
176
175
  readonly STORE: {
177
176
  readonly DASHBOARD: "/store";
178
- readonly MESSAGES: "/store/messages";
179
177
  readonly PRODUCTS: "/store/products";
180
178
  readonly PRODUCTS_NEW: "/store/products/new";
181
179
  readonly PRODUCTS_EDIT: (id: string) => string;
@@ -211,6 +209,8 @@ export declare const DEFAULT_ROUTE_MAP: {
211
209
  readonly FEATURES_NEW: "/store/features/new";
212
210
  readonly FEATURES_EDIT: (id: string) => string;
213
211
  readonly SLUG: "/store/slug";
212
+ /** Tickets raised ABOUT this store (W11). Read-only for the seller. */
213
+ readonly SUPPORT: "/store/support";
214
214
  readonly BUNDLES: "/store/bundles";
215
215
  readonly BUNDLES_NEW: "/store/bundles/new";
216
216
  readonly BUNDLES_EDIT: (id: string) => string;
@@ -282,6 +282,7 @@ export declare const DEFAULT_ROUTE_MAP: {
282
282
  readonly CAROUSELS_EDIT: (id: string) => string;
283
283
  readonly SECTIONS: "/admin/sections";
284
284
  readonly NAVIGATION: "/admin/navigation";
285
+ readonly ACTION_INDEX: "/admin/action-index";
285
286
  readonly NAVIGATION_NEW: "/admin/navigation/new";
286
287
  readonly NAVIGATION_EDIT: (id: string) => string;
287
288
  readonly CATEGORIES: "/admin/categories";
@@ -333,7 +334,6 @@ export declare const DEFAULT_ROUTE_MAP: {
333
334
  readonly EVENT_ENTRIES: (id: string) => string;
334
335
  readonly STORES: "/admin/stores";
335
336
  readonly STORE_DETAIL: (id: string) => string;
336
- readonly FEATURE_FLAGS: "/admin/feature-flags";
337
337
  readonly COPILOT: "/admin/copilot";
338
338
  readonly ADS: "/admin/ads";
339
339
  readonly ADS_NEW: "/admin/ads/new";
@@ -552,7 +552,6 @@ export declare const ROUTES: {
552
552
  readonly ORDER_INVOICE: (id: string) => string;
553
553
  readonly ORDER_PAYMENT: (id: string) => string;
554
554
  readonly NOTIFICATIONS: "/user/notifications";
555
- readonly MESSAGES: "/user/messages";
556
555
  /** Plan §10 — claimed-coupons wallet (Active / Expired / Used tabs). */
557
556
  readonly CLAIMED_COUPONS: "/user/coupons";
558
557
  readonly BECOME_SELLER: "/user/become-seller";
@@ -578,7 +577,6 @@ export declare const ROUTES: {
578
577
  };
579
578
  readonly STORE: {
580
579
  readonly DASHBOARD: "/store";
581
- readonly MESSAGES: "/store/messages";
582
580
  readonly PRODUCTS: "/store/products";
583
581
  readonly PRODUCTS_NEW: "/store/products/new";
584
582
  readonly PRODUCTS_EDIT: (id: string) => string;
@@ -614,6 +612,8 @@ export declare const ROUTES: {
614
612
  readonly FEATURES_NEW: "/store/features/new";
615
613
  readonly FEATURES_EDIT: (id: string) => string;
616
614
  readonly SLUG: "/store/slug";
615
+ /** Tickets raised ABOUT this store (W11). Read-only for the seller. */
616
+ readonly SUPPORT: "/store/support";
617
617
  readonly BUNDLES: "/store/bundles";
618
618
  readonly BUNDLES_NEW: "/store/bundles/new";
619
619
  readonly BUNDLES_EDIT: (id: string) => string;
@@ -685,6 +685,7 @@ export declare const ROUTES: {
685
685
  readonly CAROUSELS_EDIT: (id: string) => string;
686
686
  readonly SECTIONS: "/admin/sections";
687
687
  readonly NAVIGATION: "/admin/navigation";
688
+ readonly ACTION_INDEX: "/admin/action-index";
688
689
  readonly NAVIGATION_NEW: "/admin/navigation/new";
689
690
  readonly NAVIGATION_EDIT: (id: string) => string;
690
691
  readonly CATEGORIES: "/admin/categories";
@@ -736,7 +737,6 @@ export declare const ROUTES: {
736
737
  readonly EVENT_ENTRIES: (id: string) => string;
737
738
  readonly STORES: "/admin/stores";
738
739
  readonly STORE_DETAIL: (id: string) => string;
739
- readonly FEATURE_FLAGS: "/admin/feature-flags";
740
740
  readonly COPILOT: "/admin/copilot";
741
741
  readonly ADS: "/admin/ads";
742
742
  readonly ADS_NEW: "/admin/ads/new";
@@ -818,7 +818,6 @@ export declare const ROUTES: {
818
818
  /** @deprecated Use ROUTES.STORE instead */
819
819
  export declare const SELLER_ROUTES: {
820
820
  readonly DASHBOARD: "/store";
821
- readonly MESSAGES: "/store/messages";
822
821
  readonly PRODUCTS: "/store/products";
823
822
  readonly PRODUCTS_NEW: "/store/products/new";
824
823
  readonly PRODUCTS_EDIT: (id: string) => string;
@@ -854,6 +853,8 @@ export declare const SELLER_ROUTES: {
854
853
  readonly FEATURES_NEW: "/store/features/new";
855
854
  readonly FEATURES_EDIT: (id: string) => string;
856
855
  readonly SLUG: "/store/slug";
856
+ /** Tickets raised ABOUT this store (W11). Read-only for the seller. */
857
+ readonly SUPPORT: "/store/support";
857
858
  readonly BUNDLES: "/store/bundles";
858
859
  readonly BUNDLES_NEW: "/store/bundles/new";
859
860
  readonly BUNDLES_EDIT: (id: string) => string;
@@ -153,7 +153,6 @@ export const DEFAULT_ROUTE_MAP = {
153
153
  ORDER_INVOICE: (id) => `/user/orders/${id}/invoice`,
154
154
  ORDER_PAYMENT: (id) => `/user/orders/${id}/payment`,
155
155
  NOTIFICATIONS: "/user/notifications",
156
- MESSAGES: "/user/messages",
157
156
  /** Plan §10 — claimed-coupons wallet (Active / Expired / Used tabs). */
158
157
  CLAIMED_COUPONS: "/user/coupons",
159
158
  BECOME_SELLER: "/user/become-seller",
@@ -179,7 +178,6 @@ export const DEFAULT_ROUTE_MAP = {
179
178
  },
180
179
  STORE: {
181
180
  DASHBOARD: "/store",
182
- MESSAGES: "/store/messages",
183
181
  PRODUCTS: "/store/products",
184
182
  PRODUCTS_NEW: "/store/products/new",
185
183
  PRODUCTS_EDIT: (id) => `/store/products/${id}/edit`,
@@ -215,6 +213,8 @@ export const DEFAULT_ROUTE_MAP = {
215
213
  FEATURES_NEW: "/store/features/new",
216
214
  FEATURES_EDIT: (id) => `/store/features/${id}/edit`,
217
215
  SLUG: "/store/slug",
216
+ /** Tickets raised ABOUT this store (W11). Read-only for the seller. */
217
+ SUPPORT: "/store/support",
218
218
  // SB1-J — bundles + prize draws
219
219
  BUNDLES: "/store/bundles",
220
220
  BUNDLES_NEW: "/store/bundles/new",
@@ -296,6 +296,14 @@ export const DEFAULT_ROUTE_MAP = {
296
296
  CAROUSELS_EDIT: (id) => `/admin/carousels/${id}/edit`,
297
297
  SECTIONS: "/admin/sections",
298
298
  NAVIGATION: "/admin/navigation",
299
+ /*
300
+ * The action index (W7 / D7) — one control plane for every page, setting
301
+ * and toggle a user can reach. It supersedes NAVIGATION and
302
+ * SETTINGS_NAVIGATION, neither of whose data ever reached a sidebar:
303
+ * `filterNavItems` short-circuits on a missing `id`, and no nav item had
304
+ * one until W6.
305
+ */
306
+ ACTION_INDEX: "/admin/action-index",
299
307
  NAVIGATION_NEW: "/admin/navigation/new",
300
308
  NAVIGATION_EDIT: (id) => `/admin/navigation/${id}/edit`,
301
309
  CATEGORIES: "/admin/categories",
@@ -348,7 +356,6 @@ export const DEFAULT_ROUTE_MAP = {
348
356
  EVENT_ENTRIES: (id) => `/admin/events/${id}/entries`,
349
357
  STORES: "/admin/stores",
350
358
  STORE_DETAIL: (id) => `/admin/stores/${id}/view`,
351
- FEATURE_FLAGS: "/admin/feature-flags",
352
359
  COPILOT: "/admin/copilot",
353
360
  ADS: "/admin/ads",
354
361
  ADS_NEW: "/admin/ads/new",
@@ -64,7 +64,21 @@ export function getAdminApp() {
64
64
  return existing;
65
65
  }
66
66
  const keyPath = nodePath().join(nodeCwd(), "firebase-admin-key.json");
67
- const storageBucket = process.env.FIREBASE_ADMIN_STORAGE_BUCKET?.trim() ??
67
+ /*
68
+ * 🛑 `||`, not `??`.
69
+ *
70
+ * A Vercel env var that EXISTS but is empty yields `""`, and `""` is not
71
+ * nullish — so `??` short-circuits, the NEXT_PUBLIC fallback never runs, and
72
+ * `...(storageBucket && …)` then drops the key entirely. The app initialises
73
+ * with NO bucket and every own-bucket media request 500s with
74
+ * "Bucket name not specified".
75
+ *
76
+ * Invisible locally: `.env.local` does not define FIREBASE_ADMIN_STORAGE_BUCKET
77
+ * at all, so the fallback always runs here. `scripts/test-storage-flow.mjs`
78
+ * and `scripts/test-storage.mjs` both already use `||` for this same
79
+ * expression — this was the odd one out.
80
+ */
81
+ const storageBucket = process.env.FIREBASE_ADMIN_STORAGE_BUCKET?.trim() ||
68
82
  process.env.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET?.trim();
69
83
  let app;
70
84
  try {
@@ -117,6 +117,28 @@ export interface SieveOptions {
117
117
  */
118
118
  aliases?: SieveFilterAliases;
119
119
  }
120
+ /**
121
+ * 🛑 THE canonical list envelope. Every repository returns this shape.
122
+ *
123
+ * A list endpoint should emit it unchanged — `return successResponse(result)` —
124
+ * and a listing view should read `response.items`. Where a route instead
125
+ * destructures `result.items` and re-emits it as `products` / `orders` /
126
+ * `tickets`, the view has to rename it back in `mapRows`, and the two renames
127
+ * are a pair that can drift. Fifteen such keys exist; `audit-list-envelope`
128
+ * names them and refuses a sixteenth.
129
+ *
130
+ * Nothing type-errors when they drift, which is why they accumulated:
131
+ * `ListingViewConfig<TResponse, TRow>` treats `TResponse` as opaque and
132
+ * delegates the read to a per-view callback.
133
+ *
134
+ * **`pageSize`, never `perPage`.** Three other spellings existed and all three
135
+ * were dead on 2026-08-31 — `GenericListResponse` (which declared BOTH, each
136
+ * optional, so a value could supply neither), appkit's `AdminListResponse`, and
137
+ * the whole `pagination.helper.ts` module. All deleted. `PagedResult` in
138
+ * contracts/repository.ts still spells it `perPage` and is genuinely live in 14
139
+ * repositories via `IReadRepository.findAll`; converging that is a change to the
140
+ * repository contract itself, not to an envelope.
141
+ */
120
142
  export interface SieveResult<T> {
121
143
  items: T[];
122
144
  total: number;
@@ -3,7 +3,7 @@ import type { ListingType } from "../../features/products/types/index";
3
3
  * W1-43 — useListingTypeFlags
4
4
  *
5
5
  * Returns the enabled-state for each listing type as configured in
6
- * `siteSettings.featureFlags.listingTypes`. Consumers should hide nav items,
6
+ * `siteSettings.listings.listingTypes`. Consumers should hide nav items,
7
7
  * filter TypeDropdown options, and reject API requests for disabled types.
8
8
  *
9
9
  * Defaults to all-enabled when settings haven't loaded yet — match the
@@ -3,7 +3,7 @@ import { useSiteSettings } from "../../core/hooks/useSiteSettings";
3
3
  import { ALL_LISTING_TYPES } from "../../_internal/shared/listing-types/feature-flags";
4
4
  export function useListingTypeFlags() {
5
5
  const { data } = useSiteSettings();
6
- const lt = data?.featureFlags?.listingTypes;
6
+ const lt = data?.listings?.listingTypes;
7
7
  // A type is disabled only when EXPLICITLY set to false — a missing flag (or
8
8
  // settings that haven't loaded) means enabled.
9
9
  const flags = Object.fromEntries(ALL_LISTING_TYPES.map((type) => [type, lt?.[type] !== false]));
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  import { useCallback, useMemo, useState } from "react";
3
+ import { joinFilterValues, splitFilterValues } from "../../constants/table-keys";
3
4
  /**
4
5
  * usePendingFilters
5
6
  *
@@ -30,8 +31,9 @@ import { useCallback, useMemo, useState } from "react";
30
31
  */
31
32
  export function usePendingFilters({ table, keys, }) {
32
33
  const parseValues = useCallback((key) => {
33
- const raw = table.get(key);
34
- return raw ? raw.split(",").filter(Boolean) : [];
34
+ // `|`, not `,` — see FILTER_VALUE_DELIMITER. Splitting on a comma
35
+ // made a 3-value selection one element, so the badge read 1.
36
+ return splitFilterValues(table.get(key));
35
37
  }, [table]);
36
38
  const [pending, setPending] = useState(() => Object.fromEntries(keys.map((k) => [k, parseValues(k)])));
37
39
  const applied = useMemo(() => Object.fromEntries(keys.map((k) => [k, parseValues(k)])), [keys, parseValues]);
@@ -50,7 +52,7 @@ export function usePendingFilters({ table, keys, }) {
50
52
  const apply = useCallback((extras) => {
51
53
  const updates = { page: "1", ...extras };
52
54
  for (const k of keys) {
53
- updates[k] = (pending[k] ?? []).join(",");
55
+ updates[k] = joinFilterValues(pending[k] ?? []);
54
56
  }
55
57
  table.setMany(updates);
56
58
  }, [keys, pending, table]);
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
  import { useMemo } from "react";
3
3
  import { usePendingFilters } from "./usePendingFilters";
4
+ import { joinFilterValues, splitFilterValues } from "../../constants/table-keys";
4
5
  /**
5
6
  * usePendingTable
6
7
  *
@@ -24,14 +25,25 @@ import { usePendingFilters } from "./usePendingFilters";
24
25
  */
25
26
  export function usePendingTable(table, keys) {
26
27
  const filters = usePendingFilters({ table, keys });
28
+ /*
29
+ * `PendingTable` is a one-string-per-key view over an array-per-key buffer,
30
+ * so both directions have to go through the delimiter.
31
+ *
32
+ * `get` was `filters.pending[key]?.[0]` and `set` wrapped the whole string in
33
+ * a single-element array. That round-tripped a pipe-joined multi-select ONLY
34
+ * because `usePendingFilters` was splitting on a comma, which never divided
35
+ * it — `["a|b|c"]` in, `"a|b|c"` out. The moment that split became `|` (as it
36
+ * had to, for the badge to count), `[0]` would have started returning `"a"`
37
+ * and silently dropped every value after the first.
38
+ */
27
39
  const pendingTable = useMemo(() => ({
28
- get: (key) => filters.pending[key]?.[0] ?? "",
40
+ get: (key) => joinFilterValues(filters.pending[key] ?? []),
29
41
  set: (key, value) => {
30
- filters.set(key, value ? [value] : []);
42
+ filters.set(key, splitFilterValues(value));
31
43
  },
32
44
  setMany: (updates) => {
33
45
  for (const [k, v] of Object.entries(updates)) {
34
- filters.set(k, v ? [v] : []);
46
+ filters.set(k, splitFilterValues(v));
35
47
  }
36
48
  },
37
49
  }), [filters.pending, filters.set]);
@@ -20,7 +20,6 @@ export { siteSettingsRepository } from "../features/admin/repository/site-settin
20
20
  export { analyticsRollupRepository } from "../features/admin/repository/analytics-rollup.repository";
21
21
  export type { AnalyticsRollupDocument } from "../features/admin/repository/analytics-rollup.repository";
22
22
  export { notificationRepository } from "../features/admin/repository/notification.repository";
23
- export { chatRepository } from "../features/admin/repository/chat.repository";
24
23
  export { carouselRepository } from "../features/homepage/repository/carousel.repository";
25
24
  export { carouselsRepository, CarouselsRepository } from "../features/homepage/repository/carousels.repository";
26
25
  export { homepageSectionsRepository } from "../features/homepage/repository/homepage-sections.repository";
@@ -26,7 +26,6 @@ export { StoreRepository, storeRepository, } from "../features/stores/repository
26
26
  export { siteSettingsRepository } from "../features/admin/repository/site-settings.repository";
27
27
  export { analyticsRollupRepository } from "../features/admin/repository/analytics-rollup.repository";
28
28
  export { notificationRepository } from "../features/admin/repository/notification.repository";
29
- export { chatRepository } from "../features/admin/repository/chat.repository";
30
29
  export { carouselRepository } from "../features/homepage/repository/carousel.repository";
31
30
  export { carouselsRepository, CarouselsRepository } from "../features/homepage/repository/carousels.repository";
32
31
  export { homepageSectionsRepository } from "../features/homepage/repository/homepage-sections.repository";