@mohasinac/appkit 4.9.5 → 4.11.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 (395) hide show
  1. package/dist/_internal/client/features/layout/DashboardLayoutClient.d.ts +6 -1
  2. package/dist/_internal/client/features/layout/DashboardLayoutClient.js +4 -1
  3. package/dist/_internal/client/features/lottery/LotteryPullForm.d.ts +1 -1
  4. package/dist/_internal/client/features/lottery/LotteryPullForm.js +2 -2
  5. package/dist/_internal/server/features/admin/daily-digest-actions.d.ts +18 -0
  6. package/dist/_internal/server/features/admin/daily-digest-actions.js +37 -0
  7. package/dist/_internal/server/features/auctions/actions.js +3 -2
  8. package/dist/_internal/server/features/auctions/service.d.ts +4 -3
  9. package/dist/_internal/server/features/auctions/service.js +6 -6
  10. package/dist/_internal/server/features/audit-log/actions.d.ts +25 -0
  11. package/dist/_internal/server/features/audit-log/actions.js +38 -0
  12. package/dist/_internal/server/features/brands/actions.js +0 -2
  13. package/dist/_internal/server/features/brands/og.d.ts +4 -1
  14. package/dist/_internal/server/features/brands/og.js +1 -1
  15. package/dist/_internal/server/features/bundles/data.d.ts +9 -0
  16. package/dist/_internal/server/features/bundles/data.js +14 -0
  17. package/dist/_internal/server/features/bundles/index.d.ts +1 -1
  18. package/dist/_internal/server/features/bundles/index.js +1 -1
  19. package/dist/_internal/server/features/catalogue/og.d.ts +20 -0
  20. package/dist/_internal/server/features/catalogue/og.js +27 -0
  21. package/dist/_internal/server/features/grouped/data.d.ts +16 -0
  22. package/dist/_internal/server/features/grouped/data.js +50 -1
  23. package/dist/_internal/server/features/grouped/index.d.ts +1 -1
  24. package/dist/_internal/server/features/grouped/index.js +1 -1
  25. package/dist/_internal/server/features/orders/actions.js +9 -0
  26. package/dist/_internal/server/features/orders/adapters.js +25 -0
  27. package/dist/_internal/server/features/products/data.d.ts +23 -0
  28. package/dist/_internal/server/features/products/data.js +159 -0
  29. package/dist/_internal/server/features/products/index.d.ts +1 -1
  30. package/dist/_internal/server/features/products/index.js +1 -1
  31. package/dist/_internal/server/functions/scheduled.d.ts +3 -1
  32. package/dist/_internal/server/functions/scheduled.js +17 -1
  33. package/dist/_internal/server/jobs/core/dailyStatusDigest.d.ts +40 -0
  34. package/dist/_internal/server/jobs/core/dailyStatusDigest.js +164 -0
  35. package/dist/_internal/server/jobs/core/hardBanCascade.js +11 -0
  36. package/dist/_internal/server/jobs/core/testerSandboxCleanup.d.ts +1 -0
  37. package/dist/_internal/server/jobs/core/testerSandboxCleanup.js +4 -1
  38. package/dist/_internal/server/jobs/core/testerSandboxRefresh.d.ts +12 -0
  39. package/dist/_internal/server/jobs/core/testerSandboxRefresh.js +85 -0
  40. package/dist/_internal/server/jobs/core/whatsappNotify.js +16 -0
  41. package/dist/_internal/server/jobs/handlers/dailyStatusDigest.d.ts +2 -0
  42. package/dist/_internal/server/jobs/handlers/dailyStatusDigest.js +4 -0
  43. package/dist/_internal/server/jobs/handlers/index.d.ts +2 -0
  44. package/dist/_internal/server/jobs/handlers/index.js +3 -0
  45. package/dist/_internal/server/jobs/handlers/testerSandboxRefresh.d.ts +2 -0
  46. package/dist/_internal/server/jobs/handlers/testerSandboxRefresh.js +2 -0
  47. package/dist/_internal/server/notifications/channel-health.d.ts +27 -0
  48. package/dist/_internal/server/notifications/channel-health.js +101 -0
  49. package/dist/_internal/shared/features/auctions/config.d.ts +20 -0
  50. package/dist/_internal/shared/features/auctions/config.js +31 -1
  51. package/dist/_internal/shared/features/brands/schema.d.ts +0 -6
  52. package/dist/_internal/shared/features/brands/schema.js +0 -1
  53. package/dist/_internal/shared/features/categories/bundle-schemas.d.ts +7 -0
  54. package/dist/_internal/shared/features/categories/bundle-schemas.js +3 -0
  55. package/dist/_internal/shared/features/orders/schema.d.ts +8 -8
  56. package/dist/_internal/shared/listing-types/art/config.d.ts +1 -1
  57. package/dist/_internal/shared/listing-types/art/config.js +1 -1
  58. package/dist/_internal/shared/listing-types/classified/config.d.ts +1 -1
  59. package/dist/_internal/shared/listing-types/classified/config.js +1 -1
  60. package/dist/_internal/shared/listing-types/digital-code/config.d.ts +1 -1
  61. package/dist/_internal/shared/listing-types/digital-code/config.js +1 -1
  62. package/dist/_internal/shared/listing-types/live/config.d.ts +1 -1
  63. package/dist/_internal/shared/listing-types/live/config.js +1 -1
  64. package/dist/_internal/shared/listing-types/prize-draw/config.d.ts +1 -1
  65. package/dist/_internal/shared/listing-types/prize-draw/config.js +1 -1
  66. package/dist/_internal/shared/listing-types/stickers/config.d.ts +1 -1
  67. package/dist/_internal/shared/listing-types/stickers/config.js +1 -1
  68. package/dist/client.d.ts +21 -12
  69. package/dist/client.js +14 -7
  70. package/dist/constants/api-endpoints.d.ts +9 -9
  71. package/dist/constants/api-endpoints.js +3 -3
  72. package/dist/contracts/client-auth.d.ts +3 -7
  73. package/dist/contracts/email.d.ts +1 -0
  74. package/dist/features/account/components/AddressForm.js +24 -2
  75. package/dist/features/account/components/BecomeSellerView.d.ts +1 -2
  76. package/dist/features/account/components/BecomeSellerView.js +1 -1
  77. package/dist/features/account/components/NotificationBell.js +1 -1
  78. package/dist/features/account/components/UserBidsView.d.ts +1 -0
  79. package/dist/features/account/components/UserBidsView.js +47 -0
  80. package/dist/features/account/components/UserOrdersView.d.ts +4 -11
  81. package/dist/features/account/components/UserOrdersView.js +54 -4
  82. package/dist/features/account/components/UserReturnsView.d.ts +4 -9
  83. package/dist/features/account/components/UserReturnsView.js +37 -3
  84. package/dist/features/account/components/index.d.ts +3 -2
  85. package/dist/features/account/components/index.js +1 -0
  86. package/dist/features/admin/actions/admin-actions.js +22 -0
  87. package/dist/features/admin/actions/admin-coupon-actions.js +10 -0
  88. package/dist/features/admin/actions/notification-actions.js +4 -3
  89. package/dist/features/admin/components/AdminAdsView.d.ts +2 -3
  90. package/dist/features/admin/components/AdminAdsView.js +86 -89
  91. package/dist/features/admin/components/AdminAllEventEntriesView.js +18 -3
  92. package/dist/features/admin/components/AdminAuditLogView.d.ts +11 -0
  93. package/dist/features/admin/components/AdminAuditLogView.js +95 -0
  94. package/dist/features/admin/components/AdminBlogEditorView.js +37 -3
  95. package/dist/features/admin/components/AdminBrandEditorView.js +10 -6
  96. package/dist/features/admin/components/AdminBundleEditorView.js +18 -2
  97. package/dist/features/admin/components/AdminCarouselEditorView.js +2 -2
  98. package/dist/features/admin/components/AdminCarouselGroupEditorView.js +2 -2
  99. package/dist/features/admin/components/AdminCartsView.js +34 -4
  100. package/dist/features/admin/components/AdminCategoryEditorView.js +5 -4
  101. package/dist/features/admin/components/AdminCouponEditorView.js +2 -2
  102. package/dist/features/admin/components/AdminFaqEditorView.js +2 -2
  103. package/dist/features/admin/components/AdminHistoryView.js +11 -1
  104. package/dist/features/admin/components/AdminNotificationsView.js +27 -1
  105. package/dist/features/admin/components/AdminOrderEditorView.d.ts +10 -1
  106. package/dist/features/admin/components/AdminOrderEditorView.js +4 -3
  107. package/dist/features/admin/components/AdminOrdersView.js +92 -24
  108. package/dist/features/admin/components/AdminPayoutMarkPaidModal.d.ts +7 -0
  109. package/dist/features/admin/components/AdminPayoutMarkPaidModal.js +47 -0
  110. package/dist/features/admin/components/AdminPayoutsView.js +15 -31
  111. package/dist/features/admin/components/AdminProductEditorView.js +26 -3
  112. package/dist/features/admin/components/AdminSiteSettingsView.js +31 -4
  113. package/dist/features/admin/components/AdminStoreAddressesView.js +22 -2
  114. package/dist/features/admin/components/AdminStoresView.js +7 -0
  115. package/dist/features/admin/components/AdminSublistingCategoryEditorView.js +2 -2
  116. package/dist/features/admin/components/AdminTesterChecklistItemEditorView.js +2 -2
  117. package/dist/features/admin/components/AdminUserEditorView.d.ts +2 -2
  118. package/dist/features/admin/components/AdminUserEditorView.js +4 -2
  119. package/dist/features/admin/components/AdminUsersView.js +1 -1
  120. package/dist/features/admin/components/AdminWishlistsView.js +14 -1
  121. package/dist/features/admin/components/DataListingView.d.ts +2 -2
  122. package/dist/features/admin/components/ViewAuditLogEntryModal.d.ts +19 -0
  123. package/dist/features/admin/components/ViewAuditLogEntryModal.js +22 -0
  124. package/dist/features/admin/components/ViewNotificationModal.d.ts +21 -0
  125. package/dist/features/admin/components/ViewNotificationModal.js +15 -0
  126. package/dist/features/admin/components/analytics/AdminPageViewsReportView.d.ts +4 -7
  127. package/dist/features/admin/components/analytics/AdminPageViewsReportView.js +56 -36
  128. package/dist/features/admin/components/index.d.ts +8 -1
  129. package/dist/features/admin/components/index.js +4 -0
  130. package/dist/features/admin/constants/filter-tabs.d.ts +49 -0
  131. package/dist/features/admin/constants/filter-tabs.js +27 -0
  132. package/dist/features/admin/hooks/useAdminListing.d.ts +6 -0
  133. package/dist/features/admin/hooks/useAdminListing.js +3 -1
  134. package/dist/features/admin/hooks/useAdminListingData.d.ts +9 -1
  135. package/dist/features/admin/hooks/useAdminListingData.js +9 -2
  136. package/dist/features/admin/repository/site-settings.repository.d.ts +5 -0
  137. package/dist/features/admin/schemas/firestore.d.ts +21 -0
  138. package/dist/features/admin/schemas/firestore.js +6 -0
  139. package/dist/features/analytics/types.d.ts +1 -1
  140. package/dist/features/analytics/types.js +8 -0
  141. package/dist/features/auctions/actions/bid-actions.js +4 -1
  142. package/dist/features/auctions/components/AuctionBottomActions.d.ts +2 -1
  143. package/dist/features/auctions/components/AuctionBottomActions.js +14 -1
  144. package/dist/features/auctions/components/AuctionDetailPageView.js +21 -9
  145. package/dist/features/auctions/components/LiveMinIncrement.d.ts +18 -0
  146. package/dist/features/auctions/components/LiveMinIncrement.js +17 -0
  147. package/dist/features/auctions/components/PlaceBidFormClient.d.ts +5 -2
  148. package/dist/features/auctions/components/PlaceBidFormClient.js +7 -3
  149. package/dist/features/auctions/schemas/index.d.ts +5 -0
  150. package/dist/features/audit-log/repository/audit-log.repository.d.ts +45 -0
  151. package/dist/features/audit-log/repository/audit-log.repository.js +30 -0
  152. package/dist/features/audit-log/schemas/firestore.d.ts +59 -0
  153. package/dist/features/audit-log/schemas/firestore.js +35 -0
  154. package/dist/features/auth/actions/index.d.ts +0 -1
  155. package/dist/features/auth/actions/index.js +0 -1
  156. package/dist/features/auth/hooks/useAuth.d.ts +8 -35
  157. package/dist/features/auth/hooks/useAuth.js +21 -37
  158. package/dist/features/auth/permissions/constants.d.ts +1 -1
  159. package/dist/features/auth/permissions/constants.js +2 -0
  160. package/dist/features/blog/schemas/index.d.ts +32 -0
  161. package/dist/features/catalogue/components/AdminCatalogueApprovalsView.js +31 -3
  162. package/dist/features/catalogue/components/CatalogueItemEditorView.js +2 -1
  163. package/dist/features/catalogue/components/PublicCatalogueItemDetailView.d.ts +11 -0
  164. package/dist/features/catalogue/components/PublicCatalogueItemDetailView.js +33 -0
  165. package/dist/features/catalogue/components/PublicCatalogueView.js +2 -1
  166. package/dist/features/catalogue/index.d.ts +2 -0
  167. package/dist/features/catalogue/index.js +1 -0
  168. package/dist/features/categories/components/BrandDetailPageView.js +14 -12
  169. package/dist/features/categories/components/BundleDetailView.d.ts +3 -1
  170. package/dist/features/categories/components/BundleDetailView.js +3 -2
  171. package/dist/features/categories/components/CategoryDetailPageView.js +7 -3
  172. package/dist/features/categories/components/CategoryHighlightsAndFaqSection.d.ts +14 -0
  173. package/dist/features/categories/components/CategoryHighlightsAndFaqSection.js +22 -0
  174. package/dist/features/categories/components/CategoryProductsView.d.ts +1 -5
  175. package/dist/features/categories/components/CategoryProductsView.js +1 -1
  176. package/dist/features/categories/components/CategorySelectorCreate.js +16 -2
  177. package/dist/features/categories/schemas/firestore.d.ts +19 -2
  178. package/dist/features/categories/schemas/index.d.ts +24 -3
  179. package/dist/features/categories/schemas/index.js +3 -1
  180. package/dist/features/categories/types/index.d.ts +7 -0
  181. package/dist/features/checkout/actions/checkout-value-otp-actions.d.ts +17 -3
  182. package/dist/features/checkout/actions/checkout-value-otp-actions.js +101 -22
  183. package/dist/features/classified/components/ClassifiedContactSellerPanel.d.ts +12 -0
  184. package/dist/features/classified/components/ClassifiedContactSellerPanel.js +49 -0
  185. package/dist/features/classified/components/ClassifiedDetailPageView.d.ts +7 -0
  186. package/dist/features/classified/components/ClassifiedDetailPageView.js +69 -0
  187. package/dist/features/contact/components/ContactForm.js +17 -4
  188. package/dist/features/contact/components/ContactPageView.js +8 -2
  189. package/dist/features/contact/email.d.ts +1 -0
  190. package/dist/features/contact/email.js +3 -0
  191. package/dist/features/digital-codes/components/DigitalCodeDetailPageView.d.ts +19 -0
  192. package/dist/features/digital-codes/components/DigitalCodeDetailPageView.js +79 -0
  193. package/dist/features/events/components/AdminEventEditorView.js +54 -2
  194. package/dist/features/events/components/AdminEventEntriesView.d.ts +2 -16
  195. package/dist/features/events/components/AdminEventEntriesView.js +56 -89
  196. package/dist/features/events/components/EventFormDrawer.js +5 -1
  197. package/dist/features/events/components/EventRaffleEntryForm.d.ts +1 -3
  198. package/dist/features/events/components/EventRaffleEntryForm.js +1 -1
  199. package/dist/features/events/schemas/index.d.ts +22 -0
  200. package/dist/features/grouped/components/GroupedListingsCarousel.d.ts +13 -0
  201. package/dist/features/grouped/components/GroupedListingsCarousel.js +31 -0
  202. package/dist/features/grouped/repository/grouped-listings.repository.d.ts +12 -0
  203. package/dist/features/grouped/repository/grouped-listings.repository.js +34 -0
  204. package/dist/features/homepage/components/CharacterHotspotForm.js +202 -187
  205. package/dist/features/homepage/components/SectionCarousel.d.ts +1 -7
  206. package/dist/features/homepage/components/SectionCarousel.js +1 -1
  207. package/dist/features/layout/BottomActions.js +4 -3
  208. package/dist/features/layout/BottomActionsContext.d.ts +10 -0
  209. package/dist/features/layout/BottomActionsContext.js +5 -1
  210. package/dist/features/layout/TitleBarLayout.d.ts +1 -1
  211. package/dist/features/layout/TitleBarLayout.js +3 -3
  212. package/dist/features/layout/hooks/useBottomActions.d.ts +2 -0
  213. package/dist/features/layout/hooks/useBottomActions.js +4 -1
  214. package/dist/features/live/components/LiveItemDetailPageView.d.ts +9 -0
  215. package/dist/features/live/components/LiveItemDetailPageView.js +74 -0
  216. package/dist/features/media/MediaImage.js +39 -3
  217. package/dist/features/media/MediaVideo.js +17 -1
  218. package/dist/features/media/types/index.d.ts +10 -0
  219. package/dist/features/media/types/index.js +1 -0
  220. package/dist/features/media/upload/MediaUploadField.d.ts +7 -1
  221. package/dist/features/media/upload/MediaUploadField.js +11 -7
  222. package/dist/features/media/upload/video-poster.d.ts +2 -0
  223. package/dist/features/media/upload/video-poster.js +16 -1
  224. package/dist/features/media/upload/video-poster.test.js +1 -1
  225. package/dist/features/orders/components/OrderStatusTimeline.d.ts +12 -0
  226. package/dist/features/orders/components/OrderStatusTimeline.js +55 -0
  227. package/dist/features/orders/components/index.d.ts +2 -0
  228. package/dist/features/orders/components/index.js +1 -0
  229. package/dist/features/orders/constants/payment-window.d.ts +25 -0
  230. package/dist/features/orders/constants/payment-window.js +25 -0
  231. package/dist/features/orders/repository/orders.repository.d.ts +32 -0
  232. package/dist/features/orders/repository/orders.repository.js +56 -0
  233. package/dist/features/orders/schemas/index.d.ts +24 -24
  234. package/dist/features/orders/types/index.d.ts +33 -0
  235. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +9 -1
  236. package/dist/features/pre-orders/schemas/index.d.ts +5 -0
  237. package/dist/features/products/components/BidHistory.js +9 -1
  238. package/dist/features/products/components/GroupSettingsPanel.js +25 -3
  239. package/dist/features/products/components/PrizeDrawDetailPageView.js +11 -1
  240. package/dist/features/products/components/PrizeDrawEntryActions.d.ts +1 -4
  241. package/dist/features/products/components/PrizeDrawEntryActions.js +1 -1
  242. package/dist/features/products/components/ProductDetailActions.d.ts +1 -2
  243. package/dist/features/products/components/ProductDetailActions.js +1 -1
  244. package/dist/features/products/components/ProductDetailPageView.js +11 -116
  245. package/dist/features/products/components/ProductGrid.js +15 -1
  246. package/dist/features/products/components/RelatedItemsSection.d.ts +16 -0
  247. package/dist/features/products/components/RelatedItemsSection.js +17 -0
  248. package/dist/features/products/constants/action-defs.d.ts +1 -0
  249. package/dist/features/products/constants/action-defs.js +1 -0
  250. package/dist/features/products/schemas/index.d.ts +5 -0
  251. package/dist/features/promotions/components/CouponsIndexListing.d.ts +1 -3
  252. package/dist/features/promotions/components/CouponsIndexListing.js +1 -1
  253. package/dist/features/search/components/SearchView.d.ts +1 -3
  254. package/dist/features/search/components/SearchView.js +1 -1
  255. package/dist/features/seller/components/QuickProductForm.js +2 -1
  256. package/dist/features/seller/components/SellerBidsView.js +66 -107
  257. package/dist/features/seller/components/SellerGoogleReviewsView.js +17 -1
  258. package/dist/features/seller/components/SellerOrdersView.d.ts +15 -3
  259. package/dist/features/seller/components/SellerOrdersView.js +134 -163
  260. package/dist/features/seller/components/SellerPayoutMethodsView.js +60 -48
  261. package/dist/features/seller/components/SellerPayoutSettingsView.js +69 -4
  262. package/dist/features/seller/components/SellerPayoutsView.d.ts +12 -0
  263. package/dist/features/seller/components/SellerPayoutsView.js +25 -5
  264. package/dist/features/seller/components/SellerProductShell.d.ts +10 -3
  265. package/dist/features/seller/components/SellerProductShell.js +90 -37
  266. package/dist/features/seller/components/SellerProductsFilterDrawer.d.ts +2 -7
  267. package/dist/features/seller/components/SellerProductsFilterDrawer.js +4 -4
  268. package/dist/features/seller/components/SellerProductsView.d.ts +2 -4
  269. package/dist/features/seller/components/SellerProductsView.js +131 -189
  270. package/dist/features/seller/components/SellerReviewsView.js +95 -133
  271. package/dist/features/seller/components/SellerShippingConfigsView.js +47 -67
  272. package/dist/features/seller/components/SellerShippingView.js +41 -4
  273. package/dist/features/seller/components/SellerStoreCategoriesView.js +51 -59
  274. package/dist/features/seller/components/SellerStorefrontView.d.ts +6 -1
  275. package/dist/features/seller/components/SellerStorefrontView.js +42 -5
  276. package/dist/features/seller/components/index.d.ts +2 -2
  277. package/dist/features/seller/components/index.js +2 -2
  278. package/dist/features/shell/FormShell.d.ts +24 -4
  279. package/dist/features/shell/FormShell.js +12 -6
  280. package/dist/features/shell/QuickFormDrawer.js +67 -12
  281. package/dist/features/shell/StepForm.d.ts +30 -1
  282. package/dist/features/shell/StepForm.js +47 -4
  283. package/dist/features/shell/index.d.ts +1 -1
  284. package/dist/features/shell/index.js +1 -1
  285. package/dist/features/shipments/components/AdminShipmentEditorView.js +2 -2
  286. package/dist/features/shipments/schemas/validation.d.ts +14 -4
  287. package/dist/features/tester/components/AdminTesterFeedbackListView.js +23 -2
  288. package/dist/features/tester/components/TesterChecklistStepRow.js +1 -1
  289. package/dist/features/tester/components/TesterHubView.js +3 -2
  290. package/dist/features/tester/seed-data/orders-tester-seed-data.js +9 -1
  291. package/dist/features/tester/seed-data/products-tester-seed-data.js +43 -32
  292. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +487 -18
  293. package/dist/index.d.ts +17 -3
  294. package/dist/index.js +23 -5
  295. package/dist/next/routing/route-map.d.ts +13 -0
  296. package/dist/next/routing/route-map.js +12 -0
  297. package/dist/providers/email-resend/provider.js +1 -0
  298. package/dist/providers/firebase-client/auth.d.ts +1 -0
  299. package/dist/providers/firebase-client/auth.js +7 -1
  300. package/dist/repositories/index.d.ts +1 -0
  301. package/dist/repositories/index.js +1 -0
  302. package/dist/schemas/registry.d.ts +61 -25
  303. package/dist/security/pii-mask.js +1 -1
  304. package/dist/seed/bids-seed-data.js +48 -3
  305. package/dist/seed/categories-seed-data.js +69 -0
  306. package/dist/seed/grouped-listings-seed-data.js +167 -0
  307. package/dist/seed/payouts-seed-data.js +4 -4
  308. package/dist/seed/products-art-seed-data.js +188 -5
  309. package/dist/seed/products-auctions-seed-data.js +226 -6
  310. package/dist/seed/products-classifieds-seed-data.js +255 -8
  311. package/dist/seed/products-digital-codes-seed-data.js +258 -19
  312. package/dist/seed/products-live-items-seed-data.js +143 -10
  313. package/dist/seed/products-preorders-seed-data.js +213 -8
  314. package/dist/seed/products-prize-draws-seed-data.js +198 -0
  315. package/dist/seed/products-standard-seed-data.js +234 -4
  316. package/dist/seed/products-stickers-seed-data.js +178 -5
  317. package/dist/seed/site-settings-seed-data.js +23 -30
  318. package/dist/seed/store-extensions-seed-data.js +2 -2
  319. package/dist/server-entry.d.ts +6 -2
  320. package/dist/server-entry.js +24 -3
  321. package/dist/server.d.ts +10 -3
  322. package/dist/server.js +11 -4
  323. package/dist/styles.css +29 -1
  324. package/dist/tailwind-utilities.css +1 -1
  325. package/dist/ui/components/Form.d.ts +11 -2
  326. package/dist/ui/components/Form.js +4 -3
  327. package/dist/ui/components/FormField.d.ts +3 -1
  328. package/dist/ui/components/FormField.js +22 -4
  329. package/dist/ui/components/ImageLightbox.js +37 -3
  330. package/dist/ui/components/ImageLightbox.style.css +28 -0
  331. package/dist/ui/components/ListingLayout.d.ts +1 -2
  332. package/dist/ui/components/ListingLayout.js +1 -1
  333. package/dist/ui/components/RecordDetailModal.d.ts +68 -0
  334. package/dist/ui/components/RecordDetailModal.js +8 -0
  335. package/dist/ui/components/SlottedListingView.js +9 -1
  336. package/dist/ui/forms/FormErrorSummary.d.ts +25 -0
  337. package/dist/ui/forms/FormErrorSummary.js +37 -0
  338. package/dist/ui/forms/FormShell.d.ts +37 -2
  339. package/dist/ui/forms/FormShell.js +37 -7
  340. package/dist/ui/forms/FormShell.style.css +17 -0
  341. package/dist/ui/forms/index.d.ts +2 -0
  342. package/dist/ui/forms/index.js +1 -0
  343. package/dist/ui/index.d.ts +4 -0
  344. package/dist/ui/index.js +5 -0
  345. package/dist/utils/media-url.d.ts +12 -1
  346. package/dist/utils/media-url.js +59 -1
  347. package/dist/validation/schemas.d.ts +4 -4
  348. package/package.json +1 -1
  349. package/dist/_internal/client/features/classified/ClassifiedDetailView.d.ts +0 -9
  350. package/dist/_internal/client/features/classified/ClassifiedDetailView.js +0 -55
  351. package/dist/_internal/client/features/digital-code/DigitalCodeDetailView.d.ts +0 -18
  352. package/dist/_internal/client/features/digital-code/DigitalCodeDetailView.js +0 -21
  353. package/dist/_internal/client/features/live/LiveItemDetailView.d.ts +0 -9
  354. package/dist/_internal/client/features/live/LiveItemDetailView.js +0 -25
  355. package/dist/_internal/server/jobs/core/prizeRevealClose.d.ts +0 -2
  356. package/dist/_internal/server/jobs/core/prizeRevealClose.js +0 -28
  357. package/dist/_internal/server/jobs/core/prizeRevealExpiry.d.ts +0 -2
  358. package/dist/_internal/server/jobs/core/prizeRevealExpiry.js +0 -61
  359. package/dist/_internal/server/jobs/core/prizeRevealOpen.d.ts +0 -2
  360. package/dist/_internal/server/jobs/core/prizeRevealOpen.js +0 -68
  361. package/dist/_internal/server/jobs/core/prizeRevealReminder.d.ts +0 -2
  362. package/dist/_internal/server/jobs/core/prizeRevealReminder.js +0 -49
  363. package/dist/_internal/server/jobs/handlers/prizeRevealClose.d.ts +0 -2
  364. package/dist/_internal/server/jobs/handlers/prizeRevealClose.js +0 -2
  365. package/dist/_internal/server/jobs/handlers/prizeRevealExpiry.d.ts +0 -2
  366. package/dist/_internal/server/jobs/handlers/prizeRevealExpiry.js +0 -2
  367. package/dist/_internal/server/jobs/handlers/prizeRevealOpen.d.ts +0 -2
  368. package/dist/_internal/server/jobs/handlers/prizeRevealOpen.js +0 -2
  369. package/dist/_internal/server/jobs/handlers/prizeRevealReminder.d.ts +0 -2
  370. package/dist/_internal/server/jobs/handlers/prizeRevealReminder.js +0 -2
  371. package/dist/features/auth/consent-otp.d.ts +0 -57
  372. package/dist/features/auth/consent-otp.js +0 -127
  373. package/dist/features/cart/components/CheckoutOtpModal.d.ts +0 -15
  374. package/dist/features/cart/components/CheckoutOtpModal.js +0 -12
  375. package/dist/features/checkout/actions/checkout-actions.d.ts +0 -31
  376. package/dist/features/checkout/actions/checkout-actions.js +0 -124
  377. package/dist/features/classified/components/ClassifiedIndexListing.d.ts +0 -5
  378. package/dist/features/classified/components/ClassifiedIndexListing.js +0 -123
  379. package/dist/features/classified/components/ClassifiedListView.d.ts +0 -6
  380. package/dist/features/classified/components/ClassifiedListView.js +0 -44
  381. package/dist/features/digital-codes/components/DigitalCodesIndexListing.d.ts +0 -5
  382. package/dist/features/digital-codes/components/DigitalCodesIndexListing.js +0 -114
  383. package/dist/features/digital-codes/components/DigitalCodesListView.d.ts +0 -6
  384. package/dist/features/digital-codes/components/DigitalCodesListView.js +0 -38
  385. package/dist/features/live/components/LiveItemsIndexListing.d.ts +0 -5
  386. package/dist/features/live/components/LiveItemsIndexListing.js +0 -115
  387. package/dist/features/live/components/LiveItemsListView.d.ts +0 -6
  388. package/dist/features/live/components/LiveItemsListView.js +0 -44
  389. package/dist/features/seller/components/SellerTemplatesView.d.ts +0 -12
  390. package/dist/features/seller/components/SellerTemplatesView.js +0 -276
  391. package/dist/react/hooks/useVisibleItems.d.ts +0 -37
  392. package/dist/react/hooks/useVisibleItems.js +0 -59
  393. package/dist/ui/components/TabStrip.d.ts +0 -34
  394. package/dist/ui/components/TabStrip.js +0 -56
  395. package/dist/ui/components/TabStrip.style.css +0 -97
@@ -1,13 +1,19 @@
1
1
  /*
2
2
  * WHY: Seeds a minimal, Beyblade-focused catalog of standard product listings — 2 products per
3
3
  * generation (Original, Metal Fight, Burst, X), all from the Beyblade Arena store, plus
4
- * 2 video-demo products (one per generation family) so the product gallery's video slide
5
- * (theater-mode playback, zoom/rotate) has real, playable fixtures to test against.
6
- * WHAT: Exports 10 standard products with listingType:"standard", covering all 4 generation
4
+ * 4 video-demo products so the product gallery's video slide (theater-mode playback,
5
+ * zoom/rotate, fullscreen) has real, playable fixtures covering every supported video
6
+ * source: a raw file from Google's public sample-video bucket (x2, one per Original/X),
7
+ * a YouTube-embed URL (Metal Fight — exercises getYouTubeVideoId()'s iframe-embed path,
8
+ * 2026-08-21), and a second raw-external-host file from Wikimedia Commons (Burst,
9
+ * 2026-08-21). A real MediaUploadField file-upload video can't be reproduced from seed
10
+ * data (no Storage object actually exists for a seeded URL to point at) — that path is
11
+ * covered by a tester-checklist manual test case instead, not a fixture here.
12
+ * WHAT: Exports 12 standard products with listingType:"standard", covering all 4 generation
7
13
  * leaf categories (tagged with both leaf + root category slugs).
8
14
  *
9
15
  * EXPORTS:
10
- * productsStandardSeedData — Array of 10 standard products with listingType:"standard"
16
+ * productsStandardSeedData — Array of 12 standard products with listingType:"standard"
11
17
  *
12
18
  * @tag domain:products,catalog
13
19
  * @tag layer:seed
@@ -19,6 +25,146 @@
19
25
  import { PRODUCT_FIELDS } from "../constants/field-names";
20
26
  import { buildSearchTokens } from "../utils/search-tokens";
21
27
  import { seedExtMedia } from "./_helpers/media";
28
+ /*
29
+ * Real Beyblade attributes per fixture — Root Cause #6 (standard was the
30
+ * "richest" seed file by fixture count but never exercised customFields/
31
+ * customSections/specifications, the actual product-spec render pipeline).
32
+ * Keyed by product id, merged into each fixture below.
33
+ */
34
+ const SPEC_OVERRIDES = {
35
+ "product-beyblade-original-dranzer-s": {
36
+ specifications: [
37
+ { name: "Spin Direction", value: "Right (Right-Spin)" },
38
+ { name: "Type", value: "Attack" },
39
+ { name: "Weight", value: "31.8", unit: "g" },
40
+ { name: "Stamina Rating", value: "5", unit: "/10" },
41
+ { name: "Attack Rating", value: "8", unit: "/10" },
42
+ ],
43
+ customFields: [
44
+ { key: "Launcher Included", type: "boolean", value: "true" },
45
+ { key: "Ripcord Length", type: "text", value: "Standard (short-pull)" },
46
+ ],
47
+ },
48
+ "product-beyblade-original-driger-v": {
49
+ specifications: [
50
+ { name: "Spin Direction", value: "Left (Left-Spin)" },
51
+ { name: "Type", value: "Attack" },
52
+ { name: "Weight", value: "33.1", unit: "g" },
53
+ { name: "Stamina Rating", value: "6", unit: "/10" },
54
+ { name: "Attack Rating", value: "7", unit: "/10" },
55
+ ],
56
+ customFields: [{ key: "Launcher Included", type: "boolean", value: "false" }],
57
+ customSections: [
58
+ {
59
+ id: "battle-tips",
60
+ title: "Battle Tips",
61
+ text: "Driger V's left-spin makes it a strong counter-pick against right-spin attack types — pair with a wide-angle stadium for maximum recoil advantage.",
62
+ },
63
+ ],
64
+ },
65
+ "product-beyblade-metal-storm-pegasus": {
66
+ specifications: [
67
+ { name: "Spin Direction", value: "Right (Right-Spin)" },
68
+ { name: "Type", value: "Attack" },
69
+ { name: "Weight", value: "50.2", unit: "g" },
70
+ { name: "Stamina Rating", value: "4", unit: "/10" },
71
+ { name: "Attack Rating", value: "9", unit: "/10" },
72
+ { name: "Track & Bottom", value: "105 / RF (Rubber Flat)" },
73
+ ],
74
+ customFields: [{ key: "Launcher Included", type: "boolean", value: "true" }],
75
+ },
76
+ "product-beyblade-metal-flame-sagittario": {
77
+ specifications: [
78
+ { name: "Spin Direction", value: "Right (Right-Spin)" },
79
+ { name: "Type", value: "Balance" },
80
+ { name: "Weight", value: "56.8", unit: "g" },
81
+ { name: "Stamina Rating", value: "7", unit: "/10" },
82
+ { name: "Defense Rating", value: "6", unit: "/10" },
83
+ { name: "Track & Bottom", value: "C145 / S (Spike)" },
84
+ ],
85
+ customFields: [{ key: "Tournament Legal", type: "boolean", value: "true" }],
86
+ },
87
+ "product-beyblade-burst-valkyrie": {
88
+ specifications: [
89
+ { name: "Spin Direction", value: "Right (Right-Spin)" },
90
+ { name: "Type", value: "Attack" },
91
+ { name: "Weight", value: "28.6", unit: "g" },
92
+ { name: "Stamina Rating", value: "5", unit: "/10" },
93
+ { name: "Attack Rating", value: "9", unit: "/10" },
94
+ { name: "Layer / Disc / Driver", value: "Valkyrie / Wing / Accel" },
95
+ ],
96
+ customFields: [
97
+ { key: "Launcher Included", type: "boolean", value: "true" },
98
+ { key: "Burst Resistance", type: "text", value: "Medium — tighten disc lock before battle" },
99
+ ],
100
+ customSections: [
101
+ {
102
+ id: "battle-tips",
103
+ title: "Battle Tips",
104
+ text: "Accel driver gives Valkyrie an aggressive early-game charge — best used in Attack vs. Stamina matchups where a fast KO matters more than late-game endurance.",
105
+ },
106
+ ],
107
+ },
108
+ "product-beyblade-burst-regalia-genesis": {
109
+ specifications: [
110
+ { name: "Spin Direction", value: "Right (Right-Spin)" },
111
+ { name: "Type", value: "Attack" },
112
+ { name: "Weight", value: "32.4", unit: "g" },
113
+ { name: "Stamina Rating", value: "4", unit: "/10" },
114
+ { name: "Attack Rating", value: "8", unit: "/10" },
115
+ { name: "Layer / Disc / Driver", value: "Regalia Genesis / .Zt" },
116
+ ],
117
+ customFields: [{ key: "Switch Launcher Compatible", type: "boolean", value: "true" }],
118
+ },
119
+ "product-beyblade-x-wizard-arrow": {
120
+ specifications: [
121
+ { name: "Spin Direction", value: "Right (Right-Spin)" },
122
+ { name: "Type", value: "Balance" },
123
+ { name: "Weight", value: "34.9", unit: "g" },
124
+ { name: "Stamina Rating", value: "6", unit: "/10" },
125
+ { name: "Attack Rating", value: "6", unit: "/10" },
126
+ { name: "Blade / Ratchet / Bit", value: "Wizard / 4-60 / Flat" },
127
+ ],
128
+ customFields: [{ key: "Launcher Included", type: "boolean", value: "true" }],
129
+ },
130
+ "product-beyblade-x-knife-shinobi": {
131
+ specifications: [
132
+ { name: "Spin Direction", value: "Right (Right-Spin)" },
133
+ { name: "Type", value: "Balance" },
134
+ { name: "Weight", value: "36.1", unit: "g" },
135
+ { name: "Stamina Rating", value: "8", unit: "/10" },
136
+ { name: "Defense Rating", value: "6", unit: "/10" },
137
+ { name: "Blade / Ratchet / Bit", value: "Knife Shinobi / 3-60 / Glide Flat" },
138
+ ],
139
+ customFields: [{ key: "Tournament Legal", type: "boolean", value: "true" }],
140
+ customSections: [
141
+ {
142
+ id: "battle-tips",
143
+ title: "Battle Tips",
144
+ text: "Glide Flat bit gives Knife Shinobi excellent late-game stamina in X-format stadiums with a ring — hold back and let opponents burn attack power first.",
145
+ },
146
+ ],
147
+ },
148
+ "product-beyblade-original-dragoon-f-video-demo": {
149
+ specifications: [
150
+ { name: "Spin Direction", value: "Right (Right-Spin)" },
151
+ { name: "Type", value: "Attack" },
152
+ { name: "Weight", value: "30.5", unit: "g" },
153
+ { name: "Attack Rating", value: "8", unit: "/10" },
154
+ ],
155
+ customFields: [{ key: "Launcher Included", type: "boolean", value: "true" }],
156
+ },
157
+ "product-beyblade-x-dran-sword-video-demo": {
158
+ specifications: [
159
+ { name: "Spin Direction", value: "Right (Right-Spin)" },
160
+ { name: "Type", value: "Attack" },
161
+ { name: "Weight", value: "35.7", unit: "g" },
162
+ { name: "Attack Rating", value: "9", unit: "/10" },
163
+ { name: "Blade / Ratchet / Bit", value: "Dran Sword / 3-60 / Flat" },
164
+ ],
165
+ customFields: [{ key: "Tournament Legal", type: "boolean", value: "true" }],
166
+ },
167
+ };
22
168
  function withTokens(p) {
23
169
  return {
24
170
  tags: [],
@@ -335,10 +481,94 @@ const _rawProductsStandardSeedData = [
335
481
  createdAt: new Date("2026-08-19"),
336
482
  updatedAt: new Date("2026-08-19"),
337
483
  },
484
+ {
485
+ // Added 2026-08-21 — the first two video-demo fixtures only covered a raw,
486
+ // directly-playable <video src> from one external host (Google's public
487
+ // sample-video bucket). MediaUploadField's "YouTube" tab is a real,
488
+ // separately-supported video source (see getYouTubeVideoId() /
489
+ // Recurrent Root Cause Pattern for the YouTube-embed fix), but until now
490
+ // NO permanent seed fixture exercised it — the only reproduction was an
491
+ // ephemeral manual edit on a tester-sandbox product that a reseed would
492
+ // silently wipe out.
493
+ id: "product-beyblade-metal-dark-bull-video-demo",
494
+ slug: "product-beyblade-metal-dark-bull-video-demo",
495
+ barcodeId: "LIR-BEY-VID-003",
496
+ title: "Metal Fight Beyblade BB-118 Dark Bull (Video Demo, YouTube)",
497
+ description: "Dark Bull H145SD, a defense-type top from the Metal Masters generation. Listed with a YouTube battle video to exercise the gallery's YouTube-embed video source.",
498
+ categorySlugs: ["category-beyblade-metal", "category-spinning-tops"],
499
+ categoryNames: ["Beyblade Metal Fight", "Spinning Tops"],
500
+ brandSlug: "brand-takara-tomy",
501
+ brand: "Takara-Tomy",
502
+ price: 1099,
503
+ currency: "INR",
504
+ stockQuantity: 4,
505
+ availableQuantity: 4,
506
+ isSold: false,
507
+ mainImage: seedExtMedia("https://picsum.photos/seed/product-image-beyblade-metal-dark-bull-video-demo-1-20260821/900/900"),
508
+ images: [
509
+ seedExtMedia("https://picsum.photos/seed/product-image-beyblade-metal-dark-bull-video-demo-1-20260821/900/900"),
510
+ seedExtMedia("https://picsum.photos/seed/product-image-beyblade-metal-dark-bull-video-demo-2-20260821/900/900"),
511
+ ],
512
+ video: {
513
+ // audit-seed-external-url-ok: MediaUploadField's YouTube tab always stores a
514
+ // youtube.com/watch?v= URL — this is exactly that shape, not a raw file.
515
+ // getYouTubeVideoId() detects it and MediaVideo/ImageLightbox render a
516
+ // youtube-nocookie.com iframe embed instead of a native <video> element.
517
+ url: "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
518
+ thumbnailUrl: seedExtMedia("https://picsum.photos/seed/product-video-thumb-beyblade-metal-dark-bull-video-demo-20260821/800/450"),
519
+ duration: 212,
520
+ },
521
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
522
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
523
+ tags: ["defense-type"],
524
+ storeId: "store-beyblade-arena",
525
+ storeName: "Beyblade Arena",
526
+ createdAt: new Date("2026-08-21"),
527
+ updatedAt: new Date("2026-08-21"),
528
+ },
529
+ {
530
+ // Added 2026-08-21 — third distinct video source (Wikimedia Commons,
531
+ // CC-BY-SA) alongside the Google-sample-bucket and YouTube fixtures above,
532
+ // matching the raw-external-URL source already used on the live-tester-
533
+ // sandbox live-item fixture (products-tester-seed-data.ts) so a standard
534
+ // product exercises the same non-YouTube external-host path too.
535
+ id: "product-beyblade-burst-spryzen-video-demo",
536
+ slug: "product-beyblade-burst-spryzen-video-demo",
537
+ barcodeId: "LIR-BEY-VID-004",
538
+ title: "Beyblade Burst B-97 Spryzen S2 (Video Demo, Wikimedia)",
539
+ description: "Spryzen S2 stamina-type top from the God Layer generation. Listed with a Wikimedia-hosted spin video to exercise a second raw-external-host video source.",
540
+ categorySlugs: ["category-beyblade-burst", "category-spinning-tops"],
541
+ categoryNames: ["Beyblade Burst", "Spinning Tops"],
542
+ brandSlug: "brand-beyblade",
543
+ brand: "Beyblade",
544
+ price: 899,
545
+ currency: "INR",
546
+ stockQuantity: 7,
547
+ availableQuantity: 7,
548
+ isSold: false,
549
+ mainImage: seedExtMedia("https://picsum.photos/seed/product-image-beyblade-burst-spryzen-video-demo-1-20260821/900/900"),
550
+ images: [
551
+ seedExtMedia("https://picsum.photos/seed/product-image-beyblade-burst-spryzen-video-demo-1-20260821/900/900"),
552
+ seedExtMedia("https://picsum.photos/seed/product-image-beyblade-burst-spryzen-video-demo-2-20260821/900/900"),
553
+ ],
554
+ video: {
555
+ url: "https://upload.wikimedia.org/wikipedia/commons/4/42/Slow_motion_of_running_greyhound.webm", // audit-seed-external-url-ok: raw <video> src, CC-BY-SA 4.0 (Wikimedia Commons)
556
+ thumbnailUrl: seedExtMedia("https://picsum.photos/seed/product-video-thumb-beyblade-burst-spryzen-video-demo-20260821/800/450"),
557
+ duration: 14,
558
+ },
559
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
560
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
561
+ tags: ["stamina-type"],
562
+ storeId: "store-beyblade-arena",
563
+ storeName: "Beyblade Arena",
564
+ createdAt: new Date("2026-08-21"),
565
+ updatedAt: new Date("2026-08-21"),
566
+ },
338
567
  ];
339
568
  export const productsStandardSeedData = [
340
569
  ..._rawProductsStandardSeedData.map((p) => withTokens({
341
570
  ...p,
571
+ ...(p.id ? SPEC_OVERRIDES[p.id] : undefined),
342
572
  listingType: PRODUCT_FIELDS.LISTING_TYPE_VALUES.STANDARD,
343
573
  })),
344
574
  ];
@@ -1,10 +1,13 @@
1
1
  /*
2
- * WHY: Sticker listings are out of scope for the minimal Beyblade-focused demo catalog.
3
- * WHAT: Exports an empty array kept as a stub so seed/index.ts and the seed API route's
4
- * SEED_DATA_MAP.products concatenation keep working without a code change elsewhere.
2
+ * WHY: `listingType: "stickers"` shares ProductPrintMeta (size/material/finish/editionSize)
3
+ * with "art"both printed-only physical goods. Previously left as an empty stub,
4
+ * but sticker sheets fit the Beyblade theme naturally (see CLAUDE.md seed-data
5
+ * blandness sweep, 2026-08-20 session).
6
+ * WHAT: Exports 5 Beyblade sticker-sheet listings on Beyblade Arena, varying size,
7
+ * material, and finish (including a holographic variant and a die-cut vinyl set).
5
8
  *
6
9
  * EXPORTS:
7
- * productsStickersSeedData — empty array
10
+ * productsStickersSeedData — Array of 5 Partial<ProductDocument> with listingType:"stickers"
8
11
  *
9
12
  * @tag domain:products,stickers
10
13
  * @tag layer:seed
@@ -13,4 +16,174 @@
13
16
  * @tag consumers:seed/index.ts,seed/runner.ts
14
17
  * @tag sideEffects:none
15
18
  */
16
- export const productsStickersSeedData = [];
19
+ import { PRODUCT_FIELDS } from "../constants/field-names";
20
+ import { buildSearchTokens } from "../utils/search-tokens";
21
+ import { seedExtMedia } from "./_helpers/media";
22
+ export const productsStickersSeedData = [
23
+ {
24
+ id: "stickers-beyblade-original-classic-sheet",
25
+ slug: "stickers-beyblade-original-classic-sheet",
26
+ title: "Beyblade Original Classic — Sticker Sheet",
27
+ description: "A 5x5 cm sticker sheet featuring Dranzer, Driger, Draciel, and Dragoon in classic original-series art style.",
28
+ categorySlugs: ["category-beyblade-original", "category-spinning-tops"],
29
+ categoryNames: ["Beyblade Original", "Spinning Tops"],
30
+ brandSlug: "brand-beyblade",
31
+ brand: "Beyblade",
32
+ price: 149,
33
+ currency: "INR",
34
+ stockQuantity: 100,
35
+ availableQuantity: 100,
36
+ isSold: false,
37
+ mainImage: seedExtMedia("https://picsum.photos/seed/stickers-image-original-classic-1-20260817/900/900"),
38
+ images: [seedExtMedia("https://picsum.photos/seed/stickers-image-original-classic-1-20260817/900/900")],
39
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
40
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
41
+ listingType: "stickers",
42
+ storeId: "store-beyblade-arena",
43
+ storeName: "Beyblade Arena",
44
+ printMeta: { size: "5x5 cm sheet", material: "Vinyl", finish: "Glossy" },
45
+ customFields: [],
46
+ customSections: [],
47
+ featured: false,
48
+ isPromoted: false,
49
+ isOnSale: false,
50
+ tags: ["stickers", "vintage-collectible"],
51
+ createdAt: new Date("2026-08-17"),
52
+ updatedAt: new Date("2026-08-17"),
53
+ searchTokens: buildSearchTokens("Beyblade Original Classic — Sticker Sheet", "5x5 cm sticker sheet featuring Dranzer, Driger, Draciel, and Dragoon.", "Beyblade", "brand-beyblade", ["Beyblade Original", "Spinning Tops"], ["stickers", "vintage-collectible"]),
54
+ },
55
+ {
56
+ id: "stickers-beyblade-x-holographic-pack",
57
+ slug: "stickers-beyblade-x-holographic-pack",
58
+ title: "Beyblade X Holographic Sticker Pack",
59
+ description: "A holographic-finish sticker pack featuring the current Beyblade X lineup — catches the light with a rainbow shimmer.",
60
+ categorySlugs: ["category-beyblade-x", "category-spinning-tops"],
61
+ categoryNames: ["Beyblade X", "Spinning Tops"],
62
+ brandSlug: "brand-takara-tomy",
63
+ brand: "Takara-Tomy",
64
+ price: 199,
65
+ currency: "INR",
66
+ stockQuantity: 80,
67
+ availableQuantity: 62,
68
+ isSold: false,
69
+ mainImage: seedExtMedia("https://picsum.photos/seed/stickers-image-x-holo-1-20260818/900/900"),
70
+ images: [
71
+ seedExtMedia("https://picsum.photos/seed/stickers-image-x-holo-1-20260818/900/900"),
72
+ seedExtMedia("https://picsum.photos/seed/stickers-image-x-holo-2-20260818/900/900"),
73
+ ],
74
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
75
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
76
+ listingType: "stickers",
77
+ storeId: "store-beyblade-arena",
78
+ storeName: "Beyblade Arena",
79
+ printMeta: { size: "8x10 cm sheet", material: "Holographic vinyl", finish: "Holographic" },
80
+ customFields: [],
81
+ customSections: [],
82
+ featured: true,
83
+ isPromoted: false,
84
+ isOnSale: false,
85
+ tags: ["stickers"],
86
+ createdAt: new Date("2026-08-18"),
87
+ updatedAt: new Date("2026-08-19"),
88
+ searchTokens: buildSearchTokens("Beyblade X Holographic Sticker Pack", "Holographic-finish sticker pack featuring the current Beyblade X lineup.", "Takara-Tomy", "brand-takara-tomy", ["Beyblade X", "Spinning Tops"], ["stickers"]),
89
+ },
90
+ {
91
+ id: "stickers-beyblade-burst-diecut-set",
92
+ slug: "stickers-beyblade-burst-diecut-set",
93
+ title: "Beyblade Burst Die-Cut Sticker Set (6-Pack)",
94
+ description: "Individually die-cut vinyl stickers of 6 fan-favorite Burst tops — no background, clean edges, weatherproof.",
95
+ categorySlugs: ["category-beyblade-burst", "category-spinning-tops"],
96
+ categoryNames: ["Beyblade Burst", "Spinning Tops"],
97
+ brandSlug: "brand-beyblade",
98
+ brand: "Beyblade",
99
+ price: 249,
100
+ currency: "INR",
101
+ stockQuantity: 60,
102
+ availableQuantity: 60,
103
+ isSold: false,
104
+ mainImage: seedExtMedia("https://picsum.photos/seed/stickers-image-burst-diecut-1-20260819/900/900"),
105
+ images: [seedExtMedia("https://picsum.photos/seed/stickers-image-burst-diecut-1-20260819/900/900")],
106
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
107
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
108
+ listingType: "stickers",
109
+ storeId: "store-beyblade-arena",
110
+ storeName: "Beyblade Arena",
111
+ printMeta: { size: "Individually die-cut, ~6x6 cm each", material: "Weatherproof vinyl", finish: "Matte" },
112
+ customFields: [{ key: "Pack Count", type: "number", value: "6" }],
113
+ customSections: [],
114
+ featured: false,
115
+ isPromoted: false,
116
+ isOnSale: false,
117
+ tags: ["stickers"],
118
+ createdAt: new Date("2026-08-19"),
119
+ updatedAt: new Date("2026-08-19"),
120
+ searchTokens: buildSearchTokens("Beyblade Burst Die-Cut Sticker Set (6-Pack)", "Individually die-cut vinyl stickers of 6 fan-favorite Burst tops.", "Beyblade", "brand-beyblade", ["Beyblade Burst", "Spinning Tops"], ["stickers"]),
121
+ },
122
+ {
123
+ id: "stickers-beyblade-metal-retro-sheet",
124
+ slug: "stickers-beyblade-metal-retro-sheet",
125
+ title: "Metal Fight Retro Sticker Sheet — Limited /500",
126
+ description: "A limited-edition retro-styled sticker sheet celebrating Metal Fight favorites, numbered out of 500.",
127
+ categorySlugs: ["category-beyblade-metal", "category-spinning-tops"],
128
+ categoryNames: ["Beyblade Metal Fight", "Spinning Tops"],
129
+ brandSlug: "brand-takara-tomy",
130
+ brand: "Takara-Tomy",
131
+ price: 179,
132
+ currency: "INR",
133
+ stockQuantity: 500,
134
+ availableQuantity: 214,
135
+ isSold: false,
136
+ mainImage: seedExtMedia("https://picsum.photos/seed/stickers-image-metal-retro-1-20260819/900/900"),
137
+ images: [seedExtMedia("https://picsum.photos/seed/stickers-image-metal-retro-1-20260819/900/900")],
138
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
139
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
140
+ listingType: "stickers",
141
+ storeId: "store-beyblade-arena",
142
+ storeName: "Beyblade Arena",
143
+ printMeta: { size: "6x8 cm sheet", material: "Vinyl", finish: "Matte", editionSize: 500 },
144
+ customFields: [],
145
+ customSections: [],
146
+ featured: false,
147
+ isPromoted: false,
148
+ isOnSale: false,
149
+ tags: ["stickers", "vintage-collectible", "limited-run"],
150
+ createdAt: new Date("2026-08-19"),
151
+ updatedAt: new Date("2026-08-19"),
152
+ searchTokens: buildSearchTokens("Metal Fight Retro Sticker Sheet — Limited /500", "Limited-edition retro-styled sticker sheet, numbered out of 500.", "Takara-Tomy", "brand-takara-tomy", ["Beyblade Metal Fight", "Spinning Tops"], ["stickers", "vintage-collectible", "limited-run"]),
153
+ },
154
+ {
155
+ id: "stickers-beyblade-x-glow-in-dark",
156
+ slug: "stickers-beyblade-x-glow-in-dark",
157
+ title: "Beyblade X Glow-in-the-Dark Sticker Pack",
158
+ description: "Charge these stickers under light and watch the Beyblade X logos glow in the dark. Great for stadium cases and water bottles.",
159
+ categorySlugs: ["category-beyblade-x", "category-spinning-tops"],
160
+ categoryNames: ["Beyblade X", "Spinning Tops"],
161
+ brandSlug: "brand-takara-tomy",
162
+ brand: "Takara-Tomy",
163
+ price: 229,
164
+ currency: "INR",
165
+ stockQuantity: 45,
166
+ availableQuantity: 45,
167
+ isSold: false,
168
+ mainImage: seedExtMedia("https://picsum.photos/seed/stickers-image-x-glow-1-20260819/900/900"),
169
+ images: [
170
+ seedExtMedia("https://picsum.photos/seed/stickers-image-x-glow-1-20260819/900/900"),
171
+ seedExtMedia("https://picsum.photos/seed/stickers-image-x-glow-2-20260819/900/900"),
172
+ ],
173
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
174
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
175
+ listingType: "stickers",
176
+ storeId: "store-beyblade-arena",
177
+ storeName: "Beyblade Arena",
178
+ printMeta: { size: "7x9 cm sheet", material: "Glow-in-the-dark vinyl", finish: "Matte" },
179
+ customFields: [{ key: "Glow Duration", type: "text", value: "~3 hours after charging" }],
180
+ customSections: [],
181
+ featured: true,
182
+ isPromoted: true,
183
+ isOnSale: false,
184
+ tags: ["stickers"],
185
+ createdAt: new Date("2026-08-19"),
186
+ updatedAt: new Date("2026-08-19"),
187
+ searchTokens: buildSearchTokens("Beyblade X Glow-in-the-Dark Sticker Pack", "Charge under light and watch the Beyblade X logos glow in the dark.", "Takara-Tomy", "brand-takara-tomy", ["Beyblade X", "Spinning Tops"], ["stickers"]),
188
+ },
189
+ ];
@@ -12,9 +12,6 @@
12
12
  * @tag consumers:seed/index.ts,seed/runner.ts
13
13
  * @tag sideEffects:none
14
14
  */
15
- import { getDefaultPhonePrefix, getSeedLocale } from "./seed-market-config";
16
- const _phonePrefix = getDefaultPhonePrefix();
17
- const _locale = getSeedLocale();
18
15
  import { seedExtMedia } from "./_helpers/media";
19
16
  import { ROUTES } from "../next/routing/route-map";
20
17
  const NOW = new Date();
@@ -119,7 +116,7 @@ export const siteSettingsSeedData = {
119
116
  { year: "2026", text: "Pre-orders, events, raffles, and a mobile-first redesign — built for the community that showed up, bid, sold, and kept coming back." },
120
117
  ],
121
118
  teamTitle: "Who's Behind LetItRip",
122
- teamSubtitle: "A small team obsessed with the same thing you are — the hunt for the next piece of the collection.",
119
+ teamSubtitle: "One collector obsessed with the same thing you are — the hunt for the next piece of the collection.",
123
120
  teamMembers: [
124
121
  {
125
122
  name: "Mohasin Chinnapattan",
@@ -130,22 +127,6 @@ export const siteSettingsSeedData = {
130
127
  isDeveloper: true,
131
128
  githubUrl: "https://github.com/mohasinac",
132
129
  },
133
- {
134
- name: "Ananya Rao",
135
- role: "Community & Trust",
136
- bio: "Keeps the marketplace honest — seller verification, dispute resolution, and the reason LetItRip's escrow system actually works the way it's supposed to. Collects vintage diecast when she isn't reviewing seller applications.",
137
- photoUrl: seedExtMedia("https://picsum.photos/seed/letitrip-team-ananya-rao-20260819/400/400"),
138
- isFounder: false,
139
- isDeveloper: false,
140
- },
141
- {
142
- name: "Devansh Mehta",
143
- role: "Seller Success",
144
- bio: "Helps new stores go from zero listings to their first sale — onboarding, storefront setup, and the occasional 2 a.m. \"why isn't my auction showing up\" message. Runs a Beyblade collection that has outgrown two apartments.",
145
- photoUrl: seedExtMedia("https://picsum.photos/seed/letitrip-team-devansh-mehta-20260819/400/400"),
146
- isFounder: false,
147
- isDeveloper: false,
148
- },
149
130
  ],
150
131
  ctaTitle: "Ready to Let It Rip?",
151
132
  ctaSell: "Start selling in minutes",
@@ -173,10 +154,10 @@ export const siteSettingsSeedData = {
173
154
  },
174
155
  contact: {
175
156
  email: "support@letitrip.in",
176
- phone: `${_phonePrefix}-9876543210`,
177
- address: `123, Marketplace Street, ${_locale.cities[0][0]}, ${_locale.cities[0][1]} - ${_locale.cities[0][2]}, ${_locale.countryName}`,
178
- upiVpa: "letitrip@upi",
179
- whatsappNumber: `${_phonePrefix.replace(/[^+\d]/g, "")}9876543210`,
157
+ phone: "+91-8919665811",
158
+ address: "Siddeshwar Peth, Solapur, Maharashtra 413001",
159
+ upiVpa: "mohsin0502@okicici",
160
+ whatsappNumber: "918919665811",
180
161
  },
181
162
  payment: {
182
163
  razorpayEnabled: false,
@@ -194,15 +175,27 @@ export const siteSettingsSeedData = {
194
175
  surchargeSellerSharePercent: 50,
195
176
  },
196
177
  socialLinks: {
197
- facebook: "https://facebook.com/letitrip",
198
- twitter: "https://twitter.com/letitrip",
199
- instagram: "https://instagram.com/letitrip",
200
- linkedin: "https://linkedin.com/company/letitrip",
178
+ facebook: "",
179
+ twitter: "",
180
+ instagram: "",
181
+ linkedin: "",
201
182
  },
202
183
  emailSettings: {
203
184
  fromName: "LetItRip",
204
185
  fromEmail: "noreply@letitrip.in",
205
186
  replyTo: "support@letitrip.in",
187
+ // Admin-editable in Site Settings → Notifications. The Gmail address is a
188
+ // standing CC so the digest still lands somewhere reachable even if the
189
+ // @letitrip.in mailboxes aren't receiving mail yet.
190
+ dailyDigest: {
191
+ enabled: true,
192
+ recipients: [
193
+ "support@letitrip.in",
194
+ "reply@letitrip.in",
195
+ "mohasin@letitrip.in",
196
+ ],
197
+ ccRecipients: ["letitrip.in@gmail.com"],
198
+ },
206
199
  },
207
200
  seo: {
208
201
  defaultTitle: "LetItRip — Buy, Sell & Auction Collectibles | India's Collectibles Marketplace",
@@ -356,7 +349,7 @@ export const siteSettingsSeedData = {
356
349
  minOrderValue: 999,
357
350
  returnWindow: 7,
358
351
  supportEmail: "support@letitrip.in",
359
- supportPhone: `${_phonePrefix}-9876543210`,
352
+ supportPhone: "+91-8919665811",
360
353
  codDeposit: 0.1,
361
354
  },
362
355
  },
@@ -510,7 +503,7 @@ export const siteSettingsSeedData = {
510
503
  razorpayKeyId: "rzp_test_PLACEHOLDER",
511
504
  razorpayKeySecret: "secret_PLACEHOLDER",
512
505
  razorpayWebhookSecret: "webhook_PLACEHOLDER",
513
- resendApiKey: "re_PLACEHOLDER",
506
+ resendApiKey: "",
514
507
  whatsappApiKey: "wa_PLACEHOLDER",
515
508
  whatsappPhoneNumberId: "",
516
509
  whatsappCloudApiToken: "",
@@ -49,7 +49,7 @@ export const payoutMethodsSeedData = [
49
49
  storeId: "store-letitrip-official",
50
50
  type: "upi",
51
51
  label: "LetItRip UPI",
52
- upiVpa: "letitrip@upi",
52
+ upiVpa: "mohsin0502@okicici",
53
53
  isDefault: true,
54
54
  isActive: true,
55
55
  },
@@ -61,7 +61,7 @@ export const payoutMethodsSeedData = [
61
61
  label: "SBI Current Account",
62
62
  accountNumber: "00112233445566",
63
63
  ifscCode: "SBIN0001234",
64
- accountHolderName: "Mock User 1",
64
+ accountHolderName: "Mohasin Chinnapattan",
65
65
  bankName: "State Bank of India",
66
66
  isDefault: false,
67
67
  isActive: true,
@@ -28,6 +28,9 @@ export { PrizeDrawsListingView } from "./features/products/components/PrizeDraws
28
28
  export { PrizeDrawDetailPageView } from "./features/products/components/PrizeDrawDetailPageView";
29
29
  export { ProductDetailPageView } from "./features/products/components/ProductDetailPageView";
30
30
  export { ProductsIndexPageView } from "./features/products/components/ProductsIndexPageView";
31
+ export { ClassifiedDetailPageView } from "./features/classified/components/ClassifiedDetailPageView";
32
+ export { DigitalCodeDetailPageView } from "./features/digital-codes/components/DigitalCodeDetailPageView";
33
+ export { LiveItemDetailPageView } from "./features/live/components/LiveItemDetailPageView";
31
34
  export { ArtStickersListView } from "./features/products/components/ArtStickersListView";
32
35
  export { ReviewsIndexPageView } from "./features/reviews/components/ReviewsIndexPageView";
33
36
  export { ReviewDetailPageView } from "./features/reviews/components/ReviewDetailPageView";
@@ -61,7 +64,7 @@ export { renderFaqOg, renderFaqOgImage, type FaqOgData, } from "./_internal/serv
61
64
  export { renderScamOg, renderScamOgImage, type ScamOgData, getScammerForDetail, getScammerProfilePageData as getScammerProfilePageDataCached, } from "./_internal/server/features/scams/index";
62
65
  export { getSearchResults, searchAction, type SearchQuery, } from "./_internal/server/features/search/index";
63
66
  export { getCategoryForDetail, listRootCategories, listFeaturedCategories, listMenuCategories, getCategoryTree, listSitemapCategories, CATEGORIES_PAGE_SIZE, CATEGORIES_ROOT_TIER, CATEGORIES_MAX_DEPTH, CATEGORIES_SITEMAP_LIMIT, CATEGORIES_FEATURED_LIMIT, CATEGORIES_MENU_LIMIT, } from "./_internal/server/features/categories/index";
64
- export { getGroupedListingForDetail, getGroupedListingWithItems, listGroupedListings, listFeaturedGroupedListings, listSitemapGroupedListings, GROUPED_LISTINGS_PAGE_SIZE, GROUPED_LISTINGS_FEATURED_LIMIT, GROUPED_LISTINGS_SITEMAP_LIMIT, type GroupedListingWithItems, type ListGroupedListingsParams, type SitemapGroupedListing, } from "./_internal/server/features/grouped/index";
67
+ export { getGroupedListingForDetail, getGroupedListingWithItems, listGroupedListings, listFeaturedGroupedListings, listSitemapGroupedListings, getGroupsForProduct, getGroupsWithItemsForProduct, GROUPED_LISTINGS_PAGE_SIZE, GROUPED_LISTINGS_FEATURED_LIMIT, GROUPED_LISTINGS_SITEMAP_LIMIT, type GroupedListingWithItems, type ListGroupedListingsParams, type SitemapGroupedListing, } from "./_internal/server/features/grouped/index";
65
68
  export { createCheckoutOrderAction, attachPaymentAction, verifyAndPlaceRazorpayOrderAction, previewCheckoutPricing, resolveShippingCost, formatShippingAddress, CHECKOUT_DEFAULT_COMMISSIONS, CHECKOUT_PAYMENT_METHODS, type CreateCheckoutOrderInput, type VerifyAndPlaceRazorpayOrderInput, type CheckoutOrderResult, type CheckoutPaymentMethod, type CheckoutPricingPreviewInput, type CheckoutPricingPreview, } from "./_internal/server/features/checkout/index";
66
69
  export { processRefundAction, type ProcessRefundInput, } from "./_internal/server/features/refunds/actions";
67
70
  export { createPaymentIntentAction, verifyPaymentSignatureAction, resolvePaymentFee, PAYMENTS_DEFAULT_PLATFORM_FEE_PERCENT, PAYMENTS_DEFAULT_GST_PERCENT, PAYMENTS_RECEIPT_PREFIX, type CreatePaymentIntentInput, type CreatePaymentIntentResult, type VerifyPaymentSignatureInput, type ResolvedPaymentFee, } from "./_internal/server/features/payments/index";
@@ -74,7 +77,8 @@ export * as accountServer from "./_internal/server/features/account/index";
74
77
  export * as authServer from "./_internal/server/features/auth/index";
75
78
  export * as messagesServer from "./_internal/server/features/messages/index";
76
79
  export * as scamsServer from "./_internal/server/features/scams/index";
77
- export { AppkitError, NotFoundError, ValidationError, UnauthorizedError, ConflictError, CapacityError, ExpiredError, } from "./_internal/shared/errors/index";
80
+ export { AppkitError, UnauthorizedError, CapacityError, ExpiredError, } from "./_internal/shared/errors/index";
81
+ export { NotFoundError, ValidationError, ConflictError } from "./errors/index";
78
82
  export type { AppkitConfig } from "./_internal/shared/config/schema";
79
83
  export { SEMANTIC_COLORS, SEMANTIC_COLORS_DARK, SEMANTIC_RADIUS, SEMANTIC_SHADOWS, SEMANTIC_Z_INDEX, MOTION_TOKENS, BREAKPOINTS, PLATFORM_LIMITS, } from "./_internal/shared/tokens/index";
80
84
  export type { Responsive, Breakpoint, SemanticColor } from "./_internal/shared/tokens/index";