@mohasinac/appkit 2.6.3 → 2.6.5

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 (615) hide show
  1. package/dist/_internal/server/features/account/data.js +2 -2
  2. package/dist/_internal/server/features/bundles/data.d.ts +26 -6
  3. package/dist/_internal/server/features/bundles/data.js +41 -6
  4. package/dist/_internal/server/features/bundles/index.d.ts +3 -2
  5. package/dist/_internal/server/features/bundles/index.js +4 -2
  6. package/dist/_internal/server/features/bundles/metadata.d.ts +20 -0
  7. package/dist/_internal/server/features/bundles/metadata.js +46 -0
  8. package/dist/_internal/server/features/bundles/og.d.ts +38 -0
  9. package/dist/_internal/server/features/bundles/og.js +122 -0
  10. package/dist/_internal/server/features/checkout/actions.js +192 -133
  11. package/dist/_internal/server/features/checkout/bundle-expansion.d.ts +57 -0
  12. package/dist/_internal/server/features/checkout/bundle-expansion.js +70 -0
  13. package/dist/_internal/server/features/checkout/prize-bundle-gates.d.ts +5 -15
  14. package/dist/_internal/server/features/checkout/prize-bundle-gates.js +5 -21
  15. package/dist/_internal/server/features/media/contextGuards.js +15 -1
  16. package/dist/_internal/server/features/payouts/actions.d.ts +19 -0
  17. package/dist/_internal/server/features/payouts/actions.js +38 -0
  18. package/dist/_internal/server/features/products/data.js +1 -2
  19. package/dist/_internal/server/features/raffle/actions.d.ts +11 -0
  20. package/dist/_internal/server/features/raffle/actions.js +31 -0
  21. package/dist/_internal/server/features/refunds/actions.d.ts +31 -0
  22. package/dist/_internal/server/features/refunds/actions.js +77 -0
  23. package/dist/_internal/server/jobs/core/adminAnalytics.d.ts +28 -0
  24. package/dist/_internal/server/jobs/core/adminAnalytics.js +98 -0
  25. package/dist/_internal/server/jobs/core/assignSpinPrize.d.ts +19 -0
  26. package/dist/_internal/server/jobs/core/assignSpinPrize.js +81 -0
  27. package/dist/_internal/server/jobs/core/auctionSettlement.d.ts +2 -0
  28. package/dist/_internal/server/jobs/core/auctionSettlement.js +70 -0
  29. package/dist/_internal/server/jobs/core/autoPayoutEligibility.d.ts +2 -0
  30. package/dist/_internal/server/jobs/core/autoPayoutEligibility.js +109 -0
  31. package/dist/_internal/server/jobs/core/bundleStockSync.d.ts +10 -0
  32. package/dist/_internal/server/jobs/core/bundleStockSync.js +71 -0
  33. package/dist/_internal/server/jobs/core/cartPrune.d.ts +2 -0
  34. package/dist/_internal/server/jobs/core/cartPrune.js +13 -0
  35. package/dist/_internal/server/jobs/core/cleanupRtdbEvents.d.ts +2 -0
  36. package/dist/_internal/server/jobs/core/cleanupRtdbEvents.js +45 -0
  37. package/dist/_internal/server/jobs/core/countersReconcile.d.ts +2 -0
  38. package/dist/_internal/server/jobs/core/countersReconcile.js +107 -0
  39. package/dist/_internal/server/jobs/core/couponExpiry.d.ts +2 -0
  40. package/dist/_internal/server/jobs/core/couponExpiry.js +13 -0
  41. package/dist/_internal/server/jobs/core/dailyDataCleanup.d.ts +2 -0
  42. package/dist/_internal/server/jobs/core/dailyDataCleanup.js +20 -0
  43. package/dist/_internal/server/jobs/core/index.d.ts +44 -0
  44. package/dist/_internal/server/jobs/core/index.js +47 -0
  45. package/dist/_internal/server/jobs/core/listingProcessor.d.ts +30 -0
  46. package/dist/_internal/server/jobs/core/listingProcessor.js +138 -0
  47. package/dist/_internal/server/jobs/core/mediaTmpCleanup.d.ts +14 -0
  48. package/dist/_internal/server/jobs/core/mediaTmpCleanup.js +68 -0
  49. package/dist/_internal/server/jobs/core/notificationPrune.d.ts +2 -0
  50. package/dist/_internal/server/jobs/core/notificationPrune.js +13 -0
  51. package/dist/_internal/server/jobs/core/offerExpiry.d.ts +2 -0
  52. package/dist/_internal/server/jobs/core/offerExpiry.js +50 -0
  53. package/dist/_internal/server/jobs/core/onBidPlaced.d.ts +15 -0
  54. package/dist/_internal/server/jobs/core/onBidPlaced.js +59 -0
  55. package/dist/_internal/server/jobs/core/onCategoryWrite.d.ts +14 -0
  56. package/dist/_internal/server/jobs/core/onCategoryWrite.js +134 -0
  57. package/dist/_internal/server/jobs/core/onOrderCreate.d.ts +18 -0
  58. package/dist/_internal/server/jobs/core/onOrderCreate.js +78 -0
  59. package/dist/_internal/server/jobs/core/onOrderStatusChange.d.ts +19 -0
  60. package/dist/_internal/server/jobs/core/onOrderStatusChange.js +139 -0
  61. package/dist/_internal/server/jobs/core/onProductStockChange.d.ts +23 -0
  62. package/dist/_internal/server/jobs/core/onProductStockChange.js +130 -0
  63. package/dist/_internal/server/jobs/core/onProductWrite.d.ts +12 -0
  64. package/dist/_internal/server/jobs/core/onProductWrite.js +94 -0
  65. package/dist/_internal/server/jobs/core/onReviewWrite.d.ts +7 -0
  66. package/dist/_internal/server/jobs/core/onReviewWrite.js +49 -0
  67. package/dist/_internal/server/jobs/core/onStoreWrite.d.ts +12 -0
  68. package/dist/_internal/server/jobs/core/onStoreWrite.js +7 -0
  69. package/dist/_internal/server/jobs/core/payoutBatch.d.ts +8 -0
  70. package/dist/_internal/server/jobs/core/payoutBatch.js +102 -0
  71. package/dist/_internal/server/jobs/core/pendingOrderTimeout.d.ts +2 -0
  72. package/dist/_internal/server/jobs/core/pendingOrderTimeout.js +27 -0
  73. package/dist/_internal/server/jobs/core/positionsReconcile.d.ts +7 -0
  74. package/dist/_internal/server/jobs/core/positionsReconcile.js +87 -0
  75. package/dist/_internal/server/jobs/core/prizeRevealClose.d.ts +2 -0
  76. package/dist/_internal/server/jobs/core/prizeRevealClose.js +22 -0
  77. package/dist/_internal/server/jobs/core/prizeRevealExpiry.d.ts +2 -0
  78. package/dist/_internal/server/jobs/core/prizeRevealExpiry.js +50 -0
  79. package/dist/_internal/server/jobs/core/prizeRevealOpen.d.ts +2 -0
  80. package/dist/_internal/server/jobs/core/prizeRevealOpen.js +56 -0
  81. package/dist/_internal/server/jobs/core/prizeRevealReminder.d.ts +2 -0
  82. package/dist/_internal/server/jobs/core/prizeRevealReminder.js +38 -0
  83. package/dist/_internal/server/jobs/core/productStatsSync.d.ts +8 -0
  84. package/dist/_internal/server/jobs/core/productStatsSync.js +36 -0
  85. package/dist/_internal/server/jobs/core/promotions.d.ts +12 -0
  86. package/dist/_internal/server/jobs/core/promotions.js +43 -0
  87. package/dist/_internal/server/jobs/core/storeAnalytics.d.ts +30 -0
  88. package/dist/_internal/server/jobs/core/storeAnalytics.js +109 -0
  89. package/dist/_internal/server/jobs/core/triggerEventRaffle.d.ts +19 -0
  90. package/dist/_internal/server/jobs/core/triggerEventRaffle.js +86 -0
  91. package/dist/_internal/server/jobs/core/weeklyPayoutEligibility.d.ts +6 -0
  92. package/dist/_internal/server/jobs/core/weeklyPayoutEligibility.js +85 -0
  93. package/dist/_internal/server/jobs/handlers/adminAnalytics.d.ts +2 -26
  94. package/dist/_internal/server/jobs/handlers/adminAnalytics.js +2 -98
  95. package/dist/_internal/server/jobs/handlers/assignSpinPrize.d.ts +1 -22
  96. package/dist/_internal/server/jobs/handlers/assignSpinPrize.js +2 -86
  97. package/dist/_internal/server/jobs/handlers/auctionSettlement.js +2 -70
  98. package/dist/_internal/server/jobs/handlers/autoPayoutEligibility.js +2 -110
  99. package/dist/_internal/server/jobs/handlers/bundleStockSync.d.ts +0 -16
  100. package/dist/_internal/server/jobs/handlers/bundleStockSync.js +2 -80
  101. package/dist/_internal/server/jobs/handlers/cartPrune.js +2 -13
  102. package/dist/_internal/server/jobs/handlers/cleanupRtdbEvents.js +2 -45
  103. package/dist/_internal/server/jobs/handlers/countersReconcile.js +2 -109
  104. package/dist/_internal/server/jobs/handlers/couponExpiry.js +2 -13
  105. package/dist/_internal/server/jobs/handlers/dailyDataCleanup.js +2 -20
  106. package/dist/_internal/server/jobs/handlers/listingProcessor.d.ts +3 -28
  107. package/dist/_internal/server/jobs/handlers/listingProcessor.js +3 -138
  108. package/dist/_internal/server/jobs/handlers/mediaTmpCleanup.d.ts +0 -12
  109. package/dist/_internal/server/jobs/handlers/mediaTmpCleanup.js +2 -69
  110. package/dist/_internal/server/jobs/handlers/notificationPrune.js +2 -13
  111. package/dist/_internal/server/jobs/handlers/offerExpiry.js +2 -50
  112. package/dist/_internal/server/jobs/handlers/onBidPlaced.d.ts +1 -10
  113. package/dist/_internal/server/jobs/handlers/onBidPlaced.js +2 -56
  114. package/dist/_internal/server/jobs/handlers/onCategoryWrite.d.ts +1 -8
  115. package/dist/_internal/server/jobs/handlers/onCategoryWrite.js +6 -134
  116. package/dist/_internal/server/jobs/handlers/onOrderCreate.d.ts +1 -12
  117. package/dist/_internal/server/jobs/handlers/onOrderCreate.js +2 -76
  118. package/dist/_internal/server/jobs/handlers/onOrderStatusChange.d.ts +1 -12
  119. package/dist/_internal/server/jobs/handlers/onOrderStatusChange.js +2 -139
  120. package/dist/_internal/server/jobs/handlers/onProductStockChange.d.ts +0 -13
  121. package/dist/_internal/server/jobs/handlers/onProductStockChange.js +7 -134
  122. package/dist/_internal/server/jobs/handlers/onProductWrite.d.ts +1 -6
  123. package/dist/_internal/server/jobs/handlers/onProductWrite.js +6 -106
  124. package/dist/_internal/server/jobs/handlers/onReviewWrite.js +2 -49
  125. package/dist/_internal/server/jobs/handlers/onStoreWrite.d.ts +1 -8
  126. package/dist/_internal/server/jobs/handlers/onStoreWrite.js +7 -8
  127. package/dist/_internal/server/jobs/handlers/payoutBatch.d.ts +0 -9
  128. package/dist/_internal/server/jobs/handlers/payoutBatch.js +2 -104
  129. package/dist/_internal/server/jobs/handlers/pendingOrderTimeout.d.ts +0 -6
  130. package/dist/_internal/server/jobs/handlers/pendingOrderTimeout.js +2 -33
  131. package/dist/_internal/server/jobs/handlers/positionsReconcile.d.ts +0 -5
  132. package/dist/_internal/server/jobs/handlers/positionsReconcile.js +2 -87
  133. package/dist/_internal/server/jobs/handlers/prizeRevealClose.d.ts +0 -7
  134. package/dist/_internal/server/jobs/handlers/prizeRevealClose.js +2 -29
  135. package/dist/_internal/server/jobs/handlers/prizeRevealExpiry.d.ts +0 -8
  136. package/dist/_internal/server/jobs/handlers/prizeRevealExpiry.js +2 -58
  137. package/dist/_internal/server/jobs/handlers/prizeRevealOpen.d.ts +0 -8
  138. package/dist/_internal/server/jobs/handlers/prizeRevealOpen.js +2 -65
  139. package/dist/_internal/server/jobs/handlers/prizeRevealReminder.d.ts +0 -7
  140. package/dist/_internal/server/jobs/handlers/prizeRevealReminder.js +2 -45
  141. package/dist/_internal/server/jobs/handlers/productStatsSync.d.ts +0 -6
  142. package/dist/_internal/server/jobs/handlers/productStatsSync.js +2 -36
  143. package/dist/_internal/server/jobs/handlers/promotions.d.ts +2 -10
  144. package/dist/_internal/server/jobs/handlers/promotions.js +2 -43
  145. package/dist/_internal/server/jobs/handlers/storeAnalytics.d.ts +2 -28
  146. package/dist/_internal/server/jobs/handlers/storeAnalytics.js +2 -109
  147. package/dist/_internal/server/jobs/handlers/triggerEventRaffle.d.ts +1 -28
  148. package/dist/_internal/server/jobs/handlers/triggerEventRaffle.js +2 -94
  149. package/dist/_internal/server/jobs/handlers/weeklyPayoutEligibility.d.ts +0 -6
  150. package/dist/_internal/server/jobs/handlers/weeklyPayoutEligibility.js +2 -87
  151. package/dist/_internal/server/jobs/index.d.ts +1 -0
  152. package/dist/_internal/server/jobs/index.js +1 -0
  153. package/dist/_internal/server/jobs/runtime/adapters/firebase.js +21 -0
  154. package/dist/_internal/shared/actions/action-registry.d.ts +84 -0
  155. package/dist/_internal/shared/actions/action-registry.js +160 -0
  156. package/dist/_internal/shared/checkout/rules/_defaults.d.ts +3 -0
  157. package/dist/_internal/shared/checkout/rules/_defaults.js +22 -0
  158. package/dist/_internal/shared/checkout/rules/_limits.d.ts +19 -0
  159. package/dist/_internal/shared/checkout/rules/_limits.js +19 -0
  160. package/dist/_internal/shared/checkout/rules/_registry.d.ts +44 -0
  161. package/dist/_internal/shared/checkout/rules/_registry.js +87 -0
  162. package/dist/_internal/shared/checkout/rules/auction.rule.d.ts +2 -0
  163. package/dist/_internal/shared/checkout/rules/auction.rule.js +10 -0
  164. package/dist/_internal/shared/checkout/rules/bundle.rule.d.ts +11 -0
  165. package/dist/_internal/shared/checkout/rules/bundle.rule.js +6 -0
  166. package/dist/_internal/shared/checkout/rules/classified.rule.d.ts +9 -0
  167. package/dist/_internal/shared/checkout/rules/classified.rule.js +9 -0
  168. package/dist/_internal/shared/checkout/rules/digital-code.rule.d.ts +8 -0
  169. package/dist/_internal/shared/checkout/rules/digital-code.rule.js +6 -0
  170. package/dist/_internal/shared/checkout/rules/index.d.ts +12 -0
  171. package/dist/_internal/shared/checkout/rules/index.js +12 -0
  172. package/dist/_internal/shared/checkout/rules/live.rule.d.ts +10 -0
  173. package/dist/_internal/shared/checkout/rules/live.rule.js +6 -0
  174. package/dist/_internal/shared/checkout/rules/offer.rule.d.ts +2 -0
  175. package/dist/_internal/shared/checkout/rules/offer.rule.js +9 -0
  176. package/dist/_internal/shared/checkout/rules/preorder.rule.d.ts +2 -0
  177. package/dist/_internal/shared/checkout/rules/preorder.rule.js +28 -0
  178. package/dist/_internal/shared/checkout/rules/prize-draw.rule.d.ts +2 -0
  179. package/dist/_internal/shared/checkout/rules/prize-draw.rule.js +65 -0
  180. package/dist/_internal/shared/checkout/rules/standard.rule.d.ts +2 -0
  181. package/dist/_internal/shared/checkout/rules/standard.rule.js +5 -0
  182. package/dist/_internal/shared/checkout/rules/types.d.ts +125 -0
  183. package/dist/_internal/shared/checkout/rules/types.js +13 -0
  184. package/dist/_internal/shared/features/cart/schema.d.ts +6 -6
  185. package/dist/_internal/shared/features/categories/bundle-copy.d.ts +123 -0
  186. package/dist/_internal/shared/features/categories/bundle-copy.js +134 -0
  187. package/dist/_internal/shared/features/categories/bundle-schemas.d.ts +318 -0
  188. package/dist/_internal/shared/features/categories/bundle-schemas.js +55 -0
  189. package/dist/_internal/shared/features/events/schema.d.ts +4 -4
  190. package/dist/_internal/shared/features/orders/refund-copy.d.ts +36 -0
  191. package/dist/_internal/shared/features/orders/refund-copy.js +40 -0
  192. package/dist/_internal/shared/features/orders/schema.d.ts +4 -4
  193. package/dist/_internal/shared/features/products/schema.d.ts +8 -8
  194. package/dist/_internal/shared/listing-types/_registry.d.ts +27 -0
  195. package/dist/_internal/shared/listing-types/_registry.js +8 -0
  196. package/dist/_internal/shared/listing-types/action-tracker.d.ts +41 -0
  197. package/dist/_internal/shared/listing-types/action-tracker.js +70 -0
  198. package/dist/_internal/shared/listing-types/capabilities.js +25 -0
  199. package/dist/_internal/shared/listing-types/cart-shipping.d.ts +37 -0
  200. package/dist/_internal/shared/listing-types/cart-shipping.js +46 -0
  201. package/dist/_internal/shared/listing-types/classified/config.d.ts +7 -0
  202. package/dist/_internal/shared/listing-types/classified/config.js +8 -0
  203. package/dist/_internal/shared/listing-types/classified/ctas.d.ts +1 -0
  204. package/dist/_internal/shared/listing-types/classified/ctas.js +3 -0
  205. package/dist/_internal/shared/listing-types/classified/og.d.ts +1 -0
  206. package/dist/_internal/shared/listing-types/classified/og.js +1 -0
  207. package/dist/_internal/shared/listing-types/classified/schema.d.ts +1 -0
  208. package/dist/_internal/shared/listing-types/classified/schema.js +1 -0
  209. package/dist/_internal/shared/listing-types/classified/seed-factory.d.ts +1 -0
  210. package/dist/_internal/shared/listing-types/classified/seed-factory.js +1 -0
  211. package/dist/_internal/shared/listing-types/digital-code/config.d.ts +7 -0
  212. package/dist/_internal/shared/listing-types/digital-code/config.js +8 -0
  213. package/dist/_internal/shared/listing-types/digital-code/ctas.d.ts +1 -0
  214. package/dist/_internal/shared/listing-types/digital-code/ctas.js +3 -0
  215. package/dist/_internal/shared/listing-types/digital-code/og.d.ts +1 -0
  216. package/dist/_internal/shared/listing-types/digital-code/og.js +1 -0
  217. package/dist/_internal/shared/listing-types/digital-code/schema.d.ts +1 -0
  218. package/dist/_internal/shared/listing-types/digital-code/schema.js +1 -0
  219. package/dist/_internal/shared/listing-types/digital-code/seed-factory.d.ts +1 -0
  220. package/dist/_internal/shared/listing-types/digital-code/seed-factory.js +1 -0
  221. package/dist/_internal/shared/listing-types/feature-flags.d.ts +34 -0
  222. package/dist/_internal/shared/listing-types/feature-flags.js +45 -0
  223. package/dist/_internal/shared/listing-types/live/config.d.ts +7 -0
  224. package/dist/_internal/shared/listing-types/live/config.js +8 -0
  225. package/dist/_internal/shared/listing-types/live/ctas.d.ts +1 -0
  226. package/dist/_internal/shared/listing-types/live/ctas.js +3 -0
  227. package/dist/_internal/shared/listing-types/live/og.d.ts +1 -0
  228. package/dist/_internal/shared/listing-types/live/og.js +1 -0
  229. package/dist/_internal/shared/listing-types/live/schema.d.ts +1 -0
  230. package/dist/_internal/shared/listing-types/live/schema.js +1 -0
  231. package/dist/_internal/shared/listing-types/live/seed-factory.d.ts +1 -0
  232. package/dist/_internal/shared/listing-types/live/seed-factory.js +1 -0
  233. package/dist/_internal/shared/media/limits.js +8 -0
  234. package/dist/client.d.ts +10 -5
  235. package/dist/client.js +16 -3
  236. package/dist/configs/next.js +7 -0
  237. package/dist/constants/api-endpoints.d.ts +6 -0
  238. package/dist/constants/api-endpoints.js +4 -0
  239. package/dist/core/hooks/useSyncManager.js +13 -1
  240. package/dist/core/unit-of-work.d.ts +1 -1
  241. package/dist/core/unit-of-work.js +2 -2
  242. package/dist/features/account/actions/address-actions.d.ts +1 -1
  243. package/dist/features/account/actions/address-actions.js +15 -7
  244. package/dist/features/account/schemas/firestore.d.ts +8 -43
  245. package/dist/features/account/schemas/firestore.js +8 -54
  246. package/dist/features/account/schemas/index.d.ts +6 -6
  247. package/dist/features/account/server.d.ts +1 -1
  248. package/dist/features/account/server.js +3 -1
  249. package/dist/features/addresses/index.d.ts +2 -0
  250. package/dist/features/addresses/index.js +2 -0
  251. package/dist/features/addresses/repository/addresses.repository.d.ts +29 -0
  252. package/dist/features/addresses/repository/addresses.repository.js +157 -0
  253. package/dist/features/addresses/schemas/firestore.d.ts +53 -0
  254. package/dist/features/addresses/schemas/firestore.js +68 -0
  255. package/dist/features/{bundles → addresses}/schemas/index.d.ts +0 -1
  256. package/dist/features/{bundles → addresses}/schemas/index.js +0 -1
  257. package/dist/features/addresses/server.d.ts +2 -0
  258. package/dist/features/addresses/server.js +2 -0
  259. package/dist/features/admin/components/AdminAllEventEntriesView.js +4 -3
  260. package/dist/features/admin/components/AdminBidsView.js +4 -3
  261. package/dist/features/admin/components/AdminBlogView.js +8 -3
  262. package/dist/features/admin/components/AdminBundleEditorView.d.ts +9 -0
  263. package/dist/features/admin/components/AdminBundleEditorView.js +209 -0
  264. package/dist/features/admin/components/AdminBundlesView.d.ts +9 -0
  265. package/dist/features/admin/components/AdminBundlesView.js +59 -0
  266. package/dist/features/admin/components/AdminCartsView.js +13 -3
  267. package/dist/features/admin/components/AdminContactView.js +4 -3
  268. package/dist/features/admin/components/AdminCouponsView.js +32 -13
  269. package/dist/features/admin/components/AdminNewsletterView.js +4 -3
  270. package/dist/features/admin/components/AdminOrdersView.js +15 -7
  271. package/dist/features/admin/components/AdminPayoutsView.js +4 -3
  272. package/dist/features/admin/components/AdminPrizeDrawsView.d.ts +4 -0
  273. package/dist/features/admin/components/AdminPrizeDrawsView.js +135 -0
  274. package/dist/features/admin/components/AdminProductsView.js +6 -5
  275. package/dist/features/admin/components/AdminReviewsView.js +5 -4
  276. package/dist/features/admin/components/AdminStoresView.js +4 -3
  277. package/dist/features/admin/components/AdminUsersView.js +15 -5
  278. package/dist/features/admin/components/AdminWishlistsView.js +10 -1
  279. package/dist/features/admin/components/DataTable.d.ts +5 -1
  280. package/dist/features/admin/components/DataTable.js +24 -20
  281. package/dist/features/admin/components/index.d.ts +6 -0
  282. package/dist/features/admin/components/index.js +5 -0
  283. package/dist/features/admin/constants/filter-tabs.d.ts +435 -0
  284. package/dist/features/admin/constants/filter-tabs.js +216 -0
  285. package/dist/features/admin/hooks/useAdminListingData.d.ts +1 -0
  286. package/dist/features/admin/hooks/useAdminListingData.js +1 -0
  287. package/dist/features/admin/schemas/firestore.d.ts +15 -0
  288. package/dist/features/admin/schemas/firestore.js +18 -0
  289. package/dist/features/admin/types/product.types.d.ts +2 -2
  290. package/dist/features/auctions/components/AuctionCard.d.ts +4 -1
  291. package/dist/features/auctions/components/AuctionCard.js +5 -3
  292. package/dist/features/auctions/components/AuctionDetailPageView.js +1 -1
  293. package/dist/features/auctions/components/MarketplaceAuctionCard.d.ts +2 -2
  294. package/dist/features/auctions/components/PlaceBidFormClient.js +12 -2
  295. package/dist/features/auctions/schemas/index.d.ts +2 -2
  296. package/dist/features/auth/index.d.ts +1 -0
  297. package/dist/features/auth/index.js +1 -0
  298. package/dist/features/auth/role-predicates.d.ts +16 -0
  299. package/dist/features/auth/role-predicates.js +15 -0
  300. package/dist/features/blog/components/BlogFeaturedCard.d.ts +4 -1
  301. package/dist/features/blog/components/BlogFeaturedCard.js +5 -3
  302. package/dist/features/cart/actions/cart-actions.d.ts +1 -0
  303. package/dist/features/cart/actions/cart-actions.js +16 -0
  304. package/dist/features/cart/components/CartView.d.ts +19 -1
  305. package/dist/features/cart/components/CartView.js +2 -2
  306. package/dist/features/cart/components/ShippingPicker.d.ts +13 -0
  307. package/dist/features/cart/components/ShippingPicker.js +48 -0
  308. package/dist/features/cart/components/index.d.ts +3 -1
  309. package/dist/features/cart/components/index.js +1 -0
  310. package/dist/features/cart/hooks/useCartCount.js +7 -1
  311. package/dist/features/cart/repository/cart.repository.d.ts +1 -0
  312. package/dist/features/cart/repository/cart.repository.js +35 -0
  313. package/dist/features/cart/schemas/firestore.d.ts +27 -2
  314. package/dist/features/categories/components/BundleAddToCartCta.d.ts +16 -0
  315. package/dist/features/categories/components/BundleAddToCartCta.js +54 -0
  316. package/dist/features/categories/components/BundleBuyNowCta.d.ts +8 -0
  317. package/dist/features/categories/components/BundleBuyNowCta.js +37 -0
  318. package/dist/features/categories/components/BundleDetailView.d.ts +22 -0
  319. package/dist/features/categories/components/BundleDetailView.js +31 -0
  320. package/dist/features/categories/components/BundleDynamicRuleEditor.d.ts +18 -0
  321. package/dist/features/categories/components/BundleDynamicRuleEditor.js +60 -0
  322. package/dist/features/categories/components/BundleItemsPicker.d.ts +26 -0
  323. package/dist/features/categories/components/BundleItemsPicker.js +135 -0
  324. package/dist/features/categories/components/BundlesListView.d.ts +13 -0
  325. package/dist/features/categories/components/BundlesListView.js +27 -0
  326. package/dist/features/categories/components/index.d.ts +12 -0
  327. package/dist/features/categories/components/index.js +9 -0
  328. package/dist/features/checkout/actions/checkout-actions.js +10 -3
  329. package/dist/features/events/components/AdminEventEditorView.js +108 -2
  330. package/dist/features/events/components/AdminEventsView.js +16 -4
  331. package/dist/features/events/components/EventCard.d.ts +4 -1
  332. package/dist/features/events/components/EventCard.js +7 -3
  333. package/dist/features/events/components/EventRaffleWinnerView.d.ts +21 -0
  334. package/dist/features/events/components/EventRaffleWinnerView.js +18 -0
  335. package/dist/features/events/components/SpinWheelView.d.ts +27 -0
  336. package/dist/features/events/components/SpinWheelView.js +64 -0
  337. package/dist/features/events/components/index.d.ts +4 -0
  338. package/dist/features/events/components/index.js +2 -0
  339. package/dist/features/events/schemas/firestore.d.ts +27 -1
  340. package/dist/features/events/schemas/firestore.js +7 -0
  341. package/dist/features/events/types/index.d.ts +27 -1
  342. package/dist/features/homepage/components/FeaturedBundlesSection.d.ts +16 -0
  343. package/dist/features/homepage/components/FeaturedBundlesSection.js +24 -0
  344. package/dist/features/homepage/components/MarketplaceHomepageView.js +4 -1
  345. package/dist/features/homepage/components/WhatsAppCommunitySection.js +2 -2
  346. package/dist/features/homepage/lib/section-renderer.d.ts +2 -0
  347. package/dist/features/homepage/lib/section-renderer.js +5 -5
  348. package/dist/features/layout/NavbarLayout.d.ts +3 -1
  349. package/dist/features/layout/NavbarLayout.js +32 -3
  350. package/dist/features/layout/TitleBarLayout.d.ts +6 -3
  351. package/dist/features/layout/TitleBarLayout.js +22 -7
  352. package/dist/features/media/upload/MediaUploadField.d.ts +15 -1
  353. package/dist/features/media/upload/MediaUploadField.js +22 -1
  354. package/dist/features/orders/components/MarketplaceOrderCard.js +4 -2
  355. package/dist/features/orders/components/OrderSiblingPayments.d.ts +8 -0
  356. package/dist/features/orders/components/OrderSiblingPayments.js +16 -0
  357. package/dist/features/orders/components/RefundHistoryTable.d.ts +6 -0
  358. package/dist/features/orders/components/RefundHistoryTable.js +23 -0
  359. package/dist/features/orders/components/RefundRequestView.d.ts +8 -0
  360. package/dist/features/orders/components/RefundRequestView.js +42 -0
  361. package/dist/features/orders/components/index.d.ts +6 -0
  362. package/dist/features/orders/components/index.js +3 -0
  363. package/dist/features/orders/index.d.ts +1 -0
  364. package/dist/features/orders/index.js +2 -0
  365. package/dist/features/orders/repository/orders.repository.d.ts +20 -1
  366. package/dist/features/orders/repository/orders.repository.js +30 -1
  367. package/dist/features/orders/schemas/firestore.d.ts +63 -13
  368. package/dist/features/orders/schemas/firestore.js +5 -5
  369. package/dist/features/orders/schemas/index.d.ts +4 -4
  370. package/dist/features/orders/types/index.d.ts +12 -2
  371. package/dist/features/orders/utils/bundle-grouping.d.ts +48 -0
  372. package/dist/features/orders/utils/bundle-grouping.js +54 -0
  373. package/dist/features/orders/utils/order-splitter.d.ts +9 -10
  374. package/dist/features/orders/utils/order-splitter.js +24 -30
  375. package/dist/features/payments/repository/payout.repository.d.ts +17 -1
  376. package/dist/features/payments/repository/payout.repository.js +47 -0
  377. package/dist/features/payments/schemas/firestore.d.ts +26 -0
  378. package/dist/features/pre-orders/components/PreorderCard.d.ts +4 -1
  379. package/dist/features/pre-orders/components/PreorderCard.js +8 -6
  380. package/dist/features/products/actions/product-actions.d.ts +1 -1
  381. package/dist/features/products/actions/product-actions.js +1 -1
  382. package/dist/features/products/components/CompareOverlay.d.ts +2 -2
  383. package/dist/features/products/components/CompareOverlay.js +4 -4
  384. package/dist/features/products/components/InteractiveProductCard.js +7 -12
  385. package/dist/features/products/components/NonRefundableConsentModal.d.ts +1 -1
  386. package/dist/features/products/components/NonRefundableConsentModal.js +0 -10
  387. package/dist/features/products/components/ProductGrid.js +28 -12
  388. package/dist/features/products/components/ShowGroupSection.js +3 -3
  389. package/dist/features/products/components/SublistingCarouselSection.js +2 -2
  390. package/dist/features/products/components/index.d.ts +0 -4
  391. package/dist/features/products/components/index.js +5 -2
  392. package/dist/features/products/index.d.ts +1 -1
  393. package/dist/features/products/index.js +3 -1
  394. package/dist/features/products/repository/products.repository.js +4 -0
  395. package/dist/features/products/schemas/catalog-product.d.ts +70 -0
  396. package/dist/features/products/schemas/catalog-product.js +50 -0
  397. package/dist/features/products/schemas/firestore.d.ts +110 -2
  398. package/dist/features/products/schemas/firestore.js +30 -0
  399. package/dist/features/products/schemas/index.d.ts +8 -8
  400. package/dist/features/products/types/index.d.ts +1 -1
  401. package/dist/features/products/utils/listing-type.d.ts +9 -0
  402. package/dist/features/products/utils/listing-type.js +4 -0
  403. package/dist/features/promotions/actions/coupon-actions.d.ts +2 -2
  404. package/dist/features/promotions/actions/coupon-actions.js +1 -1
  405. package/dist/features/promotions/components/CouponCard.d.ts +28 -10
  406. package/dist/features/promotions/components/CouponCard.js +116 -14
  407. package/dist/features/promotions/hooks/useCouponValidate.d.ts +1 -1
  408. package/dist/features/promotions/repository/coupons.repository.d.ts +1 -1
  409. package/dist/features/reviews/schemas/index.d.ts +2 -2
  410. package/dist/features/search/schemas/index.d.ts +2 -2
  411. package/dist/features/search/types/index.d.ts +2 -2
  412. package/dist/features/seller/components/SellerAuctionsView.js +4 -5
  413. package/dist/features/seller/components/SellerBidsView.js +5 -13
  414. package/dist/features/seller/components/SellerCouponsView.js +31 -67
  415. package/dist/features/seller/components/SellerOffersView.js +4 -5
  416. package/dist/features/seller/components/SellerOrdersView.js +4 -5
  417. package/dist/features/seller/components/SellerPayoutsView.js +4 -5
  418. package/dist/features/seller/components/SellerPreOrdersView.d.ts +4 -0
  419. package/dist/features/seller/components/SellerPreOrdersView.js +141 -0
  420. package/dist/features/seller/components/SellerPrizeDrawsView.d.ts +4 -0
  421. package/dist/features/seller/components/SellerPrizeDrawsView.js +138 -0
  422. package/dist/features/seller/components/SellerProductsView.js +4 -8
  423. package/dist/features/seller/components/index.d.ts +4 -0
  424. package/dist/features/seller/components/index.js +2 -0
  425. package/dist/features/seller/schemas/index.d.ts +2 -2
  426. package/dist/features/stores/actions/store-address-actions.d.ts +10 -6
  427. package/dist/features/stores/actions/store-address-actions.js +8 -7
  428. package/dist/features/stores/components/InteractiveStoreCard.js +3 -10
  429. package/dist/features/stores/components/StoreDetailLayoutView.js +20 -5
  430. package/dist/features/stores/schemas/firestore.d.ts +45 -38
  431. package/dist/features/stores/schemas/firestore.js +2 -49
  432. package/dist/features/stores/server.d.ts +0 -1
  433. package/dist/features/stores/server.js +2 -1
  434. package/dist/features/wishlist/hooks/useWishlistCount.d.ts +7 -9
  435. package/dist/features/wishlist/hooks/useWishlistCount.js +67 -86
  436. package/dist/features/wishlist/types/index.d.ts +1 -1
  437. package/dist/index.d.ts +56 -9
  438. package/dist/index.js +66 -11
  439. package/dist/next/routing/route-map.d.ts +6 -0
  440. package/dist/next/routing/route-map.js +4 -0
  441. package/dist/providers/db-firebase/admin.d.ts +6 -2
  442. package/dist/providers/db-firebase/admin.js +23 -0
  443. package/dist/repositories/index.d.ts +1 -2
  444. package/dist/repositories/index.js +5 -2
  445. package/dist/security/authorization.d.ts +2 -1
  446. package/dist/security/authorization.js +3 -2
  447. package/dist/seed/actions/demo-seed-actions.d.ts +1 -1
  448. package/dist/seed/bids-seed-data.d.ts +2 -2
  449. package/dist/seed/bids-seed-data.js +77 -2
  450. package/dist/seed/cart-seed-data.d.ts +10 -10
  451. package/dist/seed/cart-seed-data.js +15 -15
  452. package/dist/seed/events-seed-data.js +77 -0
  453. package/dist/seed/manifest.js +16 -8
  454. package/dist/seed/orders-seed-data.js +41 -2
  455. package/dist/seed/payouts-seed-data.js +18 -2
  456. package/dist/seed/stores-seed-data.js +55 -0
  457. package/dist/server-entry.d.ts +1 -0
  458. package/dist/server-entry.js +2 -0
  459. package/dist/server.d.ts +4 -0
  460. package/dist/server.js +8 -0
  461. package/dist/tailwind-utilities.css +1 -1
  462. package/dist/ui/components/FilterChipGroup.d.ts +39 -0
  463. package/dist/ui/components/FilterChipGroup.js +15 -0
  464. package/dist/ui/components/HorizontalScroller.js +32 -7
  465. package/dist/ui/components/HorizontalScroller.style.css +6 -0
  466. package/dist/ui/components/SiteLogo.js +1 -1
  467. package/dist/ui/index.d.ts +2 -0
  468. package/dist/ui/index.js +2 -0
  469. package/dist/utils/id-generators.d.ts +11 -0
  470. package/dist/utils/id-generators.js +16 -0
  471. package/package.json +1 -1
  472. package/dist/_internal/shared/features/bundles/config.d.ts +0 -6
  473. package/dist/_internal/shared/features/bundles/config.js +0 -6
  474. package/dist/_internal/shared/schema-versions.d.ts +0 -76
  475. package/dist/_internal/shared/schema-versions.js +0 -82
  476. package/dist/features/account/migrations.d.ts +0 -2
  477. package/dist/features/account/migrations.js +0 -10
  478. package/dist/features/admin/migrations.d.ts +0 -2
  479. package/dist/features/admin/migrations.js +0 -10
  480. package/dist/features/auctions/migrations.d.ts +0 -2
  481. package/dist/features/auctions/migrations.js +0 -10
  482. package/dist/features/auth/migrations.d.ts +0 -2
  483. package/dist/features/auth/migrations.js +0 -10
  484. package/dist/features/blog/migrations.d.ts +0 -2
  485. package/dist/features/blog/migrations.js +0 -10
  486. package/dist/features/brands/actions/brand-actions.d.ts +0 -2
  487. package/dist/features/brands/actions/brand-actions.js +0 -5
  488. package/dist/features/brands/index.d.ts +0 -3
  489. package/dist/features/brands/index.js +0 -3
  490. package/dist/features/brands/migrations.d.ts +0 -2
  491. package/dist/features/brands/migrations.js +0 -10
  492. package/dist/features/brands/repository/brands.repository.d.ts +0 -13
  493. package/dist/features/brands/repository/brands.repository.js +0 -60
  494. package/dist/features/brands/schemas/index.d.ts +0 -33
  495. package/dist/features/brands/schemas/index.js +0 -15
  496. package/dist/features/brands/server.d.ts +0 -7
  497. package/dist/features/brands/server.js +0 -7
  498. package/dist/features/bundles/components/AdminBundleEditorView.d.ts +0 -8
  499. package/dist/features/bundles/components/AdminBundleEditorView.js +0 -7
  500. package/dist/features/bundles/components/BundleDetailPageView.d.ts +0 -9
  501. package/dist/features/bundles/components/BundleDetailPageView.js +0 -45
  502. package/dist/features/bundles/components/BundleForm.d.ts +0 -12
  503. package/dist/features/bundles/components/BundleForm.js +0 -126
  504. package/dist/features/bundles/components/BundleItemsPicker.d.ts +0 -9
  505. package/dist/features/bundles/components/BundleItemsPicker.js +0 -77
  506. package/dist/features/bundles/components/BundlesByCategoryListing.d.ts +0 -6
  507. package/dist/features/bundles/components/BundlesByCategoryListing.js +0 -50
  508. package/dist/features/bundles/components/BundlesListingView.d.ts +0 -17
  509. package/dist/features/bundles/components/BundlesListingView.js +0 -50
  510. package/dist/features/bundles/components/FeaturedBundlesSection.d.ts +0 -5
  511. package/dist/features/bundles/components/FeaturedBundlesSection.js +0 -55
  512. package/dist/features/bundles/components/SellerBundleCreateView.d.ts +0 -8
  513. package/dist/features/bundles/components/SellerBundleCreateView.js +0 -7
  514. package/dist/features/bundles/components/SellerBundleEditView.d.ts +0 -9
  515. package/dist/features/bundles/components/SellerBundleEditView.js +0 -7
  516. package/dist/features/bundles/components/index.d.ts +0 -18
  517. package/dist/features/bundles/components/index.js +0 -9
  518. package/dist/features/bundles/constants/index.d.ts +0 -32
  519. package/dist/features/bundles/constants/index.js +0 -35
  520. package/dist/features/bundles/index.d.ts +0 -2
  521. package/dist/features/bundles/index.js +0 -2
  522. package/dist/features/bundles/migrations.d.ts +0 -2
  523. package/dist/features/bundles/migrations.js +0 -10
  524. package/dist/features/bundles/repository/bundles.repository.d.ts +0 -36
  525. package/dist/features/bundles/repository/bundles.repository.js +0 -148
  526. package/dist/features/bundles/repository/index.d.ts +0 -1
  527. package/dist/features/bundles/repository/index.js +0 -1
  528. package/dist/features/bundles/schemas/firestore.d.ts +0 -88
  529. package/dist/features/bundles/schemas/firestore.js +0 -29
  530. package/dist/features/bundles/schemas/zod.d.ts +0 -377
  531. package/dist/features/bundles/schemas/zod.js +0 -71
  532. package/dist/features/cart/migrations.d.ts +0 -2
  533. package/dist/features/cart/migrations.js +0 -10
  534. package/dist/features/categories/migrations.d.ts +0 -2
  535. package/dist/features/categories/migrations.js +0 -10
  536. package/dist/features/events/migrations.d.ts +0 -2
  537. package/dist/features/events/migrations.js +0 -10
  538. package/dist/features/faq/migrations.d.ts +0 -2
  539. package/dist/features/faq/migrations.js +0 -10
  540. package/dist/features/grouped/migrations.d.ts +0 -2
  541. package/dist/features/grouped/migrations.js +0 -10
  542. package/dist/features/history/migrations.d.ts +0 -2
  543. package/dist/features/history/migrations.js +0 -10
  544. package/dist/features/messages/migrations.d.ts +0 -2
  545. package/dist/features/messages/migrations.js +0 -10
  546. package/dist/features/orders/migrations.d.ts +0 -2
  547. package/dist/features/orders/migrations.js +0 -10
  548. package/dist/features/payments/migrations.d.ts +0 -2
  549. package/dist/features/payments/migrations.js +0 -10
  550. package/dist/features/products/migrations.d.ts +0 -2
  551. package/dist/features/products/migrations.js +0 -10
  552. package/dist/features/products/repository/sublisting-categories.repository.d.ts +0 -16
  553. package/dist/features/products/repository/sublisting-categories.repository.js +0 -126
  554. package/dist/features/products/schemas/sublisting-categories.d.ts +0 -45
  555. package/dist/features/products/schemas/sublisting-categories.js +0 -16
  556. package/dist/features/promotions/migrations.d.ts +0 -2
  557. package/dist/features/promotions/migrations.js +0 -10
  558. package/dist/features/reviews/migrations.d.ts +0 -2
  559. package/dist/features/reviews/migrations.js +0 -10
  560. package/dist/features/scams/migrations.d.ts +0 -2
  561. package/dist/features/scams/migrations.js +0 -10
  562. package/dist/features/seller/migrations.d.ts +0 -2
  563. package/dist/features/seller/migrations.js +0 -10
  564. package/dist/features/stores/migrations.d.ts +0 -2
  565. package/dist/features/stores/migrations.js +0 -10
  566. package/dist/features/sublisting/migrations.d.ts +0 -2
  567. package/dist/features/sublisting/migrations.js +0 -10
  568. package/dist/features/sublisting/schemas/firestore.d.ts +0 -32
  569. package/dist/features/sublisting/schemas/firestore.js +0 -19
  570. package/dist/features/support/migrations.d.ts +0 -2
  571. package/dist/features/support/migrations.js +0 -10
  572. package/dist/features/wishlist/migrations.d.ts +0 -2
  573. package/dist/features/wishlist/migrations.js +0 -10
  574. package/dist/seed/_bundle-constants.d.ts +0 -14
  575. package/dist/seed/_bundle-constants.js +0 -14
  576. package/dist/seed/anime-figures-seed-data.d.ts +0 -8
  577. package/dist/seed/anime-figures-seed-data.js +0 -1033
  578. package/dist/seed/beyblade-seed-data.d.ts +0 -7
  579. package/dist/seed/beyblade-seed-data.js +0 -1129
  580. package/dist/seed/brands-seed-data.d.ts +0 -7
  581. package/dist/seed/brands-seed-data.js +0 -410
  582. package/dist/seed/bundles-seed-data.d.ts +0 -13
  583. package/dist/seed/bundles-seed-data.js +0 -229
  584. package/dist/seed/cosplay-accessories-seed-data.d.ts +0 -8
  585. package/dist/seed/cosplay-accessories-seed-data.js +0 -647
  586. package/dist/seed/hot-wheels-seed-data.d.ts +0 -7
  587. package/dist/seed/hot-wheels-seed-data.js +0 -1612
  588. package/dist/seed/letitrip-official-seed-data.d.ts +0 -8
  589. package/dist/seed/letitrip-official-seed-data.js +0 -399
  590. package/dist/seed/pokemon-carousel-slides-seed-data.d.ts +0 -8
  591. package/dist/seed/pokemon-carousel-slides-seed-data.js +0 -322
  592. package/dist/seed/pokemon-categories-seed-data.d.ts +0 -24
  593. package/dist/seed/pokemon-categories-seed-data.js +0 -547
  594. package/dist/seed/pokemon-coupons-seed-data.d.ts +0 -6
  595. package/dist/seed/pokemon-coupons-seed-data.js +0 -465
  596. package/dist/seed/pokemon-homepage-sections-seed-data.d.ts +0 -7
  597. package/dist/seed/pokemon-homepage-sections-seed-data.js +0 -241
  598. package/dist/seed/pokemon-products-seed-data.d.ts +0 -9
  599. package/dist/seed/pokemon-products-seed-data.js +0 -1791
  600. package/dist/seed/pokemon-seed-bundle.d.ts +0 -47
  601. package/dist/seed/pokemon-seed-bundle.js +0 -71
  602. package/dist/seed/pokemon-stores-seed-data.d.ts +0 -6
  603. package/dist/seed/pokemon-stores-seed-data.js +0 -179
  604. package/dist/seed/pokemon-users-seed-data.d.ts +0 -6
  605. package/dist/seed/pokemon-users-seed-data.js +0 -521
  606. package/dist/seed/products-seed-data.d.ts +0 -6
  607. package/dist/seed/products-seed-data.js +0 -2530
  608. package/dist/seed/retro-gaming-seed-data.d.ts +0 -8
  609. package/dist/seed/retro-gaming-seed-data.js +0 -801
  610. package/dist/seed/server.d.ts +0 -2
  611. package/dist/seed/server.js +0 -7
  612. package/dist/seed/sublisting-categories-seed-data.d.ts +0 -7
  613. package/dist/seed/sublisting-categories-seed-data.js +0 -159
  614. package/dist/seed/transformers-seed-data.d.ts +0 -7
  615. package/dist/seed/transformers-seed-data.js +0 -530
@@ -1,1791 +0,0 @@
1
- import { getDefaultCurrency } from "./seed-market-config";
2
- const _CURRENCY = getDefaultCurrency();
3
- const NOW = new Date();
4
- const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
5
- const daysAhead = (n) => new Date(NOW.getTime() + n * 86400000);
6
- function toRichTextDoc(value) {
7
- const trimmed = value.trim();
8
- if (!trimmed)
9
- return value;
10
- // Keep existing rich values unchanged (HTML or serialized ProseMirror docs).
11
- if (/<\/?[a-z][\s\S]*>/i.test(trimmed))
12
- return value;
13
- try {
14
- const parsed = JSON.parse(trimmed);
15
- if (parsed?.type === "doc")
16
- return value;
17
- }
18
- catch {
19
- // Not JSON, continue conversion.
20
- }
21
- return JSON.stringify({
22
- type: "doc",
23
- content: [
24
- {
25
- type: "paragraph",
26
- content: [{ type: "text", text: value }],
27
- },
28
- ],
29
- });
30
- }
31
- function withRichTextDescription(item) {
32
- if (typeof item.description !== "string")
33
- return item;
34
- return {
35
- ...item,
36
- description: toRichTextDoc(item.description),
37
- };
38
- }
39
- // Seller shortcuts
40
- const MISTY = {
41
- sellerId: "user-misty-water-gym-misty",
42
- storeId: "mistys-water-cards",
43
- sellerName: "Misty's Water Cards",
44
- sellerEmail: "misty@letitrip.in",
45
- };
46
- const SURGE = {
47
- sellerId: "user-lt-surge-electric-surge",
48
- storeId: "surges-electric-emporium",
49
- sellerName: "Surge's Electric Emporium",
50
- sellerEmail: "surge@letitrip.in",
51
- };
52
- const BLAINE = {
53
- sellerId: "user-blaine-fire-gym-blaine",
54
- storeId: "blaines-fire-shoppe",
55
- sellerName: "Blaine's Fire Shoppe",
56
- sellerEmail: "blaine@letitrip.in",
57
- };
58
- // Helper — pokemontcg.io Base Set card image
59
- const cardImg = (num) => `https://images.pokemontcg.io/base1/${num}_hires.png`;
60
- export const pokemonProductsSeedData = [
61
- // ════════════════════════════════════════════════════════════
62
- // HOLO RARE SINGLES (cards 1–16)
63
- // ════════════════════════════════════════════════════════════
64
- // #4 — Charizard (the crown jewel)
65
- {
66
- id: "product-charizard-base1-4-holo-rare-fire-blaine-1",
67
- title: "Charizard — Base Set #4 Holo Rare (Near Mint)",
68
- description: "The most iconic card in Pokémon history. First-edition Base Set Charizard in Near Mint condition. " +
69
- "Lightly played centering, no scratches on holo surface. Comes in a hard sleeve and top-loader.",
70
- slug: "product-charizard-base1-4-holo-rare",
71
- category: "category-holo-rare-rarity",
72
- subcategory: "Fire",
73
- brand: "Wizards of the Coast",
74
- price: 89999,
75
- currency: _CURRENCY,
76
- stockQuantity: 1,
77
- availableQuantity: 1,
78
- mainImage: cardImg(4),
79
- images: [cardImg(4)],
80
- status: "published",
81
- ...BLAINE,
82
- featured: true,
83
- tags: ["charizard", "holo-rare", "base-set", "fire", "1st-edition"],
84
- specifications: [
85
- { name: "Set", value: "Base Set" },
86
- { name: "Card Number", value: "4/102" },
87
- { name: "Rarity", value: "Holo Rare" },
88
- { name: "Condition", value: "Near Mint" },
89
- { name: "Language", value: "English" },
90
- ],
91
- features: [
92
- "Original print run",
93
- "Shadowless border",
94
- "Hard sleeve included",
95
- ],
96
- shippingInfo: "Shipped in bubble mailer with rigid top-loader.",
97
- returnPolicy: "3-day returns. Card must be in same condition.",
98
- condition: "new",
99
- insurance: true,
100
- insuranceCost: 2999,
101
- shippingPaidBy: "buyer",
102
- isAuction: false,
103
- isPromoted: true,
104
- promotionEndDate: daysAhead(30),
105
- avgRating: 5.0,
106
- reviewCount: 3,
107
- createdAt: daysAgo(60),
108
- updatedAt: daysAgo(2),
109
- },
110
- // #2 — Blastoise
111
- {
112
- id: "product-blastoise-base1-2-holo-rare-water-misty-1",
113
- title: "Blastoise — Base Set #2 Holo Rare (Near Mint)",
114
- description: "Blastoise Holo Rare from the original Pokémon Base Set. Near Mint, light play centering. " +
115
- "A must-have Water-type collectible.",
116
- slug: "product-blastoise-base1-2-holo-rare",
117
- category: "category-holo-rare-rarity",
118
- subcategory: "Water",
119
- brand: "Wizards of the Coast",
120
- price: 34999,
121
- currency: _CURRENCY,
122
- stockQuantity: 2,
123
- availableQuantity: 2,
124
- mainImage: cardImg(2),
125
- images: [cardImg(2)],
126
- status: "published",
127
- ...MISTY,
128
- featured: true,
129
- tags: ["blastoise", "holo-rare", "base-set", "water"],
130
- specifications: [
131
- { name: "Set", value: "Base Set" },
132
- { name: "Card Number", value: "2/102" },
133
- { name: "Rarity", value: "Holo Rare" },
134
- { name: "Condition", value: "Near Mint" },
135
- { name: "Language", value: "English" },
136
- ],
137
- features: ["Classic holo shimmer", "Ships in top-loader"],
138
- shippingInfo: "Shipped with tracking in rigid top-loader.",
139
- returnPolicy: "7-day returns.",
140
- condition: "new",
141
- insurance: true,
142
- insuranceCost: 999,
143
- shippingPaidBy: "seller",
144
- isAuction: false,
145
- isPromoted: true,
146
- promotionEndDate: daysAhead(14),
147
- avgRating: 4.8,
148
- reviewCount: 5,
149
- createdAt: daysAgo(55),
150
- updatedAt: daysAgo(3),
151
- },
152
- // #15 — Venusaur
153
- {
154
- id: "product-venusaur-base1-15-holo-rare-grass-blaine-1",
155
- title: "Venusaur — Base Set #15 Holo Rare (Lightly Played)",
156
- description: "Venusaur Holo Rare from Base Set. Lightly Played — minor corner wear, holo surface pristine.",
157
- slug: "product-venusaur-base1-15-holo-rare",
158
- category: "category-holo-rare-rarity",
159
- subcategory: "Grass",
160
- brand: "Wizards of the Coast",
161
- price: 14999,
162
- currency: _CURRENCY,
163
- stockQuantity: 1,
164
- availableQuantity: 1,
165
- mainImage: cardImg(15),
166
- images: [cardImg(15)],
167
- status: "published",
168
- ...BLAINE,
169
- featured: false,
170
- tags: ["venusaur", "holo-rare", "base-set", "grass"],
171
- specifications: [
172
- { name: "Set", value: "Base Set" },
173
- { name: "Card Number", value: "15/102" },
174
- { name: "Rarity", value: "Holo Rare" },
175
- { name: "Condition", value: "Lightly Played" },
176
- { name: "Language", value: "English" },
177
- ],
178
- features: ["Full holo artwork", "Ships in sleeve + top-loader"],
179
- shippingInfo: "Tracked shipment.",
180
- returnPolicy: "No returns on Lightly Played.",
181
- condition: "used",
182
- insurance: false,
183
- shippingPaidBy: "buyer",
184
- isAuction: false,
185
- isPromoted: false,
186
- avgRating: 4.5,
187
- reviewCount: 2,
188
- createdAt: daysAgo(40),
189
- updatedAt: daysAgo(7),
190
- },
191
- // #10 — Mewtwo
192
- {
193
- id: "product-mewtwo-base1-10-holo-rare-psychic-surge-1",
194
- title: "Mewtwo — Base Set #10 Holo Rare (Near Mint)",
195
- description: "The Genetic Pokémon. Mewtwo Holo Rare from the original Base Set in Near Mint condition.",
196
- slug: "product-mewtwo-base1-10-holo-rare",
197
- category: "category-holo-rare-rarity",
198
- subcategory: "Psychic",
199
- brand: "Wizards of the Coast",
200
- price: 19999,
201
- currency: _CURRENCY,
202
- stockQuantity: 3,
203
- availableQuantity: 3,
204
- mainImage: cardImg(10),
205
- images: [cardImg(10)],
206
- status: "published",
207
- ...SURGE,
208
- featured: true,
209
- tags: ["mewtwo", "holo-rare", "base-set", "psychic"],
210
- specifications: [
211
- { name: "Set", value: "Base Set" },
212
- { name: "Card Number", value: "10/102" },
213
- { name: "Rarity", value: "Holo Rare" },
214
- { name: "Condition", value: "Near Mint" },
215
- { name: "Language", value: "English" },
216
- ],
217
- features: ["Near Mint condition", "Individually sleeved"],
218
- shippingInfo: "Flat-rate shipping with tracking.",
219
- returnPolicy: "7-day returns.",
220
- condition: "new",
221
- insurance: false,
222
- shippingPaidBy: "seller",
223
- isAuction: false,
224
- isPromoted: true,
225
- promotionEndDate: daysAhead(7),
226
- avgRating: 4.9,
227
- reviewCount: 7,
228
- createdAt: daysAgo(50),
229
- updatedAt: daysAgo(1),
230
- },
231
- // #16 — Zapdos
232
- {
233
- id: "product-zapdos-base1-16-holo-rare-electric-surge-1",
234
- title: "Zapdos — Base Set #16 Holo Rare (Near Mint)",
235
- description: "Zapdos Holo Rare from Base Set. One of the three legendary birds — this one is pure Electric.",
236
- slug: "product-zapdos-base1-16-holo-rare",
237
- category: "category-holo-rare-rarity",
238
- subcategory: "Electric",
239
- brand: "Wizards of the Coast",
240
- price: 12999,
241
- currency: _CURRENCY,
242
- stockQuantity: 2,
243
- availableQuantity: 2,
244
- mainImage: cardImg(16),
245
- images: [cardImg(16)],
246
- status: "published",
247
- ...SURGE,
248
- featured: false,
249
- tags: ["zapdos", "holo-rare", "base-set", "electric", "legendary"],
250
- specifications: [
251
- { name: "Set", value: "Base Set" },
252
- { name: "Card Number", value: "16/102" },
253
- { name: "Rarity", value: "Holo Rare" },
254
- { name: "Condition", value: "Near Mint" },
255
- { name: "Language", value: "English" },
256
- ],
257
- features: ["Thunderbolt 100 damage artwork", "Top-loader shipped"],
258
- shippingInfo: "Tracked shipping.",
259
- returnPolicy: "7-day returns.",
260
- condition: "new",
261
- insurance: false,
262
- shippingPaidBy: "seller",
263
- isAuction: false,
264
- isPromoted: false,
265
- avgRating: 4.7,
266
- reviewCount: 4,
267
- createdAt: daysAgo(45),
268
- updatedAt: daysAgo(4),
269
- },
270
- // #3 — Chansey
271
- {
272
- id: "product-chansey-base1-3-holo-rare-colorless-misty-1",
273
- title: "Chansey — Base Set #3 Holo Rare (Near Mint)",
274
- description: "Chansey with 120 HP — the tankiest Base Set card. Holo Rare, Near Mint.",
275
- slug: "product-chansey-base1-3-holo-rare",
276
- category: "category-holo-rare-rarity",
277
- subcategory: "Colorless",
278
- brand: "Wizards of the Coast",
279
- price: 7999,
280
- currency: _CURRENCY,
281
- stockQuantity: 3,
282
- availableQuantity: 3,
283
- mainImage: cardImg(3),
284
- images: [cardImg(3)],
285
- status: "published",
286
- ...MISTY,
287
- featured: false,
288
- tags: ["chansey", "holo-rare", "base-set", "colorless"],
289
- specifications: [
290
- { name: "Set", value: "Base Set" },
291
- { name: "Card Number", value: "3/102" },
292
- { name: "Rarity", value: "Holo Rare" },
293
- { name: "Condition", value: "Near Mint" },
294
- { name: "Language", value: "English" },
295
- ],
296
- features: ["Highest HP in Base Set", "Ships in top-loader"],
297
- shippingInfo: "Tracked shipment.",
298
- returnPolicy: "7-day returns.",
299
- condition: "new",
300
- insurance: false,
301
- shippingPaidBy: "seller",
302
- isAuction: false,
303
- isPromoted: false,
304
- avgRating: 4.6,
305
- reviewCount: 2,
306
- createdAt: daysAgo(35),
307
- updatedAt: daysAgo(8),
308
- },
309
- // #6 — Gyarados
310
- {
311
- id: "product-gyarados-base1-6-holo-rare-water-misty-1",
312
- title: "Gyarados — Base Set #6 Holo Rare (Near Mint)",
313
- description: "The fearsome sea serpent. Gyarados Holo Rare from Base Set, Near Mint.",
314
- slug: "product-gyarados-base1-6-holo-rare",
315
- category: "category-holo-rare-rarity",
316
- subcategory: "Water",
317
- brand: "Wizards of the Coast",
318
- price: 9999,
319
- currency: _CURRENCY,
320
- stockQuantity: 2,
321
- availableQuantity: 2,
322
- mainImage: cardImg(6),
323
- images: [cardImg(6)],
324
- status: "published",
325
- ...MISTY,
326
- featured: false,
327
- tags: ["gyarados", "holo-rare", "base-set", "water"],
328
- specifications: [
329
- { name: "Set", value: "Base Set" },
330
- { name: "Card Number", value: "6/102" },
331
- { name: "Rarity", value: "Holo Rare" },
332
- { name: "Condition", value: "Near Mint" },
333
- { name: "Language", value: "English" },
334
- ],
335
- features: ["Dragon-type art on Water card", "Top-loader shipped"],
336
- shippingInfo: "Ships tracked.",
337
- returnPolicy: "7-day returns.",
338
- condition: "new",
339
- insurance: false,
340
- shippingPaidBy: "seller",
341
- isAuction: false,
342
- isPromoted: false,
343
- avgRating: 4.7,
344
- reviewCount: 3,
345
- createdAt: daysAgo(30),
346
- updatedAt: daysAgo(6),
347
- },
348
- // #9 — Magneton
349
- {
350
- id: "product-magneton-base1-9-holo-rare-electric-surge-1",
351
- title: "Magneton — Base Set #9 Holo Rare (Lightly Played)",
352
- description: "Magneton Holo Rare, Lightly Played. Light whitening on corners, holo face clean.",
353
- slug: "product-magneton-base1-9-holo-rare",
354
- category: "category-holo-rare-rarity",
355
- subcategory: "Electric",
356
- brand: "Wizards of the Coast",
357
- price: 4499,
358
- currency: _CURRENCY,
359
- stockQuantity: 4,
360
- availableQuantity: 4,
361
- mainImage: cardImg(9),
362
- images: [cardImg(9)],
363
- status: "published",
364
- ...SURGE,
365
- featured: false,
366
- tags: ["magneton", "holo-rare", "base-set", "electric"],
367
- specifications: [
368
- { name: "Set", value: "Base Set" },
369
- { name: "Card Number", value: "9/102" },
370
- { name: "Rarity", value: "Holo Rare" },
371
- { name: "Condition", value: "Lightly Played" },
372
- { name: "Language", value: "English" },
373
- ],
374
- features: ["Holo pattern visible", "Penny sleeved"],
375
- shippingInfo: "Bubble mailer with tracking.",
376
- returnPolicy: "No returns LP cards.",
377
- condition: "used",
378
- insurance: false,
379
- shippingPaidBy: "buyer",
380
- isAuction: false,
381
- isPromoted: false,
382
- avgRating: 4.4,
383
- reviewCount: 1,
384
- createdAt: daysAgo(28),
385
- updatedAt: daysAgo(9),
386
- },
387
- // ════════════════════════════════════════════════════════════
388
- // NON-HOLO RARE SINGLES
389
- // ════════════════════════════════════════════════════════════
390
- // #17 — Beedrill
391
- {
392
- id: "product-beedrill-base1-17-non-holo-rare-grass-blaine-1",
393
- title: "Beedrill — Base Set #17 Non-Holo Rare (Near Mint)",
394
- description: "Beedrill Non-Holo Rare. A Grass-type attacker classic from the original Base Set.",
395
- slug: "product-beedrill-base1-17-non-holo-rare",
396
- category: "category-non-holo-rare-rarity",
397
- subcategory: "Grass",
398
- brand: "Wizards of the Coast",
399
- price: 1299,
400
- currency: _CURRENCY,
401
- stockQuantity: 8,
402
- availableQuantity: 8,
403
- mainImage: cardImg(17),
404
- images: [cardImg(17)],
405
- status: "published",
406
- ...BLAINE,
407
- featured: false,
408
- tags: ["beedrill", "non-holo-rare", "base-set", "grass"],
409
- specifications: [
410
- { name: "Set", value: "Base Set" },
411
- { name: "Card Number", value: "17/102" },
412
- { name: "Rarity", value: "Non-Holo Rare" },
413
- { name: "Condition", value: "Near Mint" },
414
- { name: "Language", value: "English" },
415
- ],
416
- features: ["Ships in penny sleeve"],
417
- shippingInfo: "PWE or tracked bubble mailer.",
418
- returnPolicy: "7-day returns.",
419
- condition: "new",
420
- insurance: false,
421
- shippingPaidBy: "buyer",
422
- isAuction: false,
423
- isPromoted: false,
424
- avgRating: 4.3,
425
- reviewCount: 1,
426
- createdAt: daysAgo(20),
427
- updatedAt: daysAgo(10),
428
- },
429
- // #19 — Dugtrio
430
- {
431
- id: "product-dugtrio-base1-19-non-holo-rare-fighting-misty-1",
432
- title: "Dugtrio — Base Set #19 Non-Holo Rare (Near Mint)",
433
- description: "Dugtrio Non-Holo Rare from Base Set. Subsonic move artwork is iconic.",
434
- slug: "product-dugtrio-base1-19-non-holo-rare",
435
- category: "category-non-holo-rare-rarity",
436
- subcategory: "Fighting",
437
- brand: "Wizards of the Coast",
438
- price: 1199,
439
- currency: _CURRENCY,
440
- stockQuantity: 6,
441
- availableQuantity: 6,
442
- mainImage: cardImg(19),
443
- images: [cardImg(19)],
444
- status: "published",
445
- ...MISTY,
446
- featured: false,
447
- tags: ["dugtrio", "non-holo-rare", "base-set", "fighting"],
448
- specifications: [
449
- { name: "Set", value: "Base Set" },
450
- { name: "Card Number", value: "19/102" },
451
- { name: "Rarity", value: "Non-Holo Rare" },
452
- { name: "Condition", value: "Near Mint" },
453
- { name: "Language", value: "English" },
454
- ],
455
- features: ["Clean copy"],
456
- shippingInfo: "Tracked shipping.",
457
- returnPolicy: "7-day returns.",
458
- condition: "new",
459
- insurance: false,
460
- shippingPaidBy: "seller",
461
- isAuction: false,
462
- isPromoted: false,
463
- avgRating: 4.2,
464
- reviewCount: 1,
465
- createdAt: daysAgo(18),
466
- updatedAt: daysAgo(8),
467
- },
468
- // #24 — Haunter
469
- {
470
- id: "product-haunter-base1-24-non-holo-rare-psychic-surge-1",
471
- title: "Haunter — Base Set #24 Non-Holo Rare (Near Mint)",
472
- description: "Haunter Non-Holo Rare. A beloved Psychic-type card with the classic Lick attack.",
473
- slug: "product-haunter-base1-24-non-holo-rare",
474
- category: "category-non-holo-rare-rarity",
475
- subcategory: "Psychic",
476
- brand: "Wizards of the Coast",
477
- price: 1499,
478
- currency: _CURRENCY,
479
- stockQuantity: 5,
480
- availableQuantity: 5,
481
- mainImage: cardImg(24),
482
- images: [cardImg(24)],
483
- status: "published",
484
- ...SURGE,
485
- featured: false,
486
- tags: ["haunter", "non-holo-rare", "base-set", "psychic"],
487
- specifications: [
488
- { name: "Set", value: "Base Set" },
489
- { name: "Card Number", value: "24/102" },
490
- { name: "Rarity", value: "Non-Holo Rare" },
491
- { name: "Condition", value: "Near Mint" },
492
- { name: "Language", value: "English" },
493
- ],
494
- features: ["Classic tongue-out artwork", "Penny sleeved"],
495
- shippingInfo: "Tracked bubble mailer.",
496
- returnPolicy: "7-day returns.",
497
- condition: "new",
498
- insurance: false,
499
- shippingPaidBy: "seller",
500
- isAuction: false,
501
- isPromoted: false,
502
- avgRating: 4.5,
503
- reviewCount: 2,
504
- createdAt: daysAgo(22),
505
- updatedAt: daysAgo(7),
506
- },
507
- // ════════════════════════════════════════════════════════════
508
- // UNCOMMON SINGLES
509
- // ════════════════════════════════════════════════════════════
510
- // #35 — Clefairy
511
- {
512
- id: "product-clefairy-base1-35-uncommon-colorless-misty-1",
513
- title: "Clefairy — Base Set #35 Uncommon (Near Mint)",
514
- description: "Clefairy Uncommon from Base Set. Uses Metronome — a nostalgic fan favourite.",
515
- slug: "product-clefairy-base1-35-uncommon",
516
- category: "category-uncommon-rarity",
517
- subcategory: "Colorless",
518
- brand: "Wizards of the Coast",
519
- price: 799,
520
- currency: _CURRENCY,
521
- stockQuantity: 12,
522
- availableQuantity: 12,
523
- mainImage: cardImg(35),
524
- images: [cardImg(35)],
525
- status: "published",
526
- ...MISTY,
527
- featured: false,
528
- tags: ["clefairy", "uncommon", "base-set", "colorless"],
529
- specifications: [
530
- { name: "Set", value: "Base Set" },
531
- { name: "Card Number", value: "35/102" },
532
- { name: "Rarity", value: "Uncommon" },
533
- { name: "Condition", value: "Near Mint" },
534
- { name: "Language", value: "English" },
535
- ],
536
- features: ["Penny sleeved"],
537
- shippingInfo: "PWE with tracking.",
538
- returnPolicy: "7-day returns.",
539
- condition: "new",
540
- insurance: false,
541
- shippingPaidBy: "seller",
542
- isAuction: false,
543
- isPromoted: false,
544
- avgRating: 4.4,
545
- reviewCount: 2,
546
- createdAt: daysAgo(15),
547
- updatedAt: daysAgo(5),
548
- },
549
- // #40 — Growlithe
550
- {
551
- id: "product-growlithe-base1-40-uncommon-fire-blaine-1",
552
- title: "Growlithe — Base Set #40 Uncommon (Near Mint)",
553
- description: "Growlithe Uncommon from Base Set. A loyal Fire-type favourite.",
554
- slug: "product-growlithe-base1-40-uncommon",
555
- category: "category-uncommon-rarity",
556
- subcategory: "Fire",
557
- brand: "Wizards of the Coast",
558
- price: 699,
559
- currency: _CURRENCY,
560
- stockQuantity: 15,
561
- availableQuantity: 15,
562
- mainImage: cardImg(40),
563
- images: [cardImg(40)],
564
- status: "published",
565
- ...BLAINE,
566
- featured: false,
567
- tags: ["growlithe", "uncommon", "base-set", "fire"],
568
- specifications: [
569
- { name: "Set", value: "Base Set" },
570
- { name: "Card Number", value: "40/102" },
571
- { name: "Rarity", value: "Uncommon" },
572
- { name: "Condition", value: "Near Mint" },
573
- { name: "Language", value: "English" },
574
- ],
575
- features: ["Cheap filler for Fire decks"],
576
- shippingInfo: "PWE shipping.",
577
- returnPolicy: "7-day returns.",
578
- condition: "new",
579
- insurance: false,
580
- shippingPaidBy: "buyer",
581
- isAuction: false,
582
- isPromoted: false,
583
- avgRating: 4.2,
584
- reviewCount: 1,
585
- createdAt: daysAgo(12),
586
- updatedAt: daysAgo(4),
587
- },
588
- // #52 — Pikachu
589
- {
590
- id: "product-pikachu-base1-58-common-electric-surge-1",
591
- title: "Pikachu — Base Set #58 Common (Near Mint)",
592
- description: "The Pokémon mascot himself. Base Set Pikachu, Common, Near Mint — yellow cheeks version.",
593
- slug: "product-pikachu-base1-58-common",
594
- category: "category-common-rarity",
595
- subcategory: "Electric",
596
- brand: "Wizards of the Coast",
597
- price: 1999,
598
- currency: _CURRENCY,
599
- stockQuantity: 20,
600
- availableQuantity: 20,
601
- mainImage: cardImg(58),
602
- images: [cardImg(58)],
603
- status: "published",
604
- ...SURGE,
605
- featured: true,
606
- tags: ["pikachu", "common", "base-set", "electric", "yellow-cheeks"],
607
- specifications: [
608
- { name: "Set", value: "Base Set" },
609
- { name: "Card Number", value: "58/102" },
610
- { name: "Rarity", value: "Common" },
611
- { name: "Condition", value: "Near Mint" },
612
- { name: "Language", value: "English" },
613
- { name: "Variant", value: "Yellow Cheeks" },
614
- ],
615
- features: ["Mascot card", "Yellow cheeks variant", "Penny sleeved"],
616
- shippingInfo: "Tracked bubble mailer.",
617
- returnPolicy: "7-day returns.",
618
- condition: "new",
619
- insurance: false,
620
- shippingPaidBy: "seller",
621
- isAuction: false,
622
- isPromoted: true,
623
- promotionEndDate: daysAhead(21),
624
- avgRating: 4.9,
625
- reviewCount: 10,
626
- createdAt: daysAgo(50),
627
- updatedAt: daysAgo(1),
628
- },
629
- // ════════════════════════════════════════════════════════════
630
- // TRAINER CARDS
631
- // ════════════════════════════════════════════════════════════
632
- // #88 — Professor Oak
633
- {
634
- id: "product-professor-oak-base1-88-uncommon-trainer-surge-1",
635
- title: "Professor Oak — Base Set #88 Trainer (Near Mint)",
636
- description: "Draw 7 cards. Professor Oak is one of the most powerful Trainer cards ever printed. Near Mint copy.",
637
- slug: "product-professor-oak-base1-88-trainer",
638
- category: "category-trainer-type-card-type",
639
- subcategory: "Trainer",
640
- brand: "Wizards of the Coast",
641
- price: 2499,
642
- currency: _CURRENCY,
643
- stockQuantity: 10,
644
- availableQuantity: 10,
645
- mainImage: cardImg(88),
646
- images: [cardImg(88)],
647
- status: "published",
648
- ...SURGE,
649
- featured: true,
650
- tags: ["professor-oak", "trainer", "base-set", "draw"],
651
- specifications: [
652
- { name: "Set", value: "Base Set" },
653
- { name: "Card Number", value: "88/102" },
654
- { name: "Rarity", value: "Uncommon" },
655
- { name: "Card Type", value: "Trainer" },
656
- { name: "Condition", value: "Near Mint" },
657
- { name: "Language", value: "English" },
658
- ],
659
- features: ["Staple competitive card", "Draw 7"],
660
- shippingInfo: "Tracked shipping.",
661
- returnPolicy: "7-day returns.",
662
- condition: "new",
663
- insurance: false,
664
- shippingPaidBy: "seller",
665
- isAuction: false,
666
- isPromoted: false,
667
- avgRating: 4.8,
668
- reviewCount: 6,
669
- createdAt: daysAgo(40),
670
- updatedAt: daysAgo(5),
671
- },
672
- // #91 — Energy Retrieval
673
- {
674
- id: "product-energy-retrieval-base1-91-common-trainer-misty-1",
675
- title: "Energy Retrieval — Base Set #91 Trainer (Near Mint)",
676
- description: "Return 2 Basic Energy from discard to hand. A staple in Water decks. Near Mint.",
677
- slug: "product-energy-retrieval-base1-91-trainer",
678
- category: "category-trainer-type-card-type",
679
- subcategory: "Trainer",
680
- brand: "Wizards of the Coast",
681
- price: 599,
682
- currency: _CURRENCY,
683
- stockQuantity: 25,
684
- availableQuantity: 25,
685
- mainImage: cardImg(91),
686
- images: [cardImg(91)],
687
- status: "published",
688
- ...MISTY,
689
- featured: false,
690
- tags: ["energy-retrieval", "trainer", "base-set"],
691
- specifications: [
692
- { name: "Set", value: "Base Set" },
693
- { name: "Card Number", value: "91/102" },
694
- { name: "Rarity", value: "Common" },
695
- { name: "Card Type", value: "Trainer" },
696
- { name: "Condition", value: "Near Mint" },
697
- { name: "Language", value: "English" },
698
- ],
699
- features: ["Deck staple", "Shipped in PWE"],
700
- shippingInfo: "PWE or tracked.",
701
- returnPolicy: "7-day returns.",
702
- condition: "new",
703
- insurance: false,
704
- shippingPaidBy: "buyer",
705
- isAuction: false,
706
- isPromoted: false,
707
- avgRating: 4.3,
708
- reviewCount: 2,
709
- createdAt: daysAgo(22),
710
- updatedAt: daysAgo(6),
711
- },
712
- // ════════════════════════════════════════════════════════════
713
- // ENERGY CARDS
714
- // ════════════════════════════════════════════════════════════
715
- // #99 — Water Energy (x10 lot)
716
- {
717
- id: "product-water-energy-base1-99-common-energy-misty-lot",
718
- title: "Water Energy — Base Set #99 x10 Lot (Near Mint)",
719
- description: "10× Water Energy from the original Base Set. Near Mint. Perfect for deck building.",
720
- slug: "product-water-energy-base1-99-x10-lot",
721
- category: "category-energy-type-card-type",
722
- subcategory: "Water",
723
- brand: "Wizards of the Coast",
724
- price: 999,
725
- currency: _CURRENCY,
726
- stockQuantity: 50,
727
- availableQuantity: 50,
728
- mainImage: cardImg(99),
729
- images: [cardImg(99)],
730
- status: "published",
731
- ...MISTY,
732
- featured: false,
733
- tags: ["water-energy", "energy", "base-set", "lot"],
734
- specifications: [
735
- { name: "Set", value: "Base Set" },
736
- { name: "Card Number", value: "99/102" },
737
- { name: "Rarity", value: "Common" },
738
- { name: "Card Type", value: "Basic Energy" },
739
- { name: "Condition", value: "Near Mint" },
740
- { name: "Quantity", value: "10 cards" },
741
- { name: "Language", value: "English" },
742
- ],
743
- features: ["10 cards per order", "Ideal for Blastoise/Lapras decks"],
744
- shippingInfo: "Shipped in team bag in bubble mailer.",
745
- returnPolicy: "No returns on bulk lots.",
746
- condition: "new",
747
- insurance: false,
748
- shippingPaidBy: "seller",
749
- isAuction: false,
750
- isPromoted: false,
751
- avgRating: 4.6,
752
- reviewCount: 4,
753
- createdAt: daysAgo(18),
754
- updatedAt: daysAgo(3),
755
- },
756
- // #100 — Fire Energy (x10 lot)
757
- {
758
- id: "product-fire-energy-base1-100-common-energy-blaine-lot",
759
- title: "Fire Energy — Base Set #100 x10 Lot (Near Mint)",
760
- description: "10× Fire Energy from Base Set. Perfect for Charizard and Arcanine decks.",
761
- slug: "product-fire-energy-base1-100-x10-lot",
762
- category: "category-energy-type-card-type",
763
- subcategory: "Fire",
764
- brand: "Wizards of the Coast",
765
- price: 999,
766
- currency: _CURRENCY,
767
- stockQuantity: 50,
768
- availableQuantity: 50,
769
- mainImage: cardImg(100),
770
- images: [cardImg(100)],
771
- status: "published",
772
- ...BLAINE,
773
- featured: false,
774
- tags: ["fire-energy", "energy", "base-set", "lot"],
775
- specifications: [
776
- { name: "Set", value: "Base Set" },
777
- { name: "Card Number", value: "100/102" },
778
- { name: "Rarity", value: "Common" },
779
- { name: "Card Type", value: "Basic Energy" },
780
- { name: "Condition", value: "Near Mint" },
781
- { name: "Quantity", value: "10 cards" },
782
- { name: "Language", value: "English" },
783
- ],
784
- features: ["10 cards per order", "Ideal for Charizard/Arcanine decks"],
785
- shippingInfo: "Bubble mailer.",
786
- returnPolicy: "No returns on bulk lots.",
787
- condition: "new",
788
- insurance: false,
789
- shippingPaidBy: "buyer",
790
- isAuction: false,
791
- isPromoted: false,
792
- avgRating: 4.5,
793
- reviewCount: 3,
794
- createdAt: daysAgo(14),
795
- updatedAt: daysAgo(2),
796
- },
797
- // #101 — Lightning Energy (x10 lot)
798
- {
799
- id: "product-lightning-energy-base1-101-common-energy-surge-lot",
800
- title: "Lightning Energy — Base Set #101 x10 Lot (Near Mint)",
801
- description: "10× Lightning (Electric) Energy from Base Set. Fuel for Pikachu, Raichu, and Zapdos.",
802
- slug: "product-lightning-energy-base1-101-x10-lot",
803
- category: "category-energy-type-card-type",
804
- subcategory: "Electric",
805
- brand: "Wizards of the Coast",
806
- price: 999,
807
- currency: _CURRENCY,
808
- stockQuantity: 50,
809
- availableQuantity: 50,
810
- mainImage: cardImg(101),
811
- images: [cardImg(101)],
812
- status: "published",
813
- ...SURGE,
814
- featured: false,
815
- tags: ["lightning-energy", "energy", "base-set", "lot", "electric"],
816
- specifications: [
817
- { name: "Set", value: "Base Set" },
818
- { name: "Card Number", value: "101/102" },
819
- { name: "Rarity", value: "Common" },
820
- { name: "Card Type", value: "Basic Energy" },
821
- { name: "Condition", value: "Near Mint" },
822
- { name: "Quantity", value: "10 cards" },
823
- { name: "Language", value: "English" },
824
- ],
825
- features: ["10 cards per order"],
826
- shippingInfo: "Bubble mailer.",
827
- returnPolicy: "No returns on bulk lots.",
828
- condition: "new",
829
- insurance: false,
830
- shippingPaidBy: "seller",
831
- isAuction: false,
832
- isPromoted: false,
833
- avgRating: 4.5,
834
- reviewCount: 2,
835
- createdAt: daysAgo(12),
836
- updatedAt: daysAgo(1),
837
- },
838
- // ════════════════════════════════════════════════════════════
839
- // SEALED PRODUCTS
840
- // ════════════════════════════════════════════════════════════
841
- // Booster Pack
842
- {
843
- id: "product-base-set-booster-pack-sealed-blaine-1",
844
- title: "Pokémon Base Set Booster Pack (Sealed, Random Art)",
845
- description: "Sealed Pokémon TCG Base Set booster pack with 11 cards and one guaranteed rare. " +
846
- "Perfect for vintage collectors searching for authentic Base Set pack openings and long-term sealed investments.",
847
- slug: "product-pokemon-tcg-base-set-sealed-booster-pack-random-art",
848
- category: "category-sealed-products",
849
- subcategory: "Booster Pack",
850
- brand: "Wizards of the Coast",
851
- price: 12999,
852
- currency: _CURRENCY,
853
- stockQuantity: 10,
854
- availableQuantity: 10,
855
- mainImage: cardImg(4),
856
- images: [cardImg(4), cardImg(2), cardImg(15)],
857
- status: "published",
858
- ...BLAINE,
859
- featured: true,
860
- tags: ["sealed", "booster-pack", "base-set"],
861
- specifications: [
862
- { name: "Set", value: "Base Set" },
863
- { name: "Product Type", value: "Booster Pack" },
864
- { name: "Cards per Pack", value: "11" },
865
- { name: "Condition", value: "Sealed" },
866
- ],
867
- features: ["Factory sealed", "11 cards per pack", "1 guaranteed rare"],
868
- shippingInfo: "Bubble wrapped and shipped in rigid box.",
869
- returnPolicy: "No returns on opened sealed product.",
870
- condition: "new",
871
- insurance: true,
872
- insuranceCost: 499,
873
- shippingPaidBy: "buyer",
874
- isAuction: false,
875
- isPromoted: true,
876
- promotionEndDate: daysAhead(14),
877
- avgRating: 4.8,
878
- reviewCount: 8,
879
- createdAt: daysAgo(30),
880
- updatedAt: daysAgo(2),
881
- },
882
- // Theme Deck — Zap! (Raichu / Electric)
883
- {
884
- id: "product-zap-theme-deck-sealed-surge-1",
885
- title: "Pokémon Base Set 'Zap!' Theme Deck (Sealed)",
886
- description: "Factory-sealed Pokémon Base Set Zap! Theme Deck featuring Electric-type strategy cards led by Raichu. " +
887
- "Ideal for collectors who want original sealed WOTC era deck products.",
888
- slug: "product-pokemon-base-set-zap-theme-deck-sealed-raichu",
889
- category: "category-sealed-products",
890
- subcategory: "Theme Deck",
891
- brand: "Wizards of the Coast",
892
- price: 18999,
893
- currency: _CURRENCY,
894
- stockQuantity: 3,
895
- availableQuantity: 3,
896
- mainImage: cardImg(14),
897
- images: [cardImg(14), cardImg(16), cardImg(58)],
898
- status: "published",
899
- ...SURGE,
900
- featured: false,
901
- tags: ["sealed", "theme-deck", "base-set", "electric", "raichu"],
902
- specifications: [
903
- { name: "Set", value: "Base Set" },
904
- { name: "Product Type", value: "Theme Deck" },
905
- { name: "Deck Name", value: "Zap!" },
906
- { name: "Condition", value: "Sealed" },
907
- ],
908
- features: ["Factory sealed", "30-card pre-built deck", "Electric strategy"],
909
- shippingInfo: "Rigid box mailer with bubble wrap.",
910
- returnPolicy: "No returns on opened sealed product.",
911
- condition: "new",
912
- insurance: true,
913
- insuranceCost: 699,
914
- shippingPaidBy: "buyer",
915
- isAuction: false,
916
- isPromoted: false,
917
- avgRating: 4.7,
918
- reviewCount: 3,
919
- createdAt: daysAgo(25),
920
- updatedAt: daysAgo(4),
921
- },
922
- // ════════════════════════════════════════════════════════════
923
- // ACCESSORIES
924
- // ════════════════════════════════════════════════════════════
925
- {
926
- id: "product-pokemon-card-sleeves-standard-blaine-1",
927
- title: "Pokémon-Art Card Sleeves (100-pack, Pikachu)",
928
- description: "100 standard-size card sleeves featuring Pikachu artwork. Compatible with all Base Set singles.",
929
- slug: "product-pokemon-pikachu-card-sleeves-100pack",
930
- category: "category-accessories",
931
- subcategory: "Card Sleeves",
932
- brand: "Ultra PRO",
933
- price: 699,
934
- currency: _CURRENCY,
935
- stockQuantity: 100,
936
- availableQuantity: 100,
937
- mainImage: "https://images.pokemontcg.io/base1/58_hires.png",
938
- images: ["https://images.pokemontcg.io/base1/58_hires.png"],
939
- status: "published",
940
- ...BLAINE,
941
- featured: false,
942
- tags: ["sleeves", "accessories", "pikachu", "ultra-pro"],
943
- specifications: [
944
- { name: "Brand", value: "Ultra PRO" },
945
- { name: "Quantity", value: "100 sleeves" },
946
- { name: "Size", value: "Standard (66 × 91 mm)" },
947
- { name: "Art", value: "Pikachu" },
948
- ],
949
- features: ["Acid-free", "Archival quality", "Fits Base Set cards"],
950
- shippingInfo: "Small parcel shipping.",
951
- returnPolicy: "7-day returns.",
952
- condition: "new",
953
- insurance: false,
954
- shippingPaidBy: "seller",
955
- isAuction: false,
956
- isPromoted: false,
957
- avgRating: 4.6,
958
- reviewCount: 5,
959
- createdAt: daysAgo(10),
960
- updatedAt: daysAgo(2),
961
- },
962
- {
963
- id: "product-pokemon-9-pocket-binder-misty-1",
964
- title: "Pokémon 9-Pocket Binder (360 cards, Charizard Cover)",
965
- description: "9-pocket binder for storing and displaying up to 360 Pokémon cards. Charizard cover art.",
966
- slug: "product-pokemon-charizard-9-pocket-binder",
967
- category: "category-accessories",
968
- subcategory: "Binder",
969
- brand: "Ultra PRO",
970
- price: 1499,
971
- currency: _CURRENCY,
972
- stockQuantity: 30,
973
- availableQuantity: 30,
974
- mainImage: "https://images.pokemontcg.io/base1/4_hires.png",
975
- images: ["https://images.pokemontcg.io/base1/4_hires.png"],
976
- status: "published",
977
- ...MISTY,
978
- featured: false,
979
- tags: ["binder", "accessories", "charizard", "storage"],
980
- specifications: [
981
- { name: "Brand", value: "Ultra PRO" },
982
- { name: "Capacity", value: "360 cards" },
983
- { name: "Pockets per Page", value: "9" },
984
- { name: "Art", value: "Charizard" },
985
- ],
986
- features: ["360-card capacity", "Side-loading pockets", "Lay-flat design"],
987
- shippingInfo: "Shipped in box.",
988
- returnPolicy: "7-day returns.",
989
- condition: "new",
990
- insurance: false,
991
- shippingPaidBy: "seller",
992
- isAuction: false,
993
- isPromoted: false,
994
- avgRating: 4.7,
995
- reviewCount: 7,
996
- createdAt: daysAgo(8),
997
- updatedAt: daysAgo(1),
998
- },
999
- // ════════════════════════════════════════════════════════════
1000
- // AUCTION LISTINGS
1001
- // ════════════════════════════════════════════════════════════
1002
- // Auction: 1st Edition Charizard
1003
- {
1004
- id: "auction-charizard-1st-ed-base1-4-fire-blaine-auction-1",
1005
- title: "1st Edition Charizard — Base Set #4 Holo (AUCTION, PSA 7)",
1006
- description: "Ultra-rare 1st Edition Charizard from Base Set, PSA-graded 7 (Near Mint). This is your chance to own the holy grail.",
1007
- slug: "auction-charizard-1st-ed-psa7",
1008
- category: "category-holo-rare-rarity",
1009
- subcategory: "Fire",
1010
- brand: "Wizards of the Coast",
1011
- price: 0,
1012
- currency: _CURRENCY,
1013
- stockQuantity: 1,
1014
- availableQuantity: 1,
1015
- mainImage: cardImg(4),
1016
- images: [cardImg(4)],
1017
- status: "published",
1018
- ...BLAINE,
1019
- featured: true,
1020
- tags: [
1021
- "charizard",
1022
- "1st-edition",
1023
- "holo-rare",
1024
- "base-set",
1025
- "fire",
1026
- "auction",
1027
- "psa",
1028
- ],
1029
- specifications: [
1030
- { name: "Set", value: "Base Set" },
1031
- { name: "Card Number", value: "4/102" },
1032
- { name: "Rarity", value: "Holo Rare" },
1033
- { name: "Edition", value: "1st Edition" },
1034
- { name: "Grade", value: "PSA 7" },
1035
- { name: "Language", value: "English" },
1036
- ],
1037
- features: [
1038
- "PSA graded slab",
1039
- "1st Edition stamp",
1040
- "The most iconic card in TCG history",
1041
- ],
1042
- shippingInfo: "Insured courier with tracking.",
1043
- returnPolicy: "No returns on auction wins.",
1044
- condition: "new",
1045
- insurance: true,
1046
- insuranceCost: 4999,
1047
- shippingPaidBy: "buyer",
1048
- isAuction: true,
1049
- auctionEndDate: daysAhead(7),
1050
- startingBid: 299999,
1051
- currentBid: 349999,
1052
- bidCount: 14,
1053
- reservePrice: 350000,
1054
- buyNowPrice: 699999,
1055
- minBidIncrement: 5000,
1056
- autoExtendable: true,
1057
- auctionExtensionMinutes: 5,
1058
- auctionOriginalEndDate: daysAhead(7),
1059
- auctionShippingPaidBy: "winner",
1060
- isPromoted: true,
1061
- promotionEndDate: daysAhead(7),
1062
- avgRating: 0,
1063
- reviewCount: 0,
1064
- createdAt: daysAgo(3),
1065
- updatedAt: daysAgo(0),
1066
- },
1067
- // Auction: Mewtwo PSA 9
1068
- {
1069
- id: "auction-mewtwo-base1-10-psychic-surge-auction-1",
1070
- title: "Mewtwo — Base Set #10 Holo (AUCTION, PSA 9)",
1071
- description: "PSA-graded 9 (Mint) Mewtwo Holo from Base Set. A landmark Psychic-type collector piece.",
1072
- slug: "auction-mewtwo-psa9",
1073
- category: "category-holo-rare-rarity",
1074
- subcategory: "Psychic",
1075
- brand: "Wizards of the Coast",
1076
- price: 0,
1077
- currency: _CURRENCY,
1078
- stockQuantity: 1,
1079
- availableQuantity: 1,
1080
- mainImage: cardImg(10),
1081
- images: [cardImg(10)],
1082
- status: "published",
1083
- ...SURGE,
1084
- featured: true,
1085
- tags: ["mewtwo", "holo-rare", "base-set", "psychic", "auction", "psa"],
1086
- specifications: [
1087
- { name: "Set", value: "Base Set" },
1088
- { name: "Card Number", value: "10/102" },
1089
- { name: "Rarity", value: "Holo Rare" },
1090
- { name: "Grade", value: "PSA 9" },
1091
- { name: "Language", value: "English" },
1092
- ],
1093
- features: ["PSA 9 Mint slab", "Psychic powerhouse"],
1094
- shippingInfo: "Insured courier.",
1095
- returnPolicy: "No returns on auction wins.",
1096
- condition: "new",
1097
- insurance: true,
1098
- insuranceCost: 2999,
1099
- shippingPaidBy: "buyer",
1100
- isAuction: true,
1101
- auctionEndDate: daysAhead(5),
1102
- startingBid: 49999,
1103
- currentBid: 54999,
1104
- bidCount: 6,
1105
- reservePrice: 55000,
1106
- buyNowPrice: 99999,
1107
- minBidIncrement: 2500,
1108
- autoExtendable: true,
1109
- auctionExtensionMinutes: 5,
1110
- auctionOriginalEndDate: daysAhead(5),
1111
- auctionShippingPaidBy: "winner",
1112
- isPromoted: true,
1113
- promotionEndDate: daysAhead(5),
1114
- avgRating: 0,
1115
- reviewCount: 0,
1116
- createdAt: daysAgo(2),
1117
- updatedAt: daysAgo(0),
1118
- },
1119
- // ════════════════════════════════════════════════════════════
1120
- // MORE HOLO RARES
1121
- // ════════════════════════════════════════════════════════════
1122
- // #14 — Raichu
1123
- {
1124
- id: "product-raichu-base1-14-holo-rare-electric-surge-1",
1125
- title: "Raichu — Base Set #14 Holo Rare (Near Mint)",
1126
- description: "Raichu Holo Rare from Base Set. Powerful Electric-type evolution of Pikachu with 80 HP and the Thunder Punch attack.",
1127
- slug: "product-raichu-base1-14-holo-rare",
1128
- category: "category-holo-rare-rarity",
1129
- subcategory: "Electric",
1130
- brand: "Wizards of the Coast",
1131
- price: 8999,
1132
- currency: _CURRENCY,
1133
- stockQuantity: 2,
1134
- availableQuantity: 2,
1135
- mainImage: cardImg(14),
1136
- images: [cardImg(14)],
1137
- status: "published",
1138
- ...SURGE,
1139
- featured: false,
1140
- tags: ["raichu", "holo-rare", "base-set", "electric"],
1141
- specifications: [
1142
- { name: "Set", value: "Base Set" },
1143
- { name: "Card Number", value: "14/102" },
1144
- { name: "Rarity", value: "Holo Rare" },
1145
- { name: "Condition", value: "Near Mint" },
1146
- { name: "Language", value: "English" },
1147
- ],
1148
- features: ["Pikachu evolution", "Thunder Punch 30 attack", "Top-loader shipped"],
1149
- shippingInfo: "Tracked bubble mailer.",
1150
- returnPolicy: "7-day returns.",
1151
- condition: "new",
1152
- insurance: false,
1153
- shippingPaidBy: "seller",
1154
- isAuction: false,
1155
- isPromoted: false,
1156
- avgRating: 4.7,
1157
- reviewCount: 3,
1158
- createdAt: daysAgo(38),
1159
- updatedAt: daysAgo(5),
1160
- },
1161
- // #12 — Ninetales
1162
- {
1163
- id: "product-ninetales-base1-12-holo-rare-fire-blaine-1",
1164
- title: "Ninetales — Base Set #12 Holo Rare (Near Mint)",
1165
- description: "Ninetales Holo Rare, one of the most visually stunning cards in Base Set. Beautiful fox artwork on a shimmering holo background.",
1166
- slug: "product-ninetales-base1-12-holo-rare",
1167
- category: "category-holo-rare-rarity",
1168
- subcategory: "Fire",
1169
- brand: "Wizards of the Coast",
1170
- price: 11999,
1171
- currency: _CURRENCY,
1172
- stockQuantity: 1,
1173
- availableQuantity: 1,
1174
- mainImage: cardImg(12),
1175
- images: [cardImg(12)],
1176
- status: "published",
1177
- ...BLAINE,
1178
- featured: false,
1179
- tags: ["ninetales", "holo-rare", "base-set", "fire"],
1180
- specifications: [
1181
- { name: "Set", value: "Base Set" },
1182
- { name: "Card Number", value: "12/102" },
1183
- { name: "Rarity", value: "Holo Rare" },
1184
- { name: "Condition", value: "Near Mint" },
1185
- { name: "Language", value: "English" },
1186
- ],
1187
- features: ["Iconic fox artwork", "Fire Blast 80 damage", "Top-loader shipped"],
1188
- shippingInfo: "Bubble mailer tracked.",
1189
- returnPolicy: "7-day returns.",
1190
- condition: "new",
1191
- insurance: false,
1192
- shippingPaidBy: "seller",
1193
- isAuction: false,
1194
- isPromoted: false,
1195
- avgRating: 4.8,
1196
- reviewCount: 4,
1197
- createdAt: daysAgo(32),
1198
- updatedAt: daysAgo(4),
1199
- },
1200
- // #7 — Hitmonchan
1201
- {
1202
- id: "product-hitmonchan-base1-7-holo-rare-fighting-misty-1",
1203
- title: "Hitmonchan — Base Set #7 Holo Rare (Near Mint)",
1204
- description: "Hitmonchan Holo Rare — a staple Fighting-type card widely used in competitive Base Set format decks.",
1205
- slug: "product-hitmonchan-base1-7-holo-rare",
1206
- category: "category-holo-rare-rarity",
1207
- subcategory: "Fighting",
1208
- brand: "Wizards of the Coast",
1209
- price: 9499,
1210
- currency: _CURRENCY,
1211
- stockQuantity: 3,
1212
- availableQuantity: 3,
1213
- mainImage: cardImg(7),
1214
- images: [cardImg(7)],
1215
- status: "published",
1216
- ...MISTY,
1217
- featured: false,
1218
- tags: ["hitmonchan", "holo-rare", "base-set", "fighting"],
1219
- specifications: [
1220
- { name: "Set", value: "Base Set" },
1221
- { name: "Card Number", value: "7/102" },
1222
- { name: "Rarity", value: "Holo Rare" },
1223
- { name: "Condition", value: "Near Mint" },
1224
- { name: "Language", value: "English" },
1225
- ],
1226
- features: ["Competitive staple", "Jab 20 / Special Punch 40"],
1227
- shippingInfo: "Tracked shipment.",
1228
- returnPolicy: "7-day returns.",
1229
- condition: "new",
1230
- insurance: false,
1231
- shippingPaidBy: "seller",
1232
- isAuction: false,
1233
- isPromoted: false,
1234
- avgRating: 4.6,
1235
- reviewCount: 5,
1236
- createdAt: daysAgo(42),
1237
- updatedAt: daysAgo(6),
1238
- },
1239
- // #1 — Alakazam
1240
- {
1241
- id: "product-alakazam-base1-1-holo-rare-psychic-surge-1",
1242
- title: "Alakazam — Base Set #1 Holo Rare (Near Mint)",
1243
- description: "Alakazam Holo Rare — card #1 in Base Set. Features the iconic Damage Swap Pokémon Power.",
1244
- slug: "product-alakazam-base1-1-holo-rare",
1245
- category: "category-holo-rare-rarity",
1246
- subcategory: "Psychic",
1247
- brand: "Wizards of the Coast",
1248
- price: 13999,
1249
- currency: _CURRENCY,
1250
- stockQuantity: 2,
1251
- availableQuantity: 2,
1252
- mainImage: cardImg(1),
1253
- images: [cardImg(1)],
1254
- status: "published",
1255
- ...SURGE,
1256
- featured: false,
1257
- tags: ["alakazam", "holo-rare", "base-set", "psychic"],
1258
- specifications: [
1259
- { name: "Set", value: "Base Set" },
1260
- { name: "Card Number", value: "1/102" },
1261
- { name: "Rarity", value: "Holo Rare" },
1262
- { name: "Condition", value: "Near Mint" },
1263
- { name: "Language", value: "English" },
1264
- ],
1265
- features: ["Damage Swap Pokémon Power", "Card #1 in set", "Top-loader shipped"],
1266
- shippingInfo: "Tracked shipping.",
1267
- returnPolicy: "7-day returns.",
1268
- condition: "new",
1269
- insurance: false,
1270
- shippingPaidBy: "seller",
1271
- isAuction: false,
1272
- isPromoted: false,
1273
- avgRating: 4.7,
1274
- reviewCount: 3,
1275
- createdAt: daysAgo(48),
1276
- updatedAt: daysAgo(3),
1277
- },
1278
- // ════════════════════════════════════════════════════════════
1279
- // MORE NON-HOLO RARES
1280
- // ════════════════════════════════════════════════════════════
1281
- // #23 — Arcanine
1282
- {
1283
- id: "product-arcanine-base1-23-non-holo-rare-fire-blaine-1",
1284
- title: "Arcanine — Base Set #23 Non-Holo Rare (Near Mint)",
1285
- description: "Arcanine Non-Holo Rare from Base Set — the Legendary Pokémon. Flame Wheel 50 damage, near mint condition.",
1286
- slug: "product-arcanine-base1-23-non-holo-rare",
1287
- category: "category-non-holo-rare-rarity",
1288
- subcategory: "Fire",
1289
- brand: "Wizards of the Coast",
1290
- price: 1799,
1291
- currency: _CURRENCY,
1292
- stockQuantity: 7,
1293
- availableQuantity: 7,
1294
- mainImage: cardImg(23),
1295
- images: [cardImg(23)],
1296
- status: "published",
1297
- ...BLAINE,
1298
- featured: false,
1299
- tags: ["arcanine", "non-holo-rare", "base-set", "fire"],
1300
- specifications: [
1301
- { name: "Set", value: "Base Set" },
1302
- { name: "Card Number", value: "23/102" },
1303
- { name: "Rarity", value: "Non-Holo Rare" },
1304
- { name: "Condition", value: "Near Mint" },
1305
- { name: "Language", value: "English" },
1306
- ],
1307
- features: ["Flare card", "Penny sleeved"],
1308
- shippingInfo: "PWE with tracking.",
1309
- returnPolicy: "7-day returns.",
1310
- condition: "new",
1311
- insurance: false,
1312
- shippingPaidBy: "buyer",
1313
- isAuction: false,
1314
- isPromoted: false,
1315
- avgRating: 4.4,
1316
- reviewCount: 2,
1317
- createdAt: daysAgo(16),
1318
- updatedAt: daysAgo(7),
1319
- },
1320
- // #20 — Electabuzz
1321
- {
1322
- id: "product-electabuzz-base1-20-non-holo-rare-electric-surge-1",
1323
- title: "Electabuzz — Base Set #20 Non-Holo Rare (Near Mint)",
1324
- description: "Electabuzz Non-Holo Rare — another competitive Base Set staple with Thunderpunch.",
1325
- slug: "product-electabuzz-base1-20-non-holo-rare",
1326
- category: "category-non-holo-rare-rarity",
1327
- subcategory: "Electric",
1328
- brand: "Wizards of the Coast",
1329
- price: 1599,
1330
- currency: _CURRENCY,
1331
- stockQuantity: 8,
1332
- availableQuantity: 8,
1333
- mainImage: cardImg(20),
1334
- images: [cardImg(20)],
1335
- status: "published",
1336
- ...SURGE,
1337
- featured: false,
1338
- tags: ["electabuzz", "non-holo-rare", "base-set", "electric"],
1339
- specifications: [
1340
- { name: "Set", value: "Base Set" },
1341
- { name: "Card Number", value: "20/102" },
1342
- { name: "Rarity", value: "Non-Holo Rare" },
1343
- { name: "Condition", value: "Near Mint" },
1344
- { name: "Language", value: "English" },
1345
- ],
1346
- features: ["Competitive pick for Electric decks", "Penny sleeved"],
1347
- shippingInfo: "PWE or tracked.",
1348
- returnPolicy: "7-day returns.",
1349
- condition: "new",
1350
- insurance: false,
1351
- shippingPaidBy: "buyer",
1352
- isAuction: false,
1353
- isPromoted: false,
1354
- avgRating: 4.3,
1355
- reviewCount: 2,
1356
- createdAt: daysAgo(14),
1357
- updatedAt: daysAgo(8),
1358
- },
1359
- // #30 — Magmar
1360
- {
1361
- id: "product-magmar-base1-30-non-holo-rare-fire-blaine-1",
1362
- title: "Magmar — Base Set #30 Non-Holo Rare (Lightly Played)",
1363
- description: "Magmar Non-Holo Rare, Lightly Played. Slight edge whitening but face clean.",
1364
- slug: "product-magmar-base1-30-non-holo-rare-lp",
1365
- category: "category-non-holo-rare-rarity",
1366
- subcategory: "Fire",
1367
- brand: "Wizards of the Coast",
1368
- price: 999,
1369
- currency: _CURRENCY,
1370
- stockQuantity: 5,
1371
- availableQuantity: 5,
1372
- mainImage: cardImg(30),
1373
- images: [cardImg(30)],
1374
- status: "published",
1375
- ...BLAINE,
1376
- featured: false,
1377
- tags: ["magmar", "non-holo-rare", "base-set", "fire"],
1378
- specifications: [
1379
- { name: "Set", value: "Base Set" },
1380
- { name: "Card Number", value: "30/102" },
1381
- { name: "Rarity", value: "Non-Holo Rare" },
1382
- { name: "Condition", value: "Lightly Played" },
1383
- { name: "Language", value: "English" },
1384
- ],
1385
- features: ["Budget Fire staple"],
1386
- shippingInfo: "PWE.",
1387
- returnPolicy: "No returns on LP.",
1388
- condition: "used",
1389
- insurance: false,
1390
- shippingPaidBy: "buyer",
1391
- isAuction: false,
1392
- isPromoted: false,
1393
- avgRating: 4.1,
1394
- reviewCount: 1,
1395
- createdAt: daysAgo(10),
1396
- updatedAt: daysAgo(9),
1397
- },
1398
- // ════════════════════════════════════════════════════════════
1399
- // MORE UNCOMMONS
1400
- // ════════════════════════════════════════════════════════════
1401
- // #37 — Dewgong
1402
- {
1403
- id: "product-dewgong-base1-37-uncommon-water-misty-1",
1404
- title: "Dewgong — Base Set #37 Uncommon (Near Mint)",
1405
- description: "Dewgong Uncommon from Base Set — an underrated Water-type with Aurora Beam.",
1406
- slug: "product-dewgong-base1-37-uncommon",
1407
- category: "category-uncommon-rarity",
1408
- subcategory: "Water",
1409
- brand: "Wizards of the Coast",
1410
- price: 649,
1411
- currency: _CURRENCY,
1412
- stockQuantity: 12,
1413
- availableQuantity: 12,
1414
- mainImage: cardImg(37),
1415
- images: [cardImg(37)],
1416
- status: "published",
1417
- ...MISTY,
1418
- featured: false,
1419
- tags: ["dewgong", "uncommon", "base-set", "water"],
1420
- specifications: [
1421
- { name: "Set", value: "Base Set" },
1422
- { name: "Card Number", value: "37/102" },
1423
- { name: "Rarity", value: "Uncommon" },
1424
- { name: "Condition", value: "Near Mint" },
1425
- { name: "Language", value: "English" },
1426
- ],
1427
- features: ["Water-type filler", "Penny sleeved"],
1428
- shippingInfo: "PWE with tracking.",
1429
- returnPolicy: "7-day returns.",
1430
- condition: "new",
1431
- insurance: false,
1432
- shippingPaidBy: "seller",
1433
- isAuction: false,
1434
- isPromoted: false,
1435
- avgRating: 4.2,
1436
- reviewCount: 1,
1437
- createdAt: daysAgo(8),
1438
- updatedAt: daysAgo(3),
1439
- },
1440
- // #42 — Kadabra
1441
- {
1442
- id: "product-kadabra-base1-32-uncommon-psychic-surge-1",
1443
- title: "Kadabra — Base Set #32 Uncommon (Near Mint)",
1444
- description: "Kadabra Uncommon from Base Set. A notorious card rarely reprinted. Near Mint copy.",
1445
- slug: "product-kadabra-base1-32-uncommon",
1446
- category: "category-uncommon-rarity",
1447
- subcategory: "Psychic",
1448
- brand: "Wizards of the Coast",
1449
- price: 2499,
1450
- currency: _CURRENCY,
1451
- stockQuantity: 4,
1452
- availableQuantity: 4,
1453
- mainImage: cardImg(32),
1454
- images: [cardImg(32)],
1455
- status: "published",
1456
- ...SURGE,
1457
- featured: false,
1458
- tags: ["kadabra", "uncommon", "base-set", "psychic", "rare-reprint"],
1459
- specifications: [
1460
- { name: "Set", value: "Base Set" },
1461
- { name: "Card Number", value: "32/102" },
1462
- { name: "Rarity", value: "Uncommon" },
1463
- { name: "Condition", value: "Near Mint" },
1464
- { name: "Language", value: "English" },
1465
- ],
1466
- features: ["Rarely reprinted card", "Penny sleeved"],
1467
- shippingInfo: "Tracked bubble mailer.",
1468
- returnPolicy: "7-day returns.",
1469
- condition: "new",
1470
- insurance: false,
1471
- shippingPaidBy: "seller",
1472
- isAuction: false,
1473
- isPromoted: false,
1474
- avgRating: 4.6,
1475
- reviewCount: 3,
1476
- createdAt: daysAgo(20),
1477
- updatedAt: daysAgo(6),
1478
- },
1479
- // ════════════════════════════════════════════════════════════
1480
- // MORE TRAINERS
1481
- // ════════════════════════════════════════════════════════════
1482
- // #93 — Potion
1483
- {
1484
- id: "product-potion-base1-93-common-trainer-misty-1",
1485
- title: "Potion — Base Set #93 Trainer Common (Near Mint)",
1486
- description: "Remove 2 damage counters from one of your Pokémon. Potion is the most classic Trainer card ever printed.",
1487
- slug: "product-potion-base1-93-trainer-common",
1488
- category: "category-trainer-type-card-type",
1489
- subcategory: "Trainer",
1490
- brand: "Wizards of the Coast",
1491
- price: 399,
1492
- currency: _CURRENCY,
1493
- stockQuantity: 40,
1494
- availableQuantity: 40,
1495
- mainImage: cardImg(93),
1496
- images: [cardImg(93)],
1497
- status: "published",
1498
- ...MISTY,
1499
- featured: false,
1500
- tags: ["potion", "trainer", "base-set", "common"],
1501
- specifications: [
1502
- { name: "Set", value: "Base Set" },
1503
- { name: "Card Number", value: "93/102" },
1504
- { name: "Rarity", value: "Common" },
1505
- { name: "Card Type", value: "Trainer" },
1506
- { name: "Condition", value: "Near Mint" },
1507
- { name: "Language", value: "English" },
1508
- ],
1509
- features: ["Iconic item card", "Bulk lot available on request"],
1510
- shippingInfo: "PWE shipping.",
1511
- returnPolicy: "7-day returns.",
1512
- condition: "new",
1513
- insurance: false,
1514
- shippingPaidBy: "buyer",
1515
- isAuction: false,
1516
- isPromoted: false,
1517
- avgRating: 4.3,
1518
- reviewCount: 3,
1519
- createdAt: daysAgo(25),
1520
- updatedAt: daysAgo(5),
1521
- },
1522
- // #89 — Bill
1523
- {
1524
- id: "product-bill-base1-89-common-trainer-surge-1",
1525
- title: "Bill — Base Set #89 Trainer Common (Near Mint)",
1526
- description: "Draw 2 cards. Bill is a beloved draw supporter from Base Set — simple, effective, nostalgic.",
1527
- slug: "product-bill-base1-89-trainer-common",
1528
- category: "category-trainer-type-card-type",
1529
- subcategory: "Trainer",
1530
- brand: "Wizards of the Coast",
1531
- price: 499,
1532
- currency: _CURRENCY,
1533
- stockQuantity: 35,
1534
- availableQuantity: 35,
1535
- mainImage: cardImg(89),
1536
- images: [cardImg(89)],
1537
- status: "published",
1538
- ...SURGE,
1539
- featured: false,
1540
- tags: ["bill", "trainer", "base-set", "draw"],
1541
- specifications: [
1542
- { name: "Set", value: "Base Set" },
1543
- { name: "Card Number", value: "89/102" },
1544
- { name: "Rarity", value: "Common" },
1545
- { name: "Card Type", value: "Trainer" },
1546
- { name: "Condition", value: "Near Mint" },
1547
- { name: "Language", value: "English" },
1548
- ],
1549
- features: ["Draw 2 cards", "Penny sleeved"],
1550
- shippingInfo: "PWE or tracked.",
1551
- returnPolicy: "7-day returns.",
1552
- condition: "new",
1553
- insurance: false,
1554
- shippingPaidBy: "seller",
1555
- isAuction: false,
1556
- isPromoted: false,
1557
- avgRating: 4.4,
1558
- reviewCount: 2,
1559
- createdAt: daysAgo(23),
1560
- updatedAt: daysAgo(4),
1561
- },
1562
- // ════════════════════════════════════════════════════════════
1563
- // GRADED SLAB (non-auction)
1564
- // ════════════════════════════════════════════════════════════
1565
- // Blastoise PSA 8
1566
- {
1567
- id: "product-blastoise-psa8-base1-2-water-misty-graded",
1568
- title: "Blastoise — Base Set #2 Holo Rare (PSA 8 NM-MT)",
1569
- description: "PSA graded 8 (NM-MT) Blastoise Holo Rare from Base Set. A certified investment-grade slab for serious collectors. No auction — buy it now.",
1570
- slug: "product-blastoise-base1-2-psa8-holo-graded",
1571
- category: "category-holo-rare-rarity",
1572
- subcategory: "Water",
1573
- brand: "Wizards of the Coast",
1574
- price: 79999,
1575
- currency: _CURRENCY,
1576
- stockQuantity: 1,
1577
- availableQuantity: 1,
1578
- mainImage: cardImg(2),
1579
- images: [cardImg(2)],
1580
- status: "published",
1581
- ...MISTY,
1582
- featured: true,
1583
- tags: ["blastoise", "holo-rare", "base-set", "psa", "graded", "water"],
1584
- specifications: [
1585
- { name: "Set", value: "Base Set" },
1586
- { name: "Card Number", value: "2/102" },
1587
- { name: "Rarity", value: "Holo Rare" },
1588
- { name: "Grade", value: "PSA 8 NM-MT" },
1589
- { name: "Language", value: "English" },
1590
- ],
1591
- features: ["PSA slab", "Investment-grade copy"],
1592
- shippingInfo: "Insured tracked courier.",
1593
- returnPolicy: "No returns on graded slabs.",
1594
- condition: "new",
1595
- insurance: true,
1596
- insuranceCost: 2999,
1597
- shippingPaidBy: "buyer",
1598
- isAuction: false,
1599
- isPromoted: true,
1600
- promotionEndDate: daysAhead(21),
1601
- avgRating: 5.0,
1602
- reviewCount: 1,
1603
- createdAt: daysAgo(15),
1604
- updatedAt: daysAgo(1),
1605
- },
1606
- // Booster Box (sealed)
1607
- {
1608
- id: "product-base-set-booster-box-sealed-blaine-2",
1609
- title: "Pokémon Base Set Booster Box (36 Packs, Sealed)",
1610
- description: "Factory-sealed Base Set booster box containing 36 packs (11 cards each). The ultimate sealed vintage investment. Ships double-boxed.",
1611
- slug: "product-pokemon-tcg-base-set-sealed-booster-box-36-packs",
1612
- category: "category-sealed-products",
1613
- subcategory: "Booster Box",
1614
- brand: "Wizards of the Coast",
1615
- price: 449999,
1616
- currency: _CURRENCY,
1617
- stockQuantity: 1,
1618
- availableQuantity: 1,
1619
- mainImage: cardImg(4),
1620
- images: [cardImg(4), cardImg(2), cardImg(10)],
1621
- status: "published",
1622
- ...BLAINE,
1623
- featured: true,
1624
- tags: ["sealed", "booster-box", "base-set", "investment"],
1625
- specifications: [
1626
- { name: "Set", value: "Base Set" },
1627
- { name: "Product Type", value: "Booster Box" },
1628
- { name: "Packs", value: "36" },
1629
- { name: "Cards per Pack", value: "11" },
1630
- { name: "Condition", value: "Sealed" },
1631
- ],
1632
- features: ["Factory sealed", "36 packs", "Double-box shipped", "Insurance included"],
1633
- shippingInfo: "Double-boxed, insured, signature required.",
1634
- returnPolicy: "No returns on sealed products.",
1635
- condition: "new",
1636
- insurance: true,
1637
- insuranceCost: 14999,
1638
- shippingPaidBy: "buyer",
1639
- isAuction: false,
1640
- isPromoted: true,
1641
- promotionEndDate: daysAhead(60),
1642
- avgRating: 0,
1643
- reviewCount: 0,
1644
- createdAt: daysAgo(5),
1645
- updatedAt: daysAgo(1),
1646
- },
1647
- // ════════════════════════════════════════════════════════════
1648
- // PRE-ORDERS
1649
- // ════════════════════════════════════════════════════════════
1650
- {
1651
- id: "preorder-pokemon-tcg-151-booster-box-misty-1",
1652
- title: "Pokémon TCG: Scarlet & Violet — 151 Booster Box (Pre-Order)",
1653
- description: "Pre-order the upcoming Scarlet & Violet: 151 booster box reprint run. 36 packs featuring original 151 Pokémon with modern card quality. " +
1654
- "Estimated dispatch within 7 days of street date.",
1655
- slug: "preorder-pokemon-sv-151-booster-box",
1656
- category: "category-sealed-products",
1657
- subcategory: "Booster Box",
1658
- brand: "The Pokémon Company",
1659
- price: 14999,
1660
- currency: _CURRENCY,
1661
- stockQuantity: 50,
1662
- availableQuantity: 50,
1663
- mainImage: cardImg(58),
1664
- images: [cardImg(58), cardImg(4), cardImg(2)],
1665
- status: "published",
1666
- ...MISTY,
1667
- featured: true,
1668
- tags: ["pre-order", "sealed", "sv-151", "booster-box", "scarlet-violet"],
1669
- specifications: [
1670
- { name: "Set", value: "Scarlet & Violet: 151" },
1671
- { name: "Product Type", value: "Booster Box" },
1672
- { name: "Packs", value: "36" },
1673
- { name: "Condition", value: "Pre-Order / Sealed" },
1674
- { name: "Language", value: "English" },
1675
- ],
1676
- features: ["All 151 original Pokémon represented", "Modern card stock", "ETBs also available"],
1677
- shippingInfo: "Ships within 7 days of street date via tracked courier.",
1678
- returnPolicy: "No returns on pre-ordered sealed products once dispatched.",
1679
- condition: "new",
1680
- insurance: true,
1681
- insuranceCost: 499,
1682
- shippingPaidBy: "buyer",
1683
- isAuction: false,
1684
- isPreOrder: true,
1685
- preOrderProductionStatus: "upcoming",
1686
- preOrderDepositAmount: 2000,
1687
- preOrderDeliveryDate: daysAhead(60),
1688
- isPromoted: true,
1689
- promotionEndDate: daysAhead(45),
1690
- avgRating: 0,
1691
- reviewCount: 0,
1692
- createdAt: daysAgo(7),
1693
- updatedAt: daysAgo(1),
1694
- },
1695
- {
1696
- id: "preorder-pokemon-temporal-forces-elite-trainer-surge-1",
1697
- title: "Pokémon TCG: Temporal Forces Elite Trainer Box (Pre-Order)",
1698
- description: "Pre-order the Temporal Forces Elite Trainer Box featuring Walking Wake ex and Iron Leaves ex. " +
1699
- "Includes 9 booster packs, promo card, sleeves, dice, and accessories.",
1700
- slug: "preorder-pokemon-temporal-forces-etb",
1701
- category: "category-sealed-products",
1702
- subcategory: "Elite Trainer Box",
1703
- brand: "The Pokémon Company",
1704
- price: 5999,
1705
- currency: _CURRENCY,
1706
- stockQuantity: 30,
1707
- availableQuantity: 30,
1708
- mainImage: cardImg(10),
1709
- images: [cardImg(10)],
1710
- status: "published",
1711
- ...SURGE,
1712
- featured: false,
1713
- tags: ["pre-order", "sealed", "temporal-forces", "etb", "elite-trainer-box"],
1714
- specifications: [
1715
- { name: "Set", value: "Temporal Forces" },
1716
- { name: "Product Type", value: "Elite Trainer Box" },
1717
- { name: "Booster Packs", value: "9" },
1718
- { name: "Condition", value: "Pre-Order / Sealed" },
1719
- { name: "Language", value: "English" },
1720
- ],
1721
- features: ["9 booster packs", "Promo card", "65 card sleeves", "Dice and counters"],
1722
- shippingInfo: "Ships on street date via tracked courier.",
1723
- returnPolicy: "No returns on sealed products.",
1724
- condition: "new",
1725
- insurance: false,
1726
- shippingPaidBy: "seller",
1727
- isAuction: false,
1728
- isPreOrder: true,
1729
- preOrderProductionStatus: "upcoming",
1730
- preOrderDepositAmount: 1000,
1731
- preOrderDeliveryDate: daysAhead(45),
1732
- isPromoted: false,
1733
- avgRating: 0,
1734
- reviewCount: 0,
1735
- createdAt: daysAgo(5),
1736
- updatedAt: daysAgo(2),
1737
- },
1738
- {
1739
- id: "preorder-pokemon-surging-sparks-booster-bundle-blaine-1",
1740
- title: "Pokémon TCG: Surging Sparks Booster Bundle (Pre-Order)",
1741
- description: "Pre-order the Surging Sparks Booster Bundle (6 packs) — featuring Pikachu ex SIR and Raichu VMAX. " +
1742
- "Great entry-level sealed product for budget collectors.",
1743
- slug: "preorder-pokemon-surging-sparks-booster-bundle",
1744
- category: "category-sealed-products",
1745
- subcategory: "Booster Bundle",
1746
- brand: "The Pokémon Company",
1747
- price: 2499,
1748
- currency: _CURRENCY,
1749
- stockQuantity: 60,
1750
- availableQuantity: 60,
1751
- mainImage: cardImg(14),
1752
- images: [cardImg(14), cardImg(58)],
1753
- status: "published",
1754
- ...BLAINE,
1755
- featured: false,
1756
- tags: ["pre-order", "sealed", "surging-sparks", "booster-bundle"],
1757
- specifications: [
1758
- { name: "Set", value: "Surging Sparks" },
1759
- { name: "Product Type", value: "Booster Bundle" },
1760
- { name: "Booster Packs", value: "6" },
1761
- { name: "Condition", value: "Pre-Order / Sealed" },
1762
- { name: "Language", value: "English" },
1763
- ],
1764
- features: ["6 packs", "Budget-friendly", "Modern set"],
1765
- shippingInfo: "Ships on street date.",
1766
- returnPolicy: "No returns on sealed products.",
1767
- condition: "new",
1768
- insurance: false,
1769
- shippingPaidBy: "buyer",
1770
- isAuction: false,
1771
- isPreOrder: true,
1772
- preOrderProductionStatus: "upcoming",
1773
- preOrderDepositAmount: 500,
1774
- preOrderDeliveryDate: daysAhead(30),
1775
- isPromoted: false,
1776
- avgRating: 0,
1777
- reviewCount: 0,
1778
- createdAt: daysAgo(3),
1779
- updatedAt: daysAgo(1),
1780
- },
1781
- ].map((item) => {
1782
- const p = withRichTextDescription(item);
1783
- const isSimplePublished = !p.isAuction &&
1784
- !p.isPreOrder &&
1785
- p.status === "published" &&
1786
- (p.availableQuantity ?? p.stockQuantity ?? 1) > 0;
1787
- return {
1788
- ...p,
1789
- allowOffers: isSimplePublished ? true : (p.allowOffers ?? false),
1790
- };
1791
- });