@mohasinac/appkit 4.58.0 → 4.60.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1080) hide show
  1. package/dist/.build-stamp.json +3 -3
  2. package/dist/_internal/client/features/layout/DashboardLayoutClient.js +62 -5
  3. package/dist/_internal/client/features/maintenance/views/MaintenanceDashboardView.js +2 -2
  4. package/dist/_internal/server/features/brands/actions.js +78 -4
  5. package/dist/_internal/server/features/checkout/actions.d.ts +36 -13
  6. package/dist/_internal/server/features/checkout/actions.js +668 -183
  7. package/dist/_internal/server/features/checkout/supplier-identity.js +18 -1
  8. package/dist/_internal/server/features/gateway-events/index.d.ts +10 -0
  9. package/dist/_internal/server/features/gateway-events/index.js +10 -0
  10. package/dist/_internal/server/features/gateway-events/ingest.d.ts +127 -0
  11. package/dist/_internal/server/features/gateway-events/ingest.js +188 -0
  12. package/dist/_internal/server/features/gateway-events/redact.d.ts +66 -0
  13. package/dist/_internal/server/features/gateway-events/redact.js +151 -0
  14. package/dist/_internal/server/features/grievance/actions.d.ts +63 -0
  15. package/dist/_internal/server/features/grievance/actions.js +173 -0
  16. package/dist/_internal/server/features/grievance/index.d.ts +8 -0
  17. package/dist/_internal/server/features/grievance/index.js +8 -0
  18. package/dist/_internal/server/features/grouped/data.js +28 -3
  19. package/dist/_internal/server/features/lottery/actions.js +99 -4
  20. package/dist/_internal/server/features/order-completion/actions.d.ts +92 -0
  21. package/dist/_internal/server/features/order-completion/actions.js +336 -0
  22. package/dist/_internal/server/features/order-completion/index.d.ts +7 -0
  23. package/dist/_internal/server/features/order-completion/index.js +7 -0
  24. package/dist/_internal/server/features/orders/actions.d.ts +13 -0
  25. package/dist/_internal/server/features/orders/actions.js +56 -2
  26. package/dist/_internal/server/features/orders/adapters.js +26 -0
  27. package/dist/_internal/server/features/orders/cancellation-refund.d.ts +116 -0
  28. package/dist/_internal/server/features/orders/cancellation-refund.js +466 -0
  29. package/dist/_internal/server/features/orders/index.d.ts +2 -1
  30. package/dist/_internal/server/features/orders/index.js +1 -1
  31. package/dist/_internal/server/features/orders/service.d.ts +60 -0
  32. package/dist/_internal/server/features/orders/service.js +74 -0
  33. package/dist/_internal/server/features/payment-cases/disputes.d.ts +76 -0
  34. package/dist/_internal/server/features/payment-cases/disputes.js +241 -0
  35. package/dist/_internal/server/features/payment-cases/index.d.ts +9 -0
  36. package/dist/_internal/server/features/payment-cases/index.js +9 -0
  37. package/dist/_internal/server/features/payouts/actions.d.ts +28 -3
  38. package/dist/_internal/server/features/payouts/actions.js +84 -10
  39. package/dist/_internal/server/features/points/adjust.d.ts +61 -0
  40. package/dist/_internal/server/features/points/adjust.js +121 -0
  41. package/dist/_internal/server/features/points/award.d.ts +65 -0
  42. package/dist/_internal/server/features/points/award.js +145 -0
  43. package/dist/_internal/server/features/price-index/market.d.ts +33 -0
  44. package/dist/_internal/server/features/price-index/market.js +54 -1
  45. package/dist/_internal/server/features/products/data.js +40 -22
  46. package/dist/_internal/server/features/protection-claims/actions.d.ts +72 -0
  47. package/dist/_internal/server/features/protection-claims/actions.js +228 -0
  48. package/dist/_internal/server/features/protection-claims/index.d.ts +8 -0
  49. package/dist/_internal/server/features/protection-claims/index.js +8 -0
  50. package/dist/_internal/server/features/refunds/actions.d.ts +20 -0
  51. package/dist/_internal/server/features/refunds/actions.js +259 -17
  52. package/dist/_internal/server/features/refunds/capacity.d.ts +29 -0
  53. package/dist/_internal/server/features/refunds/capacity.js +37 -0
  54. package/dist/_internal/server/features/reviews/actions.js +3 -2
  55. package/dist/_internal/server/features/search/index-build/sources.js +20 -1
  56. package/dist/_internal/server/features/shipping/reconcile.d.ts +10 -1
  57. package/dist/_internal/server/features/shipping/reconcile.js +34 -3
  58. package/dist/_internal/server/features/shipping/reimbursement.d.ts +117 -0
  59. package/dist/_internal/server/features/shipping/reimbursement.js +223 -0
  60. package/dist/_internal/server/features/stores/tabs.d.ts +19 -4
  61. package/dist/_internal/server/features/stores/tabs.js +24 -4
  62. package/dist/_internal/server/functions/https.d.ts +31 -1
  63. package/dist/_internal/server/functions/https.js +52 -1
  64. package/dist/_internal/server/functions/scheduled.d.ts +72 -1
  65. package/dist/_internal/server/functions/scheduled.js +124 -1
  66. package/dist/_internal/server/jobs/core/autoPayoutEligibility.js +62 -16
  67. package/dist/_internal/server/jobs/core/boxRollupReconcile.d.ts +46 -0
  68. package/dist/_internal/server/jobs/core/boxRollupReconcile.js +142 -0
  69. package/dist/_internal/server/jobs/core/dailyDataCleanup.js +149 -1
  70. package/dist/_internal/server/jobs/core/dailyStatusDigest.d.ts +14 -0
  71. package/dist/_internal/server/jobs/core/dailyStatusDigest.js +79 -1
  72. package/dist/_internal/server/jobs/core/index.d.ts +2 -0
  73. package/dist/_internal/server/jobs/core/index.js +2 -0
  74. package/dist/_internal/server/jobs/core/marketPriceRollup.d.ts +64 -0
  75. package/dist/_internal/server/jobs/core/marketPriceRollup.js +153 -0
  76. package/dist/_internal/server/jobs/core/obligationSweep.d.ts +36 -0
  77. package/dist/_internal/server/jobs/core/obligationSweep.js +503 -0
  78. package/dist/_internal/server/jobs/core/paymentReconcile.d.ts +79 -0
  79. package/dist/_internal/server/jobs/core/paymentReconcile.js +614 -0
  80. package/dist/_internal/server/jobs/core/paymentWindowTimeout.js +34 -0
  81. package/dist/_internal/server/jobs/core/weeklyPayoutEligibility.js +35 -4
  82. package/dist/_internal/server/jobs/handlers/boxRollupReconcile.d.ts +2 -0
  83. package/dist/_internal/server/jobs/handlers/boxRollupReconcile.js +15 -0
  84. package/dist/_internal/server/jobs/handlers/countersReconcileNow.d.ts +65 -0
  85. package/dist/_internal/server/jobs/handlers/countersReconcileNow.js +89 -0
  86. package/dist/_internal/server/jobs/handlers/index.d.ts +5 -0
  87. package/dist/_internal/server/jobs/handlers/index.js +5 -0
  88. package/dist/_internal/server/jobs/handlers/marketPriceRollup.d.ts +2 -0
  89. package/dist/_internal/server/jobs/handlers/marketPriceRollup.js +2 -0
  90. package/dist/_internal/server/jobs/handlers/messages.d.ts +1 -1
  91. package/dist/_internal/server/jobs/handlers/messages.js +1 -1
  92. package/dist/_internal/server/jobs/handlers/obligationSweep.d.ts +2 -0
  93. package/dist/_internal/server/jobs/handlers/obligationSweep.js +15 -0
  94. package/dist/_internal/server/jobs/handlers/onShipmentAllocationSync.js +30 -1
  95. package/dist/_internal/server/jobs/handlers/paymentReconcile.d.ts +2 -0
  96. package/dist/_internal/server/jobs/handlers/paymentReconcile.js +6 -0
  97. package/dist/_internal/shared/actions/action-registry.d.ts +1 -1
  98. package/dist/_internal/shared/actions/action-registry.js +71 -0
  99. package/dist/_internal/shared/checkout/coupon-discount.d.ts +73 -0
  100. package/dist/_internal/shared/checkout/coupon-discount.js +103 -0
  101. package/dist/_internal/shared/checkout/lanes.d.ts +42 -0
  102. package/dist/_internal/shared/checkout/lanes.js +46 -0
  103. package/dist/_internal/shared/checkout/order-math.d.ts +149 -1
  104. package/dist/_internal/shared/checkout/order-math.js +251 -3
  105. package/dist/_internal/shared/checkout/refundable-base.d.ts +116 -0
  106. package/dist/_internal/shared/checkout/refundable-base.js +122 -0
  107. package/dist/_internal/shared/features/auctions/config.d.ts +14 -1
  108. package/dist/_internal/shared/features/auctions/config.js +30 -1
  109. package/dist/_internal/shared/features/brands/schema.d.ts +42 -0
  110. package/dist/_internal/shared/features/brands/schema.js +18 -0
  111. package/dist/_internal/shared/features/orders/refund-copy.d.ts +22 -0
  112. package/dist/_internal/shared/features/orders/refund-copy.js +34 -0
  113. package/dist/_internal/shared/features/print/label-profiles.d.ts +198 -0
  114. package/dist/_internal/shared/features/print/label-profiles.js +350 -0
  115. package/dist/_internal/shared/features/products/to-product-item.js +33 -5
  116. package/dist/_internal/shared/fees/calculator.d.ts +31 -2
  117. package/dist/_internal/shared/fees/calculator.js +103 -5
  118. package/dist/_internal/shared/fees/india-states.d.ts +195 -0
  119. package/dist/_internal/shared/fees/india-states.js +190 -0
  120. package/dist/_internal/shared/fees/payout-hold.d.ts +80 -0
  121. package/dist/_internal/shared/fees/payout-hold.js +74 -0
  122. package/dist/_internal/shared/obligations/deadlines.d.ts +94 -0
  123. package/dist/_internal/shared/obligations/deadlines.js +155 -0
  124. package/dist/_internal/shared/shipping/quote.d.ts +96 -0
  125. package/dist/_internal/shared/shipping/quote.js +67 -0
  126. package/dist/_internal/shared/time/business-days.d.ts +91 -0
  127. package/dist/_internal/shared/time/business-days.js +185 -0
  128. package/dist/_internal/shared/types/base-document.d.ts +1 -1
  129. package/dist/cli/index.js +0 -2
  130. package/dist/client.d.ts +9 -4
  131. package/dist/client.js +26 -3
  132. package/dist/configs/tailwind.d.ts +0 -12
  133. package/dist/configs/tailwind.js +28 -15
  134. package/dist/constants/api-endpoints.d.ts +51 -9
  135. package/dist/constants/api-endpoints.js +23 -7
  136. package/dist/constants/index.d.ts +1 -1
  137. package/dist/constants/index.js +1 -1
  138. package/dist/constants/seed-meta.d.ts +113 -0
  139. package/dist/constants/seed-meta.js +91 -0
  140. package/dist/contracts/index.d.ts +1 -1
  141. package/dist/contracts/payment.d.ts +131 -0
  142. package/dist/features/about/components/AboutView.js +1 -1
  143. package/dist/features/about/components/DeveloperView.js +5 -2
  144. package/dist/features/about/components/FAQPageView.js +2 -1
  145. package/dist/features/about/components/FeesView.js +2 -1
  146. package/dist/features/about/components/HelpPageView.js +2 -1
  147. package/dist/features/about/components/HowAuctionsWorkView.js +2 -1
  148. package/dist/features/about/components/HowCheckoutWorksView.js +2 -1
  149. package/dist/features/about/components/HowEmiWorksView.js +2 -1
  150. package/dist/features/about/components/HowOffersWorkView.js +2 -1
  151. package/dist/features/about/components/HowOrdersWorkView.js +2 -1
  152. package/dist/features/about/components/HowPayoutsWorkView.js +2 -1
  153. package/dist/features/about/components/HowPreOrdersWorkView.js +2 -1
  154. package/dist/features/about/components/HowReviewsWorkView.js +2 -1
  155. package/dist/features/about/components/PolicyPageView.js +2 -1
  156. package/dist/features/about/components/ProseHero.d.ts +73 -0
  157. package/dist/features/about/components/ProseHero.js +18 -0
  158. package/dist/features/about/components/SecurityPrivacyView.js +2 -1
  159. package/dist/features/about/components/ShippingPolicyView.js +2 -1
  160. package/dist/features/about/components/TrackOrderView.js +2 -1
  161. package/dist/features/about/components/UnauthorizedView.js +1 -1
  162. package/dist/features/about/index.d.ts +2 -0
  163. package/dist/features/about/index.js +5 -0
  164. package/dist/features/account/actions/address-actions.d.ts +26 -2
  165. package/dist/features/account/actions/address-actions.js +25 -1
  166. package/dist/features/account/components/BuyerShoppingGuideView.js +1 -1
  167. package/dist/features/account/components/NotificationPreferencesPanel.js +1 -1
  168. package/dist/features/account/components/UserOrdersView.js +17 -0
  169. package/dist/features/account/components/UserSidebar.js +1 -1
  170. package/dist/features/account/hooks/useNotifications.js +29 -0
  171. package/dist/features/admin/actions/admin-coupon-actions.js +36 -0
  172. package/dist/features/admin/components/AdminBeysView.js +2 -2
  173. package/dist/features/admin/components/AdminBlogEditorView.js +2 -2
  174. package/dist/features/admin/components/AdminBrandEditorView.js +32 -2
  175. package/dist/features/admin/components/AdminBundleEditorView.js +1 -1
  176. package/dist/features/admin/components/AdminCarouselEditorView.js +1 -1
  177. package/dist/features/admin/components/AdminCategoriesView.js +1 -1
  178. package/dist/features/admin/components/AdminCategoryEditorView.js +73 -17
  179. package/dist/features/admin/components/AdminContactEditorView.js +1 -1
  180. package/dist/features/admin/components/AdminCouponEditorView.js +26 -1
  181. package/dist/features/admin/components/AdminFaqEditorView.js +1 -1
  182. package/dist/features/admin/components/AdminFaqsView.js +2 -2
  183. package/dist/features/admin/components/AdminGatewayEventsView.d.ts +54 -0
  184. package/dist/features/admin/components/AdminGatewayEventsView.js +209 -0
  185. package/dist/features/admin/components/AdminGuideHubView.js +1 -1
  186. package/dist/features/admin/components/AdminMoneyCasesView.d.ts +60 -0
  187. package/dist/features/admin/components/AdminMoneyCasesView.js +287 -0
  188. package/dist/features/admin/components/AdminPartsView.js +2 -2
  189. package/dist/features/admin/components/AdminProductsView.js +75 -4
  190. package/dist/features/admin/components/AdminSidebar.js +2 -2
  191. package/dist/features/admin/components/AdminSiteSettingsView.js +65 -7
  192. package/dist/features/admin/components/AdminSublistingCategoriesView.js +2 -0
  193. package/dist/features/admin/components/AdminSupportTicketDetailView.js +1 -1
  194. package/dist/features/admin/components/AdminSupportTicketsView.js +2 -2
  195. package/dist/features/admin/components/AdminTesterChecklistView.js +2 -2
  196. package/dist/features/admin/components/AdminUsersView.js +72 -1
  197. package/dist/features/admin/components/AdminViewCards.d.ts +3 -1
  198. package/dist/features/admin/components/AdminViewCards.js +4 -4
  199. package/dist/features/admin/components/DataListingView.d.ts +28 -0
  200. package/dist/features/admin/components/DataListingView.js +175 -14
  201. package/dist/features/admin/components/DataTable.d.ts +12 -1
  202. package/dist/features/admin/components/DataTable.js +3 -3
  203. package/dist/features/admin/components/OwnerQuickActions.d.ts +1 -1
  204. package/dist/features/admin/components/OwnerQuickActions.js +60 -2
  205. package/dist/features/admin/components/RecordOwnerQuickActions.d.ts +1 -1
  206. package/dist/features/admin/components/RecordOwnerQuickActions.js +61 -14
  207. package/dist/features/admin/components/analytics/AdminStatCard.d.ts +35 -1
  208. package/dist/features/admin/components/analytics/AdminStatCard.js +77 -2
  209. package/dist/features/admin/components/index.d.ts +4 -0
  210. package/dist/features/admin/components/index.js +6 -0
  211. package/dist/features/admin/constants/filter-tabs.d.ts +156 -0
  212. package/dist/features/admin/constants/filter-tabs.js +106 -0
  213. package/dist/features/admin/repository/site-settings.repository.d.ts +22 -0
  214. package/dist/features/admin/repository/site-settings.repository.js +82 -1
  215. package/dist/features/admin/schemas/admin-editor-forms.d.ts +21 -0
  216. package/dist/features/admin/schemas/admin-editor-forms.js +44 -0
  217. package/dist/features/admin/schemas/firestore.js +5 -1
  218. package/dist/features/admin/schemas/site-settings-form.js +30 -1
  219. package/dist/features/auctions/actions/bid-actions.js +13 -1
  220. package/dist/features/auctions/components/AuctionBottomActions.js +2 -2
  221. package/dist/features/auctions/components/AuctionDetailPageView.js +3 -1
  222. package/dist/features/auctions/components/MarketplaceAuctionCard.d.ts +11 -0
  223. package/dist/features/auctions/components/MarketplaceAuctionCard.js +5 -3
  224. package/dist/features/auctions/components/PlaceBidFormClient.d.ts +8 -1
  225. package/dist/features/auctions/components/PlaceBidFormClient.js +2 -2
  226. package/dist/features/audit-log/schemas/firestore.d.ts +28 -0
  227. package/dist/features/audit-log/schemas/firestore.js +14 -0
  228. package/dist/features/auth/permissions/constants.d.ts +17 -1
  229. package/dist/features/auth/permissions/constants.js +18 -0
  230. package/dist/features/blog/components/BlogPostView.js +1 -1
  231. package/dist/features/catalogue/components/AdminCatalogueApprovalsView.js +1 -1
  232. package/dist/features/categories/api/[id]/description-template/route.js +107 -1
  233. package/dist/features/categories/components/BrandDetailPageView.js +2 -2
  234. package/dist/features/categories/components/BreadcrumbTrail.js +7 -1
  235. package/dist/features/categories/components/BundleDetailView.js +1 -1
  236. package/dist/features/categories/components/CategoryDetailPageView.js +2 -2
  237. package/dist/features/categories/components/CategoryForm.js +12 -1
  238. package/dist/features/categories/components/CategoryTemplatePicker.js +38 -5
  239. package/dist/features/categories/repository/market-price-index.repository.d.ts +123 -0
  240. package/dist/features/categories/repository/market-price-index.repository.js +105 -0
  241. package/dist/features/categories/repository/price-observation.repository.d.ts +166 -0
  242. package/dist/features/categories/repository/price-observation.repository.js +132 -0
  243. package/dist/features/events/components/EventSaleBanner.js +1 -1
  244. package/dist/features/events/components/EventStatusBadge.js +1 -1
  245. package/dist/features/faq/components/FAQAccordion.js +2 -1
  246. package/dist/features/faq/components/FAQCategorySidebar.js +2 -2
  247. package/dist/features/faq/components/FAQHelpfulButtons.js +4 -4
  248. package/dist/features/faq/components/RelatedFAQs.js +1 -1
  249. package/dist/features/filters/FilterFacetSection.js +1 -1
  250. package/dist/features/filters/SwitchFilter.js +1 -1
  251. package/dist/features/gateway-events/repository/gateway-events.repository.d.ts +117 -0
  252. package/dist/features/gateway-events/repository/gateway-events.repository.js +274 -0
  253. package/dist/features/gateway-events/schemas/firestore.d.ts +217 -0
  254. package/dist/features/gateway-events/schemas/firestore.js +125 -0
  255. package/dist/features/gateway-events/schemas/index.d.ts +81 -0
  256. package/dist/features/gateway-events/schemas/index.js +79 -0
  257. package/dist/features/grouped/components/GroupedListingDetailView.js +1 -1
  258. package/dist/features/homepage/components/AnnouncementBar.js +37 -1
  259. package/dist/features/homepage/components/AnnouncementBar.style.css +30 -0
  260. package/dist/features/homepage/components/BrandsSection.js +1 -1
  261. package/dist/features/homepage/components/CTABannerSection.js +1 -1
  262. package/dist/features/homepage/components/FeaturedBundlesSection.js +14 -24
  263. package/dist/features/homepage/components/HeroCarousel.js +2 -2
  264. package/dist/features/homepage/components/SocialPostCard.js +1 -1
  265. package/dist/features/inventory/components/AdminMoveLedgerView.d.ts +7 -0
  266. package/dist/features/inventory/components/AdminMoveLedgerView.js +157 -0
  267. package/dist/features/inventory/components/AdminStorageBoxesView.d.ts +11 -0
  268. package/dist/features/inventory/components/AdminStorageBoxesView.js +168 -0
  269. package/dist/features/inventory/components/ReceiveStationView.d.ts +39 -0
  270. package/dist/features/inventory/components/ReceiveStationView.js +413 -0
  271. package/dist/features/inventory/components/operator-message.d.ts +29 -0
  272. package/dist/features/inventory/components/operator-message.js +41 -0
  273. package/dist/features/inventory/index.d.ts +13 -0
  274. package/dist/features/inventory/index.js +28 -0
  275. package/dist/features/inventory/repository/inventory-movements.repository.d.ts +97 -0
  276. package/dist/features/inventory/repository/inventory-movements.repository.js +186 -0
  277. package/dist/features/inventory/repository/inventory-placements.repository.d.ts +179 -0
  278. package/dist/features/inventory/repository/inventory-placements.repository.js +345 -0
  279. package/dist/features/inventory/repository/storage-boxes.repository.d.ts +83 -0
  280. package/dist/features/inventory/repository/storage-boxes.repository.js +127 -0
  281. package/dist/features/inventory/schemas/firestore.d.ts +197 -0
  282. package/dist/features/inventory/schemas/firestore.js +159 -0
  283. package/dist/features/layout/AppLayoutShell.d.ts +12 -1
  284. package/dist/features/layout/AppLayoutShell.js +25 -12
  285. package/dist/features/layout/AutoBreadcrumbs.js +162 -3
  286. package/dist/features/layout/AutoBreadcrumbs.style.css +45 -0
  287. package/dist/features/layout/BottomNavbar.d.ts +1 -1
  288. package/dist/features/layout/BottomNavbar.js +2 -2
  289. package/dist/features/media/MediaAvatar.js +1 -1
  290. package/dist/features/media/MediaImage.d.ts +24 -4
  291. package/dist/features/media/MediaImage.js +44 -4
  292. package/dist/features/media/MediaLightbox.js +1 -1
  293. package/dist/features/media/modals/ImageCropModal.js +1 -1
  294. package/dist/features/media/modals/ImageEditor.js +1 -1
  295. package/dist/features/media/upload/MediaUploadField.js +91 -3
  296. package/dist/features/obligations/constants/policies.d.ts +92 -0
  297. package/dist/features/obligations/constants/policies.js +378 -0
  298. package/dist/features/obligations/repository/obligations.repository.d.ts +68 -0
  299. package/dist/features/obligations/repository/obligations.repository.js +158 -0
  300. package/dist/features/obligations/schemas/firestore.d.ts +160 -0
  301. package/dist/features/obligations/schemas/firestore.js +87 -0
  302. package/dist/features/orders/actions/order-actions.d.ts +43 -4
  303. package/dist/features/orders/actions/order-actions.js +60 -3
  304. package/dist/features/orders/actions/refund-actions.js +70 -10
  305. package/dist/features/orders/components/OrderCompletionPanel.d.ts +27 -0
  306. package/dist/features/orders/components/OrderCompletionPanel.js +192 -0
  307. package/dist/features/orders/components/OrdersList.js +2 -2
  308. package/dist/features/orders/components/RefundHistoryTable.js +3 -1
  309. package/dist/features/orders/components/index.d.ts +2 -0
  310. package/dist/features/orders/components/index.js +6 -0
  311. package/dist/features/orders/constants/transitions.d.ts +59 -0
  312. package/dist/features/orders/constants/transitions.js +104 -0
  313. package/dist/features/orders/repository/orders.repository.d.ts +109 -6
  314. package/dist/features/orders/repository/orders.repository.js +464 -21
  315. package/dist/features/orders/schemas/firestore.d.ts +270 -0
  316. package/dist/features/orders/schemas/firestore.js +24 -0
  317. package/dist/features/orders/schemas/index.d.ts +61 -0
  318. package/dist/features/orders/schemas/index.js +22 -0
  319. package/dist/features/orders/types/index.d.ts +79 -0
  320. package/dist/features/parts/components/PartsIndexPageView.js +8 -1
  321. package/dist/features/payment-cases/repository/payment-cases.repository.d.ts +170 -0
  322. package/dist/features/payment-cases/repository/payment-cases.repository.js +342 -0
  323. package/dist/features/payment-cases/schemas/firestore.d.ts +229 -0
  324. package/dist/features/payment-cases/schemas/firestore.js +105 -0
  325. package/dist/features/payment-cases/schemas/resolve-form.d.ts +97 -0
  326. package/dist/features/payment-cases/schemas/resolve-form.js +114 -0
  327. package/dist/features/payments/repository/payout.repository.d.ts +0 -1
  328. package/dist/features/payments/repository/payout.repository.js +0 -1
  329. package/dist/features/points/repository/points.repository.d.ts +122 -0
  330. package/dist/features/points/repository/points.repository.js +304 -1
  331. package/dist/features/points/schemas/adjust-form.d.ts +58 -0
  332. package/dist/features/points/schemas/adjust-form.js +63 -0
  333. package/dist/features/points/schemas/firestore.d.ts +108 -1
  334. package/dist/features/points/schemas/firestore.js +84 -0
  335. package/dist/features/pre-orders/components/MarketplacePreorderCard.js +3 -3
  336. package/dist/features/pre-orders/components/PreOrderBadge.js +1 -1
  337. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +1 -1
  338. package/dist/features/price-index/components/PriceIndexToolView.d.ts +23 -4
  339. package/dist/features/price-index/components/PriceIndexToolView.js +71 -6
  340. package/dist/features/price-index/market-stats.d.ts +82 -0
  341. package/dist/features/price-index/market-stats.js +230 -0
  342. package/dist/features/print/components/BoxLabelPrintView.d.ts +25 -0
  343. package/dist/features/print/components/BoxLabelPrintView.js +66 -0
  344. package/dist/features/print/components/LabelProfilePicker.d.ts +13 -0
  345. package/dist/features/print/components/LabelProfilePicker.js +38 -0
  346. package/dist/features/print/components/labels.d.ts +117 -0
  347. package/dist/features/print/components/labels.js +258 -0
  348. package/dist/features/print/components/labels.style.css +46 -0
  349. package/dist/features/print/index.d.ts +6 -0
  350. package/dist/features/print/index.js +16 -0
  351. package/dist/features/products/columns/productTableColumns.js +5 -4
  352. package/dist/features/products/components/MarketplaceBundleCard.js +2 -2
  353. package/dist/features/products/components/MarketplacePrizeDrawCard.js +6 -6
  354. package/dist/features/products/components/PrizeDrawCollage.js +1 -1
  355. package/dist/features/products/components/PrizeDrawItemsEditor.js +1 -1
  356. package/dist/features/products/components/PrizeRevealModal.js +2 -2
  357. package/dist/features/products/components/ProductDetailPageView.js +18 -4
  358. package/dist/features/products/components/ProductForm.js +34 -23
  359. package/dist/features/products/components/ProductGrid.js +86 -62
  360. package/dist/features/products/constants/card-badges.d.ts +97 -0
  361. package/dist/features/products/constants/card-badges.js +100 -0
  362. package/dist/features/products/repository/products.repository.js +34 -1
  363. package/dist/features/products/schemas/firestore.d.ts +46 -3
  364. package/dist/features/products/schemas/firestore.js +21 -0
  365. package/dist/features/promotions/components/PromotionsView.js +1 -1
  366. package/dist/features/promotions/repository/claimed-coupons.repository.d.ts +32 -0
  367. package/dist/features/promotions/repository/claimed-coupons.repository.js +58 -0
  368. package/dist/features/promotions/schemas/firestore.js +30 -3
  369. package/dist/features/promotions/schemas/index.d.ts +6 -6
  370. package/dist/features/protection-claims/repository/protection-claims.repository.d.ts +54 -0
  371. package/dist/features/protection-claims/repository/protection-claims.repository.js +174 -0
  372. package/dist/features/protection-claims/schemas/firestore.d.ts +168 -0
  373. package/dist/features/protection-claims/schemas/firestore.js +130 -0
  374. package/dist/features/reviews/actions/review-actions.js +3 -2
  375. package/dist/features/reviews/components/ReviewModal.js +1 -1
  376. package/dist/features/reviews/components/ReviewsList.js +1 -1
  377. package/dist/features/reviews/schemas/firestore.d.ts +20 -1
  378. package/dist/features/scams/constants/scam-types.d.ts +2 -0
  379. package/dist/features/scams/constants/scam-types.js +18 -0
  380. package/dist/features/scams/schemas/report-form.d.ts +3 -3
  381. package/dist/features/scams/schemas/report-form.js +26 -1
  382. package/dist/features/search/components/Search.js +9 -9
  383. package/dist/features/search/components/SearchResultsClient.js +18 -3
  384. package/dist/features/search/components/SearchResultsPageView.d.ts +1 -6
  385. package/dist/features/search/components/SearchResultsPageView.js +2 -2
  386. package/dist/features/seller/actions/offer-actions.js +16 -1
  387. package/dist/features/seller/actions/seller-actions.js +14 -3
  388. package/dist/features/seller/components/CategoryInlineSelect.js +75 -11
  389. package/dist/features/seller/components/PrintCenterView.d.ts +5 -0
  390. package/dist/features/seller/components/PrintCenterView.js +41 -30
  391. package/dist/features/seller/components/SellerOrdersView.js +1 -1
  392. package/dist/features/seller/components/SellerPayoutRequestView.js +16 -5
  393. package/dist/features/seller/components/SellerPayoutSettingsView.js +1 -1
  394. package/dist/features/seller/components/SellerProductShell.d.ts +16 -0
  395. package/dist/features/seller/components/SellerProductShell.js +123 -13
  396. package/dist/features/seller/components/SellerReviewsView.js +4 -2
  397. package/dist/features/seller/components/SellerSidebar.js +1 -1
  398. package/dist/features/seller/schemas/coupon-form.d.ts +26 -0
  399. package/dist/features/seller/schemas/coupon-form.js +27 -0
  400. package/dist/features/seller/schemas/product-form.d.ts +3 -0
  401. package/dist/features/seller/schemas/product-form.js +5 -0
  402. package/dist/features/shell/FormShell.js +2 -2
  403. package/dist/features/shell/QuickFormDrawer.js +14 -0
  404. package/dist/features/shell/SectionForm.d.ts +19 -0
  405. package/dist/features/shell/SectionForm.js +133 -9
  406. package/dist/features/shell/SectionForm.style.css +54 -0
  407. package/dist/features/shipments/components/AdminShipmentsView.js +16 -1
  408. package/dist/features/shipments/repository/shipment-items.repository.d.ts +9 -0
  409. package/dist/features/shipments/repository/shipment-items.repository.js +14 -0
  410. package/dist/features/site-settings/components/ActionPermissionsManager.js +1 -1
  411. package/dist/features/sticker-trace/components/StickerCommitPanel.js +1 -1
  412. package/dist/features/store-extensions/schemas/report-review-form.d.ts +8 -8
  413. package/dist/features/stores/components/StoreGuideHubView.js +1 -1
  414. package/dist/features/stores/components/StoreHeader.js +1 -1
  415. package/dist/features/support/schemas/firestore.d.ts +73 -2
  416. package/dist/features/support/schemas/firestore.js +59 -0
  417. package/dist/index.d.ts +16 -155
  418. package/dist/index.js +88 -341
  419. package/dist/next/ErrorBoundary.js +1 -1
  420. package/dist/next/routing/route-map.d.ts +24 -0
  421. package/dist/next/routing/route-map.js +40 -0
  422. package/dist/providers/payment-manual/index.d.ts +15 -1
  423. package/dist/providers/payment-manual/index.js +37 -0
  424. package/dist/providers/payment-phonepe/index.d.ts +14 -1
  425. package/dist/providers/payment-phonepe/index.js +36 -0
  426. package/dist/providers/payment-razorpay/index.d.ts +44 -1
  427. package/dist/providers/payment-razorpay/index.js +99 -0
  428. package/dist/providers/shipping-shiprocket/index.d.ts +18 -0
  429. package/dist/providers/shipping-shiprocket/index.js +18 -0
  430. package/dist/schemas/registry.d.ts +44 -11
  431. package/dist/server-entry.d.ts +2 -0
  432. package/dist/server-entry.js +27 -0
  433. package/dist/server.d.ts +42 -69
  434. package/dist/server.js +93 -69
  435. package/dist/styles.css +418 -149
  436. package/dist/tailwind-utilities.css +1 -1
  437. package/dist/tokens/themes/default-dark.js +15 -12
  438. package/dist/tokens/themes/default-light.js +14 -11
  439. package/dist/tokens/tokens.css +106 -23
  440. package/dist/ui/DataTable.style.css +4 -4
  441. package/dist/ui/columns/cell-renderers.d.ts +20 -0
  442. package/dist/ui/columns/cell-renderers.js +26 -1
  443. package/dist/ui/columns/index.d.ts +1 -1
  444. package/dist/ui/columns/index.js +4 -1
  445. package/dist/ui/components/Badge.style.css +1 -1
  446. package/dist/ui/components/Breadcrumb.js +19 -1
  447. package/dist/ui/components/BulkActionBar.style.css +4 -4
  448. package/dist/ui/components/Button.style.css +1 -1
  449. package/dist/ui/components/Checkbox.style.css +1 -1
  450. package/dist/ui/components/FallbackShell.js +1 -1
  451. package/dist/ui/components/Form.d.ts +14 -1
  452. package/dist/ui/components/Form.js +2 -2
  453. package/dist/ui/components/FormField.js +18 -4
  454. package/dist/ui/components/FormField.style.css +43 -3
  455. package/dist/ui/components/GatedPrice.style.css +1 -1
  456. package/dist/ui/components/IconButton.style.css +1 -1
  457. package/dist/ui/components/Input.js +22 -1
  458. package/dist/ui/components/Input.style.css +38 -22
  459. package/dist/ui/components/ListingFilterDrawer.js +1 -1
  460. package/dist/ui/components/ListingToolbar.js +1 -1
  461. package/dist/ui/components/PaginatedSelect.js +0 -0
  462. package/dist/ui/components/Radio.style.css +1 -1
  463. package/dist/ui/components/Repeater.d.ts +53 -0
  464. package/dist/ui/components/Repeater.js +7 -0
  465. package/dist/ui/components/RichTextEditor.d.ts +20 -1
  466. package/dist/ui/components/RichTextEditor.js +23 -2
  467. package/dist/ui/components/Select.style.css +7 -21
  468. package/dist/ui/components/Semantic.js +27 -3
  469. package/dist/ui/components/TagInput.style.css +4 -9
  470. package/dist/ui/components/Textarea.style.css +4 -18
  471. package/dist/ui/components/Toggle.style.css +1 -1
  472. package/dist/ui/components/Typography.d.ts +3 -3
  473. package/dist/ui/components/Typography.js +15 -15
  474. package/dist/ui/components/ViewToggle.style.css +4 -4
  475. package/dist/ui/forms/AddAnotherToggle.d.ts +16 -0
  476. package/dist/ui/forms/AddAnotherToggle.js +56 -0
  477. package/dist/ui/forms/ColorPickerField.js +15 -2
  478. package/dist/ui/forms/FieldCheckbox.js +15 -2
  479. package/dist/ui/forms/FieldInput.d.ts +22 -1
  480. package/dist/ui/forms/FieldInput.js +19 -5
  481. package/dist/ui/forms/FieldLabel.d.ts +35 -0
  482. package/dist/ui/forms/FieldLabel.js +70 -0
  483. package/dist/ui/forms/FieldSelect.d.ts +4 -1
  484. package/dist/ui/forms/FieldSelect.js +27 -5
  485. package/dist/ui/forms/FieldTextarea.d.ts +4 -1
  486. package/dist/ui/forms/FieldTextarea.js +22 -5
  487. package/dist/ui/forms/FormShell.d.ts +17 -1
  488. package/dist/ui/forms/FormShell.js +36 -2
  489. package/dist/ui/forms/FormShell.style.css +41 -33
  490. package/dist/ui/forms/index.d.ts +5 -1
  491. package/dist/ui/forms/index.js +2 -0
  492. package/dist/ui/icons/icon-registry.d.ts +1 -0
  493. package/dist/ui/icons/icon-registry.js +17 -1
  494. package/dist/utils/id-generators.d.ts +80 -0
  495. package/dist/utils/id-generators.js +93 -0
  496. package/dist/utils/search-txt-builders.d.ts +12 -0
  497. package/dist/utils/search-txt-builders.js +17 -0
  498. package/package.json +4 -2
  499. package/scripts/seed-cli.mjs +175 -6
  500. package/dist/features/loyalty/api/admin/loyalty/grant/route.d.ts +0 -12
  501. package/dist/features/loyalty/api/admin/loyalty/grant/route.js +0 -38
  502. package/dist/features/loyalty/api/balance/route.d.ts +0 -12
  503. package/dist/features/loyalty/api/balance/route.js +0 -41
  504. package/dist/features/loyalty/api/earn/route.d.ts +0 -12
  505. package/dist/features/loyalty/api/earn/route.js +0 -38
  506. package/dist/features/loyalty/api/history/route.d.ts +0 -12
  507. package/dist/features/loyalty/api/history/route.js +0 -58
  508. package/dist/features/loyalty/api/redeem/route.d.ts +0 -12
  509. package/dist/features/loyalty/api/redeem/route.js +0 -38
  510. package/dist/features/loyalty/columns/index.d.ts +0 -17
  511. package/dist/features/loyalty/columns/index.js +0 -40
  512. package/dist/features/loyalty/components/CoinsDisplay.d.ts +0 -12
  513. package/dist/features/loyalty/components/CoinsDisplay.js +0 -10
  514. package/dist/features/loyalty/components/index.d.ts +0 -1
  515. package/dist/features/loyalty/components/index.js +0 -1
  516. package/dist/features/loyalty/hooks/useLoyaltyBalance.d.ts +0 -4
  517. package/dist/features/loyalty/hooks/useLoyaltyBalance.js +0 -25
  518. package/dist/features/loyalty/index.d.ts +0 -6
  519. package/dist/features/loyalty/index.js +0 -6
  520. package/dist/features/loyalty/manifest.d.ts +0 -2
  521. package/dist/features/loyalty/manifest.js +0 -16
  522. package/dist/features/loyalty/messages/en.json +0 -19
  523. package/dist/features/loyalty/repository/loyalty.repository.d.ts +0 -8
  524. package/dist/features/loyalty/repository/loyalty.repository.js +0 -22
  525. package/dist/features/loyalty/schemas/index.d.ts +0 -85
  526. package/dist/features/loyalty/schemas/index.js +0 -40
  527. package/dist/features/loyalty/server.d.ts +0 -6
  528. package/dist/features/loyalty/server.js +0 -6
  529. package/dist/features/loyalty/types/index.d.ts +0 -31
  530. package/dist/features/loyalty/types/index.js +0 -1
  531. package/dist/features/loyalty/types/loyalty-config.d.ts +0 -7
  532. package/dist/features/loyalty/types/loyalty-config.js +0 -1
  533. package/dist/features/loyalty/types/loyalty-math.d.ts +0 -9
  534. package/dist/features/loyalty/types/loyalty-math.js +0 -27
  535. package/dist/features/products/components/ProductOwnerQuickActions.d.ts +0 -11
  536. package/dist/features/products/components/ProductOwnerQuickActions.js +0 -120
  537. package/dist/features/tester/seed-data/_happy-path.d.ts +0 -23
  538. package/dist/features/tester/seed-data/_happy-path.js +0 -710
  539. package/dist/features/tester/seed-data/_money-flows.d.ts +0 -23
  540. package/dist/features/tester/seed-data/_money-flows.js +0 -610
  541. package/dist/features/tester/seed-data/authored/_types.d.ts +0 -57
  542. package/dist/features/tester/seed-data/authored/_types.js +0 -35
  543. package/dist/features/tester/seed-data/authored/account-auth__profile-settings.d.ts +0 -2
  544. package/dist/features/tester/seed-data/authored/account-auth__profile-settings.js +0 -226
  545. package/dist/features/tester/seed-data/authored/account-auth__signup-login.d.ts +0 -2
  546. package/dist/features/tester/seed-data/authored/account-auth__signup-login.js +0 -329
  547. package/dist/features/tester/seed-data/authored/addresses__address-filters.d.ts +0 -2
  548. package/dist/features/tester/seed-data/authored/addresses__address-filters.js +0 -41
  549. package/dist/features/tester/seed-data/authored/addresses__postal-lookup.d.ts +0 -2
  550. package/dist/features/tester/seed-data/authored/addresses__postal-lookup.js +0 -76
  551. package/dist/features/tester/seed-data/authored/addresses__postal-validation.d.ts +0 -2
  552. package/dist/features/tester/seed-data/authored/addresses__postal-validation.js +0 -78
  553. package/dist/features/tester/seed-data/authored/addresses__state-picker.d.ts +0 -2
  554. package/dist/features/tester/seed-data/authored/addresses__state-picker.js +0 -59
  555. package/dist/features/tester/seed-data/authored/addresses__unban-request.d.ts +0 -2
  556. package/dist/features/tester/seed-data/authored/addresses__unban-request.js +0 -77
  557. package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.d.ts +0 -2
  558. package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.js +0 -151
  559. package/dist/features/tester/seed-data/authored/admin__bans-and-trust.d.ts +0 -2
  560. package/dist/features/tester/seed-data/authored/admin__bans-and-trust.js +0 -265
  561. package/dist/features/tester/seed-data/authored/admin__blog-faqs.d.ts +0 -2
  562. package/dist/features/tester/seed-data/authored/admin__blog-faqs.js +0 -131
  563. package/dist/features/tester/seed-data/authored/admin__bug-hunter-rewards.d.ts +0 -2
  564. package/dist/features/tester/seed-data/authored/admin__bug-hunter-rewards.js +0 -143
  565. package/dist/features/tester/seed-data/authored/admin__bulk-actions.d.ts +0 -2
  566. package/dist/features/tester/seed-data/authored/admin__bulk-actions.js +0 -207
  567. package/dist/features/tester/seed-data/authored/admin__bundles.d.ts +0 -2
  568. package/dist/features/tester/seed-data/authored/admin__bundles.js +0 -144
  569. package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.d.ts +0 -2
  570. package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.js +0 -265
  571. package/dist/features/tester/seed-data/authored/admin__catalog-listings.d.ts +0 -2
  572. package/dist/features/tester/seed-data/authored/admin__catalog-listings.js +0 -318
  573. package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.d.ts +0 -2
  574. package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.js +0 -177
  575. package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.d.ts +0 -2
  576. package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.js +0 -165
  577. package/dist/features/tester/seed-data/authored/admin__content-deletes.d.ts +0 -2
  578. package/dist/features/tester/seed-data/authored/admin__content-deletes.js +0 -267
  579. package/dist/features/tester/seed-data/authored/admin__content-marketing.d.ts +0 -2
  580. package/dist/features/tester/seed-data/authored/admin__content-marketing.js +0 -188
  581. package/dist/features/tester/seed-data/authored/admin__coupons.d.ts +0 -2
  582. package/dist/features/tester/seed-data/authored/admin__coupons.js +0 -215
  583. package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.d.ts +0 -2
  584. package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.js +0 -202
  585. package/dist/features/tester/seed-data/authored/admin__firebase-function-effects.d.ts +0 -2
  586. package/dist/features/tester/seed-data/authored/admin__firebase-function-effects.js +0 -249
  587. package/dist/features/tester/seed-data/authored/admin__media-watermark.d.ts +0 -2
  588. package/dist/features/tester/seed-data/authored/admin__media-watermark.js +0 -148
  589. package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.d.ts +0 -2
  590. package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.js +0 -350
  591. package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.d.ts +0 -2
  592. package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.js +0 -129
  593. package/dist/features/tester/seed-data/authored/admin__site-system.d.ts +0 -2
  594. package/dist/features/tester/seed-data/authored/admin__site-system.js +0 -586
  595. package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.d.ts +0 -2
  596. package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.js +0 -260
  597. package/dist/features/tester/seed-data/authored/admin__users-trust.d.ts +0 -2
  598. package/dist/features/tester/seed-data/authored/admin__users-trust.js +0 -569
  599. package/dist/features/tester/seed-data/authored/buying__bidding.d.ts +0 -2
  600. package/dist/features/tester/seed-data/authored/buying__bidding.js +0 -449
  601. package/dist/features/tester/seed-data/authored/buying__browsing-search.d.ts +0 -2
  602. package/dist/features/tester/seed-data/authored/buying__browsing-search.js +0 -684
  603. package/dist/features/tester/seed-data/authored/buying__buying-checkout.d.ts +0 -2
  604. package/dist/features/tester/seed-data/authored/buying__buying-checkout.js +0 -546
  605. package/dist/features/tester/seed-data/authored/buying__buying-coupons.d.ts +0 -2
  606. package/dist/features/tester/seed-data/authored/buying__buying-coupons.js +0 -379
  607. package/dist/features/tester/seed-data/authored/buying__cart.d.ts +0 -2
  608. package/dist/features/tester/seed-data/authored/buying__cart.js +0 -1264
  609. package/dist/features/tester/seed-data/authored/buying__image-tile-layout.d.ts +0 -2
  610. package/dist/features/tester/seed-data/authored/buying__image-tile-layout.js +0 -122
  611. package/dist/features/tester/seed-data/authored/buying__my-orders.d.ts +0 -2
  612. package/dist/features/tester/seed-data/authored/buying__my-orders.js +0 -279
  613. package/dist/features/tester/seed-data/authored/buying__offers.d.ts +0 -2
  614. package/dist/features/tester/seed-data/authored/buying__offers.js +0 -1127
  615. package/dist/features/tester/seed-data/authored/buying__order-detail-actions.d.ts +0 -2
  616. package/dist/features/tester/seed-data/authored/buying__order-detail-actions.js +0 -153
  617. package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.d.ts +0 -2
  618. package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.js +0 -252
  619. package/dist/features/tester/seed-data/authored/buying__product-detail.d.ts +0 -2
  620. package/dist/features/tester/seed-data/authored/buying__product-detail.js +0 -474
  621. package/dist/features/tester/seed-data/authored/buying__return-request.d.ts +0 -2
  622. package/dist/features/tester/seed-data/authored/buying__return-request.js +0 -165
  623. package/dist/features/tester/seed-data/authored/buying__reviews-pagination.d.ts +0 -2
  624. package/dist/features/tester/seed-data/authored/buying__reviews-pagination.js +0 -260
  625. package/dist/features/tester/seed-data/authored/buying__reviews.d.ts +0 -2
  626. package/dist/features/tester/seed-data/authored/buying__reviews.js +0 -128
  627. package/dist/features/tester/seed-data/authored/buying__spares-and-groups.d.ts +0 -2
  628. package/dist/features/tester/seed-data/authored/buying__spares-and-groups.js +0 -96
  629. package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.d.ts +0 -2
  630. package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.js +0 -283
  631. package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.d.ts +0 -2
  632. package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.js +0 -169
  633. package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.d.ts +0 -2
  634. package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.js +0 -105
  635. package/dist/features/tester/seed-data/authored/buying__wishlist-history.d.ts +0 -2
  636. package/dist/features/tester/seed-data/authored/buying__wishlist-history.js +0 -374
  637. package/dist/features/tester/seed-data/authored/community-support__messages.d.ts +0 -2
  638. package/dist/features/tester/seed-data/authored/community-support__messages.js +0 -200
  639. package/dist/features/tester/seed-data/authored/community-support__public-profile.d.ts +0 -2
  640. package/dist/features/tester/seed-data/authored/community-support__public-profile.js +0 -54
  641. package/dist/features/tester/seed-data/authored/community-support__support-tickets.d.ts +0 -2
  642. package/dist/features/tester/seed-data/authored/community-support__support-tickets.js +0 -76
  643. package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.d.ts +0 -4
  644. package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.js +0 -590
  645. package/dist/features/tester/seed-data/authored/content-discovery__blog.d.ts +0 -2
  646. package/dist/features/tester/seed-data/authored/content-discovery__blog.js +0 -110
  647. package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.d.ts +0 -2
  648. package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.js +0 -149
  649. package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.d.ts +0 -2
  650. package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.js +0 -145
  651. package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.d.ts +0 -2
  652. package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.js +0 -174
  653. package/dist/features/tester/seed-data/authored/content-discovery__coupons.d.ts +0 -2
  654. package/dist/features/tester/seed-data/authored/content-discovery__coupons.js +0 -169
  655. package/dist/features/tester/seed-data/authored/content-discovery__event-detail-subroutes.d.ts +0 -2
  656. package/dist/features/tester/seed-data/authored/content-discovery__event-detail-subroutes.js +0 -209
  657. package/dist/features/tester/seed-data/authored/content-discovery__event-participation.d.ts +0 -2
  658. package/dist/features/tester/seed-data/authored/content-discovery__event-participation.js +0 -207
  659. package/dist/features/tester/seed-data/authored/content-discovery__events.d.ts +0 -2
  660. package/dist/features/tester/seed-data/authored/content-discovery__events.js +0 -377
  661. package/dist/features/tester/seed-data/authored/content-discovery__faq-help.d.ts +0 -2
  662. package/dist/features/tester/seed-data/authored/content-discovery__faq-help.js +0 -87
  663. package/dist/features/tester/seed-data/authored/content-discovery__notifications.d.ts +0 -2
  664. package/dist/features/tester/seed-data/authored/content-discovery__notifications.js +0 -147
  665. package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.d.ts +0 -2
  666. package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.js +0 -209
  667. package/dist/features/tester/seed-data/authored/content-discovery__parts-database.d.ts +0 -2
  668. package/dist/features/tester/seed-data/authored/content-discovery__parts-database.js +0 -167
  669. package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.d.ts +0 -2
  670. package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.js +0 -73
  671. package/dist/features/tester/seed-data/authored/content-discovery__search.d.ts +0 -2
  672. package/dist/features/tester/seed-data/authored/content-discovery__search.js +0 -363
  673. package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.d.ts +0 -2
  674. package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.js +0 -340
  675. package/dist/features/tester/seed-data/authored/content-discovery__store-reviews-aggregate.d.ts +0 -2
  676. package/dist/features/tester/seed-data/authored/content-discovery__store-reviews-aggregate.js +0 -88
  677. package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.d.ts +0 -2
  678. package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.js +0 -78
  679. package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.d.ts +0 -2
  680. package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.js +0 -76
  681. package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.d.ts +0 -2
  682. package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.js +0 -62
  683. package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.d.ts +0 -2
  684. package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.js +0 -163
  685. package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.d.ts +0 -2
  686. package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.js +0 -61
  687. package/dist/features/tester/seed-data/authored/design-ux__action-bar-placement.d.ts +0 -2
  688. package/dist/features/tester/seed-data/authored/design-ux__action-bar-placement.js +0 -89
  689. package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.d.ts +0 -2
  690. package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.js +0 -95
  691. package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.d.ts +0 -2
  692. package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.js +0 -191
  693. package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.d.ts +0 -2
  694. package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.js +0 -158
  695. package/dist/features/tester/seed-data/authored/design-ux__feature-badge-picker.d.ts +0 -2
  696. package/dist/features/tester/seed-data/authored/design-ux__feature-badge-picker.js +0 -82
  697. package/dist/features/tester/seed-data/authored/design-ux__footer-theme.d.ts +0 -2
  698. package/dist/features/tester/seed-data/authored/design-ux__footer-theme.js +0 -106
  699. package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.d.ts +0 -2
  700. package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.js +0 -88
  701. package/dist/features/tester/seed-data/authored/design-ux__general-design.d.ts +0 -2
  702. package/dist/features/tester/seed-data/authored/design-ux__general-design.js +0 -204
  703. package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.d.ts +0 -2
  704. package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.js +0 -301
  705. package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.d.ts +0 -2
  706. package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.js +0 -90
  707. package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.d.ts +0 -2
  708. package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.js +0 -85
  709. package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.d.ts +0 -2
  710. package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.js +0 -407
  711. package/dist/features/tester/seed-data/authored/design-ux__nav-reachability.d.ts +0 -2
  712. package/dist/features/tester/seed-data/authored/design-ux__nav-reachability.js +0 -88
  713. package/dist/features/tester/seed-data/authored/design-ux__rich-text-readability.d.ts +0 -2
  714. package/dist/features/tester/seed-data/authored/design-ux__rich-text-readability.js +0 -84
  715. package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.d.ts +0 -2
  716. package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.js +0 -214
  717. package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.d.ts +0 -2
  718. package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.js +0 -275
  719. package/dist/features/tester/seed-data/authored/index.d.ts +0 -2
  720. package/dist/features/tester/seed-data/authored/index.js +0 -301
  721. package/dist/features/tester/seed-data/authored/page-wiring__data-loss.d.ts +0 -2
  722. package/dist/features/tester/seed-data/authored/page-wiring__data-loss.js +0 -125
  723. package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.d.ts +0 -2
  724. package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.js +0 -85
  725. package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.d.ts +0 -2
  726. package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.js +0 -92
  727. package/dist/features/tester/seed-data/authored/page-wiring__reachability.d.ts +0 -2
  728. package/dist/features/tester/seed-data/authored/page-wiring__reachability.js +0 -115
  729. package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.d.ts +0 -2
  730. package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.js +0 -137
  731. package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.d.ts +0 -2
  732. package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.js +0 -263
  733. package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.d.ts +0 -2
  734. package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.js +0 -229
  735. package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.d.ts +0 -2
  736. package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.js +0 -325
  737. package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.d.ts +0 -2
  738. package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.js +0 -126
  739. package/dist/features/tester/seed-data/authored/public-pages__newly-wired-browse-indexes.d.ts +0 -2
  740. package/dist/features/tester/seed-data/authored/public-pages__newly-wired-browse-indexes.js +0 -141
  741. package/dist/features/tester/seed-data/authored/public-pages__store-tabs.d.ts +0 -2
  742. package/dist/features/tester/seed-data/authored/public-pages__store-tabs.js +0 -115
  743. package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.d.ts +0 -2
  744. package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.js +0 -253
  745. package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.d.ts +0 -2
  746. package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.js +0 -93
  747. package/dist/features/tester/seed-data/authored/search-and-nav__header-search.d.ts +0 -3
  748. package/dist/features/tester/seed-data/authored/search-and-nav__header-search.js +0 -185
  749. package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.d.ts +0 -2
  750. package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.js +0 -82
  751. package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.d.ts +0 -2
  752. package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.js +0 -60
  753. package/dist/features/tester/seed-data/authored/selling__become-seller.d.ts +0 -2
  754. package/dist/features/tester/seed-data/authored/selling__become-seller.js +0 -117
  755. package/dist/features/tester/seed-data/authored/selling__digital-content-delivery.d.ts +0 -2
  756. package/dist/features/tester/seed-data/authored/selling__digital-content-delivery.js +0 -148
  757. package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.d.ts +0 -2
  758. package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.js +0 -108
  759. package/dist/features/tester/seed-data/authored/selling__listing-a-product.d.ts +0 -2
  760. package/dist/features/tester/seed-data/authored/selling__listing-a-product.js +0 -274
  761. package/dist/features/tester/seed-data/authored/selling__listing-edit-roundtrip.d.ts +0 -2
  762. package/dist/features/tester/seed-data/authored/selling__listing-edit-roundtrip.js +0 -145
  763. package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.d.ts +0 -2
  764. package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.js +0 -336
  765. package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.d.ts +0 -2
  766. package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.js +0 -136
  767. package/dist/features/tester/seed-data/authored/selling__media-limits.d.ts +0 -2
  768. package/dist/features/tester/seed-data/authored/selling__media-limits.js +0 -135
  769. package/dist/features/tester/seed-data/authored/selling__product-upload-details.d.ts +0 -2
  770. package/dist/features/tester/seed-data/authored/selling__product-upload-details.js +0 -155
  771. package/dist/features/tester/seed-data/authored/selling__quick-add-minimum-details.d.ts +0 -2
  772. package/dist/features/tester/seed-data/authored/selling__quick-add-minimum-details.js +0 -138
  773. package/dist/features/tester/seed-data/authored/selling__sectionised-forms.d.ts +0 -2
  774. package/dist/features/tester/seed-data/authored/selling__sectionised-forms.js +0 -191
  775. package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.d.ts +0 -2
  776. package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.js +0 -138
  777. package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.d.ts +0 -2
  778. package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.js +0 -106
  779. package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.d.ts +0 -2
  780. package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.js +0 -192
  781. package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.d.ts +0 -2
  782. package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.js +0 -109
  783. package/dist/features/tester/seed-data/authored/selling__seller-guide.d.ts +0 -2
  784. package/dist/features/tester/seed-data/authored/selling__seller-guide.js +0 -34
  785. package/dist/features/tester/seed-data/authored/selling__seller-listing-types.d.ts +0 -2
  786. package/dist/features/tester/seed-data/authored/selling__seller-listing-types.js +0 -348
  787. package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.d.ts +0 -2
  788. package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.js +0 -87
  789. package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.d.ts +0 -2
  790. package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.js +0 -90
  791. package/dist/features/tester/seed-data/authored/selling__seller-orders-at-scale.d.ts +0 -2
  792. package/dist/features/tester/seed-data/authored/selling__seller-orders-at-scale.js +0 -85
  793. package/dist/features/tester/seed-data/authored/selling__seller-orders.d.ts +0 -2
  794. package/dist/features/tester/seed-data/authored/selling__seller-orders.js +0 -213
  795. package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.d.ts +0 -2
  796. package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.js +0 -192
  797. package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.d.ts +0 -2
  798. package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.js +0 -77
  799. package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.d.ts +0 -2
  800. package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.js +0 -165
  801. package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.d.ts +0 -2
  802. package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.js +0 -116
  803. package/dist/features/tester/seed-data/authored/seo__canonical-and-host.d.ts +0 -2
  804. package/dist/features/tester/seed-data/authored/seo__canonical-and-host.js +0 -127
  805. package/dist/features/tester/seed-data/authored/seo__og-images.d.ts +0 -2
  806. package/dist/features/tester/seed-data/authored/seo__og-images.js +0 -107
  807. package/dist/features/tester/seed-data/authored/seo__page-metadata.d.ts +0 -2
  808. package/dist/features/tester/seed-data/authored/seo__page-metadata.js +0 -120
  809. package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.d.ts +0 -2
  810. package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.js +0 -105
  811. package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.d.ts +0 -2
  812. package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.js +0 -58
  813. package/dist/features/tester/seed-data/authored/tools__sticker-tracer.d.ts +0 -2
  814. package/dist/features/tester/seed-data/authored/tools__sticker-tracer.js +0 -284
  815. package/dist/features/tester/seed-data/index.d.ts +0 -2
  816. package/dist/features/tester/seed-data/index.js +0 -2
  817. package/dist/features/tester/seed-data/tester-checklist-seed-data.d.ts +0 -2
  818. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +0 -7601
  819. package/dist/features/tester/seed-data/tester-responses-seed-data.d.ts +0 -2
  820. package/dist/features/tester/seed-data/tester-responses-seed-data.js +0 -95
  821. package/dist/features/tester/seed-data/tester-window.d.ts +0 -25
  822. package/dist/features/tester/seed-data/tester-window.js +0 -66
  823. package/dist/seed/_helpers/brand-rows.d.ts +0 -35
  824. package/dist/seed/_helpers/brand-rows.js +0 -600
  825. package/dist/seed/_helpers/category-content-generated.d.ts +0 -24
  826. package/dist/seed/_helpers/category-content-generated.js +0 -1853
  827. package/dist/seed/_helpers/category-content.d.ts +0 -68
  828. package/dist/seed/_helpers/category-content.js +0 -731
  829. package/dist/seed/_helpers/category-forest.d.ts +0 -4
  830. package/dist/seed/_helpers/category-forest.js +0 -824
  831. package/dist/seed/_helpers/category-images-generated.d.ts +0 -57
  832. package/dist/seed/_helpers/category-images-generated.js +0 -618
  833. package/dist/seed/_helpers/category-models/chunk0.d.ts +0 -2
  834. package/dist/seed/_helpers/category-models/chunk0.js +0 -2648
  835. package/dist/seed/_helpers/category-models/chunk1.d.ts +0 -2
  836. package/dist/seed/_helpers/category-models/chunk1.js +0 -2318
  837. package/dist/seed/_helpers/category-models/chunk2.d.ts +0 -2
  838. package/dist/seed/_helpers/category-models/chunk2.js +0 -2560
  839. package/dist/seed/_helpers/category-models/chunk3.d.ts +0 -2
  840. package/dist/seed/_helpers/category-models/chunk3.js +0 -2196
  841. package/dist/seed/_helpers/category-models/chunk4.d.ts +0 -2
  842. package/dist/seed/_helpers/category-models/chunk4.js +0 -1732
  843. package/dist/seed/_helpers/category-models.d.ts +0 -12
  844. package/dist/seed/_helpers/category-models.js +0 -45
  845. package/dist/seed/_helpers/category-names.d.ts +0 -54
  846. package/dist/seed/_helpers/category-names.js +0 -118
  847. package/dist/seed/_helpers/category-parts-glossary-map.d.ts +0 -1
  848. package/dist/seed/_helpers/category-parts-glossary-map.js +0 -2499
  849. package/dist/seed/_helpers/category-parts.d.ts +0 -9
  850. package/dist/seed/_helpers/category-parts.js +0 -15022
  851. package/dist/seed/_helpers/category-tree.d.ts +0 -27
  852. package/dist/seed/_helpers/category-tree.js +0 -119
  853. package/dist/seed/_helpers/character-features.d.ts +0 -10
  854. package/dist/seed/_helpers/character-features.js +0 -120
  855. package/dist/seed/_helpers/final-sale-fixtures.d.ts +0 -35
  856. package/dist/seed/_helpers/final-sale-fixtures.js +0 -61
  857. package/dist/seed/_helpers/franchise-rows.d.ts +0 -43
  858. package/dist/seed/_helpers/franchise-rows.js +0 -189
  859. package/dist/seed/_helpers/media.d.ts +0 -67
  860. package/dist/seed/_helpers/media.js +0 -172
  861. package/dist/seed/_helpers/part-colours-generated.d.ts +0 -18
  862. package/dist/seed/_helpers/part-colours-generated.js +0 -273
  863. package/dist/seed/_helpers/product-search-txt.d.ts +0 -18
  864. package/dist/seed/_helpers/product-search-txt.js +0 -23
  865. package/dist/seed/_helpers/search-txt-wrappers.d.ts +0 -26
  866. package/dist/seed/_helpers/search-txt-wrappers.js +0 -58
  867. package/dist/seed/addresses-seed-data.d.ts +0 -2
  868. package/dist/seed/addresses-seed-data.js +0 -78
  869. package/dist/seed/authenticity-knowledge-seed-data.d.ts +0 -78
  870. package/dist/seed/authenticity-knowledge-seed-data.js +0 -10729
  871. package/dist/seed/bey-products-seed-data.d.ts +0 -18
  872. package/dist/seed/bey-products-seed-data.js +0 -18011
  873. package/dist/seed/beys/chunk0.d.ts +0 -17
  874. package/dist/seed/beys/chunk0.js +0 -36733
  875. package/dist/seed/beys/chunk1.d.ts +0 -17
  876. package/dist/seed/beys/chunk1.js +0 -35728
  877. package/dist/seed/beys/chunk2.d.ts +0 -17
  878. package/dist/seed/beys/chunk2.js +0 -35857
  879. package/dist/seed/beys/chunk3.d.ts +0 -17
  880. package/dist/seed/beys/chunk3.js +0 -34476
  881. package/dist/seed/beys-seed-data.d.ts +0 -18
  882. package/dist/seed/beys-seed-data.js +0 -11
  883. package/dist/seed/bids-seed-data.d.ts +0 -2
  884. package/dist/seed/bids-seed-data.js +0 -206
  885. package/dist/seed/blog-posts-seed-data.d.ts +0 -6
  886. package/dist/seed/blog-posts-seed-data.js +0 -442
  887. package/dist/seed/carousel-slides-seed-data.d.ts +0 -2
  888. package/dist/seed/carousel-slides-seed-data.js +0 -411
  889. package/dist/seed/carousels-seed-data.d.ts +0 -2
  890. package/dist/seed/carousels-seed-data.js +0 -36
  891. package/dist/seed/cart-seed-data.d.ts +0 -2
  892. package/dist/seed/cart-seed-data.js +0 -241
  893. package/dist/seed/catalogue-seed-data.d.ts +0 -2
  894. package/dist/seed/catalogue-seed-data.js +0 -112
  895. package/dist/seed/categories-seed-data.d.ts +0 -3
  896. package/dist/seed/categories-seed-data.js +0 -816
  897. package/dist/seed/claimed-coupons-seed-data.d.ts +0 -2
  898. package/dist/seed/claimed-coupons-seed-data.js +0 -85
  899. package/dist/seed/coupon-usage-seed-data.d.ts +0 -9
  900. package/dist/seed/coupon-usage-seed-data.js +0 -55
  901. package/dist/seed/coupons-seed-data.d.ts +0 -2
  902. package/dist/seed/coupons-seed-data.js +0 -226
  903. package/dist/seed/defaults/categories.d.ts +0 -2
  904. package/dist/seed/defaults/categories.js +0 -12
  905. package/dist/seed/defaults/faqs.d.ts +0 -2
  906. package/dist/seed/defaults/faqs.js +0 -40
  907. package/dist/seed/events-seed-data.d.ts +0 -7
  908. package/dist/seed/events-seed-data.js +0 -482
  909. package/dist/seed/factories/address.factory.d.ts +0 -21
  910. package/dist/seed/factories/address.factory.js +0 -44
  911. package/dist/seed/factories/bid.factory.d.ts +0 -15
  912. package/dist/seed/factories/bid.factory.js +0 -33
  913. package/dist/seed/factories/blog-post.factory.d.ts +0 -15
  914. package/dist/seed/factories/blog-post.factory.js +0 -22
  915. package/dist/seed/factories/carousel.factory.d.ts +0 -11
  916. package/dist/seed/factories/carousel.factory.js +0 -17
  917. package/dist/seed/factories/cart.factory.d.ts +0 -25
  918. package/dist/seed/factories/cart.factory.js +0 -35
  919. package/dist/seed/factories/category.factory.d.ts +0 -11
  920. package/dist/seed/factories/category.factory.js +0 -16
  921. package/dist/seed/factories/coupon.factory.d.ts +0 -21
  922. package/dist/seed/factories/coupon.factory.js +0 -43
  923. package/dist/seed/factories/faq.factory.d.ts +0 -10
  924. package/dist/seed/factories/faq.factory.js +0 -15
  925. package/dist/seed/factories/notification.factory.d.ts +0 -18
  926. package/dist/seed/factories/notification.factory.js +0 -39
  927. package/dist/seed/factories/order.factory.d.ts +0 -20
  928. package/dist/seed/factories/order.factory.js +0 -20
  929. package/dist/seed/factories/payout.factory.d.ts +0 -21
  930. package/dist/seed/factories/payout.factory.js +0 -38
  931. package/dist/seed/factories/product.factory.d.ts +0 -27
  932. package/dist/seed/factories/product.factory.js +0 -80
  933. package/dist/seed/factories/review.factory.d.ts +0 -14
  934. package/dist/seed/factories/review.factory.js +0 -52
  935. package/dist/seed/factories/session.factory.d.ts +0 -15
  936. package/dist/seed/factories/session.factory.js +0 -31
  937. package/dist/seed/factories/store.factory.d.ts +0 -23
  938. package/dist/seed/factories/store.factory.js +0 -47
  939. package/dist/seed/factories/user.factory.d.ts +0 -19
  940. package/dist/seed/factories/user.factory.js +0 -56
  941. package/dist/seed/faq-seed-data.d.ts +0 -18
  942. package/dist/seed/faq-seed-data.js +0 -1956
  943. package/dist/seed/firestore-indexes.d.ts +0 -12
  944. package/dist/seed/firestore-indexes.js +0 -31
  945. package/dist/seed/grouped-listings-seed-data.d.ts +0 -2
  946. package/dist/seed/grouped-listings-seed-data.js +0 -283
  947. package/dist/seed/history-seed-data.d.ts +0 -12
  948. package/dist/seed/history-seed-data.js +0 -70
  949. package/dist/seed/homepage-sections-seed-data.d.ts +0 -2
  950. package/dist/seed/homepage-sections-seed-data.js +0 -1034
  951. package/dist/seed/index.d.ts +0 -100
  952. package/dist/seed/index.js +0 -115
  953. package/dist/seed/lottery-entries-seed-data.d.ts +0 -2
  954. package/dist/seed/lottery-entries-seed-data.js +0 -108
  955. package/dist/seed/manifest.d.ts +0 -16
  956. package/dist/seed/manifest.js +0 -235
  957. package/dist/seed/media-assets-seed-data.d.ts +0 -22
  958. package/dist/seed/media-assets-seed-data.js +0 -5593
  959. package/dist/seed/model-composition-seed-data.d.ts +0 -15
  960. package/dist/seed/model-composition-seed-data.js +0 -9032
  961. package/dist/seed/notifications-seed-data.d.ts +0 -2
  962. package/dist/seed/notifications-seed-data.js +0 -606
  963. package/dist/seed/offers-seed-data.d.ts +0 -2
  964. package/dist/seed/offers-seed-data.js +0 -398
  965. package/dist/seed/orders-seed-data.d.ts +0 -2
  966. package/dist/seed/orders-seed-data.js +0 -845
  967. package/dist/seed/part-glossary/chunk0.d.ts +0 -9
  968. package/dist/seed/part-glossary/chunk0.js +0 -35448
  969. package/dist/seed/part-glossary/chunk1.d.ts +0 -9
  970. package/dist/seed/part-glossary/chunk1.js +0 -40494
  971. package/dist/seed/part-glossary/chunk2.d.ts +0 -9
  972. package/dist/seed/part-glossary/chunk2.js +0 -51242
  973. package/dist/seed/part-glossary/chunk3.d.ts +0 -9
  974. package/dist/seed/part-glossary/chunk3.js +0 -53337
  975. package/dist/seed/part-glossary/chunk4.d.ts +0 -9
  976. package/dist/seed/part-glossary/chunk4.js +0 -51454
  977. package/dist/seed/part-glossary-seed-data.d.ts +0 -15
  978. package/dist/seed/part-glossary-seed-data.js +0 -25
  979. package/dist/seed/payouts-seed-data.d.ts +0 -2
  980. package/dist/seed/payouts-seed-data.js +0 -302
  981. package/dist/seed/product-features-seed-data.d.ts +0 -3
  982. package/dist/seed/product-features-seed-data.js +0 -366
  983. package/dist/seed/products-art-seed-data.d.ts +0 -2
  984. package/dist/seed/products-art-seed-data.js +0 -289
  985. package/dist/seed/products-auctions-seed-data.d.ts +0 -2
  986. package/dist/seed/products-auctions-seed-data.js +0 -475
  987. package/dist/seed/products-beyblade-x-seed-data.d.ts +0 -2
  988. package/dist/seed/products-beyblade-x-seed-data.js +0 -476
  989. package/dist/seed/products-catalogue/chunk0.d.ts +0 -12
  990. package/dist/seed/products-catalogue/chunk0.js +0 -7262
  991. package/dist/seed/products-catalogue/chunk1.d.ts +0 -12
  992. package/dist/seed/products-catalogue/chunk1.js +0 -7290
  993. package/dist/seed/products-catalogue/chunk10.d.ts +0 -12
  994. package/dist/seed/products-catalogue/chunk10.js +0 -7290
  995. package/dist/seed/products-catalogue/chunk11.d.ts +0 -12
  996. package/dist/seed/products-catalogue/chunk11.js +0 -7005
  997. package/dist/seed/products-catalogue/chunk12.d.ts +0 -12
  998. package/dist/seed/products-catalogue/chunk12.js +0 -7002
  999. package/dist/seed/products-catalogue/chunk13.d.ts +0 -12
  1000. package/dist/seed/products-catalogue/chunk13.js +0 -7002
  1001. package/dist/seed/products-catalogue/chunk14.d.ts +0 -12
  1002. package/dist/seed/products-catalogue/chunk14.js +0 -7002
  1003. package/dist/seed/products-catalogue/chunk15.d.ts +0 -12
  1004. package/dist/seed/products-catalogue/chunk15.js +0 -7002
  1005. package/dist/seed/products-catalogue/chunk16.d.ts +0 -12
  1006. package/dist/seed/products-catalogue/chunk16.js +0 -7002
  1007. package/dist/seed/products-catalogue/chunk17.d.ts +0 -12
  1008. package/dist/seed/products-catalogue/chunk17.js +0 -7002
  1009. package/dist/seed/products-catalogue/chunk18.d.ts +0 -12
  1010. package/dist/seed/products-catalogue/chunk18.js +0 -4398
  1011. package/dist/seed/products-catalogue/chunk2.d.ts +0 -12
  1012. package/dist/seed/products-catalogue/chunk2.js +0 -7268
  1013. package/dist/seed/products-catalogue/chunk3.d.ts +0 -12
  1014. package/dist/seed/products-catalogue/chunk3.js +0 -7264
  1015. package/dist/seed/products-catalogue/chunk4.d.ts +0 -12
  1016. package/dist/seed/products-catalogue/chunk4.js +0 -7268
  1017. package/dist/seed/products-catalogue/chunk5.d.ts +0 -12
  1018. package/dist/seed/products-catalogue/chunk5.js +0 -7258
  1019. package/dist/seed/products-catalogue/chunk6.d.ts +0 -12
  1020. package/dist/seed/products-catalogue/chunk6.js +0 -7268
  1021. package/dist/seed/products-catalogue/chunk7.d.ts +0 -12
  1022. package/dist/seed/products-catalogue/chunk7.js +0 -7311
  1023. package/dist/seed/products-catalogue/chunk8.d.ts +0 -12
  1024. package/dist/seed/products-catalogue/chunk8.js +0 -7304
  1025. package/dist/seed/products-catalogue/chunk9.d.ts +0 -12
  1026. package/dist/seed/products-catalogue/chunk9.js +0 -7309
  1027. package/dist/seed/products-catalogue-seed-data.d.ts +0 -2
  1028. package/dist/seed/products-catalogue-seed-data.js +0 -60
  1029. package/dist/seed/products-classifieds-seed-data.d.ts +0 -7
  1030. package/dist/seed/products-classifieds-seed-data.js +0 -435
  1031. package/dist/seed/products-digital-codes-seed-data.d.ts +0 -7
  1032. package/dist/seed/products-digital-codes-seed-data.js +0 -395
  1033. package/dist/seed/products-live-items-seed-data.d.ts +0 -7
  1034. package/dist/seed/products-live-items-seed-data.js +0 -269
  1035. package/dist/seed/products-preorders-seed-data.d.ts +0 -2
  1036. package/dist/seed/products-preorders-seed-data.js +0 -360
  1037. package/dist/seed/products-prize-draws-seed-data.d.ts +0 -7
  1038. package/dist/seed/products-prize-draws-seed-data.js +0 -427
  1039. package/dist/seed/products-spares-seed-data.d.ts +0 -2
  1040. package/dist/seed/products-spares-seed-data.js +0 -368
  1041. package/dist/seed/products-standard-seed-data.d.ts +0 -2
  1042. package/dist/seed/products-standard-seed-data.js +0 -632
  1043. package/dist/seed/products-stickers-seed-data.d.ts +0 -2
  1044. package/dist/seed/products-stickers-seed-data.js +0 -319
  1045. package/dist/seed/reviews-seed-data.d.ts +0 -1
  1046. package/dist/seed/reviews-seed-data.js +0 -185
  1047. package/dist/seed/runner.d.ts +0 -2
  1048. package/dist/seed/runner.js +0 -125
  1049. package/dist/seed/scammers-seed-data.d.ts +0 -2
  1050. package/dist/seed/scammers-seed-data.js +0 -235
  1051. package/dist/seed/seed-market-config.d.ts +0 -48
  1052. package/dist/seed/seed-market-config.js +0 -199
  1053. package/dist/seed/seed-purpose.d.ts +0 -299
  1054. package/dist/seed/seed-purpose.js +0 -440
  1055. package/dist/seed/sessions-seed-data.d.ts +0 -3
  1056. package/dist/seed/sessions-seed-data.js +0 -116
  1057. package/dist/seed/shipments-seed-data.d.ts +0 -5
  1058. package/dist/seed/shipments-seed-data.js +0 -185
  1059. package/dist/seed/site-settings-seed-data.d.ts +0 -2
  1060. package/dist/seed/site-settings-seed-data.js +0 -1069
  1061. package/dist/seed/store-addresses-seed-data.d.ts +0 -18
  1062. package/dist/seed/store-addresses-seed-data.js +0 -71
  1063. package/dist/seed/store-extensions-seed-data.d.ts +0 -11
  1064. package/dist/seed/store-extensions-seed-data.js +0 -292
  1065. package/dist/seed/stores-seed-data.d.ts +0 -6
  1066. package/dist/seed/stores-seed-data.js +0 -242
  1067. package/dist/seed/support-tickets-seed-data.d.ts +0 -16
  1068. package/dist/seed/support-tickets-seed-data.js +0 -239
  1069. package/dist/seed/tax-codes-seed-data.d.ts +0 -34
  1070. package/dist/seed/tax-codes-seed-data.js +0 -100
  1071. package/dist/seed/test-data-ttl.d.ts +0 -29
  1072. package/dist/seed/test-data-ttl.js +0 -31
  1073. package/dist/seed/test-utils.d.ts +0 -49
  1074. package/dist/seed/test-utils.js +0 -110
  1075. package/dist/seed/types.d.ts +0 -89
  1076. package/dist/seed/types.js +0 -15
  1077. package/dist/seed/users-seed-data.d.ts +0 -2
  1078. package/dist/seed/users-seed-data.js +0 -597
  1079. package/dist/seed/wishlists-seed-data.d.ts +0 -12
  1080. package/dist/seed/wishlists-seed-data.js +0 -54
@@ -38,10 +38,5 @@ export interface SearchResultsPageViewProps {
38
38
  * invites a `?? []` that silently renders an empty rail.
39
39
  */
40
40
  renderAboveGroups?: () => React.ReactNode;
41
- /**
42
- * A short line under the heading — "results as of 10:51". Optional because
43
- * the server tier has no build time to report.
44
- */
45
- footnote?: string;
46
41
  }
47
- export declare function SearchResultsPageView({ result, renderSearchInput, renderAboveGroups, footnote, }: SearchResultsPageViewProps): React.JSX.Element;
42
+ export declare function SearchResultsPageView({ result, renderSearchInput, renderAboveGroups, }: SearchResultsPageViewProps): React.JSX.Element;
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { ROUTES } from "../../../next/routing/route-map.js";
3
3
  import { Section, Container, Stack, Row, Div, Heading, Text, Span, TextLink } from "../../../ui/index.js";
4
- export function SearchResultsPageView({ result, renderSearchInput, renderAboveGroups, footnote, }) {
4
+ export function SearchResultsPageView({ result, renderSearchInput, renderAboveGroups, }) {
5
5
  const { q, terms, groups, totalHits } = result;
6
6
  const hasQuery = q.trim().length > 0;
7
7
  /*
@@ -18,5 +18,5 @@ export function SearchResultsPageView({ result, renderSearchInput, renderAboveGr
18
18
  const normalisedAway = hasQuery && terms.length === 0;
19
19
  return (_jsx(Section, { padding: "page", children: _jsx(Container, { children: _jsxs(Stack, { gap: "loose", children: [_jsxs(Stack, { gap: "xs", children: [_jsx(Heading, { level: 1, children: hasQuery ? `Search: ${q}` : "Search" }), hasQuery && !normalisedAway && (_jsx(Text, { color: "muted", size: "sm", children: totalHits === 0
20
20
  ? "Nothing matched."
21
- : `${totalHits}${groups.some((g) => g.truncated) ? "+" : ""} result${totalHits === 1 ? "" : "s"} across ${groups.length} section${groups.length === 1 ? "" : "s"}.` }))] }), footnote && (_jsx(Text, { size: "xs", color: "muted", children: footnote })), renderSearchInput?.(), renderAboveGroups?.(), !hasQuery && (_jsx(Text, { color: "muted", children: "Search listings, categories, brands, stores, articles and help pages at once." })), normalisedAway && (_jsx(Text, { color: "muted", children: "That search had no searchable words in it. Try a product, part or category name." })), groups.map((group) => (_jsxs(Stack, { gap: "sm", children: [_jsxs(Row, { justify: "between", align: "center", wrap: true, gap: "sm", children: [_jsxs(Heading, { level: 2, size: "lg", children: [group.label, group.truncated && (_jsxs(Span, { size: "sm", color: "muted", children: [" ", "(", group.hits.length, "+)"] }))] }), _jsxs(TextLink, { href: group.moreHref, children: ["See all ", group.label.toLowerCase(), " \u2192"] })] }), _jsx(Stack, { gap: "xs", children: group.hits.map((hit) => (_jsxs(Div, { surface: "card", padding: "sm", rounded: "md", children: [_jsx(TextLink, { href: hit.href, children: hit.title }), hit.detail && (_jsx(Text, { size: "xs", color: "muted", children: hit.detail }))] }, `${group.key}-${hit.id}`))) })] }, group.key))), hasQuery && !normalisedAway && totalHits === 0 && (_jsxs(Stack, { gap: "xs", children: [_jsxs(Text, { color: "muted", children: ["No listings, categories, brands, stores, articles or help pages matched \u201C", q, "\u201D."] }), _jsx(TextLink, { href: ROUTES.PUBLIC.PRODUCTS, children: "Browse all listings \u2192" })] }))] }) }) }));
21
+ : `${totalHits}${groups.some((g) => g.truncated) ? "+" : ""} result${totalHits === 1 ? "" : "s"} across ${groups.length} section${groups.length === 1 ? "" : "s"}.` }))] }), renderSearchInput?.(), renderAboveGroups?.(), !hasQuery && (_jsx(Text, { color: "muted", children: "Search listings, categories, brands, stores, articles and help pages at once." })), normalisedAway && (_jsx(Text, { color: "muted", children: "That search had no searchable words in it. Try a product, part or category name." })), groups.map((group) => (_jsxs(Stack, { gap: "sm", children: [_jsxs(Row, { justify: "between", align: "center", wrap: true, gap: "sm", children: [_jsxs(Heading, { level: 2, size: "lg", children: [group.label, group.truncated && (_jsxs(Span, { size: "sm", color: "muted", children: [" ", "(", group.hits.length, "+)"] }))] }), _jsxs(TextLink, { href: group.moreHref, children: ["See all ", group.label.toLowerCase(), " \u2192"] })] }), _jsx(Stack, { gap: "xs", children: group.hits.map((hit) => (_jsx(Div, { surface: "card", rounded: "md", overflow: "hidden", children: _jsxs(TextLink, { href: hit.href, variant: "inherit", layout: "flex-col", gap: "xs", paddingX: "sm", paddingY: "sm", className: "w-full hover:bg-surface-hover", children: [_jsx(Text, { size: "sm", weight: "medium", children: hit.title }), hit.detail && (_jsx(Text, { size: "xs", color: "muted", children: hit.detail }))] }) }, `${group.key}-${hit.id}`))) })] }, group.key))), hasQuery && !normalisedAway && totalHits === 0 && (_jsxs(Stack, { gap: "xs", children: [_jsxs(Text, { color: "muted", children: ["No listings, categories, brands, stores, articles or help pages matched \u201C", q, "\u201D."] }), _jsx(TextLink, { href: ROUTES.PUBLIC.PRODUCTS, children: "Browse all listings \u2192" })] }))] }) }) }));
22
22
  }
@@ -336,7 +336,22 @@ export async function counterOfferByBuyer(userId, userEmail, input) {
336
336
  type: "offer_received",
337
337
  priority: "normal",
338
338
  title: "Buyer counter offer",
339
- message: `${offer.buyerName} countered with ₹${counterAmount} on "${offer.productTitle}".`,
339
+ /*
340
+ * 🛑 `offerPlain.buyerName`, NOT `offer.buyerName`.
341
+ *
342
+ * `buyerName` is in `OFFER_PII_FIELDS`, so the raw document holds
343
+ * `enc:v1:…` — and `sendNotification` BAKES this string into the
344
+ * notification document at write time. Reading the encrypted field here
345
+ * stamped ciphertext permanently into a seller's inbox on every buyer
346
+ * counter-offer, unfixable after the fact because the message is frozen
347
+ * at write.
348
+ *
349
+ * This is the same mechanism that previously put `enc:v1:…` into 383
350
+ * admin alerts (see `onOrderCreate`'s decrypt comment). The plaintext was
351
+ * already in scope 41 lines up — `offerPlain` at :431, used for the
352
+ * `createOffer` call at :439.
353
+ */
354
+ message: `${offerPlain.buyerName} countered with ₹${counterAmount} on "${offer.productTitle}".`,
340
355
  relatedId: newOffer.id,
341
356
  relatedType: "offer",
342
357
  });
@@ -28,7 +28,7 @@ import { couponsRepository } from "../../promotions/repository/coupons.repositor
28
28
  import { generateStoreSlug } from "../../stores/schemas/firestore.js";
29
29
  import { siteSettingsRepository } from "../../admin/repository/site-settings.repository.js";
30
30
  import { computePayoutDeduction } from "../../../_internal/shared/fees/calculator.js";
31
- import { ordersTaxableValue } from "../../../_internal/shared/checkout/order-math.js";
31
+ import { ordersTaxableValue, ordersShippingReimbursement, } from "../../../_internal/shared/checkout/order-math.js";
32
32
  import { getDefaultCurrency } from "../../../core/baseline-resolver.js";
33
33
  import { finalizeStagedMediaUrl, finalizeStagedMediaField, finalizeStagedMediaArray, } from "../../media/finalize.js";
34
34
  import { StoreStatusValues } from "../../stores/schemas/firestore.js";
@@ -238,7 +238,18 @@ async function computeSellerEarnings(sellerId) {
238
238
  */
239
239
  const grossAmount = ordersTaxableValue(eligibleOrders);
240
240
  const siteSettings = await siteSettingsRepository.getSingleton();
241
- const deduction = computePayoutDeduction(grossAmount, siteSettings.commissions);
241
+ /*
242
+ * D45 — postage the seller is owed back, added AFTER the fee bases by
243
+ * `computePayoutDeduction` so no commission or gateway percentage is charged
244
+ * on a cost being refunded. Shiprocket-booked parcels return 0 (we paid that
245
+ * courier), and the self-shipped branch pays only what an admin APPROVED.
246
+ *
247
+ * 🛑 Passed at ALL FOUR payout call sites or they disagree to the rupee, and
248
+ * a seller shown one figure and paid another is worse than either being wrong
249
+ * alone.
250
+ */
251
+ const shippingReimbursement = ordersShippingReimbursement(eligibleOrders);
252
+ const deduction = computePayoutDeduction(grossAmount, siteSettings.commissions, shippingReimbursement);
242
253
  return {
243
254
  eligibleOrders,
244
255
  grossAmount,
@@ -348,7 +359,7 @@ export async function bulkSellerOrder(userId, userRole, userDisplayName, userEma
348
359
  * scheduled job pay differently for the same orders. */
349
360
  const grossAmount = ordersTaxableValue(eligible);
350
361
  const bulkSiteSettings = await siteSettingsRepository.getSingleton();
351
- const bulkDeduction = computePayoutDeduction(grossAmount, bulkSiteSettings.commissions);
362
+ const bulkDeduction = computePayoutDeduction(grossAmount, bulkSiteSettings.commissions, ordersShippingReimbursement(eligible));
352
363
  const payoutDoc = await payoutRepository.createPayout({
353
364
  storeId: userId,
354
365
  sellerName: userDisplayName,
@@ -59,24 +59,56 @@ async function loadAdminCategoryOptions(query, page, leavesOnly) {
59
59
  const total = res.total ?? items.length;
60
60
  return { items, hasMore: page * 20 < total, nextPage: page + 1 };
61
61
  }
62
- // Seller: fetch all flat categories from the public unauthenticated endpoint,
63
- // filter client-side by query. Public endpoint returns { success, data: CategoryItem[] }.
64
- async function loadPublicCategoryOptions(query, _page, leavesOnly) {
62
+ const PUBLIC_CATEGORY_PAGE_SIZE = 20;
63
+ /**
64
+ * Seller: paginated + SERVER-side search via the public `/api/categories`.
65
+ *
66
+ * 🛑 THIS USED TO FETCH 200 ROWS AND FILTER THEM IN THE BROWSER, against a
67
+ * catalogue of **1,185 categories**. It also returned `hasMore: false`, so
68
+ * `PaginatedSelect` never asked for page 2 — meaning **985 categories were
69
+ * permanently unreachable by search**, and what the box searched was whatever
70
+ * arbitrary 200 the endpoint happened to return first. The query never left
71
+ * the browser.
72
+ *
73
+ * The server was always ready: `/api/categories` reads `q` (its own comment
74
+ * notes that pickers send only `page`/`pageSize`/`q`) and returns a `total`
75
+ * for a paged flat request. The admin loader above has done it this way all
76
+ * along — this is the same shape, pointed at the unauthenticated endpoint.
77
+ *
78
+ * 🛑 A failed response now THROWS instead of degrading to an empty list. The
79
+ * old `.catch(() => ({}))` plus `json.data ?? []` turned any non-OK response
80
+ * or shape change into "No results" — indistinguishable from a genuine empty
81
+ * search, and a strong suspect for the reported symptom where typing a single
82
+ * letter matched nothing. `PaginatedSelect` renders an error state with a
83
+ * retry; a silent empty list is the one outcome that teaches the user their
84
+ * category does not exist.
85
+ */
86
+ async function loadPublicCategoryOptions(query, page, leavesOnly) {
65
87
  const leafFilter = leafFilterFor(leavesOnly);
66
88
  const params = new URLSearchParams({
89
+ q: query.trim(),
90
+ page: String(page),
91
+ pageSize: String(PUBLIC_CATEGORY_PAGE_SIZE),
67
92
  flat: "true",
68
- pageSize: "200",
69
93
  ...(leafFilter ? { filters: leafFilter } : {}),
70
94
  });
71
- const res = await fetch(CATEGORY_ENDPOINTS.FILTERED(params.toString()), { credentials: "include" });
72
- const json = await res.json().catch(() => ({}));
73
- const all = (json.data ?? []).map((c) => ({
95
+ const res = await fetch(CATEGORY_ENDPOINTS.FILTERED(params.toString()), {
96
+ credentials: "include",
97
+ });
98
+ if (!res.ok) {
99
+ throw new Error(`Category lookup failed (${res.status})`);
100
+ }
101
+ const json = await res.json();
102
+ const items = (json.data ?? []).map((c) => ({
74
103
  value: String(c.id ?? ""),
75
104
  label: String(c.name ?? ""),
76
105
  }));
77
- const q = query.trim().toLowerCase();
78
- const items = q ? all.filter((c) => c.label.toLowerCase().includes(q)) : all;
79
- return { items, hasMore: false, nextPage: 2 };
106
+ const total = json.total ?? items.length;
107
+ return {
108
+ items,
109
+ hasMore: page * PUBLIC_CATEGORY_PAGE_SIZE < total,
110
+ nextPage: page + 1,
111
+ };
80
112
  }
81
113
  export function CategoryInlineSelect({ value, onChange, placeholder = "Search categories…", disabled, allowCreate = true, extraValues, onExtraValuesChange, maxAssignments = MAX_CATEGORY_ASSIGNMENTS, leavesOnly, }) {
82
114
  /*
@@ -86,6 +118,24 @@ export function CategoryInlineSelect({ value, onChange, placeholder = "Search ca
86
118
  * functions precisely to avoid it — binding the scope here would reintroduce
87
119
  * the loop if it were done inline.
88
120
  */
121
+ /*
122
+ * 🛑 SUSPECT COUPLING, left in place deliberately rather than changed on a
123
+ * guess. `allowCreate` decides WHICH ENDPOINT is queried — and it defaults
124
+ * to `true` with the docstring "sellers can create categories inline", so a
125
+ * seller's picker calls `/api/admin/categories`. If that endpoint refuses a
126
+ * non-admin, the picker's symptom is "No results", not an error.
127
+ *
128
+ * Permission to CREATE and permission to SEARCH are different questions, and
129
+ * conflating them is how a lookup silently empties for one role. The public
130
+ * endpoint now has server-side search and paging (below), so it could serve
131
+ * both — but admins may rely on the admin endpoint to see inactive or
132
+ * unpublished rows the public one filters out, and losing those from the
133
+ * picker would be a worse regression than the one being fixed.
134
+ *
135
+ * To settle it: open the network tab and type one character. A 403 means
136
+ * this coupling is the bug; rows returned while the box says "No results"
137
+ * means the response shape moved; `[]` returned means the `filters` clause.
138
+ */
89
139
  const base = allowCreate ? loadAdminCategoryOptions : loadPublicCategoryOptions;
90
140
  const loadOptions = React.useCallback((query, page) => base(query, page, leavesOnly), [base, leavesOnly]);
91
141
  const primary = (_jsx(PaginatedSelect, { value: value || null, onChange: (v) => onChange(v ?? ""), loadOptions: loadOptions, placeholder: placeholder, disabled: disabled, createLabel: "category", drawerTitle: "Create Category", renderCreateForm: allowCreate
@@ -98,5 +148,19 @@ export function CategoryInlineSelect({ value, onChange, placeholder = "Search ca
98
148
  const remaining = Math.max(0, maxAssignments - 1 - extras.length);
99
149
  return (_jsxs(Stack, { gap: "sm", children: [primary, _jsx(PaginatedSelect, { multiple: true, value: extras, onChange: (v) => onExtraValuesChange(Array.isArray(v) ? v : []), loadOptions: loadOptions, placeholder: remaining > 0
100
150
  ? `Also list under… (up to ${remaining} more)`
101
- : "No more categories can be added", disabled: disabled || remaining <= 0 }), _jsx(Text, { size: "xs", color: "muted", children: "Optional. Add a category from a DIFFERENT tree \u2014 a franchise, for example. Two categories from the same tree will be refused, because the broader one is already implied by the narrower." })] }));
151
+ : "No more categories can be added", disabled: disabled || remaining <= 0,
152
+ /*
153
+ * 🛑 The create affordance belongs here too, and its absence was a
154
+ * one-line omission rather than a decision. The primary picker above
155
+ * passes all three of these; this one passed none, so a seller could
156
+ * create a category for their FIRST assignment and not for any other.
157
+ *
158
+ * Nothing about a secondary assignment makes creating one less valid
159
+ * — and the helper text directly below actively tells the seller to
160
+ * "add a category from a DIFFERENT tree", which is precisely when the
161
+ * one they want is least likely to exist yet.
162
+ */
163
+ createLabel: "category", drawerTitle: "Create Category", renderCreateForm: allowCreate
164
+ ? ({ onCreated, onCancel }) => (_jsx(CategoryQuickCreateForm, { onSaved: (id, name) => onCreated({ value: id, label: name }), onCancel: onCancel }))
165
+ : undefined }), _jsx(Text, { size: "xs", color: "muted", children: "Optional. Add a category from a DIFFERENT tree \u2014 a franchise, for example. Two categories from the same tree will be refused, because the broader one is already implied by the narrower." })] }));
102
166
  }
@@ -17,6 +17,11 @@ interface PrintCenterProduct {
17
17
  stockCount?: number;
18
18
  physicalLocation?: PhysicalLocationParts;
19
19
  barcodeId?: string;
20
+ /**
21
+ * The storage box this product is placed in, from the placements registry.
22
+ * Preferred over `physicalLocation` on the label — see the render note.
23
+ */
24
+ boxCode?: string | null;
20
25
  }
21
26
  interface PrintCenterOrder {
22
27
  id: string;
@@ -1,37 +1,26 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import { normalizeError } from "../../../errors/normalize.js";
4
- import { useEffect, useRef, useState } from "react";
5
- import JsBarcode from "jsbarcode";
3
+ import { useMemo, useState } from "react";
6
4
  import { Heading, Text } from "../../../ui/components/Typography.js";
7
5
  import { Stack, Row } from "../../../ui/components/Layout.js";
8
6
  import { Button } from "../../../ui/components/Button.js";
9
7
  import { FieldCheckbox } from "../../../ui/forms/FieldCheckbox.js";
10
8
  import { formatPhysicalLocation, } from "../../../utils/physical-location.js";
11
- function ProductLabel({ product }) {
12
- const svgRef = useRef(null);
13
- useEffect(() => {
14
- if (svgRef.current && product.barcodeId) {
15
- try {
16
- JsBarcode(svgRef.current, product.barcodeId, {
17
- format: "CODE128",
18
- width: 2,
19
- height: 50,
20
- displayValue: true,
21
- fontSize: 12,
22
- margin: 8,
23
- });
24
- // JsBarcode throws on a value CODE128 cannot encode. The <svg> is left
25
- // empty and the label still prints its title and price — there is no
26
- // recovery beyond fixing the barcodeId on the product itself.
27
- }
28
- catch (_err) {
29
- void normalizeError(_err);
30
- }
31
- }
32
- }, [product.barcodeId]);
33
- return (_jsxs(Stack, { surface: "card", padding: "sm", rounded: "sm", gap: "xs", className: "break-inside-avoid text-center w-[200px]", children: [product.barcodeId ? (_jsx("svg", { ref: svgRef })) : (_jsx(Text, { size: "xs", color: "muted", children: "No barcode" })), _jsx(Text, { size: "xs", weight: "medium", truncate: 1, children: product.name }), _jsxs(Text, { size: "xs", color: "muted", children: ["\u20B9", product.price.toLocaleString("en-IN")] }), formatPhysicalLocation(product.physicalLocation) && (_jsx(Text, { size: "xs", color: "muted", children: formatPhysicalLocation(product.physicalLocation) }))] }));
34
- }
9
+ import { LabelPageStyle, LabelSheet, ProductLabel, PrintScaleWarning, } from "../../print/components/labels.js";
10
+ import { LabelProfilePicker } from "../../print/components/LabelProfilePicker.js";
11
+ import { LABEL_PROFILES, documentPageCss, labelPageCss, } from "../../../_internal/shared/features/print/label-profiles.js";
12
+ /*
13
+ * 🛑 THE LOCAL `ProductLabel` IS GONE. It was `w-[200px]`, rendered a barcode
14
+ * at `width: 2` (a 0.53 mm module — twice the density needed) with a fixed
15
+ * `margin: 8` quiet zone (4 modules against the 10 the symbology requires),
16
+ * and this view emitted no `@page` rule at all. So a thermal printer received
17
+ * the browser's default A4 with a 200-pixel card in the corner, and nothing
18
+ * errored.
19
+ *
20
+ * `features/print/components/labels.tsx` replaces it with mm geometry driven
21
+ * by the chosen profile. See that file's header for the two unit conversions,
22
+ * and `label-profiles.ts` for why the fit check refuses rather than scales.
23
+ */
35
24
  function PackingSlip({ order, brandName }) {
36
25
  return (_jsxs(Stack, { surface: "card", padding: "md", rounded: "sm", className: "break-inside-avoid mb-4 max-w-[480px]", children: [_jsxs(Row, { justify: "between", className: "mb-2", children: [_jsx(Heading, { level: 5, children: brandName }), _jsxs(Text, { size: "xs", color: "muted", children: ["#", order.id] })] }), _jsx(Text, { size: "xs", color: "muted", children: new Date(order.createdAt).toLocaleDateString("en-IN") }), order.buyerDisplayName && _jsx(Text, { size: "sm", weight: "medium", children: order.buyerDisplayName }), order.buyerCity && _jsx(Text, { size: "xs", color: "muted", children: order.buyerCity }), formatPhysicalLocation(order.physicalLocation) && (_jsxs(Text, { size: "xs", color: "muted", children: ["Staging: ", formatPhysicalLocation(order.physicalLocation)] })), _jsx(Stack, { border: "top", padding: "t-xs", className: "mt-3", children: order.items.map((item, i) => (_jsxs(Row, { justify: "between", padding: "y-2xs", className: "border-b last:border-b-0", children: [_jsxs(Stack, { gap: "xs", children: [_jsx(Text, { size: "xs", weight: "medium", children: item.productName }), item.barcodeId && _jsx(Text, { size: "xs", color: "muted", children: item.barcodeId })] }), _jsxs(Stack, { className: "text-right", children: [_jsxs(Text, { size: "xs", children: ["\u00D7", item.quantity] }), _jsxs(Text, { size: "xs", color: "muted", children: ["\u20B9", item.price.toLocaleString("en-IN")] })] })] }, i))) })] }));
37
26
  }
@@ -39,6 +28,16 @@ export function PrintCenterView({ store, brandName = "LetItRip", initialProducts
39
28
  const [tab, setTab] = useState("labels");
40
29
  const [selectedProducts, setSelectedProducts] = useState(new Set());
41
30
  const [selectedOrders, setSelectedOrders] = useState(new Set());
31
+ const [profileId, setProfileId] = useState("thermal-50x25");
32
+ const profile = LABEL_PROFILES[profileId];
33
+ const chosenProducts = useMemo(() => initialProducts.filter((p) => selectedProducts.has(p.id)), [initialProducts, selectedProducts]);
34
+ /*
35
+ * The LONGEST code in the selection, so the fit warning is about the worst
36
+ * label in the batch. Checking the first or the average would report "fits"
37
+ * about a job in which some labels do not — and the operator only finds out
38
+ * which ones after printing.
39
+ */
40
+ const longestCodeLength = useMemo(() => chosenProducts.reduce((n, p) => Math.max(n, (p.barcodeId ?? "").length), 0), [chosenProducts]);
42
41
  const toggleProduct = (id) => setSelectedProducts((prev) => {
43
42
  const next = new Set(prev);
44
43
  if (next.has(id))
@@ -56,9 +55,21 @@ export function PrintCenterView({ store, brandName = "LetItRip", initialProducts
56
55
  return next;
57
56
  });
58
57
  const printSelected = () => window.print();
59
- return (_jsxs(Stack, { gap: "md", padding: "md", children: [_jsx("style", { children: `@media print { .no-print { display: none !important; } }` }), _jsxs(Stack, { className: "no-print", children: [_jsxs(Heading, { level: 3, children: ["Print Center", store ? ` — ${store.storeName}` : ""] }), _jsxs(Row, { gap: "xs", className: "mt-3", children: [_jsx(Button, { onClick: () => setTab("labels"), variant: tab === "labels" ? "primary" : "secondary", size: "sm", children: "Product Labels" }), _jsx(Button, { onClick: () => setTab("slips"), variant: tab === "slips" ? "primary" : "secondary", size: "sm", children: "Packing Slips" })] })] }), tab === "labels" && (_jsxs(_Fragment, { children: [_jsx(Stack, { className: "no-print", children: _jsxs(Stack, { gap: "sm", children: [initialProducts.length === 0 ? (_jsx(Text, { color: "muted", children: "No products available." })) : (initialProducts.map((p) => (_jsx(FieldCheckbox, { name: `product-${p.id}`, label: p.name, checked: selectedProducts.has(p.id), onChange: () => toggleProduct(p.id) }, p.id)))), _jsxs(Button, { onClick: printSelected, disabled: selectedProducts.size === 0, children: ["Print Selected (", selectedProducts.size, ")"] })] }) }), _jsx(Row, { wrap: true, gap: "sm", className: "mt-4", children: initialProducts
60
- .filter((p) => selectedProducts.has(p.id))
61
- .map((p) => (_jsx(ProductLabel, { product: p }, p.id))) })] })), tab === "slips" && (_jsxs(_Fragment, { children: [_jsx(Stack, { className: "no-print", children: _jsxs(Stack, { gap: "sm", children: [initialOrders.length === 0 ? (_jsx(Text, { color: "muted", children: "No orders available." })) : (initialOrders.map((o) => (_jsx(FieldCheckbox, { name: `order-${o.id}`, label: `#${o.id}${o.buyerDisplayName ? ` — ${o.buyerDisplayName}` : ""}`, checked: selectedOrders.has(o.id), onChange: () => toggleOrder(o.id) }, o.id)))), _jsxs(Button, { onClick: printSelected, disabled: selectedOrders.size === 0, children: ["Print Selected (", selectedOrders.size, ")"] })] }) }), _jsx(Stack, { gap: "sm", children: initialOrders
58
+ return (_jsxs(Stack, { gap: "md", padding: "md", children: [_jsx(LabelPageStyle, { css: tab === "labels" ? labelPageCss(profile) : documentPageCss() }), _jsxs(Stack, { className: "no-print", children: [_jsxs(Heading, { level: 3, children: ["Print Center", store ? ` — ${store.storeName}` : ""] }), _jsxs(Row, { gap: "xs", className: "mt-3", children: [_jsx(Button, { onClick: () => setTab("labels"), variant: tab === "labels" ? "primary" : "secondary", size: "sm", children: "Product Labels" }), _jsx(Button, { onClick: () => setTab("slips"), variant: tab === "slips" ? "primary" : "secondary", size: "sm", children: "Packing Slips" })] })] }), tab === "labels" && (_jsxs(_Fragment, { children: [_jsxs(Stack, { className: "no-print", gap: "sm", children: [_jsx(LabelProfilePicker, { value: profileId, onChange: setProfileId, longestCodeLength: longestCodeLength }), _jsx(PrintScaleWarning, {}), _jsxs(Stack, { gap: "sm", children: [initialProducts.length === 0 ? (_jsx(Text, { color: "muted", children: "No products available." })) : (initialProducts.map((p) => (_jsx(FieldCheckbox, { name: `product-${p.id}`, label: p.name, checked: selectedProducts.has(p.id), onChange: () => toggleProduct(p.id) }, p.id)))), _jsxs(Button, { onClick: printSelected, disabled: selectedProducts.size === 0, children: ["Print Selected (", selectedProducts.size, ")"] })] })] }), _jsx(LabelSheet, { profile: profile, children: chosenProducts.map((p) => (_jsx(ProductLabel, { profile: profile, product: {
59
+ barcodeId: p.barcodeId,
60
+ name: p.name,
61
+ price: p.price,
62
+ /*
63
+ * 🛑 The BOX CODE, falling back to the legacy free-text
64
+ * location. `boxCode` comes from the placements registry, so
65
+ * it is one of a known set and groups correctly;
66
+ * `physicalLocation` was three uncontrolled inputs where
67
+ * "shelf 3", "Shelf-3" and "AC60 3" all meant one place and
68
+ * no list could group them. The fallback keeps old products
69
+ * printing something until that field is retired.
70
+ */
71
+ boxCode: p.boxCode ?? formatPhysicalLocation(p.physicalLocation) ?? null,
72
+ } }, p.id))) })] })), tab === "slips" && (_jsxs(_Fragment, { children: [_jsx(Stack, { className: "no-print", children: _jsxs(Stack, { gap: "sm", children: [initialOrders.length === 0 ? (_jsx(Text, { color: "muted", children: "No orders available." })) : (initialOrders.map((o) => (_jsx(FieldCheckbox, { name: `order-${o.id}`, label: `#${o.id}${o.buyerDisplayName ? ` — ${o.buyerDisplayName}` : ""}`, checked: selectedOrders.has(o.id), onChange: () => toggleOrder(o.id) }, o.id)))), _jsxs(Button, { onClick: printSelected, disabled: selectedOrders.size === 0, children: ["Print Selected (", selectedOrders.size, ")"] })] }) }), _jsx(Stack, { gap: "sm", children: initialOrders
62
73
  .filter((o) => selectedOrders.has(o.id))
63
74
  .map((o) => (_jsx(PackingSlip, { order: o, brandName: brandName }, o.id))) })] }))] }));
64
75
  }
@@ -249,7 +249,7 @@ export function SellerOrderDetailPanel({ orderId, apiBase, onClose, }) {
249
249
  const addrLine = typeof rawAddr === "string" && rawAddr.trim()
250
250
  ? rawAddr.trim()
251
251
  : [addr.addressLine1, addr.city, addr.state, addr.pincode].filter(Boolean).join(", ");
252
- return (_jsxs(_Fragment, { children: [loading && (_jsx(Row, { align: "center", justify: "center", padding: "y-4xl", children: _jsx(Div, { className: "h-6 w-6 animate-spin border-2 border-[var(--appkit-color-primary)] border-t-transparent", rounded: "full" }) })), fetchError && (_jsx(Div, { textSize: "sm", className: "mx-4 mt-4 border border-error/20", color: "error", surface: "danger-surface", padding: "inline", rounded: "lg", children: fetchError })), order && !loading && (_jsxs(Stack, { gap: "none", children: [_jsxs(Stack, { className: `flex-1 ${__O.yAuto}`, gap: "5", padding: "md", children: [_jsxs(Row, { align: "center", justify: "between", children: [_jsx(Badge, { variant: STATUS_BADGE_VARIANT[order.status ?? ""] ?? "default", children: order.status ?? "Unknown" }), _jsx(Text, { size: "sm", className: "text-[var(--appkit-color-text-secondary)]", children: toRelativeDate(order.createdAt) })] }), (order.items ?? []).length > 0 && (_jsxs(Div, { children: [_jsx(Text, { size: "sm", className: "text-[var(--appkit-color-text-primary)] mb-2", weight: "semibold", children: "Items" }), _jsx(Div, { className: "divide-y divide-[var(--appkit-color-border)] divide-[var(--appkit-color-border)] border border-[var(--appkit-color-border)]", rounded: "lg", children: (order.items ?? []).map((item, i) => (_jsxs(Row, { paddingY: "y-xs-tall", padding: "x-sm", align: "center", justify: "between", gap: "3", children: [_jsxs(Row, { align: "center", gap: "sm", className: "min-w-0", children: [_jsx(Div, { className: "h-10 w-10 shrink-0", rounded: "md", overflow: "hidden", children: _jsx(MediaImage, { src: item.image, alt: item.title ?? "Order item", size: "thumbnail" }) }), _jsxs(Div, { className: "min-w-0", children: [_jsx(Text, { size: "sm", className: "truncate", weight: "medium", children: item.productTitle ?? item.title ?? item.productId ?? "Item" }), _jsxs(Text, { size: "xs", className: "text-[var(--appkit-color-text-secondary)]", children: ["Qty: ", item.quantity ?? 1] })] })] }), _jsx(Text, { size: "sm", className: "shrink-0", weight: "medium", children: toCurrency(item.totalPrice ?? item.unitPrice ?? item.price ?? 0) })] }, i))) })] })), _jsx(OrderAddonBadges, { order: order, variant: "detail" }), order.giftWrapAddon && (_jsxs(Div, { className: "border border-[var(--appkit-color-primary-200)] dark:border-[var(--appkit-color-primary-800)]", surface: "subtle", padding: "inline", rounded: "lg", children: [_jsx(Text, { size: "sm", weight: "semibold", children: "\uD83C\uDF81 Gift wrap requested" }), order.giftWrapMessage && (_jsxs(Text, { size: "sm", className: "mt-1 text-[var(--appkit-color-text-secondary)]", children: ["\u201C", order.giftWrapMessage, "\u201D"] }))] })), _jsxs(Row, { surface: "muted", padding: "inline", align: "center", justify: "between", rounded: "lg", children: [_jsx(Text, { size: "sm", weight: "semibold", children: "Total" }), _jsx(Text, { size: "sm", className: "text-[var(--appkit-color-primary)]", weight: "bold", children: toCurrency(order.totalAmount ?? order.totalPrice ?? 0) })] }), addrLine && (_jsxs(Div, { children: [_jsx(Text, { size: "sm", className: "mb-1", weight: "semibold", children: "Shipping address" }), _jsx(Text, { size: "sm", className: "text-[var(--appkit-color-text-secondary)]", children: [String(addr.fullName ?? ""), addrLine].filter(Boolean).join(" · ") })] })), order.paymentMethod && (_jsxs(Div, { children: [_jsxs(Row, { align: "center", justify: "between", className: "mb-1", gap: "3", children: [_jsx(Text, { size: "sm", weight: "semibold", children: "Payment" }), isManualPaymentMethod(order.paymentMethod) && (_jsx(Badge, { variant: sellerPaymentBadge(order).variant, children: sellerPaymentBadge(order).label }))] }), _jsx(Text, { size: "sm", className: "text-[var(--appkit-color-text-secondary)]", transform: "capitalize", children: order.paymentMethod }), isManualPaymentMethod(order.paymentMethod) && order.paymentTransactionId && (_jsxs(Text, { size: "xs", color: "muted", className: "mt-1", children: ["UTR: ", order.paymentTransactionId] }))] })), order.emiEnabled && (_jsxs(Div, { className: "border-t border-[var(--appkit-color-border)]", padding: "t-md", children: [_jsxs(Row, { align: "center", justify: "between", className: "mb-2", children: [_jsxs(Text, { size: "sm", weight: "semibold", children: ["EMI plan ", order.emiTenureMonths ? `· ${order.emiTenureMonths} months` : ""] }), _jsx(Badge, { variant: order.emiComplete ? "success" : "warning", children: order.emiComplete ? "Fully paid" : "In progress" })] }), _jsxs(Row, { align: "center", justify: "between", className: "mb-2", children: [_jsx(Text, { size: "xs", color: "muted", children: "Token collected" }), _jsx(Text, { size: "xs", weight: "medium", children: toCurrency(order.emiTokenAmount ?? 0) })] }), _jsxs(Row, { align: "center", justify: "between", className: "mb-3", children: [_jsx(Text, { size: "xs", color: "muted", children: "Remaining balance" }), _jsx(Text, { size: "xs", weight: "medium", children: toCurrency(order.emiRemainingBalance ?? 0) })] }), _jsx(Div, { className: "divide-y divide-[var(--appkit-color-border)] border border-[var(--appkit-color-border)]", rounded: "lg", children: (order.emiInstallments ?? []).map((inst) => (_jsxs(Row, { paddingY: "y-xs-tall", padding: "x-sm", align: "center", justify: "between", gap: "3", children: [_jsxs(Div, { className: "min-w-0", children: [_jsxs(Text, { size: "sm", weight: "medium", children: ["Installment ", inst.index, " \u00B7 ", toCurrency(inst.amount)] }), _jsx(Text, { size: "xs", color: "muted", children: inst.status === "paid" && inst.paidAt
252
+ return (_jsxs(_Fragment, { children: [loading && (_jsx(Row, { align: "center", justify: "center", padding: "y-4xl", children: _jsx(Div, { className: "h-6 w-6 animate-spin border-2 border-[var(--appkit-color-primary)] border-t-transparent", rounded: "full" }) })), fetchError && (_jsx(Div, { textSize: "sm", className: "mx-4 mt-4 border border-error/20", color: "error", surface: "danger-surface", padding: "inline", rounded: "lg", children: fetchError })), order && !loading && (_jsxs(Stack, { gap: "none", children: [_jsxs(Stack, { className: `flex-1 ${__O.yAuto}`, gap: "5", padding: "md", children: [_jsxs(Row, { align: "center", justify: "between", children: [_jsx(Badge, { variant: STATUS_BADGE_VARIANT[order.status ?? ""] ?? "default", children: order.status ?? "Unknown" }), _jsx(Text, { size: "sm", className: "text-[var(--appkit-color-text-muted)]", children: toRelativeDate(order.createdAt) })] }), (order.items ?? []).length > 0 && (_jsxs(Div, { children: [_jsx(Text, { size: "sm", className: "text-[var(--appkit-color-text)] mb-2", weight: "semibold", children: "Items" }), _jsx(Div, { className: "divide-y divide-[var(--appkit-color-border)] divide-[var(--appkit-color-border)] border border-[var(--appkit-color-border)]", rounded: "lg", children: (order.items ?? []).map((item, i) => (_jsxs(Row, { paddingY: "y-xs-tall", padding: "x-sm", align: "center", justify: "between", gap: "3", children: [_jsxs(Row, { align: "center", gap: "sm", className: "min-w-0", children: [_jsx(Div, { className: "h-10 w-10 shrink-0", rounded: "md", overflow: "hidden", children: _jsx(MediaImage, { src: item.image, alt: item.title ?? "Order item", size: "thumbnail" }) }), _jsxs(Div, { className: "min-w-0", children: [_jsx(Text, { size: "sm", className: "truncate", weight: "medium", children: item.productTitle ?? item.title ?? item.productId ?? "Item" }), _jsxs(Text, { size: "xs", className: "text-[var(--appkit-color-text-muted)]", children: ["Qty: ", item.quantity ?? 1] })] })] }), _jsx(Text, { size: "sm", className: "shrink-0", weight: "medium", children: toCurrency(item.totalPrice ?? item.unitPrice ?? item.price ?? 0) })] }, i))) })] })), _jsx(OrderAddonBadges, { order: order, variant: "detail" }), order.giftWrapAddon && (_jsxs(Div, { className: "border border-[var(--appkit-color-primary-200)] dark:border-[var(--appkit-color-primary-800)]", surface: "subtle", padding: "inline", rounded: "lg", children: [_jsx(Text, { size: "sm", weight: "semibold", children: "\uD83C\uDF81 Gift wrap requested" }), order.giftWrapMessage && (_jsxs(Text, { size: "sm", className: "mt-1 text-[var(--appkit-color-text-muted)]", children: ["\u201C", order.giftWrapMessage, "\u201D"] }))] })), _jsxs(Row, { surface: "muted", padding: "inline", align: "center", justify: "between", rounded: "lg", children: [_jsx(Text, { size: "sm", weight: "semibold", children: "Total" }), _jsx(Text, { size: "sm", className: "text-[var(--appkit-color-primary)]", weight: "bold", children: toCurrency(order.totalAmount ?? order.totalPrice ?? 0) })] }), addrLine && (_jsxs(Div, { children: [_jsx(Text, { size: "sm", className: "mb-1", weight: "semibold", children: "Shipping address" }), _jsx(Text, { size: "sm", className: "text-[var(--appkit-color-text-muted)]", children: [String(addr.fullName ?? ""), addrLine].filter(Boolean).join(" · ") })] })), order.paymentMethod && (_jsxs(Div, { children: [_jsxs(Row, { align: "center", justify: "between", className: "mb-1", gap: "3", children: [_jsx(Text, { size: "sm", weight: "semibold", children: "Payment" }), isManualPaymentMethod(order.paymentMethod) && (_jsx(Badge, { variant: sellerPaymentBadge(order).variant, children: sellerPaymentBadge(order).label }))] }), _jsx(Text, { size: "sm", className: "text-[var(--appkit-color-text-muted)]", transform: "capitalize", children: order.paymentMethod }), isManualPaymentMethod(order.paymentMethod) && order.paymentTransactionId && (_jsxs(Text, { size: "xs", color: "muted", className: "mt-1", children: ["UTR: ", order.paymentTransactionId] }))] })), order.emiEnabled && (_jsxs(Div, { className: "border-t border-[var(--appkit-color-border)]", padding: "t-md", children: [_jsxs(Row, { align: "center", justify: "between", className: "mb-2", children: [_jsxs(Text, { size: "sm", weight: "semibold", children: ["EMI plan ", order.emiTenureMonths ? `· ${order.emiTenureMonths} months` : ""] }), _jsx(Badge, { variant: order.emiComplete ? "success" : "warning", children: order.emiComplete ? "Fully paid" : "In progress" })] }), _jsxs(Row, { align: "center", justify: "between", className: "mb-2", children: [_jsx(Text, { size: "xs", color: "muted", children: "Token collected" }), _jsx(Text, { size: "xs", weight: "medium", children: toCurrency(order.emiTokenAmount ?? 0) })] }), _jsxs(Row, { align: "center", justify: "between", className: "mb-3", children: [_jsx(Text, { size: "xs", color: "muted", children: "Remaining balance" }), _jsx(Text, { size: "xs", weight: "medium", children: toCurrency(order.emiRemainingBalance ?? 0) })] }), _jsx(Div, { className: "divide-y divide-[var(--appkit-color-border)] border border-[var(--appkit-color-border)]", rounded: "lg", children: (order.emiInstallments ?? []).map((inst) => (_jsxs(Row, { paddingY: "y-xs-tall", padding: "x-sm", align: "center", justify: "between", gap: "3", children: [_jsxs(Div, { className: "min-w-0", children: [_jsxs(Text, { size: "sm", weight: "medium", children: ["Installment ", inst.index, " \u00B7 ", toCurrency(inst.amount)] }), _jsx(Text, { size: "xs", color: "muted", children: inst.status === "paid" && inst.paidAt
253
253
  ? `Paid ${toRelativeDate(inst.paidAt)}`
254
254
  : inst.dueDate
255
255
  ? `Due ${toRelativeDate(inst.dueDate)}`
@@ -4,13 +4,24 @@ import { normalizeError } from "../../../errors/normalize.js";
4
4
  import { useEffect, useState } from "react";
5
5
  import { Alert, Badge, Button, Div, Modal, Row, Stack, Text, Textarea } from "../../../ui/index.js";
6
6
  import { SELLER_ENDPOINTS } from "../../../constants/api-endpoints.js";
7
+ import { formatCurrency } from "../../../utils/number.formatter.js";
7
8
  const __P = {
8
9
  p3: "p-[var(--appkit-space-3)]",
9
10
  p4: "p-[var(--appkit-space-4)]",
10
11
  };
11
- function rupees(amount) {
12
- return `₹${amount.toLocaleString("en-IN", { minimumFractionDigits: 2 })}`;
13
- }
12
+ /*
13
+ * 🛑 A LOCAL `rupees()` HELPER WAS DELETED HERE in favour of the one formatter.
14
+ *
15
+ * It set `minimumFractionDigits: 2` and no MAXIMUM, so a value carrying more
16
+ * than two decimals printed every one of them — and payout amounts are
17
+ * commission arithmetic, which is exactly where they come from. A seller's
18
+ * available earnings could read "₹17,500.333".
19
+ *
20
+ * `formatCurrency` goes through `Intl.NumberFormat` with `style: "currency"`,
21
+ * which pins the fraction digits to the currency's own minor-unit count (2
22
+ * for INR) in both directions, and takes the symbol from the locale rather
23
+ * than hardcoding one.
24
+ */
14
25
  export function SellerPayoutRequestView({ payoutsApiBase = SELLER_ENDPOINTS.PAYOUTS, payoutSettingsApiBase = SELLER_ENDPOINTS.PAYOUT_SETTINGS, requestApiBase = SELLER_ENDPOINTS.PAYOUT_REQUEST, onRequested, }) {
15
26
  const [summary, setSummary] = useState(null);
16
27
  const [payoutDetails, setPayoutDetails] = useState(null);
@@ -64,7 +75,7 @@ export function SellerPayoutRequestView({ payoutsApiBase = SELLER_ENDPOINTS.PAYO
64
75
  if (!summary)
65
76
  return null;
66
77
  const canRequest = !summary.hasPendingPayout && summary.availableEarnings > 0 && payoutDetails?.isConfigured;
67
- return (_jsxs(_Fragment, { children: [_jsx(Div, { className: `${__P.p4} border border-[var(--appkit-color-border)] bg-[var(--appkit-color-surface)]`, rounded: "lg", children: _jsxs(Row, { align: "center", justify: "between", gap: "3", wrap: true, children: [_jsxs(Div, { children: [_jsx(Text, { className: "text-[var(--appkit-color-text-muted)]", size: "sm", children: "Available for Payout" }), _jsx(Text, { className: "text-[var(--appkit-color-primary)]", size: "2xl", weight: "bold", children: rupees(summary.availableEarnings) }), _jsxs(Text, { className: "text-[var(--appkit-color-text-muted)] mt-0.5", size: "xs", children: [summary.eligibleOrderCount, " eligible order", summary.eligibleOrderCount !== 1 ? "s" : ""] })] }), _jsxs(Row, { align: "center", gap: "sm", wrap: true, children: [summary.hasPendingPayout && _jsx(Badge, { variant: "warning", children: "Payout in progress" }), submitted && _jsx(Badge, { variant: "success", children: "Payout requested!" }), !payoutDetails?.isConfigured && (_jsx(Text, { className: "text-[var(--appkit-color-warning)]", size: "sm", children: "Set up payout details first" })), _jsx(Button, { variant: "primary", onClick: () => setModalOpen(true), disabled: !canRequest, children: "Request Payout" })] })] }) }), _jsx(Modal, { isOpen: modalOpen, onClose: () => { setModalOpen(false); setSubmitError(null); }, title: "Request Payout", children: _jsxs(Stack, { gap: "md", className: `${__P.p4}`, children: [_jsxs(Div, { className: `${__P.p3} bg-[var(--appkit-color-surface-muted)]`, rounded: "default", children: [_jsx(Text, { className: "text-[var(--appkit-color-text-muted)]", size: "sm", children: "Amount to be paid" }), _jsx(Text, { size: "xl", weight: "bold", children: rupees(summary?.availableEarnings ?? 0) }), _jsxs(Text, { className: "text-[var(--appkit-color-text-muted)]", size: "xs", children: ["Via ", payoutDetails?.method === "upi"
78
+ return (_jsxs(_Fragment, { children: [_jsx(Div, { className: `${__P.p4} border border-[var(--appkit-color-border)] bg-[var(--appkit-color-surface)]`, rounded: "lg", children: _jsxs(Row, { align: "center", justify: "between", gap: "3", wrap: true, children: [_jsxs(Div, { children: [_jsx(Text, { className: "text-[var(--appkit-color-text-muted)]", size: "sm", children: "Available for Payout" }), _jsx(Text, { className: "text-[var(--appkit-color-primary)]", size: "2xl", weight: "bold", children: formatCurrency(summary.availableEarnings) }), _jsxs(Text, { className: "text-[var(--appkit-color-text-muted)] mt-0.5", size: "xs", children: [summary.eligibleOrderCount, " eligible order", summary.eligibleOrderCount !== 1 ? "s" : ""] })] }), _jsxs(Row, { align: "center", gap: "sm", wrap: true, children: [summary.hasPendingPayout && _jsx(Badge, { variant: "warning", children: "Payout in progress" }), submitted && _jsx(Badge, { variant: "success", children: "Payout requested!" }), !payoutDetails?.isConfigured && (_jsx(Text, { className: "text-[var(--appkit-color-warning)]", size: "sm", children: "Set up payout details first" })), _jsx(Button, { variant: "primary", onClick: () => setModalOpen(true), disabled: !canRequest, children: "Request Payout" })] })] }) }), _jsx(Modal, { isOpen: modalOpen, onClose: () => { setModalOpen(false); setSubmitError(null); }, title: "Request Payout", children: _jsxs(Stack, { gap: "md", className: `${__P.p4}`, children: [_jsxs(Div, { className: `${__P.p3} bg-[var(--appkit-color-bg)]`, rounded: "default", children: [_jsx(Text, { className: "text-[var(--appkit-color-text-muted)]", size: "sm", children: "Amount to be paid" }), _jsx(Text, { size: "xl", weight: "bold", children: formatCurrency(summary?.availableEarnings ?? 0) }), _jsxs(Text, { className: "text-[var(--appkit-color-text-muted)]", size: "xs", children: ["Via ", payoutDetails?.method === "upi"
68
79
  ? `UPI — ${payoutDetails.upiId}`
69
- : `Bank — ${payoutDetails?.bankAccount?.bankName ?? ""} ••••${payoutDetails?.bankAccount?.accountNumberMasked?.slice(-4) ?? "••••"}`] })] }), submitError && _jsx(Alert, { variant: "error", children: submitError }), _jsxs(Div, { children: [_jsx(Text, { className: "mb-1.5", size: "sm", weight: "medium", children: "Notes (optional)" }), _jsx(Textarea, { rows: 3, value: notes, onChange: (e) => setNotes(e.target.value), maxLength: 500, placeholder: "Any notes for the payout request\u2026" })] }), _jsxs(Row, { justify: "end", gap: "sm", children: [_jsx(Button, { variant: "outline", onClick: () => setModalOpen(false), disabled: submitting, children: "Cancel" }), _jsx(Button, { variant: "primary", onClick: handleRequest, disabled: submitting, isLoading: submitting, children: "Confirm Request" })] })] }) })] }));
80
+ : `Bank — ${payoutDetails?.bankAccount?.bankName ?? ""} ••••${payoutDetails?.bankAccount?.accountNumberMasked?.slice(-4) ?? "••••"}`] })] }), submitError && _jsx(Alert, { variant: "error", children: submitError }), _jsx(Div, { children: _jsx(Textarea, { label: "Notes (optional)", rows: 3, value: notes, onChange: (e) => setNotes(e.target.value), maxLength: 500, placeholder: "Any notes for the payout request\u2026" }) }), _jsxs(Row, { justify: "end", gap: "sm", children: [_jsx(Button, { variant: "outline", onClick: () => setModalOpen(false), disabled: submitting, children: "Cancel" }), _jsx(Button, { variant: "primary", onClick: handleRequest, disabled: submitting, isLoading: submitting, children: "Confirm Request" })] })] }) })] }));
70
81
  }
@@ -300,7 +300,7 @@ export function SellerPayoutSettingsView({ apiBase = SELLER_ENDPOINTS.PAYOUT_SET
300
300
  id: "preferences",
301
301
  label: "Preferences",
302
302
  fields: ["autoPayout", "minimumThreshold", "emiEnabled", "pricesIncludeGst", "supportsShippingProtection", "supportsSaleProtection", "advancedListingTypesEnabled"],
303
- render: ({ values, onChange }) => (_jsxs(Stack, { gap: "md", children: [_jsx(Heading, { level: 3, className: "mb-2", children: "Payout Preferences" }), _jsx(Toggle, { checked: values.autoPayout, onChange: (checked) => onChange({ autoPayout: checked }), label: "Enable auto-payout \u2014 automatically transfer earnings on schedule", disabled: busy }), _jsx(FormField, { name: "minimumThreshold", label: "Minimum Payout Threshold (\u20B9)", type: "number", value: values.minimumThreshold, onChange: (v) => onChange({ minimumThreshold: v }), placeholder: "e.g. 500", helpText: "Payouts are held until your balance exceeds this amount. Leave blank for no minimum.", disabled: busy }), _jsxs(Div, { className: `${__P.p3} bg-[var(--appkit-color-surface-alt)] border border-[var(--appkit-color-border)]`, rounded: "lg", children: [_jsx(Text, { className: "mb-1", size: "sm", weight: "medium", children: "Payout Schedule" }), _jsx(Text, { className: "text-[var(--appkit-color-text-muted)]", size: "sm", children: "Auto-payouts run every Monday for the previous week's settled orders. Manual payouts can be requested from the Payouts page at any time." })] }), _jsx(Toggle, { checked: values.emiEnabled, onChange: (checked) => onChange({ emiEnabled: checked }), label: "Offer EMI financing on eligible orders", disabled: busy }), _jsx(Text, { className: "text-[var(--appkit-color-text-muted)]", size: "sm", children: "Only shown to buyers when platform-wide EMI is also enabled and their cart subtotal from your store exceeds the site's minimum order value. Orders on an EMI plan hold your payout until every installment is paid, unless you mark the item \"ship before EMI completes\"." }), _jsx(Toggle, { checked: values.pricesIncludeGst, onChange: (checked) => onChange({ pricesIncludeGst: checked }), label: "The prices I enter already include GST", disabled: busy }), _jsxs(Text, { className: "text-[var(--appkit-color-text-muted)]", size: "sm", children: ["Buyers always see a tax-inclusive price, so this only changes how your own entry is read. Leave it", " ", _jsx(Span, { weight: "semibold", children: "on" }), " and a \u20B9999 listing at 5% GST means the buyer pays \u20B9999 and you earn \u20B9951.43 \u2014 the \u20B947.57 is GST we collect and remit for you. Turn it", " ", _jsx(Span, { weight: "semibold", children: "off" }), " and \u20B9999 is treated as your ex-GST price: the listing is shown at \u20B91,048.95 and you earn \u20B9999."] }), _jsx(Heading, { level: 3, className: "mb-2 mt-4", children: "Buyer Protections" }), _jsxs(Text, { className: "text-[var(--appkit-color-text-muted)]", size: "sm", children: ["Two separate covers a buyer can pay for at checkout. Supporting one earns a safety badge on your listings;", " ", _jsx(Span, { weight: "semibold", children: "declining shows buyers a risk notice instead" }), " \u2014 there is no neutral option, because a buyer who is told nothing cannot tell a seller who declined from one who was never asked."] }), _jsx(Toggle, { checked: values.supportsShippingProtection, onChange: (checked) => onChange({ supportsShippingProtection: checked }), label: "Offer shipment protection \u2014 loss or damage in transit", disabled: busy }), _jsx(Text, { className: "text-[var(--appkit-color-text-muted)]", size: "sm", children: "The parcel never arrived or arrived damaged. We pursue the courier, not you, and the buyer is refunded from the funds we hold \u2014 so a genuine transit loss costs you the item, not an argument." }), _jsx(Toggle, { checked: values.supportsSaleProtection, onChange: (checked) => onChange({ supportsSaleProtection: checked }), label: "Offer sale protection \u2014 item not as described", disabled: busy }), _jsxs(Text, { className: "text-[var(--appkit-color-text-muted)]", size: "sm", children: ["A no-questions-asked refund on the item itself. Be clear about what this means:", " ", _jsx(Span, { weight: "semibold", children: "a claim we inspect and find genuine is charged back to you" }), " ", "\u2014 that is the cover. A claim we find to be a change of mind is absorbed by us, which is what the buyer's fee pays for. Not offered on your final-sale listings, since \"no returns\" and \"no questions asked\" cannot both be true."] }), _jsx(Text, { className: "text-[var(--appkit-color-text-muted)]", size: "sm", children: "Changing this does not re-price listings you have already published. It applies to products you save from now on." }), _jsx(Toggle, { checked: values.advancedListingTypesEnabled, onChange: (checked) => onChange({ advancedListingTypesEnabled: checked }), label: "Enable advanced listing types", disabled: busy }), _jsxs(Text, { className: "text-[var(--appkit-color-text-muted)]", size: "sm", children: ["Adds pre-orders, prize draws, classifieds, digital codes, live items, art and stickers alongside the products, spares and auctions you can already list. Each carries its own obligation:", " ", _jsx(Span, { weight: "semibold", children: "a pre-order takes payment for stock you do not have yet, a prize draw is a regulated promotion, a classified happens off-platform with no escrow protection, a digital code must be delivered from a pool you keep stocked, and a live listing is an animal." }), " ", "Turning this off later does not unpublish listings you have already created \u2014 it only stops you making new ones."] })] })),
303
+ render: ({ values, onChange }) => (_jsxs(Stack, { gap: "md", children: [_jsx(Heading, { level: 3, className: "mb-2", children: "Payout Preferences" }), _jsx(Toggle, { checked: values.autoPayout, onChange: (checked) => onChange({ autoPayout: checked }), label: "Enable auto-payout \u2014 automatically transfer earnings on schedule", disabled: busy }), _jsx(FormField, { name: "minimumThreshold", label: "Minimum Payout Threshold (\u20B9)", type: "number", value: values.minimumThreshold, onChange: (v) => onChange({ minimumThreshold: v }), placeholder: "e.g. 500", helpText: "Payouts are held until your balance exceeds this amount. Leave blank for no minimum.", disabled: busy }), _jsxs(Div, { className: `${__P.p3} bg-[var(--appkit-color-bg)] border border-[var(--appkit-color-border)]`, rounded: "lg", children: [_jsx(Text, { className: "mb-1", size: "sm", weight: "medium", children: "Payout Schedule" }), _jsx(Text, { className: "text-[var(--appkit-color-text-muted)]", size: "sm", children: "Auto-payouts run every Monday for the previous week's settled orders. Manual payouts can be requested from the Payouts page at any time." })] }), _jsx(Toggle, { checked: values.emiEnabled, onChange: (checked) => onChange({ emiEnabled: checked }), label: "Offer EMI financing on eligible orders", disabled: busy }), _jsx(Text, { className: "text-[var(--appkit-color-text-muted)]", size: "sm", children: "Only shown to buyers when platform-wide EMI is also enabled and their cart subtotal from your store exceeds the site's minimum order value. Orders on an EMI plan hold your payout until every installment is paid, unless you mark the item \"ship before EMI completes\"." }), _jsx(Toggle, { checked: values.pricesIncludeGst, onChange: (checked) => onChange({ pricesIncludeGst: checked }), label: "The prices I enter already include GST", disabled: busy }), _jsxs(Text, { className: "text-[var(--appkit-color-text-muted)]", size: "sm", children: ["Buyers always see a tax-inclusive price, so this only changes how your own entry is read. Leave it", " ", _jsx(Span, { weight: "semibold", children: "on" }), " and a \u20B9999 listing at 5% GST means the buyer pays \u20B9999 and you earn \u20B9951.43 \u2014 the \u20B947.57 is GST we collect and remit for you. Turn it", " ", _jsx(Span, { weight: "semibold", children: "off" }), " and \u20B9999 is treated as your ex-GST price: the listing is shown at \u20B91,048.95 and you earn \u20B9999."] }), _jsx(Heading, { level: 3, className: "mb-2 mt-4", children: "Buyer Protections" }), _jsxs(Text, { className: "text-[var(--appkit-color-text-muted)]", size: "sm", children: ["Two separate covers a buyer can pay for at checkout. Supporting one earns a safety badge on your listings;", " ", _jsx(Span, { weight: "semibold", children: "declining shows buyers a risk notice instead" }), " \u2014 there is no neutral option, because a buyer who is told nothing cannot tell a seller who declined from one who was never asked."] }), _jsx(Toggle, { checked: values.supportsShippingProtection, onChange: (checked) => onChange({ supportsShippingProtection: checked }), label: "Offer shipment protection \u2014 loss or damage in transit", disabled: busy }), _jsx(Text, { className: "text-[var(--appkit-color-text-muted)]", size: "sm", children: "The parcel never arrived or arrived damaged. We pursue the courier, not you, and the buyer is refunded from the funds we hold \u2014 so a genuine transit loss costs you the item, not an argument." }), _jsx(Toggle, { checked: values.supportsSaleProtection, onChange: (checked) => onChange({ supportsSaleProtection: checked }), label: "Offer sale protection \u2014 item not as described", disabled: busy }), _jsxs(Text, { className: "text-[var(--appkit-color-text-muted)]", size: "sm", children: ["A no-questions-asked refund on the item itself. Be clear about what this means:", " ", _jsx(Span, { weight: "semibold", children: "a claim we inspect and find genuine is charged back to you" }), " ", "\u2014 that is the cover. A claim we find to be a change of mind is absorbed by us, which is what the buyer's fee pays for. Not offered on your final-sale listings, since \"no returns\" and \"no questions asked\" cannot both be true."] }), _jsx(Text, { className: "text-[var(--appkit-color-text-muted)]", size: "sm", children: "Changing this does not re-price listings you have already published. It applies to products you save from now on." }), _jsx(Toggle, { checked: values.advancedListingTypesEnabled, onChange: (checked) => onChange({ advancedListingTypesEnabled: checked }), label: "Enable advanced listing types", disabled: busy }), _jsxs(Text, { className: "text-[var(--appkit-color-text-muted)]", size: "sm", children: ["Adds pre-orders, prize draws, classifieds, digital codes, live items, art and stickers alongside the products, spares and auctions you can already list. Each carries its own obligation:", " ", _jsx(Span, { weight: "semibold", children: "a pre-order takes payment for stock you do not have yet, a prize draw is a regulated promotion, a classified happens off-platform with no escrow protection, a digital code must be delivered from a pool you keep stocked, and a live listing is an animal." }), " ", "Turning this off later does not unpublish listings you have already created \u2014 it only stops you making new ones."] })] })),
304
304
  },
305
305
  ], [busy, current]);
306
306
  const { openIds, setOpenIds, goToSection, fieldToSectionIndex, sectionMeta } = useSectionFormNav(sections, draft);
@@ -150,6 +150,22 @@ export interface SellerProductDraft {
150
150
  liveCites?: boolean;
151
151
  /** Barcode ID of the physical sticker on this item. Auto-generated on save if blank. */
152
152
  barcodeId?: string;
153
+ /**
154
+ * The seller's OWN stock-keeping code — human-chosen, human-typed, and
155
+ * distinct from `barcodeId`, which is machine-generated.
156
+ *
157
+ * 🛑 This was RENDERED WITHOUT BEING DECLARED. The `sku` FormField read
158
+ * `values.sku` and wrote `onChange({ sku })` while the property existed on
159
+ * neither this interface nor `sellerProductSchema`, so both lines were hard
160
+ * type errors — invisible only because a syntax error elsewhere in appkit
161
+ * was stopping tsc before it got here.
162
+ *
163
+ * It did not fail silently at runtime, which is the part worth noting:
164
+ * `sellerProductSchema` is `.passthrough()`, so a typed value survived to
165
+ * Firestore untyped and unvalidated — exactly the trap this file's own
166
+ * `isLot` and `categoryIds` comments warn about, two hundred lines up.
167
+ */
168
+ sku?: string;
153
169
  printSize?: string;
154
170
  printMaterial?: string;
155
171
  printFinish?: string;