@mohasinac/appkit 2.7.56 → 2.7.57

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 (276) hide show
  1. package/dist/_internal/shared/actions/action-registry.js +31 -5
  2. package/dist/client.d.ts +1 -3
  3. package/dist/client.js +1 -2
  4. package/dist/constants/field-names.d.ts +3 -0
  5. package/dist/constants/field-names.js +3 -0
  6. package/dist/features/about/components/FAQPageView.js +2 -2
  7. package/dist/features/about/components/FeesView.js +1 -1
  8. package/dist/features/about/components/PolicyPageView.js +1 -1
  9. package/dist/features/about/components/PublicProfileView.js +1 -1
  10. package/dist/features/account/components/AddressesIndexListing.js +1 -1
  11. package/dist/features/account/components/MessagesView.js +1 -1
  12. package/dist/features/account/components/NotificationPreferencesPanel.js +12 -3
  13. package/dist/features/account/components/UserOffersPanel.js +2 -2
  14. package/dist/features/account/components/UserSidebar.js +3 -3
  15. package/dist/features/account/components/UserSupportView.js +1 -1
  16. package/dist/features/admin/components/AdminAllEventEntriesView.js +1 -1
  17. package/dist/features/admin/components/AdminBidsView.js +5 -1
  18. package/dist/features/admin/components/AdminBlogView.js +6 -1
  19. package/dist/features/admin/components/AdminBrandsView.js +6 -1
  20. package/dist/features/admin/components/AdminBundleEditorView.js +13 -9
  21. package/dist/features/admin/components/AdminBundlesView.js +3 -1
  22. package/dist/features/admin/components/AdminCarouselEditorView.js +7 -8
  23. package/dist/features/admin/components/AdminCarouselView.js +4 -2
  24. package/dist/features/admin/components/AdminCartsView.js +1 -1
  25. package/dist/features/admin/components/AdminCategoriesView.js +6 -1
  26. package/dist/features/admin/components/AdminContactView.js +3 -1
  27. package/dist/features/admin/components/AdminCouponsView.js +4 -2
  28. package/dist/features/admin/components/AdminEmployeeEditorView.js +1 -1
  29. package/dist/features/admin/components/AdminFaqsView.js +3 -1
  30. package/dist/features/admin/components/AdminFeatureFlagsView.js +1 -1
  31. package/dist/features/admin/components/AdminFeaturesView.js +4 -0
  32. package/dist/features/admin/components/AdminMediaView.js +10 -5
  33. package/dist/features/admin/components/AdminNavigationView.js +1 -1
  34. package/dist/features/admin/components/AdminNewsletterView.js +3 -1
  35. package/dist/features/admin/components/AdminNotificationsView.js +6 -1
  36. package/dist/features/admin/components/AdminOrdersView.js +10 -1
  37. package/dist/features/admin/components/AdminPayoutsView.js +5 -1
  38. package/dist/features/admin/components/AdminPrizeDrawsView.js +4 -0
  39. package/dist/features/admin/components/AdminProductsView.js +13 -1
  40. package/dist/features/admin/components/AdminReviewsView.js +6 -1
  41. package/dist/features/admin/components/AdminScammersView.js +1 -1
  42. package/dist/features/admin/components/AdminSectionsView.js +1 -1
  43. package/dist/features/admin/components/AdminSessionsView.js +5 -1
  44. package/dist/features/admin/components/AdminSidebar.js +3 -3
  45. package/dist/features/admin/components/AdminSiteSettingsView.js +1 -1
  46. package/dist/features/admin/components/AdminStoreEditorView.js +1 -1
  47. package/dist/features/admin/components/AdminStoresView.js +6 -1
  48. package/dist/features/admin/components/AdminSublistingCategoriesView.js +2 -0
  49. package/dist/features/admin/components/AdminSupportTicketDetailView.js +1 -1
  50. package/dist/features/admin/components/AdminSupportTicketsView.js +1 -1
  51. package/dist/features/admin/components/AdminTeamView.js +3 -1
  52. package/dist/features/admin/components/AdminUserEditorView.js +1 -1
  53. package/dist/features/admin/components/AdminUsersView.js +5 -1
  54. package/dist/features/admin/components/AdminViewCards.js +2 -2
  55. package/dist/features/admin/constants/filter-tabs.d.ts +9 -0
  56. package/dist/features/admin/constants/filter-tabs.js +3 -0
  57. package/dist/features/auctions/components/AuctionBottomActions.d.ts +7 -0
  58. package/dist/features/auctions/components/AuctionBottomActions.js +24 -0
  59. package/dist/features/auctions/components/AuctionDetailPageView.js +7 -7
  60. package/dist/features/auctions/components/AuctionsListView.js +1 -1
  61. package/dist/features/auctions/components/MarketplaceAuctionGrid.js +1 -1
  62. package/dist/features/auctions/components/PlaceBidFormClient.js +1 -1
  63. package/dist/features/auth/components/LoginForm.js +1 -1
  64. package/dist/features/auth/components/VerifyEmailView.js +2 -2
  65. package/dist/features/before-after/components/BeforeAfterGallery.js +1 -1
  66. package/dist/features/blog/components/BlogFeaturedCard.js +1 -1
  67. package/dist/features/blog/components/BlogIndexListing.js +1 -1
  68. package/dist/features/blog/components/BlogListView.js +2 -2
  69. package/dist/features/blog/components/BlogPostView.js +8 -8
  70. package/dist/features/cart/components/CartDrawer.js +1 -1
  71. package/dist/features/cart/repository/cart.repository.js +11 -4
  72. package/dist/features/cart/schemas/firestore.d.ts +3 -0
  73. package/dist/features/categories/components/BrandDetailPageView.js +1 -1
  74. package/dist/features/categories/components/CategoriesIndexListing.js +1 -1
  75. package/dist/features/categories/components/CategoryDetailPageView.js +39 -3
  76. package/dist/features/categories/components/CategoryDetailTabs.d.ts +4 -1
  77. package/dist/features/categories/components/CategoryDetailTabs.js +7 -2
  78. package/dist/features/categories/components/CategoryGrid.js +1 -1
  79. package/dist/features/categories/components/CategoryProductsView.js +1 -1
  80. package/dist/features/categories/components/CategoryStoresListing.d.ts +5 -0
  81. package/dist/features/categories/components/CategoryStoresListing.js +11 -0
  82. package/dist/features/categories/components/CategoryTableColumns.js +2 -2
  83. package/dist/features/categories/components/CategoryTree.js +1 -1
  84. package/dist/features/categories/components/index.d.ts +2 -0
  85. package/dist/features/categories/components/index.js +1 -0
  86. package/dist/features/checkout/components/CheckoutStepper.js +1 -1
  87. package/dist/features/classified/components/ClassifiedIndexListing.js +2 -0
  88. package/dist/features/classified/components/ClassifiedListView.js +1 -1
  89. package/dist/features/contact/components/ContactInfoSidebar.js +1 -1
  90. package/dist/features/digital-codes/components/DigitalCodesIndexListing.js +2 -0
  91. package/dist/features/digital-codes/components/DigitalCodesListView.js +1 -1
  92. package/dist/features/events/components/AdminEventsView.js +5 -1
  93. package/dist/features/events/components/EventCard.js +1 -1
  94. package/dist/features/events/components/EventPollWidget.js +1 -1
  95. package/dist/features/events/components/EventStatusBadge.js +5 -5
  96. package/dist/features/events/components/EventsIndexListing.js +1 -1
  97. package/dist/features/events/components/EventsListView.js +2 -2
  98. package/dist/features/events/components/SpinWheelView.js +4 -2
  99. package/dist/features/filters/AsyncFacetSection.js +3 -3
  100. package/dist/features/filters/FilterFacetSection.js +5 -5
  101. package/dist/features/filters/RangeFilter.js +1 -1
  102. package/dist/features/forms/Input.js +2 -2
  103. package/dist/features/forms/Select.js +1 -1
  104. package/dist/features/forms/Slider.js +1 -1
  105. package/dist/features/forms/Textarea.js +1 -1
  106. package/dist/features/forms/utils.d.ts +1 -1
  107. package/dist/features/forms/utils.js +1 -1
  108. package/dist/features/history/hooks/useHistory.js +23 -10
  109. package/dist/features/homepage/components/AdvertisementBanner.js +2 -2
  110. package/dist/features/homepage/components/FeaturedResultsSection.js +1 -1
  111. package/dist/features/homepage/components/HeroSection.js +1 -1
  112. package/dist/features/homepage/components/NewsletterSection.js +1 -1
  113. package/dist/features/homepage/components/SectionCarousel.js +1 -1
  114. package/dist/features/live/components/LiveItemsIndexListing.js +2 -0
  115. package/dist/features/live/components/LiveItemsListView.js +1 -1
  116. package/dist/features/orders/components/OrdersList.js +12 -12
  117. package/dist/features/pre-orders/components/MarketplacePreorderCard.js +1 -1
  118. package/dist/features/pre-orders/components/PreOrderActionsClient.js +1 -1
  119. package/dist/features/pre-orders/components/PreOrderBadge.js +5 -5
  120. package/dist/features/pre-orders/components/PreOrderBottomActions.d.ts +5 -0
  121. package/dist/features/pre-orders/components/PreOrderBottomActions.js +22 -0
  122. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +5 -5
  123. package/dist/features/pre-orders/components/PreOrdersIndexListing.js +47 -0
  124. package/dist/features/pre-orders/components/PreOrdersListView.js +1 -1
  125. package/dist/features/pre-orders/components/PreorderCard.js +3 -3
  126. package/dist/features/products/components/AuctionsIndexListing.js +23 -0
  127. package/dist/features/products/components/BidHistory.js +2 -2
  128. package/dist/features/products/components/CompareOverlay.js +1 -1
  129. package/dist/features/products/components/CustomFieldsEditor.js +1 -1
  130. package/dist/features/products/components/CustomSectionTabContent.js +1 -1
  131. package/dist/features/products/components/CustomSectionsEditor.js +1 -1
  132. package/dist/features/products/components/GroupSettingsPanel.js +2 -2
  133. package/dist/features/products/components/MakeOfferButton.js +1 -1
  134. package/dist/features/products/components/PrizeDrawBottomActions.d.ts +6 -0
  135. package/dist/features/products/components/PrizeDrawBottomActions.js +24 -0
  136. package/dist/features/products/components/PrizeDrawDetailPageView.js +3 -5
  137. package/dist/features/products/components/PrizeDrawEntryActions.js +5 -18
  138. package/dist/features/products/components/PrizeRevealModal.js +5 -2
  139. package/dist/features/products/components/ProductDetailActions.d.ts +6 -1
  140. package/dist/features/products/components/ProductDetailActions.js +36 -6
  141. package/dist/features/products/components/ProductDetailPageView.js +17 -16
  142. package/dist/features/products/components/ProductGalleryClient.js +1 -1
  143. package/dist/features/products/components/ProductGrid.js +6 -6
  144. package/dist/features/products/components/ProductTabs.js +1 -1
  145. package/dist/features/products/components/ProductTabsShell.js +1 -1
  146. package/dist/features/products/components/ProductsIndexListing.js +47 -0
  147. package/dist/features/products/components/RelatedProducts.js +1 -1
  148. package/dist/features/products/components/ShowGroupSection.js +1 -1
  149. package/dist/features/products/components/SublistingCarouselSection.js +1 -1
  150. package/dist/features/products/components/SublistingCategorySelect.js +1 -1
  151. package/dist/features/products/components/index.d.ts +0 -2
  152. package/dist/features/products/components/index.js +0 -1
  153. package/dist/features/products/constants/action-defs.d.ts +7 -0
  154. package/dist/features/products/constants/action-defs.js +14 -0
  155. package/dist/features/products/constants/listing-tabs.d.ts +6 -0
  156. package/dist/features/products/constants/listing-tabs.js +1 -0
  157. package/dist/features/promotions/components/CouponCard.js +2 -2
  158. package/dist/features/promotions/components/CouponsIndexListing.js +2 -2
  159. package/dist/features/reviews/components/ReviewDetailPageView.js +1 -1
  160. package/dist/features/reviews/components/ReviewDetailShell.js +3 -3
  161. package/dist/features/reviews/components/ReviewModal.js +2 -2
  162. package/dist/features/reviews/components/ReviewSummary.js +1 -1
  163. package/dist/features/reviews/components/ReviewsIndexListing.js +1 -1
  164. package/dist/features/reviews/components/ReviewsList.js +1 -1
  165. package/dist/features/seller/components/SellerAddressesView.js +4 -3
  166. package/dist/features/seller/components/SellerAnalyticsAlertsView.js +1 -1
  167. package/dist/features/seller/components/SellerAuctionsView.js +10 -3
  168. package/dist/features/seller/components/SellerBidsView.js +22 -7
  169. package/dist/features/seller/components/SellerBundlesView.js +10 -3
  170. package/dist/features/seller/components/SellerClassifiedView.js +10 -3
  171. package/dist/features/seller/components/SellerCouponsView.js +13 -4
  172. package/dist/features/seller/components/SellerDigitalCodesView.js +10 -3
  173. package/dist/features/seller/components/SellerGoogleReviewsView.js +10 -5
  174. package/dist/features/seller/components/SellerGroupedListingsView.js +2 -0
  175. package/dist/features/seller/components/SellerLiveView.js +10 -3
  176. package/dist/features/seller/components/SellerOffersPanel.js +2 -2
  177. package/dist/features/seller/components/SellerOffersView.js +1 -1
  178. package/dist/features/seller/components/SellerOrdersView.js +40 -17
  179. package/dist/features/seller/components/SellerPayoutMethodsView.js +13 -4
  180. package/dist/features/seller/components/SellerPayoutsView.js +1 -1
  181. package/dist/features/seller/components/SellerPreOrdersView.js +7 -2
  182. package/dist/features/seller/components/SellerPrizeDrawsView.js +7 -2
  183. package/dist/features/seller/components/SellerProductShell.js +27 -9
  184. package/dist/features/seller/components/SellerProductsCards.js +2 -1
  185. package/dist/features/seller/components/SellerProductsView.js +21 -8
  186. package/dist/features/seller/components/SellerReviewsView.js +8 -0
  187. package/dist/features/seller/components/SellerShippingConfigsView.js +13 -4
  188. package/dist/features/seller/components/SellerSidebar.js +2 -2
  189. package/dist/features/seller/components/SellerStoreCategoriesView.js +10 -3
  190. package/dist/features/seller/components/SellerTemplatesView.js +19 -6
  191. package/dist/features/shell/StepForm.js +9 -3
  192. package/dist/features/site-settings/components/ActionPermissionsManager.js +1 -1
  193. package/dist/features/site-settings/components/NavPermissionsManager.js +1 -1
  194. package/dist/features/stores/components/InteractiveStoreCard.js +1 -1
  195. package/dist/features/stores/components/StoreDetailLayoutView.js +1 -1
  196. package/dist/features/stores/components/StoreReviewsListing.js +1 -1
  197. package/dist/features/stores/components/StoresIndexListing.js +17 -1
  198. package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +1 -1
  199. package/dist/features/wishlist/components/WishlistPage.js +2 -2
  200. package/dist/features/wishlist/hooks/useWishlistToggle.js +6 -1
  201. package/dist/index.d.ts +3 -2
  202. package/dist/index.js +6 -3
  203. package/dist/react/hooks/use-action-dispatch.d.ts +5 -0
  204. package/dist/react/hooks/use-action-dispatch.js +10 -0
  205. package/dist/seed/cart-seed-data.js +50 -3
  206. package/dist/seed/categories-seed-data.js +80 -16
  207. package/dist/seed/index.d.ts +3 -0
  208. package/dist/seed/index.js +3 -0
  209. package/dist/seed/manifest.js +15 -1
  210. package/dist/seed/products-classifieds-seed-data.d.ts +10 -0
  211. package/dist/seed/products-classifieds-seed-data.js +197 -0
  212. package/dist/seed/products-digital-codes-seed-data.d.ts +10 -0
  213. package/dist/seed/products-digital-codes-seed-data.js +204 -0
  214. package/dist/seed/products-live-items-seed-data.d.ts +13 -0
  215. package/dist/seed/products-live-items-seed-data.js +190 -0
  216. package/dist/styles.css +16 -1
  217. package/dist/tailwind-utilities.css +1 -1
  218. package/dist/tokens/index.d.ts +3 -3
  219. package/dist/tokens/index.js +3 -3
  220. package/dist/ui/DataTable.js +3 -3
  221. package/dist/ui/components/Button.style.css +15 -0
  222. package/dist/ui/components/Input.js +1 -1
  223. package/dist/ui/components/ListingToolbar.js +1 -1
  224. package/dist/ui/components/Select.js +1 -1
  225. package/dist/ui/components/StatsGrid.js +1 -1
  226. package/dist/ui/index.d.ts +0 -4
  227. package/dist/ui/index.js +0 -2
  228. package/package.json +1 -1
  229. package/dist/_internal/client/features/seller/print-center/InventoryLabel.d.ts +0 -12
  230. package/dist/_internal/client/features/seller/print-center/InventoryLabel.js +0 -49
  231. package/dist/_internal/client/features/seller/print-center/LabelDesignPicker.d.ts +0 -7
  232. package/dist/_internal/client/features/seller/print-center/LabelDesignPicker.js +0 -32
  233. package/dist/_internal/client/features/seller/print-center/OrderPackingLabel.d.ts +0 -28
  234. package/dist/_internal/client/features/seller/print-center/OrderPackingLabel.js +0 -33
  235. package/dist/_internal/client/features/seller/print-center/PhysicalLocationModal.d.ts +0 -12
  236. package/dist/_internal/client/features/seller/print-center/PhysicalLocationModal.js +0 -30
  237. package/dist/_internal/client/features/seller/print-center/PrintCenterView.d.ts +0 -12
  238. package/dist/_internal/client/features/seller/print-center/PrintCenterView.js +0 -102
  239. package/dist/_internal/client/features/seller/print-center/PrintGrid.d.ts +0 -12
  240. package/dist/_internal/client/features/seller/print-center/PrintGrid.js +0 -13
  241. package/dist/_internal/client/features/seller/print-center/StoreCard.d.ts +0 -19
  242. package/dist/_internal/client/features/seller/print-center/StoreCard.js +0 -30
  243. package/dist/_internal/client/features/seller/print-center/WebsiteCard.d.ts +0 -11
  244. package/dist/_internal/client/features/seller/print-center/WebsiteCard.js +0 -25
  245. package/dist/_internal/client/features/seller/print-center/index.d.ts +0 -11
  246. package/dist/_internal/client/features/seller/print-center/index.js +0 -10
  247. package/dist/_internal/client/features/seller/print-center/types.d.ts +0 -20
  248. package/dist/_internal/client/features/seller/print-center/types.js +0 -20
  249. package/dist/_internal/client/features/seller/print-center/useInventoryPdf.d.ts +0 -18
  250. package/dist/_internal/client/features/seller/print-center/useInventoryPdf.js +0 -76
  251. package/dist/features/account/repository/address.repository.d.ts +0 -17
  252. package/dist/features/account/repository/address.repository.js +0 -184
  253. package/dist/features/auctions/components/AuctionCard.d.ts +0 -29
  254. package/dist/features/auctions/components/AuctionCard.js +0 -38
  255. package/dist/features/categories/components/BundleAddToCartCta.d.ts +0 -16
  256. package/dist/features/categories/components/BundleAddToCartCta.js +0 -54
  257. package/dist/features/categories/components/CategoriesListView.d.ts +0 -31
  258. package/dist/features/categories/components/CategoriesListView.js +0 -27
  259. package/dist/features/products/components/AuctionsView.d.ts +0 -6
  260. package/dist/features/products/components/AuctionsView.js +0 -5
  261. package/dist/features/products/components/BuyBar.d.ts +0 -21
  262. package/dist/features/products/components/BuyBar.js +0 -19
  263. package/dist/features/products/components/PreOrdersView.d.ts +0 -6
  264. package/dist/features/products/components/PreOrdersView.js +0 -5
  265. package/dist/features/reviews/components/ReviewsListView.d.ts +0 -31
  266. package/dist/features/reviews/components/ReviewsListView.js +0 -16
  267. package/dist/features/stores/components/StoresListView.d.ts +0 -19
  268. package/dist/features/stores/components/StoresListView.js +0 -25
  269. package/dist/features/stores/repository/store-address.repository.d.ts +0 -55
  270. package/dist/features/stores/repository/store-address.repository.js +0 -187
  271. package/dist/ui/components/BulkActionsBar.d.ts +0 -18
  272. package/dist/ui/components/BulkActionsBar.js +0 -25
  273. package/dist/ui/components/CollageLightbox.d.ts +0 -18
  274. package/dist/ui/components/CollageLightbox.js +0 -41
  275. package/dist/ui/components/StickyBottomBar.d.ts +0 -22
  276. package/dist/ui/components/StickyBottomBar.js +0 -20
package/dist/index.d.ts CHANGED
@@ -625,6 +625,9 @@ export { productsStandardSeedData } from "./seed/index";
625
625
  export { productsAuctionsSeedData } from "./seed/index";
626
626
  export { productsPreordersSeedData } from "./seed/index";
627
627
  export { productsPrizeDrawsSeedData } from "./seed/index";
628
+ export { productsClassifiedsSeedData } from "./seed/index";
629
+ export { productsDigitalCodesSeedData } from "./seed/index";
630
+ export { productsLiveItemsSeedData } from "./seed/index";
628
631
  export { registerSeedLocale } from "./seed/index";
629
632
  export { reviewsSeedData } from "./seed/index";
630
633
  export { seedForTest } from "./seed/index";
@@ -2312,7 +2315,6 @@ export type { BundleCollageProps } from "./features/categories/components/Bundle
2312
2315
  export { BundleBuyNowCta } from "./features/categories/components/BundleBuyNowCta";
2313
2316
  export type { BundleBuyNowCtaProps } from "./features/categories/components/BundleBuyNowCta";
2314
2317
  export { BidHistory } from "./features/products/index";
2315
- export { BuyBar } from "./features/products/index";
2316
2318
  export { DEFAULT_PRODUCT_DATA } from "./features/products/index";
2317
2319
  export { InteractiveProductCard } from "./features/products/index";
2318
2320
  export { MakeOfferForm } from "./features/products/index";
@@ -2396,7 +2398,6 @@ export { useRelatedProducts } from "./features/products/index";
2396
2398
  export type { AuctionDetailViewProps } from "./features/products/index";
2397
2399
  export type { BidHistoryEntry } from "./features/products/index";
2398
2400
  export type { BidHistoryProps } from "./features/products/index";
2399
- export type { BuyBarProps } from "./features/products/index";
2400
2401
  export type { InteractiveProductCardProps } from "./features/products/index";
2401
2402
  export type { ListingType } from "./features/products/index";
2402
2403
  export type { MakeOfferFormProps } from "./features/products/index";
package/dist/index.js CHANGED
@@ -1322,6 +1322,12 @@ export { productsPreordersSeedData } from "./seed/index";
1322
1322
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
1323
1323
  // productsPrizeDrawsSeedData - Seed data for prize-draw product listings (SB5-E).
1324
1324
  export { productsPrizeDrawsSeedData } from "./seed/index";
1325
+ // productsClassifiedsSeedData - Seed data for classified product listings (SB-UNI-I).
1326
+ export { productsClassifiedsSeedData } from "./seed/index";
1327
+ // productsDigitalCodesSeedData - Seed data for digital-code product listings (SB-UNI-J).
1328
+ export { productsDigitalCodesSeedData } from "./seed/index";
1329
+ // productsLiveItemsSeedData - Seed data for live-item product listings (SB-UNI-K).
1330
+ export { productsLiveItemsSeedData } from "./seed/index";
1325
1331
  // [SERVER-ONLY]-Server-only â€" uses Node.js, Next.js server internals, or third-party server SDKs (auth, email, payment, shipping).
1326
1332
  // registerSeedLocale - Helper for register seed locale.
1327
1333
  export { registerSeedLocale } from "./seed/index";
@@ -4286,9 +4292,6 @@ export { BundleBuyNowCta } from "./features/categories/components/BundleBuyNowCt
4286
4292
  // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
4287
4293
  // BidHistory - Shared export for bid history.
4288
4294
  export { BidHistory } from "./features/products/index";
4289
- // [CLIENT-SSR]-Runs in both SSR and browser â€" React component or hook that does not depend on browser-only APIs.
4290
- // BuyBar - Shared export for buy bar.
4291
- export { BuyBar } from "./features/products/index";
4292
4295
  // [SCHEMA]-Schema / data-shape constant â€" Zod validator, default-value object, or Firestore collection/field name constant.
4293
4296
  // DEFAULT_PRODUCT_DATA - Constant used across modules.
4294
4297
  export { DEFAULT_PRODUCT_DATA } from "./features/products/index";
@@ -18,6 +18,11 @@ export type DispatchAction = {
18
18
  type: "COPY";
19
19
  text: string;
20
20
  successMessage?: string;
21
+ } | {
22
+ type: "EXECUTE";
23
+ handler: () => Promise<void>;
24
+ successMessage?: string;
25
+ errorMessage?: string;
21
26
  };
22
27
  export interface UseActionDispatchOptions {
23
28
  onBulk?: (actionId: string, ids: string[]) => void;
@@ -25,6 +25,16 @@ export function useActionDispatch(options) {
25
25
  await navigator.clipboard.writeText(action.text);
26
26
  showToast(action.successMessage ?? "Copied!", "success");
27
27
  break;
28
+ case "EXECUTE":
29
+ try {
30
+ await action.handler();
31
+ if (action.successMessage)
32
+ showToast(action.successMessage, "success");
33
+ }
34
+ catch (err) {
35
+ showToast(action.errorMessage ?? (err instanceof Error ? err.message : "Something went wrong."), "error");
36
+ }
37
+ break;
28
38
  }
29
39
  }, [router, showToast, openPanel, options]);
30
40
  }
@@ -17,7 +17,7 @@ const _CURRENCY = getDefaultCurrency();
17
17
  const NOW = new Date();
18
18
  const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
19
19
  export const cartsSeedData = [
20
- // Yugi's cart: 3 items from Kaiba Corp Card Vault
20
+ // Yugi's cart: 3 standard items + 1 won-auction (locked) + 1 accepted-offer (locked)
21
21
  {
22
22
  id: "user-yugi-muto",
23
23
  userId: "user-yugi-muto",
@@ -64,11 +64,44 @@ export const cartsSeedData = [
64
64
  addedAt: daysAgo(1),
65
65
  updatedAt: daysAgo(1),
66
66
  },
67
+ {
68
+ itemId: "cartitem-yugi-blue-eyes-auction-won",
69
+ productId: "auction-blue-eyes-white-dragon-psa9",
70
+ productTitle: "Blue-Eyes White Dragon PSA 9 — Won Auction",
71
+ productImage: "https://images.ygoprodeck.com/images/cards/small/89631139.jpg",
72
+ price: 2499900,
73
+ currency: _CURRENCY,
74
+ quantity: 1,
75
+ storeId: "store-kaiba-corp-cards",
76
+ storeName: "Kaiba Corp Card Vault",
77
+ listingType: "auction",
78
+ locked: true,
79
+ addedAt: daysAgo(1),
80
+ updatedAt: daysAgo(1),
81
+ },
82
+ {
83
+ itemId: "cartitem-yugi-red-eyes-offer-accepted",
84
+ productId: "product-red-eyes-black-dragon-mrd",
85
+ productTitle: "Red-Eyes Black Dragon MRD — Offer Accepted",
86
+ productImage: "https://images.ygoprodeck.com/images/cards/small/74677422.jpg",
87
+ price: 899900,
88
+ currency: _CURRENCY,
89
+ quantity: 1,
90
+ storeId: "store-kaiba-corp-cards",
91
+ storeName: "Kaiba Corp Card Vault",
92
+ listingType: "standard",
93
+ isOffer: true,
94
+ offerId: "offer-yugi-red-eyes-001",
95
+ lockedPrice: 350000,
96
+ locked: true,
97
+ addedAt: daysAgo(1),
98
+ updatedAt: daysAgo(1),
99
+ },
67
100
  ],
68
101
  createdAt: daysAgo(3),
69
102
  updatedAt: daysAgo(1),
70
103
  },
71
- // Kaiba's cart: 2 items from LetItRip Official (Kaiba as buyer)
104
+ // Kaiba's cart: 2 standard + 1 pre-order
72
105
  {
73
106
  id: "user-seto-kaiba",
74
107
  userId: "user-seto-kaiba",
@@ -101,9 +134,23 @@ export const cartsSeedData = [
101
134
  addedAt: daysAgo(4),
102
135
  updatedAt: daysAgo(4),
103
136
  },
137
+ {
138
+ itemId: "cartitem-kaiba-gate-guardian-preorder",
139
+ productId: "preorder-gate-guardian-reprint-2026",
140
+ productTitle: "Gate Guardian 2026 Reprint — Pre-Order",
141
+ productImage: "https://images.ygoprodeck.com/images/cards/small/25833572.jpg",
142
+ price: 349900,
143
+ currency: _CURRENCY,
144
+ quantity: 1,
145
+ storeId: "store-letitrip-official",
146
+ storeName: "LetItRip Official",
147
+ listingType: "pre-order",
148
+ addedAt: daysAgo(2),
149
+ updatedAt: daysAgo(2),
150
+ },
104
151
  ],
105
152
  createdAt: daysAgo(5),
106
- updatedAt: daysAgo(4),
153
+ updatedAt: daysAgo(2),
107
154
  },
108
155
  // Admin's cart: 2 items from Kaiba Corp (Admin as buyer)
109
156
  {
@@ -28,6 +28,16 @@ const emptyMetrics = {
28
28
  totalItemCount: 0,
29
29
  lastUpdated: daysAgo(1),
30
30
  };
31
+ function seedMetrics(productCount, auctionCount = 0) {
32
+ return {
33
+ ...emptyMetrics,
34
+ productCount,
35
+ auctionCount,
36
+ totalProductCount: productCount,
37
+ totalAuctionCount: auctionCount,
38
+ totalItemCount: productCount + auctionCount,
39
+ };
40
+ }
31
41
  // ──────────────────────────────────────────────────────────────────────────────
32
42
  // Categories: 6 broad collectibles roots + YGO-specific sub-hierarchy + leaves
33
43
  // ──────────────────────────────────────────────────────────────────────────────
@@ -52,7 +62,7 @@ const rawCategories = [
52
62
  isLeaf: false,
53
63
  position: 0,
54
64
  subtreeSize: 4,
55
- metrics: emptyMetrics,
65
+ metrics: seedMetrics(34, 5),
56
66
  isFeatured: true,
57
67
  featuredPriority: 1,
58
68
  isBrand: false,
@@ -90,7 +100,7 @@ const rawCategories = [
90
100
  isLeaf: true,
91
101
  position: 0,
92
102
  subtreeSize: 0,
93
- metrics: emptyMetrics,
103
+ metrics: seedMetrics(17, 4),
94
104
  isFeatured: false,
95
105
  isBrand: false,
96
106
  seo: {
@@ -127,7 +137,7 @@ const rawCategories = [
127
137
  isLeaf: true,
128
138
  position: 1,
129
139
  subtreeSize: 0,
130
- metrics: emptyMetrics,
140
+ metrics: seedMetrics(12, 2),
131
141
  isFeatured: false,
132
142
  isBrand: false,
133
143
  seo: {
@@ -164,7 +174,7 @@ const rawCategories = [
164
174
  isLeaf: true,
165
175
  position: 2,
166
176
  subtreeSize: 0,
167
- metrics: emptyMetrics,
177
+ metrics: seedMetrics(3, 1),
168
178
  isFeatured: false,
169
179
  isBrand: false,
170
180
  seo: {
@@ -201,7 +211,7 @@ const rawCategories = [
201
211
  isLeaf: true,
202
212
  position: 3,
203
213
  subtreeSize: 0,
204
- metrics: emptyMetrics,
214
+ metrics: seedMetrics(3),
205
215
  isFeatured: false,
206
216
  isBrand: false,
207
217
  seo: {
@@ -244,7 +254,7 @@ const rawCategories = [
244
254
  isLeaf: false,
245
255
  position: 0,
246
256
  subtreeSize: 4,
247
- metrics: emptyMetrics,
257
+ metrics: seedMetrics(25, 1),
248
258
  isFeatured: true,
249
259
  featuredPriority: 2,
250
260
  isBrand: false,
@@ -282,7 +292,7 @@ const rawCategories = [
282
292
  isLeaf: true,
283
293
  position: 0,
284
294
  subtreeSize: 0,
285
- metrics: emptyMetrics,
295
+ metrics: seedMetrics(3),
286
296
  isFeatured: false,
287
297
  isBrand: false,
288
298
  seo: { title: "Booster Packs | LetItRip", description: "Buy individual YGO booster packs.", keywords: ["booster pack", "yugioh pack"] },
@@ -308,7 +318,7 @@ const rawCategories = [
308
318
  isLeaf: true,
309
319
  position: 1,
310
320
  subtreeSize: 0,
311
- metrics: emptyMetrics,
321
+ metrics: seedMetrics(4),
312
322
  isFeatured: false,
313
323
  isBrand: false,
314
324
  seo: { title: "Booster Boxes | LetItRip", description: "Buy full YGO booster boxes (24 packs).", keywords: ["booster box", "yugioh box"] },
@@ -334,7 +344,7 @@ const rawCategories = [
334
344
  isLeaf: true,
335
345
  position: 2,
336
346
  subtreeSize: 0,
337
- metrics: emptyMetrics,
347
+ metrics: seedMetrics(3),
338
348
  isFeatured: false,
339
349
  isBrand: false,
340
350
  seo: { title: "Collector Tins | LetItRip", description: "Buy YGO collector tins with promo cards.", keywords: ["collector tin", "yugioh tin"] },
@@ -360,7 +370,7 @@ const rawCategories = [
360
370
  isLeaf: true,
361
371
  position: 3,
362
372
  subtreeSize: 0,
363
- metrics: emptyMetrics,
373
+ metrics: seedMetrics(5),
364
374
  isFeatured: false,
365
375
  isBrand: false,
366
376
  seo: { title: "Starter & Structure Decks | LetItRip", description: "Buy YGO starter and structure decks.", keywords: ["starter deck", "structure deck", "yugioh deck"] },
@@ -392,7 +402,7 @@ const rawCategories = [
392
402
  isLeaf: false,
393
403
  position: 0,
394
404
  subtreeSize: 4,
395
- metrics: emptyMetrics,
405
+ metrics: seedMetrics(1, 6),
396
406
  isFeatured: true,
397
407
  featuredPriority: 3,
398
408
  isBrand: false,
@@ -430,7 +440,7 @@ const rawCategories = [
430
440
  isLeaf: true,
431
441
  position: 0,
432
442
  subtreeSize: 0,
433
- metrics: emptyMetrics,
443
+ metrics: seedMetrics(1, 6),
434
444
  isFeatured: false,
435
445
  isBrand: false,
436
446
  seo: { title: "PSA Graded YGO | LetItRip", description: "Shop PSA graded Yu-Gi-Oh! cards.", keywords: ["psa graded", "psa yugioh", "psa slab"] },
@@ -688,7 +698,7 @@ const rawCategories = [
688
698
  isLeaf: false,
689
699
  position: 0,
690
700
  subtreeSize: 4,
691
- metrics: emptyMetrics,
701
+ metrics: seedMetrics(8, 2),
692
702
  isFeatured: true,
693
703
  featuredPriority: 5,
694
704
  isBrand: false,
@@ -831,7 +841,7 @@ const rawCategories = [
831
841
  isLeaf: false,
832
842
  position: 0,
833
843
  subtreeSize: 4,
834
- metrics: emptyMetrics,
844
+ metrics: seedMetrics(1),
835
845
  isFeatured: true,
836
846
  featuredPriority: 6,
837
847
  isBrand: false,
@@ -858,7 +868,7 @@ const rawCategories = [
858
868
  isLeaf: true,
859
869
  position: 0,
860
870
  subtreeSize: 0,
861
- metrics: emptyMetrics,
871
+ metrics: seedMetrics(1),
862
872
  isFeatured: true,
863
873
  isBrand: false,
864
874
  seo: { title: "Pokémon TCG | LetItRip", description: "Buy Pokémon cards — booster packs, ETBs, singles, graded slabs.", keywords: ["pokemon tcg", "pokemon cards", "charizard", "pikachu card"] },
@@ -1121,7 +1131,7 @@ const rawCategories = [
1121
1131
  isLeaf: false,
1122
1132
  position: 0,
1123
1133
  subtreeSize: 4,
1124
- metrics: emptyMetrics,
1134
+ metrics: seedMetrics(1),
1125
1135
  isFeatured: true,
1126
1136
  featuredPriority: 8,
1127
1137
  isBrand: false,
@@ -1556,6 +1566,60 @@ const rawCategories = [
1556
1566
  createdAt: daysAgo(300),
1557
1567
  updatedAt: daysAgo(1),
1558
1568
  },
1569
+ // ── SB-UNI-J: Digital Codes root + leaf ───────────────────────────────────
1570
+ {
1571
+ id: "category-digital-codes",
1572
+ slug: "category-digital-codes",
1573
+ name: "Digital Codes",
1574
+ description: "Instant-delivery digital redemption codes — game currency, DLC unlocks, subscription passes, and in-app purchases for Yu-Gi-Oh! digital platforms.",
1575
+ rootId: "category-digital-codes",
1576
+ parentIds: [],
1577
+ childrenIds: [],
1578
+ tier: 0,
1579
+ path: "digital-codes",
1580
+ order: 7,
1581
+ isLeaf: true,
1582
+ position: 0,
1583
+ subtreeSize: 0,
1584
+ metrics: seedMetrics(5),
1585
+ isFeatured: false,
1586
+ isBrand: false,
1587
+ seo: { title: "Digital Codes | LetItRip", description: "Buy Yu-Gi-Oh! digital codes — Master Duel gems, Duel Links gems, battle passes.", keywords: ["digital codes", "master duel gems", "duel links", "yugioh codes"] },
1588
+ display: { icon: "🔑", coverImage: "/media/category-image-digital-codes-20260101.jpg", color: "#1e40af", showInMenu: true, showInFooter: false },
1589
+ isActive: true,
1590
+ isSearchable: true,
1591
+ showOnHomepage: false,
1592
+ createdBy: "user-admin-letitrip",
1593
+ createdAt: daysAgo(300),
1594
+ updatedAt: daysAgo(1),
1595
+ },
1596
+ // ── SB-UNI-K: Live Aquatics root + leaf ─────────────────────────────────
1597
+ {
1598
+ id: "category-live-aquatics",
1599
+ slug: "category-live-aquatics",
1600
+ name: "Live Aquatics",
1601
+ description: "Collectible live aquatic species — koi, bettas, axolotls, shrimp, and other aquarium inhabitants. All vendors verified, CITES-compliant, specialist shipping.",
1602
+ rootId: "category-live-aquatics",
1603
+ parentIds: [],
1604
+ childrenIds: [],
1605
+ tier: 0,
1606
+ path: "live-aquatics",
1607
+ order: 8,
1608
+ isLeaf: true,
1609
+ position: 0,
1610
+ subtreeSize: 0,
1611
+ metrics: emptyMetrics,
1612
+ isFeatured: false,
1613
+ isBrand: false,
1614
+ seo: { title: "Live Aquatics | LetItRip", description: "Buy collectible live aquatics — koi, bettas, axolotls. Verified vendors, specialist shipping.", keywords: ["live aquatics", "koi", "betta", "axolotl", "live fish"] },
1615
+ display: { icon: "🐟", coverImage: "/media/category-image-live-aquatics-20260101.jpg", color: "#0891b2", showInMenu: true, showInFooter: false },
1616
+ isActive: true,
1617
+ isSearchable: true,
1618
+ showOnHomepage: false,
1619
+ createdBy: "user-admin-letitrip",
1620
+ createdAt: daysAgo(300),
1621
+ updatedAt: daysAgo(1),
1622
+ },
1559
1623
  ];
1560
1624
  // ──────────────────────────────────────────────────────────────────────────────
1561
1625
  // 25 Brands (SB-UNI-C: brands stored as categoryType:"brand")
@@ -49,6 +49,9 @@ export { productsStandardSeedData } from "./products-standard-seed-data";
49
49
  export { productsAuctionsSeedData } from "./products-auctions-seed-data";
50
50
  export { productsPreordersSeedData } from "./products-preorders-seed-data";
51
51
  export { productsPrizeDrawsSeedData } from "./products-prize-draws-seed-data";
52
+ export { productsClassifiedsSeedData } from "./products-classifieds-seed-data";
53
+ export { productsDigitalCodesSeedData } from "./products-digital-codes-seed-data";
54
+ export { productsLiveItemsSeedData } from "./products-live-items-seed-data";
52
55
  export { ordersSeedData } from "./orders-seed-data";
53
56
  export { reviewsSeedData } from "./reviews-seed-data";
54
57
  export { cartsSeedData } from "./cart-seed-data";
@@ -37,6 +37,9 @@ export { productsStandardSeedData } from "./products-standard-seed-data";
37
37
  export { productsAuctionsSeedData } from "./products-auctions-seed-data";
38
38
  export { productsPreordersSeedData } from "./products-preorders-seed-data";
39
39
  export { productsPrizeDrawsSeedData } from "./products-prize-draws-seed-data";
40
+ export { productsClassifiedsSeedData } from "./products-classifieds-seed-data";
41
+ export { productsDigitalCodesSeedData } from "./products-digital-codes-seed-data";
42
+ export { productsLiveItemsSeedData } from "./products-live-items-seed-data";
40
43
  export { ordersSeedData } from "./orders-seed-data";
41
44
  export { reviewsSeedData } from "./reviews-seed-data";
42
45
  export { cartsSeedData } from "./cart-seed-data";
@@ -14,6 +14,9 @@ import { productsStandardSeedData } from "./products-standard-seed-data";
14
14
  import { productsAuctionsSeedData } from "./products-auctions-seed-data";
15
15
  import { productsPreordersSeedData } from "./products-preorders-seed-data";
16
16
  import { productsPrizeDrawsSeedData } from "./products-prize-draws-seed-data";
17
+ import { productsClassifiedsSeedData } from "./products-classifieds-seed-data";
18
+ import { productsDigitalCodesSeedData } from "./products-digital-codes-seed-data";
19
+ import { productsLiveItemsSeedData } from "./products-live-items-seed-data";
17
20
  import { ordersSeedData } from "./orders-seed-data";
18
21
  import { reviewsSeedData } from "./reviews-seed-data";
19
22
  import { bidsSeedData } from "./bids-seed-data";
@@ -68,6 +71,9 @@ export const SEED_MANIFEST = {
68
71
  ...asArr(productsAuctionsSeedData),
69
72
  ...asArr(productsPreordersSeedData),
70
73
  ...asArr(productsPrizeDrawsSeedData),
74
+ ...asArr(productsClassifiedsSeedData),
75
+ ...asArr(productsDigitalCodesSeedData),
76
+ ...asArr(productsLiveItemsSeedData),
71
77
  ].map((p) => ({
72
78
  ...p,
73
79
  // SB1-G Phase 4 — canonical listingType drives the manifest "type" tag.
@@ -77,7 +83,15 @@ export const SEED_MANIFEST = {
77
83
  ? "preorder"
78
84
  : p.listingType === "prize-draw"
79
85
  ? "prize-draw"
80
- : "standard",
86
+ : p.listingType === "classified"
87
+ ? "classified"
88
+ : p.listingType === "digital-code"
89
+ ? "digital-code"
90
+ : p.listingType === "live"
91
+ ? "live"
92
+ : p.listingType === "bundle"
93
+ ? "bundle"
94
+ : "standard",
81
95
  })), "title"),
82
96
  orders: pick(asArr(ordersSeedData)),
83
97
  reviews: pick(asArr(reviewsSeedData), "title"),
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Classified Products Seed Data — Yu-Gi-Oh! Theme (SB-UNI-I)
3
+ *
4
+ * Stored as ProductDocument with listingType: "classified". These are
5
+ * meetup/local-sale items — no cart flow, CTA routes to chat.
6
+ *
7
+ * Prices in INR paise (₹1 = 100 paise).
8
+ */
9
+ import type { ProductDocument } from "../features/products/schemas/firestore";
10
+ export declare const productsClassifiedsSeedData: Partial<ProductDocument>[];
@@ -0,0 +1,197 @@
1
+ /**
2
+ * Classified Products Seed Data — Yu-Gi-Oh! Theme (SB-UNI-I)
3
+ *
4
+ * Stored as ProductDocument with listingType: "classified". These are
5
+ * meetup/local-sale items — no cart flow, CTA routes to chat.
6
+ *
7
+ * Prices in INR paise (₹1 = 100 paise).
8
+ */
9
+ import { PRODUCT_FIELDS } from "../constants/field-names";
10
+ import { buildSearchTokens } from "../utils/search-tokens";
11
+ function withTokens(p) {
12
+ return {
13
+ tags: [],
14
+ featured: false,
15
+ ...p,
16
+ searchTokens: buildSearchTokens(p.title, p.description, p.brand, p.brandSlug, p.categoryNames, p.tags, p.features, p.condition, p.card?.setName, p.card?.cardNumber, p.grading?.service, p.specifications?.map((s) => `${s.name} ${s.value}`)),
17
+ };
18
+ }
19
+ const CARD_IDS = {
20
+ blueEyesWhiteDragon: 89631139,
21
+ darkMagician: 46986414,
22
+ exodiaHead: 33396948,
23
+ jinzo: 77585513,
24
+ busterBlader: 78193831,
25
+ kuriboh: 40640057,
26
+ gaiaFierceKnight: 6368038,
27
+ potOfGreed: 55144522,
28
+ };
29
+ const NOW = new Date();
30
+ const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
31
+ const _rawClassifiedsSeedData = [
32
+ {
33
+ id: "classified-blue-eyes-lot-mumbai",
34
+ slug: "classified-blue-eyes-lot-mumbai",
35
+ title: "Blue-Eyes White Dragon Lot — 3 NM copies, meetup Mumbai",
36
+ description: "Selling 3 near-mint Blue-Eyes White Dragon (SDK-001) from my personal binder. All Ultra Rare, English, unlimited. Prefer meetup near Andheri station; can ship if buyer covers postage. Price negotiable for the lot.",
37
+ categorySlugs: ["category-singles"],
38
+ categoryNames: ["Singles"],
39
+ brand: "Konami",
40
+ brandSlug: "brand-konami",
41
+ price: 450000,
42
+ currency: "INR",
43
+ stockQuantity: 1,
44
+ availableQuantity: 1,
45
+ mainImage: `https://images.ygoprodeck.com/images/cards/cropped/${CARD_IDS.blueEyesWhiteDragon}.jpg`,
46
+ images: [
47
+ `https://images.ygoprodeck.com/images/cards/cropped/${CARD_IDS.blueEyesWhiteDragon}.jpg`,
48
+ ],
49
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
50
+ storeId: "store-kaiba-corp-cards",
51
+ storeName: "Kaiba Corp Card Vault",
52
+ tags: ["blue-eyes", "classified", "meetup", "mumbai", "lot", "nm"],
53
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.USED,
54
+ classified: {
55
+ meetupArea: { city: "Mumbai", locality: "Andheri West", pincode: "400058" },
56
+ contactMethod: "both",
57
+ acceptsShipping: true,
58
+ negotiable: true,
59
+ },
60
+ allowOffers: false,
61
+ createdAt: daysAgo(3),
62
+ updatedAt: daysAgo(1),
63
+ },
64
+ {
65
+ id: "classified-exodia-set-bangalore",
66
+ slug: "classified-exodia-set-bangalore",
67
+ title: "Complete Exodia Set — LP, Bangalore meetup only",
68
+ description: "All 5 pieces of Exodia (LOB) in lightly played condition. No shipping — meetup only near Koramangala or MG Road. Cash or UPI accepted.",
69
+ categorySlugs: ["category-singles"],
70
+ categoryNames: ["Singles"],
71
+ brand: "Konami",
72
+ brandSlug: "brand-konami",
73
+ price: 1200000,
74
+ currency: "INR",
75
+ stockQuantity: 1,
76
+ availableQuantity: 1,
77
+ mainImage: `https://images.ygoprodeck.com/images/cards/cropped/${CARD_IDS.exodiaHead}.jpg`,
78
+ images: [
79
+ `https://images.ygoprodeck.com/images/cards/cropped/${CARD_IDS.exodiaHead}.jpg`,
80
+ ],
81
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
82
+ storeId: "store-letitrip-official",
83
+ storeName: "LetItRip Official",
84
+ tags: ["exodia", "classified", "meetup", "bangalore", "complete-set"],
85
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.USED,
86
+ classified: {
87
+ meetupArea: { city: "Bangalore", locality: "Koramangala", pincode: "560034" },
88
+ contactMethod: "chat",
89
+ acceptsShipping: false,
90
+ negotiable: false,
91
+ },
92
+ allowOffers: false,
93
+ createdAt: daysAgo(5),
94
+ updatedAt: daysAgo(2),
95
+ },
96
+ {
97
+ id: "classified-jinzo-vintage-delhi",
98
+ slug: "classified-jinzo-vintage-delhi",
99
+ title: "Jinzo PSV-000 Secret Rare — Delhi NCR meetup",
100
+ description: "Vintage Jinzo Secret Rare from Pharaoh's Servant (PSV-000). Card is moderately played with minor edge wear. Great for a binder display piece. Meetup anywhere in Delhi NCR.",
101
+ categorySlugs: ["category-singles"],
102
+ categoryNames: ["Singles"],
103
+ brand: "Konami",
104
+ brandSlug: "brand-konami",
105
+ price: 350000,
106
+ currency: "INR",
107
+ stockQuantity: 1,
108
+ availableQuantity: 1,
109
+ mainImage: `https://images.ygoprodeck.com/images/cards/cropped/${CARD_IDS.jinzo}.jpg`,
110
+ images: [
111
+ `https://images.ygoprodeck.com/images/cards/cropped/${CARD_IDS.jinzo}.jpg`,
112
+ ],
113
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
114
+ storeId: "store-kaiba-corp-cards",
115
+ storeName: "Kaiba Corp Card Vault",
116
+ tags: ["jinzo", "classified", "meetup", "delhi", "vintage", "secret-rare"],
117
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.USED,
118
+ classified: {
119
+ meetupArea: { city: "Delhi", locality: "Connaught Place" },
120
+ contactMethod: "both",
121
+ acceptsShipping: false,
122
+ negotiable: true,
123
+ },
124
+ allowOffers: false,
125
+ createdAt: daysAgo(7),
126
+ updatedAt: daysAgo(3),
127
+ },
128
+ {
129
+ id: "classified-binder-collection-hyderabad",
130
+ slug: "classified-binder-collection-hyderabad",
131
+ title: "200+ YGO Bulk Lot — Binder clearout, Hyderabad",
132
+ description: "Clearing my old binder: 200+ cards from LOB, MRD, PSV, and SDK. Mostly commons and rares, a few holos sprinkled in. Perfect for beginners building a collection. Meetup preferred, can ship COD within Telangana.",
133
+ categorySlugs: ["category-sealed-products"],
134
+ categoryNames: ["Sealed Products"],
135
+ brand: "Konami",
136
+ brandSlug: "brand-konami",
137
+ price: 150000,
138
+ currency: "INR",
139
+ stockQuantity: 1,
140
+ availableQuantity: 1,
141
+ mainImage: `https://images.ygoprodeck.com/images/cards/cropped/${CARD_IDS.kuriboh}.jpg`,
142
+ images: [
143
+ `https://images.ygoprodeck.com/images/cards/cropped/${CARD_IDS.kuriboh}.jpg`,
144
+ `https://images.ygoprodeck.com/images/cards/cropped/${CARD_IDS.gaiaFierceKnight}.jpg`,
145
+ ],
146
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
147
+ storeId: "store-letitrip-official",
148
+ storeName: "LetItRip Official",
149
+ tags: ["bulk", "classified", "meetup", "hyderabad", "binder", "beginner"],
150
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.USED,
151
+ classified: {
152
+ meetupArea: { city: "Hyderabad", locality: "Banjara Hills", pincode: "500034" },
153
+ contactMethod: "chat",
154
+ acceptsShipping: true,
155
+ negotiable: true,
156
+ },
157
+ allowOffers: false,
158
+ createdAt: daysAgo(2),
159
+ updatedAt: daysAgo(1),
160
+ },
161
+ {
162
+ id: "classified-dark-magician-girl-chennai",
163
+ slug: "classified-dark-magician-girl-chennai",
164
+ title: "Pot of Greed — 1st Ed LOB, Chennai meetup",
165
+ description: "1st Edition Pot of Greed from Legend of Blue Eyes. Near-mint, never played. Meetup near T. Nagar or Anna Nagar. UPI payment only.",
166
+ categorySlugs: ["category-singles"],
167
+ categoryNames: ["Singles"],
168
+ brand: "Konami",
169
+ brandSlug: "brand-konami",
170
+ price: 280000,
171
+ currency: "INR",
172
+ stockQuantity: 1,
173
+ availableQuantity: 1,
174
+ mainImage: `https://images.ygoprodeck.com/images/cards/cropped/${CARD_IDS.potOfGreed}.jpg`,
175
+ images: [
176
+ `https://images.ygoprodeck.com/images/cards/cropped/${CARD_IDS.potOfGreed}.jpg`,
177
+ ],
178
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
179
+ storeId: "store-kaiba-corp-cards",
180
+ storeName: "Kaiba Corp Card Vault",
181
+ tags: ["pot-of-greed", "classified", "meetup", "chennai", "1st-edition"],
182
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.USED,
183
+ classified: {
184
+ meetupArea: { city: "Chennai", locality: "T. Nagar", pincode: "600017" },
185
+ contactMethod: "chat",
186
+ acceptsShipping: false,
187
+ negotiable: false,
188
+ },
189
+ allowOffers: false,
190
+ createdAt: daysAgo(4),
191
+ updatedAt: daysAgo(1),
192
+ },
193
+ ];
194
+ export const productsClassifiedsSeedData = _rawClassifiedsSeedData.map((p) => withTokens({
195
+ ...p,
196
+ listingType: "classified",
197
+ }));
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Digital-Code Products Seed Data — Yu-Gi-Oh! Theme (SB-UNI-J)
3
+ *
4
+ * Stored as ProductDocument with listingType: "digital-code". Instant
5
+ * digital fulfillment — no shipping address, code delivered on payment.
6
+ *
7
+ * Prices in INR paise (₹1 = 100 paise).
8
+ */
9
+ import type { ProductDocument } from "../features/products/schemas/firestore";
10
+ export declare const productsDigitalCodesSeedData: Partial<ProductDocument>[];