@mohasinac/appkit 4.52.5 → 4.53.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 (630) hide show
  1. package/dist/.build-stamp.json +4 -4
  2. package/dist/_internal/client/features/sticker-trace/canvas-codec.d.ts +2 -0
  3. package/dist/_internal/client/features/sticker-trace/canvas-codec.js +148 -0
  4. package/dist/_internal/server/features/auctions/actions.js +1 -1
  5. package/dist/_internal/server/features/categories/data.js +23 -7
  6. package/dist/_internal/server/features/checkout/actions.js +10 -3
  7. package/dist/_internal/server/features/checkout/data.d.ts +15 -0
  8. package/dist/_internal/server/features/checkout/data.js +20 -3
  9. package/dist/_internal/server/features/lottery/actions.js +9 -1
  10. package/dist/_internal/server/features/lottery/og.d.ts +40 -0
  11. package/dist/_internal/server/features/lottery/og.js +79 -0
  12. package/dist/_internal/server/features/messages/actions.js +4 -0
  13. package/dist/_internal/server/features/offers/adapters.js +17 -3
  14. package/dist/_internal/server/features/orders/actions.js +7 -2
  15. package/dist/_internal/server/features/raffle/actions.d.ts +19 -0
  16. package/dist/_internal/server/features/raffle/actions.js +25 -0
  17. package/dist/_internal/server/features/reviews/actions.js +1 -1
  18. package/dist/_internal/server/features/reviews/data.d.ts +1 -1
  19. package/dist/_internal/server/features/search/index-build/artifact-store.d.ts +89 -0
  20. package/dist/_internal/server/features/search/index-build/artifact-store.js +208 -0
  21. package/dist/_internal/server/features/search/index-build/build.d.ts +57 -0
  22. package/dist/_internal/server/features/search/index-build/build.js +285 -0
  23. package/dist/_internal/server/features/search/index-build/sources.d.ts +53 -0
  24. package/dist/_internal/server/features/search/index-build/sources.js +385 -0
  25. package/dist/_internal/server/features/search/search-sources.d.ts +0 -15
  26. package/dist/_internal/server/features/search/search-sources.js +142 -7
  27. package/dist/_internal/server/features/seo/robots.js +21 -1
  28. package/dist/_internal/server/features/seo/sitemap.js +1 -1
  29. package/dist/_internal/server/features/shared/listing-data-factory.js +16 -4
  30. package/dist/_internal/server/features/site-settings/adapters.d.ts +1 -1
  31. package/dist/_internal/server/features/site-settings/adapters.js +26 -0
  32. package/dist/_internal/server/features/sticker-trace/actions.d.ts +109 -0
  33. package/dist/_internal/server/features/sticker-trace/actions.js +172 -0
  34. package/dist/_internal/server/features/sticker-trace/adapters.d.ts +80 -0
  35. package/dist/_internal/server/features/sticker-trace/adapters.js +174 -0
  36. package/dist/_internal/server/features/sticker-trace/build-cut-file.d.ts +26 -0
  37. package/dist/_internal/server/features/sticker-trace/build-cut-file.js +127 -0
  38. package/dist/_internal/server/features/sticker-trace/coordinator.d.ts +27 -0
  39. package/dist/_internal/server/features/sticker-trace/coordinator.js +169 -0
  40. package/dist/_internal/server/features/sticker-trace/fanout.d.ts +43 -0
  41. package/dist/_internal/server/features/sticker-trace/fanout.js +180 -0
  42. package/dist/_internal/server/features/sticker-trace/finalizer.d.ts +25 -0
  43. package/dist/_internal/server/features/sticker-trace/finalizer.js +123 -0
  44. package/dist/_internal/server/features/sticker-trace/mosaic-inputs.d.ts +30 -0
  45. package/dist/_internal/server/features/sticker-trace/mosaic-inputs.js +112 -0
  46. package/dist/_internal/server/features/sticker-trace/progress.d.ts +81 -0
  47. package/dist/_internal/server/features/sticker-trace/progress.js +198 -0
  48. package/dist/_internal/server/features/sticker-trace/promote.d.ts +23 -0
  49. package/dist/_internal/server/features/sticker-trace/promote.js +193 -0
  50. package/dist/_internal/server/features/sticker-trace/shard.d.ts +50 -0
  51. package/dist/_internal/server/features/sticker-trace/shard.js +174 -0
  52. package/dist/_internal/server/features/sticker-trace/sheet-actions.d.ts +141 -0
  53. package/dist/_internal/server/features/sticker-trace/sheet-actions.js +279 -0
  54. package/dist/_internal/server/features/sticker-trace/storage.d.ts +135 -0
  55. package/dist/_internal/server/features/sticker-trace/storage.js +282 -0
  56. package/dist/_internal/server/functions/scheduled.d.ts +2 -1
  57. package/dist/_internal/server/functions/scheduled.js +25 -1
  58. package/dist/_internal/server/jobs/core/_event-ref.d.ts +51 -0
  59. package/dist/_internal/server/jobs/core/_event-ref.js +63 -0
  60. package/dist/_internal/server/jobs/core/assignSpinPrize.d.ts +18 -0
  61. package/dist/_internal/server/jobs/core/assignSpinPrize.js +77 -16
  62. package/dist/_internal/server/jobs/core/auctionSettlement.js +13 -4
  63. package/dist/_internal/server/jobs/core/autoPayoutEligibility.js +44 -15
  64. package/dist/_internal/server/jobs/core/bundleStockSync.js +3 -4
  65. package/dist/_internal/server/jobs/core/cleanupRtdbEvents.js +44 -0
  66. package/dist/_internal/server/jobs/core/event-draw-reasons.d.ts +78 -0
  67. package/dist/_internal/server/jobs/core/event-draw-reasons.js +133 -0
  68. package/dist/_internal/server/jobs/core/listingProcessor.js +28 -8
  69. package/dist/_internal/server/jobs/core/onOrderCreate.js +12 -1
  70. package/dist/_internal/server/jobs/core/onScamReportCreate.js +13 -2
  71. package/dist/_internal/server/jobs/core/onScamReportRejected.js +8 -2
  72. package/dist/_internal/server/jobs/core/onScamReportVerified.js +8 -2
  73. package/dist/_internal/server/jobs/core/onStoreWrite.js +11 -4
  74. package/dist/_internal/server/jobs/core/prizeDrawAssignWinner.js +5 -4
  75. package/dist/_internal/server/jobs/core/prizeDrawExpiryReveal.js +1 -4
  76. package/dist/_internal/server/jobs/core/prizeDrawSoldOutReveal.js +1 -2
  77. package/dist/_internal/server/jobs/core/promotions.js +7 -4
  78. package/dist/_internal/server/jobs/core/searchIndexBuild.d.ts +7 -0
  79. package/dist/_internal/server/jobs/core/searchIndexBuild.js +211 -0
  80. package/dist/_internal/server/jobs/core/triggerEventRaffle.d.ts +35 -0
  81. package/dist/_internal/server/jobs/core/triggerEventRaffle.js +213 -31
  82. package/dist/_internal/server/jobs/core/weeklyPayoutEligibility.js +20 -14
  83. package/dist/_internal/server/jobs/handlers/assignSpinPrize.d.ts +8 -0
  84. package/dist/_internal/server/jobs/handlers/assignSpinPrize.js +15 -15
  85. package/dist/_internal/server/jobs/handlers/index.d.ts +1 -0
  86. package/dist/_internal/server/jobs/handlers/index.js +1 -0
  87. package/dist/_internal/server/jobs/handlers/onCategoryWrite.js +18 -0
  88. package/dist/_internal/server/jobs/handlers/onProductWrite.js +18 -0
  89. package/dist/_internal/server/jobs/handlers/onReviewWrite.js +18 -0
  90. package/dist/_internal/server/jobs/handlers/onScamReportUpdate.js +18 -0
  91. package/dist/_internal/server/jobs/handlers/onStoreWrite.js +18 -0
  92. package/dist/_internal/server/jobs/handlers/searchIndexBuild.d.ts +2 -0
  93. package/dist/_internal/server/jobs/handlers/searchIndexBuild.js +2 -0
  94. package/dist/_internal/server/jobs/handlers/triggerEventRaffle.d.ts +8 -0
  95. package/dist/_internal/server/jobs/handlers/triggerEventRaffle.js +15 -6
  96. package/dist/_internal/shared/actions/action-registry.js +29 -0
  97. package/dist/_internal/shared/cache/revalidate-targets.d.ts +0 -1
  98. package/dist/_internal/shared/cache/revalidate-targets.js +10 -8
  99. package/dist/_internal/shared/features/events/config.d.ts +14 -0
  100. package/dist/_internal/shared/features/events/config.js +14 -0
  101. package/dist/_internal/shared/features/notifications/action-url.js +8 -0
  102. package/dist/_internal/shared/features/site-settings/types.d.ts +11 -0
  103. package/dist/_internal/shared/features/sticker-trace/codec.d.ts +81 -0
  104. package/dist/_internal/shared/features/sticker-trace/codec.js +30 -0
  105. package/dist/_internal/shared/features/sticker-trace/config.d.ts +81 -0
  106. package/dist/_internal/shared/features/sticker-trace/config.js +177 -0
  107. package/dist/_internal/shared/features/sticker-trace/cut-contour.d.ts +20 -0
  108. package/dist/_internal/shared/features/sticker-trace/cut-contour.js +60 -0
  109. package/dist/_internal/shared/features/sticker-trace/export/build-export-set.d.ts +65 -0
  110. package/dist/_internal/shared/features/sticker-trace/export/build-export-set.js +176 -0
  111. package/dist/_internal/shared/features/sticker-trace/export/cut-svg.d.ts +56 -0
  112. package/dist/_internal/shared/features/sticker-trace/export/cut-svg.js +120 -0
  113. package/dist/_internal/shared/features/sticker-trace/export/machine-profiles.d.ts +92 -0
  114. package/dist/_internal/shared/features/sticker-trace/export/machine-profiles.js +153 -0
  115. package/dist/_internal/shared/features/sticker-trace/export/nesting.d.ts +51 -0
  116. package/dist/_internal/shared/features/sticker-trace/export/nesting.js +110 -0
  117. package/dist/_internal/shared/features/sticker-trace/export/page-sizes.d.ts +68 -0
  118. package/dist/_internal/shared/features/sticker-trace/export/page-sizes.js +223 -0
  119. package/dist/_internal/shared/features/sticker-trace/export/part-tiling.d.ts +51 -0
  120. package/dist/_internal/shared/features/sticker-trace/export/part-tiling.js +178 -0
  121. package/dist/_internal/shared/features/sticker-trace/export/simplify-budget.d.ts +26 -0
  122. package/dist/_internal/shared/features/sticker-trace/export/simplify-budget.js +134 -0
  123. package/dist/_internal/shared/features/sticker-trace/export/vectorise-art.d.ts +40 -0
  124. package/dist/_internal/shared/features/sticker-trace/export/vectorise-art.js +195 -0
  125. package/dist/_internal/shared/features/sticker-trace/index.d.ts +2 -0
  126. package/dist/_internal/shared/features/sticker-trace/index.js +59 -0
  127. package/dist/_internal/shared/features/sticker-trace/math/catmull-rom.d.ts +11 -0
  128. package/dist/_internal/shared/features/sticker-trace/math/catmull-rom.js +66 -0
  129. package/dist/_internal/shared/features/sticker-trace/math/edt.d.ts +27 -0
  130. package/dist/_internal/shared/features/sticker-trace/math/edt.js +165 -0
  131. package/dist/_internal/shared/features/sticker-trace/math/label.d.ts +15 -0
  132. package/dist/_internal/shared/features/sticker-trace/math/label.js +156 -0
  133. package/dist/_internal/shared/features/sticker-trace/math/marching-squares.d.ts +16 -0
  134. package/dist/_internal/shared/features/sticker-trace/math/marching-squares.js +242 -0
  135. package/dist/_internal/shared/features/sticker-trace/math/morphology.d.ts +46 -0
  136. package/dist/_internal/shared/features/sticker-trace/math/morphology.js +168 -0
  137. package/dist/_internal/shared/features/sticker-trace/math/rasterize-path.d.ts +88 -0
  138. package/dist/_internal/shared/features/sticker-trace/math/rasterize-path.js +286 -0
  139. package/dist/_internal/shared/features/sticker-trace/math/rdp.d.ts +10 -0
  140. package/dist/_internal/shared/features/sticker-trace/math/rdp.js +74 -0
  141. package/dist/_internal/shared/features/sticker-trace/resume.d.ts +50 -0
  142. package/dist/_internal/shared/features/sticker-trace/resume.js +160 -0
  143. package/dist/_internal/shared/features/sticker-trace/trace/cluster.d.ts +20 -0
  144. package/dist/_internal/shared/features/sticker-trace/trace/cluster.js +132 -0
  145. package/dist/_internal/shared/features/sticker-trace/trace/cross-profile.d.ts +28 -0
  146. package/dist/_internal/shared/features/sticker-trace/trace/cross-profile.js +120 -0
  147. package/dist/_internal/shared/features/sticker-trace/trace/flood.d.ts +21 -0
  148. package/dist/_internal/shared/features/sticker-trace/trace/flood.js +104 -0
  149. package/dist/_internal/shared/features/sticker-trace/trace/geometry.d.ts +3 -0
  150. package/dist/_internal/shared/features/sticker-trace/trace/geometry.js +140 -0
  151. package/dist/_internal/shared/features/sticker-trace/trace/line-filter.d.ts +15 -0
  152. package/dist/_internal/shared/features/sticker-trace/trace/line-filter.js +138 -0
  153. package/dist/_internal/shared/features/sticker-trace/trace/merge.d.ts +27 -0
  154. package/dist/_internal/shared/features/sticker-trace/trace/merge.js +187 -0
  155. package/dist/_internal/shared/features/sticker-trace/trace/paper.d.ts +32 -0
  156. package/dist/_internal/shared/features/sticker-trace/trace/paper.js +147 -0
  157. package/dist/_internal/shared/features/sticker-trace/trace/prefilter.d.ts +30 -0
  158. package/dist/_internal/shared/features/sticker-trace/trace/prefilter.js +125 -0
  159. package/dist/_internal/shared/features/sticker-trace/trace/quantise.d.ts +10 -0
  160. package/dist/_internal/shared/features/sticker-trace/trace/quantise.js +153 -0
  161. package/dist/_internal/shared/features/sticker-trace/trace/ridge.d.ts +88 -0
  162. package/dist/_internal/shared/features/sticker-trace/trace/ridge.js +344 -0
  163. package/dist/_internal/shared/features/sticker-trace/trace/segment.d.ts +10 -0
  164. package/dist/_internal/shared/features/sticker-trace/trace/segment.js +251 -0
  165. package/dist/_internal/shared/features/sticker-trace/types.d.ts +197 -0
  166. package/dist/_internal/shared/features/sticker-trace/types.js +49 -0
  167. package/dist/_internal/shared/listing-types/_registry.d.ts +11 -0
  168. package/dist/_internal/shared/listing-types/art/config.d.ts +1 -0
  169. package/dist/_internal/shared/listing-types/art/config.js +1 -0
  170. package/dist/_internal/shared/listing-types/auction/config.d.ts +1 -0
  171. package/dist/_internal/shared/listing-types/auction/config.js +1 -0
  172. package/dist/_internal/shared/listing-types/classified/config.d.ts +1 -0
  173. package/dist/_internal/shared/listing-types/classified/config.js +1 -0
  174. package/dist/_internal/shared/listing-types/digital-code/config.d.ts +1 -0
  175. package/dist/_internal/shared/listing-types/digital-code/config.js +1 -0
  176. package/dist/_internal/shared/listing-types/feature-flags.d.ts +7 -0
  177. package/dist/_internal/shared/listing-types/feature-flags.js +9 -0
  178. package/dist/_internal/shared/listing-types/live/config.d.ts +1 -0
  179. package/dist/_internal/shared/listing-types/live/config.js +1 -0
  180. package/dist/_internal/shared/listing-types/pre-order/config.d.ts +1 -0
  181. package/dist/_internal/shared/listing-types/pre-order/config.js +1 -0
  182. package/dist/_internal/shared/listing-types/prize-draw/config.d.ts +1 -0
  183. package/dist/_internal/shared/listing-types/prize-draw/config.js +1 -0
  184. package/dist/_internal/shared/listing-types/standard/config.d.ts +1 -0
  185. package/dist/_internal/shared/listing-types/standard/config.js +1 -0
  186. package/dist/_internal/shared/listing-types/stickers/config.d.ts +1 -0
  187. package/dist/_internal/shared/listing-types/stickers/config.js +1 -0
  188. package/dist/_internal/shared/media/limits.d.ts +12 -2
  189. package/dist/_internal/shared/media/limits.js +12 -2
  190. package/dist/_internal/shared/search/artifact-url.d.ts +35 -0
  191. package/dist/_internal/shared/search/artifact-url.js +119 -0
  192. package/dist/_internal/shared/search/index-record.d.ts +68 -0
  193. package/dist/_internal/shared/search/index-record.js +96 -0
  194. package/dist/_internal/shared/search/match.d.ts +65 -0
  195. package/dist/_internal/shared/search/match.js +263 -0
  196. package/dist/client.d.ts +8 -7
  197. package/dist/client.js +12 -5
  198. package/dist/configs/eslint.js +22 -2
  199. package/dist/constants/api-endpoints.d.ts +68 -0
  200. package/dist/constants/api-endpoints.js +32 -0
  201. package/dist/constants/field-names.d.ts +7 -1
  202. package/dist/constants/field-names.js +36 -1
  203. package/dist/contracts/repository.d.ts +8 -7
  204. package/dist/contracts/search.d.ts +2 -2
  205. package/dist/contracts/table.d.ts +3 -3
  206. package/dist/contracts/table.js +3 -3
  207. package/dist/core/contact-submissions.repository.js +2 -2
  208. package/dist/core/integration-keys.js +7 -1
  209. package/dist/core/newsletter.repository.js +2 -2
  210. package/dist/core/site-config.js +1 -1
  211. package/dist/errors/error-codes.d.ts +30 -0
  212. package/dist/errors/error-codes.js +30 -0
  213. package/dist/errors/error-display-map.js +40 -1
  214. package/dist/features/account/api/[userId]/addresses/route.js +1 -1
  215. package/dist/features/account/components/UserBidsView.js +1 -1
  216. package/dist/features/account/components/index.d.ts +0 -8
  217. package/dist/features/account/components/index.js +0 -4
  218. package/dist/features/addresses/repository/addresses.repository.d.ts +17 -6
  219. package/dist/features/addresses/repository/addresses.repository.js +65 -9
  220. package/dist/features/addresses/schemas/firestore.d.ts +17 -6
  221. package/dist/features/admin/actions/notification-actions.js +15 -6
  222. package/dist/features/admin/api/bids/route.js +1 -1
  223. package/dist/features/admin/api/coupons/route.js +1 -1
  224. package/dist/features/admin/api/products/route.js +1 -1
  225. package/dist/features/admin/api/reviews/route.js +1 -1
  226. package/dist/features/admin/components/AdminAdEditorView.js +19 -5
  227. package/dist/features/admin/components/AdminAuditLogView.js +1 -1
  228. package/dist/features/admin/components/AdminBlogEditorView.js +0 -1
  229. package/dist/features/admin/components/AdminBlogView.js +1 -1
  230. package/dist/features/admin/components/AdminBrandsView.js +17 -1
  231. package/dist/features/admin/components/AdminCategoryEditorView.js +0 -1
  232. package/dist/features/admin/components/AdminContactView.js +1 -1
  233. package/dist/features/admin/components/AdminEmployeeEditorView.js +1 -3
  234. package/dist/features/admin/components/AdminNewsletterView.js +1 -1
  235. package/dist/features/admin/components/AdminOrdersView.js +9 -2
  236. package/dist/features/admin/components/AdminPayoutsView.js +1 -1
  237. package/dist/features/admin/components/AdminPrizeDrawsView.js +11 -0
  238. package/dist/features/admin/components/AdminProductEditorView.d.ts +10 -1
  239. package/dist/features/admin/components/AdminProductEditorView.js +24 -37
  240. package/dist/features/admin/components/AdminProductsView.js +10 -3
  241. package/dist/features/admin/components/AdminScammersView.js +1 -1
  242. package/dist/features/admin/components/AdminSectionsView.js +21 -5
  243. package/dist/features/admin/components/AdminSessionsView.js +1 -1
  244. package/dist/features/admin/components/AdminSublistingCategoriesView.js +22 -1
  245. package/dist/features/admin/components/AdminTeamView.js +1 -1
  246. package/dist/features/admin/components/AdminTesterChecklistItemEditorView.js +0 -1
  247. package/dist/features/admin/components/AdminUsersView.js +1 -1
  248. package/dist/features/admin/components/DataListingView.d.ts +2 -1
  249. package/dist/features/admin/components/DataListingView.js +9 -4
  250. package/dist/features/admin/components/analytics/AdminPageViewsReportView.js +0 -2
  251. package/dist/features/admin/hooks/useAdminListing.d.ts +1 -1
  252. package/dist/features/admin/repository/site-settings.repository.js +8 -3
  253. package/dist/features/admin/schemas/firestore.d.ts +62 -1
  254. package/dist/features/admin/schemas/firestore.js +32 -0
  255. package/dist/features/admin/types/index.d.ts +1 -1
  256. package/dist/features/auctions/actions/bid-actions.d.ts +2 -2
  257. package/dist/features/auctions/actions/bid-actions.js +16 -4
  258. package/dist/features/auctions/api/route.js +1 -1
  259. package/dist/features/auctions/components/AuctionBottomActions.js +4 -0
  260. package/dist/features/auctions/repository/bid.repository.d.ts +46 -4
  261. package/dist/features/auctions/repository/bid.repository.js +114 -13
  262. package/dist/features/auctions/schemas/firestore.d.ts +24 -4
  263. package/dist/features/auctions/schemas/firestore.js +1 -0
  264. package/dist/features/auth/actions/profile-actions.js +30 -4
  265. package/dist/features/auth/components/index.d.ts +0 -1
  266. package/dist/features/auth/components/index.js +0 -1
  267. package/dist/features/auth/repository/session.repository.d.ts +17 -3
  268. package/dist/features/auth/repository/session.repository.js +46 -5
  269. package/dist/features/auth/repository/token.repository.d.ts +27 -4
  270. package/dist/features/auth/repository/token.repository.js +65 -11
  271. package/dist/features/auth/repository/user.repository.d.ts +33 -7
  272. package/dist/features/auth/repository/user.repository.js +100 -15
  273. package/dist/features/auth/schemas/firestore.d.ts +63 -12
  274. package/dist/features/auth/schemas/firestore.js +11 -0
  275. package/dist/features/before-after/api/route.js +1 -1
  276. package/dist/features/blog/components/BlogListView.js +16 -3
  277. package/dist/features/blog/components/BlogPostView.js +1 -1
  278. package/dist/features/blog/schemas/index.d.ts +2 -2
  279. package/dist/features/cart/api/route.js +1 -1
  280. package/dist/features/catalogue/repository/catalogue.repository.d.ts +7 -7
  281. package/dist/features/catalogue/repository/catalogue.repository.js +28 -10
  282. package/dist/features/catalogue/schemas/firestore.d.ts +11 -0
  283. package/dist/features/categories/api/route.js +10 -10
  284. package/dist/features/categories/components/CategoryDetailPageView.js +35 -5
  285. package/dist/features/categories/components/CategorySelectorCreate.js +0 -1
  286. package/dist/features/categories/components/index.d.ts +0 -2
  287. package/dist/features/categories/components/index.js +0 -1
  288. package/dist/features/categories/repository/categories.repository.d.ts +1 -0
  289. package/dist/features/categories/repository/categories.repository.js +31 -1
  290. package/dist/features/categories/schemas/index.d.ts +2 -2
  291. package/dist/features/categories/utils/taxonomy-visual.d.ts +21 -0
  292. package/dist/features/categories/utils/taxonomy-visual.js +58 -0
  293. package/dist/features/checkout/actions/checkout-value-otp-actions.js +8 -1
  294. package/dist/features/collections/api/[slug]/route.js +3 -3
  295. package/dist/features/collections/api/route.js +1 -1
  296. package/dist/features/consultation/api/route.js +1 -1
  297. package/dist/features/consultation/repository/consultations.repository.js +1 -1
  298. package/dist/features/consultation/types/index.d.ts +1 -1
  299. package/dist/features/contact/components/ContactForm.js +1 -3
  300. package/dist/features/corporate/api/route.js +1 -1
  301. package/dist/features/corporate/repository/corporate.repository.js +1 -1
  302. package/dist/features/corporate/types/index.d.ts +1 -1
  303. package/dist/features/cron/jobs/auction-expiry.job.js +1 -1
  304. package/dist/features/cron/jobs/preorder-reminder.job.js +1 -1
  305. package/dist/features/events/actions/event-actions.d.ts +14 -0
  306. package/dist/features/events/actions/event-actions.js +82 -3
  307. package/dist/features/events/api/[id]/route.js +2 -2
  308. package/dist/features/events/components/AdminEventEditorView.js +22 -3
  309. package/dist/features/events/components/AdminEventsView.js +32 -8
  310. package/dist/features/events/components/EventRafflesSection.d.ts +34 -1
  311. package/dist/features/events/components/EventRafflesSection.js +52 -3
  312. package/dist/features/events/components/SpinWheelView.d.ts +2 -2
  313. package/dist/features/events/components/SpinWheelView.js +41 -4
  314. package/dist/features/events/repository/event-entry.repository.d.ts +14 -2
  315. package/dist/features/events/repository/event-entry.repository.js +41 -7
  316. package/dist/features/events/schemas/firestore.d.ts +17 -4
  317. package/dist/features/events/types/index.d.ts +37 -0
  318. package/dist/features/faq/repository/faqs.repository.js +1 -1
  319. package/dist/features/faq/schemas/index.d.ts +5 -2
  320. package/dist/features/faq/schemas/index.js +6 -0
  321. package/dist/features/faq/types/index.d.ts +0 -1
  322. package/dist/features/grouped/components/GroupedListingEditorView.js +17 -2
  323. package/dist/features/homepage/api/carousel/[id]/route.js +1 -1
  324. package/dist/features/homepage/api/carousel/route.js +4 -4
  325. package/dist/features/homepage/api/route.js +2 -2
  326. package/dist/features/homepage/api/sections/route.js +1 -1
  327. package/dist/features/homepage/components/AnnouncementBar.d.ts +1 -9
  328. package/dist/features/homepage/components/AnnouncementBar.js +13 -19
  329. package/dist/features/homepage/components/MarketplaceHomepageView.js +6 -1
  330. package/dist/features/homepage/components/index.d.ts +0 -2
  331. package/dist/features/homepage/components/index.js +0 -1
  332. package/dist/features/homepage/repository/homepage.repository.js +1 -1
  333. package/dist/features/homepage/schemas/firestore.d.ts +6 -0
  334. package/dist/features/homepage/schemas/index.d.ts +10 -10
  335. package/dist/features/layout/AppLayoutShell.d.ts +11 -0
  336. package/dist/features/layout/AppLayoutShell.js +64 -12
  337. package/dist/features/layout/BottomActionsContext.d.ts +16 -0
  338. package/dist/features/layout/BottomActionsContext.js +5 -0
  339. package/dist/features/layout/BottomChrome.js +48 -9
  340. package/dist/features/layout/BottomNavbar.d.ts +14 -0
  341. package/dist/features/layout/BottomNavbar.js +43 -3
  342. package/dist/features/layout/MainNavbar.d.ts +11 -0
  343. package/dist/features/layout/NavbarLayout.d.ts +3 -0
  344. package/dist/features/layout/NavbarLayout.js +88 -11
  345. package/dist/features/layout/SideActionDock.d.ts +1 -0
  346. package/dist/features/layout/SideActionDock.js +219 -0
  347. package/dist/features/layout/TitleBarLayout.js +1 -1
  348. package/dist/features/layout/cta-anchor.d.ts +31 -0
  349. package/dist/features/layout/cta-anchor.js +31 -0
  350. package/dist/features/layout/hooks/useBottomActions.d.ts +7 -0
  351. package/dist/features/layout/hooks/useBottomActions.js +6 -1
  352. package/dist/features/layout/index.d.ts +9 -1
  353. package/dist/features/layout/index.js +9 -1
  354. package/dist/features/layout/useCtaReveal.d.ts +24 -0
  355. package/dist/features/layout/useCtaReveal.js +82 -0
  356. package/dist/features/layout/useHoldToOpen.d.ts +41 -0
  357. package/dist/features/layout/useHoldToOpen.js +84 -0
  358. package/dist/features/lottery/repository/lottery-entry.repository.d.ts +18 -3
  359. package/dist/features/lottery/repository/lottery-entry.repository.js +48 -6
  360. package/dist/features/lottery/schemas/firestore.d.ts +33 -5
  361. package/dist/features/loyalty/api/balance/route.js +1 -1
  362. package/dist/features/loyalty/api/history/route.js +1 -1
  363. package/dist/features/media/MediaImage.js +0 -1
  364. package/dist/features/media/MediaPickerModal.js +7 -1
  365. package/dist/features/media/modals/ImageEditor.js +5 -1
  366. package/dist/features/media/modals/VideoThumbnailSelector.js +17 -1
  367. package/dist/features/media/repository/media-assets.repository.d.ts +19 -0
  368. package/dist/features/media/upload/CameraCapture.js +16 -1
  369. package/dist/features/media/upload/ImageUpload.js +42 -4
  370. package/dist/features/media/upload/MediaUploadField.js +69 -13
  371. package/dist/features/media/upload/downscale-image.d.ts +56 -0
  372. package/dist/features/media/upload/downscale-image.js +150 -0
  373. package/dist/features/messages/components/ConversationThreadView.js +45 -2
  374. package/dist/features/messages/components/MessageSellerButton.d.ts +15 -1
  375. package/dist/features/messages/components/MessageSellerButton.js +10 -2
  376. package/dist/features/messages/schemas/firestore.d.ts +15 -0
  377. package/dist/features/orders/hooks/useOrders.js +4 -2
  378. package/dist/features/orders/repository/orders.repository.d.ts +15 -4
  379. package/dist/features/orders/repository/orders.repository.js +52 -20
  380. package/dist/features/orders/schemas/firestore.d.ts +15 -4
  381. package/dist/features/orders/schemas/index.d.ts +8 -8
  382. package/dist/features/orders/types/index.d.ts +2 -2
  383. package/dist/features/payments/repository/payments.repository.js +2 -2
  384. package/dist/features/payments/repository/payout.repository.d.ts +23 -6
  385. package/dist/features/payments/repository/payout.repository.js +63 -23
  386. package/dist/features/payments/repository/saved-payment-methods.repository.d.ts +17 -6
  387. package/dist/features/payments/repository/saved-payment-methods.repository.js +59 -11
  388. package/dist/features/payments/schemas/firestore.d.ts +14 -3
  389. package/dist/features/payments/schemas/saved-methods-firestore.d.ts +12 -1
  390. package/dist/features/pre-orders/api/[slug]/route.js +1 -1
  391. package/dist/features/pre-orders/api/admin/route.js +1 -1
  392. package/dist/features/pre-orders/api/route.js +1 -1
  393. package/dist/features/pre-orders/repository/pre-orders.repository.d.ts +3 -3
  394. package/dist/features/pre-orders/repository/pre-orders.repository.js +6 -6
  395. package/dist/features/products/api/[id]/route.js +1 -1
  396. package/dist/features/products/components/ListingBottomActions.js +4 -0
  397. package/dist/features/products/components/ProductDetailPageView.js +2 -1
  398. package/dist/features/products/components/ProductGalleryClient.js +2 -2
  399. package/dist/features/products/components/ProductGrid.js +12 -1
  400. package/dist/features/products/components/index.d.ts +0 -2
  401. package/dist/features/products/components/index.js +0 -1
  402. package/dist/features/products/config/listing-type-listing-config.d.ts +0 -3
  403. package/dist/features/products/config/listing-type-listing-config.js +27 -2
  404. package/dist/features/products/constants/listing-tabs.d.ts +9 -0
  405. package/dist/features/products/constants/listing-tabs.js +3 -2
  406. package/dist/features/products/hooks/useProducts.js +2 -2
  407. package/dist/features/products/repository/products.repository.js +13 -1
  408. package/dist/features/products/schemas/index.d.ts +2 -2
  409. package/dist/features/products/types/index.d.ts +1 -1
  410. package/dist/features/promotions/api/route.js +1 -1
  411. package/dist/features/reviews/actions/review-actions.d.ts +6 -6
  412. package/dist/features/reviews/actions/review-actions.js +22 -8
  413. package/dist/features/reviews/components/ReviewDetailPageView.js +13 -1
  414. package/dist/features/reviews/components/ReviewsIndexPageView.js +21 -4
  415. package/dist/features/reviews/repository/reviews.repository.d.ts +19 -7
  416. package/dist/features/reviews/repository/reviews.repository.js +63 -12
  417. package/dist/features/reviews/schemas/firestore.d.ts +13 -2
  418. package/dist/features/reviews/schemas/index.d.ts +2 -2
  419. package/dist/features/scams/actions/scam-actions.js +16 -4
  420. package/dist/features/search/components/SearchResultsPageView.js +2 -1
  421. package/dist/features/search/hooks/useSearchIndex.d.ts +34 -0
  422. package/dist/features/search/hooks/useSearchIndex.js +172 -0
  423. package/dist/features/search/repository/search.repository.js +2 -2
  424. package/dist/features/seller/actions/offer-actions.d.ts +5 -5
  425. package/dist/features/seller/actions/offer-actions.js +38 -8
  426. package/dist/features/seller/actions/seller-actions.js +34 -7
  427. package/dist/features/seller/api/coupons/route.js +1 -1
  428. package/dist/features/seller/api/products/route.js +1 -1
  429. package/dist/features/seller/api/store/route.js +1 -1
  430. package/dist/features/seller/components/SellerBidsView.js +1 -1
  431. package/dist/features/seller/components/SellerCouponsView.js +1 -1
  432. package/dist/features/seller/components/SellerListingTypeView.js +9 -1
  433. package/dist/features/seller/components/SellerOrdersView.js +1 -1
  434. package/dist/features/seller/components/SellerPayoutSettingsView.js +0 -1
  435. package/dist/features/seller/components/SellerPayoutsView.js +1 -1
  436. package/dist/features/seller/components/SellerProductShell.js +0 -1
  437. package/dist/features/seller/components/SellerProductsView.js +1 -1
  438. package/dist/features/seller/components/SellerShippingView.js +0 -1
  439. package/dist/features/seller/components/SellerStorefrontView.js +0 -1
  440. package/dist/features/seller/components/index.d.ts +0 -4
  441. package/dist/features/seller/components/index.js +0 -2
  442. package/dist/features/seller/repository/offer.repository.d.ts +15 -3
  443. package/dist/features/seller/repository/offer.repository.js +43 -7
  444. package/dist/features/seller/schemas/firestore.d.ts +14 -3
  445. package/dist/features/seller/schemas/index.d.ts +4 -4
  446. package/dist/features/seller/schemas/order-forms.d.ts +39 -0
  447. package/dist/features/seller/schemas/order-forms.js +37 -0
  448. package/dist/features/shell/FormShell.js +6 -2
  449. package/dist/features/shell/QuickFormDrawer.js +15 -1
  450. package/dist/features/shipments/components/AdminShipmentEditorView.js +0 -1
  451. package/dist/features/shipments/components/AdminShipmentsView.js +1 -1
  452. package/dist/features/sticker-trace/components/StickerCommitPanel.d.ts +30 -0
  453. package/dist/features/sticker-trace/components/StickerCommitPanel.js +93 -0
  454. package/dist/features/sticker-trace/components/StickerPrintPanel.d.ts +33 -0
  455. package/dist/features/sticker-trace/components/StickerPrintPanel.js +104 -0
  456. package/dist/features/sticker-trace/components/StickerRetryPanel.d.ts +20 -0
  457. package/dist/features/sticker-trace/components/StickerRetryPanel.js +128 -0
  458. package/dist/features/sticker-trace/components/StickerRunHistoryPanel.d.ts +45 -0
  459. package/dist/features/sticker-trace/components/StickerRunHistoryPanel.js +84 -0
  460. package/dist/features/sticker-trace/components/StickerTraceStudio.d.ts +27 -0
  461. package/dist/features/sticker-trace/components/StickerTraceStudio.js +171 -0
  462. package/dist/features/sticker-trace/constants/help-content.d.ts +23 -0
  463. package/dist/features/sticker-trace/constants/help-content.js +172 -0
  464. package/dist/features/sticker-trace/hooks/useLiveTrace.d.ts +27 -0
  465. package/dist/features/sticker-trace/hooks/useLiveTrace.js +160 -0
  466. package/dist/features/sticker-trace/hooks/useStickerTraceProgress.d.ts +22 -0
  467. package/dist/features/sticker-trace/hooks/useStickerTraceProgress.js +106 -0
  468. package/dist/features/sticker-trace/repository/sticker-sheets.repository.d.ts +113 -0
  469. package/dist/features/sticker-trace/repository/sticker-sheets.repository.js +146 -0
  470. package/dist/features/sticker-trace/repository/sticker-trace-runs.repository.d.ts +132 -0
  471. package/dist/features/sticker-trace/repository/sticker-trace-runs.repository.js +174 -0
  472. package/dist/features/sticker-trace/schemas/firestore.d.ts +248 -0
  473. package/dist/features/sticker-trace/schemas/firestore.js +79 -0
  474. package/dist/features/sticker-trace/server.d.ts +8 -0
  475. package/dist/features/sticker-trace/server.js +51 -0
  476. package/dist/features/stores/actions/store-query-actions.d.ts +2 -2
  477. package/dist/features/stores/actions/store-query-actions.js +7 -2
  478. package/dist/features/stores/api/[storeSlug]/auctions/route.js +3 -3
  479. package/dist/features/stores/api/[storeSlug]/products/route.js +3 -3
  480. package/dist/features/stores/api/[storeSlug]/reviews/route.js +1 -1
  481. package/dist/features/stores/api/[storeSlug]/route.js +1 -1
  482. package/dist/features/stores/components/StoreNavTabs.js +17 -2
  483. package/dist/features/stores/manifest.js +8 -4
  484. package/dist/features/support/repository/support.repository.d.ts +14 -3
  485. package/dist/features/support/repository/support.repository.js +93 -13
  486. package/dist/features/support/schemas/firestore.d.ts +16 -5
  487. package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.js +61 -19
  488. package/dist/features/tester/seed-data/authored/buying__browsing-search.js +19 -3
  489. package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.d.ts +2 -0
  490. package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.js +243 -0
  491. package/dist/features/tester/seed-data/authored/content-discovery__events.js +36 -10
  492. package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.d.ts +2 -0
  493. package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.js +209 -0
  494. package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.d.ts +2 -0
  495. package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.js +90 -0
  496. package/dist/features/tester/seed-data/authored/index.js +8 -0
  497. package/dist/features/tester/seed-data/authored/selling__media-limits.js +19 -17
  498. package/dist/features/tester/seed-data/authored/selling__product-upload-details.js +10 -5
  499. package/dist/features/tester/seed-data/authored/tools__sticker-tracer.d.ts +2 -0
  500. package/dist/features/tester/seed-data/authored/tools__sticker-tracer.js +283 -0
  501. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +192 -22
  502. package/dist/index.d.ts +10 -23
  503. package/dist/index.js +27 -19
  504. package/dist/next/api/routeHandler.js +9 -0
  505. package/dist/next/routing/require-record.d.ts +13 -0
  506. package/dist/next/routing/require-record.js +62 -0
  507. package/dist/next/routing/route-map.d.ts +4 -4
  508. package/dist/next/routing/route-map.js +25 -3
  509. package/dist/providers/db-firebase/base.d.ts +4 -2
  510. package/dist/providers/db-firebase/base.js +21 -5
  511. package/dist/providers/db-firebase/base.repository.d.ts +11 -9
  512. package/dist/providers/db-firebase/base.repository.js +19 -0
  513. package/dist/providers/db-firebase/rtdb-paths.d.ts +12 -0
  514. package/dist/providers/db-firebase/rtdb-paths.js +12 -0
  515. package/dist/react/ErrorBoundary.js +6 -1
  516. package/dist/react/hooks/realtime-event-constants.d.ts +1 -0
  517. package/dist/react/hooks/realtime-event-constants.js +8 -0
  518. package/dist/react/hooks/useEntityDelete.js +5 -1
  519. package/dist/react/hooks/useMessage.js +5 -1
  520. package/dist/repositories/index.d.ts +2 -2
  521. package/dist/repositories/index.js +6 -1
  522. package/dist/schemas/registry.d.ts +13 -20
  523. package/dist/schemas/registry.js +31 -14
  524. package/dist/schemas/webhooks/google-oauth.d.ts +2 -2
  525. package/dist/security/encrypted.d.ts +117 -0
  526. package/dist/security/encrypted.js +100 -0
  527. package/dist/security/index.d.ts +5 -2
  528. package/dist/security/index.js +16 -2
  529. package/dist/security/pii-accessors.d.ts +71 -0
  530. package/dist/security/pii-accessors.js +150 -0
  531. package/dist/security/pii-encrypt.d.ts +0 -8
  532. package/dist/security/pii-encrypt.js +22 -15
  533. package/dist/security/pii-mask.d.ts +18 -0
  534. package/dist/security/pii-mask.js +27 -0
  535. package/dist/seed/_helpers/search-txt-wrappers.d.ts +6 -6
  536. package/dist/seed/_helpers/search-txt-wrappers.js +22 -0
  537. package/dist/seed/addresses-seed-data.d.ts +2 -2
  538. package/dist/seed/authenticity-knowledge-seed-data.d.ts +34 -0
  539. package/dist/seed/authenticity-knowledge-seed-data.js +1277 -0
  540. package/dist/seed/bids-seed-data.d.ts +2 -2
  541. package/dist/seed/bids-seed-data.js +23 -2
  542. package/dist/seed/events-seed-data.d.ts +2 -2
  543. package/dist/seed/events-seed-data.js +5 -0
  544. package/dist/seed/faq-seed-data.js +175 -5
  545. package/dist/seed/homepage-sections-seed-data.js +39 -23
  546. package/dist/seed/index.d.ts +1 -0
  547. package/dist/seed/index.js +1 -0
  548. package/dist/seed/lottery-entries-seed-data.d.ts +2 -2
  549. package/dist/seed/offers-seed-data.d.ts +2 -2
  550. package/dist/seed/offers-seed-data.js +1 -1
  551. package/dist/seed/orders-seed-data.d.ts +2 -2
  552. package/dist/seed/payouts-seed-data.d.ts +2 -2
  553. package/dist/seed/payouts-seed-data.js +1 -1
  554. package/dist/seed/reviews-seed-data.d.ts +1 -2
  555. package/dist/seed/seed-purpose.js +7 -0
  556. package/dist/seed/sessions-seed-data.d.ts +2 -2
  557. package/dist/seed/sessions-seed-data.js +5 -0
  558. package/dist/seed/site-settings-seed-data.js +1 -1
  559. package/dist/seed/support-tickets-seed-data.d.ts +2 -2
  560. package/dist/seed/support-tickets-seed-data.js +1 -1
  561. package/dist/seed/users-seed-data.d.ts +2 -2
  562. package/dist/seed/users-seed-data.js +1 -1
  563. package/dist/seo/json-ld.js +5 -1
  564. package/dist/server.d.ts +18 -3
  565. package/dist/server.js +59 -3
  566. package/dist/styles.css +237 -1
  567. package/dist/tailwind-utilities.css +1 -1
  568. package/dist/ui/components/Button.js +7 -1
  569. package/dist/ui/components/FilterChipGroup.d.ts +11 -0
  570. package/dist/ui/components/FilterChipGroup.js +1 -1
  571. package/dist/ui/components/ImageGallery.js +6 -1
  572. package/dist/ui/components/ListingLayout.js +14 -8
  573. package/dist/ui/components/OverflowRow.d.ts +92 -0
  574. package/dist/ui/components/OverflowRow.js +203 -0
  575. package/dist/ui/components/OverflowRow.style.css +235 -0
  576. package/dist/ui/components/RecordDetailModal.js +14 -1
  577. package/dist/ui/components/RowActionMenu.js +5 -1
  578. package/dist/ui/components/SideDrawer.js +5 -1
  579. package/dist/ui/components/SideModal.js +9 -1
  580. package/dist/ui/components/TabBarShell.d.ts +12 -1
  581. package/dist/ui/components/TabBarShell.js +3 -2
  582. package/dist/ui/components/Tabs.js +36 -24
  583. package/dist/ui/components/Toast.d.ts +3 -24
  584. package/dist/ui/components/Toast.js +2 -19
  585. package/dist/ui/components/TopBannerPortal.d.ts +15 -0
  586. package/dist/ui/components/TopBannerPortal.js +19 -0
  587. package/dist/ui/components/UnsavedChangesModal.js +5 -1
  588. package/dist/ui/components/index.style.css +1 -0
  589. package/dist/ui/components/row-collapse.d.ts +15 -0
  590. package/dist/ui/components/row-collapse.js +127 -0
  591. package/dist/ui/components/toast-context.d.ts +63 -0
  592. package/dist/ui/components/toast-context.js +48 -0
  593. package/dist/ui/components/top-banner-slot.d.ts +37 -0
  594. package/dist/ui/components/top-banner-slot.js +45 -0
  595. package/dist/ui/icons/icon-registry.d.ts +6 -0
  596. package/dist/ui/icons/icon-registry.js +17 -1
  597. package/dist/ui/index.d.ts +2 -0
  598. package/dist/ui/index.js +1 -0
  599. package/dist/utils/array.helper.d.ts +2 -2
  600. package/dist/utils/array.helper.js +5 -5
  601. package/dist/utils/id-generators.d.ts +6 -0
  602. package/dist/utils/id-generators.js +10 -0
  603. package/dist/utils/media-url.js +0 -2
  604. package/dist/utils/search-txt-builders.d.ts +28 -4
  605. package/dist/utils/search-txt-builders.js +41 -1
  606. package/dist/validation/schemas.d.ts +8 -8
  607. package/package.json +6 -2
  608. package/scripts/seed-cli.mjs +3 -0
  609. package/dist/features/account/components/UserAddressesView.d.ts +0 -13
  610. package/dist/features/account/components/UserAddressesView.js +0 -5
  611. package/dist/features/account/components/UserNotificationsView.d.ts +0 -15
  612. package/dist/features/account/components/UserNotificationsView.js +0 -12
  613. package/dist/features/account/components/UserSettingsView.d.ts +0 -16
  614. package/dist/features/account/components/UserSettingsView.js +0 -13
  615. package/dist/features/account/components/UserSupportView.d.ts +0 -3
  616. package/dist/features/account/components/UserSupportView.js +0 -166
  617. package/dist/features/admin/components/DemoSeedView.d.ts +0 -11
  618. package/dist/features/admin/components/DemoSeedView.js +0 -5
  619. package/dist/features/auth/components/AuthStatusPanel.d.ts +0 -10
  620. package/dist/features/auth/components/AuthStatusPanel.js +0 -22
  621. package/dist/features/categories/components/CategoryProductsView.d.ts +0 -45
  622. package/dist/features/categories/components/CategoryProductsView.js +0 -21
  623. package/dist/features/homepage/components/HowItWorksInfoView.d.ts +0 -36
  624. package/dist/features/homepage/components/HowItWorksInfoView.js +0 -10
  625. package/dist/features/layout/BottomActions.d.ts +0 -1
  626. package/dist/features/layout/BottomActions.js +0 -311
  627. package/dist/features/products/components/ProductsView.d.ts +0 -6
  628. package/dist/features/products/components/ProductsView.js +0 -5
  629. package/dist/features/seller/components/SellerStoreView.d.ts +0 -8
  630. package/dist/features/seller/components/SellerStoreView.js +0 -8
package/dist/index.d.ts CHANGED
@@ -913,13 +913,10 @@ export { NotificationBell } from "./features/account/index";
913
913
  export { OrderDetailView } from "./features/account/index";
914
914
  export { ProfileView } from "./features/account/index";
915
915
  export { UserAccountHubView } from "./features/account/index";
916
- export { UserAddressesView } from "./features/account/index";
917
- export { UserNotificationsView } from "./features/account/index";
918
916
  export { UserOffersPanel } from "./features/account/index";
919
917
  export type { UserOffersPanelProps } from "./features/account/index";
920
918
  export { UserOrderTrackView } from "./features/account/index";
921
919
  export { UserOrdersView } from "./features/account/index";
922
- export { UserSettingsView } from "./features/account/index";
923
920
  export { NotificationPreferencesPanel } from "./features/account/index";
924
921
  export type { NotificationPreferencesPanelProps } from "./features/account/index";
925
922
  export { accountAdminColumns } from "./features/account/index";
@@ -979,10 +976,6 @@ export type { UseNotificationsOptions } from "./features/account/index";
979
976
  export type { UserAccountHubViewLabels } from "./features/account/index";
980
977
  export type { UserAccountHubViewProps } from "./features/account/index";
981
978
  export type { UserAddress } from "./features/account/index";
982
- export type { UserAddressesViewLabels } from "./features/account/index";
983
- export type { UserAddressesViewProps } from "./features/account/index";
984
- export type { UserNotificationsViewLabels } from "./features/account/index";
985
- export type { UserNotificationsViewProps } from "./features/account/index";
986
979
  export type { UserOffer } from "./features/account/index";
987
980
  export type { UserOrder } from "./features/account/index";
988
981
  export type { UserOrderTrackViewLabels } from "./features/account/index";
@@ -990,8 +983,6 @@ export type { UserOrderTrackViewProps } from "./features/account/index";
990
983
  export type { UserOrdersViewProps } from "./features/account/index";
991
984
  export type { UserProfile } from "./features/account/index";
992
985
  export type { UserProfileStats } from "./features/account/index";
993
- export type { UserSettingsViewLabels } from "./features/account/index";
994
- export type { UserSettingsViewProps } from "./features/account/index";
995
986
  export { AccountRepository } from "./features/account/server";
996
987
  export { createAddressForUser } from "./features/account/server";
997
988
  export { deleteAddressForUser } from "./features/account/server";
@@ -1483,7 +1474,6 @@ export { CategoryCard } from "./features/categories/index";
1483
1474
  export { CategoryFilters } from "./features/categories/index";
1484
1475
  export { CategoryForm } from "./features/categories/index";
1485
1476
  export { CategoryGrid } from "./features/categories/index";
1486
- export { CategoryProductsView } from "./features/categories/index";
1487
1477
  export { CategoryProductsListing } from "./features/categories/index";
1488
1478
  export type { CategoryProductsListingProps } from "./features/categories/index";
1489
1479
  export { CategoriesIndexListing } from "./features/categories/index";
@@ -1539,7 +1529,6 @@ export type { CategoryGridProps } from "./features/categories/index";
1539
1529
  export type { CategoryItem } from "./features/categories/index";
1540
1530
  export type { CategoryMetrics } from "./features/categories/index";
1541
1531
  export type { CategoryMoveInput } from "./features/categories/index";
1542
- export type { CategoryProductsViewProps } from "./features/categories/index";
1543
1532
  export type { CategorySelectorCreateLabels } from "./features/categories/index";
1544
1533
  export type { CategorySelectorCreateProps } from "./features/categories/index";
1545
1534
  export type { CategorySeo } from "./features/categories/index";
@@ -1642,6 +1631,7 @@ export { AdminEventsView } from "./features/events/index";
1642
1631
  export { AdminEventEditorView } from "./features/events/index";
1643
1632
  export type { AdminEventEditorViewProps } from "./features/events/index";
1644
1633
  export { EVENTS_COLLECTION } from "./features/events/index";
1634
+ export { RAFFLE_MAX_ENTRIES_PER_USER } from "./_internal/shared/features/events/config";
1645
1635
  export { EVENT_ADMIN_SORT_OPTIONS } from "./features/events/index";
1646
1636
  export { EVENT_ENTRIES_COLLECTION } from "./features/events/index";
1647
1637
  export { LOTTERY_ENTRIES_COLLECTION } from "./features/lottery/schemas/firestore";
@@ -1882,7 +1872,6 @@ export { HeroCarousel } from "./features/homepage/index";
1882
1872
  export { HeroSection } from "./features/homepage/index";
1883
1873
  export { HomepageSkeleton } from "./features/homepage/index";
1884
1874
  export { HomepageView } from "./features/homepage/index";
1885
- export { HowItWorksInfoView } from "./features/homepage/index";
1886
1875
  export { HowItWorksSection } from "./features/homepage/index";
1887
1876
  export { NewsletterBanner } from "./features/homepage/index";
1888
1877
  export { NewsletterSection } from "./features/homepage/index";
@@ -1930,9 +1919,6 @@ export type { HomepageSection } from "./features/homepage/index";
1930
1919
  export type { HomepageSectionContent } from "./features/homepage/index";
1931
1920
  export type { HomepageViewProps } from "./features/homepage/index";
1932
1921
  export type { HotspotPin } from "./features/homepage/index";
1933
- export type { HowItWorksInfoDetail } from "./features/homepage/index";
1934
- export type { HowItWorksInfoStep } from "./features/homepage/index";
1935
- export type { HowItWorksInfoViewProps } from "./features/homepage/index";
1936
1922
  export type { HowItWorksSectionProps } from "./features/homepage/index";
1937
1923
  export type { HowItWorksStep } from "./features/homepage/index";
1938
1924
  export type { NewsletterBannerProps } from "./features/homepage/index";
@@ -1995,6 +1981,8 @@ export { AppLayoutShell } from "./features/layout/index";
1995
1981
  export { AutoBreadcrumbs } from "./features/layout/index";
1996
1982
  export { BackToTop } from "./features/layout/index";
1997
1983
  export { BottomActions } from "./features/layout/index";
1984
+ export { SideActionDock } from "./features/layout/index";
1985
+ export { ctaAnchorProps, CTA_ANCHOR_ATTR } from "./features/layout/index";
1998
1986
  export { BottomActionsProvider } from "./features/layout/index";
1999
1987
  export { BottomNavItem } from "./features/layout/index";
2000
1988
  export { BottomNavLayout } from "./features/layout/index";
@@ -2341,7 +2329,6 @@ export { ProductGrid } from "./features/products/index";
2341
2329
  export { ProductInfo } from "./features/products/index";
2342
2330
  export { ProductStatusValues } from "./features/products/index";
2343
2331
  export { ProductTabs } from "./features/products/index";
2344
- export { ProductsView } from "./features/products/index";
2345
2332
  export { RelatedProducts } from "./features/products/index";
2346
2333
  export { buildProductColumns } from "./features/products/index";
2347
2334
  export { createAuctionId } from "./features/products/index";
@@ -2352,7 +2339,7 @@ export { getProductSortOptions } from "./features/products/index";
2352
2339
  export { getProductTableColumns } from "./features/products/index";
2353
2340
  export { normalizeListingType, isAuctionListing, isPreOrderListing, isStandardListing, isPrizeDrawListing, isClassifiedListing, isDigitalCodeListing, isLiveListing, isArtListing, isStickersListing, } from "./features/products/index";
2354
2341
  export { isFinalSale, acceptsChangeOfMindReturns, } from "./features/products/constants/final-sale";
2355
- export { isListingTypeEnabled, isCategoryTypeEnabled, enabledListingTypes, enabledCategoryTypes, ALL_LISTING_TYPES, } from "./_internal/shared/listing-types/feature-flags";
2342
+ export { isListingTypeEnabled, isCategoryTypeEnabled, enabledListingTypes, enabledCategoryTypes, ALL_LISTING_TYPES, isListingType, } from "./_internal/shared/listing-types/feature-flags";
2356
2343
  export { actionTracker, setActionTrackerSink, resetActionTrackerSink, type ActionEvent, type ActionTrackerSink, } from "./_internal/shared/listing-types/action-tracker";
2357
2344
  export { cartRequiresShipping, cartIsDigitalOnly, cartIsChatOnly, } from "./_internal/shared/listing-types/cart-shipping";
2358
2345
  export { ACTIONS, action, act, canPerformAction, actionsForListingType, actionLabel, type ActionDef, type ActionKind, type ActionResource, type ActionTree, type ActionConfirmation, } from "./_internal/shared/actions/action-registry";
@@ -2414,7 +2401,6 @@ export type { ProductTableColumnsConfig } from "./features/products/index";
2414
2401
  export type { ProductTabsProps } from "./features/products/index";
2415
2402
  export type { ProductUpdateInput } from "./features/products/index";
2416
2403
  export type { ProductVideoField } from "./features/products/index";
2417
- export type { ProductsViewProps } from "./features/products/index";
2418
2404
  export type { RelatedProductsProps } from "./features/products/index";
2419
2405
  export { getFeaturedAuctions } from "./features/products/server";
2420
2406
  export { getFeaturedPreOrders } from "./features/products/server";
@@ -2579,6 +2565,8 @@ export { searchQuerySchema } from "./features/search/index";
2579
2565
  export { searchResultAdminColumns } from "./features/search/index";
2580
2566
  export { useNavSuggestions } from "./features/search/index";
2581
2567
  export { useSearch } from "./features/search/index";
2568
+ export { useSearchIndex, ensureSearchIndex } from "./features/search/hooks/useSearchIndex";
2569
+ export type { SearchIndexState, SearchIndexStatus, LoadedSearchIndex, UseSearchIndexOptions, } from "./features/search/hooks/useSearchIndex";
2582
2570
  export type { NavSuggestionRecord } from "./features/search/index";
2583
2571
  export type { SearchCategoryOption } from "./features/search/index";
2584
2572
  export type { SearchLabels } from "./features/search/index";
@@ -2632,7 +2620,6 @@ export { SellerProductsView } from "./features/seller/index";
2632
2620
  export { SellerRevenueChart } from "./features/seller/index";
2633
2621
  export { SellerShippingView } from "./features/seller/index";
2634
2622
  export { SellerStoreSetupView } from "./features/seller/index";
2635
- export { SellerStoreView } from "./features/seller/index";
2636
2623
  export { SellerStorefrontView } from "./features/seller/index";
2637
2624
  export { SellerTopProducts } from "./features/seller/index";
2638
2625
  export { SellersListView } from "./features/seller/index";
@@ -2648,7 +2635,6 @@ export { SellerPayoutSettingsView as StorePayoutSettingsView } from "./features/
2648
2635
  export { SellerPayoutsView as StorePayoutsView } from "./features/seller/index";
2649
2636
  export { SellerProductsView as StoreProductListingsView } from "./features/seller/index";
2650
2637
  export { SellerShippingView as StoreShippingView } from "./features/seller/index";
2651
- export { SellerStorefrontView as StoreStorefrontView } from "./features/seller/index";
2652
2638
  export { buildPayoutColumns } from "./features/seller/index";
2653
2639
  export { buildSellerColumns } from "./features/seller/index";
2654
2640
  export { createOfferId } from "./features/seller/index";
@@ -2705,7 +2691,6 @@ export type { SellerRevenueDataPoint } from "./features/seller/index";
2705
2691
  export type { SellerShippingViewProps } from "./features/seller/index";
2706
2692
  export type { SellerStore } from "./features/seller/index";
2707
2693
  export type { SellerStoreSetupViewProps } from "./features/seller/index";
2708
- export type { SellerStoreViewProps } from "./features/seller/index";
2709
2694
  export type { SellerStorefrontViewProps, StorefrontDraft } from "./features/seller/index";
2710
2695
  export type { SellerTopProductsLabels } from "./features/seller/index";
2711
2696
  export type { SellerTopProductsProps } from "./features/seller/index";
@@ -2721,7 +2706,6 @@ export type { SellerPayoutSettingsViewProps as StorePayoutSettingsViewProps } fr
2721
2706
  export type { SellerPayoutsViewProps as StorePayoutsViewProps } from "./features/seller/index";
2722
2707
  export type { SellerProductsViewProps as StoreProductListingsViewProps } from "./features/seller/index";
2723
2708
  export type { SellerShippingViewProps as StoreShippingViewProps } from "./features/seller/index";
2724
- export type { SellerStorefrontViewProps as StoreStorefrontViewProps } from "./features/seller/index";
2725
2709
  export type { StoreStatus } from "./features/seller/index";
2726
2710
  export type { UpdateSellerStoreInput } from "./features/seller/index";
2727
2711
  export type { UseBecomeSellerOptions } from "./features/seller/index";
@@ -2978,6 +2962,8 @@ export { CardBody, MenuTrigger, MenuContent, MenuSeparator, RoleBadge, SkipToMai
2978
2962
  export { Tabs, TabsList, TabsTrigger, TabsContent, PasswordStrengthIndicator, TablePagination } from "./ui/index";
2979
2963
  export { TabBarShell, TabBarButton, TabsNavSelect } from "./ui/index";
2980
2964
  export type { TabBarShellProps, TabBarButtonProps, TabsNavSelectProps } from "./ui/index";
2965
+ export { OverflowRow } from "./ui/index";
2966
+ export type { OverflowRowProps, OverflowRowItem, OverflowRowDotTone, OverflowRowLinkProps } from "./ui/index";
2981
2967
  export { Stack, classNames, mergeTailwindClasses, SideModal, SideDrawer, RichText, RichTextRenderer } from "./ui/index";
2982
2968
  export type { RichTextRendererProps } from "./ui/index";
2983
2969
  export { SlottedListingView, DetailViewShell, StackedViewShell } from "./ui/index";
@@ -2992,7 +2978,7 @@ export { WishlistFullError } from "./features/wishlist/server";
2992
2978
  export { useHistory, useHistoryMergeOnLogin, getGuestHistory, trackGuestHistory, removeGuestHistoryItem, clearGuestHistory, getGuestHistoryCount, type GuestHistoryItem, type GuestHistoryType, type UserHistoryItem, type HistoryProductType, type HistoryItemSnapshot, type TrackArgs as TrackHistoryArgs, } from "./features/history";
2993
2979
  export { historyRepository, UserHistoryRepository, trackHistoryView, getHistoryForUser, removeHistoryItem, clearHistory, mergeGuestHistory, } from "./features/history/server";
2994
2980
  export { useMediaQuery, useBreakpoint, useClickOutside, useKeyPress, useLongPress, useGesture, useSwipe, useSession, useAuth, useCountdown, useCamera, useBulkSelection, useUrlTable, usePendingFilters, usePendingTable, useUnsavedChanges, UNSAVED_CHANGES_EVENT, useBulkAction, useEntityDelete, useContainerGrid, useMessage, useModalStack, RTDBPayloadStatus, } from "./react/index";
2995
- export { RoleGate, ProtectedRoute, SocialAuthButtons, AuthStatusPanel, LoginForm, RegisterForm, ForgotPasswordView, ResetPasswordView, VerifyEmailView, OAuthLoadingView, } from "./features/auth/index";
2981
+ export { RoleGate, ProtectedRoute, SocialAuthButtons, LoginForm, RegisterForm, ForgotPasswordView, ResetPasswordView, VerifyEmailView, OAuthLoadingView } from "./features/auth/index";
2996
2982
  export type { RoleGateProps, ProtectedRouteProps, AuthGuardUser, AuthRouteConfig, LoginFormProps, LoginFormValues, RegisterFormProps, RegisterFormValues, ForgotPasswordViewProps, ResetPasswordViewProps, VerifyEmailViewProps, } from "./features/auth/index";
2997
2983
  export { CartItemRow, CartDrawer, CartView, CartSummary, ShippingPicker } from "./features/cart/index";
2998
2984
  export type { ShippingPickerProps } from "./features/cart/index";
@@ -3059,6 +3045,7 @@ export { navItemFormSchema, navItemCreateSchema, navItemUpdateSchema, type NavIt
3059
3045
  export { groupedListingFormSchema, groupedListingCreateSchema, groupedListingUpdateSchema, type GroupedListingFormValues, } from "./features/grouped/schemas/grouped-listing-form";
3060
3046
  export { scammersSeedData } from "./seed/index";
3061
3047
  export { productFeaturesSeedData } from "./seed/index";
3048
+ export { authenticityKnowledgeSeedData, AUTHENTICITY_KNOWLEDGE_COLLECTION, AUTHENTICITY_KNOWLEDGE_COUNT, } from "./seed/index";
3062
3049
  export { taxCodesSeedData } from "./seed/index";
3063
3050
  export { PART_GLOSSARY_COLLECTION, MODEL_COMPOSITION_COLLECTION, PART_SLOT_VALUES, PART_SLOT_LABEL, ALL_PART_SLOTS, LISTING_TYPE_HAS_COMPOSITION, partSlotFromSegment, partGlossaryId, } from "./features/parts/schemas/firestore";
3064
3051
  export type { PartGlossaryDocument, ModelCompositionDocument, ModelSlot, ModelSlotMerge, PartSlot, } from "./features/parts/schemas/firestore";
package/dist/index.js CHANGED
@@ -1875,11 +1875,7 @@ export { ProfileView } from "./features/account/index.js";
1875
1875
  // UserAccountHubView - Component for user account hub view.
1876
1876
  export { UserAccountHubView } from "./features/account/index.js";
1877
1877
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
1878
- // UserAddressesView - Component for user addresses view.
1879
- export { UserAddressesView } from "./features/account/index.js";
1880
1878
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
1881
- // UserNotificationsView - Component for user notifications view.
1882
- export { UserNotificationsView } from "./features/account/index.js";
1883
1879
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
1884
1880
  // [CLIENT]-Runs in browser only â€" interactive buyer offers panel with accept/withdraw actions.
1885
1881
  // UserOffersPanel - Interactive buyer offers panel.
@@ -1891,8 +1887,6 @@ export { UserOrderTrackView } from "./features/account/index.js";
1891
1887
  // UserOrdersView - Component for user orders view.
1892
1888
  export { UserOrdersView } from "./features/account/index.js";
1893
1889
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
1894
- // UserSettingsView - Component for user settings view.
1895
- export { UserSettingsView } from "./features/account/index.js";
1896
1890
  // [CLIENT-SSR]-Runs in both SSR and browser — React component that lets users manage their notification channel and type preferences.
1897
1891
  // NotificationPreferencesPanel - Panel for user notification preferences.
1898
1892
  export { NotificationPreferencesPanel } from "./features/account/index.js";
@@ -1952,6 +1946,10 @@ export { useUpdateProfile } from "./features/account/index.js";
1952
1946
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
1953
1947
  // userProfileSchema - Model for user profile schema.
1954
1948
  export { userProfileSchema } from "./features/account/index.js";
1949
+ // [TYPE]-TypeScript type-only export â€" erased at compile time, zero runtime cost.
1950
+ // UserSettingsViewLabels - Type contract for user settings view labels.
1951
+ // [TYPE]-TypeScript type-only export â€" erased at compile time, zero runtime cost.
1952
+ // UserSettingsViewProps - Type contract for user settings view props.
1955
1953
  // ./features/account/server
1956
1954
  // [DB]-Database layer â€" uses firebase-admin or another server-side DB SDK; can only run in a trusted server environment.
1957
1955
  // AccountRepository - Shared export for account repository.
@@ -2194,7 +2192,6 @@ export { DEFAULT_TRUST_BAR_ITEMS } from "./features/admin/index.js";
2194
2192
  // DashboardStatsGrid - Component for dashboard stats grid.
2195
2193
  export { DashboardStatsGrid } from "./features/admin/index.js";
2196
2194
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
2197
- // DemoSeedView — removed from main barrel (dev-only, load via dynamic import)
2198
2195
  // AdminTeamView - Employee management list view.
2199
2196
  export { AdminTeamView } from "./features/admin/index.js";
2200
2197
  // AdminEmployeeEditorView - Invite/edit employee permissions SideDrawer.
@@ -2874,8 +2871,6 @@ export { CategoryForm } from "./features/categories/index.js";
2874
2871
  // CategoryGrid - Component for category grid.
2875
2872
  export { CategoryGrid } from "./features/categories/index.js";
2876
2873
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
2877
- // CategoryProductsView - Component for category products view.
2878
- export { CategoryProductsView } from "./features/categories/index.js";
2879
2874
  // CategoryProductsListing - Client toolbar listing for category detail pages.
2880
2875
  export { CategoryProductsListing } from "./features/categories/index.js";
2881
2876
  export { CategoriesIndexListing } from "./features/categories/index.js";
@@ -3174,6 +3169,15 @@ export { AdminEventEditorView } from "./features/events/index.js";
3174
3169
  // [SCHEMA]-Schema / data-shape constant â€" Zod validator, default-value object, or Firestore collection/field name constant.
3175
3170
  // EVENTS_COLLECTION - Constant used across modules.
3176
3171
  export { EVENTS_COLLECTION } from "./features/events/index.js";
3172
+ /*
3173
+ * [SHARED] RAFFLE_MAX_ENTRIES_PER_USER — one entry per person in a raffle.
3174
+ *
3175
+ * Public because the consumer's participate page must hand the SAME number to
3176
+ * `EventRaffleEntryForm` that `enterEvent` enforces server-side. Two mirrored
3177
+ * literals is the shape that caused the bug: the form already said "you've
3178
+ * used all 1 entry slot" while the server enforced nothing at all.
3179
+ */
3180
+ export { RAFFLE_MAX_ENTRIES_PER_USER } from "./_internal/shared/features/events/config.js";
3177
3181
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
3178
3182
  // EVENT_ADMIN_SORT_OPTIONS - Constant used across modules.
3179
3183
  export { EVENT_ADMIN_SORT_OPTIONS } from "./features/events/index.js";
@@ -3593,8 +3597,6 @@ export { HomepageSkeleton } from "./features/homepage/index.js";
3593
3597
  // HomepageView - Component for homepage view.
3594
3598
  export { HomepageView } from "./features/homepage/index.js";
3595
3599
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
3596
- // HowItWorksInfoView - Component for how it works info view.
3597
- export { HowItWorksInfoView } from "./features/homepage/index.js";
3598
3600
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
3599
3601
  // HowItWorksSection - Shared export for how it works section.
3600
3602
  export { HowItWorksSection } from "./features/homepage/index.js";
@@ -3760,8 +3762,13 @@ export { AutoBreadcrumbs } from "./features/layout/index.js";
3760
3762
  // BackToTop - Shared export for back to top.
3761
3763
  export { BackToTop } from "./features/layout/index.js";
3762
3764
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
3763
- // BottomActions - Shared export for bottom actions.
3765
+ // BottomActions - Shared export for bottom actions. @deprecated — alias of SideActionDock.
3764
3766
  export { BottomActions } from "./features/layout/index.js";
3767
+ // [CLIENT-SSR]-Runs in both SSR and browser — React component or hook that does not depend on browser-only APIs.
3768
+ // SideActionDock - The floating action dock that replaced the bottom action bar.
3769
+ export { SideActionDock } from "./features/layout/index.js";
3770
+ // [SHARED]-Pure helper — marks a page's inline primary CTA so the dock reveals only after it scrolls out of view.
3771
+ export { ctaAnchorProps, CTA_ANCHOR_ATTR } from "./features/layout/index.js";
3765
3772
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
3766
3773
  // BottomActionsProvider - Component for bottom actions provider.
3767
3774
  export { BottomActionsProvider } from "./features/layout/index.js";
@@ -4302,8 +4309,6 @@ export { ProductTabs } from "./features/products/index.js";
4302
4309
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
4303
4310
  // ProductsIndexPageView - Component for products index page view.
4304
4311
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
4305
- // ProductsView - Component for products view.
4306
- export { ProductsView } from "./features/products/index.js";
4307
4312
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
4308
4313
  // RelatedProducts - Shared export for related products.
4309
4314
  export { RelatedProducts } from "./features/products/index.js";
@@ -4336,7 +4341,7 @@ export { normalizeListingType, isAuctionListing, isPreOrderListing, isStandardLi
4336
4341
  // `finalSale` field. See the module docstring for why `!p.finalSale` is wrong.
4337
4342
  export { isFinalSale, acceptsChangeOfMindReturns, } from "./features/products/constants/final-sale.js";
4338
4343
  // SB-UNI-X4 2026-05-13 â€" per-type feature-flag helpers.
4339
- export { isListingTypeEnabled, isCategoryTypeEnabled, enabledListingTypes, enabledCategoryTypes, ALL_LISTING_TYPES, } from "./_internal/shared/listing-types/feature-flags.js";
4344
+ export { isListingTypeEnabled, isCategoryTypeEnabled, enabledListingTypes, enabledCategoryTypes, ALL_LISTING_TYPES, isListingType, } from "./_internal/shared/listing-types/feature-flags.js";
4340
4345
  // SB-UNI-X5 2026-05-13 â€" action telemetry sink.
4341
4346
  export { actionTracker, setActionTrackerSink, resetActionTrackerSink, } from "./_internal/shared/listing-types/action-tracker.js";
4342
4347
  // SB-UNI-S 2026-05-13 â€" cart-level shipping-requirement helpers.
@@ -4733,6 +4738,9 @@ export { useNavSuggestions } from "./features/search/index.js";
4733
4738
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
4734
4739
  // useSearch - React hook for use search.
4735
4740
  export { useSearch } from "./features/search/index.js";
4741
+ // [CLIENT]-Browser only. Fetches the public search artifact once per page session.
4742
+ // Exported from the defining module, not the feature barrel — see client.ts.
4743
+ export { useSearchIndex, ensureSearchIndex } from "./features/search/hooks/useSearchIndex.js";
4736
4744
  // ./features/search/server
4737
4745
  // [DB]-Database layer â€" uses firebase-admin or another server-side DB SDK; can only run in a trusted server environment.
4738
4746
  // SearchRepository - Shared export for search repository.
@@ -4832,8 +4840,6 @@ export { SellerShippingView } from "./features/seller/index.js";
4832
4840
  // SellerStoreSetupView - Component for seller store setup view.
4833
4841
  export { SellerStoreSetupView } from "./features/seller/index.js";
4834
4842
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
4835
- // SellerStoreView - Component for seller store view.
4836
- export { SellerStoreView } from "./features/seller/index.js";
4837
4843
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
4838
4844
  // SellerStorefrontView - Component for seller storefront view.
4839
4845
  export { SellerStorefrontView } from "./features/seller/index.js";
@@ -4869,7 +4875,6 @@ export { SellerProductsView as StoreProductListingsView } from "./features/selle
4869
4875
  // StoreShippingView - Alias for SellerShippingView.
4870
4876
  export { SellerShippingView as StoreShippingView } from "./features/seller/index.js";
4871
4877
  // StoreStorefrontView - Alias for SellerStorefrontView.
4872
- export { SellerStorefrontView as StoreStorefrontView } from "./features/seller/index.js";
4873
4878
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
4874
4879
  // buildPayoutColumns - Helper for build payout columns.
4875
4880
  export { buildPayoutColumns } from "./features/seller/index.js";
@@ -5349,6 +5354,8 @@ export { CardBody, MenuTrigger, MenuContent, MenuSeparator, RoleBadge, SkipToMai
5349
5354
  export { Tabs, TabsList, TabsTrigger, TabsContent, PasswordStrengthIndicator, TablePagination } from "./ui/index.js";
5350
5355
  // TabBarShell - rail + overflow scroll arrows around a role="tablist"; TabBarButton / TabsNavSelect - its two trigger flavours
5351
5356
  export { TabBarShell, TabBarButton, TabsNavSelect } from "./ui/index.js";
5357
+ // OverflowRow - pill/tab row that collapses into a searchable dropdown when it measures wider than its container
5358
+ export { OverflowRow } from "./ui/index.js";
5352
5359
  export { Stack, classNames, mergeTailwindClasses, SideModal, SideDrawer, RichText, RichTextRenderer } from "./ui/index.js";
5353
5360
  export { SlottedListingView, DetailViewShell, StackedViewShell } from "./ui/index.js";
5354
5361
  export { buildColumns, createColumnBuilder } from "./ui/index.js";
@@ -5367,7 +5374,7 @@ export { historyRepository, UserHistoryRepository, trackHistoryView, getHistoryF
5367
5374
  export { useMediaQuery, useBreakpoint, useClickOutside, useKeyPress, useLongPress, useGesture, useSwipe, useSession, useAuth, useCountdown, useCamera, useBulkSelection, useUrlTable, usePendingFilters, usePendingTable, useUnsavedChanges, UNSAVED_CHANGES_EVENT, useBulkAction, useEntityDelete, useContainerGrid, useMessage, useModalStack, RTDBPayloadStatus, } from "./react/index.js";
5368
5375
  // Missing core types (already exported above; skipped to avoid duplicates)
5369
5376
  // Missing auth feature components
5370
- export { RoleGate, ProtectedRoute, SocialAuthButtons, AuthStatusPanel, LoginForm, RegisterForm, ForgotPasswordView, ResetPasswordView, VerifyEmailView, OAuthLoadingView, } from "./features/auth/index.js";
5377
+ export { RoleGate, ProtectedRoute, SocialAuthButtons, LoginForm, RegisterForm, ForgotPasswordView, ResetPasswordView, VerifyEmailView, OAuthLoadingView } from "./features/auth/index.js";
5371
5378
  // Missing cart and checkout feature components
5372
5379
  export { CartItemRow, CartDrawer, CartView, CartSummary, ShippingPicker } from "./features/cart/index.js";
5373
5380
  export { CheckoutView, CheckoutAddressStep, CheckoutSuccessView } from "./features/cart/index.js";
@@ -5454,6 +5461,7 @@ export { groupedListingFormSchema, groupedListingCreateSchema, groupedListingUpd
5454
5461
  export { scammersSeedData } from "./seed/index.js";
5455
5462
  // Product features â€" seed data (FI2)
5456
5463
  export { productFeaturesSeedData } from "./seed/index.js";
5464
+ export { authenticityKnowledgeSeedData, AUTHENTICITY_KNOWLEDGE_COLLECTION, AUTHENTICITY_KNOWLEDGE_COUNT, } from "./seed/index.js";
5457
5465
  /*
5458
5466
  * 🛑 Registering a seed collection takes FOUR edits and three of them are
5459
5467
  * silent if missed: seed/index.ts, THIS re-export, and seed-cli's own import
@@ -116,6 +116,15 @@ function shouldPersist(mapped) {
116
116
  function resolveBodySchema(schema) {
117
117
  if (typeof schema !== "string")
118
118
  return schema;
119
+ /*
120
+ * `SCHEMAS.api` is empty by design (see its own comment in registry.ts):
121
+ * the key form had 6 registered keys and ZERO routes passing one, so the
122
+ * lookup is kept for the contract while `RegisteredApiRouteKey` narrows to
123
+ * `never`. The cast is what lets an indexed read of an empty literal type
124
+ * compile; the `!entry` branch below is the whole behaviour — a key string
125
+ * resolves to nothing and `createRouteHandler` throws "Route schema not
126
+ * registered", which is the correct answer for a key nobody registered.
127
+ */
119
128
  const entry = SCHEMAS.api[schema];
120
129
  if (!entry || !("body" in entry) || !entry.body)
121
130
  return null;
@@ -0,0 +1,13 @@
1
+ export interface RequireRecordOptions {
2
+ /** `route` field on the persisted degraded-read entry, e.g. "/admin/events/[id]/edit". */
3
+ route: string;
4
+ /** Stable identifier for the read site, e.g. "events.findById". */
5
+ key: string;
6
+ }
7
+ /**
8
+ * Calls `notFound()` when `read()` resolves to `null` / `undefined`.
9
+ *
10
+ * Returns the record when it exists, so a caller that already needs the
11
+ * document does not pay for a second read.
12
+ */
13
+ export declare function requireRecord<T>(read: () => Promise<T | null | undefined>, opts: RequireRecordOptions): Promise<T | null>;
@@ -0,0 +1,62 @@
1
+ import { notFound } from "next/navigation.js";
2
+ import { safeRead } from "../../errors/safe-read.js";
3
+ /**
4
+ * 404 a dynamic detail page whose record does not exist.
5
+ *
6
+ * ## The defect this closes
7
+ *
8
+ * `/admin/coupons/zzzznope-not-a-coupon-42/edit` rendered a fully editable
9
+ * coupon form — twelve inputs, "Save changes", "Delete coupon" — because its
10
+ * `page.tsx` was a bare shim that passed the id straight to an editor. The
11
+ * sibling `/admin/orders/[id]/view` fetched server-side and 404'd correctly;
12
+ * the two differed only because one never grew the check. `audit-admin-detail-notfound`
13
+ * found **fourteen** more, and the danger is Root Cause #98's: the form looks
14
+ * ready to save, and what it saves is a record keyed on an id nobody meant to
15
+ * create.
16
+ *
17
+ * ## 🛑 A FAILED read is not an ABSENT record
18
+ *
19
+ * This is the whole subtlety, and it is why the helper exists rather than each
20
+ * page writing `if (!(await repo.findById(id))) notFound()`.
21
+ *
22
+ * Dashboard pages sit under a layout that `await`s the session, so Next still
23
+ * ATTEMPTS to prerender them and an unguarded throw there is **fatal to the
24
+ * build** (§ "a dynamic API in a DASHBOARD layout is the correct lever"). The
25
+ * read therefore has to go through `safeRead`. But `safeRead` returns its
26
+ * fallback on failure — so a naive `fallback: null` would turn a transient
27
+ * Firestore error, a missing composite index, or a quota exception into a
28
+ * **404 on a record that exists**. That is strictly worse than the bug being
29
+ * fixed: the admin is told their data is gone.
30
+ *
31
+ * So failure and absence are separated by a sentinel. `notFound()` fires ONLY
32
+ * when the read succeeded and returned nothing. When the read fails the page
33
+ * renders, the degradation is recorded as a `DEGRADED_READ` row by `safeRead`
34
+ * itself, and the editor's own fetch surfaces whatever is really wrong.
35
+ *
36
+ * ## Cost
37
+ *
38
+ * One document read, on a route that is per-request anyway. Well inside Rule
39
+ * #6's ~3-round-trip budget, and the editor's client fetch is unchanged — this
40
+ * does not replace it, because the editor is also reachable from a drawer.
41
+ */
42
+ /** Distinguishes "the read threw" from "the record is absent". */
43
+ const READ_FAILED = Symbol("read-failed");
44
+ /**
45
+ * Calls `notFound()` when `read()` resolves to `null` / `undefined`.
46
+ *
47
+ * Returns the record when it exists, so a caller that already needs the
48
+ * document does not pay for a second read.
49
+ */
50
+ export async function requireRecord(read, opts) {
51
+ const result = await safeRead(read, {
52
+ route: opts.route,
53
+ key: opts.key,
54
+ fallback: READ_FAILED,
55
+ });
56
+ // The read itself broke. Render the page; `safeRead` has already recorded it.
57
+ if (result === READ_FAILED)
58
+ return null;
59
+ if (result === null || result === undefined)
60
+ notFound();
61
+ return result;
62
+ }
@@ -63,7 +63,6 @@ export declare const DEFAULT_ROUTE_MAP: {
63
63
  readonly ABOUT: "/about";
64
64
  readonly DEVELOPER: "/developer";
65
65
  readonly CONTACT: "/contact";
66
- readonly BLOG: "/blog";
67
66
  readonly HELP: "/help";
68
67
  readonly HELP_SHOPPING: "/help/shopping";
69
68
  readonly HELP_AUCTIONS: "/help/auctions";
@@ -100,7 +99,6 @@ export declare const DEFAULT_ROUTE_MAP: {
100
99
  readonly EVENT_SPIN_RESULTS: (id: string) => string;
101
100
  readonly LOTTERIES: "/lottery";
102
101
  readonly LOTTERY_DETAIL: (id: string) => string;
103
- readonly SUBLISTING_CATEGORIES: "/sublisting-categories";
104
102
  readonly SUBLISTING_CATEGORY: (slug: string) => string;
105
103
  readonly SUPPORT: "/support";
106
104
  readonly SCAMS: "/scams";
@@ -112,6 +110,8 @@ export declare const DEFAULT_ROUTE_MAP: {
112
110
  readonly ITEM_REQUESTS_NEW: "/item-requests/new";
113
111
  readonly TOOLS: "/tools";
114
112
  readonly TOOL_PRICE_INDEX: "/tools/price-index";
113
+ readonly TOOL_STICKER_TRACER: "/tools/sticker-tracer";
114
+ readonly TOOL_STICKER_SHEET: (sheetId: string) => string;
115
115
  readonly PARTS: "/parts";
116
116
  readonly PART_CLASSIFICATION: (classification: string) => string;
117
117
  readonly PART_DETAIL: (classification: string, code: string) => string;
@@ -479,7 +479,6 @@ export declare const ROUTES: {
479
479
  readonly ABOUT: "/about";
480
480
  readonly DEVELOPER: "/developer";
481
481
  readonly CONTACT: "/contact";
482
- readonly BLOG: "/blog";
483
482
  readonly HELP: "/help";
484
483
  readonly HELP_SHOPPING: "/help/shopping";
485
484
  readonly HELP_AUCTIONS: "/help/auctions";
@@ -516,7 +515,6 @@ export declare const ROUTES: {
516
515
  readonly EVENT_SPIN_RESULTS: (id: string) => string;
517
516
  readonly LOTTERIES: "/lottery";
518
517
  readonly LOTTERY_DETAIL: (id: string) => string;
519
- readonly SUBLISTING_CATEGORIES: "/sublisting-categories";
520
518
  readonly SUBLISTING_CATEGORY: (slug: string) => string;
521
519
  readonly SUPPORT: "/support";
522
520
  readonly SCAMS: "/scams";
@@ -528,6 +526,8 @@ export declare const ROUTES: {
528
526
  readonly ITEM_REQUESTS_NEW: "/item-requests/new";
529
527
  readonly TOOLS: "/tools";
530
528
  readonly TOOL_PRICE_INDEX: "/tools/price-index";
529
+ readonly TOOL_STICKER_TRACER: "/tools/sticker-tracer";
530
+ readonly TOOL_STICKER_SHEET: (sheetId: string) => string;
531
531
  readonly PARTS: "/parts";
532
532
  readonly PART_CLASSIFICATION: (classification: string) => string;
533
533
  readonly PART_DETAIL: (classification: string, code: string) => string;
@@ -63,7 +63,14 @@ export const DEFAULT_ROUTE_MAP = {
63
63
  ABOUT: "/about",
64
64
  DEVELOPER: "/developer",
65
65
  CONTACT: "/contact",
66
- BLOG: "/blog",
66
+ /*
67
+ * 🛑 No `PUBLIC.BLOG`. `BLOG.LIST` is the one key for "/blog", and it sits
68
+ * beside `BLOG.ARTICLE` — which is the ONLY blog detail key, so `BLOG` was
69
+ * always the canonical section and `PUBLIC.BLOG` was an alias of its index.
70
+ * Two keys for one path is Root Cause #61's family: the duplicate was
71
+ * reported by `audit-dead-route-key` on every run, and nine call sites had
72
+ * drifted onto the alias while one used the real key.
73
+ */
67
74
  HELP: "/help",
68
75
  HELP_SHOPPING: "/help/shopping",
69
76
  HELP_AUCTIONS: "/help/auctions",
@@ -119,7 +126,14 @@ export const DEFAULT_ROUTE_MAP = {
119
126
  EVENT_SPIN_RESULTS: (id) => `/events/${id}/spin-results`,
120
127
  LOTTERIES: "/lottery",
121
128
  LOTTERY_DETAIL: (id) => `/lottery/${id}`,
122
- SUBLISTING_CATEGORIES: "/sublisting-categories",
129
+ /*
130
+ * 🛑 There is deliberately NO public `SUBLISTING_CATEGORIES` index key.
131
+ * `src/app/[locale]/sublisting-categories/` holds only `[slug]/`, so the
132
+ * index has never existed; the key promised a route with no page behind
133
+ * it, had zero references anywhere, and `audit-dead-route-key` carried it
134
+ * as its one grandfathered entry. A sub-listing is reached from the
135
+ * category or product it belongs to, not from a top-level list.
136
+ */
123
137
  SUBLISTING_CATEGORY: (slug) => `/sublisting-categories/${slug}`,
124
138
  SUPPORT: "/support",
125
139
  SCAMS: "/scams",
@@ -138,6 +152,14 @@ export const DEFAULT_ROUTE_MAP = {
138
152
  */
139
153
  TOOLS: "/tools",
140
154
  TOOL_PRICE_INDEX: "/tools/price-index",
155
+ /*
156
+ * Admin-only, and under a PUBLIC prefix on purpose — it is a tool, and
157
+ * /tools is where tools live. The guard is the layout, not the path: a
158
+ * non-admin is redirected server-side before any HTML is produced, so
159
+ * there is nothing indexable at this URL regardless of robots.txt.
160
+ */
161
+ TOOL_STICKER_TRACER: "/tools/sticker-tracer",
162
+ TOOL_STICKER_SHEET: (sheetId) => `/tools/sticker-tracer/${sheetId}`,
141
163
  /*
142
164
  * The PARTS database. A reference surface, so it lives beside the other
143
165
  * two things that answer a question rather than sell you something.
@@ -552,7 +574,7 @@ export const PUBLIC_ROUTES = [
552
574
  ROUTES.PUBLIC.PROMOTIONS,
553
575
  ROUTES.PUBLIC.ABOUT,
554
576
  ROUTES.PUBLIC.CONTACT,
555
- ROUTES.PUBLIC.BLOG,
577
+ ROUTES.BLOG.LIST,
556
578
  ROUTES.PUBLIC.HELP,
557
579
  ROUTES.PUBLIC.TERMS,
558
580
  ROUTES.PUBLIC.PRIVACY,
@@ -19,6 +19,7 @@
19
19
  */
20
20
  import type { CollectionReference, DocumentData, DocumentSnapshot, Firestore } from "firebase-admin/firestore";
21
21
  import type { IRepository, PagedResult, SieveQuery, WhereOp } from "../../contracts";
22
+ import type { Plaintext } from "../../security/encrypted";
22
23
  export declare class FirebaseRepository<T extends DocumentData> implements IRepository<T> {
23
24
  protected readonly collection: string;
24
25
  constructor(collectionName: string);
@@ -29,8 +30,9 @@ export declare class FirebaseRepository<T extends DocumentData> implements IRepo
29
30
  findById(id: string): Promise<T | null>;
30
31
  findAll(query?: SieveQuery): Promise<PagedResult<T>>;
31
32
  findWhere(field: keyof T, op: WhereOp, value: unknown): Promise<T[]>;
32
- create(data: Omit<T, "id" | "createdAt" | "updatedAt">): Promise<T>;
33
- update(id: string, data: Partial<T>): Promise<T>;
33
+ create(data: Omit<Plaintext<T>, "id" | "createdAt" | "updatedAt">): Promise<T>;
34
+ /** Accepts the PLAINTEXT shape — see `create` for why. */
35
+ update(id: string, data: Partial<Plaintext<T>>): Promise<T>;
34
36
  delete(id: string): Promise<void>;
35
37
  batchCreate(items: Array<Omit<T, "id" | "createdAt" | "updatedAt">>): Promise<T[]>;
36
38
  batchDelete(ids: string[]): Promise<void>;
@@ -46,7 +46,7 @@ export class FirebaseRepository {
46
46
  }
47
47
  async findAll(query) {
48
48
  const page = Math.max(1, query?.page ?? 1);
49
- const perPage = Math.max(1, Math.min(query?.perPage ?? 20, 500));
49
+ const pageSize = Math.max(1, Math.min(query?.pageSize ?? 20, 500));
50
50
  let q = this.getCollection();
51
51
  // -- Sort ------------------------------------------------------------------
52
52
  // SieveQuery.sort supports a leading "-" prefix for descending order
@@ -89,11 +89,11 @@ export class FirebaseRepository {
89
89
  // -- Count -----------------------------------------------------------------
90
90
  const total = await getFirestoreCount(q);
91
91
  // -- Paginate --------------------------------------------------------------
92
- const offset = (page - 1) * perPage;
93
- const pagedSnap = await q.offset(offset).limit(perPage).get();
92
+ const offset = (page - 1) * pageSize;
93
+ const pagedSnap = await q.offset(offset).limit(pageSize).get();
94
94
  const data = pagedSnap.docs.map((d) => this.mapDoc(d));
95
- const totalPages = total === 0 ? 0 : Math.max(1, Math.ceil(total / perPage));
96
- return { data, total, page, perPage, totalPages };
95
+ const totalPages = total === 0 ? 0 : Math.max(1, Math.ceil(total / pageSize));
96
+ return { data, total, page, pageSize, totalPages };
97
97
  }
98
98
  async findWhere(field, op, value) {
99
99
  const snap = await this.getCollection()
@@ -102,6 +102,21 @@ export class FirebaseRepository {
102
102
  return snap.docs.map((d) => this.mapDoc(d));
103
103
  }
104
104
  // -- IWriteRepository -------------------------------------------------------
105
+ /*
106
+ * 🛑 Accepts the PLAINTEXT shape, because this method ENCRYPTS.
107
+ *
108
+ * `applyWriteHooks` runs `encryptPiiFields` over the subclass's `piiFields`,
109
+ * so a caller legitimately hands over a real email and gets ciphertext in
110
+ * Firestore. Typing the parameter `Omit<T, …>` demanded `Encrypted<string>`
111
+ * from every caller — and the only way to produce one without encrypting is
112
+ * `asEncrypted(value)`, which labels plaintext as ciphertext and is the
113
+ * misuse that helper's own docstring forbids. The alternative was a cast at
114
+ * each of the dozens of write sites across fourteen repositories; one honest
115
+ * signature here is the same change made once.
116
+ *
117
+ * `Plaintext<T>` is the identity on any document with no branded field, so
118
+ * this is a no-op for every repository that holds no PII.
119
+ */
105
120
  async create(data) {
106
121
  const now = new Date();
107
122
  const payload = prepareForFirestore({
@@ -113,6 +128,7 @@ export class FirebaseRepository {
113
128
  const snap = await ref.get();
114
129
  return this.mapDoc(snap);
115
130
  }
131
+ /** Accepts the PLAINTEXT shape — see `create` for why. */
116
132
  async update(id, data) {
117
133
  const payload = prepareForFirestore({
118
134
  ...data,