@mohasinac/appkit 4.52.5 → 4.53.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1018) hide show
  1. package/dist/.build-stamp.json +4 -4
  2. package/dist/_internal/client/features/sticker-trace/canvas-codec.d.ts +2 -0
  3. package/dist/_internal/client/features/sticker-trace/canvas-codec.js +148 -0
  4. package/dist/_internal/client/scaffolds/AppShell.js +1 -1
  5. package/dist/_internal/server/features/auctions/actions.js +1 -1
  6. package/dist/_internal/server/features/auctions/og.d.ts +3 -1
  7. package/dist/_internal/server/features/auctions/og.js +3 -1
  8. package/dist/_internal/server/features/bundles/actions.js +1 -1
  9. package/dist/_internal/server/features/business-documents/download.d.ts +41 -0
  10. package/dist/_internal/server/features/business-documents/download.js +91 -0
  11. package/dist/_internal/server/features/categories/adapters.d.ts +1 -1
  12. package/dist/_internal/server/features/categories/adapters.js +10 -0
  13. package/dist/_internal/server/features/categories/data.js +23 -7
  14. package/dist/_internal/server/features/checkout/actions.d.ts +14 -0
  15. package/dist/_internal/server/features/checkout/actions.js +116 -15
  16. package/dist/_internal/server/features/checkout/bundle-expansion.js +17 -0
  17. package/dist/_internal/server/features/checkout/data.d.ts +37 -0
  18. package/dist/_internal/server/features/checkout/data.js +20 -3
  19. package/dist/_internal/server/features/checkout/group-rule-revalidation.d.ts +34 -0
  20. package/dist/_internal/server/features/checkout/group-rule-revalidation.js +124 -0
  21. package/dist/_internal/server/features/checkout/supplier-identity.d.ts +55 -0
  22. package/dist/_internal/server/features/checkout/supplier-identity.js +81 -0
  23. package/dist/_internal/server/features/classified/metadata.js +1 -1
  24. package/dist/_internal/server/features/classified/og.d.ts +3 -1
  25. package/dist/_internal/server/features/classified/og.js +3 -1
  26. package/dist/_internal/server/features/digital-code/metadata.js +1 -1
  27. package/dist/_internal/server/features/digital-code/og.d.ts +3 -1
  28. package/dist/_internal/server/features/digital-code/og.js +3 -1
  29. package/dist/_internal/server/features/digital-code/pool.d.ts +19 -4
  30. package/dist/_internal/server/features/digital-code/pool.js +19 -4
  31. package/dist/_internal/server/features/live/metadata.js +1 -1
  32. package/dist/_internal/server/features/live/og.d.ts +3 -1
  33. package/dist/_internal/server/features/live/og.js +3 -1
  34. package/dist/_internal/server/features/lottery/actions.js +9 -1
  35. package/dist/_internal/server/features/lottery/og.d.ts +40 -0
  36. package/dist/_internal/server/features/lottery/og.js +79 -0
  37. package/dist/_internal/server/features/messages/actions.js +5 -1
  38. package/dist/_internal/server/features/offers/adapters.js +17 -3
  39. package/dist/_internal/server/features/orders/actions.js +7 -2
  40. package/dist/_internal/server/features/parts/og.js +1 -1
  41. package/dist/_internal/server/features/pre-orders/og.d.ts +3 -1
  42. package/dist/_internal/server/features/pre-orders/og.js +3 -1
  43. package/dist/_internal/server/features/price-index/search.d.ts +18 -0
  44. package/dist/_internal/server/features/price-index/search.js +47 -7
  45. package/dist/_internal/server/features/prize-draws/og.d.ts +3 -1
  46. package/dist/_internal/server/features/prize-draws/og.js +3 -1
  47. package/dist/_internal/server/features/products/group-members.d.ts +26 -0
  48. package/dist/_internal/server/features/products/group-members.js +7 -1
  49. package/dist/_internal/server/features/products/og.d.ts +3 -1
  50. package/dist/_internal/server/features/products/og.js +3 -1
  51. package/dist/_internal/server/features/raffle/actions.d.ts +19 -0
  52. package/dist/_internal/server/features/raffle/actions.js +25 -0
  53. package/dist/_internal/server/features/reviews/actions.js +1 -1
  54. package/dist/_internal/server/features/reviews/data.d.ts +1 -1
  55. package/dist/_internal/server/features/search/index-build/artifact-store.d.ts +89 -0
  56. package/dist/_internal/server/features/search/index-build/artifact-store.js +208 -0
  57. package/dist/_internal/server/features/search/index-build/build.d.ts +57 -0
  58. package/dist/_internal/server/features/search/index-build/build.js +285 -0
  59. package/dist/_internal/server/features/search/index-build/sources.d.ts +53 -0
  60. package/dist/_internal/server/features/search/index-build/sources.js +385 -0
  61. package/dist/_internal/server/features/search/scoped-sources.d.ts +26 -0
  62. package/dist/_internal/server/features/search/scoped-sources.js +252 -0
  63. package/dist/_internal/server/features/search/search-everything.d.ts +57 -0
  64. package/dist/_internal/server/features/search/search-everything.js +70 -20
  65. package/dist/_internal/server/features/search/search-sources.d.ts +0 -15
  66. package/dist/_internal/server/features/search/search-sources.js +142 -7
  67. package/dist/_internal/server/features/seo/robots.js +21 -1
  68. package/dist/_internal/server/features/seo/sitemap.js +7 -1
  69. package/dist/_internal/server/features/shared/listing-adapters.js +4 -2
  70. package/dist/_internal/server/features/shared/listing-data-factory.js +16 -4
  71. package/dist/_internal/server/features/site-settings/adapters.d.ts +1 -1
  72. package/dist/_internal/server/features/site-settings/adapters.js +26 -0
  73. package/dist/_internal/server/features/sticker-trace/actions.d.ts +109 -0
  74. package/dist/_internal/server/features/sticker-trace/actions.js +172 -0
  75. package/dist/_internal/server/features/sticker-trace/adapters.d.ts +91 -0
  76. package/dist/_internal/server/features/sticker-trace/adapters.js +175 -0
  77. package/dist/_internal/server/features/sticker-trace/build-cut-file.d.ts +26 -0
  78. package/dist/_internal/server/features/sticker-trace/build-cut-file.js +127 -0
  79. package/dist/_internal/server/features/sticker-trace/coordinator.d.ts +27 -0
  80. package/dist/_internal/server/features/sticker-trace/coordinator.js +169 -0
  81. package/dist/_internal/server/features/sticker-trace/fanout.d.ts +43 -0
  82. package/dist/_internal/server/features/sticker-trace/fanout.js +180 -0
  83. package/dist/_internal/server/features/sticker-trace/finalizer.d.ts +25 -0
  84. package/dist/_internal/server/features/sticker-trace/finalizer.js +123 -0
  85. package/dist/_internal/server/features/sticker-trace/mosaic-inputs.d.ts +30 -0
  86. package/dist/_internal/server/features/sticker-trace/mosaic-inputs.js +112 -0
  87. package/dist/_internal/server/features/sticker-trace/progress.d.ts +81 -0
  88. package/dist/_internal/server/features/sticker-trace/progress.js +198 -0
  89. package/dist/_internal/server/features/sticker-trace/promote-to-listings.d.ts +26 -0
  90. package/dist/_internal/server/features/sticker-trace/promote-to-listings.js +264 -0
  91. package/dist/_internal/server/features/sticker-trace/promote.d.ts +23 -0
  92. package/dist/_internal/server/features/sticker-trace/promote.js +193 -0
  93. package/dist/_internal/server/features/sticker-trace/shard.d.ts +50 -0
  94. package/dist/_internal/server/features/sticker-trace/shard.js +174 -0
  95. package/dist/_internal/server/features/sticker-trace/sheet-actions.d.ts +143 -0
  96. package/dist/_internal/server/features/sticker-trace/sheet-actions.js +311 -0
  97. package/dist/_internal/server/features/sticker-trace/storage.d.ts +154 -0
  98. package/dist/_internal/server/features/sticker-trace/storage.js +301 -0
  99. package/dist/_internal/server/features/stores/adapters.d.ts +1 -1
  100. package/dist/_internal/server/features/stores/adapters.js +16 -0
  101. package/dist/_internal/server/features/stores/index.d.ts +1 -0
  102. package/dist/_internal/server/features/stores/index.js +1 -0
  103. package/dist/_internal/server/features/stores/tabs.d.ts +25 -0
  104. package/dist/_internal/server/features/stores/tabs.js +122 -0
  105. package/dist/_internal/server/functions/scheduled.d.ts +2 -1
  106. package/dist/_internal/server/functions/scheduled.js +25 -1
  107. package/dist/_internal/server/jobs/core/_event-ref.d.ts +51 -0
  108. package/dist/_internal/server/jobs/core/_event-ref.js +63 -0
  109. package/dist/_internal/server/jobs/core/assignSpinPrize.d.ts +18 -0
  110. package/dist/_internal/server/jobs/core/assignSpinPrize.js +77 -16
  111. package/dist/_internal/server/jobs/core/auctionSettlement.js +13 -4
  112. package/dist/_internal/server/jobs/core/autoPayoutEligibility.js +44 -15
  113. package/dist/_internal/server/jobs/core/bundleStockSync.js +3 -4
  114. package/dist/_internal/server/jobs/core/cleanupRtdbEvents.js +44 -0
  115. package/dist/_internal/server/jobs/core/event-draw-reasons.d.ts +78 -0
  116. package/dist/_internal/server/jobs/core/event-draw-reasons.js +133 -0
  117. package/dist/_internal/server/jobs/core/listingProcessor.js +28 -8
  118. package/dist/_internal/server/jobs/core/onOrderCreate.js +12 -1
  119. package/dist/_internal/server/jobs/core/onScamReportCreate.js +13 -2
  120. package/dist/_internal/server/jobs/core/onScamReportRejected.js +8 -2
  121. package/dist/_internal/server/jobs/core/onScamReportVerified.js +8 -2
  122. package/dist/_internal/server/jobs/core/onStoreWrite.js +11 -4
  123. package/dist/_internal/server/jobs/core/prizeDrawAssignWinner.js +5 -4
  124. package/dist/_internal/server/jobs/core/prizeDrawExpiryReveal.js +1 -4
  125. package/dist/_internal/server/jobs/core/prizeDrawSoldOutReveal.js +1 -2
  126. package/dist/_internal/server/jobs/core/promotions.js +7 -4
  127. package/dist/_internal/server/jobs/core/searchIndexBuild.d.ts +7 -0
  128. package/dist/_internal/server/jobs/core/searchIndexBuild.js +211 -0
  129. package/dist/_internal/server/jobs/core/triggerEventRaffle.d.ts +35 -0
  130. package/dist/_internal/server/jobs/core/triggerEventRaffle.js +213 -31
  131. package/dist/_internal/server/jobs/core/weeklyPayoutEligibility.js +20 -14
  132. package/dist/_internal/server/jobs/handlers/assignSpinPrize.d.ts +8 -0
  133. package/dist/_internal/server/jobs/handlers/assignSpinPrize.js +15 -15
  134. package/dist/_internal/server/jobs/handlers/index.d.ts +1 -0
  135. package/dist/_internal/server/jobs/handlers/index.js +1 -0
  136. package/dist/_internal/server/jobs/handlers/onCategoryWrite.js +18 -0
  137. package/dist/_internal/server/jobs/handlers/onProductWrite.js +18 -0
  138. package/dist/_internal/server/jobs/handlers/onReviewWrite.js +18 -0
  139. package/dist/_internal/server/jobs/handlers/onScamReportUpdate.js +18 -0
  140. package/dist/_internal/server/jobs/handlers/onStoreWrite.js +18 -0
  141. package/dist/_internal/server/jobs/handlers/searchIndexBuild.d.ts +2 -0
  142. package/dist/_internal/server/jobs/handlers/searchIndexBuild.js +2 -0
  143. package/dist/_internal/server/jobs/handlers/triggerEventRaffle.d.ts +8 -0
  144. package/dist/_internal/server/jobs/handlers/triggerEventRaffle.js +15 -6
  145. package/dist/_internal/shared/actions/action-registry.js +29 -0
  146. package/dist/_internal/shared/cache/revalidate-targets.d.ts +0 -1
  147. package/dist/_internal/shared/cache/revalidate-targets.js +10 -8
  148. package/dist/_internal/shared/checkout/rules/_defaults.js +0 -2
  149. package/dist/_internal/shared/checkout/rules/_limits.d.ts +14 -1
  150. package/dist/_internal/shared/checkout/rules/_limits.js +14 -1
  151. package/dist/_internal/shared/checkout/rules/_registry.js +2 -0
  152. package/dist/_internal/shared/checkout/rules/auction.rule.js +9 -1
  153. package/dist/_internal/shared/checkout/rules/bundle.rule.js +13 -0
  154. package/dist/_internal/shared/checkout/rules/index.d.ts +2 -0
  155. package/dist/_internal/shared/checkout/rules/index.js +9 -0
  156. package/dist/_internal/shared/checkout/rules/offer.rule.js +0 -1
  157. package/dist/_internal/shared/checkout/rules/payment-gate.d.ts +26 -0
  158. package/dist/_internal/shared/checkout/rules/payment-gate.js +133 -0
  159. package/dist/_internal/shared/checkout/rules/prize-draw.rule.js +29 -8
  160. package/dist/_internal/shared/checkout/rules/spares.rule.d.ts +16 -0
  161. package/dist/_internal/shared/checkout/rules/spares.rule.js +5 -0
  162. package/dist/_internal/shared/checkout/rules/types.d.ts +26 -2
  163. package/dist/_internal/shared/config/schema.d.ts +122 -0
  164. package/dist/_internal/shared/features/cart/schema.js +3 -2
  165. package/dist/_internal/shared/features/events/config.d.ts +14 -0
  166. package/dist/_internal/shared/features/events/config.js +14 -0
  167. package/dist/_internal/shared/features/notifications/action-url.js +8 -0
  168. package/dist/_internal/shared/features/products/group-rules.d.ts +75 -0
  169. package/dist/_internal/shared/features/products/group-rules.js +142 -0
  170. package/dist/_internal/shared/features/site-settings/types.d.ts +11 -0
  171. package/dist/_internal/shared/features/sticker-trace/codec.d.ts +81 -0
  172. package/dist/_internal/shared/features/sticker-trace/codec.js +30 -0
  173. package/dist/_internal/shared/features/sticker-trace/config.d.ts +81 -0
  174. package/dist/_internal/shared/features/sticker-trace/config.js +177 -0
  175. package/dist/_internal/shared/features/sticker-trace/cut-contour.d.ts +20 -0
  176. package/dist/_internal/shared/features/sticker-trace/cut-contour.js +60 -0
  177. package/dist/_internal/shared/features/sticker-trace/export/build-export-set.d.ts +65 -0
  178. package/dist/_internal/shared/features/sticker-trace/export/build-export-set.js +176 -0
  179. package/dist/_internal/shared/features/sticker-trace/export/cut-svg.d.ts +56 -0
  180. package/dist/_internal/shared/features/sticker-trace/export/cut-svg.js +120 -0
  181. package/dist/_internal/shared/features/sticker-trace/export/machine-profiles.d.ts +92 -0
  182. package/dist/_internal/shared/features/sticker-trace/export/machine-profiles.js +153 -0
  183. package/dist/_internal/shared/features/sticker-trace/export/nesting.d.ts +51 -0
  184. package/dist/_internal/shared/features/sticker-trace/export/nesting.js +110 -0
  185. package/dist/_internal/shared/features/sticker-trace/export/page-sizes.d.ts +68 -0
  186. package/dist/_internal/shared/features/sticker-trace/export/page-sizes.js +223 -0
  187. package/dist/_internal/shared/features/sticker-trace/export/part-tiling.d.ts +51 -0
  188. package/dist/_internal/shared/features/sticker-trace/export/part-tiling.js +178 -0
  189. package/dist/_internal/shared/features/sticker-trace/export/simplify-budget.d.ts +26 -0
  190. package/dist/_internal/shared/features/sticker-trace/export/simplify-budget.js +134 -0
  191. package/dist/_internal/shared/features/sticker-trace/export/vectorise-art.d.ts +40 -0
  192. package/dist/_internal/shared/features/sticker-trace/export/vectorise-art.js +195 -0
  193. package/dist/_internal/shared/features/sticker-trace/index.d.ts +2 -0
  194. package/dist/_internal/shared/features/sticker-trace/index.js +59 -0
  195. package/dist/_internal/shared/features/sticker-trace/math/catmull-rom.d.ts +11 -0
  196. package/dist/_internal/shared/features/sticker-trace/math/catmull-rom.js +66 -0
  197. package/dist/_internal/shared/features/sticker-trace/math/edt.d.ts +27 -0
  198. package/dist/_internal/shared/features/sticker-trace/math/edt.js +165 -0
  199. package/dist/_internal/shared/features/sticker-trace/math/label.d.ts +15 -0
  200. package/dist/_internal/shared/features/sticker-trace/math/label.js +156 -0
  201. package/dist/_internal/shared/features/sticker-trace/math/marching-squares.d.ts +16 -0
  202. package/dist/_internal/shared/features/sticker-trace/math/marching-squares.js +242 -0
  203. package/dist/_internal/shared/features/sticker-trace/math/morphology.d.ts +46 -0
  204. package/dist/_internal/shared/features/sticker-trace/math/morphology.js +168 -0
  205. package/dist/_internal/shared/features/sticker-trace/math/rasterize-path.d.ts +88 -0
  206. package/dist/_internal/shared/features/sticker-trace/math/rasterize-path.js +286 -0
  207. package/dist/_internal/shared/features/sticker-trace/math/rdp.d.ts +10 -0
  208. package/dist/_internal/shared/features/sticker-trace/math/rdp.js +74 -0
  209. package/dist/_internal/shared/features/sticker-trace/resume.d.ts +50 -0
  210. package/dist/_internal/shared/features/sticker-trace/resume.js +160 -0
  211. package/dist/_internal/shared/features/sticker-trace/trace/cluster.d.ts +20 -0
  212. package/dist/_internal/shared/features/sticker-trace/trace/cluster.js +132 -0
  213. package/dist/_internal/shared/features/sticker-trace/trace/cross-profile.d.ts +28 -0
  214. package/dist/_internal/shared/features/sticker-trace/trace/cross-profile.js +120 -0
  215. package/dist/_internal/shared/features/sticker-trace/trace/flood.d.ts +21 -0
  216. package/dist/_internal/shared/features/sticker-trace/trace/flood.js +104 -0
  217. package/dist/_internal/shared/features/sticker-trace/trace/geometry.d.ts +3 -0
  218. package/dist/_internal/shared/features/sticker-trace/trace/geometry.js +140 -0
  219. package/dist/_internal/shared/features/sticker-trace/trace/line-filter.d.ts +15 -0
  220. package/dist/_internal/shared/features/sticker-trace/trace/line-filter.js +138 -0
  221. package/dist/_internal/shared/features/sticker-trace/trace/merge.d.ts +27 -0
  222. package/dist/_internal/shared/features/sticker-trace/trace/merge.js +187 -0
  223. package/dist/_internal/shared/features/sticker-trace/trace/paper.d.ts +32 -0
  224. package/dist/_internal/shared/features/sticker-trace/trace/paper.js +147 -0
  225. package/dist/_internal/shared/features/sticker-trace/trace/prefilter.d.ts +30 -0
  226. package/dist/_internal/shared/features/sticker-trace/trace/prefilter.js +125 -0
  227. package/dist/_internal/shared/features/sticker-trace/trace/quantise.d.ts +10 -0
  228. package/dist/_internal/shared/features/sticker-trace/trace/quantise.js +153 -0
  229. package/dist/_internal/shared/features/sticker-trace/trace/ridge.d.ts +88 -0
  230. package/dist/_internal/shared/features/sticker-trace/trace/ridge.js +344 -0
  231. package/dist/_internal/shared/features/sticker-trace/trace/segment.d.ts +10 -0
  232. package/dist/_internal/shared/features/sticker-trace/trace/segment.js +251 -0
  233. package/dist/_internal/shared/features/sticker-trace/types.d.ts +197 -0
  234. package/dist/_internal/shared/features/sticker-trace/types.js +49 -0
  235. package/dist/_internal/shared/listing-types/_registry.d.ts +35 -0
  236. package/dist/_internal/shared/listing-types/_registry.js +39 -1
  237. package/dist/_internal/shared/listing-types/art/config.d.ts +2 -0
  238. package/dist/_internal/shared/listing-types/art/config.js +3 -0
  239. package/dist/_internal/shared/listing-types/auction/config.d.ts +2 -0
  240. package/dist/_internal/shared/listing-types/auction/config.js +3 -0
  241. package/dist/_internal/shared/listing-types/availability.js +48 -0
  242. package/dist/_internal/shared/listing-types/capabilities.js +19 -0
  243. package/dist/_internal/shared/listing-types/classified/config.d.ts +2 -0
  244. package/dist/_internal/shared/listing-types/classified/config.js +3 -0
  245. package/dist/_internal/shared/listing-types/digital-code/config.d.ts +2 -0
  246. package/dist/_internal/shared/listing-types/digital-code/config.js +3 -0
  247. package/dist/_internal/shared/listing-types/feature-flags.d.ts +7 -0
  248. package/dist/_internal/shared/listing-types/feature-flags.js +10 -0
  249. package/dist/_internal/shared/listing-types/live/config.d.ts +2 -0
  250. package/dist/_internal/shared/listing-types/live/config.js +3 -0
  251. package/dist/_internal/shared/listing-types/pre-order/config.d.ts +2 -0
  252. package/dist/_internal/shared/listing-types/pre-order/config.js +3 -0
  253. package/dist/_internal/shared/listing-types/prize-draw/config.d.ts +2 -0
  254. package/dist/_internal/shared/listing-types/prize-draw/config.js +3 -0
  255. package/dist/_internal/shared/listing-types/spares/config.d.ts +74 -0
  256. package/dist/_internal/shared/listing-types/spares/config.js +60 -0
  257. package/dist/_internal/shared/listing-types/spares/ctas.d.ts +1 -0
  258. package/dist/_internal/shared/listing-types/spares/ctas.js +4 -0
  259. package/dist/_internal/shared/listing-types/spares/og.js +1 -0
  260. package/dist/_internal/shared/listing-types/spares/schema.d.ts +2 -0
  261. package/dist/_internal/shared/listing-types/spares/schema.js +3 -0
  262. package/dist/_internal/shared/listing-types/spares/seed-factory.d.ts +1 -0
  263. package/dist/_internal/shared/listing-types/spares/seed-factory.js +1 -0
  264. package/dist/_internal/shared/listing-types/standard/config.d.ts +2 -0
  265. package/dist/_internal/shared/listing-types/standard/config.js +3 -0
  266. package/dist/_internal/shared/listing-types/stickers/config.d.ts +2 -0
  267. package/dist/_internal/shared/listing-types/stickers/config.js +3 -0
  268. package/dist/_internal/shared/media/limits.d.ts +12 -2
  269. package/dist/_internal/shared/media/limits.js +12 -2
  270. package/dist/_internal/shared/search/artifact-url.d.ts +35 -0
  271. package/dist/_internal/shared/search/artifact-url.js +119 -0
  272. package/dist/_internal/shared/search/index-record.d.ts +68 -0
  273. package/dist/_internal/shared/search/index-record.js +96 -0
  274. package/dist/_internal/shared/search/match.d.ts +76 -0
  275. package/dist/_internal/shared/search/match.js +264 -0
  276. package/dist/_internal/shared/search/to-groups.d.ts +52 -0
  277. package/dist/_internal/shared/search/to-groups.js +141 -0
  278. package/dist/client.d.ts +16 -9
  279. package/dist/client.js +16 -6
  280. package/dist/configs/eslint.js +22 -2
  281. package/dist/constants/api-endpoints.d.ts +107 -15
  282. package/dist/constants/api-endpoints.js +60 -5
  283. package/dist/constants/cache-invalidation.js +3 -1
  284. package/dist/constants/field-names.d.ts +13 -1
  285. package/dist/constants/field-names.js +42 -1
  286. package/dist/contracts/repository.d.ts +8 -7
  287. package/dist/contracts/search.d.ts +2 -2
  288. package/dist/contracts/table.d.ts +3 -3
  289. package/dist/contracts/table.js +3 -3
  290. package/dist/core/contact-submissions.repository.js +2 -2
  291. package/dist/core/integration-keys.js +7 -1
  292. package/dist/core/newsletter.repository.js +2 -2
  293. package/dist/core/site-config.js +1 -1
  294. package/dist/errors/error-codes.d.ts +30 -0
  295. package/dist/errors/error-codes.js +30 -0
  296. package/dist/errors/error-display-map.js +40 -1
  297. package/dist/features/about/components/PolicyPageView.d.ts +22 -2
  298. package/dist/features/about/components/PolicyPageView.js +14 -2
  299. package/dist/features/about/components/PublicProfileView.js +2 -1
  300. package/dist/features/about/components/ShippingPolicyView.js +42 -2
  301. package/dist/features/account/api/[userId]/addresses/route.js +1 -1
  302. package/dist/features/account/components/NotificationBell.js +1 -1
  303. package/dist/features/account/components/UserBidsView.js +1 -1
  304. package/dist/features/account/components/index.d.ts +0 -8
  305. package/dist/features/account/components/index.js +0 -4
  306. package/dist/features/account/hooks/useProfileStats.js +5 -1
  307. package/dist/features/addresses/repository/addresses.repository.d.ts +33 -6
  308. package/dist/features/addresses/repository/addresses.repository.js +86 -9
  309. package/dist/features/addresses/schemas/firestore.d.ts +17 -6
  310. package/dist/features/admin/actions/admin-actions.js +16 -1
  311. package/dist/features/admin/actions/notification-actions.js +15 -6
  312. package/dist/features/admin/api/bids/route.js +1 -1
  313. package/dist/features/admin/api/coupons/route.js +1 -1
  314. package/dist/features/admin/api/products/route.js +1 -1
  315. package/dist/features/admin/api/reviews/route.js +1 -1
  316. package/dist/features/admin/components/AdminAdEditorView.js +19 -5
  317. package/dist/features/admin/components/AdminAuditLogView.js +1 -1
  318. package/dist/features/admin/components/AdminBlogEditorView.js +0 -1
  319. package/dist/features/admin/components/AdminBlogView.js +1 -1
  320. package/dist/features/admin/components/AdminBrandsView.js +17 -1
  321. package/dist/features/admin/components/AdminCategoryEditorView.js +19 -3
  322. package/dist/features/admin/components/AdminContactView.js +1 -1
  323. package/dist/features/admin/components/AdminEmployeeEditorView.js +1 -3
  324. package/dist/features/admin/components/AdminNavigationView.js +1 -1
  325. package/dist/features/admin/components/AdminNewsletterView.js +1 -1
  326. package/dist/features/admin/components/AdminOrdersView.js +9 -2
  327. package/dist/features/admin/components/AdminPageHeader.js +1 -1
  328. package/dist/features/admin/components/AdminPayoutsView.js +1 -1
  329. package/dist/features/admin/components/AdminPrizeDrawsView.js +11 -0
  330. package/dist/features/admin/components/AdminProductEditorView.d.ts +10 -1
  331. package/dist/features/admin/components/AdminProductEditorView.js +41 -39
  332. package/dist/features/admin/components/AdminProductsView.js +10 -3
  333. package/dist/features/admin/components/AdminScammersView.js +1 -1
  334. package/dist/features/admin/components/AdminSectionsView.js +21 -5
  335. package/dist/features/admin/components/AdminSessionsView.js +1 -1
  336. package/dist/features/admin/components/AdminSidebar.js +1 -1
  337. package/dist/features/admin/components/AdminSiteSettingsView.js +39 -8
  338. package/dist/features/admin/components/AdminSparesView.d.ts +12 -0
  339. package/dist/features/admin/components/AdminSparesView.js +30 -0
  340. package/dist/features/admin/components/AdminSublistingCategoriesView.js +22 -1
  341. package/dist/features/admin/components/AdminTeamView.js +1 -1
  342. package/dist/features/admin/components/AdminTesterChecklistItemEditorView.js +0 -1
  343. package/dist/features/admin/components/AdminUsersView.js +10 -8
  344. package/dist/features/admin/components/DataListingView.d.ts +2 -1
  345. package/dist/features/admin/components/DataListingView.js +9 -4
  346. package/dist/features/admin/components/analytics/AdminPageViewsReportView.js +0 -2
  347. package/dist/features/admin/components/index.d.ts +2 -0
  348. package/dist/features/admin/components/index.js +1 -0
  349. package/dist/features/admin/components/sections/adminSectionsTypes.js +7 -0
  350. package/dist/features/admin/constants/filter-tabs.d.ts +3 -0
  351. package/dist/features/admin/constants/filter-tabs.js +1 -0
  352. package/dist/features/admin/hooks/useAdminListing.d.ts +1 -1
  353. package/dist/features/admin/repository/site-settings.repository.js +8 -3
  354. package/dist/features/admin/schemas/firestore.d.ts +88 -3
  355. package/dist/features/admin/schemas/firestore.js +32 -0
  356. package/dist/features/admin/types/index.d.ts +1 -1
  357. package/dist/features/auctions/actions/bid-actions.d.ts +2 -2
  358. package/dist/features/auctions/actions/bid-actions.js +16 -4
  359. package/dist/features/auctions/api/route.js +1 -1
  360. package/dist/features/auctions/components/AuctionBottomActions.js +4 -0
  361. package/dist/features/auctions/components/AuctionDetailPageView.js +4 -11
  362. package/dist/features/auctions/repository/bid.repository.d.ts +46 -4
  363. package/dist/features/auctions/repository/bid.repository.js +114 -13
  364. package/dist/features/auctions/schemas/firestore.d.ts +24 -4
  365. package/dist/features/auctions/schemas/firestore.js +1 -0
  366. package/dist/features/auth/actions/profile-actions.js +30 -4
  367. package/dist/features/auth/components/index.d.ts +0 -1
  368. package/dist/features/auth/components/index.js +0 -1
  369. package/dist/features/auth/repository/session.repository.d.ts +17 -3
  370. package/dist/features/auth/repository/session.repository.js +46 -5
  371. package/dist/features/auth/repository/token.repository.d.ts +27 -4
  372. package/dist/features/auth/repository/token.repository.js +65 -11
  373. package/dist/features/auth/repository/user.repository.d.ts +46 -7
  374. package/dist/features/auth/repository/user.repository.js +128 -15
  375. package/dist/features/auth/schemas/firestore.d.ts +65 -12
  376. package/dist/features/auth/schemas/firestore.js +13 -0
  377. package/dist/features/before-after/api/route.js +1 -1
  378. package/dist/features/blog/components/BlogListView.js +16 -3
  379. package/dist/features/blog/components/BlogPostView.js +1 -1
  380. package/dist/features/blog/schemas/index.d.ts +2 -2
  381. package/dist/features/business-documents/repository/business-documents.repository.d.ts +58 -0
  382. package/dist/features/business-documents/repository/business-documents.repository.js +54 -0
  383. package/dist/features/business-documents/schemas/firestore.d.ts +105 -0
  384. package/dist/features/business-documents/schemas/firestore.js +75 -0
  385. package/dist/features/cart/actions/cart-actions.js +83 -6
  386. package/dist/features/cart/api/route.js +1 -1
  387. package/dist/features/cart/repository/cart.repository.js +32 -4
  388. package/dist/features/cart/schemas/firestore.d.ts +20 -0
  389. package/dist/features/cart/schemas/index.d.ts +2 -2
  390. package/dist/features/catalogue/components/PublicCatalogueItemDetailView.js +1 -1
  391. package/dist/features/catalogue/repository/catalogue.repository.d.ts +7 -7
  392. package/dist/features/catalogue/repository/catalogue.repository.js +28 -10
  393. package/dist/features/catalogue/schemas/firestore.d.ts +11 -0
  394. package/dist/features/categories/api/[id]/price-guidance/route.d.ts +42 -0
  395. package/dist/features/categories/api/[id]/price-guidance/route.js +113 -0
  396. package/dist/features/categories/api/route.js +10 -10
  397. package/dist/features/categories/components/BrandDetailPageView.js +19 -3
  398. package/dist/features/categories/components/BrandDetailTabs.js +10 -0
  399. package/dist/features/categories/components/CategoriesIndexListing.js +23 -8
  400. package/dist/features/categories/components/CategoryDetailPageView.js +170 -13
  401. package/dist/features/categories/components/CategoryDetailTabs.js +12 -0
  402. package/dist/features/categories/components/CategoryGrid.js +10 -1
  403. package/dist/features/categories/components/CategorySelectorCreate.js +0 -1
  404. package/dist/features/categories/components/PriceGuidanceHint.d.ts +29 -0
  405. package/dist/features/categories/components/PriceGuidanceHint.js +61 -0
  406. package/dist/features/categories/components/SubcategoryCardRow.d.ts +27 -0
  407. package/dist/features/categories/components/SubcategoryCardRow.js +98 -0
  408. package/dist/features/categories/components/index.d.ts +0 -2
  409. package/dist/features/categories/components/index.js +0 -1
  410. package/dist/features/categories/constants/category-tabs.d.ts +20 -25
  411. package/dist/features/categories/constants/category-tabs.js +22 -39
  412. package/dist/features/categories/repository/categories.repository.d.ts +13 -0
  413. package/dist/features/categories/repository/categories.repository.js +51 -1
  414. package/dist/features/categories/schemas/firestore.d.ts +22 -1
  415. package/dist/features/categories/schemas/firestore.js +10 -0
  416. package/dist/features/categories/schemas/index.d.ts +8 -2
  417. package/dist/features/categories/schemas/index.js +2 -0
  418. package/dist/features/categories/types/index.d.ts +8 -0
  419. package/dist/features/categories/utils/taxonomy-visual.d.ts +34 -0
  420. package/dist/features/categories/utils/taxonomy-visual.js +74 -0
  421. package/dist/features/checkout/actions/checkout-value-otp-actions.js +8 -1
  422. package/dist/features/classified/components/ClassifiedDetailPageView.js +4 -9
  423. package/dist/features/collections/api/[slug]/route.js +3 -3
  424. package/dist/features/collections/api/route.js +1 -1
  425. package/dist/features/consultation/api/route.js +1 -1
  426. package/dist/features/consultation/repository/consultations.repository.js +1 -1
  427. package/dist/features/consultation/types/index.d.ts +1 -1
  428. package/dist/features/contact/components/ContactForm.js +1 -3
  429. package/dist/features/contact/components/ContactPageView.d.ts +33 -1
  430. package/dist/features/contact/components/ContactPageView.js +58 -28
  431. package/dist/features/corporate/api/route.js +1 -1
  432. package/dist/features/corporate/repository/corporate.repository.js +1 -1
  433. package/dist/features/corporate/types/index.d.ts +1 -1
  434. package/dist/features/cron/jobs/auction-expiry.job.js +1 -1
  435. package/dist/features/cron/jobs/preorder-reminder.job.js +1 -1
  436. package/dist/features/digital-codes/components/DigitalCodeDetailPageView.js +4 -9
  437. package/dist/features/events/actions/event-actions.d.ts +14 -0
  438. package/dist/features/events/actions/event-actions.js +82 -3
  439. package/dist/features/events/api/[id]/route.js +2 -2
  440. package/dist/features/events/components/AdminEventEditorView.js +22 -3
  441. package/dist/features/events/components/AdminEventsView.js +32 -8
  442. package/dist/features/events/components/EventRafflesSection.d.ts +34 -1
  443. package/dist/features/events/components/EventRafflesSection.js +52 -3
  444. package/dist/features/events/components/SpinWheelView.d.ts +2 -2
  445. package/dist/features/events/components/SpinWheelView.js +41 -4
  446. package/dist/features/events/repository/event-entry.repository.d.ts +14 -2
  447. package/dist/features/events/repository/event-entry.repository.js +41 -7
  448. package/dist/features/events/schemas/firestore.d.ts +17 -4
  449. package/dist/features/events/types/index.d.ts +37 -0
  450. package/dist/features/faq/repository/faqs.repository.js +1 -1
  451. package/dist/features/faq/schemas/index.d.ts +5 -2
  452. package/dist/features/faq/schemas/index.js +6 -0
  453. package/dist/features/faq/types/index.d.ts +0 -1
  454. package/dist/features/grouped/components/GroupedListingDetailView.js +9 -1
  455. package/dist/features/grouped/components/GroupedListingEditorView.js +17 -2
  456. package/dist/features/grouped/schemas/firestore.d.ts +5 -0
  457. package/dist/features/homepage/actions/homepage-section-actions.d.ts +3 -3
  458. package/dist/features/homepage/api/carousel/[id]/route.js +1 -1
  459. package/dist/features/homepage/api/carousel/route.js +4 -4
  460. package/dist/features/homepage/components/AnnouncementBar.d.ts +1 -9
  461. package/dist/features/homepage/components/AnnouncementBar.js +13 -19
  462. package/dist/features/homepage/components/CollectionCardsSection.d.ts +28 -6
  463. package/dist/features/homepage/components/CollectionCardsSection.js +43 -8
  464. package/dist/features/homepage/components/HowItWorksSection.d.ts +23 -6
  465. package/dist/features/homepage/components/HowItWorksSection.js +4 -4
  466. package/dist/features/homepage/components/MarketplaceHomepageView.js +6 -1
  467. package/dist/features/homepage/components/PromoGrid.d.ts +31 -2
  468. package/dist/features/homepage/components/PromoGrid.js +12 -3
  469. package/dist/features/homepage/components/TestimonialsCarousel.d.ts +34 -2
  470. package/dist/features/homepage/components/TestimonialsCarousel.js +1 -1
  471. package/dist/features/homepage/components/index.d.ts +0 -22
  472. package/dist/features/homepage/components/index.js +0 -12
  473. package/dist/features/homepage/index.d.ts +0 -2
  474. package/dist/features/homepage/index.js +0 -2
  475. package/dist/features/homepage/lib/section-renderer.d.ts +9 -0
  476. package/dist/features/homepage/lib/section-renderer.js +202 -58
  477. package/dist/features/homepage/repository/homepage-sections.repository.d.ts +35 -3
  478. package/dist/features/homepage/repository/homepage-sections.repository.js +58 -8
  479. package/dist/features/homepage/schemas/firestore.d.ts +112 -3
  480. package/dist/features/homepage/schemas/firestore.js +32 -2
  481. package/dist/features/homepage/schemas/index.d.ts +46 -17
  482. package/dist/features/homepage/schemas/index.js +39 -27
  483. package/dist/features/homepage/server.d.ts +0 -3
  484. package/dist/features/homepage/server.js +0 -3
  485. package/dist/features/homepage/types/index.d.ts +0 -47
  486. package/dist/features/homepage/types/index.js +49 -0
  487. package/dist/features/layout/AppLayoutShell.d.ts +11 -0
  488. package/dist/features/layout/AppLayoutShell.js +65 -13
  489. package/dist/features/layout/BottomActionsContext.d.ts +16 -0
  490. package/dist/features/layout/BottomActionsContext.js +5 -0
  491. package/dist/features/layout/BottomChrome.js +48 -9
  492. package/dist/features/layout/BottomNavItem.js +1 -1
  493. package/dist/features/layout/BottomNavbar.d.ts +14 -0
  494. package/dist/features/layout/BottomNavbar.js +43 -3
  495. package/dist/features/layout/BottomSheet.js +1 -1
  496. package/dist/features/layout/MainNavbar.d.ts +11 -0
  497. package/dist/features/layout/NavbarLayout.d.ts +3 -0
  498. package/dist/features/layout/NavbarLayout.js +88 -11
  499. package/dist/features/layout/SideActionDock.d.ts +1 -0
  500. package/dist/features/layout/SideActionDock.js +219 -0
  501. package/dist/features/layout/TitleBarLayout.js +1 -1
  502. package/dist/features/layout/cta-anchor.d.ts +31 -0
  503. package/dist/features/layout/cta-anchor.js +31 -0
  504. package/dist/features/layout/hooks/useBottomActions.d.ts +7 -0
  505. package/dist/features/layout/hooks/useBottomActions.js +6 -1
  506. package/dist/features/layout/index.d.ts +9 -1
  507. package/dist/features/layout/index.js +9 -1
  508. package/dist/features/layout/useCtaReveal.d.ts +24 -0
  509. package/dist/features/layout/useCtaReveal.js +82 -0
  510. package/dist/features/layout/useHoldToOpen.d.ts +41 -0
  511. package/dist/features/layout/useHoldToOpen.js +84 -0
  512. package/dist/features/live/components/LiveItemDetailPageView.js +4 -9
  513. package/dist/features/lottery/repository/lottery-entry.repository.d.ts +18 -3
  514. package/dist/features/lottery/repository/lottery-entry.repository.js +48 -6
  515. package/dist/features/lottery/schemas/firestore.d.ts +33 -5
  516. package/dist/features/loyalty/api/balance/route.js +1 -1
  517. package/dist/features/loyalty/api/history/route.js +1 -1
  518. package/dist/features/media/MediaImage.js +0 -1
  519. package/dist/features/media/MediaPickerModal.js +7 -1
  520. package/dist/features/media/hooks/useMedia.js +17 -0
  521. package/dist/features/media/modals/ImageEditor.js +5 -1
  522. package/dist/features/media/modals/VideoThumbnailSelector.js +17 -1
  523. package/dist/features/media/repository/media-assets.repository.d.ts +65 -0
  524. package/dist/features/media/repository/media-assets.repository.js +31 -0
  525. package/dist/features/media/trust-signals.d.ts +85 -0
  526. package/dist/features/media/trust-signals.js +126 -0
  527. package/dist/features/media/upload/CameraCapture.js +16 -1
  528. package/dist/features/media/upload/ImageUpload.js +42 -4
  529. package/dist/features/media/upload/MediaUploadField.js +69 -13
  530. package/dist/features/media/upload/downscale-image.d.ts +56 -0
  531. package/dist/features/media/upload/downscale-image.js +150 -0
  532. package/dist/features/messages/components/ConversationThreadView.js +45 -2
  533. package/dist/features/messages/components/MessageSellerButton.d.ts +15 -1
  534. package/dist/features/messages/components/MessageSellerButton.js +10 -2
  535. package/dist/features/messages/schemas/firestore.d.ts +15 -0
  536. package/dist/features/orders/hooks/useOrders.js +4 -2
  537. package/dist/features/orders/repository/orders.repository.d.ts +15 -4
  538. package/dist/features/orders/repository/orders.repository.js +52 -20
  539. package/dist/features/orders/schemas/firestore.d.ts +15 -4
  540. package/dist/features/orders/schemas/index.d.ts +8 -8
  541. package/dist/features/orders/types/index.d.ts +2 -2
  542. package/dist/features/parts/components/PartDetailPageView.d.ts +14 -1
  543. package/dist/features/parts/components/PartDetailPageView.js +2 -2
  544. package/dist/features/parts/components/PartsIndexPageView.d.ts +11 -2
  545. package/dist/features/parts/components/PartsIndexPageView.js +2 -2
  546. package/dist/features/parts/components/PartsSearchBox.d.ts +9 -0
  547. package/dist/features/parts/components/PartsSearchBox.js +57 -0
  548. package/dist/features/parts/schemas/firestore.d.ts +149 -3
  549. package/dist/features/parts/schemas/firestore.js +184 -0
  550. package/dist/features/payments/repository/payments.repository.js +2 -2
  551. package/dist/features/payments/repository/payout.repository.d.ts +38 -6
  552. package/dist/features/payments/repository/payout.repository.js +84 -23
  553. package/dist/features/payments/repository/saved-payment-methods.repository.d.ts +17 -6
  554. package/dist/features/payments/repository/saved-payment-methods.repository.js +59 -11
  555. package/dist/features/payments/schemas/firestore.d.ts +14 -3
  556. package/dist/features/payments/schemas/saved-methods-firestore.d.ts +12 -1
  557. package/dist/features/pre-orders/api/[slug]/route.js +1 -1
  558. package/dist/features/pre-orders/api/admin/route.js +1 -1
  559. package/dist/features/pre-orders/api/route.js +1 -1
  560. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +4 -11
  561. package/dist/features/pre-orders/components/PreOrdersIndexListing.js +1 -1
  562. package/dist/features/pre-orders/repository/pre-orders.repository.d.ts +3 -3
  563. package/dist/features/pre-orders/repository/pre-orders.repository.js +6 -6
  564. package/dist/features/price-index/components/PriceIndexToolView.d.ts +3 -1
  565. package/dist/features/price-index/components/PriceIndexToolView.js +92 -13
  566. package/dist/features/products/api/[id]/route.js +1 -1
  567. package/dist/features/products/components/CompareOverlay.d.ts +18 -1
  568. package/dist/features/products/components/CompareOverlay.js +21 -2
  569. package/dist/features/products/components/CustomSectionTabContent.d.ts +31 -0
  570. package/dist/features/products/components/CustomSectionTabContent.js +29 -3
  571. package/dist/features/products/components/GroupMemberPicker.d.ts +19 -1
  572. package/dist/features/products/components/GroupMemberPicker.js +46 -8
  573. package/dist/features/products/components/GroupSettingsPanel.d.ts +11 -1
  574. package/dist/features/products/components/GroupSettingsPanel.js +91 -3
  575. package/dist/features/products/components/ListingBottomActions.js +4 -0
  576. package/dist/features/products/components/PrizeDrawDetailPageView.js +1 -1
  577. package/dist/features/products/components/PrizeDrawEntryActions.d.ts +15 -1
  578. package/dist/features/products/components/PrizeDrawEntryActions.js +70 -8
  579. package/dist/features/products/components/ProductDetailPageView.js +75 -15
  580. package/dist/features/products/components/ProductForm.d.ts +13 -1
  581. package/dist/features/products/components/ProductForm.js +16 -2
  582. package/dist/features/products/components/ProductGalleryClient.js +2 -2
  583. package/dist/features/products/components/ProductGrid.js +12 -1
  584. package/dist/features/products/components/ProductsIndexListing.d.ts +16 -1
  585. package/dist/features/products/components/ProductsIndexListing.js +3 -3
  586. package/dist/features/products/components/ShowGroupSection.js +15 -2
  587. package/dist/features/products/components/SparesListView.d.ts +7 -0
  588. package/dist/features/products/components/SparesListView.js +39 -0
  589. package/dist/features/products/components/index.d.ts +0 -2
  590. package/dist/features/products/components/index.js +0 -1
  591. package/dist/features/products/config/listing-type-listing-config.d.ts +0 -3
  592. package/dist/features/products/config/listing-type-listing-config.js +27 -2
  593. package/dist/features/products/constants/action-defs.d.ts +1 -0
  594. package/dist/features/products/constants/action-defs.js +1 -0
  595. package/dist/features/products/constants/listing-tabs.d.ts +9 -0
  596. package/dist/features/products/constants/listing-tabs.js +3 -2
  597. package/dist/features/products/hooks/useProducts.js +2 -2
  598. package/dist/features/products/repository/products.repository.d.ts +98 -0
  599. package/dist/features/products/repository/products.repository.js +248 -18
  600. package/dist/features/products/schemas/firestore.d.ts +97 -4
  601. package/dist/features/products/schemas/firestore.js +104 -0
  602. package/dist/features/products/schemas/index.d.ts +12 -21
  603. package/dist/features/products/schemas/index.js +23 -6
  604. package/dist/features/products/types/index.d.ts +46 -2
  605. package/dist/features/products/utils/group-member-image.d.ts +39 -0
  606. package/dist/features/products/utils/group-member-image.js +3 -0
  607. package/dist/features/products/utils/listing-badge-variant.js +4 -0
  608. package/dist/features/promotions/api/route.js +1 -1
  609. package/dist/features/reviews/actions/review-actions.d.ts +6 -6
  610. package/dist/features/reviews/actions/review-actions.js +22 -8
  611. package/dist/features/reviews/components/ReviewDetailPageView.js +13 -1
  612. package/dist/features/reviews/components/ReviewsIndexPageView.js +21 -4
  613. package/dist/features/reviews/components/ReviewsList.js +1 -1
  614. package/dist/features/reviews/repository/reviews.repository.d.ts +19 -7
  615. package/dist/features/reviews/repository/reviews.repository.js +63 -12
  616. package/dist/features/reviews/schemas/firestore.d.ts +13 -2
  617. package/dist/features/reviews/schemas/index.d.ts +2 -2
  618. package/dist/features/scams/actions/scam-actions.js +16 -4
  619. package/dist/features/scams/components/ScamProfileView.js +1 -1
  620. package/dist/features/search/components/EntityTypeahead.d.ts +44 -0
  621. package/dist/features/search/components/EntityTypeahead.js +92 -0
  622. package/dist/features/search/components/Search.d.ts +12 -1
  623. package/dist/features/search/components/Search.js +47 -3
  624. package/dist/features/search/components/SearchFacetRail.d.ts +11 -0
  625. package/dist/features/search/components/SearchFacetRail.js +92 -0
  626. package/dist/features/search/components/SearchResultsClient.d.ts +33 -0
  627. package/dist/features/search/components/SearchResultsClient.js +103 -0
  628. package/dist/features/search/components/SearchResultsPageView.d.ts +15 -1
  629. package/dist/features/search/components/SearchResultsPageView.js +3 -2
  630. package/dist/features/search/components/index.d.ts +0 -6
  631. package/dist/features/search/components/index.js +0 -3
  632. package/dist/features/search/hooks/useNavSuggestions.d.ts +13 -0
  633. package/dist/features/search/hooks/useScopedSearch.d.ts +34 -0
  634. package/dist/features/search/hooks/useScopedSearch.js +114 -0
  635. package/dist/features/search/hooks/useSearchIndex.d.ts +34 -0
  636. package/dist/features/search/hooks/useSearchIndex.js +172 -0
  637. package/dist/features/search/hooks/useSiteSearch.d.ts +26 -0
  638. package/dist/features/search/hooks/useSiteSearch.js +149 -0
  639. package/dist/features/search/index.d.ts +0 -4
  640. package/dist/features/search/index.js +0 -4
  641. package/dist/features/search/manifest.d.ts +12 -0
  642. package/dist/features/search/manifest.js +17 -2
  643. package/dist/features/search/server.d.ts +0 -3
  644. package/dist/features/search/server.js +0 -3
  645. package/dist/features/seller/actions/offer-actions.d.ts +5 -5
  646. package/dist/features/seller/actions/offer-actions.js +38 -8
  647. package/dist/features/seller/actions/seller-actions.js +34 -7
  648. package/dist/features/seller/api/coupons/route.js +1 -1
  649. package/dist/features/seller/api/products/route.js +1 -1
  650. package/dist/features/seller/api/store/route.js +1 -1
  651. package/dist/features/seller/components/SellerBidsView.js +1 -1
  652. package/dist/features/seller/components/SellerCouponsView.js +1 -1
  653. package/dist/features/seller/components/SellerListingTypeView.d.ts +1 -1
  654. package/dist/features/seller/components/SellerListingTypeView.js +29 -1
  655. package/dist/features/seller/components/SellerOrdersView.js +1 -1
  656. package/dist/features/seller/components/SellerPayoutSettingsView.js +35 -15
  657. package/dist/features/seller/components/SellerPayoutsView.js +1 -1
  658. package/dist/features/seller/components/SellerProductShell.d.ts +1 -1
  659. package/dist/features/seller/components/SellerProductShell.js +2 -2
  660. package/dist/features/seller/components/SellerProductsView.js +1 -1
  661. package/dist/features/seller/components/SellerShippingView.js +0 -1
  662. package/dist/features/seller/components/SellerSidebar.js +1 -1
  663. package/dist/features/seller/components/SellerSparesView.d.ts +17 -0
  664. package/dist/features/seller/components/SellerSparesView.js +6 -0
  665. package/dist/features/seller/components/SellerStorefrontView.js +0 -1
  666. package/dist/features/seller/components/index.d.ts +2 -4
  667. package/dist/features/seller/components/index.js +1 -2
  668. package/dist/features/seller/repository/offer.repository.d.ts +15 -3
  669. package/dist/features/seller/repository/offer.repository.js +43 -7
  670. package/dist/features/seller/schemas/firestore.d.ts +14 -3
  671. package/dist/features/seller/schemas/index.d.ts +4 -4
  672. package/dist/features/seller/schemas/order-forms.d.ts +39 -0
  673. package/dist/features/seller/schemas/order-forms.js +37 -0
  674. package/dist/features/shell/CommandPalette.js +1 -1
  675. package/dist/features/shell/FormShell.js +6 -2
  676. package/dist/features/shell/QuickFormDrawer.js +15 -1
  677. package/dist/features/shipments/components/AdminShipmentEditorView.js +0 -1
  678. package/dist/features/shipments/components/AdminShipmentsView.js +1 -1
  679. package/dist/features/sticker-trace/components/StickerCommitPanel.d.ts +30 -0
  680. package/dist/features/sticker-trace/components/StickerCommitPanel.js +93 -0
  681. package/dist/features/sticker-trace/components/StickerPrintPanel.d.ts +33 -0
  682. package/dist/features/sticker-trace/components/StickerPrintPanel.js +104 -0
  683. package/dist/features/sticker-trace/components/StickerRetryPanel.d.ts +20 -0
  684. package/dist/features/sticker-trace/components/StickerRetryPanel.js +128 -0
  685. package/dist/features/sticker-trace/components/StickerRunHistoryPanel.d.ts +45 -0
  686. package/dist/features/sticker-trace/components/StickerRunHistoryPanel.js +84 -0
  687. package/dist/features/sticker-trace/components/StickerTraceStudio.d.ts +27 -0
  688. package/dist/features/sticker-trace/components/StickerTraceStudio.js +171 -0
  689. package/dist/features/sticker-trace/constants/help-content.d.ts +23 -0
  690. package/dist/features/sticker-trace/constants/help-content.js +172 -0
  691. package/dist/features/sticker-trace/hooks/useLiveTrace.d.ts +27 -0
  692. package/dist/features/sticker-trace/hooks/useLiveTrace.js +160 -0
  693. package/dist/features/sticker-trace/hooks/useStickerTraceProgress.d.ts +22 -0
  694. package/dist/features/sticker-trace/hooks/useStickerTraceProgress.js +106 -0
  695. package/dist/features/sticker-trace/repository/sticker-sheets.repository.d.ts +113 -0
  696. package/dist/features/sticker-trace/repository/sticker-sheets.repository.js +146 -0
  697. package/dist/features/sticker-trace/repository/sticker-trace-runs.repository.d.ts +132 -0
  698. package/dist/features/sticker-trace/repository/sticker-trace-runs.repository.js +174 -0
  699. package/dist/features/sticker-trace/schemas/firestore.d.ts +267 -0
  700. package/dist/features/sticker-trace/schemas/firestore.js +79 -0
  701. package/dist/features/sticker-trace/server.d.ts +8 -0
  702. package/dist/features/sticker-trace/server.js +51 -0
  703. package/dist/features/stores/actions/store-query-actions.d.ts +2 -2
  704. package/dist/features/stores/actions/store-query-actions.js +7 -2
  705. package/dist/features/stores/api/[storeSlug]/auctions/route.js +3 -3
  706. package/dist/features/stores/api/[storeSlug]/products/route.js +3 -3
  707. package/dist/features/stores/api/[storeSlug]/reviews/route.js +1 -1
  708. package/dist/features/stores/api/[storeSlug]/route.js +1 -1
  709. package/dist/features/stores/components/StoreDetailLayoutView.d.ts +1 -1
  710. package/dist/features/stores/components/StoreDetailLayoutView.js +7 -82
  711. package/dist/features/stores/components/StoreHeader.js +1 -2
  712. package/dist/features/stores/components/StoreNavTabs.js +17 -2
  713. package/dist/features/stores/components/StoreSparesPageView.d.ts +27 -0
  714. package/dist/features/stores/components/StoreSparesPageView.js +48 -0
  715. package/dist/features/stores/manifest.js +8 -4
  716. package/dist/features/stores/schemas/firestore.d.ts +19 -0
  717. package/dist/features/support/repository/support.repository.d.ts +14 -3
  718. package/dist/features/support/repository/support.repository.js +93 -13
  719. package/dist/features/support/schemas/firestore.d.ts +16 -5
  720. package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.js +61 -19
  721. package/dist/features/tester/seed-data/authored/buying__browsing-search.js +19 -3
  722. package/dist/features/tester/seed-data/authored/buying__spares-and-groups.d.ts +2 -0
  723. package/dist/features/tester/seed-data/authored/buying__spares-and-groups.js +96 -0
  724. package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.d.ts +4 -0
  725. package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.js +478 -0
  726. package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.js +54 -32
  727. package/dist/features/tester/seed-data/authored/content-discovery__events.js +36 -10
  728. package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.d.ts +2 -0
  729. package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.js +209 -0
  730. package/dist/features/tester/seed-data/authored/content-discovery__parts-database.js +3 -2
  731. package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.d.ts +2 -0
  732. package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.js +73 -0
  733. package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.d.ts +2 -0
  734. package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.js +340 -0
  735. package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.d.ts +2 -0
  736. package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.js +90 -0
  737. package/dist/features/tester/seed-data/authored/index.js +24 -0
  738. package/dist/features/tester/seed-data/authored/search-and-nav__header-search.d.ts +1 -0
  739. package/dist/features/tester/seed-data/authored/search-and-nav__header-search.js +57 -0
  740. package/dist/features/tester/seed-data/authored/selling__media-limits.js +19 -17
  741. package/dist/features/tester/seed-data/authored/selling__product-upload-details.js +10 -5
  742. package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.d.ts +2 -0
  743. package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.js +77 -0
  744. package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.d.ts +2 -0
  745. package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.js +58 -0
  746. package/dist/features/tester/seed-data/authored/tools__sticker-tracer.d.ts +2 -0
  747. package/dist/features/tester/seed-data/authored/tools__sticker-tracer.js +284 -0
  748. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +558 -34
  749. package/dist/index.d.ts +27 -80
  750. package/dist/index.js +62 -115
  751. package/dist/next/api/routeHandler.js +9 -0
  752. package/dist/next/routing/require-record.d.ts +13 -0
  753. package/dist/next/routing/require-record.js +62 -0
  754. package/dist/next/routing/route-map.d.ts +46 -5
  755. package/dist/next/routing/route-map.js +70 -3
  756. package/dist/providers/db-firebase/base.d.ts +4 -2
  757. package/dist/providers/db-firebase/base.js +21 -5
  758. package/dist/providers/db-firebase/base.repository.d.ts +33 -9
  759. package/dist/providers/db-firebase/base.repository.js +55 -0
  760. package/dist/providers/db-firebase/rtdb-paths.d.ts +12 -0
  761. package/dist/providers/db-firebase/rtdb-paths.js +12 -0
  762. package/dist/react/ErrorBoundary.js +6 -1
  763. package/dist/react/hooks/realtime-event-constants.d.ts +1 -0
  764. package/dist/react/hooks/realtime-event-constants.js +8 -0
  765. package/dist/react/hooks/useEntityDelete.js +5 -1
  766. package/dist/react/hooks/useMessage.js +5 -1
  767. package/dist/repositories/index.d.ts +2 -2
  768. package/dist/repositories/index.js +6 -1
  769. package/dist/schemas/registry.d.ts +28 -26
  770. package/dist/schemas/registry.js +31 -14
  771. package/dist/schemas/webhooks/google-oauth.d.ts +2 -2
  772. package/dist/security/blind-index-tokens.d.ts +54 -0
  773. package/dist/security/blind-index-tokens.js +152 -0
  774. package/dist/security/encrypted.d.ts +117 -0
  775. package/dist/security/encrypted.js +100 -0
  776. package/dist/security/index.d.ts +6 -3
  777. package/dist/security/index.js +17 -3
  778. package/dist/security/pii-accessors.d.ts +71 -0
  779. package/dist/security/pii-accessors.js +150 -0
  780. package/dist/security/pii-encrypt.d.ts +0 -8
  781. package/dist/security/pii-encrypt.js +22 -15
  782. package/dist/security/pii-mask.d.ts +18 -0
  783. package/dist/security/pii-mask.js +27 -0
  784. package/dist/security/settings-encryption.d.ts +35 -0
  785. package/dist/security/settings-encryption.js +91 -0
  786. package/dist/seed/_helpers/brand-rows.js +38 -14
  787. package/dist/seed/_helpers/category-forest.js +73 -7
  788. package/dist/seed/_helpers/category-images-generated.d.ts +25 -6
  789. package/dist/seed/_helpers/category-images-generated.js +81 -6
  790. package/dist/seed/_helpers/category-models.d.ts +1 -1
  791. package/dist/seed/_helpers/category-models.js +7 -1
  792. package/dist/seed/_helpers/category-parts-glossary-map.js +8 -0
  793. package/dist/seed/_helpers/category-parts.d.ts +1 -1
  794. package/dist/seed/_helpers/category-parts.js +50 -2
  795. package/dist/seed/_helpers/character-features.d.ts +1 -1
  796. package/dist/seed/_helpers/character-features.js +2 -1
  797. package/dist/seed/_helpers/franchise-rows.js +10 -2
  798. package/dist/seed/_helpers/media.d.ts +47 -0
  799. package/dist/seed/_helpers/media.js +34 -0
  800. package/dist/seed/_helpers/search-txt-wrappers.d.ts +6 -6
  801. package/dist/seed/_helpers/search-txt-wrappers.js +22 -0
  802. package/dist/seed/addresses-seed-data.d.ts +2 -2
  803. package/dist/seed/authenticity-knowledge-seed-data.d.ts +78 -0
  804. package/dist/seed/authenticity-knowledge-seed-data.js +10729 -0
  805. package/dist/seed/bids-seed-data.d.ts +2 -2
  806. package/dist/seed/bids-seed-data.js +23 -2
  807. package/dist/seed/categories-seed-data.js +124 -20
  808. package/dist/seed/events-seed-data.d.ts +2 -2
  809. package/dist/seed/events-seed-data.js +5 -0
  810. package/dist/seed/faq-seed-data.js +175 -5
  811. package/dist/seed/grouped-listings-seed-data.js +16 -0
  812. package/dist/seed/homepage-sections-seed-data.js +131 -26
  813. package/dist/seed/index.d.ts +3 -3
  814. package/dist/seed/index.js +3 -2
  815. package/dist/seed/lottery-entries-seed-data.d.ts +2 -2
  816. package/dist/seed/manifest.js +3 -0
  817. package/dist/seed/media-assets-seed-data.d.ts +1 -1
  818. package/dist/seed/media-assets-seed-data.js +746 -196
  819. package/dist/seed/model-composition-seed-data.js +122 -6
  820. package/dist/seed/offers-seed-data.d.ts +2 -2
  821. package/dist/seed/offers-seed-data.js +1 -1
  822. package/dist/seed/orders-seed-data.d.ts +2 -2
  823. package/dist/seed/part-glossary-seed-data.d.ts +1 -1
  824. package/dist/seed/part-glossary-seed-data.js +37219 -463
  825. package/dist/seed/payouts-seed-data.d.ts +2 -2
  826. package/dist/seed/payouts-seed-data.js +1 -1
  827. package/dist/seed/products-art-seed-data.js +7 -18
  828. package/dist/seed/products-auctions-seed-data.js +56 -47
  829. package/dist/seed/products-beyblade-x-seed-data.d.ts +2 -0
  830. package/dist/seed/products-beyblade-x-seed-data.js +441 -0
  831. package/dist/seed/products-catalogue-seed-data.d.ts +5 -5
  832. package/dist/seed/products-catalogue-seed-data.js +1500 -1240
  833. package/dist/seed/products-classifieds-seed-data.js +9 -27
  834. package/dist/seed/products-digital-codes-seed-data.js +9 -18
  835. package/dist/seed/products-live-items-seed-data.js +5 -13
  836. package/dist/seed/products-preorders-seed-data.js +67 -33
  837. package/dist/seed/products-prize-draws-seed-data.js +8 -17
  838. package/dist/seed/products-spares-seed-data.d.ts +2 -0
  839. package/dist/seed/products-spares-seed-data.js +368 -0
  840. package/dist/seed/products-standard-seed-data.js +39 -126
  841. package/dist/seed/products-stickers-seed-data.js +59 -15
  842. package/dist/seed/reviews-seed-data.d.ts +1 -2
  843. package/dist/seed/seed-purpose.js +7 -0
  844. package/dist/seed/sessions-seed-data.d.ts +2 -2
  845. package/dist/seed/sessions-seed-data.js +5 -0
  846. package/dist/seed/site-settings-seed-data.js +9 -1
  847. package/dist/seed/support-tickets-seed-data.d.ts +2 -2
  848. package/dist/seed/support-tickets-seed-data.js +1 -1
  849. package/dist/seed/users-seed-data.d.ts +2 -2
  850. package/dist/seed/users-seed-data.js +1 -1
  851. package/dist/seo/json-ld.d.ts +25 -0
  852. package/dist/seo/json-ld.js +33 -1
  853. package/dist/server-entry.d.ts +3 -1
  854. package/dist/server-entry.js +2 -2
  855. package/dist/server.d.ts +27 -12
  856. package/dist/server.js +86 -28
  857. package/dist/styles.css +438 -1
  858. package/dist/tailwind-input.css +31 -17
  859. package/dist/tailwind-utilities.css +1 -1
  860. package/dist/ui/components/Accordion.js +1 -1
  861. package/dist/ui/components/Breadcrumb.js +1 -1
  862. package/dist/ui/components/Button.js +7 -1
  863. package/dist/ui/components/DetailPageGallery.js +0 -2
  864. package/dist/ui/components/DetailPageHero.js +0 -1
  865. package/dist/ui/components/DetailPageTabs.js +1 -1
  866. package/dist/ui/components/Divider.js +3 -3
  867. package/dist/ui/components/FilterChipGroup.d.ts +11 -0
  868. package/dist/ui/components/FilterChipGroup.js +1 -1
  869. package/dist/ui/components/GatedPrice.js +5 -1
  870. package/dist/ui/components/HorizontalScroller.js +1 -1
  871. package/dist/ui/components/ImageGallery.js +6 -1
  872. package/dist/ui/components/ListingLayout.js +17 -11
  873. package/dist/ui/components/MediaTabs.style.css +81 -0
  874. package/dist/ui/components/OverflowRow.d.ts +92 -0
  875. package/dist/ui/components/OverflowRow.js +203 -0
  876. package/dist/ui/components/OverflowRow.style.css +235 -0
  877. package/dist/ui/components/Pagination.js +1 -1
  878. package/dist/ui/components/PendingValue.d.ts +45 -0
  879. package/dist/ui/components/PendingValue.js +7 -0
  880. package/dist/ui/components/Radio.style.css +119 -0
  881. package/dist/ui/components/RatingDisplay.js +2 -2
  882. package/dist/ui/components/RecordDetailModal.js +14 -1
  883. package/dist/ui/components/RowActionMenu.js +5 -1
  884. package/dist/ui/components/SettingsSection.js +0 -2
  885. package/dist/ui/components/SideDrawer.js +5 -1
  886. package/dist/ui/components/SideModal.js +9 -1
  887. package/dist/ui/components/SiteLogo.js +3 -0
  888. package/dist/ui/components/SiteMark.js +3 -0
  889. package/dist/ui/components/SortDropdown.js +1 -1
  890. package/dist/ui/components/SpecTable.d.ts +58 -0
  891. package/dist/ui/components/SpecTable.js +8 -0
  892. package/dist/ui/components/StarRating.js +1 -3
  893. package/dist/ui/components/SummaryCard.js +1 -1
  894. package/dist/ui/components/TabBarShell.d.ts +12 -1
  895. package/dist/ui/components/TabBarShell.js +3 -2
  896. package/dist/ui/components/Tabs.js +36 -24
  897. package/dist/ui/components/Toast.d.ts +3 -24
  898. package/dist/ui/components/Toast.js +2 -19
  899. package/dist/ui/components/TopBannerPortal.d.ts +15 -0
  900. package/dist/ui/components/TopBannerPortal.js +19 -0
  901. package/dist/ui/components/UnsavedChangesModal.js +5 -1
  902. package/dist/ui/components/index.style.css +2 -0
  903. package/dist/ui/components/row-collapse.d.ts +15 -0
  904. package/dist/ui/components/row-collapse.js +127 -0
  905. package/dist/ui/components/toast-context.d.ts +63 -0
  906. package/dist/ui/components/toast-context.js +48 -0
  907. package/dist/ui/components/top-banner-slot.d.ts +37 -0
  908. package/dist/ui/components/top-banner-slot.js +45 -0
  909. package/dist/ui/icons/icon-registry.d.ts +7 -0
  910. package/dist/ui/icons/icon-registry.js +25 -1
  911. package/dist/ui/index.d.ts +6 -0
  912. package/dist/ui/index.js +3 -0
  913. package/dist/utils/array.helper.d.ts +2 -2
  914. package/dist/utils/array.helper.js +5 -5
  915. package/dist/utils/id-generators.d.ts +6 -0
  916. package/dist/utils/id-generators.js +10 -0
  917. package/dist/utils/media-url.js +0 -2
  918. package/dist/utils/search-txt-builders.d.ts +28 -4
  919. package/dist/utils/search-txt-builders.js +41 -1
  920. package/dist/utils/search-txt-query.d.ts +12 -0
  921. package/dist/utils/search-txt-query.js +12 -0
  922. package/dist/validation/schemas.d.ts +8 -8
  923. package/package.json +6 -2
  924. package/scripts/dedupe-peer-deps.mjs +18 -0
  925. package/scripts/seed-cli.mjs +138 -26
  926. package/scripts/verify-css-build.mjs +118 -37
  927. package/dist/_internal/server/features/search/actions.d.ts +0 -7
  928. package/dist/_internal/server/features/search/actions.js +0 -21
  929. package/dist/_internal/server/features/search/data.d.ts +0 -15
  930. package/dist/_internal/server/features/search/data.js +0 -18
  931. package/dist/_internal/server/features/search/index.d.ts +0 -3
  932. package/dist/_internal/server/features/search/index.js +0 -2
  933. package/dist/features/account/components/UserAddressesView.d.ts +0 -13
  934. package/dist/features/account/components/UserAddressesView.js +0 -5
  935. package/dist/features/account/components/UserNotificationsView.d.ts +0 -15
  936. package/dist/features/account/components/UserNotificationsView.js +0 -12
  937. package/dist/features/account/components/UserSettingsView.d.ts +0 -16
  938. package/dist/features/account/components/UserSettingsView.js +0 -13
  939. package/dist/features/account/components/UserSupportView.d.ts +0 -3
  940. package/dist/features/account/components/UserSupportView.js +0 -166
  941. package/dist/features/admin/components/DemoSeedView.d.ts +0 -11
  942. package/dist/features/admin/components/DemoSeedView.js +0 -5
  943. package/dist/features/auth/components/AuthStatusPanel.d.ts +0 -10
  944. package/dist/features/auth/components/AuthStatusPanel.js +0 -22
  945. package/dist/features/categories/components/CategoryProductsView.d.ts +0 -45
  946. package/dist/features/categories/components/CategoryProductsView.js +0 -21
  947. package/dist/features/homepage/api/[id]/route.d.ts +0 -23
  948. package/dist/features/homepage/api/[id]/route.js +0 -103
  949. package/dist/features/homepage/api/route.d.ts +0 -14
  950. package/dist/features/homepage/api/route.js +0 -140
  951. package/dist/features/homepage/api/sections/[id]/route.d.ts +0 -26
  952. package/dist/features/homepage/api/sections/[id]/route.js +0 -95
  953. package/dist/features/homepage/api/sections/route.d.ts +0 -13
  954. package/dist/features/homepage/api/sections/route.js +0 -82
  955. package/dist/features/homepage/components/AdvertisementBanner.d.ts +0 -14
  956. package/dist/features/homepage/components/AdvertisementBanner.js +0 -35
  957. package/dist/features/homepage/components/BeforeAfterCard.d.ts +0 -9
  958. package/dist/features/homepage/components/BeforeAfterCard.js +0 -73
  959. package/dist/features/homepage/components/FeaturedResultsSection.d.ts +0 -17
  960. package/dist/features/homepage/components/FeaturedResultsSection.js +0 -17
  961. package/dist/features/homepage/components/HeroBanner.d.ts +0 -7
  962. package/dist/features/homepage/components/HeroBanner.js +0 -43
  963. package/dist/features/homepage/components/HeroSection.d.ts +0 -7
  964. package/dist/features/homepage/components/HeroSection.js +0 -6
  965. package/dist/features/homepage/components/HomepageSkeleton.d.ts +0 -2
  966. package/dist/features/homepage/components/HomepageSkeleton.js +0 -21
  967. package/dist/features/homepage/components/HomepageView.d.ts +0 -25
  968. package/dist/features/homepage/components/HomepageView.js +0 -5
  969. package/dist/features/homepage/components/HowItWorksInfoView.d.ts +0 -36
  970. package/dist/features/homepage/components/HowItWorksInfoView.js +0 -10
  971. package/dist/features/homepage/components/NewsletterBanner.d.ts +0 -23
  972. package/dist/features/homepage/components/NewsletterBanner.js +0 -37
  973. package/dist/features/homepage/components/SiteFeaturesSection.d.ts +0 -14
  974. package/dist/features/homepage/components/SiteFeaturesSection.js +0 -11
  975. package/dist/features/homepage/components/TrustBadges.d.ts +0 -6
  976. package/dist/features/homepage/components/TrustBadges.js +0 -46
  977. package/dist/features/homepage/components/TrustIndicatorsSection.d.ts +0 -12
  978. package/dist/features/homepage/components/TrustIndicatorsSection.js +0 -11
  979. package/dist/features/homepage/hooks/useHomepage.d.ts +0 -11
  980. package/dist/features/homepage/hooks/useHomepage.js +0 -17
  981. package/dist/features/homepage/hooks/useHomepageSections.d.ts +0 -2
  982. package/dist/features/homepage/hooks/useHomepageSections.js +0 -10
  983. package/dist/features/homepage/repository/homepage.repository.d.ts +0 -11
  984. package/dist/features/homepage/repository/homepage.repository.js +0 -25
  985. package/dist/features/layout/BottomActions.d.ts +0 -1
  986. package/dist/features/layout/BottomActions.js +0 -311
  987. package/dist/features/products/components/ProductsView.d.ts +0 -6
  988. package/dist/features/products/components/ProductsView.js +0 -5
  989. package/dist/features/search/actions/index.d.ts +0 -1
  990. package/dist/features/search/actions/index.js +0 -1
  991. package/dist/features/search/actions/search-actions.d.ts +0 -18
  992. package/dist/features/search/actions/search-actions.js +0 -43
  993. package/dist/features/search/api/route.d.ts +0 -22
  994. package/dist/features/search/api/route.js +0 -128
  995. package/dist/features/search/columns/index.d.ts +0 -17
  996. package/dist/features/search/columns/index.js +0 -49
  997. package/dist/features/search/components/SearchFiltersRow.d.ts +0 -22
  998. package/dist/features/search/components/SearchFiltersRow.js +0 -21
  999. package/dist/features/search/components/SearchResultsSection.d.ts +0 -53
  1000. package/dist/features/search/components/SearchResultsSection.js +0 -35
  1001. package/dist/features/search/components/SearchView.d.ts +0 -27
  1002. package/dist/features/search/components/SearchView.js +0 -8
  1003. package/dist/features/search/hooks/useSearch.d.ts +0 -21
  1004. package/dist/features/search/hooks/useSearch.js +0 -33
  1005. package/dist/features/search/repository/search.repository.d.ts +0 -14
  1006. package/dist/features/search/repository/search.repository.js +0 -59
  1007. package/dist/features/search/schemas/index.d.ts +0 -70
  1008. package/dist/features/search/schemas/index.js +0 -36
  1009. package/dist/features/search/types/index.d.ts +0 -48
  1010. package/dist/features/seller/components/SellerStoreView.d.ts +0 -8
  1011. package/dist/features/seller/components/SellerStoreView.js +0 -8
  1012. package/dist/features/stores/components/StoreScopedSearch.d.ts +0 -17
  1013. package/dist/features/stores/components/StoreScopedSearch.js +0 -27
  1014. package/dist/seed/defaults/homepage-sections.d.ts +0 -2
  1015. package/dist/seed/defaults/homepage-sections.js +0 -60
  1016. package/dist/seed/factories/homepage-section.factory.d.ts +0 -10
  1017. package/dist/seed/factories/homepage-section.factory.js +0 -13
  1018. /package/dist/{features/search/types/index.js → _internal/shared/listing-types/spares/og.d.ts} +0 -0
@@ -12,7 +12,7 @@ function toArray(value) {
12
12
  return Array.isArray(value) ? value : [value];
13
13
  }
14
14
  function renderLegacyAccordion({ title, children, open, className = "", titleClassName = "", contentClassName = "", }) {
15
- return (_jsxs("details", { open: open, className: `appkit-accordion appkit-accordion--legacy ${className}`, children: [_jsxs("summary", { className: `appkit-accordion__summary ${titleClassName}`, children: [title, _jsx("span", { className: "appkit-accordion__chevron", "aria-hidden": "true", children: "\u25BE" })] }), _jsx("div", { className: `appkit-accordion__content ${contentClassName}`, "data-section": "accordion-div-447", children: children })] }));
15
+ return (_jsxs("details", { open: open, className: `appkit-accordion ${className}`, children: [_jsxs("summary", { className: `appkit-accordion__summary ${titleClassName}`, children: [title, _jsx("span", { className: "appkit-accordion__chevron", "aria-hidden": "true", children: "\u25BE" })] }), _jsx("div", { className: `appkit-accordion__content ${contentClassName}`, "data-section": "accordion-div-447", children: children })] }));
16
16
  }
17
17
  export function Accordion({ title, children, open = false, className = "", titleClassName = "", contentClassName = "", type = "single", defaultValue, value, onChange, }) {
18
18
  // useMemo/useState must run unconditionally on every render — they were
@@ -4,7 +4,7 @@ import { Nav, Ol, Li } from "./Semantic.js";
4
4
  import { Span } from "./Typography.js";
5
5
  import { TextLink } from "./TextLink.js";
6
6
  export function Breadcrumb({ items, className = "", tone = "default" }) {
7
- return (_jsx(Nav, { "aria-label": "Breadcrumb", className: `appkit-breadcrumb ${tone === "on-media" ? "appkit-breadcrumb--on-media" : ""} ${className}`, children: _jsx(Ol, { className: "appkit-breadcrumb__list", children: items.map((item, i) => {
7
+ return (_jsx(Nav, { "aria-label": "Breadcrumb", className: `${tone === "on-media" ? "appkit-breadcrumb--on-media" : ""} ${className}`, children: _jsx(Ol, { className: "appkit-breadcrumb__list", children: items.map((item, i) => {
8
8
  const isLast = i === items.length - 1;
9
9
  return (_jsxs(Li, { className: "appkit-breadcrumb__item", children: [i > 0 && (_jsx(ChevronRight, { className: "appkit-breadcrumb__separator", "aria-hidden": "true" })), isLast || !item.href ? (_jsx(Span, { className: isLast
10
10
  ? "appkit-breadcrumb__current"
@@ -5,7 +5,13 @@ import { createPortal } from "react-dom";
5
5
  import { twMerge } from "tailwind-merge";
6
6
  import { Loader2 } from "lucide-react";
7
7
  import { surfaceError } from "../../client/api/surface-error.js";
8
- import { useToastSafe } from "./Toast.js";
8
+ /*
9
+ * From `toast-context`, never from `./Toast`. `Toast` renders a `<Button>` as
10
+ * its dismiss control, so importing the hook from there is a real value cycle
11
+ * between two primitives — which makes their module initialisation order a
12
+ * property of the bundler rather than of the code.
13
+ */
14
+ import { useToastSafe } from "./toast-context.js";
9
15
  import { SHADOW_MAP } from "./surface-tokens.js";
10
16
  import { resolveIcon, ICON_SIZE } from "../icons/icon-registry.js";
11
17
  function spawnRipple(host, clientX, clientY) {
@@ -24,7 +24,6 @@ export function DetailPageGallery({ images, title, aspect = "square", fallback,
24
24
  const [activeIndex, setActiveIndex] = useState(Math.min(Math.max(initialIndex, 0), Math.max(images.length - 1, 0)));
25
25
  if (!images.length) {
26
26
  return (_jsx(Div, { className: [
27
- "appkit-detail-gallery",
28
27
  "w-full overflow-hidden rounded-2xl bg-[var(--appkit-color-surface)]",
29
28
  ASPECT_CLASS[aspect],
30
29
  className,
@@ -34,7 +33,6 @@ export function DetailPageGallery({ images, title, aspect = "square", fallback,
34
33
  }
35
34
  const active = images[activeIndex] ?? images[0];
36
35
  return (_jsxs(Div, { className: [
37
- "appkit-detail-gallery",
38
36
  "w-full space-y-2",
39
37
  className,
40
38
  ]
@@ -13,7 +13,6 @@ import { Heading, Text } from "./Typography.js";
13
13
  */
14
14
  export function DetailPageHero({ title, eyebrow, subtitle, metaRow, description, mediaSlot, actionsSlot, belowActions, className, }) {
15
15
  return (_jsxs(Row, { gap: "lg", align: "start", className: [
16
- "appkit-detail-hero",
17
16
  "flex-col md:flex-row",
18
17
  className,
19
18
  ]
@@ -11,7 +11,7 @@ import { Tabs, TabsContent, TabsList, TabsTrigger } from "./Tabs.js";
11
11
  * W1-14 — extracted 2026-05-23.
12
12
  */
13
13
  export function DetailPageTabs({ tabs, activeTab, defaultTab, onTabChange, className, }) {
14
- return (_jsxs(Tabs, { value: activeTab, defaultValue: defaultTab ?? tabs[0]?.id ?? "", onChange: onTabChange, className: ["appkit-detail-tabs", "space-y-4", className].filter(Boolean).join(" "), children: [_jsx(TabsList, { children: tabs.map((tab) => {
14
+ return (_jsxs(Tabs, { value: activeTab, defaultValue: defaultTab ?? tabs[0]?.id ?? "", onChange: onTabChange, className: ["space-y-4", className].filter(Boolean).join(" "), children: [_jsx(TabsList, { children: tabs.map((tab) => {
15
15
  const label = typeof tab.label === "string" ? tab.label : undefined;
16
16
  return (_jsx(TabsTrigger, { value: tab.id, disabled: tab.disabled, badge: tab.count, label: label, children: tab.label }, tab.id));
17
17
  }) }), tabs.map((tab) => (_jsx(TabsContent, { value: tab.id, children: _jsx(Div, { children: tab.content }) }, tab.id)))] }));
@@ -2,10 +2,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Span } from "./Typography.js";
3
3
  export function Divider({ label, orientation = "horizontal", className = "", }) {
4
4
  if (orientation === "vertical") {
5
- return (_jsx("div", { className: `appkit-divider appkit-divider--vertical ${className}`, role: "separator", "aria-orientation": "vertical" }));
5
+ return (_jsx("div", { className: `appkit-divider--vertical ${className}`, role: "separator", "aria-orientation": "vertical" }));
6
6
  }
7
7
  if (label) {
8
- return (_jsxs("div", { className: `appkit-divider appkit-divider--labeled ${className}`, role: "separator", "data-section": "divider-div-479", children: [_jsx("div", { className: "appkit-divider__line" }), _jsx(Span, { className: "appkit-divider__label", children: label }), _jsx("div", { className: "appkit-divider__line" })] }));
8
+ return (_jsxs("div", { className: `appkit-divider--labeled ${className}`, role: "separator", "data-section": "divider-div-479", children: [_jsx("div", { className: "appkit-divider__line" }), _jsx(Span, { className: "appkit-divider__label", children: label }), _jsx("div", { className: "appkit-divider__line" })] }));
9
9
  }
10
- return (_jsx("div", { className: `appkit-divider appkit-divider--horizontal ${className}`, role: "separator", "aria-orientation": "horizontal" }));
10
+ return (_jsx("div", { className: `appkit-divider--horizontal ${className}`, role: "separator", "aria-orientation": "horizontal" }));
11
11
  }
@@ -1,4 +1,5 @@
1
1
  import React from "react";
2
+ import type { OverflowRowDotTone } from "./OverflowRow";
2
3
  /**
3
4
  * FilterChipGroup — labelled wrap-group of pill buttons.
4
5
  *
@@ -32,6 +33,16 @@ export interface FilterChipGroupTab {
32
33
  * and a failed count can never hide a filter that has rows (Root Cause #59).
33
34
  */
34
35
  count?: number;
36
+ /**
37
+ * Leading status dot. Lets a status chip be found by colour before the label
38
+ * is read, which is the whole job of a status filter bar.
39
+ *
40
+ * 🛑 Colour is NEVER the only signal — the label is always rendered beside
41
+ * it, so the dot is redundant reinforcement rather than information. A chip
42
+ * identified only by colour is unusable to a colour-blind or screen-reader
43
+ * user, and the dot is `aria-hidden` for exactly that reason.
44
+ */
45
+ dotTone?: OverflowRowDotTone;
35
46
  }
36
47
  export interface FilterChipGroupProps {
37
48
  /** Section label shown above the chips. */
@@ -56,6 +56,6 @@ export function FilterChipGroup({ label, tabs, value, onChange, allId = "All", m
56
56
  return (_jsxs("button", { type: "button",
57
57
  // Checkboxes report checked state, not pressed state — a screen
58
58
  // reader announcing "pressed" for a filter that stays on is wrong.
59
- role: multiple ? "checkbox" : undefined, "aria-checked": multiple ? isActive : undefined, "aria-pressed": multiple ? undefined : isActive, onClick: () => handleClick(tab.id), className: `${CHIP_BASE_CLS} ${isActive ? ACTIVE_CLS : INACTIVE_CLS}`, children: [tab.label, typeof tab.count === "number" && (_jsx("span", { className: COUNT_CLS, children: tab.count > 99 ? "99+" : tab.count }))] }, tab.id));
59
+ role: multiple ? "checkbox" : undefined, "aria-checked": multiple ? isActive : undefined, "aria-pressed": multiple ? undefined : isActive, onClick: () => handleClick(tab.id), className: `${CHIP_BASE_CLS} ${isActive ? ACTIVE_CLS : INACTIVE_CLS}`, children: [tab.dotTone && (_jsx("span", { className: "appkit-overflow-row__dot mr-1.5 inline-block align-middle", "data-tone": tab.dotTone, "aria-hidden": "true" })), tab.label, typeof tab.count === "number" && (_jsx("span", { className: COUNT_CLS, children: tab.count > 99 ? "99+" : tab.count }))] }, tab.id));
60
60
  }) })] }));
61
61
  }
@@ -18,6 +18,10 @@ import { useCanSeePrices } from "../../react/hooks/useCanSeePrices.js";
18
18
  * It is rendered in EVERY state — signed in, signed out and resolving — because
19
19
  * the markup describes the region, not the refusal.
20
20
  */
21
+ // A SELECTOR TARGET, not a style — gatedPriceWebPageJsonLd names it in
22
+ // `hasPart.cssSelector` so a crawler can see the gate is declared. It must
23
+ // stay rule-less: styling it would change what the markup describes.
24
+ // audit-dead-css-ok: selector target for the paywall JSON-LD, never styled
21
25
  export const GATED_PRICE_CLASS = "appkit-gated-price";
22
26
  const DEFAULT_LABEL = "Sign in to see price";
23
27
  /**
@@ -76,5 +80,5 @@ export function GatedPrice({ amount, currency = getDefaultCurrency(), originalAm
76
80
  const originalClass = variant === "detail"
77
81
  ? "appkit-price-display__original appkit-price-display__original--detail"
78
82
  : "appkit-price-display__original appkit-price-display__original--compact";
79
- return (_jsxs(Row, { wrap: true, align: "baseline", gap: "xs", className: `appkit-price-display ${rootClass}`, children: [_jsx(Span, { className: priceClass, children: formatCurrency(amount, currency) }), hasDiscount && (_jsxs(_Fragment, { children: [_jsx(Span, { className: originalClass, children: formatCurrency(originalAmount, currency) }), _jsxs(Span, { className: "appkit-price-display__discount", children: ["-", formatPercentage(discountPct, 0)] })] }))] }));
83
+ return (_jsxs(Row, { wrap: true, align: "baseline", gap: "xs", className: rootClass, children: [_jsx(Span, { className: priceClass, children: formatCurrency(amount, currency) }), hasDiscount && (_jsxs(_Fragment, { children: [_jsx(Span, { className: originalClass, children: formatCurrency(originalAmount, currency) }), _jsxs(Span, { className: "appkit-price-display__discount", children: ["-", formatPercentage(discountPct, 0)] })] }))] }));
80
84
  }
@@ -153,7 +153,7 @@ export function HorizontalScroller({ children, className = "", gap = 16, snapToI
153
153
  // Grid mode: group items into slides of (rows × colCount) cards.
154
154
  Array.from({ length: gridSlideCount }, (_, slideIndex) => {
155
155
  const slideItems = normalizedItems.slice(slideIndex * gridCardsPerSlide, (slideIndex + 1) * gridCardsPerSlide);
156
- return (_jsx("div", { className: "appkit-hscroller__slide", style: {
156
+ return (_jsx("div", { style: {
157
157
  display: "grid",
158
158
  gridTemplateColumns: `repeat(${gridCols}, 1fr)`,
159
159
  gap: `${gap}px`,
@@ -4,7 +4,12 @@ import { useState, useRef, useEffect } from "react";
4
4
  import { Text } from "./Typography.js";
5
5
  import { Button } from "./Button.js";
6
6
  import { HorizontalScroller } from "./HorizontalScroller.js";
7
- import { useSwipe, useGesture } from "../../react/index.js";
7
+ // Defining modules, not the sibling barrel — Root Cause #18. `ui/index.ts` and
8
+ // `react/index.ts` re-exported into each other, which is the whole of
9
+ // `audit-import-cycles` component 1: an 18-module knot held together entirely
10
+ // by barrel hops, none of which needed the barrel.
11
+ import { useSwipe } from "../../react/hooks/useSwipe.js";
12
+ import { useGesture } from "../../react/hooks/useGesture.js";
8
13
  import { MediaImage } from "../../features/media/MediaImage.js";
9
14
  import { FLEX_CENTER, THEMED_BG_SECONDARY, THEMED_BG_TERTIARY, THEMED_BORDER, THEMED_TEXT_MUTED, THEMED_TEXT_PRIMARY, THEMED_TEXT_SECONDARY, } from "../../_internal/shared/styles/themed.js";
10
15
  const themed = {
@@ -50,24 +50,30 @@ export function ListingLayout({ headerSlot, statusTabsSlot, filterContent, filte
50
50
  // Must run before the detail-view short-circuit below — hooks cannot sit
51
51
  // after a conditional return.
52
52
  const bottomChromeSlot = useBottomChromeSlot();
53
- // Detail view short-circuit (folded from ListingViewShell)
54
- if (detailView) {
55
- return _jsx(_Fragment, { children: detailView });
56
- }
57
- // Portal-derived isDashboard default (folded from ListingViewShell)
58
- const effectiveIsDashboard = isDashboard ?? (portal === "admin" || portal === "seller");
59
- const l = { ...DEFAULT_LABELS, ...labels };
60
53
  /* The mobile toolbar is two stacked rows — search + Filter, then a scrolling
61
54
  sort/view/actions chip row — roughly 100px of chrome above the first card.
62
55
  It opens collapsed below `lg` and stays as the user left it thereafter.
63
56
  `forceExpanded` on a selection is load-bearing: the bulk-action bar renders
64
57
  INSIDE this toolbar, so a collapsed one would leave the user no way to act
65
- on rows they had just selected. */
58
+ on rows they had just selected.
59
+
60
+ 🛑 ABOVE the `detailView` short-circuit, with the other hooks. These two
61
+ sat below it — the THIRD time this component has grown a hook after that
62
+ return, which is what the two comments above are each a record of. Passing
63
+ `detailView` skipped them, so the hook ORDER changed between renders and
64
+ React silently reassigned state between the hooks that did run. */
66
65
  const toolbarPathname = usePathname();
67
66
  const { collapsed: mobileToolbarCollapsed, toggle: toggleMobileToolbar } = useToolbarCollapse({
68
67
  id: `listing-layout${toolbarPathname ? `:${toolbarPathname}` : ""}`,
69
68
  forceExpanded: selectedCount > 0,
70
69
  });
70
+ // Detail view short-circuit (folded from ListingViewShell)
71
+ if (detailView) {
72
+ return _jsx(_Fragment, { children: detailView });
73
+ }
74
+ // Portal-derived isDashboard default (folded from ListingViewShell)
75
+ const effectiveIsDashboard = isDashboard ?? (portal === "admin" || portal === "seller");
76
+ const l = { ...DEFAULT_LABELS, ...labels };
71
77
  const hasFilter = Boolean(filterContent);
72
78
  const panelTitle = filterTitle ?? l.filtersTitle;
73
79
  const handleMobileApply = () => {
@@ -89,10 +95,10 @@ export function ListingLayout({ headerSlot, statusTabsSlot, filterContent, filte
89
95
  effectiveIsDashboard
90
96
  ? "appkit-listing-layout__toolbar--dashboard"
91
97
  : "appkit-listing-layout__toolbar--page",
92
- ].join(" "), children: [_jsxs(Div, { className: "appkit-listing-layout__toolbar-row appkit-listing-layout__toolbar-row--desktop", children: [hasFilter && (_jsxs(Button, { type: "button", variant: "outline", size: "sm", onClick: () => setSidebarOpen((prev) => !prev), "aria-label": sidebarOpen ? l.hideFilters : l.showFilters, "aria-expanded": sidebarOpen, className: [
98
+ ].join(" "), children: [_jsxs(Div, { className: "appkit-listing-layout__toolbar-row--desktop", children: [hasFilter && (_jsxs(Button, { type: "button", variant: "outline", size: "sm", onClick: () => setSidebarOpen((prev) => !prev), "aria-label": sidebarOpen ? l.hideFilters : l.showFilters, "aria-expanded": sidebarOpen, className: [
93
99
  "appkit-listing-layout__filter-btn",
94
100
  sidebarOpen ? "appkit-listing-layout__filter-btn--active" : "",
95
- ].join(" "), children: [_jsx(FilterIcon, {}), l.filtersTitle, filterActiveCount > 0 && (_jsx(Span, { className: "appkit-listing-layout__filter-badge", "aria-label": l.filterActiveCount(filterActiveCount), children: filterActiveCount }))] })), searchSlot && (_jsx(Div, { className: "appkit-listing-layout__search", children: searchSlot })), _jsxs(Div, { className: "appkit-listing-layout__toolbar-actions", children: [sortSlot, viewToggleSlot && (_jsx(Div, { className: "appkit-listing-layout__view-toggle-wrap", children: viewToggleSlot })), actionsSlot] }), toolbarPaginationSlot && (_jsx(Div, { className: "appkit-listing-layout__toolbar-pagination", children: toolbarPaginationSlot }))] }), !mobileToolbarCollapsed && (_jsxs(Div, { className: "appkit-listing-layout__toolbar-row appkit-listing-layout__toolbar-row--mobile", children: [_jsxs(Div, { className: "appkit-listing-layout__mobile-row-1", children: [hasFilter && (_jsxs(Button, { type: "button", variant: "outline", size: "sm", onClick: () => setMobileFilterOpen(true), "aria-label": l.filtersTitle, className: [
101
+ ].join(" "), children: [_jsx(FilterIcon, {}), l.filtersTitle, filterActiveCount > 0 && (_jsx(Span, { className: "appkit-listing-layout__filter-badge", "aria-label": l.filterActiveCount(filterActiveCount), children: filterActiveCount }))] })), searchSlot && (_jsx(Div, { className: "appkit-listing-layout__search", children: searchSlot })), _jsxs(Div, { className: "appkit-listing-layout__toolbar-actions", children: [sortSlot, viewToggleSlot && (_jsx(Div, { className: "appkit-listing-layout__view-toggle-wrap", children: viewToggleSlot })), actionsSlot] }), toolbarPaginationSlot && (_jsx(Div, { className: "appkit-listing-layout__toolbar-pagination", children: toolbarPaginationSlot }))] }), !mobileToolbarCollapsed && (_jsxs(Div, { className: "appkit-listing-layout__toolbar-row--mobile", children: [_jsxs(Div, { className: "appkit-listing-layout__mobile-row-1", children: [hasFilter && (_jsxs(Button, { type: "button", variant: "outline", size: "sm", onClick: () => setMobileFilterOpen(true), "aria-label": l.filtersTitle, className: [
96
102
  "appkit-listing-layout__filter-btn",
97
103
  filterActiveCount > 0
98
104
  ? "appkit-listing-layout__filter-btn--active"
@@ -111,7 +117,7 @@ export function ListingLayout({ headerSlot, statusTabsSlot, filterContent, filte
111
117
  : "appkit-listing-layout__sidebar--collapsed",
112
118
  ].join(" "), children: _jsxs(Div, { className: "appkit-listing-layout__sidebar-panel", children: [_jsxs(Div, { className: "appkit-listing-layout__sidebar-header", children: [_jsx(Text, { weight: "semibold", size: "sm", children: panelTitle }), filterActiveCount > 0 && (_jsx(Button, { type: "button", variant: "ghost", size: "sm", onClick: onFilterClear, className: "text-xs text-primary hover:text-primary/80 hover:underline p-0 h-auto leading-none font-medium", children: l.clearAll }))] }), _jsx(Div, { className: "appkit-listing-layout__sidebar-facets", children: filterContent }), _jsx(Div, { className: "appkit-listing-layout__sidebar-footer", children: _jsx(Button, { type: "button", variant: "primary", className: "w-full rounded-xl", size: "sm", onClick: onFilterApply, children: filterPendingCount != null && filterPendingCount > 0
113
119
  ? `${l.applyFilters} (${filterPendingCount})`
114
- : l.applyFilters }) })] }) })), _jsxs(Div, { className: "appkit-listing-layout__content", children: [activeFiltersSlot, resultCountSlot && (_jsx(Div, { className: "appkit-listing-layout__result-count", children: resultCountSlot })), errorSlot ? (errorSlot) : (_jsxs(_Fragment, { children: [children, paginationSlot && (_jsx(Div, { className: "appkit-listing-layout__pagination", children: paginationSlot }))] }))] })] }), toolbarPaginationSlot &&
120
+ : l.applyFilters }) })] }) })), _jsxs(Div, { className: "appkit-listing-layout__content", children: [activeFiltersSlot, resultCountSlot && (_jsx(Div, { children: resultCountSlot })), errorSlot ? (errorSlot) : (_jsxs(_Fragment, { children: [children, paginationSlot && (_jsx(Div, { className: "appkit-listing-layout__pagination", children: paginationSlot }))] }))] })] }), toolbarPaginationSlot &&
115
121
  bottomChromeSlot &&
116
122
  createPortal(_jsx(Nav, { "aria-label": "Pagination", className: "appkit-listing-layout__mobile-pagination", children: toolbarPaginationSlot }), bottomChromeSlot), hasFilter && (_jsx(Drawer, { isOpen: mobileFilterOpen, onClose: () => setMobileFilterOpen(false), side: "bottom", title: filterActiveCount > 0
117
123
  ? `${panelTitle} (${filterActiveCount})`
@@ -0,0 +1,81 @@
1
+ /*
2
+ * Media source/segment tab strips — MediaPickerModal and MediaUploadField.
3
+ *
4
+ * 🛑 Both strips shipped with NO rules at all. `MediaPickerModal` ("Upload file"
5
+ * / "Choose existing") and `MediaUploadField` ("Upload" / "YouTube" /
6
+ * "External URL") each render raw `<button>`s carrying `appkit-media-*` class
7
+ * names, and no stylesheet ever defined them — so the one control that tells a
8
+ * seller which media SOURCE they are using rendered as bare browser buttons,
9
+ * with no indication of which was active. Found 2026-10-19 by
10
+ * `audit-dead-css-classes` once the blanket `appkit-` exemption came off.
11
+ *
12
+ * The two families are kept DISTINCT rather than collapsed into one
13
+ * `appkit-tab-strip`: renaming would mean editing both components plus any
14
+ * consumer override keyed on the old names, for no behavioural gain. They
15
+ * share declarations through the selector lists below instead, so the two
16
+ * strips cannot drift apart visually.
17
+ *
18
+ * Colours come from tokens, never a palette literal — a hardcoded `zinc-100`
19
+ * fill is the same near-white in every theme (Recurrent Root Cause #79).
20
+ */
21
+
22
+ .appkit-media-picker__tabs,
23
+ .appkit-media-upload__source-tabs {
24
+ display: inline-flex;
25
+ align-items: stretch;
26
+ gap: 0;
27
+ border: 1px solid var(--appkit-color-border);
28
+ border-radius: var(--appkit-radius-lg);
29
+ background: var(--appkit-color-surface-input);
30
+ padding: 2px;
31
+ overflow: hidden;
32
+ max-width: 100%;
33
+ }
34
+
35
+ .appkit-media-picker__tab-btn,
36
+ .appkit-media-upload__source-tab {
37
+ appearance: none;
38
+ border: 0;
39
+ background: transparent;
40
+ cursor: pointer;
41
+ white-space: nowrap;
42
+ padding: var(--appkit-space-1-5) var(--appkit-space-3);
43
+ border-radius: var(--appkit-radius-md);
44
+ font-size: var(--appkit-text-sm);
45
+ font-weight: 500;
46
+ line-height: 1.25rem;
47
+ color: var(--appkit-color-text-muted);
48
+ transition: background-color 0.15s ease, color 0.15s ease;
49
+ }
50
+
51
+ .appkit-media-picker__tab-btn:hover:not(:disabled),
52
+ .appkit-media-upload__source-tab:hover:not(:disabled) {
53
+ background: var(--appkit-color-surface-hover);
54
+ color: var(--appkit-color-text);
55
+ }
56
+
57
+ .appkit-media-picker__tab-btn:focus-visible,
58
+ .appkit-media-upload__source-tab:focus-visible {
59
+ outline: 2px solid var(--appkit-color-focus-ring);
60
+ outline-offset: -2px;
61
+ }
62
+
63
+ /*
64
+ * The active tab is the only one that gets a raised surface. `--active` must
65
+ * win over `:hover` for the selected tab, so it is declared after the hover
66
+ * rule rather than relying on specificity.
67
+ */
68
+ .appkit-media-picker__tab-btn--active,
69
+ .appkit-media-upload__source-tab--active,
70
+ .appkit-media-picker__tab-btn--active:hover,
71
+ .appkit-media-upload__source-tab--active:hover {
72
+ background: var(--appkit-color-surface);
73
+ color: var(--appkit-color-text);
74
+ box-shadow: var(--appkit-shadow-sm);
75
+ }
76
+
77
+ .appkit-media-picker__tab-btn:disabled,
78
+ .appkit-media-upload__source-tab:disabled {
79
+ cursor: not-allowed;
80
+ opacity: 0.6;
81
+ }
@@ -0,0 +1,92 @@
1
+ import React from "react";
2
+ import type { IconKey } from "../icons/icon-registry";
3
+ /** Status tones for a leading dot. Mirrors the status colour pairs in tokens.css. */
4
+ export type OverflowRowDotTone = "default" | "primary" | "success" | "warning" | "error" | "info" | "muted";
5
+ /**
6
+ * Navigation props forwarded to every `href` item's link.
7
+ *
8
+ * Deliberately an explicit list rather than `Record<string, unknown>`: a bag
9
+ * of unknowns at a component boundary type-checks against anything, so a
10
+ * misspelled `scrollTo` would compile and silently do nothing — the defect
11
+ * being passed through here is precisely the kind that has no visible symptom.
12
+ */
13
+ export interface OverflowRowLinkProps {
14
+ /**
15
+ * `false` opts the link out of the global `<ScrollToTop>`, which is keyed on
16
+ * pathname. A tab bar that swaps a panel must pass this or every click
17
+ * yanks the page to the top.
18
+ */
19
+ scroll?: boolean;
20
+ prefetch?: boolean;
21
+ replace?: boolean;
22
+ }
23
+ export interface OverflowRowItem {
24
+ id: string;
25
+ /**
26
+ * Plain text. Required even when a visual is present: it is the search
27
+ * corpus, the collapsed trigger's text, and the accessible name.
28
+ */
29
+ label: string;
30
+ /** Trailing count. `undefined` means "not counted", NOT zero — it is omitted rather than rendered as 0. */
31
+ count?: number;
32
+ /**
33
+ * Leading visual, in precedence order: `imageUrl` → `iconName` → `emoji` →
34
+ * `dotTone`. Only one renders. All are optional; an item with none renders
35
+ * label-only and the row stays aligned because the visual box is not
36
+ * reserved when NO item in the set has one.
37
+ */
38
+ imageUrl?: string;
39
+ iconName?: IconKey;
40
+ emoji?: string;
41
+ dotTone?: OverflowRowDotTone;
42
+ /** Renders the pill as a link. Mutually exclusive with `onSelect`. */
43
+ href?: string;
44
+ onSelect?: () => void;
45
+ disabled?: boolean;
46
+ }
47
+ export interface OverflowRowProps {
48
+ items: readonly OverflowRowItem[];
49
+ /** Accessible name for the row and its collapsed dropdown. Required — an unnamed tablist is unusable. */
50
+ ariaLabel: string;
51
+ /** Selected item id. Drives `aria-selected`, the active pill, and the collapsed trigger's label. */
52
+ activeId?: string;
53
+ /**
54
+ * `"tabs"` renders `role="tablist"` / `role="tab"`; `"nav"` renders a plain
55
+ * list of links. Pick by what the items DO: a tab swaps a panel in place, a
56
+ * nav item navigates away. The collapsed dropdown is a `listbox` either way,
57
+ * because a `<select>`-shaped control is what a collapsed row reads as.
58
+ */
59
+ variant?: "tabs" | "nav";
60
+ /** Collapsed trigger text when nothing is selected. */
61
+ placeholder?: string;
62
+ searchPlaceholder?: string;
63
+ noResultsText?: string;
64
+ /**
65
+ * Skip measurement and always render collapsed. For sets known to be large
66
+ * at author time; the measured path is the default and is preferred.
67
+ */
68
+ alwaysCollapsed?: boolean;
69
+ /**
70
+ * Component used to render `href` items. Defaults to `next/link`.
71
+ *
72
+ * 🛑 Not a raw `<a>`, and the default is load-bearing: a plain anchor does a
73
+ * FULL PAGE LOAD, so a row of category links silently drops client-side
74
+ * navigation and every click re-downloads the document. Override it only to
75
+ * supply a locale-aware link (the consumer's `@/i18n/navigation` `Link`),
76
+ * never to go back to an anchor.
77
+ */
78
+ linkAs?: React.ElementType;
79
+ /**
80
+ * Extra props spread onto every `href` item's link.
81
+ *
82
+ * The case this exists for is `scroll={false}`: a tab bar that swaps a panel
83
+ * must NOT jump the page to the top on every click, and the app mounts a
84
+ * global `<ScrollToTop>` keyed on pathname, so opting out per-link is the
85
+ * documented escape hatch. Also carries `prefetch`.
86
+ */
87
+ linkProps?: OverflowRowLinkProps;
88
+ /** Applied to the outer shell. */
89
+ className?: string;
90
+ }
91
+ export declare function OverflowRow({ items, ariaLabel, activeId, variant, placeholder, searchPlaceholder, noResultsText, alwaysCollapsed, linkAs: Link, linkProps, className, }: OverflowRowProps): React.JSX.Element;
92
+ export default OverflowRow;
@@ -0,0 +1,203 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ /*
4
+ * WHY: A pill/tab row that is wider than its container has, until now, been
5
+ * solved three different ways in this codebase and badly in all of them:
6
+ * seven rows were a bare `overflow-x-auto` with NO affordance (the
7
+ * Subcategories row shipped 12 pills on a 1440px viewport with the last
8
+ * four simply unreachable), six went through `TabBarShell`'s scroll
9
+ * arrows, and `Tabs` collapsed to a native `<select>` on a hard-coded
10
+ * count of 5 — a threshold that is wrong in both directions, since four
11
+ * long labels overflow a phone and eight short ones fit a desktop.
12
+ *
13
+ * Width is the only honest input. This measures it.
14
+ *
15
+ * WHAT: A row of items that renders as pills while they fit and becomes a
16
+ * single searchable, keyboard-navigable dropdown when they do not.
17
+ * Every item may carry a leading visual (cover image, lucide glyph,
18
+ * status dot) which is shown in BOTH states.
19
+ *
20
+ * EXPORTS: OverflowRow, OverflowRowProps, OverflowRowItem
21
+ *
22
+ * @tag domain:ui
23
+ * @tag layer:ui
24
+ * @tag pattern:none
25
+ * @tag access:client
26
+ * @tag sideEffects:dom-measurement
27
+ */
28
+ import { useCallback, useEffect, useId, useMemo, useRef, useState } from "react";
29
+ import NextLink from "next/link.js";
30
+ import { Check, ChevronDown, Search } from "lucide-react";
31
+ import { Avatar } from "./Avatar.js";
32
+ import { Icon } from "./Icon.js";
33
+ import { Input } from "./Input.js";
34
+ import { useRowCollapse } from "./row-collapse.js";
35
+ const UI_OVERFLOW_ROW = {
36
+ shell: "appkit-overflow-row",
37
+ row: "appkit-overflow-row__row",
38
+ pill: "appkit-overflow-row__pill",
39
+ pillActive: "appkit-overflow-row__pill--active",
40
+ count: "appkit-overflow-row__count",
41
+ visual: "appkit-overflow-row__visual",
42
+ dot: "appkit-overflow-row__dot",
43
+ emoji: "appkit-overflow-row__emoji",
44
+ trigger: "appkit-overflow-row__trigger",
45
+ triggerLabel: "appkit-overflow-row__trigger-label",
46
+ popover: "appkit-overflow-row__popover",
47
+ search: "appkit-overflow-row__search",
48
+ list: "appkit-overflow-row__list",
49
+ option: "appkit-overflow-row__option",
50
+ optionActive: "appkit-overflow-row__option--active",
51
+ optionSelected: "appkit-overflow-row__option--selected",
52
+ optionLabel: "appkit-overflow-row__option-label",
53
+ optionCount: "appkit-overflow-row__option-count",
54
+ empty: "appkit-overflow-row__empty",
55
+ check: "appkit-overflow-row__check",
56
+ };
57
+ function visualOf(item, size) {
58
+ if (item.imageUrl) {
59
+ return (_jsx(Avatar, { src: item.imageUrl, name: item.label, size: "xs", className: UI_OVERFLOW_ROW.visual }));
60
+ }
61
+ if (item.iconName) {
62
+ return _jsx(Icon, { name: item.iconName, size: size === "pill" ? "sm" : "md", tone: "current" });
63
+ }
64
+ if (item.emoji) {
65
+ return (_jsx("span", { className: UI_OVERFLOW_ROW.emoji, "aria-hidden": "true", children: item.emoji }));
66
+ }
67
+ if (item.dotTone) {
68
+ return _jsx("span", { className: UI_OVERFLOW_ROW.dot, "data-tone": item.dotTone, "aria-hidden": "true" });
69
+ }
70
+ return null;
71
+ }
72
+ /** Stable signature of the item set — invalidates the cached natural width when the set changes. */
73
+ function signatureOf(items) {
74
+ return items.map((i) => `${i.id}:${i.label}:${i.count ?? ""}`).join("|");
75
+ }
76
+ export function OverflowRow({ items, ariaLabel, activeId, variant = "tabs", placeholder, searchPlaceholder = "Search…", noResultsText = "No matches", alwaysCollapsed = false, linkAs: Link = NextLink, linkProps, className = "", }) {
77
+ const shellRef = useRef(null);
78
+ const rowRef = useRef(null);
79
+ const triggerRef = useRef(null);
80
+ const searchRef = useRef(null);
81
+ const listboxId = useId();
82
+ const [open, setOpen] = useState(false);
83
+ const [query, setQuery] = useState("");
84
+ const [activeIndex, setActiveIndex] = useState(0);
85
+ const signature = useMemo(() => signatureOf(items), [items]);
86
+ const collapsed = useRowCollapse(shellRef, rowRef, signature, {
87
+ disabled: alwaysCollapsed,
88
+ initial: alwaysCollapsed,
89
+ });
90
+ // Close on outside click.
91
+ useEffect(() => {
92
+ if (!open)
93
+ return;
94
+ const onDown = (event) => {
95
+ if (!shellRef.current?.contains(event.target))
96
+ setOpen(false);
97
+ };
98
+ document.addEventListener("mousedown", onDown);
99
+ return () => document.removeEventListener("mousedown", onDown);
100
+ }, [open]);
101
+ // Focus the search field on open — the whole point of collapsing is that the
102
+ // set is too big to scan, so typing must work without a second click.
103
+ useEffect(() => {
104
+ if (open)
105
+ searchRef.current?.focus();
106
+ else {
107
+ setQuery("");
108
+ setActiveIndex(0);
109
+ }
110
+ }, [open]);
111
+ const filtered = useMemo(() => {
112
+ const q = query.trim().toLowerCase();
113
+ if (!q)
114
+ return items;
115
+ return items.filter((item) => item.label.toLowerCase().includes(q));
116
+ }, [items, query]);
117
+ const activeItem = items.find((item) => item.id === activeId);
118
+ const commit = useCallback((item) => {
119
+ if (item.disabled)
120
+ return;
121
+ item.onSelect?.();
122
+ setOpen(false);
123
+ }, []);
124
+ const onSearchKeyDown = (event) => {
125
+ const count = filtered.length;
126
+ if (event.key === "Escape") {
127
+ event.preventDefault();
128
+ setOpen(false);
129
+ triggerRef.current?.focus();
130
+ return;
131
+ }
132
+ if (!count)
133
+ return;
134
+ if (event.key === "ArrowDown") {
135
+ event.preventDefault();
136
+ setActiveIndex((prev) => (prev + 1) % count);
137
+ return;
138
+ }
139
+ if (event.key === "ArrowUp") {
140
+ event.preventDefault();
141
+ setActiveIndex((prev) => (prev - 1 + count) % count);
142
+ return;
143
+ }
144
+ if (event.key === "Home") {
145
+ event.preventDefault();
146
+ setActiveIndex(0);
147
+ return;
148
+ }
149
+ if (event.key === "End") {
150
+ event.preventDefault();
151
+ setActiveIndex(count - 1);
152
+ return;
153
+ }
154
+ if (event.key === "Enter") {
155
+ event.preventDefault();
156
+ const item = filtered[Math.min(activeIndex, count - 1)];
157
+ if (!item)
158
+ return;
159
+ if (item.href) {
160
+ window.location.assign(item.href);
161
+ return;
162
+ }
163
+ commit(item);
164
+ }
165
+ };
166
+ const hasAnyVisual = items.some((item) => item.imageUrl || item.iconName || item.emoji || item.dotTone);
167
+ // ── Collapsed: one searchable dropdown ──────────────────────────────────
168
+ if (collapsed) {
169
+ return (_jsxs("div", { ref: shellRef, className: [UI_OVERFLOW_ROW.shell, className].filter(Boolean).join(" "), "data-collapsed": "true", children: [_jsxs("button", { ref: triggerRef, type: "button", className: UI_OVERFLOW_ROW.trigger, "aria-haspopup": "listbox", "aria-expanded": open, "aria-controls": open ? listboxId : undefined, "aria-label": ariaLabel, onClick: () => setOpen((prev) => !prev), onKeyDown: (event) => {
170
+ if (!open && (event.key === "ArrowDown" || event.key === "Enter")) {
171
+ event.preventDefault();
172
+ setOpen(true);
173
+ }
174
+ }, children: [activeItem ? visualOf(activeItem, "pill") : null, _jsx("span", { className: UI_OVERFLOW_ROW.triggerLabel, children: activeItem?.label ?? placeholder ?? ariaLabel }), items.length > 0 && (_jsx("span", { className: UI_OVERFLOW_ROW.count, children: items.length })), _jsx(ChevronDown, { className: "w-4 h-4", "aria-hidden": "true" })] }), open && (_jsxs("div", { className: UI_OVERFLOW_ROW.popover, children: [_jsx("div", { className: UI_OVERFLOW_ROW.search, children: _jsx(Input, { ref: searchRef, type: "search", value: query, placeholder: searchPlaceholder, "aria-label": searchPlaceholder, "aria-controls": listboxId, "aria-activedescendant": filtered[activeIndex] ? `${listboxId}-${filtered[activeIndex].id}` : undefined, icon: _jsx(Search, { className: "w-4 h-4", "aria-hidden": "true" }), onChange: (event) => {
175
+ setQuery(event.target.value);
176
+ setActiveIndex(0);
177
+ }, onKeyDown: onSearchKeyDown }) }), _jsxs("div", { id: listboxId, role: "listbox", "aria-label": ariaLabel, className: UI_OVERFLOW_ROW.list, children: [filtered.length === 0 && (_jsx("div", { className: UI_OVERFLOW_ROW.empty, children: noResultsText })), filtered.map((item, index) => {
178
+ const isSelected = item.id === activeId;
179
+ const classes = [
180
+ UI_OVERFLOW_ROW.option,
181
+ index === activeIndex ? UI_OVERFLOW_ROW.optionActive : "",
182
+ isSelected ? UI_OVERFLOW_ROW.optionSelected : "",
183
+ ]
184
+ .filter(Boolean)
185
+ .join(" ");
186
+ const body = (_jsxs(_Fragment, { children: [hasAnyVisual ? visualOf(item, "option") : null, _jsx("span", { className: UI_OVERFLOW_ROW.optionLabel, children: item.label }), typeof item.count === "number" && (_jsx("span", { className: UI_OVERFLOW_ROW.optionCount, children: item.count > 99 ? "99+" : item.count })), isSelected && (_jsx(Check, { className: `w-4 h-4 ${UI_OVERFLOW_ROW.check}`, "aria-hidden": "true" }))] }));
187
+ return item.href ? (_jsx(Link, { ...linkProps, id: `${listboxId}-${item.id}`, role: "option", "aria-selected": isSelected, href: item.href, className: classes, onMouseEnter: () => setActiveIndex(index), children: body }, item.id)) : (_jsx("button", { id: `${listboxId}-${item.id}`, role: "option", type: "button", "aria-selected": isSelected, disabled: item.disabled, className: classes, onClick: () => commit(item), onMouseEnter: () => setActiveIndex(index), children: body }, item.id));
188
+ })] })] }))] }));
189
+ }
190
+ // ── Expanded: the pill row ──────────────────────────────────────────────
191
+ return (_jsx("div", { ref: shellRef, className: [UI_OVERFLOW_ROW.shell, className].filter(Boolean).join(" "), "data-collapsed": "false", children: _jsx("div", { ref: rowRef, className: UI_OVERFLOW_ROW.row, role: variant === "tabs" ? "tablist" : undefined, "aria-label": ariaLabel, children: items.map((item) => {
192
+ const isActive = item.id === activeId;
193
+ const classes = [
194
+ UI_OVERFLOW_ROW.pill,
195
+ isActive ? UI_OVERFLOW_ROW.pillActive : "",
196
+ ]
197
+ .filter(Boolean)
198
+ .join(" ");
199
+ const body = (_jsxs(_Fragment, { children: [visualOf(item, "pill"), item.label, typeof item.count === "number" && (_jsx("span", { className: UI_OVERFLOW_ROW.count, children: item.count > 99 ? "99+" : item.count }))] }));
200
+ return item.href ? (_jsx(Link, { ...linkProps, href: item.href, className: classes, role: variant === "tabs" ? "tab" : undefined, "aria-selected": variant === "tabs" ? isActive : undefined, "aria-current": variant === "nav" && isActive ? "page" : undefined, children: body }, item.id)) : (_jsx("button", { type: "button", className: classes, role: variant === "tabs" ? "tab" : undefined, "aria-selected": variant === "tabs" ? isActive : undefined, disabled: item.disabled, onClick: () => commit(item), children: body }, item.id));
201
+ }) }) }));
202
+ }
203
+ export default OverflowRow;