@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
@@ -12,7 +12,7 @@
12
12
  * @tag consumers:seed/index.ts,seed/runner.ts
13
13
  * @tag sideEffects:none
14
14
  */
15
- import { seedExtMedia } from "./_helpers/media";
15
+ import { seedExtMedia, seedPhoto } from "./_helpers/media";
16
16
  import { ROUTES } from "../next/routing/route-map";
17
17
  import { DEFAULT_AUCTION_BID_INCREMENT_TIERS } from "../_internal/shared/features/auctions/config";
18
18
  const NOW = new Date();
@@ -129,7 +129,7 @@ export const siteSettingsSeedData = {
129
129
  name: "Mohasin Chinnapattan",
130
130
  role: "Founder & Developer",
131
131
  bio: "Started LetItRip after one too many afternoons hunting for a specific 1st-edition card across a dozen disconnected forums and marketplaces. Built the entire platform — Next.js front end, Firebase backend, the auction engine, the whole thing — the same way most great collections start: one late night at a time. Still personally answers the support inbox.",
132
- photoUrl: seedExtMedia("https://picsum.photos/seed/letitrip-team-mohasin-chinnapattan-20260820/400/400"),
132
+ photoUrl: seedPhoto("letitrip-team-mohasin-chinnapattan-20260820", 400, 400),
133
133
  isFounder: true,
134
134
  isDeveloper: true,
135
135
  githubUrl: "https://github.com/mohasinac",
@@ -219,7 +219,7 @@ export const siteSettingsSeedData = {
219
219
  "verified sellers india",
220
220
  "buy sell collectibles online",
221
221
  ],
222
- ogImage: seedExtMedia("https://picsum.photos/seed/site-og-image-collectibles-20260101/1200/630"),
222
+ ogImage: seedPhoto("site-og-image-collectibles-20260101", 1200, 630),
223
223
  },
224
224
  features: [
225
225
  {
@@ -346,7 +346,7 @@ export const siteSettingsSeedData = {
346
346
  creative: {
347
347
  title: "New Arrivals Mega Drop",
348
348
  body: "Limited new arrivals across every category — this weekend only.",
349
- imageUrl: seedExtMedia("https://picsum.photos/seed/ad-homepage-hero-new-arrivals-20260101/1200/400"),
349
+ imageUrl: seedPhoto("ad-homepage-hero-new-arrivals-20260101", 1200, 400),
350
350
  ctaLabel: "Explore Deals",
351
351
  ctaHref: "/promotions/deals",
352
352
  },
@@ -365,7 +365,7 @@ export const siteSettingsSeedData = {
365
365
  creative: {
366
366
  title: "Live Auctions",
367
367
  body: "Rare and collectible items — auctions ending this week.",
368
- imageUrl: seedExtMedia("https://picsum.photos/seed/ad-listing-sidebar-auction-boost-20260101/600/600"),
368
+ imageUrl: seedPhoto("ad-listing-sidebar-auction-boost-20260101", 600, 600),
369
369
  ctaLabel: "View Auctions",
370
370
  ctaHref: String(ROUTES.PUBLIC.AUCTIONS),
371
371
  },
@@ -386,7 +386,7 @@ export const siteSettingsSeedData = {
386
386
  creative: {
387
387
  title: "Complete Your Collection",
388
388
  body: "Find the pieces you're missing — new listings added daily.",
389
- imageUrl: seedExtMedia("https://picsum.photos/seed/ad-search-inline-spotlight-20260101/600/600"),
389
+ imageUrl: seedPhoto("ad-search-inline-spotlight-20260101", 600, 600),
390
390
  ctaLabel: "Browse All",
391
391
  ctaHref: String(ROUTES.PUBLIC.PRODUCTS),
392
392
  },
@@ -438,32 +438,19 @@ export const siteSettingsSeedData = {
438
438
  featuredSlotFee: 999,
439
439
  promotedSlotFee: 499,
440
440
  },
441
- featureFlags: {
442
- chats: true,
443
- // Real per-SMS cost via the Firebase phone-auth quota — the one flag
444
- // that stays off by default; every other flag is enabled.
445
- smsVerification: false,
446
- translations: true,
447
- wishlists: true,
448
- auctions: true,
449
- reviews: true,
450
- events: true,
451
- blog: true,
452
- coupons: true,
453
- notifications: true,
454
- sellerRegistration: true,
455
- preOrders: true,
456
- offers: true,
457
- adminCheckoutBypass: false,
441
+ // Was `featureFlags` — 14 toggles of which 11 had no reader. Deleted
442
+ // 2026-08-29; the two that were never flags live here instead.
443
+ listings: {
458
444
  listingTypes: {
459
445
  standard: true,
460
446
  auction: true,
461
447
  "pre-order": true,
462
448
  "prize-draw": true,
463
- bundle: true,
464
449
  classified: true,
465
450
  "digital-code": true,
466
451
  live: true,
452
+ art: true,
453
+ stickers: true,
467
454
  },
468
455
  categoryTypes: {
469
456
  category: true,
@@ -16,7 +16,7 @@
16
16
  * @tag consumers:seed/index.ts,seed/runner.ts
17
17
  * @tag sideEffects:none
18
18
  */
19
- import { seedExtMedia } from "./_helpers/media";
19
+ import { seedPhoto } from "./_helpers/media";
20
20
  const NOW = new Date();
21
21
  // ───── payoutMethods (4 records) ──────────────────────────────────────────
22
22
  export const payoutMethodsSeedData = [
@@ -132,10 +132,10 @@ export const analyticsAlertsSeedData = [
132
132
  ];
133
133
  // ───── storeCategories (4 records) ────────────────────────────────────────
134
134
  export const storeCategoriesSeedData = [
135
- { id: "scat-arena-original-series", storeId: "store-beyblade-arena", label: "Original Series", slug: "original-series", displayOrder: 0, productIds: [], isActive: true, description: "Original 1999-2003 series beyblades.", coverImageUrl: seedExtMedia("https://picsum.photos/seed/storecat-original-series-20260101/600/400") },
136
- { id: "scat-arena-metal-fight", storeId: "store-beyblade-arena", label: "Metal Fight", slug: "metal-fight", displayOrder: 1, productIds: [], isActive: true, description: "Metal Fight / Metal Fusion era beyblades.", coverImageUrl: seedExtMedia("https://picsum.photos/seed/storecat-metal-fight-20260101/600/400") },
137
- { id: "scat-letitrip-sealed", storeId: "store-letitrip-official", label: "Sealed Products", slug: "sealed-products", displayOrder: 0, productIds: [], isActive: true, description: "Factory-sealed launcher sets, stadiums, and starter boxes.", coverImageUrl: seedExtMedia("https://picsum.photos/seed/storecat-sealed-products-20260101/600/400") },
138
- { id: "scat-letitrip-accessories", storeId: "store-letitrip-official", label: "Accessories", slug: "accessories", displayOrder: 1, productIds: [], isActive: true, description: "Launchers, grip tape, ripcords, and carry cases.", coverImageUrl: seedExtMedia("https://picsum.photos/seed/storecat-accessories-20260101/600/400") },
135
+ { id: "scat-arena-original-series", storeId: "store-beyblade-arena", label: "Original Series", slug: "original-series", displayOrder: 0, productIds: [], isActive: true, description: "Original 1999-2003 series beyblades.", coverImageUrl: seedPhoto("storecat-original-series-20260101", 600, 400) },
136
+ { id: "scat-arena-metal-fight", storeId: "store-beyblade-arena", label: "Metal Fight", slug: "metal-fight", displayOrder: 1, productIds: [], isActive: true, description: "Metal Fight / Metal Fusion era beyblades.", coverImageUrl: seedPhoto("storecat-metal-fight-20260101", 600, 400) },
137
+ { id: "scat-letitrip-sealed", storeId: "store-letitrip-official", label: "Sealed Products", slug: "sealed-products", displayOrder: 0, productIds: [], isActive: true, description: "Factory-sealed launcher sets, stadiums, and starter boxes.", coverImageUrl: seedPhoto("storecat-sealed-products-20260101", 600, 400) },
138
+ { id: "scat-letitrip-accessories", storeId: "store-letitrip-official", label: "Accessories", slug: "accessories", displayOrder: 1, productIds: [], isActive: true, description: "Launchers, grip tape, ripcords, and carry cases.", coverImageUrl: seedPhoto("storecat-accessories-20260101", 600, 400) },
139
139
  ];
140
140
  // ───── listingTemplates (4 records) ───────────────────────────────────────
141
141
  export const listingTemplatesSeedData = [
@@ -190,9 +190,9 @@ export const moderationQueueSeedData = [
190
190
  { id: "mod-video-dragoon-auction", mediaType: "video", mediaUrl: "/media/product-video-dragoon-storm-20260518.mp4", entityType: "product", entityId: "auction-beyblade-original-dragoon-storm", ownerId: "user-tyson-blader", storeId: "store-beyblade-arena", status: "pending", submittedAt: new Date(NOW.getTime() - 3600000) },
191
191
  { id: "mod-video-dranzer-unbox", mediaType: "video", mediaUrl: "/media/product-video-original-dranzer-s-20260518.mp4", entityType: "product", entityId: "product-beyblade-original-dranzer-s", ownerId: "user-tyson-blader", storeId: "store-beyblade-arena", status: "pending", submittedAt: new Date(NOW.getTime() - 7200000) },
192
192
  { id: "mod-review-driger-v", mediaType: "rich-text", entityType: "review", entityId: "review-8", ownerId: "user-yugi-muto", status: "approved", reviewerId: "user-admin-letitrip", reviewedAt: new Date(NOW.getTime() - 86400000), submittedAt: new Date(NOW.getTime() - 90000000) },
193
- { id: "mod-image-arena-banner", mediaType: "image", mediaUrl: seedExtMedia("https://picsum.photos/seed/store-banner-beyblade-arena-20260518/1600/400"), entityType: "storefront", entityId: "store-beyblade-arena", ownerId: "user-tyson-blader", storeId: "store-beyblade-arena", status: "auto-approved", submittedAt: new Date(NOW.getTime() - 172800000) },
193
+ { id: "mod-image-arena-banner", mediaType: "image", mediaUrl: seedPhoto("store-banner-beyblade-arena-20260518", 1600, 400), entityType: "storefront", entityId: "store-beyblade-arena", ownerId: "user-tyson-blader", storeId: "store-beyblade-arena", status: "auto-approved", submittedAt: new Date(NOW.getTime() - 172800000) },
194
194
  { id: "mod-blog-authentication-guide", mediaType: "rich-text", entityType: "blog", entityId: "blog-spot-genuine-takara-tomy-beyblade", ownerId: "user-admin-letitrip", status: "approved", reviewerId: "user-admin-letitrip", reviewedAt: new Date(NOW.getTime() - 432000000), submittedAt: new Date(NOW.getTime() - 438000000) },
195
- { id: "mod-event-cover-tournament", mediaType: "image", mediaUrl: seedExtMedia("https://picsum.photos/seed/event-cover-beyblade-tournament-20260518/1200/600"), entityType: "event", entityId: "event-favourite-blader-poll", ownerId: "user-admin-letitrip", status: "approved", reviewerId: "user-admin-letitrip", reviewedAt: new Date(NOW.getTime() - 86400000), submittedAt: new Date(NOW.getTime() - 90000000) },
195
+ { id: "mod-event-cover-tournament", mediaType: "image", mediaUrl: seedPhoto("event-cover-beyblade-tournament-20260518", 1200, 600), entityType: "event", entityId: "event-favourite-blader-poll", ownerId: "user-admin-letitrip", status: "approved", reviewerId: "user-admin-letitrip", reviewedAt: new Date(NOW.getTime() - 86400000), submittedAt: new Date(NOW.getTime() - 90000000) },
196
196
  ];
197
197
  // ───── reports (5 records) ────────────────────────────────────────────────
198
198
  export const reportsSeedData = [
@@ -213,7 +213,7 @@ export const itemRequestsSeedData = [
213
213
  category: "spinning-tops",
214
214
  brand: "takara-tomy",
215
215
  maxBudget: 8000,
216
- imageUrls: [seedExtMedia("https://picsum.photos/seed/irq-l-drago-sealed-20260101/600/600")],
216
+ imageUrls: [seedPhoto("irq-l-drago-sealed-20260101", 600, 600)],
217
217
  status: "open",
218
218
  replyCount: 2,
219
219
  replies: [],
@@ -229,7 +229,7 @@ export const itemRequestsSeedData = [
229
229
  category: "spinning-tops",
230
230
  brand: "takara-tomy",
231
231
  maxBudget: 15000,
232
- imageUrls: [seedExtMedia("https://picsum.photos/seed/irq-original-set-20260101/600/600")],
232
+ imageUrls: [seedPhoto("irq-original-set-20260101", 600, 600)],
233
233
  status: "open",
234
234
  replyCount: 0,
235
235
  replies: [],
@@ -245,7 +245,7 @@ export const itemRequestsSeedData = [
245
245
  category: "spinning-tops",
246
246
  brand: "takara-tomy",
247
247
  maxBudget: 1500,
248
- imageUrls: [seedExtMedia("https://picsum.photos/seed/irq-x-bx08-20260101/600/600")],
248
+ imageUrls: [seedPhoto("irq-x-bx08-20260101", 600, 600)],
249
249
  status: "fulfilled",
250
250
  replyCount: 4,
251
251
  replies: [],
@@ -17,7 +17,7 @@
17
17
  */
18
18
  import { withStoreSearchTxt } from "./_helpers/search-txt-wrappers";
19
19
  import { STORE_FIELDS } from "../constants/field-names";
20
- import { seedExtMedia } from "./_helpers/media";
20
+ import { seedPhoto } from "./_helpers/media";
21
21
  const NOW = new Date();
22
22
  const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
23
23
  /**
@@ -40,8 +40,8 @@ const _rawstoresSeedData = [
40
40
  storeName: "LetItRip Official",
41
41
  storeDescription: "The official LetItRip curated store. Hand-picked, authenticated collectibles with every item personally inspected before listing.",
42
42
  storeCategory: "category-spinning-tops",
43
- storeLogoURL: seedExtMedia("https://picsum.photos/seed/store-logo-letitrip-official-20260101/400/400"),
44
- storeBannerURL: seedExtMedia("https://picsum.photos/seed/store-banner-letitrip-official-20260101/1600/400"),
43
+ storeLogoURL: seedPhoto("store-logo-letitrip-official-20260101", 400, 400),
44
+ storeBannerURL: seedPhoto("store-banner-letitrip-official-20260101", 1600, 400),
45
45
  status: STORE_FIELDS.STATUS_VALUES.ACTIVE,
46
46
  bio: "Curated by the LetItRip team. All items authenticated before listing. Fast dispatch, collector-grade packaging.",
47
47
  location: "Mumbai, Maharashtra, India",
@@ -125,8 +125,8 @@ const _rawstoresSeedData = [
125
125
  storeName: "Beyblade Arena",
126
126
  storeDescription: "Everything Beyblade — X, Burst, Metal Fight, and vintage original series. Takara-Tomy authentic stock, tournament-grade stadiums, launchers, and rare limited editions.",
127
127
  storeCategory: "category-spinning-tops",
128
- storeLogoURL: seedExtMedia("https://picsum.photos/seed/store-logo-beyblade-arena-20260101/400/400"),
129
- storeBannerURL: seedExtMedia("https://picsum.photos/seed/store-banner-beyblade-arena-20260101/1600/400"),
128
+ storeLogoURL: seedPhoto("store-logo-beyblade-arena-20260101", 400, 400),
129
+ storeBannerURL: seedPhoto("store-banner-beyblade-arena-20260101", 1600, 400),
130
130
  status: STORE_FIELDS.STATUS_VALUES.ACTIVE,
131
131
  bio: "Beyblade champion turned seller. Importing authentic Takara-Tomy Beyblades directly from Japan. Let It Rip!",
132
132
  location: "Chennai, Tamil Nadu, India",
@@ -163,8 +163,8 @@ const _rawstoresSeedData = [
163
163
  storeName: "Tester QA Seller Store",
164
164
  storeDescription: "Personal seller store for the dedicated QA tester account — used to exercise seller-side flows (listing, orders, payouts) from the Tester Hub checklist.",
165
165
  storeCategory: "category-spinning-tops",
166
- storeLogoURL: seedExtMedia("https://picsum.photos/seed/store-logo-tester-qa-seller-20260101/400/400"),
167
- storeBannerURL: seedExtMedia("https://picsum.photos/seed/store-banner-tester-qa-seller-20260101/1600/400"),
166
+ storeLogoURL: seedPhoto("store-logo-tester-qa-seller-20260101", 400, 400),
167
+ storeBannerURL: seedPhoto("store-banner-tester-qa-seller-20260101", 1600, 400),
168
168
  status: STORE_FIELDS.STATUS_VALUES.ACTIVE,
169
169
  bio: "QA tester's own seller store — auto-approved via the isTester flag.",
170
170
  location: "Bengaluru, Karnataka, India",
@@ -212,8 +212,8 @@ const _rawstoresSeedData = [
212
212
  storeName: "Blader Bazaar",
213
213
  storeDescription: "Applied to sell refurbished Burst-era tops and spare parts. Awaiting review — not yet visible to buyers.",
214
214
  storeCategory: "category-beyblade-burst",
215
- storeLogoURL: seedExtMedia("https://picsum.photos/seed/store-logo-blader-bazaar-20260101/400/400"),
216
- storeBannerURL: seedExtMedia("https://picsum.photos/seed/store-banner-blader-bazaar-20260101/1600/400"),
215
+ storeLogoURL: seedPhoto("store-logo-blader-bazaar-20260101", 400, 400),
216
+ storeBannerURL: seedPhoto("store-banner-blader-bazaar-20260101", 1600, 400),
217
217
  status: STORE_FIELDS.STATUS_VALUES.PENDING,
218
218
  bio: "Refurbishing and reselling Burst-era tops and parts.",
219
219
  location: "Pune, Maharashtra, India",
@@ -240,8 +240,8 @@ const _rawstoresSeedData = [
240
240
  storeName: "Vintage Vault Co.",
241
241
  storeDescription: "Vintage original-series specialist. Currently suspended pending a listing-authenticity review.",
242
242
  storeCategory: "category-beyblade-original",
243
- storeLogoURL: seedExtMedia("https://picsum.photos/seed/store-logo-vintage-vault-20260101/400/400"),
244
- storeBannerURL: seedExtMedia("https://picsum.photos/seed/store-banner-vintage-vault-20260101/1600/400"),
243
+ storeLogoURL: seedPhoto("store-logo-vintage-vault-20260101", 400, 400),
244
+ storeBannerURL: seedPhoto("store-banner-vintage-vault-20260101", 1600, 400),
245
245
  status: STORE_FIELDS.STATUS_VALUES.SUSPENDED,
246
246
  suspensionReason: "Three listings flagged as possible reproductions; suspended while authenticity documentation is reviewed.",
247
247
  adminNotes: "Owner responsive. Re-review once COAs are supplied.",
@@ -1,2 +1,16 @@
1
1
  import type { SupportTicketDocument } from "../features/support/schemas/firestore";
2
+ /**
3
+ * Derive `searchTxt` for every record from its own subject.
4
+ *
5
+ * The seed writes documents raw via `batch.set()` — both `seed/runner.ts` and
6
+ * `seed-cli.mjs` — bypassing the repository, which is the only thing that
7
+ * builds tokens. Without this every seeded ticket would have no `searchTxt` at
8
+ * all and `array-contains` would match zero documents, for every query,
9
+ * forever. That is exactly how FAQ search was found broken.
10
+ *
11
+ * Computed with the SAME `buildSearchTxt` over the SAME field the repository
12
+ * uses, so a seeded ticket and a user-created one are byte-identical. Pure
13
+ * function of the record's own content, so it stays deterministic and does not
14
+ * reintroduce the `appkit-seed` idempotency problem of Root Cause #25.
15
+ */
2
16
  export declare const supportTicketsSeedData: Partial<SupportTicketDocument>[];
@@ -13,6 +13,7 @@
13
13
  * @tag sideEffects:none
14
14
  */
15
15
  import { SUPPORT_TICKET_FIELDS } from "../constants/field-names";
16
+ import { buildSearchTxt } from "../utils/search-txt";
16
17
  function msg(id, authorId, authorRole, body, daysAgo) {
17
18
  const createdAt = new Date(Date.now() - daysAgo * 24 * 60 * 60 * 1000);
18
19
  return { id, authorId, authorRole, body, createdAt };
@@ -31,7 +32,7 @@ function daysBack(n) {
31
32
  function entry(at, actorRole, trigger, changes, extra) {
32
33
  return { at, actorRole, trigger, changes, ...extra };
33
34
  }
34
- export const supportTicketsSeedData = [
35
+ const supportTicketRecords = [
35
36
  // ── 1. Order issue — in progress ─────────────────────────────────────────
36
37
  {
37
38
  id: "ticket-yugi-order-001",
@@ -218,3 +219,21 @@ export const supportTicketsSeedData = [
218
219
  updatedAt: daysBack(1),
219
220
  },
220
221
  ];
222
+ /**
223
+ * Derive `searchTxt` for every record from its own subject.
224
+ *
225
+ * The seed writes documents raw via `batch.set()` — both `seed/runner.ts` and
226
+ * `seed-cli.mjs` — bypassing the repository, which is the only thing that
227
+ * builds tokens. Without this every seeded ticket would have no `searchTxt` at
228
+ * all and `array-contains` would match zero documents, for every query,
229
+ * forever. That is exactly how FAQ search was found broken.
230
+ *
231
+ * Computed with the SAME `buildSearchTxt` over the SAME field the repository
232
+ * uses, so a seeded ticket and a user-created one are byte-identical. Pure
233
+ * function of the record's own content, so it stays deterministic and does not
234
+ * reintroduce the `appkit-seed` idempotency problem of Root Cause #25.
235
+ */
236
+ export const supportTicketsSeedData = supportTicketRecords.map((ticket) => ({
237
+ ...ticket,
238
+ searchTxt: ticket.subject ? buildSearchTxt([ticket.subject]) : [],
239
+ }));
@@ -16,7 +16,7 @@
16
16
  */
17
17
  import { getDefaultPhonePrefix } from "./seed-market-config";
18
18
  import { USER_FIELDS } from "../constants/field-names";
19
- import { seedExtMedia } from "./_helpers/media";
19
+ import { seedPhoto } from "./_helpers/media";
20
20
  const _ph = getDefaultPhonePrefix();
21
21
  const NOW = new Date();
22
22
  const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
@@ -28,9 +28,9 @@ export const usersSeedData = [
28
28
  phoneNumber: `${_ph}9999900000`,
29
29
  phoneVerified: true,
30
30
  displayName: "Mock User 1",
31
- photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-letitrip-admin-20260101/400/400"),
31
+ photoURL: seedPhoto("user-avatar-letitrip-admin-20260101", 400, 400),
32
32
  avatarMetadata: {
33
- url: seedExtMedia("https://picsum.photos/seed/user-avatar-letitrip-admin-20260101/400/400"),
33
+ url: seedPhoto("user-avatar-letitrip-admin-20260101", 400, 400),
34
34
  position: { x: 50, y: 50 },
35
35
  zoom: 1.0,
36
36
  },
@@ -68,7 +68,7 @@ export const usersSeedData = [
68
68
  phoneNumber: `${_ph}9999900001`,
69
69
  phoneVerified: true,
70
70
  displayName: "Mock User 2",
71
- photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-vivaan-kapoor-20260101/400/400"),
71
+ photoURL: seedPhoto("user-avatar-vivaan-kapoor-20260101", 400, 400),
72
72
  role: USER_FIELDS.ROLE_VALUES.USER,
73
73
  emailVerified: true,
74
74
  disabled: false,
@@ -98,7 +98,7 @@ export const usersSeedData = [
98
98
  phoneNumber: `${_ph}9999900002`,
99
99
  phoneVerified: true,
100
100
  displayName: "Mock User 3",
101
- photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-rehan-sheikh-20260101/400/400"),
101
+ photoURL: seedPhoto("user-avatar-rehan-sheikh-20260101", 400, 400),
102
102
  role: USER_FIELDS.ROLE_VALUES.USER,
103
103
  emailVerified: true,
104
104
  disabled: false,
@@ -128,7 +128,7 @@ export const usersSeedData = [
128
128
  phoneNumber: `${_ph}9999900003`,
129
129
  phoneVerified: true,
130
130
  displayName: "Mock User 4",
131
- photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-ash-ketchum-20260101/400/400"),
131
+ photoURL: seedPhoto("user-avatar-ash-ketchum-20260101", 400, 400),
132
132
  role: USER_FIELDS.ROLE_VALUES.USER,
133
133
  emailVerified: true,
134
134
  disabled: false,
@@ -153,7 +153,7 @@ export const usersSeedData = [
153
153
  phoneNumber: `${_ph}9999900004`,
154
154
  phoneVerified: true,
155
155
  displayName: "Mock User 5",
156
- photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-priya-sharma-20260101/400/400"),
156
+ photoURL: seedPhoto("user-avatar-priya-sharma-20260101", 400, 400),
157
157
  role: USER_FIELDS.ROLE_VALUES.USER,
158
158
  emailVerified: true,
159
159
  disabled: false,
@@ -178,7 +178,7 @@ export const usersSeedData = [
178
178
  phoneNumber: `${_ph}9999900006`,
179
179
  phoneVerified: true,
180
180
  displayName: "Mock User 6",
181
- photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-tyson-granger-20260101/400/400"),
181
+ photoURL: seedPhoto("user-avatar-tyson-granger-20260101", 400, 400),
182
182
  role: USER_FIELDS.ROLE_VALUES.SELLER,
183
183
  emailVerified: true,
184
184
  disabled: false,
@@ -208,7 +208,7 @@ export const usersSeedData = [
208
208
  phoneNumber: `${_ph}9999900007`,
209
209
  phoneVerified: true,
210
210
  displayName: "Mock User 7",
211
- photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-megumi-tanaka-20260101/400/400"),
211
+ photoURL: seedPhoto("user-avatar-megumi-tanaka-20260101", 400, 400),
212
212
  role: USER_FIELDS.ROLE_VALUES.USER,
213
213
  emailVerified: true,
214
214
  disabled: false,
@@ -233,7 +233,7 @@ export const usersSeedData = [
233
233
  phoneNumber: `${_ph}9999900008`,
234
234
  phoneVerified: true,
235
235
  displayName: "Mock User 8",
236
- photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-amuro-ray-20260101/400/400"),
236
+ photoURL: seedPhoto("user-avatar-amuro-ray-20260101", 400, 400),
237
237
  role: USER_FIELDS.ROLE_VALUES.USER,
238
238
  emailVerified: true,
239
239
  disabled: false,
@@ -258,7 +258,7 @@ export const usersSeedData = [
258
258
  phoneNumber: `${_ph}9999900009`,
259
259
  phoneVerified: true,
260
260
  displayName: "Mock User 9",
261
- photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-ananya-patel-20260101/400/400"),
261
+ photoURL: seedPhoto("user-avatar-ananya-patel-20260101", 400, 400),
262
262
  role: USER_FIELDS.ROLE_VALUES.USER,
263
263
  emailVerified: true,
264
264
  disabled: false,
@@ -283,7 +283,7 @@ export const usersSeedData = [
283
283
  phoneNumber: `${_ph}9999900010`,
284
284
  phoneVerified: true,
285
285
  displayName: "Mock User 10",
286
- photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-vikram-singh-20260101/400/400"),
286
+ photoURL: seedPhoto("user-avatar-vikram-singh-20260101", 400, 400),
287
287
  role: USER_FIELDS.ROLE_VALUES.USER,
288
288
  emailVerified: true,
289
289
  disabled: false,
@@ -308,7 +308,7 @@ export const usersSeedData = [
308
308
  phoneNumber: `${_ph}9999900011`,
309
309
  phoneVerified: true,
310
310
  displayName: "Mock User 11",
311
- photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-meera-nair-20260101/400/400"),
311
+ photoURL: seedPhoto("user-avatar-meera-nair-20260101", 400, 400),
312
312
  role: USER_FIELDS.ROLE_VALUES.SELLER,
313
313
  emailVerified: true,
314
314
  disabled: false,
@@ -338,7 +338,7 @@ export const usersSeedData = [
338
338
  phoneNumber: `${_ph}9999900012`,
339
339
  phoneVerified: true,
340
340
  displayName: "Mock User 12",
341
- photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-arjun-reddy-20260101/400/400"),
341
+ photoURL: seedPhoto("user-avatar-arjun-reddy-20260101", 400, 400),
342
342
  role: USER_FIELDS.ROLE_VALUES.USER,
343
343
  emailVerified: true,
344
344
  disabled: false,
@@ -363,7 +363,7 @@ export const usersSeedData = [
363
363
  phoneNumber: `${_ph}9999900013`,
364
364
  phoneVerified: true,
365
365
  displayName: "Mock User 13",
366
- photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-sneha-gupta-20260101/400/400"),
366
+ photoURL: seedPhoto("user-avatar-sneha-gupta-20260101", 400, 400),
367
367
  role: USER_FIELDS.ROLE_VALUES.SELLER,
368
368
  emailVerified: true,
369
369
  disabled: false,
@@ -393,7 +393,7 @@ export const usersSeedData = [
393
393
  phoneNumber: `${_ph}9999900014`,
394
394
  phoneVerified: true,
395
395
  displayName: "Mock User 14",
396
- photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-rohit-agarwal-20260101/400/400"),
396
+ photoURL: seedPhoto("user-avatar-rohit-agarwal-20260101", 400, 400),
397
397
  role: USER_FIELDS.ROLE_VALUES.USER,
398
398
  emailVerified: true,
399
399
  disabled: false,
@@ -418,7 +418,7 @@ export const usersSeedData = [
418
418
  phoneNumber: `${_ph}9999900015`,
419
419
  phoneVerified: true,
420
420
  displayName: "Mock User 15",
421
- photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-divya-menon-20260101/400/400"),
421
+ photoURL: seedPhoto("user-avatar-divya-menon-20260101", 400, 400),
422
422
  role: USER_FIELDS.ROLE_VALUES.USER,
423
423
  emailVerified: true,
424
424
  disabled: false,
@@ -443,7 +443,7 @@ export const usersSeedData = [
443
443
  phoneNumber: `${_ph}9999900016`,
444
444
  phoneVerified: false,
445
445
  displayName: "Mock User 16",
446
- photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-karthik-iyer-20260101/400/400"),
446
+ photoURL: seedPhoto("user-avatar-karthik-iyer-20260101", 400, 400),
447
447
  role: USER_FIELDS.ROLE_VALUES.USER,
448
448
  emailVerified: true,
449
449
  disabled: false,
@@ -468,7 +468,7 @@ export const usersSeedData = [
468
468
  phoneNumber: `${_ph}9999900017`,
469
469
  phoneVerified: true,
470
470
  displayName: "Mock User 17",
471
- photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-neha-joshi-20260101/400/400"),
471
+ photoURL: seedPhoto("user-avatar-neha-joshi-20260101", 400, 400),
472
472
  role: USER_FIELDS.ROLE_VALUES.USER,
473
473
  emailVerified: true,
474
474
  disabled: false,
@@ -493,7 +493,7 @@ export const usersSeedData = [
493
493
  phoneNumber: `${_ph}9999900018`,
494
494
  phoneVerified: true,
495
495
  displayName: "Mock User 18",
496
- photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-qa-tester-20260101/400/400"),
496
+ photoURL: seedPhoto("user-avatar-qa-tester-20260101", 400, 400),
497
497
  role: USER_FIELDS.ROLE_VALUES.SELLER,
498
498
  isTester: true,
499
499
  emailVerified: true,
@@ -77,7 +77,6 @@ export type { AppShellProps, AppShellRenderContext, } from "./_internal/client/s
77
77
  export { toClient, clientInitial } from "./_internal/shared/serialization/index";
78
78
  export * as accountServer from "./_internal/server/features/account/index";
79
79
  export * as authServer from "./_internal/server/features/auth/index";
80
- export * as messagesServer from "./_internal/server/features/messages/index";
81
80
  export * as scamsServer from "./_internal/server/features/scams/index";
82
81
  export { AppkitError, UnauthorizedError, CapacityError, ExpiredError, } from "./_internal/shared/errors/index";
83
82
  export { NotFoundError, ValidationError, ConflictError } from "./errors/index";
@@ -122,7 +122,6 @@ export { toClient, clientInitial } from "./_internal/shared/serialization/index"
122
122
  // S7 server feature shims (data + actions) — canonical _internal/ entries
123
123
  export * as accountServer from "./_internal/server/features/account/index";
124
124
  export * as authServer from "./_internal/server/features/auth/index";
125
- export * as messagesServer from "./_internal/server/features/messages/index";
126
125
  export * as scamsServer from "./_internal/server/features/scams/index";
127
126
  // Shared domain errors.
128
127
  //
package/dist/server.d.ts CHANGED
@@ -109,7 +109,6 @@ export { createApiErrorHandler } from "./next/index";
109
109
  export { createApiHandler } from "./next/index";
110
110
  export { createApiHandlerFactory } from "./next/index";
111
111
  export { createApiMiddleware } from "./next/index";
112
- export { createPiiRedactorMiddleware } from "./next/index";
113
112
  export { createRouteHandler } from "./next/index";
114
113
  export { createRouteMap } from "./next/index";
115
114
  export { errorResponse } from "./next/index";
@@ -176,12 +175,9 @@ export { adminUpdatePayout } from "./features/admin/server";
176
175
  export { adminUpdateProduct } from "./features/admin/server";
177
176
  export { adminUpdateStoreStatus } from "./features/admin/server";
178
177
  export { adminUpdateUser } from "./features/admin/server";
179
- export { createOrGetChatRoom } from "./features/admin/server";
180
- export { deleteChatRoom } from "./features/admin/server";
181
178
  export { deleteNotification } from "./features/admin/server";
182
179
  export { getAdminAnalytics } from "./features/admin/server";
183
180
  export { getAdminDashboardStats } from "./features/admin/server";
184
- export { getChatRooms } from "./features/admin/server";
185
181
  export { getSiteSettings } from "./features/admin/server";
186
182
  export { getUnreadNotificationCount } from "./features/admin/server";
187
183
  export { listAdminBids } from "./features/admin/server";
@@ -198,7 +194,6 @@ export { markAllNotificationsRead } from "./features/admin/server";
198
194
  export { markNotificationRead } from "./features/admin/server";
199
195
  export { revokeSession } from "./features/admin/server";
200
196
  export { revokeUserSessions } from "./features/admin/server";
201
- export { sendChatMessage } from "./features/admin/server";
202
197
  export { updateSiteSettings } from "./features/admin/server";
203
198
  export { GET } from "./features/auctions/server";
204
199
  export { bidsGET } from "./features/auctions/server";
@@ -216,7 +211,6 @@ export { getProfileStoreProducts } from "./features/auth/server";
216
211
  export { getSellerReviews } from "./features/auth/server";
217
212
  export { getUserProfile } from "./features/auth/server";
218
213
  export { getUserSessions } from "./features/auth/server";
219
- export { issueRealtimeToken } from "./features/auth/server";
220
214
  export { markPasswordResetTokenAsUsed } from "./features/auth/server";
221
215
  export { updateUserProfile } from "./features/auth/server";
222
216
  export { verifyEmailToken } from "./features/auth/server";
@@ -577,3 +571,12 @@ export { renderNotificationEmail, NOTIFICATION_EMAIL_TEMPLATES, } from "./featur
577
571
  export type { NotificationTemplateDef, NotificationEmailContext, } from "./features/email/notification-templates";
578
572
  export { resolveNotificationActionUrl, } from "./_internal/shared/features/notifications/action-url";
579
573
  export type { NotificationAudience } from "./_internal/shared/features/notifications/action-url";
574
+ export { refineAddressPostal, addressFormSchema, addressUpdateSchema, adminAddressCreateSchema, adminAddressUpdateSchema, addressUnbanRequestSchema, adminAddressPatchSchema, } from "./features/addresses/schemas/address-form";
575
+ export type { AddressFormValues, AddressUpdateValues, AdminAddressCreateValues, } from "./features/addresses/schemas/address-form";
576
+ export { COUNTRIES, COUNTRY_CODES, DEFAULT_COUNTRY, countryFor, postalPatternFor, postalLabelFor, isValidPostalCode, } from "./constants/geo/countries";
577
+ export type { CountryDef } from "./constants/geo/countries";
578
+ export { SUBDIVISIONS, subdivisionsFor } from "./constants/geo/subdivisions";
579
+ export { validateActionIndexEntry, normaliseRoute, } from "./features/search/action-index/validate-entry";
580
+ export type { ActionIndexValidationContext, ActionIndexValidationIssue, } from "./features/search/action-index/validate-entry";
581
+ export { ActionIndexRepository, actionIndexRepository, } from "./features/search/action-index/repository";
582
+ export type { ActionIndexDocument } from "./features/search/action-index/repository";
package/dist/server.js CHANGED
@@ -290,8 +290,6 @@ export { createApiHandlerFactory } from "./next/index";
290
290
  // createApiMiddleware - Helper for create api middleware.
291
291
  export { createApiMiddleware } from "./next/index";
292
292
  // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
293
- // createPiiRedactorMiddleware - Helper for create pii redactor middleware.
294
- export { createPiiRedactorMiddleware } from "./next/index";
295
293
  // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
296
294
  // createRouteHandler - Helper for create route handler.
297
295
  export { createRouteHandler } from "./next/index";
@@ -490,11 +488,7 @@ export { adminUpdateStoreStatus } from "./features/admin/server";
490
488
  // adminUpdateUser - Shared export for admin update user.
491
489
  export { adminUpdateUser } from "./features/admin/server";
492
490
  // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
493
- // createOrGetChatRoom - Helper for create or get chat room.
494
- export { createOrGetChatRoom } from "./features/admin/server";
495
491
  // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
496
- // deleteChatRoom - Helper for delete chat room.
497
- export { deleteChatRoom } from "./features/admin/server";
498
492
  // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
499
493
  // deleteNotification - Helper for delete notification.
500
494
  export { deleteNotification } from "./features/admin/server";
@@ -505,8 +499,6 @@ export { getAdminAnalytics } from "./features/admin/server";
505
499
  // getAdminDashboardStats - Helper for get admin dashboard stats.
506
500
  export { getAdminDashboardStats } from "./features/admin/server";
507
501
  // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
508
- // getChatRooms - Helper for get chat rooms.
509
- export { getChatRooms } from "./features/admin/server";
510
502
  // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
511
503
  // getSiteSettings - Helper for get site settings.
512
504
  export { getSiteSettings } from "./features/admin/server";
@@ -556,8 +548,6 @@ export { revokeSession } from "./features/admin/server";
556
548
  // revokeUserSessions - Shared export for revoke user sessions.
557
549
  export { revokeUserSessions } from "./features/admin/server";
558
550
  // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
559
- // sendChatMessage - Shared export for send chat message.
560
- export { sendChatMessage } from "./features/admin/server";
561
551
  // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
562
552
  // updateSiteSettings - Helper for update site settings.
563
553
  export { updateSiteSettings } from "./features/admin/server";
@@ -610,9 +600,6 @@ export { getUserProfile } from "./features/auth/server";
610
600
  // getUserSessions - Helper for get user sessions.
611
601
  export { getUserSessions } from "./features/auth/server";
612
602
  // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
613
- // issueRealtimeToken - Shared export for issue realtime token.
614
- export { issueRealtimeToken } from "./features/auth/server";
615
- // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
616
603
  // markPasswordResetTokenAsUsed - Shared export for mark password reset token as used.
617
604
  export { markPasswordResetTokenAsUsed } from "./features/auth/server";
618
605
  // [SERVER-ONLY]-Server-only — uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
@@ -1454,3 +1441,10 @@ export { lotteryEntryRepository } from "./features/lottery/repository/lottery-en
1454
1441
  */
1455
1442
  export { renderNotificationEmail, NOTIFICATION_EMAIL_TEMPLATES, } from "./features/email/notification-templates";
1456
1443
  export { resolveNotificationActionUrl, } from "./_internal/shared/features/notifications/action-url";
1444
+ // The ONE address shape and the ONE postal rule (W5 / D19). Eleven field
1445
+ // shapes and fifteen disagreeing postal rules collapsed to these.
1446
+ export { refineAddressPostal, addressFormSchema, addressUpdateSchema, adminAddressCreateSchema, adminAddressUpdateSchema, addressUnbanRequestSchema, adminAddressPatchSchema, } from "./features/addresses/schemas/address-form";
1447
+ export { COUNTRIES, COUNTRY_CODES, DEFAULT_COUNTRY, countryFor, postalPatternFor, postalLabelFor, isValidPostalCode, } from "./constants/geo/countries";
1448
+ export { SUBDIVISIONS, subdivisionsFor } from "./constants/geo/subdivisions";
1449
+ export { validateActionIndexEntry, normaliseRoute, } from "./features/search/action-index/validate-entry";
1450
+ export { ActionIndexRepository, actionIndexRepository, } from "./features/search/action-index/repository";