@mohasinac/appkit 4.43.0 → 4.45.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 (2019) hide show
  1. package/dist/.build-stamp.json +8 -0
  2. package/dist/_internal/client/features/digital-code/CodeRevealPanel.js +3 -3
  3. package/dist/_internal/client/features/digital-code/DigitalContentPoolManager.js +5 -5
  4. package/dist/_internal/client/features/filters/filter-load-options.js +3 -3
  5. package/dist/_internal/client/features/layout/DashboardLayoutClient.js +16 -16
  6. package/dist/_internal/client/features/layout/RoleGuard.js +4 -4
  7. package/dist/_internal/client/features/layout/SidebarCollapseToggle.js +1 -1
  8. package/dist/_internal/client/features/layout/index.js +3 -3
  9. package/dist/_internal/client/features/layout/useSidebarSearch.js +1 -1
  10. package/dist/_internal/client/features/lottery/LotteryAdminEditView.js +8 -8
  11. package/dist/_internal/client/features/lottery/LotteryAdminSlotView.js +1 -1
  12. package/dist/_internal/client/features/lottery/LotteryDetailView.js +8 -8
  13. package/dist/_internal/client/features/lottery/LotteryEntriesView.js +3 -3
  14. package/dist/_internal/client/features/lottery/LotteryListView.js +3 -3
  15. package/dist/_internal/client/features/lottery/LotteryPullForm.js +9 -9
  16. package/dist/_internal/client/features/lottery/LotterySlotGrid.js +1 -1
  17. package/dist/_internal/client/features/lottery/PrizeDrawLotteryDetailView.js +7 -7
  18. package/dist/_internal/client/features/maintenance/index.js +5 -5
  19. package/dist/_internal/client/features/maintenance/views/AnalysisRunnerView.js +3 -3
  20. package/dist/_internal/client/features/maintenance/views/CloudLogsListView.js +3 -3
  21. package/dist/_internal/client/features/products/index.js +1 -1
  22. package/dist/_internal/client/hand-mode/HandModeProvider.js +1 -1
  23. package/dist/_internal/client/hand-mode/index.js +1 -1
  24. package/dist/_internal/client/scaffolds/AppShell.js +1 -1
  25. package/dist/_internal/client/scaffolds/index.js +1 -1
  26. package/dist/_internal/client/theme/ThemeProvider.js +2 -2
  27. package/dist/_internal/client/theme/buildRegistry.js +1 -1
  28. package/dist/_internal/client/theme/index.js +2 -2
  29. package/dist/_internal/server/features/account/actions.js +1 -1
  30. package/dist/_internal/server/features/account/data.js +1 -1
  31. package/dist/_internal/server/features/account/index.js +2 -2
  32. package/dist/_internal/server/features/admin/daily-digest-actions.js +3 -3
  33. package/dist/_internal/server/features/auctions/actions.js +6 -6
  34. package/dist/_internal/server/features/auctions/data.js +1 -1
  35. package/dist/_internal/server/features/auctions/index.js +5 -5
  36. package/dist/_internal/server/features/auctions/og.js +2 -2
  37. package/dist/_internal/server/features/auctions/service.js +4 -4
  38. package/dist/_internal/server/features/audit-log/actions.js +3 -3
  39. package/dist/_internal/server/features/auth/actions.js +1 -1
  40. package/dist/_internal/server/features/auth/capabilities.js +2 -2
  41. package/dist/_internal/server/features/auth/firebase-identity.js +1 -1
  42. package/dist/_internal/server/features/auth/index.js +3 -3
  43. package/dist/_internal/server/features/auth/permissions.js +4 -4
  44. package/dist/_internal/server/features/blog/actions.js +5 -5
  45. package/dist/_internal/server/features/blog/data.js +1 -1
  46. package/dist/_internal/server/features/blog/index.js +5 -5
  47. package/dist/_internal/server/features/blog/og.js +2 -2
  48. package/dist/_internal/server/features/blog/service.js +2 -2
  49. package/dist/_internal/server/features/brands/actions.js +5 -5
  50. package/dist/_internal/server/features/brands/data.js +1 -1
  51. package/dist/_internal/server/features/brands/index.js +5 -5
  52. package/dist/_internal/server/features/brands/og.js +1 -1
  53. package/dist/_internal/server/features/brands/service.js +2 -2
  54. package/dist/_internal/server/features/bundles/actions.js +8 -8
  55. package/dist/_internal/server/features/bundles/data.js +4 -4
  56. package/dist/_internal/server/features/bundles/index.js +4 -4
  57. package/dist/_internal/server/features/bundles/og.js +1 -1
  58. package/dist/_internal/server/features/cart/actions.js +5 -5
  59. package/dist/_internal/server/features/cart/data.js +1 -1
  60. package/dist/_internal/server/features/cart/index.js +4 -4
  61. package/dist/_internal/server/features/cart/service.js +5 -5
  62. package/dist/_internal/server/features/catalogue/og.js +2 -2
  63. package/dist/_internal/server/features/categories/adapters.d.ts +47 -0
  64. package/dist/_internal/server/features/categories/adapters.js +235 -0
  65. package/dist/_internal/server/features/categories/data.js +4 -4
  66. package/dist/_internal/server/features/categories/index.js +2 -2
  67. package/dist/_internal/server/features/categories/og.js +1 -1
  68. package/dist/_internal/server/features/checkout/actions.d.ts +50 -0
  69. package/dist/_internal/server/features/checkout/actions.js +343 -70
  70. package/dist/_internal/server/features/checkout/bundle-expansion.js +3 -3
  71. package/dist/_internal/server/features/checkout/expand-order-items.js +40 -2
  72. package/dist/_internal/server/features/checkout/index.js +3 -3
  73. package/dist/_internal/server/features/checkout/locked-lines.js +14 -14
  74. package/dist/_internal/server/features/checkout/prize-bundle-gates.js +2 -2
  75. package/dist/_internal/server/features/checkout/source-context.js +4 -4
  76. package/dist/_internal/server/features/checkout/stock-restore.js +4 -4
  77. package/dist/_internal/server/features/checkout/upi-resolution.js +2 -2
  78. package/dist/_internal/server/features/classified/adapters.js +1 -1
  79. package/dist/_internal/server/features/classified/data.js +1 -1
  80. package/dist/_internal/server/features/classified/index.js +4 -4
  81. package/dist/_internal/server/features/classified/og.js +2 -2
  82. package/dist/_internal/server/features/digital-code/adapters.js +1 -1
  83. package/dist/_internal/server/features/digital-code/data.js +1 -1
  84. package/dist/_internal/server/features/digital-code/download.js +5 -5
  85. package/dist/_internal/server/features/digital-code/index.js +4 -4
  86. package/dist/_internal/server/features/digital-code/og.js +2 -2
  87. package/dist/_internal/server/features/digital-code/pool.js +7 -7
  88. package/dist/_internal/server/features/digital-code/upload.js +6 -6
  89. package/dist/_internal/server/features/events/actions.js +8 -8
  90. package/dist/_internal/server/features/events/adapters.js +1 -1
  91. package/dist/_internal/server/features/events/data.js +1 -1
  92. package/dist/_internal/server/features/events/index.js +5 -5
  93. package/dist/_internal/server/features/events/og.js +2 -2
  94. package/dist/_internal/server/features/events/service.js +2 -2
  95. package/dist/_internal/server/features/faqs/index.js +1 -1
  96. package/dist/_internal/server/features/faqs/og.js +1 -1
  97. package/dist/_internal/server/features/grouped/data.js +8 -8
  98. package/dist/_internal/server/features/grouped/index.js +4 -4
  99. package/dist/_internal/server/features/grouped/og.js +2 -2
  100. package/dist/_internal/server/features/history/actions.js +2 -2
  101. package/dist/_internal/server/features/history/data.js +1 -1
  102. package/dist/_internal/server/features/history/index.js +3 -3
  103. package/dist/_internal/server/features/homepage/index.js +1 -1
  104. package/dist/_internal/server/features/item-requests/data.js +1 -1
  105. package/dist/_internal/server/features/item-requests/index.js +2 -2
  106. package/dist/_internal/server/features/item-requests/og.js +1 -1
  107. package/dist/_internal/server/features/live/adapters.js +1 -1
  108. package/dist/_internal/server/features/live/data.js +1 -1
  109. package/dist/_internal/server/features/live/index.js +4 -4
  110. package/dist/_internal/server/features/live/og.js +2 -2
  111. package/dist/_internal/server/features/lottery/actions.js +8 -8
  112. package/dist/_internal/server/features/lottery/data.js +3 -3
  113. package/dist/_internal/server/features/maintenance/analyze.js +3 -3
  114. package/dist/_internal/server/features/maintenance/cloud-logs-data.js +1 -1
  115. package/dist/_internal/server/features/maintenance/data.js +2 -2
  116. package/dist/_internal/server/features/media/contextGuards.js +3 -3
  117. package/dist/_internal/server/features/offers/adapters.js +1 -1
  118. package/dist/_internal/server/features/offers/index.js +1 -1
  119. package/dist/_internal/server/features/orders/actions.js +17 -17
  120. package/dist/_internal/server/features/orders/adapters.js +23 -0
  121. package/dist/_internal/server/features/orders/data.js +2 -2
  122. package/dist/_internal/server/features/orders/index.js +5 -5
  123. package/dist/_internal/server/features/orders/service.js +3 -3
  124. package/dist/_internal/server/features/payouts/actions.js +3 -3
  125. package/dist/_internal/server/features/pre-orders/actions.js +5 -5
  126. package/dist/_internal/server/features/pre-orders/data.js +1 -1
  127. package/dist/_internal/server/features/pre-orders/index.js +5 -5
  128. package/dist/_internal/server/features/pre-orders/og.js +2 -2
  129. package/dist/_internal/server/features/pre-orders/service.js +4 -4
  130. package/dist/_internal/server/features/price-index/search.d.ts +119 -0
  131. package/dist/_internal/server/features/price-index/search.js +188 -0
  132. package/dist/_internal/server/features/prize-draws/actions.js +3 -3
  133. package/dist/_internal/server/features/prize-draws/data.js +1 -1
  134. package/dist/_internal/server/features/prize-draws/index.js +4 -4
  135. package/dist/_internal/server/features/prize-draws/og.js +2 -2
  136. package/dist/_internal/server/features/prize-draws/service.js +1 -1
  137. package/dist/_internal/server/features/products/actions.js +8 -8
  138. package/dist/_internal/server/features/products/data.js +15 -15
  139. package/dist/_internal/server/features/products/group-members.js +1 -1
  140. package/dist/_internal/server/features/products/index.js +6 -6
  141. package/dist/_internal/server/features/products/list-public.js +11 -11
  142. package/dist/_internal/server/features/products/listing-tab-counts.js +3 -3
  143. package/dist/_internal/server/features/products/og.js +2 -2
  144. package/dist/_internal/server/features/products/service.js +4 -4
  145. package/dist/_internal/server/features/profile/index.js +1 -1
  146. package/dist/_internal/server/features/promotions/actions.js +6 -6
  147. package/dist/_internal/server/features/promotions/data.js +1 -1
  148. package/dist/_internal/server/features/promotions/index.js +4 -4
  149. package/dist/_internal/server/features/promotions/service.js +3 -3
  150. package/dist/_internal/server/features/raffle/actions.js +3 -3
  151. package/dist/_internal/server/features/refunds/actions.js +12 -12
  152. package/dist/_internal/server/features/reviews/actions.js +6 -6
  153. package/dist/_internal/server/features/reviews/data.js +3 -3
  154. package/dist/_internal/server/features/reviews/index.js +5 -5
  155. package/dist/_internal/server/features/reviews/og-data.js +1 -1
  156. package/dist/_internal/server/features/reviews/og.js +1 -1
  157. package/dist/_internal/server/features/reviews/service.js +2 -2
  158. package/dist/_internal/server/features/scams/data.js +1 -1
  159. package/dist/_internal/server/features/scams/index.js +2 -2
  160. package/dist/_internal/server/features/search/actions.js +1 -1
  161. package/dist/_internal/server/features/search/data.js +1 -1
  162. package/dist/_internal/server/features/search/index.js +2 -2
  163. package/dist/_internal/server/features/seo/index.js +4 -4
  164. package/dist/_internal/server/features/seo/manifest.js +2 -2
  165. package/dist/_internal/server/features/seo/og.js +2 -2
  166. package/dist/_internal/server/features/seo/sitemap.js +65 -26
  167. package/dist/_internal/server/features/shared/listing-data-factory.js +4 -4
  168. package/dist/_internal/server/features/site-settings/actions.js +1 -1
  169. package/dist/_internal/server/features/site-settings/index.js +1 -1
  170. package/dist/_internal/server/features/site-settings/safe-settings.js +3 -3
  171. package/dist/_internal/server/features/stores/adapters.d.ts +2 -2
  172. package/dist/_internal/server/features/stores/adapters.js +50 -0
  173. package/dist/_internal/server/features/stores/data.js +5 -5
  174. package/dist/_internal/server/features/stores/denormalize.js +2 -2
  175. package/dist/_internal/server/features/stores/index.js +5 -5
  176. package/dist/_internal/server/features/stores/og.js +2 -2
  177. package/dist/_internal/server/features/sublisting-categories/data.js +1 -1
  178. package/dist/_internal/server/features/sublisting-categories/index.js +2 -2
  179. package/dist/_internal/server/features/sublisting-categories/og.js +2 -2
  180. package/dist/_internal/server/features/tester/visibility.js +1 -1
  181. package/dist/_internal/server/features/wishlist/actions.js +5 -5
  182. package/dist/_internal/server/features/wishlist/data.js +1 -1
  183. package/dist/_internal/server/features/wishlist/index.js +4 -4
  184. package/dist/_internal/server/functions/bind-all.d.ts +25 -0
  185. package/dist/_internal/server/functions/bind-all.js +41 -6
  186. package/dist/_internal/server/functions/firestore.js +2 -2
  187. package/dist/_internal/server/functions/https.js +2 -2
  188. package/dist/_internal/server/functions/index.js +4 -4
  189. package/dist/_internal/server/functions/manifest.js +3 -3
  190. package/dist/_internal/server/functions/scheduled.d.ts +4 -2
  191. package/dist/_internal/server/functions/scheduled.js +65 -7
  192. package/dist/_internal/server/jobs/core/adminAnalytics.d.ts +0 -1
  193. package/dist/_internal/server/jobs/core/adminAnalytics.js +12 -4
  194. package/dist/_internal/server/jobs/core/analyticsAlertEvaluate.d.ts +47 -0
  195. package/dist/_internal/server/jobs/core/analyticsAlertEvaluate.js +468 -0
  196. package/dist/_internal/server/jobs/core/assignSpinPrize.js +2 -2
  197. package/dist/_internal/server/jobs/core/auctionSettlement.js +7 -7
  198. package/dist/_internal/server/jobs/core/autoPayoutEligibility.js +18 -5
  199. package/dist/_internal/server/jobs/core/bundleStockSync.js +1 -1
  200. package/dist/_internal/server/jobs/core/cartPrune.js +3 -3
  201. package/dist/_internal/server/jobs/core/catalogueImageStalenessReminder.js +4 -4
  202. package/dist/_internal/server/jobs/core/cleanupRtdbEvents.js +5 -5
  203. package/dist/_internal/server/jobs/core/countersReconcile.js +31 -15
  204. package/dist/_internal/server/jobs/core/couponExpiry.js +1 -1
  205. package/dist/_internal/server/jobs/core/dailyDataCleanup.js +2 -2
  206. package/dist/_internal/server/jobs/core/dailyStatusDigest.js +14 -14
  207. package/dist/_internal/server/jobs/core/draftPrune.js +2 -2
  208. package/dist/_internal/server/jobs/core/emiInstallmentReminder.js +3 -3
  209. package/dist/_internal/server/jobs/core/hardBanCascade.js +7 -7
  210. package/dist/_internal/server/jobs/core/hardBanReinstatement.js +4 -4
  211. package/dist/_internal/server/jobs/core/index.js +37 -37
  212. package/dist/_internal/server/jobs/core/jobRunners.js +7 -7
  213. package/dist/_internal/server/jobs/core/listingProcessor.js +2 -2
  214. package/dist/_internal/server/jobs/core/mediaTmpCleanup.js +2 -2
  215. package/dist/_internal/server/jobs/core/newsletterExport.js +3 -3
  216. package/dist/_internal/server/jobs/core/notificationPrune.js +3 -3
  217. package/dist/_internal/server/jobs/core/offerExpiry.js +4 -4
  218. package/dist/_internal/server/jobs/core/onCategoryWrite.js +57 -3
  219. package/dist/_internal/server/jobs/core/onJobCreated.js +5 -5
  220. package/dist/_internal/server/jobs/core/onOrderCreate.js +6 -6
  221. package/dist/_internal/server/jobs/core/onOrderStatusChange.js +3 -3
  222. package/dist/_internal/server/jobs/core/onPrizeDrawPaymentConfirmed.js +2 -2
  223. package/dist/_internal/server/jobs/core/onProductStockChange.js +2 -2
  224. package/dist/_internal/server/jobs/core/onProductWrite.js +6 -6
  225. package/dist/_internal/server/jobs/core/onReviewWrite.js +4 -4
  226. package/dist/_internal/server/jobs/core/onScamReportCreate.js +4 -4
  227. package/dist/_internal/server/jobs/core/onScamReportRejected.js +3 -3
  228. package/dist/_internal/server/jobs/core/onScamReportVerified.js +3 -3
  229. package/dist/_internal/server/jobs/core/onStoreWrite.js +1 -1
  230. package/dist/_internal/server/jobs/core/onSupportTicketCreate.js +2 -2
  231. package/dist/_internal/server/jobs/core/onSupportTicketUpdate.js +2 -2
  232. package/dist/_internal/server/jobs/core/onUserBanChange.js +1 -1
  233. package/dist/_internal/server/jobs/core/pageViewPrune.js +2 -2
  234. package/dist/_internal/server/jobs/core/pageViewRollup.js +2 -2
  235. package/dist/_internal/server/jobs/core/paymentReviewAutoApprove.js +4 -4
  236. package/dist/_internal/server/jobs/core/paymentWindowTimeout.js +7 -7
  237. package/dist/_internal/server/jobs/core/pendingOrderTimeout.js +6 -6
  238. package/dist/_internal/server/jobs/core/positionsReconcile.js +1 -1
  239. package/dist/_internal/server/jobs/core/priceIndexRollup.d.ts +47 -0
  240. package/dist/_internal/server/jobs/core/priceIndexRollup.js +304 -0
  241. package/dist/_internal/server/jobs/core/prizeDrawAssignWinner.js +2 -2
  242. package/dist/_internal/server/jobs/core/prizeDrawExpiryReveal.js +3 -3
  243. package/dist/_internal/server/jobs/core/prizeDrawSoldOutReveal.js +3 -3
  244. package/dist/_internal/server/jobs/core/productStatsSync.js +1 -1
  245. package/dist/_internal/server/jobs/core/promotions.js +2 -2
  246. package/dist/_internal/server/jobs/core/resetOtpVerification.js +3 -3
  247. package/dist/_internal/server/jobs/core/revalidateNotify.js +1 -1
  248. package/dist/_internal/server/jobs/core/revenueRollup.js +2 -2
  249. package/dist/_internal/server/jobs/core/storeAnalytics.js +3 -3
  250. package/dist/_internal/server/jobs/core/storeNameBackfill.js +3 -3
  251. package/dist/_internal/server/jobs/core/{testerSandboxCleanup.d.ts → testDataCleanup.d.ts} +3 -3
  252. package/dist/_internal/server/jobs/core/{testerSandboxCleanup.js → testDataCleanup.js} +5 -5
  253. package/dist/_internal/server/jobs/core/triggerEventRaffle.js +1 -1
  254. package/dist/_internal/server/jobs/core/weeklyPayoutEligibility.js +9 -5
  255. package/dist/_internal/server/jobs/core/whatsappCatalogImport.js +3 -3
  256. package/dist/_internal/server/jobs/core/whatsappNotify.js +5 -5
  257. package/dist/_internal/server/jobs/core/wrapJobHandler.js +3 -3
  258. package/dist/_internal/server/jobs/handlers/_helpers.js +3 -3
  259. package/dist/_internal/server/jobs/handlers/adminAnalytics.js +1 -1
  260. package/dist/_internal/server/jobs/handlers/analyticsAlertEvaluate.d.ts +2 -0
  261. package/dist/_internal/server/jobs/handlers/analyticsAlertEvaluate.js +2 -0
  262. package/dist/_internal/server/jobs/handlers/assignSpinPrize.js +1 -1
  263. package/dist/_internal/server/jobs/handlers/auctionSettlement.js +1 -1
  264. package/dist/_internal/server/jobs/handlers/autoPayoutEligibility.js +1 -1
  265. package/dist/_internal/server/jobs/handlers/bundleStockSync.js +1 -1
  266. package/dist/_internal/server/jobs/handlers/cartPrune.js +1 -1
  267. package/dist/_internal/server/jobs/handlers/catalogueImageStalenessReminder.js +1 -1
  268. package/dist/_internal/server/jobs/handlers/cleanupRtdbEvents.js +1 -1
  269. package/dist/_internal/server/jobs/handlers/countersReconcile.js +1 -1
  270. package/dist/_internal/server/jobs/handlers/couponExpiry.js +1 -1
  271. package/dist/_internal/server/jobs/handlers/dailyDataCleanup.js +1 -1
  272. package/dist/_internal/server/jobs/handlers/dailyStatusDigest.js +1 -1
  273. package/dist/_internal/server/jobs/handlers/draftPrune.js +1 -1
  274. package/dist/_internal/server/jobs/handlers/emiInstallmentReminder.js +1 -1
  275. package/dist/_internal/server/jobs/handlers/hardBanReinstatement.js +1 -1
  276. package/dist/_internal/server/jobs/handlers/index.d.ts +3 -1
  277. package/dist/_internal/server/jobs/handlers/index.js +54 -52
  278. package/dist/_internal/server/jobs/handlers/listingProcessor.js +1 -1
  279. package/dist/_internal/server/jobs/handlers/mediaTmpCleanup.js +1 -1
  280. package/dist/_internal/server/jobs/handlers/messages.d.ts +5 -2
  281. package/dist/_internal/server/jobs/handlers/messages.js +5 -2
  282. package/dist/_internal/server/jobs/handlers/notificationPrune.js +1 -1
  283. package/dist/_internal/server/jobs/handlers/offerExpiry.js +1 -1
  284. package/dist/_internal/server/jobs/handlers/onCatalogueSubmittedForApproval.js +1 -1
  285. package/dist/_internal/server/jobs/handlers/onCategoryWrite.js +1 -1
  286. package/dist/_internal/server/jobs/handlers/onJobCreated.js +1 -1
  287. package/dist/_internal/server/jobs/handlers/onOrderCreate.js +1 -1
  288. package/dist/_internal/server/jobs/handlers/onOrderStatusChange.js +1 -1
  289. package/dist/_internal/server/jobs/handlers/onPrizeDrawPaymentConfirmed.js +1 -1
  290. package/dist/_internal/server/jobs/handlers/onProductStockChange.js +1 -1
  291. package/dist/_internal/server/jobs/handlers/onProductWrite.js +1 -1
  292. package/dist/_internal/server/jobs/handlers/onReviewWrite.js +1 -1
  293. package/dist/_internal/server/jobs/handlers/onScamReportCreate.js +1 -1
  294. package/dist/_internal/server/jobs/handlers/onScamReportUpdate.js +2 -2
  295. package/dist/_internal/server/jobs/handlers/onShipmentAllocationSync.js +1 -1
  296. package/dist/_internal/server/jobs/handlers/onStoreWrite.js +1 -1
  297. package/dist/_internal/server/jobs/handlers/onSupportTicketCreate.js +1 -1
  298. package/dist/_internal/server/jobs/handlers/onSupportTicketUpdate.js +1 -1
  299. package/dist/_internal/server/jobs/handlers/onUserBanChange.js +1 -1
  300. package/dist/_internal/server/jobs/handlers/pageViewPrune.js +1 -1
  301. package/dist/_internal/server/jobs/handlers/pageViewRollup.js +1 -1
  302. package/dist/_internal/server/jobs/handlers/paymentReviewAutoApprove.js +1 -1
  303. package/dist/_internal/server/jobs/handlers/paymentWindowTimeout.js +1 -1
  304. package/dist/_internal/server/jobs/handlers/pendingOrderTimeout.js +1 -1
  305. package/dist/_internal/server/jobs/handlers/positionsReconcile.js +1 -1
  306. package/dist/_internal/server/jobs/handlers/priceIndexRollup.d.ts +2 -0
  307. package/dist/_internal/server/jobs/handlers/priceIndexRollup.js +2 -0
  308. package/dist/_internal/server/jobs/handlers/prizeDrawExpiryReveal.js +1 -1
  309. package/dist/_internal/server/jobs/handlers/prizeDrawSoldOutReveal.js +1 -1
  310. package/dist/_internal/server/jobs/handlers/productStatsSync.js +1 -1
  311. package/dist/_internal/server/jobs/handlers/promotions.js +1 -1
  312. package/dist/_internal/server/jobs/handlers/revenueRollup.js +1 -1
  313. package/dist/_internal/server/jobs/handlers/storeAnalytics.js +1 -1
  314. package/dist/_internal/server/jobs/handlers/testDataCleanup.d.ts +2 -0
  315. package/dist/_internal/server/jobs/handlers/testDataCleanup.js +2 -0
  316. package/dist/_internal/server/jobs/handlers/triggerEventRaffle.js +1 -1
  317. package/dist/_internal/server/jobs/handlers/weeklyPayoutEligibility.js +1 -1
  318. package/dist/_internal/server/jobs/index.js +4 -4
  319. package/dist/_internal/server/jobs/runtime/adapters/firebase.js +3 -3
  320. package/dist/_internal/server/notifications/channel-health.js +3 -3
  321. package/dist/_internal/server/notifications/send-guard.js +5 -5
  322. package/dist/_internal/server/notifications/send-recorder.js +5 -5
  323. package/dist/_internal/shared/actions/action-registry.js +43 -0
  324. package/dist/_internal/shared/checkout/lanes.js +1 -1
  325. package/dist/_internal/shared/checkout/order-math.d.ts +113 -3
  326. package/dist/_internal/shared/checkout/order-math.js +195 -8
  327. package/dist/_internal/shared/checkout/rules/_defaults.js +1 -1
  328. package/dist/_internal/shared/checkout/rules/_limits.js +1 -1
  329. package/dist/_internal/shared/checkout/rules/_registry.js +12 -12
  330. package/dist/_internal/shared/checkout/rules/art.rule.js +1 -1
  331. package/dist/_internal/shared/checkout/rules/auction.rule.js +1 -1
  332. package/dist/_internal/shared/checkout/rules/classified.rule.js +1 -1
  333. package/dist/_internal/shared/checkout/rules/digital-code.rule.js +1 -1
  334. package/dist/_internal/shared/checkout/rules/index.js +13 -13
  335. package/dist/_internal/shared/checkout/rules/live.rule.js +1 -1
  336. package/dist/_internal/shared/checkout/rules/offer.rule.js +1 -1
  337. package/dist/_internal/shared/checkout/rules/preorder.rule.js +2 -2
  338. package/dist/_internal/shared/checkout/rules/prize-draw.rule.js +3 -3
  339. package/dist/_internal/shared/checkout/rules/standard.rule.js +1 -1
  340. package/dist/_internal/shared/checkout/rules/stickers.rule.js +1 -1
  341. package/dist/_internal/shared/features/auctions/errors.js +1 -1
  342. package/dist/_internal/shared/features/blog/errors.js +1 -1
  343. package/dist/_internal/shared/features/blog/schema.js +2 -2
  344. package/dist/_internal/shared/features/brands/errors.js +1 -1
  345. package/dist/_internal/shared/features/brands/schema.js +2 -2
  346. package/dist/_internal/shared/features/cart/config.js +1 -1
  347. package/dist/_internal/shared/features/cart/errors.js +1 -1
  348. package/dist/_internal/shared/features/categories/bundle-schemas.js +2 -2
  349. package/dist/_internal/shared/features/categories/price-guidance.d.ts +110 -0
  350. package/dist/_internal/shared/features/categories/price-guidance.js +136 -0
  351. package/dist/_internal/shared/features/checkout/config.d.ts +3 -0
  352. package/dist/_internal/shared/features/checkout/config.js +4 -1
  353. package/dist/_internal/shared/features/emi/schedule.js +1 -1
  354. package/dist/_internal/shared/features/events/errors.js +1 -1
  355. package/dist/_internal/shared/features/events/schema.js +2 -2
  356. package/dist/_internal/shared/features/layout/index.js +1 -1
  357. package/dist/_internal/shared/features/notifications/action-url.js +1 -1
  358. package/dist/_internal/shared/features/offers/config.js +1 -1
  359. package/dist/_internal/shared/features/orders/errors.js +1 -1
  360. package/dist/_internal/shared/features/orders/schema.js +3 -3
  361. package/dist/_internal/shared/features/pre-orders/errors.js +1 -1
  362. package/dist/_internal/shared/features/products/errors.js +1 -1
  363. package/dist/_internal/shared/features/products/schema.js +3 -3
  364. package/dist/_internal/shared/features/promotions/errors.js +1 -1
  365. package/dist/_internal/shared/features/promotions/schema.d.ts +4 -4
  366. package/dist/_internal/shared/features/promotions/schema.js +1 -1
  367. package/dist/_internal/shared/features/returns/custody.d.ts +99 -0
  368. package/dist/_internal/shared/features/returns/custody.js +172 -0
  369. package/dist/_internal/shared/features/returns/destination.d.ts +172 -0
  370. package/dist/_internal/shared/features/returns/destination.js +158 -0
  371. package/dist/_internal/shared/features/reviews/errors.js +1 -1
  372. package/dist/_internal/shared/features/reviews/schema.js +2 -2
  373. package/dist/_internal/shared/features/shipping/courier-rating.d.ts +145 -0
  374. package/dist/_internal/shared/features/shipping/courier-rating.js +114 -0
  375. package/dist/_internal/shared/features/shipping/mode.d.ts +112 -0
  376. package/dist/_internal/shared/features/shipping/mode.js +108 -0
  377. package/dist/_internal/shared/features/shipping/parcel.d.ts +115 -0
  378. package/dist/_internal/shared/features/shipping/parcel.js +120 -0
  379. package/dist/_internal/shared/features/shipping/protections.d.ts +221 -0
  380. package/dist/_internal/shared/features/shipping/protections.js +213 -0
  381. package/dist/_internal/shared/features/site-settings/fees.d.ts +3 -0
  382. package/dist/_internal/shared/features/site-settings/fees.js +3 -0
  383. package/dist/_internal/shared/features/site-settings/gst-registration.d.ts +90 -0
  384. package/dist/_internal/shared/features/site-settings/gst-registration.js +126 -0
  385. package/dist/_internal/shared/features/wishlist/errors.js +1 -1
  386. package/dist/_internal/shared/fees/calculator.d.ts +129 -0
  387. package/dist/_internal/shared/fees/calculator.js +155 -1
  388. package/dist/_internal/shared/history/history.js +2 -2
  389. package/dist/_internal/shared/history/index.js +2 -2
  390. package/dist/_internal/shared/index.js +2 -2
  391. package/dist/_internal/shared/listing-types/_registry.js +12 -12
  392. package/dist/_internal/shared/listing-types/action-tracker.js +1 -1
  393. package/dist/_internal/shared/listing-types/art/config.d.ts +0 -6
  394. package/dist/_internal/shared/listing-types/art/config.js +4 -4
  395. package/dist/_internal/shared/listing-types/auction/config.js +6 -6
  396. package/dist/_internal/shared/listing-types/availability.js +1 -1
  397. package/dist/_internal/shared/listing-types/cart-shipping.js +1 -1
  398. package/dist/_internal/shared/listing-types/classified/config.d.ts +0 -6
  399. package/dist/_internal/shared/listing-types/classified/config.js +5 -5
  400. package/dist/_internal/shared/listing-types/digital-code/config.d.ts +0 -6
  401. package/dist/_internal/shared/listing-types/digital-code/config.js +6 -6
  402. package/dist/_internal/shared/listing-types/live/config.d.ts +0 -6
  403. package/dist/_internal/shared/listing-types/live/config.js +5 -5
  404. package/dist/_internal/shared/listing-types/pre-order/config.js +6 -6
  405. package/dist/_internal/shared/listing-types/prize-draw/config.js +5 -5
  406. package/dist/_internal/shared/listing-types/standard/config.d.ts +0 -6
  407. package/dist/_internal/shared/listing-types/standard/config.js +4 -4
  408. package/dist/_internal/shared/listing-types/stickers/config.d.ts +0 -6
  409. package/dist/_internal/shared/listing-types/stickers/config.js +4 -4
  410. package/dist/_internal/shared/search/alias-variants.d.ts +58 -0
  411. package/dist/_internal/shared/search/alias-variants.js +141 -0
  412. package/dist/_internal/shared/templating/placeholders.d.ts +70 -0
  413. package/dist/_internal/shared/templating/placeholders.js +73 -0
  414. package/dist/_internal/shared/tokens/index.js +2 -2
  415. package/dist/_internal/shared/types/action-error-reporter.js +1 -1
  416. package/dist/_internal/shared/types/action-result.js +4 -4
  417. package/dist/_internal/shared/types/base-document.d.ts +19 -0
  418. package/dist/cli/index.js +1 -1
  419. package/dist/client/api/surface-error.js +7 -7
  420. package/dist/client/api/useApiMutation.js +2 -2
  421. package/dist/client/api/useApiQuery.js +4 -4
  422. package/dist/client/observability/installClientErrorReporter.js +1 -1
  423. package/dist/client/observability/reportClientError.js +2 -2
  424. package/dist/client-entry.js +5 -5
  425. package/dist/client.d.ts +6 -0
  426. package/dist/client.js +336 -331
  427. package/dist/constants/api-endpoints.d.ts +58 -0
  428. package/dist/constants/api-endpoints.js +31 -0
  429. package/dist/constants/cache-invalidation.js +1 -1
  430. package/dist/constants/field-names.d.ts +2 -0
  431. package/dist/constants/field-names.js +10 -0
  432. package/dist/constants/index.js +10 -10
  433. package/dist/constants/notification-types.js +1 -1
  434. package/dist/contracts/index.js +12 -12
  435. package/dist/contracts/realtime-session.js +2 -2
  436. package/dist/core/EventBus.js +2 -2
  437. package/dist/core/Logger.js +2 -2
  438. package/dist/core/Queue.js +1 -1
  439. package/dist/core/StorageManager.js +2 -2
  440. package/dist/core/browser.js +9 -9
  441. package/dist/core/components/SyncManagerMount.js +2 -2
  442. package/dist/core/contact-submissions.repository.js +1 -1
  443. package/dist/core/copilot-log.repository.js +1 -1
  444. package/dist/core/hooks/useSiteSettings.js +2 -2
  445. package/dist/core/hooks/useSyncManager.js +3 -3
  446. package/dist/core/index.js +17 -17
  447. package/dist/core/integration-keys.js +2 -2
  448. package/dist/core/mutation-events.js +1 -1
  449. package/dist/core/newsletter-actions.js +2 -2
  450. package/dist/core/newsletter.repository.js +2 -2
  451. package/dist/core/server-action.js +5 -5
  452. package/dist/core/site-config.js +1 -1
  453. package/dist/core/unit-of-work.js +20 -20
  454. package/dist/errors/api-error.js +1 -1
  455. package/dist/errors/authentication-error.js +1 -1
  456. package/dist/errors/authorization-error.js +1 -1
  457. package/dist/errors/conflict-error.js +1 -1
  458. package/dist/errors/database-error.js +2 -2
  459. package/dist/errors/describe-cause.js +1 -1
  460. package/dist/errors/error-display-map.js +3 -3
  461. package/dist/errors/error-envelope.js +1 -1
  462. package/dist/errors/error-handler.js +3 -3
  463. package/dist/errors/error-mapping.js +7 -7
  464. package/dist/errors/index.js +18 -18
  465. package/dist/errors/normalize.js +2 -2
  466. package/dist/errors/not-found-error.js +1 -1
  467. package/dist/errors/payment-provider-unreachable.js +1 -1
  468. package/dist/errors/safe-read.js +2 -2
  469. package/dist/errors/validation-error.js +1 -1
  470. package/dist/features/about/components/AboutView.js +2 -2
  471. package/dist/features/about/components/DeveloperView.js +6 -6
  472. package/dist/features/about/components/FAQPageView.js +5 -5
  473. package/dist/features/about/components/FeesView.js +4 -4
  474. package/dist/features/about/components/HelpPageView.js +5 -5
  475. package/dist/features/about/components/HowAuctionsWorkView.js +4 -4
  476. package/dist/features/about/components/HowCheckoutWorksView.js +4 -4
  477. package/dist/features/about/components/HowEmiWorksView.js +5 -5
  478. package/dist/features/about/components/HowOffersWorkView.js +4 -4
  479. package/dist/features/about/components/HowOrdersWorkView.js +4 -4
  480. package/dist/features/about/components/HowPayoutsWorkView.js +4 -4
  481. package/dist/features/about/components/HowPreOrdersWorkView.js +4 -4
  482. package/dist/features/about/components/HowReviewsWorkView.js +4 -4
  483. package/dist/features/about/components/PolicyPageView.js +7 -7
  484. package/dist/features/about/components/PublicProfileView.js +15 -15
  485. package/dist/features/about/components/SecurityPrivacyView.js +4 -4
  486. package/dist/features/about/components/ShippingPolicyView.js +4 -4
  487. package/dist/features/about/components/TrackOrderView.js +5 -5
  488. package/dist/features/about/components/UnauthorizedView.js +4 -4
  489. package/dist/features/about/index.js +19 -19
  490. package/dist/features/about/schemas/index.js +1 -1
  491. package/dist/features/account/actions/address-actions.js +2 -2
  492. package/dist/features/account/actions/index.js +1 -1
  493. package/dist/features/account/api/[userId]/addresses/route.js +2 -2
  494. package/dist/features/account/api/[userId]/route.js +2 -2
  495. package/dist/features/account/columns/index.js +1 -1
  496. package/dist/features/account/components/AddressBook.js +1 -1
  497. package/dist/features/account/components/AddressFilters.js +3 -3
  498. package/dist/features/account/components/AddressForm.js +9 -9
  499. package/dist/features/account/components/AddressInlineSelect.js +4 -4
  500. package/dist/features/account/components/AddressSelectorCreate.js +2 -2
  501. package/dist/features/account/components/AddressesIndexListing.js +6 -6
  502. package/dist/features/account/components/BecomeSellerView.js +1 -1
  503. package/dist/features/account/components/BuyerAccountGuideView.js +3 -3
  504. package/dist/features/account/components/BuyerAuctionsGuideView.js +2 -2
  505. package/dist/features/account/components/BuyerOrdersGuideView.js +2 -2
  506. package/dist/features/account/components/BuyerShoppingGuideView.js +2 -2
  507. package/dist/features/account/components/LinkedAccountsSection.js +1 -1
  508. package/dist/features/account/components/NotificationBell.js +6 -6
  509. package/dist/features/account/components/NotificationPreferencesPanel.js +4 -4
  510. package/dist/features/account/components/OrderDetailView.js +1 -1
  511. package/dist/features/account/components/ProfileView.js +1 -1
  512. package/dist/features/account/components/UserAccountHubView.js +1 -1
  513. package/dist/features/account/components/UserAddressesView.js +1 -1
  514. package/dist/features/account/components/UserBidsView.js +8 -8
  515. package/dist/features/account/components/UserNotificationsView.js +1 -1
  516. package/dist/features/account/components/UserOffersPanel.js +5 -5
  517. package/dist/features/account/components/UserOrderTrackView.js +1 -1
  518. package/dist/features/account/components/UserOrdersView.js +10 -10
  519. package/dist/features/account/components/UserReturnsView.js +7 -7
  520. package/dist/features/account/components/UserSettingsView.js +1 -1
  521. package/dist/features/account/components/UserSidebar.js +9 -9
  522. package/dist/features/account/components/UserSupportView.js +11 -11
  523. package/dist/features/account/components/index.js +20 -20
  524. package/dist/features/account/hooks/useAccount.js +2 -2
  525. package/dist/features/account/hooks/useAddressSelector.js +2 -2
  526. package/dist/features/account/hooks/useAddresses.js +2 -2
  527. package/dist/features/account/hooks/useCollapsedSections.js +2 -2
  528. package/dist/features/account/hooks/useDataViewMode.js +1 -1
  529. package/dist/features/account/hooks/useNotifications.js +2 -2
  530. package/dist/features/account/hooks/useProfile.js +3 -3
  531. package/dist/features/account/hooks/useProfileStats.js +2 -2
  532. package/dist/features/account/hooks/usePublicProfile.d.ts +1 -1
  533. package/dist/features/account/hooks/usePublicProfile.js +3 -3
  534. package/dist/features/account/index.js +13 -13
  535. package/dist/features/account/schemas/firestore.js +1 -1
  536. package/dist/features/account/schemas/index.js +2 -2
  537. package/dist/features/account/server.js +3 -3
  538. package/dist/features/addresses/components/AddressLocationFields.js +5 -5
  539. package/dist/features/addresses/hooks/usePostalLookup.js +2 -2
  540. package/dist/features/addresses/index.js +2 -2
  541. package/dist/features/addresses/repository/addresses.repository.js +6 -6
  542. package/dist/features/addresses/schemas/address-form.js +2 -2
  543. package/dist/features/addresses/schemas/index.js +3 -3
  544. package/dist/features/addresses/server.js +2 -2
  545. package/dist/features/admin/actions/admin-actions.d.ts +2 -2
  546. package/dist/features/admin/actions/admin-actions.js +18 -18
  547. package/dist/features/admin/actions/admin-coupon-actions.js +5 -5
  548. package/dist/features/admin/actions/admin-read-actions.d.ts +4 -4
  549. package/dist/features/admin/actions/admin-read-actions.js +12 -12
  550. package/dist/features/admin/actions/index.js +5 -5
  551. package/dist/features/admin/actions/notification-actions.js +13 -13
  552. package/dist/features/admin/actions/site-settings-actions.js +2 -2
  553. package/dist/features/admin/api/bids/route.js +2 -2
  554. package/dist/features/admin/api/coupons/route.js +2 -2
  555. package/dist/features/admin/api/products/route.js +2 -2
  556. package/dist/features/admin/api/reviews/route.js +2 -2
  557. package/dist/features/admin/components/AdminActionIndexView.js +4 -4
  558. package/dist/features/admin/components/AdminAdEditorView.js +9 -9
  559. package/dist/features/admin/components/AdminAddressBookView.js +4 -4
  560. package/dist/features/admin/components/AdminAddressClustersView.js +3 -3
  561. package/dist/features/admin/components/AdminAddressEditorView.js +13 -13
  562. package/dist/features/admin/components/AdminAddressesView.js +9 -9
  563. package/dist/features/admin/components/AdminAdsView.js +8 -8
  564. package/dist/features/admin/components/AdminAllEventEntriesView.js +7 -7
  565. package/dist/features/admin/components/AdminAnalyticsGuideView.js +2 -2
  566. package/dist/features/admin/components/AdminAnalyticsView.js +7 -7
  567. package/dist/features/admin/components/AdminArtView.js +4 -4
  568. package/dist/features/admin/components/AdminAuditLogView.js +6 -6
  569. package/dist/features/admin/components/AdminBidsView.js +12 -12
  570. package/dist/features/admin/components/AdminBlogEditorView.js +8 -8
  571. package/dist/features/admin/components/AdminBlogView.js +7 -7
  572. package/dist/features/admin/components/AdminBrandEditorView.js +11 -11
  573. package/dist/features/admin/components/AdminBrandsView.js +7 -7
  574. package/dist/features/admin/components/AdminBundleEditorView.js +13 -13
  575. package/dist/features/admin/components/AdminBundlesView.js +8 -8
  576. package/dist/features/admin/components/AdminCarouselEditorView.js +8 -8
  577. package/dist/features/admin/components/AdminCarouselGroupEditorView.js +6 -6
  578. package/dist/features/admin/components/AdminCarouselView.js +11 -11
  579. package/dist/features/admin/components/AdminCartsView.js +5 -5
  580. package/dist/features/admin/components/AdminCatalogGuideView.js +2 -2
  581. package/dist/features/admin/components/AdminCategoriesView.js +6 -6
  582. package/dist/features/admin/components/AdminCategoryEditorView.js +274 -8
  583. package/dist/features/admin/components/AdminClassifiedView.js +4 -4
  584. package/dist/features/admin/components/AdminContactEditorView.js +3 -3
  585. package/dist/features/admin/components/AdminContactView.js +10 -10
  586. package/dist/features/admin/components/AdminContentGuideView.js +2 -2
  587. package/dist/features/admin/components/AdminCouponEditorView.js +12 -12
  588. package/dist/features/admin/components/AdminCouponsView.js +10 -10
  589. package/dist/features/admin/components/AdminDashboardView.js +5 -5
  590. package/dist/features/admin/components/AdminDigitalCodesView.js +4 -4
  591. package/dist/features/admin/components/AdminEmployeeEditorView.js +10 -10
  592. package/dist/features/admin/components/AdminFaqEditorView.js +6 -6
  593. package/dist/features/admin/components/AdminFaqsView.js +6 -6
  594. package/dist/features/admin/components/AdminFeatureEditorView.js +9 -9
  595. package/dist/features/admin/components/AdminFeaturesView.js +8 -8
  596. package/dist/features/admin/components/AdminFulfillmentView.js +9 -9
  597. package/dist/features/admin/components/AdminGroupedListingsView.js +9 -9
  598. package/dist/features/admin/components/AdminGuideHubView.js +2 -2
  599. package/dist/features/admin/components/AdminHistoryView.js +6 -6
  600. package/dist/features/admin/components/AdminLiveView.js +4 -4
  601. package/dist/features/admin/components/AdminMediaView.js +5 -5
  602. package/dist/features/admin/components/AdminNavEditorView.js +7 -7
  603. package/dist/features/admin/components/AdminNavigationView.js +5 -5
  604. package/dist/features/admin/components/AdminNewsletterView.js +9 -9
  605. package/dist/features/admin/components/AdminNotificationsView.js +10 -10
  606. package/dist/features/admin/components/AdminOffersView.js +13 -13
  607. package/dist/features/admin/components/AdminOrderEditorView.js +15 -15
  608. package/dist/features/admin/components/AdminOrdersGuideView.js +2 -2
  609. package/dist/features/admin/components/AdminOrdersView.js +13 -13
  610. package/dist/features/admin/components/AdminPaymentClustersView.js +3 -3
  611. package/dist/features/admin/components/AdminPaymentMethodsView.js +8 -8
  612. package/dist/features/admin/components/AdminPaymentsGuideView.js +2 -2
  613. package/dist/features/admin/components/AdminPayoutMarkPaidModal.js +7 -7
  614. package/dist/features/admin/components/AdminPayoutsView.js +12 -12
  615. package/dist/features/admin/components/AdminPrizeDrawsView.js +9 -9
  616. package/dist/features/admin/components/AdminProductEditorView.js +21 -14
  617. package/dist/features/admin/components/AdminProductsView.js +93 -22
  618. package/dist/features/admin/components/AdminReturnRequestsView.js +7 -7
  619. package/dist/features/admin/components/AdminReviewsView.js +9 -9
  620. package/dist/features/admin/components/AdminScammerEditorView.js +6 -6
  621. package/dist/features/admin/components/AdminScammersView.js +10 -10
  622. package/dist/features/admin/components/AdminSectionsView.js +15 -15
  623. package/dist/features/admin/components/AdminSessionsManager.js +1 -1
  624. package/dist/features/admin/components/AdminSessionsView.js +6 -6
  625. package/dist/features/admin/components/AdminSidebar.js +8 -8
  626. package/dist/features/admin/components/AdminSiteConfigGuideView.js +2 -2
  627. package/dist/features/admin/components/AdminSiteSettingsView.js +36 -17
  628. package/dist/features/admin/components/AdminStickersView.js +4 -4
  629. package/dist/features/admin/components/AdminStoreAddressesView.js +4 -4
  630. package/dist/features/admin/components/AdminStoreEditorView.js +7 -7
  631. package/dist/features/admin/components/AdminStoresGuideView.js +2 -2
  632. package/dist/features/admin/components/AdminStoresView.js +11 -11
  633. package/dist/features/admin/components/AdminSublistingCategoriesView.js +6 -6
  634. package/dist/features/admin/components/AdminSublistingCategoryEditorView.js +7 -7
  635. package/dist/features/admin/components/AdminSupportTicketDetailView.js +9 -9
  636. package/dist/features/admin/components/AdminSupportTicketsView.js +9 -9
  637. package/dist/features/admin/components/AdminTaxCodeEditorView.d.ts +10 -0
  638. package/dist/features/admin/components/AdminTaxCodeEditorView.js +160 -0
  639. package/dist/features/admin/components/AdminTaxCodesView.d.ts +13 -0
  640. package/dist/features/admin/components/AdminTaxCodesView.js +86 -0
  641. package/dist/features/admin/components/AdminTeamGuideView.js +1 -1
  642. package/dist/features/admin/components/AdminTeamView.js +8 -8
  643. package/dist/features/admin/components/AdminTesterChecklistItemEditorView.js +10 -10
  644. package/dist/features/admin/components/AdminTesterChecklistView.js +9 -9
  645. package/dist/features/admin/components/AdminTopBar.js +1 -1
  646. package/dist/features/admin/components/AdminTrustGuideView.js +2 -2
  647. package/dist/features/admin/components/AdminUserEditorView.js +8 -8
  648. package/dist/features/admin/components/AdminUsersGuideView.js +2 -2
  649. package/dist/features/admin/components/AdminUsersView.js +15 -15
  650. package/dist/features/admin/components/AdminViewCards.js +3 -3
  651. package/dist/features/admin/components/AdminWhatsAppGuideView.js +2 -2
  652. package/dist/features/admin/components/AdminWishlistsView.js +6 -6
  653. package/dist/features/admin/components/BrandQuickCreateForm.js +8 -8
  654. package/dist/features/admin/components/CategoryQuickCreateForm.js +8 -8
  655. package/dist/features/admin/components/DashboardStats.js +4 -4
  656. package/dist/features/admin/components/DataListingView.js +7 -7
  657. package/dist/features/admin/components/DataTable.js +5 -5
  658. package/dist/features/admin/components/DemoSeedView.js +1 -1
  659. package/dist/features/admin/components/DrawerFormFooter.js +1 -1
  660. package/dist/features/admin/components/QuickEditMenu.js +4 -4
  661. package/dist/features/admin/components/ViewAuditLogEntryModal.js +1 -1
  662. package/dist/features/admin/components/ViewNotificationModal.js +2 -2
  663. package/dist/features/admin/components/analytics/AdminAnalyticsCharts.js +2 -2
  664. package/dist/features/admin/components/analytics/AdminPageViewsReportView.js +4 -4
  665. package/dist/features/admin/components/analytics/AdminStatCard.js +2 -2
  666. package/dist/features/admin/components/analytics/AdminTopProductsTable.js +2 -2
  667. package/dist/features/admin/components/analytics/index.js +3 -3
  668. package/dist/features/admin/components/index.js +94 -94
  669. package/dist/features/admin/components/sections/adminSectionsBuildParse.js +1 -1
  670. package/dist/features/admin/components/sections/adminSectionsTypes.d.ts +50 -1
  671. package/dist/features/admin/components/sections/adminSectionsTypes.js +30 -11
  672. package/dist/features/admin/hooks/useAdmin.js +2 -2
  673. package/dist/features/admin/hooks/useAdminListing.js +5 -5
  674. package/dist/features/admin/hooks/useAdminListingData.js +2 -2
  675. package/dist/features/admin/hooks/useAdminSectionsListing.js +2 -2
  676. package/dist/features/admin/index.js +7 -7
  677. package/dist/features/admin/repository/analytics-rollup.repository.js +1 -1
  678. package/dist/features/admin/repository/notification.repository.js +5 -5
  679. package/dist/features/admin/repository/site-settings.repository.js +7 -7
  680. package/dist/features/admin/schemas/admin-editor-forms.js +3 -3
  681. package/dist/features/admin/schemas/admin-ops-forms.js +3 -3
  682. package/dist/features/admin/schemas/admin-user-form.d.ts +4 -4
  683. package/dist/features/admin/schemas/admin-user-form.js +1 -1
  684. package/dist/features/admin/schemas/firestore.d.ts +29 -0
  685. package/dist/features/admin/schemas/firestore.js +8 -2
  686. package/dist/features/admin/schemas/homepage-section-form.js +2 -2
  687. package/dist/features/admin/schemas/index.js +1 -1
  688. package/dist/features/admin/schemas/nav-item-form.js +1 -1
  689. package/dist/features/admin/schemas/small-forms.js +1 -1
  690. package/dist/features/admin/server.js +8 -8
  691. package/dist/features/admin/types/index.js +1 -1
  692. package/dist/features/admin/utils/checkActionAllowed.js +4 -4
  693. package/dist/features/admin/utils/getDisabledRoutes.js +1 -1
  694. package/dist/features/admin/utils/getSiteSettingsGlobal.js +1 -1
  695. package/dist/features/analytics/components/PageViewTracker.js +3 -3
  696. package/dist/features/analytics/repository/page-views.repository.js +3 -3
  697. package/dist/features/auctions/actions/bid-actions.js +23 -23
  698. package/dist/features/auctions/actions/index.js +1 -1
  699. package/dist/features/auctions/api/route.js +2 -2
  700. package/dist/features/auctions/columns/index.js +1 -1
  701. package/dist/features/auctions/components/AuctionBidsTable.js +4 -4
  702. package/dist/features/auctions/components/AuctionBottomActions.js +9 -9
  703. package/dist/features/auctions/components/AuctionDetailPageView.js +35 -35
  704. package/dist/features/auctions/components/AuctionFilters.js +4 -4
  705. package/dist/features/auctions/components/AuctionLiveStatusBadge.js +2 -2
  706. package/dist/features/auctions/components/AuctionsListView.js +4 -4
  707. package/dist/features/auctions/components/CollapsibleBidHistory.js +4 -4
  708. package/dist/features/auctions/components/LiveBidPrice.js +3 -3
  709. package/dist/features/auctions/components/LiveMinIncrement.js +5 -5
  710. package/dist/features/auctions/components/MarketplaceAuctionCard.js +13 -13
  711. package/dist/features/auctions/components/MarketplaceAuctionGrid.js +2 -2
  712. package/dist/features/auctions/components/PlaceBidFormClient.js +17 -17
  713. package/dist/features/auctions/components/index.js +5 -5
  714. package/dist/features/auctions/hooks/useAuctions.js +3 -3
  715. package/dist/features/auctions/hooks/useBids.js +2 -2
  716. package/dist/features/auctions/hooks/useLiveAuctionBid.js +1 -1
  717. package/dist/features/auctions/hooks/usePlaceBid.js +2 -2
  718. package/dist/features/auctions/hooks/useRealtimeBids.js +3 -3
  719. package/dist/features/auctions/index.js +8 -8
  720. package/dist/features/auctions/repository/bid.repository.js +7 -7
  721. package/dist/features/auctions/schemas/firestore.js +1 -1
  722. package/dist/features/auctions/schemas/index.js +2 -2
  723. package/dist/features/auctions/server.js +3 -3
  724. package/dist/features/audit-log/repository/audit-log.repository.js +2 -2
  725. package/dist/features/auth/actions/index.js +1 -1
  726. package/dist/features/auth/actions/profile-actions.js +8 -8
  727. package/dist/features/auth/actions/user-slug.js +4 -4
  728. package/dist/features/auth/api/route.js +2 -2
  729. package/dist/features/auth/auth-helpers.js +2 -2
  730. package/dist/features/auth/checkout-value-otp.js +3 -3
  731. package/dist/features/auth/components/AuthStatusPanel.js +2 -2
  732. package/dist/features/auth/components/ForgotPasswordView.js +7 -7
  733. package/dist/features/auth/components/Guards.js +2 -2
  734. package/dist/features/auth/components/LoginForm.js +8 -8
  735. package/dist/features/auth/components/OAuthLoadingView.js +1 -1
  736. package/dist/features/auth/components/RegisterForm.js +9 -9
  737. package/dist/features/auth/components/ResetPasswordView.js +6 -6
  738. package/dist/features/auth/components/SocialAuthButtons.js +1 -1
  739. package/dist/features/auth/components/VerifyEmailView.js +2 -2
  740. package/dist/features/auth/components/index.js +9 -9
  741. package/dist/features/auth/hooks/useAuth.js +7 -7
  742. package/dist/features/auth/hooks/useAuthEvent.js +2 -2
  743. package/dist/features/auth/hooks/useLogout.js +2 -2
  744. package/dist/features/auth/hooks/useRBAC.js +3 -3
  745. package/dist/features/auth/index.js +11 -11
  746. package/dist/features/auth/repository/index.js +4 -4
  747. package/dist/features/auth/repository/session.repository.js +7 -7
  748. package/dist/features/auth/repository/sms-counter.repository.js +2 -2
  749. package/dist/features/auth/repository/token.repository.js +6 -6
  750. package/dist/features/auth/repository/user.repository.js +5 -5
  751. package/dist/features/auth/schemas/firestore.d.ts +0 -1
  752. package/dist/features/auth/schemas/index.js +3 -3
  753. package/dist/features/auth/server/checkSoftBan.js +1 -1
  754. package/dist/features/auth/server.js +5 -5
  755. package/dist/features/auth/token-store.js +3 -3
  756. package/dist/features/before-after/api/[id]/route.js +2 -2
  757. package/dist/features/before-after/api/route.js +2 -2
  758. package/dist/features/before-after/columns/index.js +1 -1
  759. package/dist/features/before-after/components/BeforeAfterGallery.js +2 -2
  760. package/dist/features/before-after/components/BeforeAfterSlider.js +1 -1
  761. package/dist/features/before-after/components/index.js +2 -2
  762. package/dist/features/before-after/hooks/useBeforeAfter.js +2 -2
  763. package/dist/features/before-after/index.js +6 -6
  764. package/dist/features/blog/actions/blog-actions.js +6 -6
  765. package/dist/features/blog/actions/index.js +1 -1
  766. package/dist/features/blog/api/[slug]/route.js +3 -3
  767. package/dist/features/blog/api/route.js +3 -3
  768. package/dist/features/blog/columns/index.js +1 -1
  769. package/dist/features/blog/components/BlogFeaturedCard.js +6 -6
  770. package/dist/features/blog/components/BlogFilters.js +7 -7
  771. package/dist/features/blog/components/BlogIndexListing.js +9 -9
  772. package/dist/features/blog/components/BlogIndexPageView.js +6 -6
  773. package/dist/features/blog/components/BlogListView.js +6 -6
  774. package/dist/features/blog/components/BlogPostForm.js +6 -6
  775. package/dist/features/blog/components/BlogPostView.js +10 -10
  776. package/dist/features/blog/components/index.js +6 -6
  777. package/dist/features/blog/hooks/useBlog.js +2 -2
  778. package/dist/features/blog/index.js +6 -6
  779. package/dist/features/blog/repository/blog.repository.js +8 -8
  780. package/dist/features/blog/schemas/blog-form.js +2 -2
  781. package/dist/features/blog/schemas/firestore.d.ts +2 -2
  782. package/dist/features/blog/schemas/firestore.js +1 -1
  783. package/dist/features/blog/schemas/index.js +4 -4
  784. package/dist/features/blog/server.js +4 -4
  785. package/dist/features/cart/actions/cart-actions.js +16 -16
  786. package/dist/features/cart/actions/index.js +1 -1
  787. package/dist/features/cart/api/[id]/route.js +2 -2
  788. package/dist/features/cart/api/route.js +2 -2
  789. package/dist/features/cart/columns/index.js +2 -2
  790. package/dist/features/cart/components/CartDrawer.js +6 -6
  791. package/dist/features/cart/components/CartGroupLineRow.js +5 -5
  792. package/dist/features/cart/components/CartPriceBreakdown.d.ts +6 -0
  793. package/dist/features/cart/components/CartPriceBreakdown.js +3 -3
  794. package/dist/features/cart/components/CartSummary.js +1 -1
  795. package/dist/features/cart/components/CartView.js +2 -2
  796. package/dist/features/cart/components/CheckoutAddressStep.js +1 -1
  797. package/dist/features/cart/components/CheckoutSuccessView.js +1 -1
  798. package/dist/features/cart/components/CheckoutView.js +2 -2
  799. package/dist/features/cart/components/ShippingPicker.js +3 -3
  800. package/dist/features/cart/components/StoreAddonsPicker.d.ts +35 -1
  801. package/dist/features/cart/components/StoreAddonsPicker.js +39 -11
  802. package/dist/features/cart/components/index.js +10 -10
  803. package/dist/features/cart/hooks/useAddToCart.js +8 -8
  804. package/dist/features/cart/hooks/useCart.js +3 -3
  805. package/dist/features/cart/hooks/useCartCount.js +4 -4
  806. package/dist/features/cart/hooks/useCartQuery.js +1 -1
  807. package/dist/features/cart/hooks/useCheckoutReadQueries.js +1 -1
  808. package/dist/features/cart/hooks/useGuestCart.js +1 -1
  809. package/dist/features/cart/hooks/useGuestCartMerge.js +4 -4
  810. package/dist/features/cart/hooks/useOrder.js +2 -2
  811. package/dist/features/cart/index.js +15 -15
  812. package/dist/features/cart/repository/cart.repository.js +7 -6
  813. package/dist/features/cart/schemas/firestore.d.ts +10 -0
  814. package/dist/features/cart/schemas/index.d.ts +2 -2
  815. package/dist/features/cart/schemas/index.js +2 -2
  816. package/dist/features/cart/server.js +2 -2
  817. package/dist/features/cart/utils/guest-cart.js +2 -2
  818. package/dist/features/cart/utils/line-total.js +1 -1
  819. package/dist/features/cart/utils/pending-ops.js +1 -1
  820. package/dist/features/catalogue/actions/approve-catalogue-listing.js +5 -5
  821. package/dist/features/catalogue/actions/list-from-catalogue.js +6 -6
  822. package/dist/features/catalogue/actions/submit-for-approval.js +4 -4
  823. package/dist/features/catalogue/components/AdminCatalogueApprovalsView.js +7 -7
  824. package/dist/features/catalogue/components/CatalogueItemEditorView.js +26 -15
  825. package/dist/features/catalogue/components/PublicCatalogueItemDetailView.js +7 -7
  826. package/dist/features/catalogue/components/PublicCatalogueView.js +6 -6
  827. package/dist/features/catalogue/components/UserCatalogueView.js +5 -5
  828. package/dist/features/catalogue/index.js +10 -10
  829. package/dist/features/catalogue/repository/catalogue.repository.js +4 -4
  830. package/dist/features/catalogue/schemas/firestore.js +1 -1
  831. package/dist/features/catalogue/schemas/index.js +2 -2
  832. package/dist/features/catalogue/schemas/validation.js +1 -1
  833. package/dist/features/catalogue/utils/freshness.js +2 -2
  834. package/dist/features/catalogue/utils/product-from-item.js +1 -1
  835. package/dist/features/categories/actions/category-actions.js +3 -3
  836. package/dist/features/categories/actions/index.js +1 -1
  837. package/dist/features/categories/api/[id]/description-template/route.d.ts +45 -0
  838. package/dist/features/categories/api/[id]/description-template/route.js +252 -0
  839. package/dist/features/categories/api/[id]/route.js +4 -4
  840. package/dist/features/categories/api/route.js +160 -15
  841. package/dist/features/categories/columns/index.js +1 -1
  842. package/dist/features/categories/components/BrandDetailPageView.js +60 -18
  843. package/dist/features/categories/components/BrandDetailTabs.js +9 -9
  844. package/dist/features/categories/components/BreadcrumbTrail.js +2 -2
  845. package/dist/features/categories/components/BundleBuyNowCta.js +7 -7
  846. package/dist/features/categories/components/BundleCollage.js +7 -7
  847. package/dist/features/categories/components/BundleDetailView.js +10 -10
  848. package/dist/features/categories/components/BundleDynamicRuleEditor.js +5 -5
  849. package/dist/features/categories/components/BundleItemsPicker.js +4 -4
  850. package/dist/features/categories/components/BundlesListView.js +6 -6
  851. package/dist/features/categories/components/CategoriesIndexListing.js +9 -9
  852. package/dist/features/categories/components/CategoriesIndexPageView.js +3 -3
  853. package/dist/features/categories/components/CategoryBundlesListing.js +6 -6
  854. package/dist/features/categories/components/CategoryDetailPageView.js +160 -27
  855. package/dist/features/categories/components/CategoryDetailTabs.js +10 -10
  856. package/dist/features/categories/components/CategoryFilters.js +4 -4
  857. package/dist/features/categories/components/CategoryForm.js +6 -6
  858. package/dist/features/categories/components/CategoryGrid.js +4 -4
  859. package/dist/features/categories/components/CategoryHighlightsAndFaqSection.js +2 -2
  860. package/dist/features/categories/components/CategoryProductsListing.js +17 -17
  861. package/dist/features/categories/components/CategoryProductsView.js +3 -3
  862. package/dist/features/categories/components/CategorySelectorCreate.js +7 -7
  863. package/dist/features/categories/components/CategorySortSelect.js +2 -2
  864. package/dist/features/categories/components/CategoryStoresListing.js +3 -3
  865. package/dist/features/categories/components/CategoryTableColumns.js +3 -3
  866. package/dist/features/categories/components/CategoryTemplatePicker.d.ts +65 -0
  867. package/dist/features/categories/components/CategoryTemplatePicker.js +170 -0
  868. package/dist/features/categories/components/CategoryTree.js +1 -1
  869. package/dist/features/categories/components/ConcernCard.js +2 -2
  870. package/dist/features/categories/components/ConcernGrid.js +2 -2
  871. package/dist/features/categories/components/index.js +20 -20
  872. package/dist/features/categories/constants/listing-categories.d.ts +17 -0
  873. package/dist/features/categories/constants/listing-categories.js +53 -0
  874. package/dist/features/categories/hooks/useCategories.js +3 -3
  875. package/dist/features/categories/hooks/useCategorySelector.js +2 -2
  876. package/dist/features/categories/hooks/useCategoryTree.js +30 -4
  877. package/dist/features/categories/index.js +7 -7
  878. package/dist/features/categories/repository/categories.repository.d.ts +62 -11
  879. package/dist/features/categories/repository/categories.repository.js +183 -40
  880. package/dist/features/categories/repository/price-index.repository.d.ts +184 -0
  881. package/dist/features/categories/repository/price-index.repository.js +115 -0
  882. package/dist/features/categories/schemas/bundle-form.js +3 -3
  883. package/dist/features/categories/schemas/category-content.d.ts +206 -0
  884. package/dist/features/categories/schemas/category-content.js +28 -0
  885. package/dist/features/categories/schemas/firestore.d.ts +74 -5
  886. package/dist/features/categories/schemas/firestore.js +76 -5
  887. package/dist/features/categories/schemas/index.d.ts +1047 -0
  888. package/dist/features/categories/schemas/index.js +98 -2
  889. package/dist/features/categories/server.d.ts +1 -0
  890. package/dist/features/categories/server.js +11 -4
  891. package/dist/features/categories/types/index.d.ts +9 -0
  892. package/dist/features/checkout/actions/checkout-value-otp-actions.js +13 -13
  893. package/dist/features/checkout/actions/index.js +1 -1
  894. package/dist/features/checkout/components/CheckoutStepper.js +1 -1
  895. package/dist/features/checkout/components/index.js +1 -1
  896. package/dist/features/checkout/index.js +4 -4
  897. package/dist/features/checkout/repository/failed-checkout.repository.js +2 -2
  898. package/dist/features/checkout/schemas/index.js +1 -1
  899. package/dist/features/checkout/server.js +2 -2
  900. package/dist/features/classified/components/ClassifiedDetailPageView.js +22 -22
  901. package/dist/features/classified/components/ClassifiedFilters.js +4 -4
  902. package/dist/features/classified/components/index.js +1 -1
  903. package/dist/features/collections/api/[slug]/route.js +2 -2
  904. package/dist/features/collections/api/route.js +2 -2
  905. package/dist/features/collections/columns/index.js +1 -1
  906. package/dist/features/collections/components/CollectionCard.js +3 -3
  907. package/dist/features/collections/components/index.js +1 -1
  908. package/dist/features/collections/hooks/useCollections.js +2 -2
  909. package/dist/features/collections/index.js +6 -6
  910. package/dist/features/consultation/api/[id]/route.js +2 -2
  911. package/dist/features/consultation/api/route.js +2 -2
  912. package/dist/features/consultation/columns/index.js +1 -1
  913. package/dist/features/consultation/components/ConsultationForm.js +6 -6
  914. package/dist/features/consultation/components/index.js +1 -1
  915. package/dist/features/consultation/hooks/useBookConsultation.js +2 -2
  916. package/dist/features/consultation/index.js +6 -6
  917. package/dist/features/consultation/schemas/index.d.ts +2 -2
  918. package/dist/features/consultation/schemas/index.js +1 -1
  919. package/dist/features/consultation/server.js +1 -1
  920. package/dist/features/contact/components/ContactForm.js +4 -4
  921. package/dist/features/contact/components/ContactInfoSidebar.js +1 -1
  922. package/dist/features/contact/components/ContactPageView.js +6 -6
  923. package/dist/features/contact/components/index.js +3 -3
  924. package/dist/features/contact/email.js +9 -9
  925. package/dist/features/contact/index.js +2 -2
  926. package/dist/features/contact/schemas/inquiry-forms.js +1 -1
  927. package/dist/features/contact/server.js +1 -1
  928. package/dist/features/copilot/components/AdminCopilotView.js +4 -4
  929. package/dist/features/copilot/components/index.js +1 -1
  930. package/dist/features/copilot/hooks/useCopilotChat.js +2 -2
  931. package/dist/features/copilot/hooks/useCopilotFeedback.js +2 -2
  932. package/dist/features/copilot/index.js +3 -3
  933. package/dist/features/corporate/api/[id]/route.js +2 -2
  934. package/dist/features/corporate/api/route.js +2 -2
  935. package/dist/features/corporate/columns/index.js +1 -1
  936. package/dist/features/corporate/components/CorporateInquiryForm.js +7 -7
  937. package/dist/features/corporate/components/index.js +1 -1
  938. package/dist/features/corporate/hooks/useSubmitCorporateInquiry.js +2 -2
  939. package/dist/features/corporate/index.js +6 -6
  940. package/dist/features/corporate/schemas/index.js +1 -1
  941. package/dist/features/corporate/server.js +1 -1
  942. package/dist/features/cron/index.js +4 -4
  943. package/dist/features/cron/jobs/auction-expiry.job.js +3 -3
  944. package/dist/features/cron/jobs/preorder-reminder.job.js +3 -3
  945. package/dist/features/digital-codes/components/DigitalCodeDetailPageView.js +20 -20
  946. package/dist/features/digital-codes/components/DigitalCodeFilters.js +4 -4
  947. package/dist/features/digital-codes/components/index.js +1 -1
  948. package/dist/features/email/index.js +1 -1
  949. package/dist/features/email/notification-templates.js +1 -1
  950. package/dist/features/events/actions/event-actions.js +10 -10
  951. package/dist/features/events/actions/index.js +1 -1
  952. package/dist/features/events/api/[id]/route.js +4 -4
  953. package/dist/features/events/columns/index.js +1 -1
  954. package/dist/features/events/components/AdminEventEditorView.js +10 -10
  955. package/dist/features/events/components/AdminEventEntriesView.js +9 -9
  956. package/dist/features/events/components/AdminEventsView.js +8 -8
  957. package/dist/features/events/components/EventBanner.js +4 -4
  958. package/dist/features/events/components/EventCard.js +8 -8
  959. package/dist/features/events/components/EventDetailView.js +1 -1
  960. package/dist/features/events/components/EventFilters.js +8 -8
  961. package/dist/features/events/components/EventFormDrawer.js +1 -1
  962. package/dist/features/events/components/EventLeaderboard.js +1 -1
  963. package/dist/features/events/components/EventOfferCard.js +5 -5
  964. package/dist/features/events/components/EventParticipateView.js +2 -2
  965. package/dist/features/events/components/EventPollWidget.js +5 -5
  966. package/dist/features/events/components/EventRaffleEntryForm.js +7 -7
  967. package/dist/features/events/components/EventRaffleWinnerView.js +1 -1
  968. package/dist/features/events/components/EventRafflesSection.js +8 -8
  969. package/dist/features/events/components/EventSaleBanner.js +4 -4
  970. package/dist/features/events/components/EventStatusBadge.js +1 -1
  971. package/dist/features/events/components/EventsIndexListing.js +9 -9
  972. package/dist/features/events/components/EventsListPageView.js +9 -9
  973. package/dist/features/events/components/EventsListView.js +2 -2
  974. package/dist/features/events/components/RelatedEventsCarousel.js +6 -6
  975. package/dist/features/events/components/SpinWheelView.js +4 -4
  976. package/dist/features/events/components/index.js +21 -21
  977. package/dist/features/events/hooks/useBulkEvent.js +1 -1
  978. package/dist/features/events/hooks/useEvent.js +2 -2
  979. package/dist/features/events/hooks/useEvents.js +2 -2
  980. package/dist/features/events/index.js +8 -8
  981. package/dist/features/events/repository/event-entry.repository.js +6 -6
  982. package/dist/features/events/repository/events.repository.js +10 -10
  983. package/dist/features/events/schemas/event-form.js +1 -1
  984. package/dist/features/events/schemas/firestore.d.ts +2 -2
  985. package/dist/features/events/schemas/index.js +3 -3
  986. package/dist/features/events/server.js +4 -4
  987. package/dist/features/faq/actions/faq-actions.js +3 -3
  988. package/dist/features/faq/actions/index.js +1 -1
  989. package/dist/features/faq/columns/index.js +1 -1
  990. package/dist/features/faq/components/ContactCTA.js +1 -1
  991. package/dist/features/faq/components/FAQAccordion.js +1 -1
  992. package/dist/features/faq/components/FAQCategorySidebar.js +2 -2
  993. package/dist/features/faq/components/FAQHelpfulButtons.js +2 -2
  994. package/dist/features/faq/components/FAQPageContent.js +7 -7
  995. package/dist/features/faq/components/FAQSearchableList.js +2 -2
  996. package/dist/features/faq/components/FAQSortDropdown.js +1 -1
  997. package/dist/features/faq/components/RelatedFAQs.js +1 -1
  998. package/dist/features/faq/components/index.js +7 -7
  999. package/dist/features/faq/hooks/useFaqList.js +2 -2
  1000. package/dist/features/faq/hooks/useFaqVote.js +2 -2
  1001. package/dist/features/faq/index.js +7 -7
  1002. package/dist/features/faq/repository/faqs.repository.js +6 -6
  1003. package/dist/features/faq/schemas/firestore.d.ts +2 -1
  1004. package/dist/features/faq/schemas/firestore.js +22 -9
  1005. package/dist/features/faq/schemas/index.js +2 -2
  1006. package/dist/features/faq/server.js +2 -2
  1007. package/dist/features/faq/types/index.d.ts +9 -1
  1008. package/dist/features/faq/utils/getHomepageFaqsCached.js +1 -1
  1009. package/dist/features/filters/AsyncFacetSection.js +2 -2
  1010. package/dist/features/filters/FilterFacetSection.js +2 -2
  1011. package/dist/features/filters/FilterPanel.js +5 -5
  1012. package/dist/features/filters/RangeFilter.js +2 -2
  1013. package/dist/features/filters/SwitchFilter.js +2 -2
  1014. package/dist/features/filters/index.js +8 -8
  1015. package/dist/features/forms/Checkbox.js +3 -3
  1016. package/dist/features/forms/Input.js +3 -3
  1017. package/dist/features/forms/Radio.js +2 -2
  1018. package/dist/features/forms/Select.js +3 -3
  1019. package/dist/features/forms/Slider.js +3 -3
  1020. package/dist/features/forms/Textarea.js +3 -3
  1021. package/dist/features/forms/Toggle.js +2 -2
  1022. package/dist/features/forms/index.js +8 -8
  1023. package/dist/features/grouped/components/GroupedListingDetailView.js +3 -3
  1024. package/dist/features/grouped/components/GroupedListingEditorView.js +12 -12
  1025. package/dist/features/grouped/components/GroupedListingsCarousel.js +7 -7
  1026. package/dist/features/grouped/repository/grouped-listings.repository.js +3 -3
  1027. package/dist/features/grouped/schemas/grouped-listing-form.js +1 -1
  1028. package/dist/features/grouped/schemas/index.d.ts +2 -2
  1029. package/dist/features/grouped/schemas/index.js +2 -2
  1030. package/dist/features/history/actions/history-actions.js +2 -2
  1031. package/dist/features/history/actions/index.js +1 -1
  1032. package/dist/features/history/components/HistoryTracker.js +2 -2
  1033. package/dist/features/history/hooks/useHistory.js +4 -4
  1034. package/dist/features/history/hooks/useHistoryMergeOnLogin.js +2 -2
  1035. package/dist/features/history/index.js +4 -4
  1036. package/dist/features/history/repository/user-history.repository.js +3 -3
  1037. package/dist/features/history/server.js +2 -2
  1038. package/dist/features/history/utils/guest-history.js +2 -2
  1039. package/dist/features/homepage/actions/carousel-actions.js +3 -3
  1040. package/dist/features/homepage/actions/homepage-section-actions.js +5 -5
  1041. package/dist/features/homepage/actions/index.js +2 -2
  1042. package/dist/features/homepage/api/[id]/route.js +3 -3
  1043. package/dist/features/homepage/api/carousel/[id]/route.js +4 -4
  1044. package/dist/features/homepage/api/carousel/route.js +4 -4
  1045. package/dist/features/homepage/api/route.js +4 -4
  1046. package/dist/features/homepage/api/sections/[id]/route.js +2 -2
  1047. package/dist/features/homepage/api/sections/route.js +2 -2
  1048. package/dist/features/homepage/components/AdSlot.js +5 -5
  1049. package/dist/features/homepage/components/AdvertisementBanner.js +4 -4
  1050. package/dist/features/homepage/components/AnnouncementBar.js +3 -3
  1051. package/dist/features/homepage/components/BeforeAfterCard.js +3 -3
  1052. package/dist/features/homepage/components/BlogArticlesSection.js +6 -6
  1053. package/dist/features/homepage/components/BrandsSection.js +8 -8
  1054. package/dist/features/homepage/components/CTABannerSection.js +5 -5
  1055. package/dist/features/homepage/components/CharacterHotspot.js +7 -7
  1056. package/dist/features/homepage/components/CharacterHotspotForm.js +7 -7
  1057. package/dist/features/homepage/components/CollectionCardsSection.js +2 -2
  1058. package/dist/features/homepage/components/CustomCardsSection.js +5 -5
  1059. package/dist/features/homepage/components/CustomerReviewsSection.js +4 -4
  1060. package/dist/features/homepage/components/EventsSection.js +4 -4
  1061. package/dist/features/homepage/components/FAQSection.js +3 -3
  1062. package/dist/features/homepage/components/FeaturedAuctionsSection.js +5 -5
  1063. package/dist/features/homepage/components/FeaturedBundlesSection.js +9 -9
  1064. package/dist/features/homepage/components/FeaturedPreOrdersSection.js +5 -5
  1065. package/dist/features/homepage/components/FeaturedProductsSection.js +6 -6
  1066. package/dist/features/homepage/components/FeaturedResultsSection.js +3 -3
  1067. package/dist/features/homepage/components/FeaturedStoresSection.js +5 -5
  1068. package/dist/features/homepage/components/GoogleReviewsSection.js +6 -6
  1069. package/dist/features/homepage/components/HeroBanner.js +4 -4
  1070. package/dist/features/homepage/components/HeroCarousel.js +7 -7
  1071. package/dist/features/homepage/components/HeroSection.js +1 -1
  1072. package/dist/features/homepage/components/HomepageCustomerReviewsSection.js +4 -4
  1073. package/dist/features/homepage/components/HomepageSectionBoundary.js +1 -1
  1074. package/dist/features/homepage/components/HomepageSkeleton.js +3 -3
  1075. package/dist/features/homepage/components/HomepageView.js +1 -1
  1076. package/dist/features/homepage/components/HowItWorksInfoView.js +3 -3
  1077. package/dist/features/homepage/components/HowItWorksSection.js +2 -2
  1078. package/dist/features/homepage/components/MarketplaceHomepageView.js +17 -17
  1079. package/dist/features/homepage/components/NewsletterBanner.js +7 -7
  1080. package/dist/features/homepage/components/NewsletterSection.js +1 -1
  1081. package/dist/features/homepage/components/PromoGrid.js +4 -4
  1082. package/dist/features/homepage/components/SectionCarousel.js +6 -6
  1083. package/dist/features/homepage/components/SecurityHighlightsSection.js +2 -2
  1084. package/dist/features/homepage/components/ShopByCategorySection.js +8 -8
  1085. package/dist/features/homepage/components/SiteFeaturesSection.js +2 -2
  1086. package/dist/features/homepage/components/SocialFeedSection.js +6 -6
  1087. package/dist/features/homepage/components/SocialPostCard.js +2 -2
  1088. package/dist/features/homepage/components/StatsCounterSection.js +1 -1
  1089. package/dist/features/homepage/components/TestimonialsCarousel.js +1 -1
  1090. package/dist/features/homepage/components/TrustBadges.js +1 -1
  1091. package/dist/features/homepage/components/TrustFeaturesSection.js +1 -1
  1092. package/dist/features/homepage/components/TrustIndicatorsSection.js +2 -2
  1093. package/dist/features/homepage/components/WelcomeSection.js +2 -2
  1094. package/dist/features/homepage/components/WhatsAppCommunitySection.js +3 -3
  1095. package/dist/features/homepage/components/index.js +39 -39
  1096. package/dist/features/homepage/constants/faq-category-labels.d.ts +0 -14
  1097. package/dist/features/homepage/constants/faq-category-labels.js +22 -14
  1098. package/dist/features/homepage/hooks/homepage-query.js +1 -1
  1099. package/dist/features/homepage/hooks/useActiveAd.js +2 -2
  1100. package/dist/features/homepage/hooks/useBlogArticles.js +2 -2
  1101. package/dist/features/homepage/hooks/useFeaturedAuctions.js +5 -5
  1102. package/dist/features/homepage/hooks/useFeaturedPreOrders.js +5 -5
  1103. package/dist/features/homepage/hooks/useFeaturedProducts.js +5 -5
  1104. package/dist/features/homepage/hooks/useFeaturedStores.js +2 -2
  1105. package/dist/features/homepage/hooks/useHeroCarousel.js +2 -2
  1106. package/dist/features/homepage/hooks/useHomepage.js +2 -2
  1107. package/dist/features/homepage/hooks/useHomepageEvents.js +2 -2
  1108. package/dist/features/homepage/hooks/useHomepageReviews.d.ts +1 -1
  1109. package/dist/features/homepage/hooks/useHomepageReviews.js +2 -2
  1110. package/dist/features/homepage/hooks/useHomepageSections.js +2 -2
  1111. package/dist/features/homepage/hooks/useNewsletter.js +2 -2
  1112. package/dist/features/homepage/hooks/useTopBrands.js +2 -2
  1113. package/dist/features/homepage/hooks/useTopCategories.js +2 -2
  1114. package/dist/features/homepage/index.js +17 -17
  1115. package/dist/features/homepage/lib/live-stats.js +5 -5
  1116. package/dist/features/homepage/lib/section-helpers.js +1 -1
  1117. package/dist/features/homepage/lib/section-renderer.js +32 -32
  1118. package/dist/features/homepage/repository/carousel.repository.js +6 -6
  1119. package/dist/features/homepage/repository/carousels.repository.js +6 -6
  1120. package/dist/features/homepage/repository/homepage-sections.repository.js +5 -5
  1121. package/dist/features/homepage/schemas/firestore.d.ts +26 -1
  1122. package/dist/features/homepage/schemas/firestore.js +1 -1
  1123. package/dist/features/homepage/schemas/index.js +2 -2
  1124. package/dist/features/homepage/server.js +9 -9
  1125. package/dist/features/jobs/actions/enqueue-job.js +6 -6
  1126. package/dist/features/jobs/repository/jobs.repository.js +2 -2
  1127. package/dist/features/layout/AppLayoutShell.js +18 -18
  1128. package/dist/features/layout/AutoBreadcrumbs.js +3 -3
  1129. package/dist/features/layout/BackToTop.js +4 -4
  1130. package/dist/features/layout/BottomActions.js +3 -3
  1131. package/dist/features/layout/BottomChrome.js +2 -2
  1132. package/dist/features/layout/BottomNavItem.js +1 -1
  1133. package/dist/features/layout/BottomNavLayout.js +2 -2
  1134. package/dist/features/layout/BottomNavbar.js +6 -6
  1135. package/dist/features/layout/BottomSheet.js +1 -1
  1136. package/dist/features/layout/Breadcrumbs.js +2 -2
  1137. package/dist/features/layout/FooterLayout.js +2 -2
  1138. package/dist/features/layout/LocaleSwitcher.js +1 -1
  1139. package/dist/features/layout/MainNavbar.d.ts +6 -0
  1140. package/dist/features/layout/MainNavbar.js +3 -2
  1141. package/dist/features/layout/NavItem.js +2 -2
  1142. package/dist/features/layout/NavbarLayout.d.ts +19 -0
  1143. package/dist/features/layout/NavbarLayout.js +24 -5
  1144. package/dist/features/layout/NavbarWithSettings.js +3 -3
  1145. package/dist/features/layout/PageTabs.js +2 -2
  1146. package/dist/features/layout/SidebarLayout.js +2 -2
  1147. package/dist/features/layout/TitleBar.js +6 -6
  1148. package/dist/features/layout/TitleBarLayout.js +2 -2
  1149. package/dist/features/layout/hooks/useBottomActions.js +1 -1
  1150. package/dist/features/layout/hooks/useFormBottomActions.js +4 -4
  1151. package/dist/features/layout/index.js +23 -23
  1152. package/dist/features/live/components/LiveItemDetailPageView.js +20 -20
  1153. package/dist/features/live/components/LiveItemFilters.js +4 -4
  1154. package/dist/features/live/components/index.js +1 -1
  1155. package/dist/features/lottery/repository/lottery-entry.repository.js +6 -6
  1156. package/dist/features/lottery/schemas/config-write.js +1 -1
  1157. package/dist/features/lottery/schemas/zod.d.ts +8 -8
  1158. package/dist/features/loyalty/api/admin/loyalty/grant/route.js +2 -2
  1159. package/dist/features/loyalty/api/balance/route.js +2 -2
  1160. package/dist/features/loyalty/api/earn/route.js +2 -2
  1161. package/dist/features/loyalty/api/history/route.js +2 -2
  1162. package/dist/features/loyalty/api/redeem/route.js +2 -2
  1163. package/dist/features/loyalty/columns/index.js +1 -1
  1164. package/dist/features/loyalty/components/CoinsDisplay.js +1 -1
  1165. package/dist/features/loyalty/components/index.js +1 -1
  1166. package/dist/features/loyalty/hooks/useLoyaltyBalance.js +3 -3
  1167. package/dist/features/loyalty/index.js +6 -6
  1168. package/dist/features/loyalty/server.js +1 -1
  1169. package/dist/features/loyalty/types/index.js +1 -1
  1170. package/dist/features/media/AvatarUpload.js +6 -6
  1171. package/dist/features/media/MediaAudio.js +2 -2
  1172. package/dist/features/media/MediaAvatar.js +2 -2
  1173. package/dist/features/media/MediaImage.js +4 -4
  1174. package/dist/features/media/MediaLightbox.js +2 -2
  1175. package/dist/features/media/MediaPickerModal.js +7 -7
  1176. package/dist/features/media/MediaVideo.js +3 -3
  1177. package/dist/features/media/finalize.js +3 -3
  1178. package/dist/features/media/hooks/useMedia.js +3 -3
  1179. package/dist/features/media/index.js +17 -17
  1180. package/dist/features/media/modals/ImageCropModal.js +2 -2
  1181. package/dist/features/media/modals/ImageEditor.d.ts +0 -1
  1182. package/dist/features/media/modals/ImageEditor.js +18 -3
  1183. package/dist/features/media/modals/VideoThumbnailSelector.js +3 -3
  1184. package/dist/features/media/modals/VideoTrimModal.js +5 -5
  1185. package/dist/features/media/repository/media-assets.repository.js +1 -1
  1186. package/dist/features/media/server.js +1 -1
  1187. package/dist/features/media/types/index.js +1 -1
  1188. package/dist/features/media/upload/CameraCapture.js +2 -2
  1189. package/dist/features/media/upload/ImageUpload.js +9 -9
  1190. package/dist/features/media/upload/MediaUploadField.js +11 -11
  1191. package/dist/features/media/upload/MediaUploadList.js +6 -6
  1192. package/dist/features/media/upload/video-poster.js +1 -1
  1193. package/dist/features/messaging/repository/message-budget.repository.js +2 -2
  1194. package/dist/features/orders/actions/index.js +2 -2
  1195. package/dist/features/orders/actions/order-actions.js +5 -5
  1196. package/dist/features/orders/actions/refund-actions.js +6 -6
  1197. package/dist/features/orders/api/track/[trackingId]/route.js +2 -2
  1198. package/dist/features/orders/columns/index.js +1 -1
  1199. package/dist/features/orders/components/MarketplaceOrderCard.js +4 -4
  1200. package/dist/features/orders/components/OrderAddonBadges.d.ts +4 -2
  1201. package/dist/features/orders/components/OrderAddonBadges.js +5 -4
  1202. package/dist/features/orders/components/OrderFilters.js +6 -6
  1203. package/dist/features/orders/components/OrderPaymentSummary.js +2 -2
  1204. package/dist/features/orders/components/OrderScopeTabs.js +4 -4
  1205. package/dist/features/orders/components/OrderSiblingPayments.js +5 -5
  1206. package/dist/features/orders/components/OrderStatusTimeline.js +2 -2
  1207. package/dist/features/orders/components/OrdersList.js +5 -5
  1208. package/dist/features/orders/components/RefundHistoryTable.js +3 -3
  1209. package/dist/features/orders/components/RefundRequestView.js +8 -8
  1210. package/dist/features/orders/components/index.js +9 -9
  1211. package/dist/features/orders/constants/order-scope.js +1 -1
  1212. package/dist/features/orders/hooks/useOrders.js +2 -2
  1213. package/dist/features/orders/index.js +9 -9
  1214. package/dist/features/orders/repository/orders.repository.d.ts +8 -0
  1215. package/dist/features/orders/repository/orders.repository.js +13 -11
  1216. package/dist/features/orders/schemas/buyer-forms.js +1 -1
  1217. package/dist/features/orders/schemas/firestore.d.ts +165 -1
  1218. package/dist/features/orders/schemas/firestore.js +1 -1
  1219. package/dist/features/orders/schemas/index.d.ts +6 -6
  1220. package/dist/features/orders/schemas/index.js +2 -2
  1221. package/dist/features/orders/server.js +3 -3
  1222. package/dist/features/orders/types/index.d.ts +58 -0
  1223. package/dist/features/orders/utils/order-splitter.js +2 -2
  1224. package/dist/features/payments/columns/index.js +1 -1
  1225. package/dist/features/payments/hooks/usePaymentEvent.js +2 -2
  1226. package/dist/features/payments/hooks/usePayments.js +2 -2
  1227. package/dist/features/payments/index.js +6 -6
  1228. package/dist/features/payments/repository/payout.repository.js +4 -4
  1229. package/dist/features/payments/repository/saved-payment-methods.repository.js +6 -6
  1230. package/dist/features/payments/schemas/firestore.js +1 -1
  1231. package/dist/features/payments/schemas/index.d.ts +6 -6
  1232. package/dist/features/payments/schemas/index.js +3 -3
  1233. package/dist/features/payments/server.js +4 -4
  1234. package/dist/features/pre-orders/api/[id]/route.js +2 -2
  1235. package/dist/features/pre-orders/api/[slug]/route.js +2 -2
  1236. package/dist/features/pre-orders/api/admin/[id]/route.js +2 -2
  1237. package/dist/features/pre-orders/api/admin/route.js +2 -2
  1238. package/dist/features/pre-orders/api/route.js +3 -3
  1239. package/dist/features/pre-orders/columns/index.js +1 -1
  1240. package/dist/features/pre-orders/components/MarketplacePreorderCard.d.ts +1 -1
  1241. package/dist/features/pre-orders/components/MarketplacePreorderCard.js +14 -14
  1242. package/dist/features/pre-orders/components/PreOrderActionsClient.js +4 -4
  1243. package/dist/features/pre-orders/components/PreOrderBadge.js +1 -1
  1244. package/dist/features/pre-orders/components/PreOrderBottomActions.js +1 -1
  1245. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +26 -26
  1246. package/dist/features/pre-orders/components/PreOrderFilters.js +4 -4
  1247. package/dist/features/pre-orders/components/PreOrdersIndexListing.js +23 -23
  1248. package/dist/features/pre-orders/components/PreOrdersListView.js +4 -4
  1249. package/dist/features/pre-orders/components/PreorderCard.js +2 -2
  1250. package/dist/features/pre-orders/components/index.js +6 -6
  1251. package/dist/features/pre-orders/hooks/usePreOrders.js +2 -2
  1252. package/dist/features/pre-orders/index.js +6 -6
  1253. package/dist/features/pre-orders/schemas/index.js +1 -1
  1254. package/dist/features/pre-orders/server.js +1 -1
  1255. package/dist/features/price-index/components/PriceIndexToolView.d.ts +87 -0
  1256. package/dist/features/price-index/components/PriceIndexToolView.js +140 -0
  1257. package/dist/features/products/actions/index.js +1 -1
  1258. package/dist/features/products/actions/product-actions.js +6 -6
  1259. package/dist/features/products/api/[id]/route.js +8 -8
  1260. package/dist/features/products/api/route.js +7 -7
  1261. package/dist/features/products/columns/index.d.ts +0 -1
  1262. package/dist/features/products/columns/index.js +7 -3
  1263. package/dist/features/products/columns/productTableColumns.js +3 -3
  1264. package/dist/features/products/components/ArtStickersListView.js +7 -7
  1265. package/dist/features/products/components/AuctionDetailView.js +1 -1
  1266. package/dist/features/products/components/AuctionsIndexListing.js +20 -20
  1267. package/dist/features/products/components/AvailabilityTabs.js +5 -5
  1268. package/dist/features/products/components/BidHistory.js +3 -3
  1269. package/dist/features/products/components/CardStoreLine.js +2 -2
  1270. package/dist/features/products/components/CompareOverlay.js +9 -9
  1271. package/dist/features/products/components/CustomFieldsEditor.js +2 -2
  1272. package/dist/features/products/components/CustomSectionTabContent.js +2 -2
  1273. package/dist/features/products/components/CustomSectionsEditor.js +3 -3
  1274. package/dist/features/products/components/FeatureBadge.js +2 -2
  1275. package/dist/features/products/components/GroupMemberPicker.js +9 -9
  1276. package/dist/features/products/components/GroupSettingsPanel.js +12 -12
  1277. package/dist/features/products/components/InteractiveProductCard.js +2 -2
  1278. package/dist/features/products/components/ListingBottomActions.js +4 -4
  1279. package/dist/features/products/components/MakeOfferButton.js +13 -13
  1280. package/dist/features/products/components/MarketplaceBundleCard.js +9 -9
  1281. package/dist/features/products/components/MarketplacePrizeDrawCard.js +9 -9
  1282. package/dist/features/products/components/NonRefundableConsentModal.js +1 -1
  1283. package/dist/features/products/components/PreOrderDetailView.js +1 -1
  1284. package/dist/features/products/components/PrizeDrawBottomActions.js +1 -1
  1285. package/dist/features/products/components/PrizeDrawCollage.js +4 -4
  1286. package/dist/features/products/components/PrizeDrawDetailPageView.js +18 -18
  1287. package/dist/features/products/components/PrizeDrawEntryActions.js +8 -8
  1288. package/dist/features/products/components/PrizeDrawItemsEditor.js +2 -2
  1289. package/dist/features/products/components/PrizeDrawWinnerMappingView.js +3 -3
  1290. package/dist/features/products/components/PrizeDrawsIndexListing.js +14 -14
  1291. package/dist/features/products/components/PrizeDrawsListingView.js +6 -6
  1292. package/dist/features/products/components/PrizeDrawsSection.js +6 -6
  1293. package/dist/features/products/components/PrizeRevealModal.js +3 -3
  1294. package/dist/features/products/components/ProductCardMetadataSection.js +1 -1
  1295. package/dist/features/products/components/ProductDetailActions.js +14 -14
  1296. package/dist/features/products/components/ProductDetailPageView.js +28 -28
  1297. package/dist/features/products/components/ProductDetailView.js +1 -1
  1298. package/dist/features/products/components/ProductFeatureBadges.js +1 -1
  1299. package/dist/features/products/components/ProductFeaturesSelector.js +5 -5
  1300. package/dist/features/products/components/ProductFilters.d.ts +0 -9
  1301. package/dist/features/products/components/ProductFilters.js +8 -8
  1302. package/dist/features/products/components/ProductForm.d.ts +27 -1
  1303. package/dist/features/products/components/ProductForm.js +41 -27
  1304. package/dist/features/products/components/ProductGalleryClient.js +3 -3
  1305. package/dist/features/products/components/ProductGradingTab.js +3 -3
  1306. package/dist/features/products/components/ProductGrid.js +16 -16
  1307. package/dist/features/products/components/ProductTabs.js +1 -1
  1308. package/dist/features/products/components/ProductTabsShell.js +2 -2
  1309. package/dist/features/products/components/ProductsIndexListing.js +33 -33
  1310. package/dist/features/products/components/ProductsIndexPageView.js +12 -12
  1311. package/dist/features/products/components/ProductsView.js +1 -1
  1312. package/dist/features/products/components/RelatedItemsSection.js +2 -2
  1313. package/dist/features/products/components/RelatedProducts.js +1 -1
  1314. package/dist/features/products/components/RelatedProductsCarousel.js +4 -4
  1315. package/dist/features/products/components/ShareButton.js +2 -2
  1316. package/dist/features/products/components/ShowGroupSection.js +8 -8
  1317. package/dist/features/products/components/SublistingCarouselSection.js +8 -8
  1318. package/dist/features/products/components/SublistingCategorySelect.js +2 -2
  1319. package/dist/features/products/components/index.js +42 -42
  1320. package/dist/features/products/config/listing-type-listing-config.js +7 -7
  1321. package/dist/features/products/constants/action-defs.js +1 -1
  1322. package/dist/features/products/constants/listing-tabs.js +2 -2
  1323. package/dist/features/products/constants/sieve.d.ts +0 -6
  1324. package/dist/features/products/constants/sieve.js +37 -4
  1325. package/dist/features/products/hooks/useAvailabilityScope.js +4 -4
  1326. package/dist/features/products/hooks/useBrands.d.ts +1 -1
  1327. package/dist/features/products/hooks/useBrands.js +2 -2
  1328. package/dist/features/products/hooks/useProductDetail.js +2 -2
  1329. package/dist/features/products/hooks/useProducts.js +5 -5
  1330. package/dist/features/products/hooks/useRelatedProducts.js +4 -4
  1331. package/dist/features/products/index.js +14 -14
  1332. package/dist/features/products/repository/loadProductFeatures.js +2 -2
  1333. package/dist/features/products/repository/product-features.repository.js +7 -7
  1334. package/dist/features/products/repository/product-templates.repository.js +3 -3
  1335. package/dist/features/products/repository/products.repository.d.ts +140 -1
  1336. package/dist/features/products/repository/products.repository.js +616 -52
  1337. package/dist/features/products/schemas/firestore.d.ts +91 -6
  1338. package/dist/features/products/schemas/firestore.js +27 -1
  1339. package/dist/features/products/schemas/index.d.ts +2 -2
  1340. package/dist/features/products/schemas/index.js +3 -3
  1341. package/dist/features/products/schemas/product-features.d.ts +140 -2
  1342. package/dist/features/products/schemas/product-features.js +62 -1
  1343. package/dist/features/products/schemas/product-features.validators.js +1 -1
  1344. package/dist/features/products/server.js +4 -4
  1345. package/dist/features/products/utils/listing-badge-variant.js +1 -1
  1346. package/dist/features/products/utils/listing-type.js +1 -1
  1347. package/dist/features/promotions/actions/coupon-actions.js +2 -2
  1348. package/dist/features/promotions/actions/index.js +4 -4
  1349. package/dist/features/promotions/actions/promotions-actions.js +3 -3
  1350. package/dist/features/promotions/actions/seller-coupon-actions.js +5 -5
  1351. package/dist/features/promotions/api/route.js +2 -2
  1352. package/dist/features/promotions/columns/index.js +1 -1
  1353. package/dist/features/promotions/components/CouponCard.js +4 -4
  1354. package/dist/features/promotions/components/CouponHelpDetails.js +2 -2
  1355. package/dist/features/promotions/components/CouponsIndexListing.js +8 -8
  1356. package/dist/features/promotions/components/PromotionsView.js +1 -1
  1357. package/dist/features/promotions/components/index.js +4 -4
  1358. package/dist/features/promotions/hooks/useCouponValidate.js +2 -2
  1359. package/dist/features/promotions/hooks/usePromotions.js +2 -2
  1360. package/dist/features/promotions/index.js +7 -7
  1361. package/dist/features/promotions/repository/claimed-coupons.repository.js +5 -5
  1362. package/dist/features/promotions/repository/coupons.repository.js +15 -10
  1363. package/dist/features/promotions/schemas/firestore.d.ts +44 -1
  1364. package/dist/features/promotions/schemas/firestore.js +77 -3
  1365. package/dist/features/promotions/schemas/index.d.ts +24 -24
  1366. package/dist/features/promotions/schemas/index.js +2 -2
  1367. package/dist/features/promotions/server.js +3 -3
  1368. package/dist/features/reviews/actions/index.js +1 -1
  1369. package/dist/features/reviews/actions/review-actions.js +9 -9
  1370. package/dist/features/reviews/api/[id]/route.js +5 -5
  1371. package/dist/features/reviews/columns/index.js +1 -1
  1372. package/dist/features/reviews/components/ReviewDetailPageView.js +7 -7
  1373. package/dist/features/reviews/components/ReviewDetailShell.js +11 -11
  1374. package/dist/features/reviews/components/ReviewFilters.js +7 -7
  1375. package/dist/features/reviews/components/ReviewModal.js +7 -7
  1376. package/dist/features/reviews/components/ReviewSummary.js +3 -3
  1377. package/dist/features/reviews/components/ReviewsIndexListing.js +1 -1
  1378. package/dist/features/reviews/components/ReviewsIndexPageView.js +5 -5
  1379. package/dist/features/reviews/components/ReviewsList.js +9 -9
  1380. package/dist/features/reviews/components/ReviewsListingPanel.js +10 -10
  1381. package/dist/features/reviews/components/index.js +6 -6
  1382. package/dist/features/reviews/hooks/useCreateReview.js +3 -3
  1383. package/dist/features/reviews/hooks/useReviews.js +2 -2
  1384. package/dist/features/reviews/index.js +7 -7
  1385. package/dist/features/reviews/repository/reviews.repository.js +7 -7
  1386. package/dist/features/reviews/schemas/firestore.js +1 -1
  1387. package/dist/features/reviews/schemas/index.js +2 -2
  1388. package/dist/features/reviews/server.js +3 -3
  1389. package/dist/features/scams/actions/scam-actions.js +5 -5
  1390. package/dist/features/scams/components/ScamAwarenessModal.js +5 -5
  1391. package/dist/features/scams/components/ScamProfileView.js +8 -8
  1392. package/dist/features/scams/components/ScamRegistryView.js +7 -7
  1393. package/dist/features/scams/components/SellerTrustBadge.js +3 -3
  1394. package/dist/features/scams/components/index.js +4 -4
  1395. package/dist/features/scams/constants/scammer-status-display.js +1 -1
  1396. package/dist/features/scams/repository/scammer.repository.js +10 -10
  1397. package/dist/features/scams/schemas/index.d.ts +10 -10
  1398. package/dist/features/scams/schemas/index.js +2 -2
  1399. package/dist/features/scams/schemas/report-form.js +1 -1
  1400. package/dist/features/search/action-index/repository.js +2 -2
  1401. package/dist/features/search/actions/index.js +1 -1
  1402. package/dist/features/search/actions/search-actions.js +2 -2
  1403. package/dist/features/search/api/route.js +5 -5
  1404. package/dist/features/search/columns/index.js +1 -1
  1405. package/dist/features/search/components/Search.js +2 -2
  1406. package/dist/features/search/components/SearchFiltersRow.js +1 -1
  1407. package/dist/features/search/components/SearchResultsSection.js +1 -1
  1408. package/dist/features/search/components/SearchView.js +1 -1
  1409. package/dist/features/search/components/index.js +4 -4
  1410. package/dist/features/search/hooks/useNavSuggestions.js +2 -2
  1411. package/dist/features/search/hooks/useSearch.js +2 -2
  1412. package/dist/features/search/index.js +7 -7
  1413. package/dist/features/search/repository/search.repository.js +2 -2
  1414. package/dist/features/search/server.js +4 -4
  1415. package/dist/features/seller/actions/index.js +2 -2
  1416. package/dist/features/seller/actions/offer-actions.js +14 -14
  1417. package/dist/features/seller/actions/seller-actions.js +38 -23
  1418. package/dist/features/seller/api/coupons/route.js +2 -2
  1419. package/dist/features/seller/api/products/route.js +3 -3
  1420. package/dist/features/seller/api/store/route.js +2 -2
  1421. package/dist/features/seller/columns/index.js +1 -1
  1422. package/dist/features/seller/components/BarcodeField.js +3 -3
  1423. package/dist/features/seller/components/BrandInlineSelect.js +4 -4
  1424. package/dist/features/seller/components/BulkStockModal.d.ts +16 -0
  1425. package/dist/features/seller/components/BulkStockModal.js +46 -0
  1426. package/dist/features/seller/components/CategoryChipPicker.js +2 -2
  1427. package/dist/features/seller/components/CategoryInlineSelect.js +4 -4
  1428. package/dist/features/seller/components/CouponInlineSelect.js +3 -3
  1429. package/dist/features/seller/components/FulfillmentView.js +9 -9
  1430. package/dist/features/seller/components/GroupInlineSelect.js +4 -4
  1431. package/dist/features/seller/components/OfferPhaseTimeline.js +1 -1
  1432. package/dist/features/seller/components/PhysicalLocationModal.js +22 -7
  1433. package/dist/features/seller/components/PrintCenterView.d.ts +3 -2
  1434. package/dist/features/seller/components/PrintCenterView.js +8 -7
  1435. package/dist/features/seller/components/ProductInlineSelect.js +3 -3
  1436. package/dist/features/seller/components/QuickProductForm.js +2 -2
  1437. package/dist/features/seller/components/SellerAddressesView.js +9 -9
  1438. package/dist/features/seller/components/SellerAnalyticsAlertsView.js +31 -21
  1439. package/dist/features/seller/components/SellerAnalyticsView.js +1 -1
  1440. package/dist/features/seller/components/SellerArtView.js +1 -1
  1441. package/dist/features/seller/components/SellerBidsView.js +14 -14
  1442. package/dist/features/seller/components/SellerBundlesView.js +7 -7
  1443. package/dist/features/seller/components/SellerClassifiedView.js +1 -1
  1444. package/dist/features/seller/components/SellerCouponEditorView.js +10 -10
  1445. package/dist/features/seller/components/SellerCouponsView.js +7 -7
  1446. package/dist/features/seller/components/SellerCreateProductView.js +1 -1
  1447. package/dist/features/seller/components/SellerDashboardView.js +1 -1
  1448. package/dist/features/seller/components/SellerDigitalCodesView.js +1 -1
  1449. package/dist/features/seller/components/SellerEditProductView.js +1 -1
  1450. package/dist/features/seller/components/SellerFeaturesView.js +8 -8
  1451. package/dist/features/seller/components/SellerGoogleReviewsView.js +8 -8
  1452. package/dist/features/seller/components/SellerGroupedListingsView.js +6 -6
  1453. package/dist/features/seller/components/SellerGuideView.js +1 -1
  1454. package/dist/features/seller/components/SellerListingTypeView.js +13 -13
  1455. package/dist/features/seller/components/SellerLiveView.js +1 -1
  1456. package/dist/features/seller/components/SellerOffersView.js +9 -9
  1457. package/dist/features/seller/components/SellerOrdersView.js +28 -23
  1458. package/dist/features/seller/components/SellerPayoutHistoryTable.js +1 -1
  1459. package/dist/features/seller/components/SellerPayoutMethodsView.js +7 -7
  1460. package/dist/features/seller/components/SellerPayoutRequestView.js +3 -3
  1461. package/dist/features/seller/components/SellerPayoutSettingsView.js +46 -8
  1462. package/dist/features/seller/components/SellerPayoutStats.js +1 -1
  1463. package/dist/features/seller/components/SellerPayoutsView.js +11 -11
  1464. package/dist/features/seller/components/SellerProductShell.d.ts +50 -2
  1465. package/dist/features/seller/components/SellerProductShell.js +114 -22
  1466. package/dist/features/seller/components/SellerProductsCards.js +5 -5
  1467. package/dist/features/seller/components/SellerProductsFilterDrawer.d.ts +13 -1
  1468. package/dist/features/seller/components/SellerProductsFilterDrawer.js +6 -6
  1469. package/dist/features/seller/components/SellerProductsView.js +212 -33
  1470. package/dist/features/seller/components/SellerReviewsView.js +12 -12
  1471. package/dist/features/seller/components/SellerShippingConfigsView.js +9 -9
  1472. package/dist/features/seller/components/SellerShippingView.js +7 -7
  1473. package/dist/features/seller/components/SellerSidebar.js +9 -9
  1474. package/dist/features/seller/components/SellerStickersView.js +1 -1
  1475. package/dist/features/seller/components/SellerStoreCategoriesView.js +10 -10
  1476. package/dist/features/seller/components/SellerStoreSetupView.js +1 -1
  1477. package/dist/features/seller/components/SellerStoreView.js +1 -1
  1478. package/dist/features/seller/components/SellerStorefrontView.js +5 -5
  1479. package/dist/features/seller/components/SellerSupportView.js +6 -6
  1480. package/dist/features/seller/components/SellersListView.js +1 -1
  1481. package/dist/features/seller/components/SublistingInlineSelect.js +3 -3
  1482. package/dist/features/seller/components/analytics/SellerAnalyticsStats.js +2 -2
  1483. package/dist/features/seller/components/analytics/SellerRevenueChart.js +2 -2
  1484. package/dist/features/seller/components/analytics/SellerTopProducts.js +1 -1
  1485. package/dist/features/seller/components/analytics/index.js +3 -3
  1486. package/dist/features/seller/components/index.js +67 -67
  1487. package/dist/features/seller/hooks/useBecomeSeller.js +3 -3
  1488. package/dist/features/seller/hooks/useSellerListingData.js +1 -1
  1489. package/dist/features/seller/hooks/useSellerPayouts.js +2 -2
  1490. package/dist/features/seller/hooks/useSellerStore.js +2 -2
  1491. package/dist/features/seller/hooks/useSellerStorefront.js +2 -2
  1492. package/dist/features/seller/index.js +11 -11
  1493. package/dist/features/seller/repository/offer.repository.js +6 -6
  1494. package/dist/features/seller/schemas/coupon-form.d.ts +20 -20
  1495. package/dist/features/seller/schemas/coupon-form.js +1 -1
  1496. package/dist/features/seller/schemas/firestore.js +1 -1
  1497. package/dist/features/seller/schemas/index.js +1 -1
  1498. package/dist/features/seller/schemas/order-forms.js +2 -2
  1499. package/dist/features/seller/schemas/product-form.js +1 -1
  1500. package/dist/features/seller/schemas/review-forms.js +1 -1
  1501. package/dist/features/seller/server.js +5 -5
  1502. package/dist/features/seller/types/index.d.ts +17 -0
  1503. package/dist/features/seller/utils/product-draft-mapping.d.ts +13 -0
  1504. package/dist/features/seller/utils/product-draft-mapping.js +17 -0
  1505. package/dist/features/server-errors/repository/server-errors.repository.js +4 -4
  1506. package/dist/features/server-errors/schemas/index.js +1 -1
  1507. package/dist/features/shell/CommandPalette.js +2 -2
  1508. package/dist/features/shell/FormShell.js +5 -5
  1509. package/dist/features/shell/QuickFormDrawer.js +7 -7
  1510. package/dist/features/shell/SectionForm.js +9 -9
  1511. package/dist/features/shell/build-sections.js +11 -11
  1512. package/dist/features/shell/field-groups/ImageFieldGroup.js +1 -1
  1513. package/dist/features/shell/field-groups/SeoFieldGroup.js +3 -3
  1514. package/dist/features/shell/field-groups/StatusFieldGroup.js +2 -2
  1515. package/dist/features/shell/field-groups/TitleDescriptionGroup.js +3 -3
  1516. package/dist/features/shell/field-groups/index.js +4 -4
  1517. package/dist/features/shell/index.js +8 -8
  1518. package/dist/features/shipments/components/AdminShipmentEditorView.js +13 -13
  1519. package/dist/features/shipments/components/AdminShipmentLotItemsView.js +12 -12
  1520. package/dist/features/shipments/components/AdminShipmentProjectionsView.js +5 -5
  1521. package/dist/features/shipments/components/AdminShipmentsView.js +7 -7
  1522. package/dist/features/shipments/components/ShipmentItemLinkModal.js +4 -4
  1523. package/dist/features/shipments/hooks/useShipments.js +2 -2
  1524. package/dist/features/shipments/index.js +7 -7
  1525. package/dist/features/shipments/repository/shipment-items.repository.js +4 -4
  1526. package/dist/features/shipments/repository/shipment-lots.repository.js +2 -2
  1527. package/dist/features/shipments/repository/shipments.repository.js +4 -4
  1528. package/dist/features/shipments/schemas/firestore.js +1 -1
  1529. package/dist/features/shipments/schemas/index.js +2 -2
  1530. package/dist/features/shipments/schemas/validation.d.ts +4 -4
  1531. package/dist/features/shipments/schemas/validation.js +3 -3
  1532. package/dist/features/shipments/utils/cost-allocation.js +1 -1
  1533. package/dist/features/site-settings/components/ActionPermissionsManager.js +4 -4
  1534. package/dist/features/site-settings/components/NavPermissionsManager.js +3 -3
  1535. package/dist/features/site-settings/components/ThemeManagerView.js +2 -2
  1536. package/dist/features/status-history/components/RecordStatusTimeline.js +1 -1
  1537. package/dist/features/status-history/components/StatusTimeline.js +1 -1
  1538. package/dist/features/status-history/index.js +2 -2
  1539. package/dist/features/store-extensions/components/ReviewDecisionModal.js +10 -10
  1540. package/dist/features/store-extensions/constants/alert-metrics.d.ts +86 -0
  1541. package/dist/features/store-extensions/constants/alert-metrics.js +142 -0
  1542. package/dist/features/store-extensions/index.js +16 -16
  1543. package/dist/features/store-extensions/repository/rbac.repositories.js +2 -2
  1544. package/dist/features/store-extensions/repository/store-extensions.repositories.js +3 -3
  1545. package/dist/features/store-extensions/schemas/admin-notification-form.js +1 -1
  1546. package/dist/features/store-extensions/schemas/analytics-forms.js +2 -2
  1547. package/dist/features/store-extensions/schemas/custom-role-form.js +2 -2
  1548. package/dist/features/store-extensions/schemas/firestore.d.ts +19 -1
  1549. package/dist/features/store-extensions/schemas/google-config-form.d.ts +6 -6
  1550. package/dist/features/store-extensions/schemas/google-config-form.js +1 -1
  1551. package/dist/features/store-extensions/schemas/item-request-create-form.js +1 -1
  1552. package/dist/features/store-extensions/schemas/listing-template-form.js +3 -3
  1553. package/dist/features/store-extensions/schemas/moderation-review-form.js +1 -1
  1554. package/dist/features/store-extensions/schemas/payout-method-form.js +1 -1
  1555. package/dist/features/store-extensions/schemas/report-create-form.js +2 -2
  1556. package/dist/features/store-extensions/schemas/report-review-form.js +1 -1
  1557. package/dist/features/store-extensions/schemas/shipping-config-form.d.ts +10 -10
  1558. package/dist/features/store-extensions/schemas/shipping-config-form.js +1 -1
  1559. package/dist/features/store-extensions/schemas/store-category-form.js +1 -1
  1560. package/dist/features/store-extensions/schemas/sublisting-category-form.js +1 -1
  1561. package/dist/features/stores/actions/index.js +2 -2
  1562. package/dist/features/stores/actions/store-address-actions.js +4 -4
  1563. package/dist/features/stores/actions/store-query-actions.js +9 -9
  1564. package/dist/features/stores/api/[storeSlug]/auctions/route.js +5 -5
  1565. package/dist/features/stores/api/[storeSlug]/products/route.js +5 -5
  1566. package/dist/features/stores/api/[storeSlug]/reviews/route.js +4 -4
  1567. package/dist/features/stores/api/[storeSlug]/route.js +3 -3
  1568. package/dist/features/stores/columns/index.js +1 -1
  1569. package/dist/features/stores/components/InteractiveStoreCard.js +5 -5
  1570. package/dist/features/stores/components/StoreAboutView.js +3 -3
  1571. package/dist/features/stores/components/StoreAddressSelectorCreate.js +2 -2
  1572. package/dist/features/stores/components/StoreArtStickersPageView.js +6 -6
  1573. package/dist/features/stores/components/StoreAuctionsListing.js +15 -15
  1574. package/dist/features/stores/components/StoreAuctionsPageView.js +5 -5
  1575. package/dist/features/stores/components/StoreAuctionsView.js +1 -1
  1576. package/dist/features/stores/components/StoreBundlesPageView.js +5 -5
  1577. package/dist/features/stores/components/StoreCapabilitiesGuideView.js +2 -2
  1578. package/dist/features/stores/components/StoreClassifiedsListing.js +12 -12
  1579. package/dist/features/stores/components/StoreClassifiedsPageView.js +5 -5
  1580. package/dist/features/stores/components/StoreDetailLayoutView.js +12 -12
  1581. package/dist/features/stores/components/StoreDigitalCodesListing.js +12 -12
  1582. package/dist/features/stores/components/StoreDigitalCodesPageView.js +5 -5
  1583. package/dist/features/stores/components/StoreFilters.js +4 -4
  1584. package/dist/features/stores/components/StoreFinanceGuideView.js +2 -2
  1585. package/dist/features/stores/components/StoreGuideHubView.js +2 -2
  1586. package/dist/features/stores/components/StoreHeader.js +6 -6
  1587. package/dist/features/stores/components/StoreListingsGuideView.js +2 -2
  1588. package/dist/features/stores/components/StoreLiveItemsListing.js +12 -12
  1589. package/dist/features/stores/components/StoreLiveItemsPageView.js +5 -5
  1590. package/dist/features/stores/components/StoreNavTabs.js +2 -2
  1591. package/dist/features/stores/components/StoreOrdersGuideView.js +2 -2
  1592. package/dist/features/stores/components/StorePreOrdersListing.js +11 -11
  1593. package/dist/features/stores/components/StorePreOrdersPageView.js +5 -5
  1594. package/dist/features/stores/components/StorePrizeDrawsPageView.js +5 -5
  1595. package/dist/features/stores/components/StoreProductsListing.js +15 -15
  1596. package/dist/features/stores/components/StoreProductsPageView.js +5 -5
  1597. package/dist/features/stores/components/StoreProductsView.js +1 -1
  1598. package/dist/features/stores/components/StoreReviewsListing.js +1 -1
  1599. package/dist/features/stores/components/StoreReviewsPageView.js +1 -1
  1600. package/dist/features/stores/components/StoreReviewsView.js +1 -1
  1601. package/dist/features/stores/components/StoreScopedSearch.js +3 -3
  1602. package/dist/features/stores/components/StoreSettingsGuideView.js +2 -2
  1603. package/dist/features/stores/components/StoreWhatsAppGuideView.js +2 -2
  1604. package/dist/features/stores/components/StoresIndexListing.js +12 -12
  1605. package/dist/features/stores/components/StoresIndexPageView.js +7 -7
  1606. package/dist/features/stores/components/index.js +23 -23
  1607. package/dist/features/stores/hooks/useStoreAddressSelector.js +2 -2
  1608. package/dist/features/stores/hooks/useStores.js +2 -2
  1609. package/dist/features/stores/index.js +7 -7
  1610. package/dist/features/stores/repository/store.repository.js +9 -9
  1611. package/dist/features/stores/schemas/firestore.d.ts +117 -2
  1612. package/dist/features/stores/schemas/firestore.js +2 -2
  1613. package/dist/features/stores/schemas/index.d.ts +30 -30
  1614. package/dist/features/stores/schemas/index.js +3 -3
  1615. package/dist/features/stores/server.js +6 -6
  1616. package/dist/features/stores/types/index.d.ts +10 -0
  1617. package/dist/features/support/repository/support.repository.js +11 -11
  1618. package/dist/features/support/schemas/index.d.ts +2 -2
  1619. package/dist/features/support/schemas/index.js +2 -2
  1620. package/dist/features/support/schemas/ticket-create-form.js +2 -2
  1621. package/dist/features/tax-codes/repository/tax-codes.repository.d.ts +55 -0
  1622. package/dist/features/tax-codes/repository/tax-codes.repository.js +131 -0
  1623. package/dist/features/tax-codes/schemas/firestore.d.ts +125 -0
  1624. package/dist/features/tax-codes/schemas/firestore.js +82 -0
  1625. package/dist/features/tax-codes/schemas/tax-code-form.d.ts +63 -0
  1626. package/dist/features/tax-codes/schemas/tax-code-form.js +152 -0
  1627. package/dist/features/tax-codes/schemas/tax-codes.validators.d.ts +107 -0
  1628. package/dist/features/tax-codes/schemas/tax-codes.validators.js +85 -0
  1629. package/dist/features/tester/actions/checklist-item-actions.d.ts +8 -8
  1630. package/dist/features/tester/actions/checklist-item-actions.js +2 -2
  1631. package/dist/features/tester/actions/index.d.ts +0 -1
  1632. package/dist/features/tester/actions/index.js +1 -2
  1633. package/dist/features/tester/components/AdminTesterFeedbackIssuesView.js +6 -6
  1634. package/dist/features/tester/components/AdminTesterFeedbackListView.js +10 -10
  1635. package/dist/features/tester/components/AdminTesterFeedbackReportView.js +4 -4
  1636. package/dist/features/tester/components/AdminTesterFeedbackView.js +8 -8
  1637. package/dist/features/tester/components/TesterChecklistStepRow.js +4 -4
  1638. package/dist/features/tester/components/TesterFeedbackChart.js +2 -2
  1639. package/dist/features/tester/components/index.d.ts +0 -4
  1640. package/dist/features/tester/components/index.js +6 -8
  1641. package/dist/features/tester/index.js +2 -2
  1642. package/dist/features/tester/repository/index.js +2 -2
  1643. package/dist/features/tester/repository/tester-checklist-item.repository.d.ts +1 -20
  1644. package/dist/features/tester/repository/tester-checklist-item.repository.js +4 -56
  1645. package/dist/features/tester/repository/tester-checklist-response.repository.js +3 -3
  1646. package/dist/features/tester/schemas/checklist-item-form.d.ts +4 -4
  1647. package/dist/features/tester/schemas/checklist-item-form.js +1 -1
  1648. package/dist/features/tester/schemas/firestore.d.ts +0 -6
  1649. package/dist/features/tester/schemas/firestore.js +1 -1
  1650. package/dist/features/tester/schemas/index.js +1 -1
  1651. package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.js +3 -3
  1652. package/dist/features/tester/seed-data/authored/admin__site-system.js +4 -5
  1653. package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.js +2 -2
  1654. package/dist/features/tester/seed-data/authored/index.js +118 -120
  1655. package/dist/features/tester/seed-data/authored/page-wiring__reachability.js +0 -19
  1656. package/dist/features/tester/seed-data/authored/selling__product-upload-details.js +1 -1
  1657. package/dist/features/tester/seed-data/index.js +2 -2
  1658. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +12 -31
  1659. package/dist/features/tester/server.js +3 -3
  1660. package/dist/features/whatsapp-bot/api/send-status/route.js +2 -2
  1661. package/dist/features/whatsapp-bot/api/webhook/route.js +2 -2
  1662. package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +12 -12
  1663. package/dist/features/whatsapp-bot/components/WhatsAppChatButton.js +1 -1
  1664. package/dist/features/whatsapp-bot/components/index.js +2 -2
  1665. package/dist/features/whatsapp-bot/helpers/whatsapp.js +3 -3
  1666. package/dist/features/whatsapp-bot/index.js +3 -3
  1667. package/dist/features/whatsapp-bot/server.js +2 -2
  1668. package/dist/features/wishlist/actions/index.js +1 -1
  1669. package/dist/features/wishlist/actions/wishlist-actions.js +4 -4
  1670. package/dist/features/wishlist/columns/index.js +1 -1
  1671. package/dist/features/wishlist/components/WishlistCapWatcher.js +2 -2
  1672. package/dist/features/wishlist/components/WishlistHeartButton.js +2 -2
  1673. package/dist/features/wishlist/components/WishlistPage.js +3 -3
  1674. package/dist/features/wishlist/components/WishlistView.js +3 -3
  1675. package/dist/features/wishlist/components/index.js +4 -4
  1676. package/dist/features/wishlist/hooks/useGuestWishlist.js +1 -1
  1677. package/dist/features/wishlist/hooks/useUserWishlist.js +2 -2
  1678. package/dist/features/wishlist/hooks/useWishlist.js +2 -2
  1679. package/dist/features/wishlist/hooks/useWishlistCount.js +8 -8
  1680. package/dist/features/wishlist/hooks/useWishlistToggle.js +3 -3
  1681. package/dist/features/wishlist/hooks/useWishlistWithGuest.js +2 -2
  1682. package/dist/features/wishlist/index.js +12 -12
  1683. package/dist/features/wishlist/repository/user-wishlist.repository.js +4 -4
  1684. package/dist/features/wishlist/server.js +2 -2
  1685. package/dist/features/wishlist/utils/guest-wishlist.js +1 -1
  1686. package/dist/hand-mode/index.js +1 -1
  1687. package/dist/http/api-handler.js +8 -8
  1688. package/dist/http/index.js +2 -2
  1689. package/dist/http/retry.js +1 -1
  1690. package/dist/index.d.ts +41 -10
  1691. package/dist/index.js +2047 -1964
  1692. package/dist/monitoring/browser.js +5 -5
  1693. package/dist/monitoring/cache-metrics.js +1 -1
  1694. package/dist/monitoring/client-logger.js +3 -3
  1695. package/dist/monitoring/index.js +6 -6
  1696. package/dist/monitoring/runtime.js +1 -1
  1697. package/dist/monitoring/server-logger.js +3 -3
  1698. package/dist/next/ErrorBoundary.js +3 -3
  1699. package/dist/next/api/api-response.js +2 -2
  1700. package/dist/next/api/apiHandler.js +3 -3
  1701. package/dist/next/api/parseJsonBody.js +1 -1
  1702. package/dist/next/api/routeHandler.js +9 -9
  1703. package/dist/next/cache-middleware.js +1 -1
  1704. package/dist/next/components/ErrorView.js +3 -3
  1705. package/dist/next/components/GlobalError.js +23 -2
  1706. package/dist/next/components/NotFoundView.js +4 -4
  1707. package/dist/next/components/UnauthorizedView.js +4 -4
  1708. package/dist/next/index.js +21 -21
  1709. package/dist/next/middleware/chain.js +3 -3
  1710. package/dist/next/middleware/index.js +2 -2
  1711. package/dist/next/middleware/pii-scrubber.js +3 -3
  1712. package/dist/next/request-helpers.js +1 -1
  1713. package/dist/next/routing/route-map.d.ts +6 -4
  1714. package/dist/next/routing/route-map.js +10 -2
  1715. package/dist/providers/auth-firebase/helpers.js +5 -5
  1716. package/dist/providers/auth-firebase/index.js +3 -3
  1717. package/dist/providers/auth-firebase/provider.js +2 -2
  1718. package/dist/providers/auth-firebase/session.js +2 -2
  1719. package/dist/providers/db-firebase/admin-app-lite.js +1 -1
  1720. package/dist/providers/db-firebase/admin-auth-lite.js +1 -1
  1721. package/dist/providers/db-firebase/admin-storage-lite.js +1 -1
  1722. package/dist/providers/db-firebase/admin.js +2 -2
  1723. package/dist/providers/db-firebase/base.js +2 -2
  1724. package/dist/providers/db-firebase/base.repository.d.ts +54 -0
  1725. package/dist/providers/db-firebase/base.repository.js +119 -7
  1726. package/dist/providers/db-firebase/browser-stub.js +2 -2
  1727. package/dist/providers/db-firebase/index.js +12 -12
  1728. package/dist/providers/db-firebase/sieve.js +4 -4
  1729. package/dist/providers/email-resend/index.js +1 -1
  1730. package/dist/providers/firebase-client/index.js +2 -2
  1731. package/dist/providers/firebase-client/realtime.js +1 -1
  1732. package/dist/providers/payment-manual/index.js +1 -1
  1733. package/dist/providers/payment-phonepe/index.js +3 -3
  1734. package/dist/providers/shipping-manual/index.js +1 -1
  1735. package/dist/providers/storage-firebase/client.js +2 -2
  1736. package/dist/providers/storage-firebase/index.js +1 -1
  1737. package/dist/providers/storage-firebase/provider.js +4 -4
  1738. package/dist/providers.js +12 -12
  1739. package/dist/react/ErrorBoundary.js +3 -3
  1740. package/dist/react/contexts/SessionContext.js +6 -6
  1741. package/dist/react/contexts/index.js +1 -1
  1742. package/dist/react/hooks/use-action-dispatch.js +5 -5
  1743. package/dist/react/hooks/use-panel-url-sync.js +1 -1
  1744. package/dist/react/hooks/useAuthGate.js +3 -3
  1745. package/dist/react/hooks/useBreakpoint.js +1 -1
  1746. package/dist/react/hooks/useBulkAction.js +1 -1
  1747. package/dist/react/hooks/useCamera.js +1 -1
  1748. package/dist/react/hooks/useCanSeePrices.js +1 -1
  1749. package/dist/react/hooks/useEntityDelete.js +2 -2
  1750. package/dist/react/hooks/useFormStatePreservation.js +1 -1
  1751. package/dist/react/hooks/useInlineRowEdit.js +1 -1
  1752. package/dist/react/hooks/useListingTypeFlags.js +2 -2
  1753. package/dist/react/hooks/useMessage.js +1 -1
  1754. package/dist/react/hooks/usePendingFilters.js +1 -1
  1755. package/dist/react/hooks/usePendingTable.js +2 -2
  1756. package/dist/react/hooks/useRealtimeEvent.js +4 -4
  1757. package/dist/react/hooks/useTabParam.js +2 -2
  1758. package/dist/react/hooks/useUnsavedChanges.js +1 -1
  1759. package/dist/react/hooks/useUrlTable.js +2 -2
  1760. package/dist/react/index.js +28 -28
  1761. package/dist/repositories/index.d.ts +2 -1
  1762. package/dist/repositories/index.js +55 -50
  1763. package/dist/schemas/index.js +1 -1
  1764. package/dist/schemas/registry.d.ts +568 -62
  1765. package/dist/schemas/registry.js +44 -44
  1766. package/dist/security/authorization.js +3 -3
  1767. package/dist/security/browser.js +4 -4
  1768. package/dist/security/index.js +8 -8
  1769. package/dist/security/pii-encrypt.js +3 -3
  1770. package/dist/security/pii-redact.js +1 -1
  1771. package/dist/security/rate-limit.js +1 -1
  1772. package/dist/security/settings-encryption.js +1 -1
  1773. package/dist/seed/_helpers/brand-rows.d.ts +35 -0
  1774. package/dist/seed/_helpers/brand-rows.js +576 -0
  1775. package/dist/seed/_helpers/category-content.d.ts +39 -0
  1776. package/dist/seed/_helpers/category-content.js +634 -0
  1777. package/dist/seed/_helpers/category-forest.d.ts +2 -0
  1778. package/dist/seed/_helpers/category-forest.js +585 -243
  1779. package/dist/seed/_helpers/category-models.d.ts +5 -0
  1780. package/dist/seed/_helpers/category-models.js +1364 -0
  1781. package/dist/seed/_helpers/category-tree.js +17 -1
  1782. package/dist/seed/_helpers/character-features.d.ts +10 -0
  1783. package/dist/seed/_helpers/character-features.js +118 -0
  1784. package/dist/seed/_helpers/media.js +1 -1
  1785. package/dist/seed/_helpers/product-search-txt.js +1 -1
  1786. package/dist/seed/_helpers/search-txt-wrappers.d.ts +10 -0
  1787. package/dist/seed/_helpers/search-txt-wrappers.js +12 -1
  1788. package/dist/seed/blog-posts-seed-data.js +2 -2
  1789. package/dist/seed/carousel-slides-seed-data.js +2 -2
  1790. package/dist/seed/cart-seed-data.js +2 -2
  1791. package/dist/seed/categories-seed-data.js +151 -173
  1792. package/dist/seed/claimed-coupons-seed-data.js +1 -1
  1793. package/dist/seed/coupons-seed-data.js +2 -2
  1794. package/dist/seed/defaults/categories.js +1 -1
  1795. package/dist/seed/defaults/faqs.js +2 -2
  1796. package/dist/seed/defaults/homepage-sections.js +2 -2
  1797. package/dist/seed/events-seed-data.js +3 -3
  1798. package/dist/seed/factories/address.factory.js +1 -1
  1799. package/dist/seed/factories/carousel.factory.js +1 -1
  1800. package/dist/seed/factories/order.factory.js +1 -1
  1801. package/dist/seed/factories/product.factory.js +2 -2
  1802. package/dist/seed/factories/store.factory.js +1 -1
  1803. package/dist/seed/factories/user.factory.js +2 -2
  1804. package/dist/seed/faq-seed-data.js +532 -3
  1805. package/dist/seed/grouped-listings-seed-data.js +1 -1
  1806. package/dist/seed/homepage-sections-seed-data.js +2 -2
  1807. package/dist/seed/index.d.ts +2 -0
  1808. package/dist/seed/index.js +75 -67
  1809. package/dist/seed/manifest.d.ts +1 -1
  1810. package/dist/seed/manifest.js +47 -42
  1811. package/dist/seed/notifications-seed-data.js +3 -3
  1812. package/dist/seed/offers-seed-data.js +2 -2
  1813. package/dist/seed/orders-seed-data.js +2 -2
  1814. package/dist/seed/payouts-seed-data.js +2 -2
  1815. package/dist/seed/product-features-seed-data.d.ts +1 -8
  1816. package/dist/seed/product-features-seed-data.js +358 -154
  1817. package/dist/seed/products-art-seed-data.js +20 -8
  1818. package/dist/seed/products-auctions-seed-data.js +10 -10
  1819. package/dist/seed/products-classifieds-seed-data.js +22 -12
  1820. package/dist/seed/products-digital-codes-seed-data.js +17 -17
  1821. package/dist/seed/products-live-items-seed-data.js +5 -5
  1822. package/dist/seed/products-preorders-seed-data.js +12 -12
  1823. package/dist/seed/products-prize-draws-seed-data.js +30 -13
  1824. package/dist/seed/products-standard-seed-data.js +14 -64
  1825. package/dist/seed/products-stickers-seed-data.js +10 -10
  1826. package/dist/seed/reviews-seed-data.js +2 -2
  1827. package/dist/seed/runner.js +2 -2
  1828. package/dist/seed/scammers-seed-data.js +3 -3
  1829. package/dist/seed/seed-market-config.js +2 -2
  1830. package/dist/seed/seed-purpose.d.ts +200 -0
  1831. package/dist/seed/seed-purpose.js +265 -0
  1832. package/dist/seed/sessions-seed-data.js +2 -2
  1833. package/dist/seed/shipments-seed-data.js +1 -1
  1834. package/dist/seed/site-settings-seed-data.js +33 -3
  1835. package/dist/seed/store-addresses-seed-data.js +1 -1
  1836. package/dist/seed/store-extensions-seed-data.js +11 -5
  1837. package/dist/seed/stores-seed-data.js +3 -3
  1838. package/dist/seed/support-tickets-seed-data.js +2 -2
  1839. package/dist/seed/tax-codes-seed-data.d.ts +34 -0
  1840. package/dist/seed/tax-codes-seed-data.js +100 -0
  1841. package/dist/seed/test-data-ttl.d.ts +29 -0
  1842. package/dist/seed/test-data-ttl.js +31 -0
  1843. package/dist/seed/test-utils.js +8 -8
  1844. package/dist/seed/users-seed-data.js +4 -4
  1845. package/dist/seo/index.js +2 -2
  1846. package/dist/seo/json-ld.d.ts +62 -0
  1847. package/dist/seo/json-ld.js +78 -2
  1848. package/dist/seo/metadata.js +1 -1
  1849. package/dist/server-entry.d.ts +1 -1
  1850. package/dist/server-entry.js +83 -78
  1851. package/dist/server.d.ts +14 -3
  1852. package/dist/server.js +563 -544
  1853. package/dist/styles.css +807 -1
  1854. package/dist/tailwind-utilities.css +1 -1
  1855. package/dist/theme/index.js +2 -2
  1856. package/dist/tokens/index.js +1 -1
  1857. package/dist/tokens/themes/cobalt-night.js +1 -1
  1858. package/dist/tokens/themes/index.js +5 -5
  1859. package/dist/tokens/themes/sunset.js +1 -1
  1860. package/dist/ui/DataTable.js +12 -12
  1861. package/dist/ui/columns/cell-renderers.js +7 -7
  1862. package/dist/ui/columns/column-renderers.js +2 -2
  1863. package/dist/ui/columns/index.js +3 -3
  1864. package/dist/ui/components/Accordion.js +4 -4
  1865. package/dist/ui/components/ActionRow.js +1 -1
  1866. package/dist/ui/components/ActiveFilterChips.js +2 -2
  1867. package/dist/ui/components/Alert.js +2 -2
  1868. package/dist/ui/components/Anchor.js +1 -1
  1869. package/dist/ui/components/Avatar.js +1 -1
  1870. package/dist/ui/components/AvatarDisplay.js +1 -1
  1871. package/dist/ui/components/Badge.js +1 -1
  1872. package/dist/ui/components/BaseListingCard.js +2 -2
  1873. package/dist/ui/components/Breadcrumb.js +3 -3
  1874. package/dist/ui/components/BulkActionBar.js +2 -2
  1875. package/dist/ui/components/Button.js +4 -4
  1876. package/dist/ui/components/Card.js +2 -2
  1877. package/dist/ui/components/Checkbox.js +1 -1
  1878. package/dist/ui/components/ClaimCouponButton.js +6 -6
  1879. package/dist/ui/components/CollapsibleSection.js +5 -5
  1880. package/dist/ui/components/ConfirmDeleteModal.js +3 -3
  1881. package/dist/ui/components/CountdownDisplay.js +2 -2
  1882. package/dist/ui/components/DateInput.js +1 -1
  1883. package/dist/ui/components/DetailPageGallery.js +2 -2
  1884. package/dist/ui/components/DetailPageHero.js +3 -3
  1885. package/dist/ui/components/DetailPageTabs.js +2 -2
  1886. package/dist/ui/components/DetailViewShell.js +2 -2
  1887. package/dist/ui/components/Details.js +1 -1
  1888. package/dist/ui/components/Div.js +1 -1
  1889. package/dist/ui/components/Divider.js +1 -1
  1890. package/dist/ui/components/Drawer.js +4 -4
  1891. package/dist/ui/components/EmptyState.js +4 -4
  1892. package/dist/ui/components/FilePickerButton.js +1 -1
  1893. package/dist/ui/components/FilterChipGroup.js +2 -2
  1894. package/dist/ui/components/FilterDrawer.js +4 -4
  1895. package/dist/ui/components/FlowDiagram.js +2 -2
  1896. package/dist/ui/components/Form.js +4 -4
  1897. package/dist/ui/components/FormActionBar.js +3 -3
  1898. package/dist/ui/components/FormField.js +24 -6
  1899. package/dist/ui/components/GatedPrice.js +6 -6
  1900. package/dist/ui/components/HandModeRow.js +2 -2
  1901. package/dist/ui/components/Icon.js +1 -1
  1902. package/dist/ui/components/IconButton.js +1 -1
  1903. package/dist/ui/components/ImageGallery.js +6 -6
  1904. package/dist/ui/components/ImageLightbox.js +5 -5
  1905. package/dist/ui/components/Input.js +2 -2
  1906. package/dist/ui/components/ItemRow.js +3 -3
  1907. package/dist/ui/components/Layout.js +1 -1
  1908. package/dist/ui/components/ListingFilterDrawer.js +4 -4
  1909. package/dist/ui/components/ListingLayout.js +9 -9
  1910. package/dist/ui/components/ListingToolbar.js +5 -5
  1911. package/dist/ui/components/LoginRequiredModal.js +5 -5
  1912. package/dist/ui/components/Menu.js +1 -1
  1913. package/dist/ui/components/Modal.js +6 -6
  1914. package/dist/ui/components/Motion.js +1 -1
  1915. package/dist/ui/components/NavigationLoader.js +3 -3
  1916. package/dist/ui/components/OtpInput.js +1 -1
  1917. package/dist/ui/components/PageLoader.js +4 -4
  1918. package/dist/ui/components/PaginatedSelect.d.ts +14 -0
  1919. package/dist/ui/components/PaginatedSelect.js +0 -0
  1920. package/dist/ui/components/PaginatedSelect.style.css +40 -0
  1921. package/dist/ui/components/Pagination.js +2 -2
  1922. package/dist/ui/components/PasswordStrengthIndicator.js +3 -3
  1923. package/dist/ui/components/PriceDisplay.js +1 -1
  1924. package/dist/ui/components/Progress.js +1 -1
  1925. package/dist/ui/components/QuantityStepper.js +3 -3
  1926. package/dist/ui/components/QuickCreateModal.js +5 -5
  1927. package/dist/ui/components/Radio.js +1 -1
  1928. package/dist/ui/components/RatingDisplay.js +2 -2
  1929. package/dist/ui/components/RecordDetailModal.js +2 -2
  1930. package/dist/ui/components/RoleBadge.js +1 -1
  1931. package/dist/ui/components/RowActionMenu.js +3 -3
  1932. package/dist/ui/components/Select.js +2 -2
  1933. package/dist/ui/components/Semantic.js +1 -1
  1934. package/dist/ui/components/SettingsSection.js +2 -2
  1935. package/dist/ui/components/SideDrawer.js +9 -9
  1936. package/dist/ui/components/SideModal.js +4 -4
  1937. package/dist/ui/components/SiteLogo.js +1 -1
  1938. package/dist/ui/components/SiteMark.js +1 -1
  1939. package/dist/ui/components/SkipToMain.js +1 -1
  1940. package/dist/ui/components/Slider.js +1 -1
  1941. package/dist/ui/components/SlottedListingView.js +2 -2
  1942. package/dist/ui/components/SortDropdown.js +3 -3
  1943. package/dist/ui/components/StackedViewShell.js +2 -2
  1944. package/dist/ui/components/StarRating.js +1 -1
  1945. package/dist/ui/components/StatsGrid.js +3 -3
  1946. package/dist/ui/components/StatusBadge.js +1 -1
  1947. package/dist/ui/components/StepperNav.js +3 -3
  1948. package/dist/ui/components/StickyToolbar.js +1 -1
  1949. package/dist/ui/components/SummaryCard.js +4 -4
  1950. package/dist/ui/components/TabBarShell.js +3 -3
  1951. package/dist/ui/components/TablePagination.js +4 -4
  1952. package/dist/ui/components/Tabs.js +1 -1
  1953. package/dist/ui/components/TagInput.js +1 -1
  1954. package/dist/ui/components/TextLink.js +2 -2
  1955. package/dist/ui/components/Textarea.js +1 -1
  1956. package/dist/ui/components/Toast.js +3 -3
  1957. package/dist/ui/components/Toggle.js +1 -1
  1958. package/dist/ui/components/Typography.js +2 -2
  1959. package/dist/ui/components/UnsavedChangesModal.js +5 -5
  1960. package/dist/ui/components/VacationBanner.js +3 -3
  1961. package/dist/ui/components/ViewToggle.js +2 -2
  1962. package/dist/ui/components/index.style.css +4 -0
  1963. package/dist/ui/components/surface-tokens.js +1 -1
  1964. package/dist/ui/components/toolbar-collapse.js +1 -1
  1965. package/dist/ui/forms/ColorPickerField.js +2 -2
  1966. package/dist/ui/forms/FieldCheckbox.js +3 -3
  1967. package/dist/ui/forms/FieldInput.js +3 -3
  1968. package/dist/ui/forms/FieldSelect.js +3 -3
  1969. package/dist/ui/forms/FieldTextarea.js +3 -3
  1970. package/dist/ui/forms/FormErrorList.js +2 -2
  1971. package/dist/ui/forms/FormErrorSummary.js +2 -2
  1972. package/dist/ui/forms/FormShell.js +1 -1
  1973. package/dist/ui/forms/index.js +9 -9
  1974. package/dist/ui/index.d.ts +0 -2
  1975. package/dist/ui/index.js +147 -127
  1976. package/dist/ui/rich-text/RichText.js +2 -2
  1977. package/dist/ui/rich-text/index.js +1 -1
  1978. package/dist/utils/action-response.js +2 -2
  1979. package/dist/utils/action-result.js +1 -1
  1980. package/dist/utils/auth-error.js +1 -1
  1981. package/dist/utils/client.js +1 -1
  1982. package/dist/utils/date.formatter.js +1 -1
  1983. package/dist/utils/id-generators.js +2 -2
  1984. package/dist/utils/index.js +19 -19
  1985. package/dist/utils/media-field.js +1 -1
  1986. package/dist/utils/media-url.js +2 -2
  1987. package/dist/utils/number.formatter.js +1 -1
  1988. package/dist/utils/physical-location.d.ts +91 -0
  1989. package/dist/utils/physical-location.js +134 -0
  1990. package/dist/utils/safe-fire-forget.js +2 -2
  1991. package/dist/utils/search-txt-builders.d.ts +20 -0
  1992. package/dist/utils/search-txt-builders.js +97 -1
  1993. package/dist/utils/search-txt-query.d.ts +54 -6
  1994. package/dist/utils/search-txt-query.js +79 -11
  1995. package/dist/utils/sieve-builder.js +1 -1
  1996. package/dist/utils/string.formatter.js +1 -1
  1997. package/dist/validation/ZodSetup.js +1 -1
  1998. package/dist/validation/index.js +8 -8
  1999. package/dist/validation/phone.validator.js +1 -1
  2000. package/dist/validation/schemas.d.ts +12 -12
  2001. package/dist/validation/schemas.js +1 -1
  2002. package/dist/validation/url.validator.js +1 -1
  2003. package/dist/values/index.js +1 -1
  2004. package/dist/vendor/react-advanced-cropper.css +406 -0
  2005. package/package.json +80 -4
  2006. package/scripts/copy-assets.mjs +53 -1
  2007. package/scripts/seed-cli.mjs +172 -8
  2008. package/dist/_internal/server/jobs/handlers/testerSandboxCleanup.d.ts +0 -2
  2009. package/dist/_internal/server/jobs/handlers/testerSandboxCleanup.js +0 -2
  2010. package/dist/features/tester/actions/leaderboard-actions.d.ts +0 -3
  2011. package/dist/features/tester/actions/leaderboard-actions.js +0 -5
  2012. package/dist/features/tester/components/BugHunterLeaderboardView.d.ts +0 -23
  2013. package/dist/features/tester/components/BugHunterLeaderboardView.js +0 -18
  2014. package/dist/features/tester/components/TesterHubView.d.ts +0 -5
  2015. package/dist/features/tester/components/TesterHubView.js +0 -110
  2016. package/dist/features/tester/seed-data/authored/public-pages__bug-hunters.d.ts +0 -2
  2017. package/dist/features/tester/seed-data/authored/public-pages__bug-hunters.js +0 -78
  2018. package/dist/features/tester/seed-data/tester-ttl.d.ts +0 -4
  2019. package/dist/features/tester/seed-data/tester-ttl.js +0 -6
@@ -1,19 +1,35 @@
1
- import { normalizeError } from "../../../errors/normalize";
2
- import { increment, serverTimestamp } from "../../../contracts/field-ops";
3
- import { DatabaseError } from "../../../errors";
4
- import { BaseRepository, prepareForFirestore, parseSieveDateValue, } from "../../../providers/db-firebase";
5
- import { cacheManager } from "../../../core";
6
- import { serverLogger } from "../../../monitoring";
7
- import { generateUniqueId, slugify, generateBarcodeId } from "../../../utils";
8
- import { matchesAllSearchTerms, parseSearchTxtQuery, } from "../../../utils/search-txt";
1
+ import { normalizeError } from "../../../errors/normalize.js";
2
+ import { increment, serverTimestamp } from "../../../contracts/field-ops.js";
3
+ import { DatabaseError } from "../../../errors/index.js";
4
+ import { BaseRepository, prepareForFirestore, parseSieveDateValue, } from "../../../providers/db-firebase/index.js";
5
+ import { cacheManager } from "../../../core/index.js";
6
+ import { serverLogger } from "../../../monitoring/index.js";
7
+ import { generateUniqueId, slugify, generateBarcodeId } from "../../../utils/index.js";
8
+ import { parseSearchTxtQuery } from "../../../utils/search-txt.js";
9
+ // The shared search plan/refine the other eleven migrated collections use.
10
+ // `planSearchTxt` carries the `empty` guard that keeps a punctuation-only query
11
+ // from returning the whole catalogue.
12
+ import { planSearchTxt, SEARCH_REFINE_WINDOW, refineSearchTxt, emptySearchResult, } from "../../../utils/search-txt-query.js";
9
13
  // One definition of "which fields feed searchTxt", shared with the seed
10
14
  // wrapper. Three copies existed and two were missing the same three fields.
11
- import { buildProductSearchTxt } from "../../../utils/search-txt-builders";
12
- import { PRODUCT_COLLECTION, ProductStatusValues } from "../schemas";
13
- // Collection NAME only — deliberately not `categoriesRepository`. See
14
- // deriveTaxonomy()'s header for why this is a raw read.
15
- import { CATEGORIES_COLLECTION } from "../../categories/schemas/firestore";
16
- import { PRODUCT_FIELDS } from "../../../constants/field-names";
15
+ import { buildProductSearchTxt } from "../../../utils/search-txt-builders.js";
16
+ import { PRODUCT_COLLECTION, ProductStatusValues } from "../schemas/index.js";
17
+ // Collection NAMES only — deliberately not `categoriesRepository` or
18
+ // `taxCodesRepository`. See deriveTaxonomy()'s header for why these are raw
19
+ // reads: no repository in this codebase imports another feature's, because of
20
+ // the Turbopack import-chain trap (Root Cause #6/#18).
21
+ import { CATEGORIES_COLLECTION } from "../../categories/schemas/firestore.js";
22
+ import { TAX_CODES_COLLECTION } from "../../tax-codes/schemas/firestore.js";
23
+ // Collection id only, never the stores repository — no repository in this
24
+ // codebase imports another feature's (the Turbopack import-chain trap).
25
+ import { STORE_COLLECTION } from "../../stores/schemas/firestore.js";
26
+ // Pure money math — no Firestore, no server-only imports.
27
+ import { DEFAULT_GST_RATE, grossFromTaxable } from "../../../_internal/shared/fees/calculator.js";
28
+ import { MAX_FEATURES_PER_PRODUCT } from "../schemas/product-features.js";
29
+ // The ONE `{{placeholder}}` implementation, promoted out of the FAQ schema in
30
+ // B3. A second regex here would be Root Cause #75's shape.
31
+ import { interpolate } from "../../../_internal/shared/templating/placeholders.js";
32
+ import { PRODUCT_FIELDS } from "../../../constants/field-names.js";
17
33
  /**
18
34
  * Canonical listing-kind tokens used in `listingType`. Note: the public Sieve
19
35
  * alias accepts the legacy "preorder" / "product" spelling; we normalise to
@@ -52,6 +68,113 @@ function buildListingKindClause(kind, inverted) {
52
68
  const op = inverted ? "!=" : "==";
53
69
  return `${PRODUCT_FIELDS.LISTING_TYPE}${op}${canonical}`;
54
70
  }
71
+ /**
72
+ * Fill an SEO template's slots from what the write actually carries.
73
+ *
74
+ * 🛑 A SERVER-SIDE subset on purpose, and smaller than the picker's.
75
+ *
76
+ * The seller form's template picker resolves nine slots because it has the
77
+ * whole draft in hand — the condition LABEL, the category path, the tier-1
78
+ * series, the tier-2 system. This runs inside a repository write with only the
79
+ * input and what `deriveTaxonomy` has just derived, and fetching more to fill
80
+ * an SEO title would spend a round trip on a field a seller can overwrite in
81
+ * one keystroke.
82
+ *
83
+ * So the slots it cannot fill resolve to EMPTY and the sentence closes around
84
+ * them, which `interpolate` guarantees — never the literal `{{series}}`. The
85
+ * templates in `category-content.ts` are written to read correctly with any
86
+ * slot missing for exactly this reason.
87
+ *
88
+ * 🛑 No `{{price}}` slot, here or anywhere: a price in free text is an
89
+ * ungated public price `<GatedPrice>` cannot wrap, and `audit-guest-price-leak`
90
+ * R2 blocks it.
91
+ */
92
+ function interpolateDefaults(template, input, derived) {
93
+ const names = derived.categoryNames ?? input.categoryNames ?? [];
94
+ return interpolate(template, {
95
+ title: input.title,
96
+ brand: derived.brand ?? input.brand,
97
+ condition: input.condition,
98
+ // `categoryNames` is self-first / root-last, so [0] is the leaf and the
99
+ // path reads root-first the way a breadcrumb does.
100
+ category: names[0],
101
+ categoryPath: names.length ? [...names].reverse().join(" › ") : undefined,
102
+ series: names[names.length - 2],
103
+ siteName: "LetItRip",
104
+ }).text;
105
+ }
106
+ /**
107
+ * Keep `availableQuantity` in step when a seller edits `stockQuantity`.
108
+ *
109
+ * 🛑 THE BUG THIS CLOSES: A SELLER COULD NOT RESTOCK.
110
+ *
111
+ * There are two stock numbers. `stockQuantity` is seller-authored and is the
112
+ * only one any of the three product forms exposes. `availableQuantity` is
113
+ * system-owned, seeded from `stockQuantity` **once, at create**, and
114
+ * thereafter driven by checkout decrements and timeout restores.
115
+ *
116
+ * Nothing re-synced them. `updateProduct` is a bare spread, and grep for
117
+ * `availableQuantity` across `src/app/api/store/products/**` and
118
+ * `seller-actions.ts` returns ZERO. So: a product sells out
119
+ * (`availableQuantity: 0`), the seller edits `stockQuantity` 0 → 10, and the
120
+ * product STAYS UNBUYABLE — purchasability gates on `availableQuantity > 0`
121
+ * in three independent places (`service.ts`, the cart route, and the public
122
+ * list filter). The only field the seller can reach is the one that does not
123
+ * control availability.
124
+ *
125
+ * With 76–93% of competitor catalogues sold out, restock is the main
126
+ * lifecycle event, not an edge case.
127
+ *
128
+ * WHY A DELTA AND NOT `availableQuantity = stockQuantity`: the difference
129
+ * between the two IS the outstanding reservation — units held by placed-but-
130
+ * unpaid orders. Overwriting would hand those units back to the shelf and
131
+ * oversell them. So carry the reservation forward:
132
+ *
133
+ * reserved = prevStock - prevAvailable (clamped at 0)
134
+ * available = nextStock - reserved (clamped at 0)
135
+ *
136
+ * Examples: 10 stock / 10 available, edit to 12 → 12. 10 stock / 7 available
137
+ * (3 reserved), edit to 12 → 9. Sold out at 0/0, edit to 10 → 10.
138
+ *
139
+ * 🛑 Returns `{}` — not a value — whenever the write does not name
140
+ * `stockQuantity`, or names `availableQuantity` explicitly. The second case
141
+ * is what keeps the checkout decrement, the stock-restore job and
142
+ * `updateAvailableQuantity` authoritative: they write `availableQuantity`
143
+ * directly and must never have it recomputed from a stale `stockQuantity`
144
+ * underneath them.
145
+ *
146
+ * 🛑 EXPORTED, and not merely for tidiness. A BULK stock edit cannot go
147
+ * through `update` — that is 50 sequential round trips, and Rule #6 budgets a
148
+ * request at ~3 — so it writes through `batchUpdateEach`. But the delta is
149
+ * PER DOCUMENT (each product carries its own reservation), which means a bulk
150
+ * route has to apply this rule itself. Re-deriving it there is Root Cause
151
+ * #75's shape on the one field whose whole history is that nothing re-synced
152
+ * it. So the rule is exported and the bulk route calls THIS.
153
+ *
154
+ * 🛑 It cannot become a `BaseRepository` write hook, which was the first
155
+ * thing I tried. A hook receives `{...doc, ...patch}`, where `stockQuantity`
156
+ * is already the NEXT value — so `prevStock` is gone and `reserved` is
157
+ * uncomputable. The rule genuinely needs both documents.
158
+ */
159
+ export function resolveStockResync(current, data) {
160
+ if (!current)
161
+ return {};
162
+ if (!("stockQuantity" in data))
163
+ return {};
164
+ // An explicit availableQuantity write wins — see the 🛑 above.
165
+ if ("availableQuantity" in data)
166
+ return {};
167
+ const nextStock = data.stockQuantity;
168
+ if (typeof nextStock !== "number" || !Number.isFinite(nextStock))
169
+ return {};
170
+ const prevStock = typeof current.stockQuantity === "number" ? current.stockQuantity : 0;
171
+ const prevAvailable = typeof current.availableQuantity === "number" ? current.availableQuantity : prevStock;
172
+ const reserved = Math.max(0, prevStock - prevAvailable);
173
+ const nextAvailable = Math.max(0, nextStock - reserved);
174
+ if (nextAvailable === prevAvailable)
175
+ return {};
176
+ return { availableQuantity: nextAvailable };
177
+ }
55
178
  export class ProductRepository extends BaseRepository {
56
179
  constructor() {
57
180
  super(PRODUCT_COLLECTION);
@@ -127,7 +250,21 @@ export class ProductRepository extends BaseRepository {
127
250
  * feature's repository, and the reason is the Turbopack import-chain trap
128
251
  * (Root Cause #6/#18) — a raw collection read has neither problem.
129
252
  */
130
- async deriveTaxonomy(input) {
253
+ async deriveTaxonomy(input,
254
+ /**
255
+ * Whether this is the product's FIRST write.
256
+ *
257
+ * 🛑 Load-bearing for one field — see `applyCategoryDefaults`' features
258
+ * block. Inheriting a merge-shaped default on every save makes a seller's
259
+ * REMOVAL un-stickable: they untick an inherited feature, the next save
260
+ * that touches the category silently puts it back, and nothing reports it.
261
+ * Merge is right for create and wrong for update.
262
+ *
263
+ * Defaults to `false`, which is the safe direction: the worst a missed
264
+ * `true` can do is skip an inheritance the seller can tick themselves,
265
+ * whereas a wrongly-passed `true` resurrects a value they deleted.
266
+ */
267
+ isCreate = false) {
131
268
  const out = {};
132
269
  const cats = this.db.collection(CATEGORIES_COLLECTION);
133
270
  /*
@@ -206,8 +343,354 @@ export class ProductRepository extends BaseRepository {
206
343
  out.brand = brand.name;
207
344
  }
208
345
  }
346
+ if (catSnap?.exists) {
347
+ await this.applyCategoryDefaults(input, out, catSnap, isCreate);
348
+ }
349
+ await this.applyInclusivePricing(input, out);
209
350
  return out;
210
351
  }
352
+ /**
353
+ * Resolve the GST rate floor, and gross up an ex-tax price if the seller
354
+ * authors that way.
355
+ *
356
+ * ## The rate resolution order, in full
357
+ *
358
+ * 1. the product's own `gstRate`, if a human set one — including `0`, a
359
+ * deliberate exemption;
360
+ * 2. the CATEGORY's rate via `taxCodeId` → `taxCodes`, applied just above
361
+ * by `applyCategoryDefaults`. **This is the mechanism**, and the ~330-node
362
+ * forest carries a tax code on every listing branch, so it answers for
363
+ * effectively the whole catalogue;
364
+ * 3. `DEFAULT_GST_RATE` — a floor, warned about, never a feature.
365
+ *
366
+ * 🛑 Step 3 fires only when steps 1 and 2 both came up empty, which means
367
+ * the category has no tax code — and THAT is the defect to fix. The measure
368
+ * of success is that this warning never appears. It exists because the
369
+ * alternative fails asymmetrically: with prices tax-inclusive, treating an
370
+ * unrated item as 0% hands the seller the full amount and leaves us owing
371
+ * tax on money already paid out, which is C0's bug in miniature.
372
+ *
373
+ * ## The gross-up
374
+ *
375
+ * A store with `pricesIncludeGst: false` types EX-TAX prices, so the typed
376
+ * number is converted ONCE here and stored tax-inclusive like every other
377
+ * price. No money path branches on the flag; see `taxableFromInclusive`.
378
+ *
379
+ * Gated on the write actually carrying a price, so a stock decrement or a
380
+ * status flip pays nothing for this — the same discipline `update` already
381
+ * applies to the taxonomy derivation itself.
382
+ */
383
+ async applyInclusivePricing(input, out) {
384
+ const rate = out.gstRate ?? input.gstRate;
385
+ if (rate == null) {
386
+ out.gstRate = DEFAULT_GST_RATE;
387
+ serverLogger.warn("[gst] no rate from the product or its category — applying DEFAULT_GST_RATE; the category is missing a taxCodeId", { category: input.category, defaultRate: DEFAULT_GST_RATE });
388
+ }
389
+ /*
390
+ * Only a write that sets a price can need converting. `input.price` is the
391
+ * merged current-document-plus-patch (see `update`), so an unrelated save
392
+ * would re-convert an already-converted price — which is why the guard is
393
+ * on the PATCH carrying a price, resolved by the callers below.
394
+ */
395
+ if (input.price == null || !input.storeId)
396
+ return;
397
+ const storeSnap = await this.db
398
+ .collection(STORE_COLLECTION)
399
+ .doc(input.storeId)
400
+ .get();
401
+ const store = storeSnap.exists
402
+ ? storeSnap.data()
403
+ : null;
404
+ // Absent means inclusive — the documented default, and the one that keeps
405
+ // every existing listing's price meaning exactly what it meant before.
406
+ if (store?.pricesIncludeGst !== false)
407
+ return;
408
+ const effectiveRate = out.gstRate ?? input.gstRate ?? DEFAULT_GST_RATE;
409
+ if (effectiveRate <= 0)
410
+ return; // an exempt item has nothing to gross up
411
+ out.price = grossFromTaxable(input.price, effectiveRate);
412
+ /*
413
+ * 🛑 `compareAtPrice` is deliberately NOT converted here, because it does
414
+ * not exist. `SellerProductShell`'s pricing section lists it among its
415
+ * `fields` and renders an input for it, but `ProductDocument` has no such
416
+ * property — so whatever a seller types there is stripped by the schema and
417
+ * never stored. A declared-but-unpersisted form field is its own defect
418
+ * (and a strike-through price is a money figure, so it would need the same
419
+ * gross-up the day it becomes real); logged rather than silently worked
420
+ * around, since converting a field that is discarded would be theatre.
421
+ */
422
+ serverLogger.info("[gst] grossed up an ex-tax price for a pricesIncludeGst:false store", {
423
+ storeId: input.storeId,
424
+ rate: effectiveRate,
425
+ });
426
+ }
427
+ /**
428
+ * Hand down what the category declares: the tax code, the spec rows, the
429
+ * in-the-box list, the inherited features and the SEO templates.
430
+ *
431
+ * ## 🛑 Why this is server-side and not a form default
432
+ *
433
+ * GST is tax CORRECTNESS. A client-side default is bypassable by all ~14
434
+ * write paths, and the defect this closes is recorded in our own source:
435
+ * *"0 of 40 live orders had a `gstAmount`, and the order page's Tax row had
436
+ * never rendered."* The rate has to be applied where every path funnels, and
437
+ * that is here.
438
+ *
439
+ * ## 🛑 The three behaviours are different, and the difference is the design
440
+ *
441
+ * WRITTEN tax, specifications, inTheBox, features — written when the
442
+ * product omits them.
443
+ * FILL-BLANK seo* — fills only an empty field, never overwrites a
444
+ * seller's own words.
445
+ * ADVISORY priceGuidance — NEVER touched here. It renders as a hint
446
+ * beside the price input and nothing else. Writing a suggested
447
+ * price onto `price` would be the platform setting a seller's
448
+ * price, which is not a default, it is a decision.
449
+ *
450
+ * ## 🛑 Resolution is PER FIELD across the ancestor chain
451
+ *
452
+ * Not "the nearest category that declares a `productDefaults` object wins".
453
+ * B5's named-model leaves carry `defaultFeatures` (the blader, the battle
454
+ * type, the spin) while the tax code, the spec rows and the price band live
455
+ * on the tier-3 LINE above them. An object-level "nearest wins" would hand a
456
+ * Dragoon G its blader and NO TAX CODE — silently deriving no GST, which is
457
+ * the quiet under-charging failure the whole tax-code indirection exists to
458
+ * prevent.
459
+ *
460
+ * ## Cost
461
+ *
462
+ * One `getAll` over at most four ancestors, fired only when the leaf leaves
463
+ * something unresolved, plus one read for the tax code. With the leaf+brand
464
+ * read that is three round trips worst case against Rule #6's ~3 budget —
465
+ * and `update` only re-derives when a write names a taxonomy field, so a
466
+ * stock decrement or a status flip pays none of it.
467
+ */
468
+ async applyCategoryDefaults(input, out,
469
+ /*
470
+ * The real snapshot type, not a `{ data(): unknown }` shape. The first
471
+ * draft used the latter and `audit-unknown-leakage` was right to reject
472
+ * it: `unknown` at a parameter boundary is how a callee ends up casting,
473
+ * and the one cast here is already narrow and stated.
474
+ */
475
+ catSnap, isCreate) {
476
+ const cats = this.db.collection(CATEGORIES_COLLECTION);
477
+ const leafData = catSnap.data();
478
+ const resolved = { ...(leafData.productDefaults ?? {}) };
479
+ /*
480
+ * Which fields still need an answer. `priceGuidance` is deliberately absent
481
+ * from this list — it is never applied, so walking ancestors to find one
482
+ * would be a round trip spent on a value this function will not use.
483
+ */
484
+ const WANTED = [
485
+ "taxCodeId",
486
+ "specifications",
487
+ "defaultFeatures",
488
+ "defaultCondition",
489
+ "defaultAuthenticity",
490
+ "inTheBox",
491
+ "seoTitleTemplate",
492
+ "seoDescriptionTemplate",
493
+ "seoKeywords",
494
+ /*
495
+ * C5a — the PACKED parcel figures.
496
+ *
497
+ * 🛑 These are resolved up the ancestor chain like everything else here,
498
+ * and the field they fill is deliberately OPTIONAL on the product: the
499
+ * figure a carrier bills on is the packed box, not the item, and a bey
500
+ * is ~30 g against ~300 g boxed. A required product weight would
501
+ * therefore be an ITEM weight, systematically under-estimating every
502
+ * booking — and because the booking is capped at the amount collected
503
+ * from the buyer, systematic under-estimation means silently absorbing
504
+ * the difference.
505
+ *
506
+ * So the category's packed default drives the checkout ESTIMATE, this
507
+ * fills it when the leaf declares one, the product may refine it, and
508
+ * the real parcel figure is entered at shipment time.
509
+ */
510
+ "weightG",
511
+ "dimensionsCm",
512
+ ];
513
+ const isEmpty = (v) => v == null || (Array.isArray(v) && v.length === 0);
514
+ const unresolved = () => WANTED.filter((k) => isEmpty(resolved[k]));
515
+ if (unresolved().length > 0 && (leafData.parentIds ?? []).length > 0) {
516
+ /*
517
+ * `parentIds` is root-first / nearest-last, so walk it REVERSED —
518
+ * nearest ancestor first. One `getAll`, not a read per level: four
519
+ * sequential `doc().get()` calls would be four round trips and breach
520
+ * Rule #6 on a path that already spends two.
521
+ */
522
+ const nearestFirst = [...(leafData.parentIds ?? [])].reverse();
523
+ const snaps = await this.db.getAll(...nearestFirst.map((id) => cats.doc(id)));
524
+ for (const snap of snaps) {
525
+ if (unresolved().length === 0)
526
+ break;
527
+ if (!snap.exists)
528
+ continue;
529
+ const d = snap.data()
530
+ .productDefaults;
531
+ if (!d)
532
+ continue;
533
+ for (const k of unresolved()) {
534
+ if (!isEmpty(d[k]))
535
+ resolved[k] = d[k];
536
+ }
537
+ }
538
+ }
539
+ // ── tax: resolve the REFERENCE to a SNAPSHOT on the product ────────────
540
+ /*
541
+ * 🛑 `input.gstRate == null`, NEVER `!input.gstRate`.
542
+ *
543
+ * Zero is a DELIBERATE exemption — `tax-exempt-0` exists for live plants
544
+ * and animals — and a falsy test would overwrite every one of them with
545
+ * the category's rate. The schema's own comment at `gstRate` says so.
546
+ */
547
+ const needsRate = input.gstRate == null;
548
+ const needsHsn = !input.hsnCode;
549
+ if (resolved.taxCodeId && (needsRate || needsHsn)) {
550
+ const taxSnap = await this.db
551
+ .collection(TAX_CODES_COLLECTION)
552
+ .doc(resolved.taxCodeId)
553
+ .get();
554
+ const tax = taxSnap.exists
555
+ ? taxSnap.data()
556
+ : null;
557
+ if (tax?.isActive) {
558
+ if (needsRate && tax.gstRate != null)
559
+ out.gstRate = tax.gstRate;
560
+ if (needsHsn && tax.hsnCode)
561
+ out.hsnCode = tax.hsnCode;
562
+ }
563
+ else {
564
+ /*
565
+ * 🛑 A dangling or deactivated tax code must be LOUD, because its
566
+ * silent failure mode is under-charging.
567
+ *
568
+ * `findResolvable` answers null for both cases and the correct
569
+ * handling is "leave `gstRate` alone" — so every later listing under
570
+ * that category derives NO TAX and the order invoices zero. Nothing
571
+ * errors, the save succeeds, and the shortfall only surfaces in a
572
+ * filing. DELETE already refuses while a category references a code;
573
+ * this covers a code deactivated after the fact.
574
+ */
575
+ serverLogger.warn("Category tax code does not resolve to an active taxCodes row", {
576
+ taxCodeId: resolved.taxCodeId,
577
+ productId: input.id,
578
+ });
579
+ }
580
+ }
581
+ // ── WRITTEN: only when the product omits them ──────────────────────────
582
+ if (resolved.specifications?.length && !input.specifications?.length) {
583
+ out.specifications = resolved.specifications.map((s) => ({ ...s }));
584
+ }
585
+ /*
586
+ * 🛑 `inTheBox` is deliberately NOT written to the product.
587
+ *
588
+ * `ProductDocument` has no such field, and the plan's suggestion —
589
+ * `out.features = d.inTheBox` — predates the vocabulary merge: `features`
590
+ * now holds feature IDS, so writing "Beyblade top, Manual (where
591
+ * supplied)" into it would put prose where `array-contains` expects
592
+ * `feature-nib`, breaking every facet on that product and tokenising
593
+ * "where" and "supplied" into its search index.
594
+ *
595
+ * It stays a CATEGORY-side value, read by the description-template
596
+ * endpoint (C2b) to fill the "What's in the box?" block the new-in-box
597
+ * body already renders. That is the only consumer it ever needed.
598
+ */
599
+ if (resolved.defaultCondition && !input.condition) {
600
+ out.condition = resolved.defaultCondition;
601
+ }
602
+ if (resolved.defaultAuthenticity && !input.authenticity) {
603
+ out.authenticity = resolved.defaultAuthenticity;
604
+ }
605
+ /*
606
+ * C5a — fill-blank, never overwrite. A seller who weighed their own packed
607
+ * box has measured something the category only estimates.
608
+ *
609
+ * 🛑 `input.weightG == null`, not `!input.weightG`. A zero is nonsense for
610
+ * a parcel but it is an explicit value, and the falsy test would replace
611
+ * it with the category's figure on every save — the same distinction
612
+ * `gstRate` needs two blocks up, and for the same reason: "nobody said"
613
+ * and "somebody said zero" are different facts.
614
+ */
615
+ if (resolved.weightG != null && input.weightG == null) {
616
+ out.weightG = resolved.weightG;
617
+ }
618
+ if (resolved.dimensionsCm && !input.dimensionsCm) {
619
+ out.dimensionsCm = { ...resolved.dimensionsCm };
620
+ }
621
+ /*
622
+ * Features MERGE rather than replace — the field's own contract, and the
623
+ * reason the blader linkage works: a seller who ticks "Japan Import" keeps
624
+ * it and also gets `feature-blader-tyson-granger` from the Dragoon G leaf.
625
+ *
626
+ * 🛑 BUT ONLY ON CREATE, OR WHEN THE PRODUCT CARRIES NONE. This was a real
627
+ * defect in C2a as shipped.
628
+ *
629
+ * `update` calls `deriveTaxonomy({ ...current, ...data })`, so `input`
630
+ * holds the stored document merged with the patch — which is exactly what
631
+ * makes every other guard here correct, because a seller's edited
632
+ * `specifications` or `condition` is present and the `!input.X` test is
633
+ * false. Features were the one field that did not test presence: they
634
+ * merged unconditionally. So a seller who UNTICKED an inherited feature —
635
+ * removing `feature-type-attack` because their build is actually defense —
636
+ * had it silently re-added by the next save that touched the category or
637
+ * the brand. The removal could not stick and nothing reported it.
638
+ *
639
+ * On update the seller's array IS the answer. They have had the chance to
640
+ * curate it, and a removal is a decision. An update that carries no
641
+ * features at all still inherits, so a listing created before its category
642
+ * had defaults picks them up the first time it is edited.
643
+ *
644
+ * Capped at MAX_FEATURES_PER_PRODUCT because `features[]` feeds
645
+ * `buildProductSearchTxt`, which truncates at 600 tokens SILENTLY — an
646
+ * unbounded list would evict real title tokens nobody chose to drop. The
647
+ * product's OWN features are kept first so it is always the inherited ones
648
+ * that fall off the end.
649
+ */
650
+ const mayInheritFeatures = isCreate || !input.features?.length;
651
+ if (resolved.defaultFeatures?.length && mayInheritFeatures) {
652
+ const merged = [...(input.features ?? [])];
653
+ for (const f of resolved.defaultFeatures) {
654
+ if (!merged.includes(f))
655
+ merged.push(f);
656
+ }
657
+ if (merged.length > MAX_FEATURES_PER_PRODUCT) {
658
+ serverLogger.warn("Category default features exceeded the per-product cap", {
659
+ productId: input.id,
660
+ kept: MAX_FEATURES_PER_PRODUCT,
661
+ dropped: merged.length - MAX_FEATURES_PER_PRODUCT,
662
+ });
663
+ }
664
+ out.features = merged.slice(0, MAX_FEATURES_PER_PRODUCT);
665
+ }
666
+ // ── FILL-BLANK: a template never overwrites what a seller wrote ─────────
667
+ const title = input.title ?? "";
668
+ if (resolved.seoTitleTemplate && !input.seoTitle && title) {
669
+ out.seoTitle = interpolateDefaults(resolved.seoTitleTemplate, input, out);
670
+ }
671
+ if (resolved.seoDescriptionTemplate && !input.seoDescription && title) {
672
+ out.seoDescription = interpolateDefaults(resolved.seoDescriptionTemplate, input, out);
673
+ }
674
+ /*
675
+ * 🛑 Same create-only gate as features, and for the same reason — plus
676
+ * this one also contradicted the stated contract three lines above it.
677
+ * "FILL-BLANK: seo* fills only an empty field, never overwrites a
678
+ * seller's own words" was true of `seoTitle` and `seoDescription` and
679
+ * false of `seoKeywords`, which merged on every save. A seller who
680
+ * deleted an inherited keyword got it back.
681
+ *
682
+ * Lower stakes than features — nobody watches their keyword list the way
683
+ * they watch a type chip — which is precisely why it would have gone
684
+ * unnoticed indefinitely.
685
+ */
686
+ if (resolved.seoKeywords?.length && (isCreate || !input.seoKeywords?.length)) {
687
+ const merged = [...(input.seoKeywords ?? [])];
688
+ for (const k of resolved.seoKeywords)
689
+ if (!merged.includes(k))
690
+ merged.push(k);
691
+ out.seoKeywords = merged;
692
+ }
693
+ }
211
694
  async update(id, data) {
212
695
  this.cacheInvalidateForId(id);
213
696
  const current = await super.findById(id);
@@ -221,10 +704,12 @@ export class ProductRepository extends BaseRepository {
221
704
  const derived = touchesTaxonomy
222
705
  ? await this.deriveTaxonomy({ ...current, ...data })
223
706
  : {};
224
- const merged = { ...current, ...data, ...derived };
707
+ const stock = resolveStockResync(current, data);
708
+ const merged = { ...current, ...data, ...derived, ...stock };
225
709
  const updated = await super.update(id, {
226
710
  ...data,
227
711
  ...derived,
712
+ ...stock,
228
713
  searchTxt: buildProductSearchTxt(merged),
229
714
  });
230
715
  this.cacheSet(updated);
@@ -248,7 +733,7 @@ export class ProductRepository extends BaseRepository {
248
733
  // what makes a UI-created product reachable from its own category page at
249
734
  // all. A seed row already carrying the correct chain derives to the same
250
735
  // value, so this is a no-op for every existing fixture.
251
- const derived = await this.deriveTaxonomy(input);
736
+ const derived = await this.deriveTaxonomy(input, true);
252
737
  const withTaxonomy = { ...input, ...derived };
253
738
  const productData = {
254
739
  ...withTaxonomy,
@@ -528,10 +1013,69 @@ export class ProductRepository extends BaseRepository {
528
1013
  return baseQuery;
529
1014
  }
530
1015
  async list(model, opts) {
531
- const result = await this.sieveQuery(model, ProductRepository.SIEVE_FIELDS, {
1016
+ /*
1017
+ * 🛑 THE EMPTY GUARD — a non-blank query that yields NO usable token must
1018
+ * return nothing, not everything.
1019
+ *
1020
+ * `parseSearchTxtQuery` normalises away punctuation, so `"!!!"`, `"—"`,
1021
+ * `"???"` and `"@#$"` all reduce to `[]`. `buildScopedQuery` then takes its
1022
+ * `searchTxt.length > 0` branch as FALSE and emits **no clause at all**, so
1023
+ * the query falls back to the caller's other filters — on the public
1024
+ * listing that is `status==published` — and **the entire published
1025
+ * catalogue is returned as search results.**
1026
+ *
1027
+ * `products` was the only one of the twelve MIGRATED collections still
1028
+ * hand-rolling this. The other eleven go through `planSearchTxt`, whose
1029
+ * whole reason for existing is this guard (see the header of
1030
+ * `utils/search-txt-query.ts`); adopting it here closes the gap rather
1031
+ * than adding a twelfth private copy of the rule.
1032
+ *
1033
+ * `planSearchTxt` is built on the same `parseSearchTxtQuery` this method
1034
+ * already called, and `plan.head`/`plan.rest` are exactly the previous
1035
+ * `searchTxt[0]`/`.slice(1)` — so apart from the guard this is behaviour-
1036
+ * identical, which is what makes it safe for a path four executors share.
1037
+ */
1038
+ const plan = planSearchTxt(opts?.search);
1039
+ if (plan.empty)
1040
+ return emptySearchResult();
1041
+ /*
1042
+ * ── D2 Fix 2: a MULTI-TERM search over-fetches a window ────────────────
1043
+ *
1044
+ * 🛑 The bug: `refineSearchTxt` used to filter the already-paginated page,
1045
+ * so a two-word search could only ever return matches that happened to fall
1046
+ * inside one page window — rows 51+ matching both terms were unreachable,
1047
+ * and `hasMore: false` asserted there was no page 2. A search returning 7
1048
+ * of 40 real matches reported "7 results" and disabled Next, which reads as
1049
+ * a working search.
1050
+ *
1051
+ * So for a multi-term query the FETCH asks for a bounded window and the
1052
+ * refine slices the requested page out of it. A single-term query is
1053
+ * untouched: its one `array-contains` clause paginates exactly, there is
1054
+ * nothing to refine, and over-fetching would be pure cost.
1055
+ *
1056
+ * 🛑 Bounded, not unbounded (Rule #6): one read of at most
1057
+ * `SEARCH_REFINE_WINDOW`, and when that saturates the result carries
1058
+ * `truncated` so the total renders as a floor rather than a false total.
1059
+ */
1060
+ const isMultiTerm = plan.rest.length > 0;
1061
+ const requestedPage = Math.max(1, Number(model?.page ?? 1) || 1);
1062
+ const requestedPageSize = Math.max(1, Number(model?.pageSize ?? 20) || 20);
1063
+ const result = await this.sieveQuery(
1064
+ /*
1065
+ * The window is requested through the MODEL, not a new `SieveOptions`
1066
+ * field — `sieveQuery` already derives its page from `model.page` /
1067
+ * `model.pageSize`, so overriding them needs no API change and no second
1068
+ * way to express a page size.
1069
+ */
1070
+ isMultiTerm ? { ...model, page: 1, pageSize: SEARCH_REFINE_WINDOW } : model, ProductRepository.SIEVE_FIELDS, {
532
1071
  baseQuery: this.buildScopedQuery(opts),
533
1072
  defaultPageSize: 20,
534
- maxPageSize: 100,
1073
+ /*
1074
+ * 🛑 `maxPageSize` has to rise with the window or Sieve clamps the
1075
+ * request back to 100 — and the window would silently be a page again,
1076
+ * which is the original bug with a larger constant.
1077
+ */
1078
+ maxPageSize: isMultiTerm ? SEARCH_REFINE_WINDOW : 100,
535
1079
  aliases: ProductRepository.FILTER_ALIASES,
536
1080
  });
537
1081
  // Only the most selective term became the `array-contains` clause, because
@@ -540,24 +1084,21 @@ export class ProductRepository extends BaseRepository {
540
1084
  // nothing actually refined them — so "red dranzer" returned everything
541
1085
  // matching "dranzer" and the second word did nothing at all.
542
1086
  //
543
- // Same shape as faqsRepository.list, deliberately: one implementation of
544
- // "AND the remaining terms" that both collections read the same way.
545
- const terms = parseSearchTxtQuery(opts?.search ?? "");
546
- const extraTerms = terms.slice(1);
547
- if (extraTerms.length === 0)
548
- return result;
549
- const items = result.items.filter((p) => matchesAllSearchTerms(p.searchTxt, extraTerms));
550
- // `total` becomes a FLOOR once rows are dropped after the page was cut —
551
- // it counts this page only. That is the known post-pagination-filter debt
552
- // (Phase 5), not a new invention: reporting the pre-filter total here would
553
- // promise pages that render empty.
554
- return {
555
- ...result,
556
- items,
557
- total: items.length,
558
- totalPages: items.length === 0 ? 0 : 1,
559
- hasMore: false,
560
- };
1087
+ // `refineSearchTxt` is that AND-refine, shared with the other eleven
1088
+ // migrated collections. It also owns the `total`-becomes-a-FLOOR
1089
+ // bookkeeping: once rows are dropped after the page was cut, `total` counts
1090
+ // this page only. That is the known post-pagination-filter debt, not a new
1091
+ // invention — reporting the pre-filter total would promise pages that
1092
+ // render empty.
1093
+ return refineSearchTxt(result, plan.rest, isMultiTerm
1094
+ ? {
1095
+ page: requestedPage,
1096
+ pageSize: requestedPageSize,
1097
+ // Saturated means more may exist beyond the window, so `total` is a
1098
+ // FLOOR and `truncated` says so.
1099
+ windowSaturated: (result.items?.length ?? 0) >= SEARCH_REFINE_WINDOW,
1100
+ }
1101
+ : undefined);
561
1102
  }
562
1103
  /**
563
1104
  * How many products of each listing type exist within a scope — the numbers
@@ -577,21 +1118,21 @@ export class ProductRepository extends BaseRepository {
577
1118
  aliases: ProductRepository.FILTER_ALIASES,
578
1119
  });
579
1120
  }
580
- async incrementViewCount(productId) {
581
- try {
582
- await this.db
583
- .collection(this.collection)
584
- .doc(productId)
585
- .update({
586
- [PRODUCT_FIELDS.VIEW_COUNT]: increment(1),
587
- });
588
- // Fire-and-forget analytics: a lost view increment changes no rendered
589
- // content, so it must never break the product read path it rides with.
590
- }
591
- catch (_err) {
592
- void normalizeError(_err);
593
- }
594
- }
1121
+ /*
1122
+ * 🛑 `incrementViewCount` DELETED 2026-10-10 — zero callers since
1123
+ * 2026-08-31.
1124
+ *
1125
+ * It was removed from the product-detail render path then, for two good
1126
+ * reasons recorded in `_internal/server/features/products/data.ts`: it was a
1127
+ * Firestore WRITE on every render (Rule #6), and it double-counted against
1128
+ * `pageViews`, which is now the single counter. The method itself was left
1129
+ * behind, so `viewCount` has had a writer in the codebase and none in
1130
+ * practice ever since — which is how a "Most Viewed" sort and a "0 views"
1131
+ * column both shipped against a field no document has.
1132
+ *
1133
+ * Keeping a writer nobody calls is what makes the dead field look alive.
1134
+ * `pageViews` is the counter; roll it up rather than reviving this.
1135
+ */
595
1136
  /**
596
1137
  * Cloud Functions: find published auctions whose end date has already passed.
597
1138
  * Used by the auction settlement job to finalize expired auctions.
@@ -695,6 +1236,29 @@ ProductRepository.SIEVE_FIELDS = {
695
1236
  isSold: { canFilter: true, canSort: true },
696
1237
  isPartOfBundle: { canFilter: true, canSort: false },
697
1238
  isTestData: { canFilter: true, canSort: false },
1239
+ /*
1240
+ * The warehouse location — C4.
1241
+ *
1242
+ * 🛑 `physicalLocation` was absent from this config entirely, so a filter
1243
+ * on it was DROPPED SILENTLY: `sieve.ts` sets `throwExceptions: false`, so
1244
+ * `findField()` returning undefined removes the clause rather than
1245
+ * raising. A seller could set a location and then filter by it to no
1246
+ * effect, with nothing anywhere saying so — Root Cause #62's
1247
+ * EMITTED_BUT_UNFILTERABLE shape.
1248
+ *
1249
+ * Nested paths, because that is what Firestore filters on
1250
+ * (`physicalLocation.zone`), and `canSort: false` on all three: sorting by
1251
+ * bin would pair an orderBy with whatever else is filtered and demand a
1252
+ * composite index per combination, which is the trap next door
1253
+ * (Root Cause #59). Browsing a bin is a FILTER, not a sort.
1254
+ *
1255
+ * The primary way to find a location is still `searchTxt` — see
1256
+ * `physicalLocationTokens`. These exist so a dashboard can ask the precise
1257
+ * question ("zone A exactly") where search answers the loose one.
1258
+ */
1259
+ "physicalLocation.zone": { canFilter: true, canSort: false },
1260
+ "physicalLocation.shelf": { canFilter: true, canSort: false },
1261
+ "physicalLocation.bin": { canFilter: true, canSort: false },
698
1262
  brandSlug: { canFilter: true, canSort: false },
699
1263
  sublistingCategoryId: { canFilter: true, canSort: false },
700
1264
  createdAt: { canFilter: true, canSort: true, parseValue: parseSieveDateValue },