@mohasinac/appkit 4.30.19 → 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 (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 +1 -2
  313. package/dist/next/index.js +0 -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
@@ -0,0 +1,120 @@
1
+ export interface SiteSettingsTab {
2
+ id: string;
3
+ /** The label on the tab, numbering included — it is a long strip. */
4
+ label: string;
5
+ /** What lives in here, for anyone who does not know the tab's name. */
6
+ description: string;
7
+ keywords: string[];
8
+ }
9
+ export declare const SITE_SETTINGS_TABS: readonly [{
10
+ readonly id: "about";
11
+ readonly label: "⓪ About";
12
+ readonly description: "The About page: hero, mission, values, milestones and the team.";
13
+ readonly keywords: ["about us", "team", "mission", "our story", "milestones"];
14
+ }, {
15
+ readonly id: "branding";
16
+ readonly label: "① Branding";
17
+ readonly description: "Site name, tagline, logo and favicon.";
18
+ readonly keywords: ["logo", "favicon", "site name", "tagline", "brand"];
19
+ }, {
20
+ readonly id: "appearance";
21
+ readonly label: "② Appearance";
22
+ readonly description: "Colours, backgrounds and the default light or dark mode.";
23
+ readonly keywords: ["colours", "colors", "background", "dark mode", "look"];
24
+ }, {
25
+ readonly id: "themes";
26
+ readonly label: "②ᵃ Themes";
27
+ readonly description: "Create and edit colour themes, and pick the default for each mode.";
28
+ readonly keywords: ["theme", "palette", "colours", "dark theme", "light theme"];
29
+ }, {
30
+ readonly id: "announcement";
31
+ readonly label: "③ Announcement";
32
+ readonly description: "The banner across the top of every page.";
33
+ readonly keywords: ["banner", "notice", "message bar", "top bar"];
34
+ }, {
35
+ readonly id: "seo";
36
+ readonly label: "④ SEO";
37
+ readonly description: "Default page titles, descriptions, and whether search engines may index the site.";
38
+ readonly keywords: ["google", "meta description", "noindex", "search engines", "sitemap"];
39
+ }, {
40
+ readonly id: "contact";
41
+ readonly label: "⑤ Contact & Social";
42
+ readonly description: "Support email, phone, address and every social profile link.";
43
+ readonly keywords: ["email", "phone", "instagram", "whatsapp number", "social links"];
44
+ }, {
45
+ readonly id: "watermark";
46
+ readonly label: "⑥ Watermark";
47
+ readonly description: "The mark stamped onto uploaded product photos.";
48
+ readonly keywords: ["logo on images", "photo watermark", "branding images"];
49
+ }, {
50
+ readonly id: "fees";
51
+ readonly label: "⑦ Fees";
52
+ readonly description: "Platform commission, add-on charges, COD handling and the payout split.";
53
+ readonly keywords: ["commission", "charges", "cod fee", "gift wrap", "platform fee"];
54
+ }, {
55
+ readonly id: "integrations";
56
+ readonly label: "⑧ Integrations";
57
+ readonly description: "Google Analytics, Facebook Pixel, Tag Manager and API credentials.";
58
+ readonly keywords: ["google analytics", "ga4", "facebook pixel", "gtm", "api keys", "tracking"];
59
+ }, {
60
+ readonly id: "shipping";
61
+ readonly label: "⑨ Shipping";
62
+ readonly description: "Default delivery charges, free-shipping threshold and dispatch times.";
63
+ readonly keywords: ["delivery", "postage", "free shipping", "courier", "dispatch"];
64
+ }, {
65
+ readonly id: "auction";
66
+ readonly label: "⑩ Auction";
67
+ readonly description: "Bid increments, anti-sniping extension and reserve-price rules.";
68
+ readonly keywords: ["bidding", "increment", "sniping", "reserve price", "extension"];
69
+ }, {
70
+ readonly id: "limits";
71
+ readonly label: "⑪ Limits";
72
+ readonly description: "Upload sizes, listing counts and per-account caps.";
73
+ readonly keywords: ["maximum", "upload size", "cap", "quota", "how many"];
74
+ }, {
75
+ readonly id: "legal";
76
+ readonly label: "⑫ Legal";
77
+ readonly description: "Terms, privacy policy, refund policy and the GST registration details.";
78
+ readonly keywords: ["terms", "privacy", "policy", "gstin", "refund policy", "compliance"];
79
+ }, {
80
+ readonly id: "whatsapp";
81
+ readonly label: "⑬ WhatsApp";
82
+ readonly description: "WhatsApp Business credentials and which messages go out over it.";
83
+ readonly keywords: ["whatsapp", "meta", "business api", "order updates"];
84
+ }, {
85
+ readonly id: "notifications";
86
+ readonly label: "⑭ Notifications";
87
+ readonly description: "Which channels are on — email, WhatsApp, SMS — and the daily digest.";
88
+ readonly keywords: ["email", "sms", "alerts", "digest", "notify"];
89
+ }, {
90
+ readonly id: "procurement";
91
+ readonly label: "⑮ Procurement";
92
+ readonly description: "Labour rate and the defaults used to price inbound shipments.";
93
+ readonly keywords: ["labour rate", "labor", "import", "landed cost", "supplier"];
94
+ }, {
95
+ readonly id: "emi";
96
+ readonly label: "⑯ EMI";
97
+ readonly description: "Instalment plans: eligibility threshold, tenures and the surcharge split.";
98
+ readonly keywords: ["instalments", "installments", "emi", "pay monthly", "finance"];
99
+ }, {
100
+ readonly id: "gst";
101
+ readonly label: "⑰ GST";
102
+ readonly description: "GST rates, HSN defaults and the registered business details.";
103
+ readonly keywords: ["tax", "gst", "hsn", "vat", "invoice tax"];
104
+ }, {
105
+ readonly id: "listings";
106
+ readonly label: "⑱ Listings";
107
+ readonly description: "Which listing types sellers may create, and their defaults.";
108
+ readonly keywords: ["listing types", "auctions on", "enable", "categories"];
109
+ }];
110
+ export declare const SITE_SETTINGS_TAB_IDS: ("about" | "shipping" | "whatsapp" | "notifications" | "contact" | "auction" | "seo" | "listings" | "appearance" | "emi" | "gst" | "watermark" | "integrations" | "limits" | "announcement" | "branding" | "themes" | "fees" | "legal" | "procurement")[];
111
+ /**
112
+ * The union `?tab=` is validated against.
113
+ *
114
+ * W7's `AIX_DEAD_DEEPLINK` check needs exactly this: a deep link naming a tab
115
+ * that does not exist opens the settings page on its default tab and looks
116
+ * like the search simply missed.
117
+ */
118
+ export type SiteSettingsTabId = (typeof SITE_SETTINGS_TABS)[number]["id"];
119
+ /** Whether a `?tab=` value names a real tab. */
120
+ export declare function isSiteSettingsTabId(value: string | null | undefined): value is SiteSettingsTabId;
@@ -0,0 +1,152 @@
1
+ /*
2
+ * WHY: The 19 site-settings tabs were a `[value, label]` array literal written
3
+ * inline in the middle of an 1800-line component's JSX. Nothing else could
4
+ * read them, so `?tab=` deep links had no union to be validated against —
5
+ * and the view did not accept `?tab=` at all, which is why "search for
6
+ * maintenance and land on the maintenance toggle" had nowhere to land.
7
+ * WHAT: The tab union, and the metadata that lets each tab be found by what it
8
+ * CONTAINS rather than by its own name.
9
+ *
10
+ * ## Why the descriptions matter more here than in the sidebar
11
+ *
12
+ * A settings tab is the one place where the label is reliably NOT what someone
13
+ * searches for. Nobody looks for "Integrations"; they look for "Google
14
+ * Analytics". Nobody looks for "Limits"; they look for "maximum upload size".
15
+ * The tab name is an filing decision, and the search has to survive it.
16
+ *
17
+ * EXPORTS: SITE_SETTINGS_TABS, SITE_SETTINGS_TAB_IDS, type SiteSettingsTabId
18
+ *
19
+ * @tag domain:admin
20
+ * @tag layer:constants
21
+ * @tag pattern:registry
22
+ * @tag access:isomorphic
23
+ * @tag consumers:AdminSiteSettingsView,action index
24
+ * @tag sideEffects:none
25
+ */
26
+ export const SITE_SETTINGS_TABS = [
27
+ {
28
+ id: "about",
29
+ label: "⓪ About",
30
+ description: "The About page: hero, mission, values, milestones and the team.",
31
+ keywords: ["about us", "team", "mission", "our story", "milestones"],
32
+ },
33
+ {
34
+ id: "branding",
35
+ label: "① Branding",
36
+ description: "Site name, tagline, logo and favicon.",
37
+ keywords: ["logo", "favicon", "site name", "tagline", "brand"],
38
+ },
39
+ {
40
+ id: "appearance",
41
+ label: "② Appearance",
42
+ description: "Colours, backgrounds and the default light or dark mode.",
43
+ keywords: ["colours", "colors", "background", "dark mode", "look"],
44
+ },
45
+ {
46
+ id: "themes",
47
+ label: "②ᵃ Themes",
48
+ description: "Create and edit colour themes, and pick the default for each mode.",
49
+ keywords: ["theme", "palette", "colours", "dark theme", "light theme"],
50
+ },
51
+ {
52
+ id: "announcement",
53
+ label: "③ Announcement",
54
+ description: "The banner across the top of every page.",
55
+ keywords: ["banner", "notice", "message bar", "top bar"],
56
+ },
57
+ {
58
+ id: "seo",
59
+ label: "④ SEO",
60
+ description: "Default page titles, descriptions, and whether search engines may index the site.",
61
+ keywords: ["google", "meta description", "noindex", "search engines", "sitemap"],
62
+ },
63
+ {
64
+ id: "contact",
65
+ label: "⑤ Contact & Social",
66
+ description: "Support email, phone, address and every social profile link.",
67
+ keywords: ["email", "phone", "instagram", "whatsapp number", "social links"],
68
+ },
69
+ {
70
+ id: "watermark",
71
+ label: "⑥ Watermark",
72
+ description: "The mark stamped onto uploaded product photos.",
73
+ keywords: ["logo on images", "photo watermark", "branding images"],
74
+ },
75
+ {
76
+ id: "fees",
77
+ label: "⑦ Fees",
78
+ description: "Platform commission, add-on charges, COD handling and the payout split.",
79
+ keywords: ["commission", "charges", "cod fee", "gift wrap", "platform fee"],
80
+ },
81
+ {
82
+ id: "integrations",
83
+ label: "⑧ Integrations",
84
+ description: "Google Analytics, Facebook Pixel, Tag Manager and API credentials.",
85
+ keywords: ["google analytics", "ga4", "facebook pixel", "gtm", "api keys", "tracking"],
86
+ },
87
+ {
88
+ id: "shipping",
89
+ label: "⑨ Shipping",
90
+ description: "Default delivery charges, free-shipping threshold and dispatch times.",
91
+ keywords: ["delivery", "postage", "free shipping", "courier", "dispatch"],
92
+ },
93
+ {
94
+ id: "auction",
95
+ label: "⑩ Auction",
96
+ description: "Bid increments, anti-sniping extension and reserve-price rules.",
97
+ keywords: ["bidding", "increment", "sniping", "reserve price", "extension"],
98
+ },
99
+ {
100
+ id: "limits",
101
+ label: "⑪ Limits",
102
+ description: "Upload sizes, listing counts and per-account caps.",
103
+ keywords: ["maximum", "upload size", "cap", "quota", "how many"],
104
+ },
105
+ {
106
+ id: "legal",
107
+ label: "⑫ Legal",
108
+ description: "Terms, privacy policy, refund policy and the GST registration details.",
109
+ keywords: ["terms", "privacy", "policy", "gstin", "refund policy", "compliance"],
110
+ },
111
+ {
112
+ id: "whatsapp",
113
+ label: "⑬ WhatsApp",
114
+ description: "WhatsApp Business credentials and which messages go out over it.",
115
+ keywords: ["whatsapp", "meta", "business api", "order updates"],
116
+ },
117
+ {
118
+ id: "notifications",
119
+ label: "⑭ Notifications",
120
+ description: "Which channels are on — email, WhatsApp, SMS — and the daily digest.",
121
+ keywords: ["email", "sms", "alerts", "digest", "notify"],
122
+ },
123
+ {
124
+ id: "procurement",
125
+ label: "⑮ Procurement",
126
+ description: "Labour rate and the defaults used to price inbound shipments.",
127
+ keywords: ["labour rate", "labor", "import", "landed cost", "supplier"],
128
+ },
129
+ {
130
+ id: "emi",
131
+ label: "⑯ EMI",
132
+ description: "Instalment plans: eligibility threshold, tenures and the surcharge split.",
133
+ keywords: ["instalments", "installments", "emi", "pay monthly", "finance"],
134
+ },
135
+ {
136
+ id: "gst",
137
+ label: "⑰ GST",
138
+ description: "GST rates, HSN defaults and the registered business details.",
139
+ keywords: ["tax", "gst", "hsn", "vat", "invoice tax"],
140
+ },
141
+ {
142
+ id: "listings",
143
+ label: "⑱ Listings",
144
+ description: "Which listing types sellers may create, and their defaults.",
145
+ keywords: ["listing types", "auctions on", "enable", "categories"],
146
+ },
147
+ ];
148
+ export const SITE_SETTINGS_TAB_IDS = SITE_SETTINGS_TABS.map((t) => t.id);
149
+ /** Whether a `?tab=` value names a real tab. */
150
+ export function isSiteSettingsTabId(value) {
151
+ return !!value && SITE_SETTINGS_TAB_IDS.includes(value);
152
+ }
@@ -3,8 +3,5 @@ export * from "./types";
3
3
  export * from "./hooks/useAdmin";
4
4
  export * from "./hooks/useAdminListingData";
5
5
  export * from "./hooks/useAdminSectionsListing";
6
- export * from "./hooks/useChat";
7
6
  export * from "./components";
8
- export type { ChatRoomDocument, ChatRoomCreateInput, } from "./repository/chat.repository";
9
7
  export { manifest } from "./manifest";
10
- export { ADMIN_PAGE_PERMISSIONS } from "./permission-map";
@@ -3,7 +3,5 @@ export * from "./types";
3
3
  export * from "./hooks/useAdmin";
4
4
  export * from "./hooks/useAdminListingData";
5
5
  export * from "./hooks/useAdminSectionsListing";
6
- export * from "./hooks/useChat";
7
6
  export * from "./components";
8
7
  export { manifest } from "./manifest";
9
- export { ADMIN_PAGE_PERMISSIONS } from "./permission-map";
@@ -14,6 +14,25 @@ export interface AnalyticsRollupDocument {
14
14
  deliveredOrderCount: number;
15
15
  computedAt: Date;
16
16
  }
17
+ /**
18
+ * Lifetime page-view totals, so `pageViewPrune` can delete day-buckets without
19
+ * the long-run numbers going with them.
20
+ *
21
+ * `byEntityType` and not per-entity: a per-entity map would grow with the
22
+ * catalogue and reintroduce, in one document, exactly the unbounded growth the
23
+ * prune exists to stop — and a singleton has a 1 MiB ceiling it would eventually
24
+ * hit with no warning.
25
+ */
26
+ export interface PageViewRollupDocument {
27
+ id: string;
28
+ /** Every counted view since the rollup began. */
29
+ totalViews: number;
30
+ /** Totals per entity type — a closed union, so this map cannot grow. */
31
+ byEntityType: Record<string, number>;
32
+ /** The last day-bucket folded in, so a re-run cannot double-count. */
33
+ throughDate: string;
34
+ computedAt: Date;
35
+ }
17
36
  export declare class AnalyticsRollupRepository extends BaseRepository<AnalyticsRollupDocument> {
18
37
  constructor();
19
38
  getDashboardRollup(): Promise<AnalyticsRollupDocument | null>;
@@ -23,3 +42,19 @@ export declare class AnalyticsRollupRepository extends BaseRepository<AnalyticsR
23
42
  }): Promise<void>;
24
43
  }
25
44
  export declare const analyticsRollupRepository: AnalyticsRollupRepository;
45
+ /**
46
+ * The page-view rollup — same `analytics` collection, different document shape,
47
+ * so a different repository.
48
+ *
49
+ * 🛑 Deliberately NOT a second pair of methods on `AnalyticsRollupRepository`.
50
+ * `BaseRepository<T>` types `findById` as returning `T`, so two shapes behind
51
+ * one class means every read is either a lie or a cast — and `as unknown as X`
52
+ * at a data boundary is the zero-runtime-effect silence Root Cause #70 records.
53
+ * Two singletons with different fields are two types.
54
+ */
55
+ export declare class PageViewRollupRepository extends BaseRepository<PageViewRollupDocument> {
56
+ constructor();
57
+ get(): Promise<PageViewRollupDocument | null>;
58
+ set(data: Pick<PageViewRollupDocument, "totalViews" | "byEntityType" | "throughDate">): Promise<void>;
59
+ }
60
+ export declare const pageViewRollupRepository: PageViewRollupRepository;
@@ -10,6 +10,7 @@
10
10
  import { BaseRepository } from "../../../providers/db-firebase";
11
11
  const ANALYTICS_COLLECTION = "analytics";
12
12
  const DASHBOARD_ROLLUP_ID = "dashboardRollup";
13
+ const PAGE_VIEW_ROLLUP_ID = "pageViewRollup";
13
14
  export class AnalyticsRollupRepository extends BaseRepository {
14
15
  constructor() {
15
16
  super(ANALYTICS_COLLECTION);
@@ -29,3 +30,32 @@ export class AnalyticsRollupRepository extends BaseRepository {
29
30
  }
30
31
  }
31
32
  export const analyticsRollupRepository = new AnalyticsRollupRepository();
33
+ /**
34
+ * The page-view rollup — same `analytics` collection, different document shape,
35
+ * so a different repository.
36
+ *
37
+ * 🛑 Deliberately NOT a second pair of methods on `AnalyticsRollupRepository`.
38
+ * `BaseRepository<T>` types `findById` as returning `T`, so two shapes behind
39
+ * one class means every read is either a lie or a cast — and `as unknown as X`
40
+ * at a data boundary is the zero-runtime-effect silence Root Cause #70 records.
41
+ * Two singletons with different fields are two types.
42
+ */
43
+ export class PageViewRollupRepository extends BaseRepository {
44
+ constructor() {
45
+ super(ANALYTICS_COLLECTION);
46
+ }
47
+ async get() {
48
+ return this.findById(PAGE_VIEW_ROLLUP_ID);
49
+ }
50
+ async set(data) {
51
+ const existing = await this.findById(PAGE_VIEW_ROLLUP_ID);
52
+ const payload = { ...data, computedAt: new Date() };
53
+ if (existing) {
54
+ await this.update(PAGE_VIEW_ROLLUP_ID, payload);
55
+ }
56
+ else {
57
+ await this.createWithId(PAGE_VIEW_ROLLUP_ID, payload);
58
+ }
59
+ }
60
+ }
61
+ export const pageViewRollupRepository = new PageViewRollupRepository();
@@ -1,56 +1,5 @@
1
1
  import { z } from "zod";
2
- /**
3
- * An address written by an admin on someone's behalf.
4
- *
5
- * Shapes match `AddressDocument` (`addressLine1`, not `line1`) — deliberately
6
- * NOT `userAddressSchema`, which is the account-side view of the same data
7
- * under different field names. Reusing that one here would have meant
8
- * translating on every write.
9
- */
10
- export declare const adminAddressFormSchema: z.ZodObject<{
11
- ownerType: z.ZodEnum<["user", "store"]>;
12
- ownerId: z.ZodString;
13
- label: z.ZodOptional<z.ZodString>;
14
- fullName: z.ZodString;
15
- phone: z.ZodString;
16
- addressLine1: z.ZodString;
17
- addressLine2: z.ZodOptional<z.ZodString>;
18
- landmark: z.ZodOptional<z.ZodString>;
19
- city: z.ZodString;
20
- state: z.ZodString;
21
- postalCode: z.ZodString;
22
- country: z.ZodString;
23
- isDefault: z.ZodOptional<z.ZodBoolean>;
24
- }, "strip", z.ZodTypeAny, {
25
- country: string;
26
- ownerId: string;
27
- ownerType: "user" | "store";
28
- fullName: string;
29
- phone: string;
30
- addressLine1: string;
31
- city: string;
32
- state: string;
33
- postalCode: string;
34
- label?: string | undefined;
35
- isDefault?: boolean | undefined;
36
- addressLine2?: string | undefined;
37
- landmark?: string | undefined;
38
- }, {
39
- country: string;
40
- ownerId: string;
41
- ownerType: "user" | "store";
42
- fullName: string;
43
- phone: string;
44
- addressLine1: string;
45
- city: string;
46
- state: string;
47
- postalCode: string;
48
- label?: string | undefined;
49
- isDefault?: boolean | undefined;
50
- addressLine2?: string | undefined;
51
- landmark?: string | undefined;
52
- }>;
53
- export type AdminAddressFormValues = z.infer<typeof adminAddressFormSchema>;
2
+ import { type StoreStatus } from "../../stores/schemas/firestore";
54
3
  /**
55
4
  * An admin changing a store's standing.
56
5
  *
@@ -59,35 +8,35 @@ export type AdminAddressFormValues = z.infer<typeof adminAddressFormSchema>;
59
8
  * the next admin, with nothing to appeal or review.
60
9
  */
61
10
  export declare const adminStoreUpdateSchema: z.ZodEffects<z.ZodObject<{
62
- storeStatus: z.ZodEnum<["pending", "active", "suspended", "closed"]>;
11
+ storeStatus: z.ZodEnum<[StoreStatus, ...StoreStatus[]]>;
63
12
  isVerified: z.ZodOptional<z.ZodBoolean>;
64
13
  isFeatured: z.ZodOptional<z.ZodBoolean>;
65
14
  suspensionReason: z.ZodOptional<z.ZodString>;
66
15
  capabilities: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
67
16
  adminNotes: z.ZodOptional<z.ZodString>;
68
17
  }, "strip", z.ZodTypeAny, {
69
- storeStatus: "closed" | "pending" | "active" | "suspended";
18
+ storeStatus: StoreStatus;
70
19
  isVerified?: boolean | undefined;
71
20
  isFeatured?: boolean | undefined;
72
21
  adminNotes?: string | undefined;
73
22
  suspensionReason?: string | undefined;
74
23
  capabilities?: string[] | undefined;
75
24
  }, {
76
- storeStatus: "closed" | "pending" | "active" | "suspended";
25
+ storeStatus: StoreStatus;
77
26
  isVerified?: boolean | undefined;
78
27
  isFeatured?: boolean | undefined;
79
28
  adminNotes?: string | undefined;
80
29
  suspensionReason?: string | undefined;
81
30
  capabilities?: string[] | undefined;
82
31
  }>, {
83
- storeStatus: "closed" | "pending" | "active" | "suspended";
32
+ storeStatus: StoreStatus;
84
33
  isVerified?: boolean | undefined;
85
34
  isFeatured?: boolean | undefined;
86
35
  adminNotes?: string | undefined;
87
36
  suspensionReason?: string | undefined;
88
37
  capabilities?: string[] | undefined;
89
38
  }, {
90
- storeStatus: "closed" | "pending" | "active" | "suspended";
39
+ storeStatus: StoreStatus;
91
40
  isVerified?: boolean | undefined;
92
41
  isFeatured?: boolean | undefined;
93
42
  adminNotes?: string | undefined;
@@ -117,3 +66,53 @@ export declare const announcementBarSchema: z.ZodObject<{
117
66
  enabled?: boolean | undefined;
118
67
  }>;
119
68
  export type AnnouncementBarValues = z.infer<typeof announcementBarSchema>;
69
+ /**
70
+ * A brand, as an admin edits it.
71
+ *
72
+ * Lifted out of `AdminBrandEditorView`, where it was declared locally and
73
+ * unannotated — so it could not drive a generated form, and, more to the point,
74
+ * it never ran: the submit handler checked `name.trim()` and called the
75
+ * mutation. `website: z.string().url()` had therefore never rejected anything,
76
+ * and the raw `<Input>`s it would have reported on carry no `name`, so
77
+ * `applyZodIssues` had nowhere to put an error even if it had.
78
+ *
79
+ * ## "Logo" is the cover image, and the labels used to say the opposite
80
+ *
81
+ * `logoURL` maps to `display.coverImage` — the brand page's full-bleed hero
82
+ * banner. The form once offered a "Logo" input beside a "Banner" input, where
83
+ * the first drove the banner and the second wrote `brandBannerImage`, a field
84
+ * with no reader anywhere (Root Cause #51). The dead field is gone and the
85
+ * label now describes what it controls.
86
+ */
87
+ export declare const brandFormSchema: z.ZodObject<{
88
+ name: z.ZodString;
89
+ slug: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
90
+ description: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
91
+ logoURL: z.ZodUnion<[z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>, z.ZodLiteral<"">]>;
92
+ website: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
93
+ country: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
94
+ founded: z.ZodOptional<z.ZodNumber>;
95
+ isActive: z.ZodBoolean;
96
+ displayOrder: z.ZodOptional<z.ZodNumber>;
97
+ }, "strip", z.ZodTypeAny, {
98
+ name: string;
99
+ isActive: boolean;
100
+ country?: string | undefined;
101
+ slug?: string | undefined;
102
+ description?: string | undefined;
103
+ displayOrder?: number | undefined;
104
+ logoURL?: string | undefined;
105
+ website?: string | undefined;
106
+ founded?: number | undefined;
107
+ }, {
108
+ name: string;
109
+ isActive: boolean;
110
+ country?: string | undefined;
111
+ slug?: string | undefined;
112
+ description?: string | undefined;
113
+ displayOrder?: number | undefined;
114
+ logoURL?: string | undefined;
115
+ website?: string | undefined;
116
+ founded?: number | undefined;
117
+ }>;
118
+ export type BrandFormValues = z.infer<typeof brandFormSchema>;